- 程序的三大結構(瞭解)
- 順序結構
- 選擇結構
- 循環結構
- 程序的分支結構 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;
default:alert('輸入有誤!');
}
<script type="text/javascript">
/*var str='<table border=1><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr></table>';
document.write(str);*/
//循環語句:就是程序路徑的一個迴路,可以讓一部分代碼重複執行。
/* var str='<ul>';
str+='<li>111111111</li><li>222222222</li>';
str+='</ul>';//字符串的拼接(疊加) str=str+'</ul>';
alert(str);
document.write(str);*/
//1.while循環。
//循環的基本控制結構
/*while(條件){
滿足條件反覆執行的循環體
}*/
var num=1;
var str='<ul>';
while(num<=100){
str+='<li>'+num+'</li>';
num++;
}
str+='</ul>';*///字符串的拼接(疊加) str=str+'</ul>';
//alert(num);//11
//alert(str);
//document.write(str);
</script>
<script type="text/javascript">
//死循環
/*while(true){
}
alert('hehe');*/
//while循環的嵌套:外層循環一次,內層循環結束。
var num=1;
while(num<=10){
document.write('我是外部循環輸出的內容'+num+'<br/>');
var num1=1;
while(num1<=10){
document.write(' 我是內部循環輸出的內容'+num1+'<br/>');
num1++;
}
num++;
}
</script>
<script type="text/javascript">
//sum=1+2+3+4+5+6+7+...100=5050
/*var sum=0;//和
var i=1;//i:累計的每一個數字。
while(i<=100){
sum+=i;//sum=sum+i; 1.sum=0+1=1; 2.sum=1+2=3; 3.sum=3+3=6 sum每一次累加的結果
i++;
}
alert(sum);*/
//8.打印100–200之間所有能被3和7整除的數
/*var num=100;
while(num<=200){
if(num%3==0 && num%7==0){
document.write(num+'<br>');
}
num++;
}*/
/*var str='<table>';
var row=1;
while(row<=9){
str+='<tr>';
var col=1;
while(col<=row){
str+='<td>'+col+'x'+row+'='+col*row+'</td>';
col++;
}
str+='</tr>';
row++;
}
str+='</table>';*/
var str='<table>'
for(var a=1;a<=10;a++){
str+='<tr>'
for(var b=1;b<=a;b++){
str+='<td>'+'</td>'
}
str+='</tr>'
}
str+='</table>'
document.write(str);
</script>
script type="text/javascript">
//while 語句屬於前測試循環語句,也就是說,在循環體內的代碼被執行之前, 就會對限制條件 求值。因此,循環體內的代碼有可能永遠不會被執行。
/*var num=5;
while(num<5){//前測試。
alert('ok');
}*/
//do { 重複執行的語句塊 }while( 限制條件 );
//do-while 語句是一種後測試循環語句,即只有在循環體中的代碼執行之後,纔會測試限制條件。換句話說,在對條件表達式求值之前,循環體內的代碼至少會被執行一次。
var num=5;
do{//循環體內的代碼至少會被執行一次。
alert('ok');
}while(num<5);
</script>
<script type="text/javascript">
//for循環:簡單將for循環理解成while循環的簡寫。
//for(1初始值;2限制條件;3累加累減){4滿足條件執行的循環體}
//執行循環:執行1-->執行2--執行4-->執行3->執行2-->執行4-->執行3->執行2-->執行4-->執行3...
//sum=1+2+3+4+5+6+7+...100=5050
/*var sum=0;//和
var i=1;//i:累計的每一個數字。
while(i<=100){
sum+=i;//sum=sum+i; 1.sum=0+1=1;
2.sum=1+2=3; 3.sum=3+3=6 sum每一次累加的結果
i++;
}
alert(sum);*/
/*for(var sum=0,i=1;i<=100;i++){
sum+=i;
}
alert(sum);*/
//8.打印100–200之間所有能被3和7整除的數
/*var num=100;
while(num<=200){
if(num%3==0 && num%7==0){
document.write(num+'<br>');
}
num++;
}*/
/*for(var num=100;num<=200;num++){
if(num%3==0 && num%7==0){
document.write(num+'<br>');
}
}*/
/*var str='<table>';
var row=1;
while(row<=9){
str+='<tr>';
var col=1;
while(col<=row){
str+='<td>'+col+'x'+row+'='+col*row+'</td>';
col++;
}
str+='</tr>';
row++;
}
str+='</table>';
document.write(str);*/
/*var str='<table>';
for(var row=1;row<=9;row++){
str+='<tr>';
for(var col=1;col<=row;col++){
str+='<td>'+col+'x'+row+'='+col*row+'</td>';
}
str+='</tr>';
}
str+='</table>';
document.write(str);*/
//for循環的死循環
for(var i=0;i<=0;){}//死循環
for(var i=0;;){}//死循環
for(;;){}//死循環
for(var i=0;i<=0;i++){}//ok
alert('hehe');
</script>
//break 語句會立即退出整個循環,強制繼續執行循環後面的其它語句。
//continue 語句代表立即退出循環, 但退出的是當前循環繼續執行下一次循環
/*for(var i=1;i<=10;i++){
if(i==5){
//break;//退出整個循環
continue;//退出的是當前循環繼續執行下一次循環
}
document.write(i+'<br/>');
}*/
/*for(var i=1,j=1; i<=5; i++,j++){//一個條件限定兩個值
document.write(i);//1,2,3,4,5
}
console.log(i);//6
console.log(j);//6*/
/*for(;;){}
for(var i=1;i<=10;i++){}
alert(i);//11*/
<script type="text/javascript">
/*document.write('abc');
alert('hello');
document.write('def');*/
/*var str='<table>';
var row=1;
while(row<=9){
str+='<tr>';
var col=1;
while(col<=row){
str+='<td>'+col+'x'+row+'='+col*row+'</td>';
col++;
}
str+='</tr>';
row++;
}
str+='</table>';
document.write(str);*/
//ReferenceError:引用錯誤,未找到某個變量或者引用。
//sytaxError:語法錯誤。寫錯了什麼。
//個人調錯習慣。
//利用代碼的執行順序,中間添加輸出,找出錯誤。
//alert或者console.log()
/*document.write('第1行代碼');
document.write('第2行代碼');
document.write('第3行代碼');
alert(1);
document.write('第4行代碼');
document.write('第5行代碼');
alert(2);
document.wrte('第6行代碼');
document.write('第7行代碼');
alert(3);
document.write('第8行代碼');
document.write('第9行代碼');
document.write('第10行代碼');
document.write('第11行代碼');*/
//斷點調式:debugger或者控制面板sources 找到文件,通過代碼前面的行號添加端點。
//for(var i=1,sum=0;i<=10;i++){
//debugger;
//sum+=i;
//}
//alert(sum);
//F8:每一次循環。
//F10:循環每一步執行的過程。利用右側的watch監聽每一步操作值的變化。
//打印出1000-2000年中所有的閏年,並以每行四個數的形式輸出
/*for(var i=1000,times=0;i<=2000;i++){
if(i%4==0 && i%100!=0 || i%400==0){
document.write(i+' ');
times++;
if(times%4==0){
document.write('<br>');
}
}
}*/
//利用星型字符(*)輸出如下圖形:三角形和梯形
/*for(var i=1;i<=10;i++){
for(var j=1;j<=10+i;j++){
document.write('*');
}
document.write('<br>');
}*/
//輸出100-200之間所有的素數。 100/(2-99) 101/(2-100)
//素數:只能被1和自身整除的數。
for(var i=100;i<=200;i++){
var hehe=1;//隨意的標記,滿足標記是素數
for(var j=2;j<i;j++){
if(i%j==0){//不是素數。
hehe=2;//只要滿足條件,說明不是素數。標記被改變了。
break;//終止循環。
}
}
if(hehe==1){//值沒有變化,不符合上面的判斷,是素數。
document.write(i+'<br />');
}
}
//2*2*2=2^3
//Math數學下面的常見的靜態方法。
//Math.pow(2,3); 求2的3次冪 2:底數 3:指數。
//alert(Math.pow(2,3));//8
//var num=3.1465;
//數字對象下面:toFixed()方法:括號裏面放置保留的小數的位數。
//alert(num.toFixed(2));//3.15 具有四捨五入功能。
//var sum=1*2*3*4*5=120 5!
/*for(var i=1,sum=1;i<=5;i++){
sum*=i;
}
alert(sum);*/
兩種debugger方式,一種在代碼中設置debugger;然後運行程序;另一種,在運行程序,進去souce,對要調試的那行前面點擊 </script>