程序的三種基本結構
順序結構: 從上到下,從左到右執行的順序,就叫做順序結構,程序默認就是由上到下順序執行的
分支結構:根據不同的情況,執行對應代碼
循環結構:重複做一件事情
4.1 分支結構
if語句
if (/* 條件表達式 */) {
// 執行語句
}
if --- else 語句
if (/* 條件表達式 */) {
// 成立執行語句
} else {
// 否則執行語句
}
//舉例:
//獲取兩個數字中的最大值
var num1=100;
var num2=20;
if(num1>num2){
console.log(num1);
}else{
console.log(num2);
}
// 判斷一個數是偶數還是奇數
var n = 10;
if(n % 2 == 0){
console.log('偶數');
}else{
console.log('奇數');
}
//判斷是否成年了
var age = parseInt(prompt("請您輸入年齡"));
if(age >= 18){
console.log('恭喜您,您成年了!!');
}else{
console.log('不好意思,您還未成年,快回家去寫作業');
}
if --- else if 語句
if (/* 條件1 */){
// 成立執行語句
} else if (/* 條件2 */){
// 成立執行語句
} else if (/* 條件3 */){
// 成立執行語句
} else {
// 最後默認執行語句
}
//舉例:
/*
* 例子:
* 獲取考試的分數,如果成績是在90(含)分以上的,則顯示級別:A
* 如果成績是大於等於80的則:B
* 如果成績是大於等於70的則:C
* 如果成績是大於等於60的則:D
* 如果成績是小於60的則:E
*
* */
var score = parseInt(prompt("請輸入您的成績:(0-100之間)"));
if (!isNaN(score) && score <= 100) {
if (score >= 90) {
console.log("您的成績爲A");
} else if (score >= 80) {
console.log("您的成績爲B");
} else if (score >= 70) {
console.log("您的成績爲C");
} else if (score >= 60) {
console.log("您的成績爲D");
} else {
console.log("您的成績爲E");
}
} else {
console.log("您輸入的成績有誤!");
}
案例 判斷一個年份是閏年還是平年
判斷一個年份是閏年還是平年
閏年:能被4整除,但不能被100整除的年份 或者 能被400整除的年份
var n = 2016;
if(n % 4 == 0){
if(n % 100 != 0){
console.log('閏年');
}else if(n % 400 == 0){
console.log('閏年');
}else{
console.log('平年');
}
}else{
console.log('平年');
}
三元運算符
表達式1 ? 表達式2 : 表達式3 如果表達式1成立,則執行表達式2,否則執行表達式3 三元運算符是對if……else語句的一種簡化寫法
案例:
// 是否年滿18歲
var age = parseInt(prompt("請您輸入年齡"));
var s = age >= 18 ? '18歲了' : '未滿18歲';
console.log(s);
// 從兩個數中找最大值
var a1 = 110;
var a2 = 19;
var s = a1 > a2 ? a1 : a2;
console.log(s);
switch語句
語法格式:
switch (表達式) { case 常量1: 語句; break; case 常量2: 語句; break; … case 常量n: 語句; break; default: 語句; break; } /* * 執行過程: * 獲取表達式的值,和值1比較,相同則執行代碼1,遇到break跳出整個語句,結束 * 如果和值1不匹配,則和值2比較,相同則執行代碼2,遇到break跳出整個語句,結束 * 如果和值2不匹配,則和值3比較,相同則執行代碼3,遇到break跳出整個語句,結束 * 如果和值3不匹配,則和值4比較,相同則執行代碼4,遇到break跳出整個語句,結束 * 如果和之前的所有的值都不一樣,則直接執行代碼5,結束 */
break可以省略,如果省略,代碼會繼續執行下一個case
switch 語句在比較值時使用的是全等操作符, 因此不會發生類型轉換(例如,字符串'10' 不等於數值 10)
案例:
/* *
* 判斷這個人的成績的級別:
* 如果是A,則提示,分數在90分以上
* 如果是B,則提示,分數在80分以上
* 如果是C,則提示,分數在70分以上
* 如果是D,則提示,分數在60分以上
* 否則提示,不及格
* */
varjiBie = "B";
switch (jiBie){
case "A" :
console.log("分數在90分以上的");
break;
case "B" :
console.log("分數在80分以上的");
break;
case "C" :
console.log("分數在70分以上的");
break;
case "D" :
console.log("分數在60分以上的");
break;
default :
console.log("不及格");
}
4.2 循環結構
在javascript中,循環語句有三種,while、do..while、for循環。
4.2.1 while語句
基本語法:
// 當循環條件爲true時,執行循環體, // 當循環條件爲false時,結束循環。 while (循環條件) { //循環體 }
案例1:計算1-100之間所有數的和
// 初始化變量 var i = 1; var sum = 0; while (i <= 100) { // 判斷條件 sum += i; // 循環體 i++; // 自增 } console.log(sum);
案例2:打印100以內7的倍數
var i = 1;
while(i < 100){
if(i % 7 == 0){
console.log(i);
}
i++;
}
案例3:打印100以內所有偶數
var i = 1;
while(i <= 100){
if(i % 2 == 0){
console.log(i);
}
i++;
}
案例4:打印100以內所有偶數的和
var i = 1;
var s = 0;
while(i <= 100){
if(i % 2 == 0){
s = s + i;
}
i++;
}
console.log(s);
案例5:求賬號和密碼是否一致
var userName = prompt("請您輸入賬號");
var userPass = prompt("請您輸入密碼");
while (userName != 'admin' || userPass != '123456') {
userName = prompt("請您輸入賬號");
userPass = prompt("請您輸入密碼");
}
alert("登錄成功!");
4.2.2 do...while語句
do..while循環 和 while循環 非常像,二者經常可以相互替代,
但是do..while的特點是不管條件成不成立,都會先執行一次。
執行過程 : 先執行一次循環體 , 判斷條件是否成立 , 不成立則跳出循環 , 成立則執行循環體 , 然後再判斷條件是否成立......
do {
// 循環體;
} while (循環條件);
案例:計算1-100的和
// 初始化變量
var i = 0;
var sum = 1;
do {
sum += i;//循環體
i++;//自增
} while (i <= 100);//循環條件
4.2.3 for語句
while和do...while一般用來解決無法確認次數的循環。for循環一般在循環次數確定的時候比較方便
for循環語法:
// for循環的表達式之間用的是分號分隔的 for (初始化表達式1; 判斷表達式2; 自增表達式3) { // 循環體4 }
執行順序:1243 ---- 243 -----243(直到循環條件變成false)
初始化表達式
判斷表達式
自增表達式
循環體
//打印1-100之間所有數
for(var i=1;i<=100;i++){
console.log(i);
}
//求1-100之間所有數的和
var s = 0;
for(var i = 0;i <= 100; i++){
s += i;
}
console.log(s);
//求1-100之間所有偶數的和
var s = 0;
for(var i = 1;i <= 100; i++){
if(i % 2 == 0){
s += i;
}
}
console.log(s);
//打印正方形
var start = '';
for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
start += '* ';
}
start += '\n';
}
console.log(start);
//打印直角三角形
var start = '';
for (var i = 0; i < 10; i++) {
for (var j = i; j < 10; j++) {
start += '* ';
}
start += '\n';
}
console.log(start);
//打印9*9乘法表
var str = '';
for (var i = 1; i <= 9; i++) {
for (var j = i; j <=9; j++) {
str += i + ' * ' + j + ' = ' + i * j + '\t';
}
str += '\n';
}
console.log(str);
表格版本的乘法口訣表
document.write(" <caption > 乘法口訣表 < /caption>");
document.write(" <table border = '1' cellpadding = '5' cellspacing = '0' > ");
for (var i = 1; i <=9; i++) {
document.write("<tr>");
for (var j = 1; j <= i; j++) {
document.write("<td>");
document.write(i +"*" + j + "=" + i * j);
document.write("</td>");
}
document.write("</tr>");
}
document.write(" ");
document.write("</table>");
4.2.4 continue和break
break:立即跳出整個循環,即循環結束,開始執行循環後面的內容(直接跳到大括號)
continue:立即跳出當前循環,繼續下一次循環(跳到i++的地方)
案例1:求1-100之間不能被7整除的整數的和(用continue)
var s = 0;
for(var i = 0; i < 100; i++){
if(i % 7 == 0){
continue;
}
s += i;
}
console.log(s);
案例2:求200-300之間所有的奇數的和(用continue)
var s = 0;
for(var i = 200; i <= 300; i++){
if(i % 2 == 0){
continue;
}else{
s+=i;
}
}
console.log(s);
案例3:求200-300之間第一個能被7整數的數(break)
for(var i=200;i<=300;i++){
if(i % 7 == 0){
console.log(i);
break;
}
}