js迴圈與判斷 day2
- 程式的三大結構(瞭解)
- 順序結構
- 選擇結構
- 迴圈結構
- 程式的分支結構 IF語句
大多數程式語言中最為常用的一個語句就是 if 語句。以下是 if 語句的語法:
if (條件) { 語句塊1 } else { 語句塊2 }
其中的條件可以是任意表達式;而且對這個表示式求值的結果不一定是布林值。
ECMAScript 會自動呼叫 Boolean() 轉換函式將這個表示式的結果轉換為一個布林值。如果對 條件求值的結果是 true,則執行語句1,如果對條件求值的結果是 false , 則執行語句2 。 而且這兩個語句既可以是一行程式碼,也可以是一個程式碼塊 (以一對花括號括起來的多行程式碼) 。
if語句的三種格式:
- if( 條件 ){ 語句1 }
- if ( 條件 ) { 語句1 } else { 語句2 }
3、if ( 條件 ) { 語句1 } else if ( 條件 ){ 語句2 }...else{ 語句 } (else可以省略)
- 程式的多分支結構 switch語句\break語句
switch 語句與 if 語句的關係最為密切,而且也是在其他語言中普遍使用的一種流程控制語句。
switch (值) {
case 值: 語句塊; break; 注意case向下的穿透力
......
default: 語句塊
}
switch 語句中的每一種情形(case)的含義是: 如果表示式等於這個值(value) ,則執行此case後面的語句 。而 break 關鍵字會導致程式碼執行流跳出 switch 語句。如果省略 break 關鍵字,就會導致執行完當前 case 後,繼續執行下一個 case。最後的 default 關鍵字則用於在表示式不匹配前面任何一種情形的時候,執行此程式碼(可以省略)。
- 迴圈的概念和意義
迴圈語句:就是程式路徑的一個迴路,可以讓一部分程式碼重複執行。
- while和do-while迴圈的使用
- while( 限制條件 ){ 重複執行的語句塊 }
while 語句屬於前測試迴圈語句,也就是說,在迴圈體內的程式碼被執行之前, 就會對限制條件 求值。因此,迴圈體內的程式碼有可能永遠不會被執行。
-
- do { 重複執行的語句塊 }while( 限制條件 );
do-while 語句是一種後測試迴圈語句,即只有在迴圈體中的程式碼執行之後,才會測試限制條件。
換句話說,在對條件表示式求值之前,迴圈體內的程式碼至少會被執行一次。
- for迴圈的使用
for 語句也是一種前測試迴圈語句,但它具有在執行迴圈之前初始化變數和定義迴圈後要執行的 程式碼的能力。
- 跳出迴圈
break 語句會立即退出整個迴圈,強制繼續執行迴圈後面的其它語句。
continue 語句代表立即退出迴圈, 但退出的是當前迴圈繼續執行下一次迴圈。
- 死迴圈的理解。
- 無法靠自身的控制終止的迴圈即死迴圈
- 瀏覽器的 Debug工具使用
- 瞭解迴圈的執行過程(斷點),以及除錯程式碼的基本能力
- 程式碼除錯的方式
- 強化練習
- 開發一款軟體,根據公式(身高-108)*2=體重,可以有10斤左右的浮動。來觀察測試者
體重是否合適(身高:cm)
- 案例:輸入分數,判定成績等級(if和switch兩種寫法)(5個等級0-100)
- 輸入月份,顯示當月的天數
- 列印100以內 7的倍數
- 求出1-1/2+1/3-1/4…..1/100的和
- 打印出1000-2000年中所有的閏年,並以每行四個數的形式輸出
- 利用星型字元(*)輸出如下圖形:三角形和梯形
- 列印100–200之間所有能被3和7整除的數
- 求100-999之間的水仙花數。
- 列印九九乘法表。
- 綜合應用
- 籃球從5米高的地方掉下來,每次彈起的高度是原來的30%,經過幾次彈起,籃球的高度是0.1米。
- 有一個棋盤,有64個方格,在第一個方格里面放1粒芝麻重量是0.00001kg,第二個裡面放2粒,第三個裡面放4粒,每一個格內都比前一小格加一倍,棋盤上放的所有芝麻的重量。
- 輸出100-200之間所有的素數。
- 求1+2!+3!+...+20!的值。
- 輸入一個日期,判斷這個日期是這一年的第幾天
/*alert('start');//window.alert 瀏覽器內部的實現,具有阻止後面程式碼執行的特性
document.write('<div>1</div>');
document.write('<div>2</div>');
document.write('<div>3</div>');
alert('end');*/
//1.順序結構:程式碼從上往下,從左往右,從內往外 執行的。
/*document.write('<div>1</div>');
document.write('<div>2</div>');
document.write('<div>3</div>');*/
//2.分支語句--選擇
//var num=prompt('請輸入一個數字:');
//判斷數字是奇數還是偶數。--選擇
//如果if 條件num%2==0 偶數
//否則else 奇數
//分支語句的基本結構
//{}:寫入一條或者多條語句。
/*if(條件?){滿足條件執行的語句塊}
else{ 不滿足條件執行的語句塊 }*/
/*if(num%2==0){
alert('你輸入的數字是:' + num);
alert('它是偶數');
}
else{
alert('你輸入的數字是:' + num);
alert('它是奇數');
}*/
//3.迴圈語句:反覆執行滿足條件程式碼。
//迴圈的基本控制結構
/*while(限制條件){
滿足限制條件反覆執行迴圈體(程式碼塊).
}*/
/*document.write('<ul>');
document.write('<li>1</li>');
document.write('<li>2</li>');
document.write('<li>3</li>');
document.write('<li>4</li>');
document.write('<li>5</li>');
document.write('<li>6</li>');
document.write('<li>7</li>');
document.write('<li>8</li>');
document.write('<li>9</li>');
document.write('<li>10</li>');
document.write('</ul>');*/
/*document.write('<ul>');
var num=1;
while(num<=10000){
document.write('<li>'+num+'</li>');
num++;
}
document.write('</ul>');*/
//if語句三種結構
//if語句的條件自動呼叫Boolean(),將條件的結果轉換成布林值。
//數字非0即真,字串非空即真 null undefined都是false
//核心:最大的可能留給if。滿足if 那麼else可以不執行,同時else可以省略。
//if巢狀比多條件效能要好一些。
//1.單分支--1種情況
//單分支的基本結構
//if(條件){滿足條件執行的語句塊}
/*if('餓了困了'){
alert('喝紅牛');
}*/
//如果輸入的是數字,輸出。
/*var num=prompt('請輸入一個數字:');
if(!isNaN(num)){//是數字。
alert(num);
}*/
//2.雙分支--兩種情況
//if(條件?){滿足條件執行的語句塊} else{ 不滿足條件執行的語句塊 }
/*var num=prompt('請輸入一個數字:');
if(!isNaN(num)){//是數字。
alert(num);
}
else{//不是數字
alert('輸入有問題');
}*/
//核心:最大的可能留給if。滿足if 那麼else可以不執行。
/*var num=prompt('請輸入一個數字:');
if(!isNaN(num)){//是數字。
alert(num);
}
else{//不是數字
fdklasfjdsalkfjladskf
}*/
//3.多分支--多種情況
//if(條件1){滿足條件1執行的語句塊} else if(條件2){滿足條件2執行的語句塊}....else{其它情況執行的語句塊}
//多條件else可以省略。
/*var num=prompt('請輸入一個數字:');//檢測當前的數字>0 <0 =0
if(num>0){
alert('正數');
}
else if(num<0){
alert('負數')
}
else if(num==0){
alert(0)
}
else{//可以省略
alert('輸入錯誤');
}*/
//1.if的巢狀使用
//輸入一個五位數,分別輸出各十百千萬位。
/*var num=prompt('請輸入一個五位數:');
//判斷是否是數字
if(!isNaN(num)){//是數字
//是數字,繼續判斷是否有五位。
if(num>=10000 && num<=99999){
var gw=num%10;
var sw=parseInt(num%100/10);
var bw=parseInt(num%1000/100);
var qw=parseInt(num%10000/1000);
var ww=parseInt(num/10000);
document.write('我輸入的數字是:'+num+'<br/>');
document.write('個位:'+gw+'<br/>');
document.write('十位:'+sw+'<br/>');
document.write('百位:'+bw+'<br/>');
document.write('千位:'+qw+'<br/>');
document.write('萬位:'+ww);
}else{
alert('你輸入的數字不符合規則');
}
}else{
alert('輸入的不是一個數字');
}*/
//2.多條件語句和if的巢狀
//案例:輸入分數,判定成績等級(5個)
var score=prompt('請輸入分數(0-100):');
if(!isNaN(score))
{
if(score>=0 && score<=100)
{//不允許這樣寫: 0<=score<=100
//通過多條件判斷等級。
if(score==100){
alert('天才');
}
else if(score<100 && score>=90){
alert('優秀');
}
else if(score<90 && score>=80){
alert('良好');
}
else if(score<80 && score>=70){
alert('一般');
}
else if(score<70 && score>=60){
alert('及格');
}
else{
alert('不及格');
}
}
else{
alert('你輸入的不是一個合法的分數');
}
}
else{
alert('你輸入的不是數字');
}
/*if(!isNaN(score) && score>=0 && score<=100){
}
else{
alert('你輸入的有問題');
}*/
//1.開發一款軟體,根據公式(身高-108)*2=體重,可以有10斤左右的浮動。來觀察測試者
//體重是否合適(身高:cm)
//思路:輸入身高和體重,返回體重是否符合(偏胖/標準/偏瘦)
//(身高-108)*2=體重+10
//(身高-108)*2=體重-10
var height=prompt('請輸入身高cm:');
var weight=prompt('請輸入體重:');
var maxweight=(height-108)*2+10;//標準裡面的最大值
var minweight=(height-108)*2-10;//標準裡面的最小值
//判斷條件
if(weight>maxweight){
alert('偏胖');
}
else if(weight<minweight){
alert('偏瘦');
}
else if(weight>=minweight && weight<=maxweight){
alert('標準');
}
else{
alert('輸入有誤');
}
//switch:適合多分支的語句
//基本結構
//value:具體值,switch的value和case後面的value進行恆等比較。
//如果switch的value和case後面的value完全恆等,執行case後面的語句塊。
//break:跳出分支語句,switch結束了。
//default:代表其他情況,相當於上面的每一個case都不符合,走default後面的語句塊。default可以省略。
/*switch(value){
case value: 語句塊; break;
case value: 語句塊; break;
case value: 語句塊; break;
case value: 語句塊; break;
case value: 語句塊; break;
case value: 語句塊; break;
default: 語句塊;
}*/
/*var num=prompt('請輸入一個數字0-6:');
switch(Number(num)){
case 0: alert('星期日'); break;
case 1: alert('星期一'); break;
case 2: alert('星期二'); break;
case 3: alert('星期三'); break;
case 4: alert('星期四'); break;
case 5: alert('星期五'); break;
case 6: alert('星期六'); break;
default: alert('輸入有誤!');
}*/
/*var num=prompt('請輸入一個數字0-6:');
switch(Number(num)){
case 0: alert('星期日'); break;
case 1: alert('星期一');
case 2: alert('星期二');
case 3: alert('星期三'); break;
case 4: alert('星期四'); break;
case 5: alert('星期五'); break;
case 6: alert('星期六'); break;
default: alert('輸入有誤!');
}*/
//case具有穿透力。因為沒有break
//案例:輸入分數,判定成績等級(switch)(5個等級0-100)
/*var score=prompt('請輸入一個分數:');
switch(true){
case score==100: alert('天才'); break;
case score<100 && score>=90: alert('優秀'); break;
case score<90 && score>=80: alert('良好'); break;
case score<80 && score>=70: alert('一般'); break;
case score<70 && score>=60: alert('及格'); break;
case score<60 && score>=0: alert('不及格'); break;
default:alert('輸入有誤!');
}*/
//利用switch後面的值和case後面表示式的值進行恆等的匹配。
//if和switch有哪些區別
//if適用於單分支,雙分支,多分支,switch 多分支
//switch匹配的是恆等關係。 if條件是布林值
//三目運算子:(?:)很多情況下取代if...else
//基本控制結構。
//條件表示式? 成立執行的程式碼 : 不成立執行的程式碼
//var num=prompt('請輸入一個數字:');
/*if(!isNaN(num)){//是數字。
alert(num);
}
else{//不是數字
alert('輸入有問題');
}*/
//!isNaN(num)?alert(num):alert('輸入有問題');
//3.輸入月份,顯示當月的天數
//大月31:1,3,5,7,8,10,12
//小月30:4,6,9,11
//平月:2 閏年:29 非閏年:28
//閏年:能被4整除同時不能被100整除或者能被400整除。
var year=prompt('請輸入一個四位的年份:');
var month=prompt('請輸入一個月份:');
switch(Number(month)){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: alert(31); break;
case 4:
case 6:
case 9:
case 11: alert(30); break;
case 2:
if(year%4==0&&year%100!=0||year%400==0){//閏年
alert(29);
}else{//非閏年
alert(28);
}
break;
&nbs