1 / 50

语 句

语 句. 语句. 语句是程序中可以执行的基本单元 程序的执行过程就是语句的执行过程 多个语句构成函数,函数是 C++ 程序的主要模块. 语句的分类. 简单语句 单个语句,以分号结尾 复合语句 多个简单语句构成的逻辑语句. 简单语句与复合语句. 简单语句 a = b + c ; 复合语句 { temp = a; a = b; b = temp; }. 语句的分类. 说明和定义语句 表达式语句 流程控制语句 其他 标号语句 try-throw-catch 语句.

ardara
Download Presentation

语 句

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 语 句

  2. 语句 • 语句是程序中可以执行的基本单元 • 程序的执行过程就是语句的执行过程 • 多个语句构成函数,函数是C++程序的主要模块

  3. 语句的分类 • 简单语句 • 单个语句,以分号结尾 • 复合语句 • 多个简单语句构成的逻辑语句

  4. 简单语句与复合语句 • 简单语句 a = b + c ; • 复合语句 { temp = a; a = b; b = temp; }

  5. 语句的分类 • 说明和定义语句 • 表达式语句 • 流程控制语句 • 其他 • 标号语句 • try-throw-catch语句

  6. 说明和定义语句 • 说明或定义程序中用到的变量、常量、函数、类 int grade; //变量说明 const float PI = 3.14; //常量定义 void swap(int &a, int &b); //函数说明 class People { //类定义 ...... };

  7. 表达式语句 • 进行数据输入、输出、运算或者赋值 • 输入语句 cin >> a; • 赋值语句 a = b + c; • 运算语句 a++; • 输出语句 cout << a; • 函数调用语句 swap(a,b); • 返回语句 return a+b; • 空语句 ;

  8. 流程控制语句 • 控制程序以非顺序的方式执行语句 • 分支语句(if, switch) • 循环语句(do…while, while, for) • 跳转语句(break, continue, goto)

  9. 程序的执行流程 顺序 分支 循环 语句1 条件 语句2 语句1 语句2 语句1 语句2 语句3

  10. 分支语句 • switch语句 • switch(表达式) { • case 表达式1: • 语句1 • case 表达式2: • 语句2 • … • default : • 语句n • } if语句 if(条件表达式) 语句1 else 语句2

  11. 分支语句 • if语句和switch语句

  12. 流程控制语句(分支语句) • if-else语句的模糊性 if(表达式1) if(表达式2) 语句1 else 语句2 ? ?

  13. 流程控制语句(分支语句) else子句总是与最后出现的、 还没有else与其匹配的if相匹配

  14. 流程控制语句(分支语句) • If-else语句的模糊性 if(表达式1) if(表达式2) 语句1 else 语句2 • if(表达式1) • { • if(表达式2) • 语句1 • else • 语句2 • }

  15. 流程控制语句--switch switch(表达式0) { case 表达式1: 语句组1 break; case 表达式2: 语句组2 break; ... default : 语句组n } 整型的常量表达式 表达式的值不能相等 当表达式0和所有表达式的值不等时,执行default语句

  16. switch语句的执行流程 exp 0 Y 0 ?= 1 stat 1 N Y 0 ?= 2 stat 2 N …... Y 0 ?= n stat n N default 没有default子句

  17. 没有break语句 exp 0 Y 0 ?= 1 stat 1 N Y 0 ?= 2 stat 2 N …... …... Y 0 ?= n stat n N default 没有default子句

  18. 流程控制语句--循环 • while语句 while(表达式) 语句 • do_while语句 do 语句 while(表达式) • for语句 for(表达式1;表达式2;表达式3) 语句

  19. 初始化语句 循环体 循环体 循环增量 循环条件 循环条件 循环语句的比较 N 循环条件 Y 循环体 while do...while for

  20. 跳转语句--break • while • do…while • for • switch 循环 break 循环的正常出口

  21. 跳转语句--continue continue 循环 循环出口

  22. 跳转语句--goto 中断程序的正常执行,跳转到同一函数的指定标号处 goto 函数内的任何地方

  23. 跳转语句--goto //找到一对乘积为50且都小于10的两个数 for (int i = 1; i < 10; i++) for (int j = 1; j < 10; j++) if (i * j == 50) goto End; //其他程序 End: cout << i << ‘*’ << j << “ = 50”;

  24. 跳转语句的比较 goto label break continue label:

  25. 应用举例一 要求: 判断一个数m是否为素数。 素数的条件: m不能被 2 ~ m - 1 的数整除 即 : m % i != 0, 2 <= i <= m-1 使用for循环

  26. 应用举例一 for ( int i = 2; i < m; i++) { if ( m % i == 0) break;//不是素数 } if ( i == m) //循环正常结束 cout << “m is a prime !”;

  27. m m 改进算法 如果m不是素数,则存在i,j,满足: m = i * j (i < j) 显然,i,j满足: i <= j >=

  28. #include <iostream.h> #include <math.h> void main() { long m; //输入m的值 cout << “Please input a number:\n”; cin >> m; double sqrtm = sqrt(m);

  29. for ( int i = 2; i <=sqrtm; i++) { if ( m % i == 0) break;//不是素数 } if ( i > sqrtm) //循环正常结束 cout << “m is a prime ! \n”; else cout << “m is not a prime! \n”; }

  30. 应用举例二 要求: 从键盘读入若干整数,计算并输出它们的平均值,输入结束的标志是输入值为0 分析: 循环次数不定 --> 不适合用for循环 循环结束条件 --> 读入值为0

  31. do...while循环 int iValue; //读入的数 int num = 0; //输入数的个数 float sum = 0; //输入数值的总和 do { cout << “Please input a number:\n”; cin >> iValue; sum += iValue; //计算和 num++; } while (iValue != 0) cout << “The average :” << 1.0 * sum/num;

  32. while循环 int iValue = -1; //读入的数 int num = 0; //输入数的个数 float sum = 0; //输入数值的总和 while ( iValue != 0) { cout << “Please input a number:\n”; cin >> iValue; sum += iValue; //计算和 num++; } cout << “The average :” << 1.0 * sum/num;

  33. break退出循环 int iValue; //读入的数 int num = 0; //输入数的个数 float sum = 0; //输入数值的总和 while(1) { cout << “Please input a number:\n”; cin >> iValue; if ( iValue == 0) break; sum += iValue; //计算和 num++; } cout << “The average :” << sum/num;

  34. 应用举例三 要求: 从键盘读入一行字母,计算其中各个元音字母的个数。 分析: • 元音字母:a e u o i • 循环次数不定,不适合用for循环 • 以换行符号表示结束 • 用switch语句

  35. #include <iostream.h> void main() { char c; int aNum = 0; int eNum = 0; int oNum = 0; int iNum = 0; int uNum = 0; cout << “Please input a line of character:\n”;

  36. break的含义不同 while (1) { c = cin.get(); if (c == '\n') break; switch (c) { case 'a': aNum++; break; case 'e': eNum++; break; case 'o': oNum++; break; case 'i': iNum++; break; case 'u': uNum++; break; } } ......

  37. 应用举例四 要求: 从键盘读入若干整数,计算并输出其中正整数的平均值,忽略输入的负数,输入结束的标志是输入值为0 分析: 忽略负数 --> 中断当前一次循环,用continue

  38. while (1) { cout << “Please input a number:\n”; cin >> iValue; if (iValue < 0) continue; if (iValue == 0) break; sum += iValue; //计算和 num++; } cout << “The average :” << sum/num;

  39. 小结 • 语句的作用 • 语句的分类 • 程序的执行流程 • 分支、循环和跳转 • 简单程序开发

  40. 流程控制语句(分支语句) • 简单的if语句 //将字符变量ch由小写转为大写 if (‘a’ <= ch && ch <= ‘z’) ch = ch - ’a’ +’A’; cout << ch;

  41. 流程控制语句(分支语句) • if-else 语句 //将字符变量ch存放的值大小写互相转化 if (‘a’ <= ch && ch <= ‘z’) ch = ch - ‘a’ + ’A’; else if (‘A’ <= ch && ch <= ‘Z’) ch = ch - ‘A’ + ‘a’; cout << ch;

  42. 流程控制语句(分支语句) • if语句的等价表达式 result = exp1 ? exp2 : exp3 if(exp1) result = exp2 else result = exp3

  43. 流程控制语句 • 复合语句--用 ‘{’和 ‘}’括起的若干语句 if (条件表达式) { 语句1; 语句2; …… 语句n; } 复合语句

  44. 流程控制语句 举例: 循环从标准输入读取字符, 放入字符数组s中, 直到遇到字符'='为止

  45. N 循环条件 Y 循环体 流程控制语句-while cin >> ch; i = 0; while (ch != '=') { s[i++] = ch; cin >> ch; } s[i] = ‘\0’; 复合语句

  46. 循环体 循环条件 流程控制语句--Do-While i = 0; do { cin >> ch; s[i++] = ch; } while(ch != ‘=‘) s[i-1] = ‘\0’;

  47. 初始化语句 循环体 循环增量 循环条件 流程控制语句--for cin >> ch; for(i = 0 ; ch != ‘=‘ ; i++) { s[i] = ch; cin >> ch; } s[i] = ‘\0’;

  48. 跳转语句--break • 在switch中表示跳出switch语句 • 在循环语句中表示跳出当前循环体,执行循环体后面的语句

  49. 跳转语句--break i = 0; while (1) { cin >> s[i++]; if(s[i-1] == '='); break; } s[i] = ‘\0’;

  50. 跳转语句--continue //把0~100中间不能被3整除的数输出 for(int i = 0; i <= 100; i++) { if (i % 3 == 0) continue; cout << i << endl; }

More Related