--- config: look: handDrawn themeVariables: fontSize: 28px --- mindmap Root(变量) 变量名:标识符 类型:数据类型 值:存储的数据 地址:内存中的位置 作用域:变量的可见范围 生存周期:变量的有效时间
《计算机程序设计》
计算机学院计算机研究所编译系统研究室
~/course
~/course/main.cpp
main.cpp
,随堂编程练习的代码请直接在此文件中编辑测一测
C++中没有逻辑异或运算符,请问下列程序是否可以通过编译?如果可以,输出是什么?
编程求解
输入一个百分制成绩,输出对应的分等级的五分制成绩,例如:输入88,输出“B”
学习目标
运用本次课所学内容,采用不同的选择结构实现分制转换问题!
;
作为语句结束符
{}
括起的复合语句块不需要分号helloworld.cpp
$ g++ helloworld.cpp
helloworld.cpp: In function ‘int main()’:
helloworld.cpp:5:27: error: expected ‘;’ before ‘return’
5 | cout << "Hello world!\n"
| ^
| ;
6 | return 0;
| ~~~~~~
温馨提示
编译器错误信息是解决编译错误最重要的线索
程序结构定理(Böhm-Jacopini定理)
任何程序都可以由顺序结构、选择结构、循环结构组合而成
— Corrado Böhm and Giuseppe Jacopini, 1966
goto
语句:无条件跳转到指定标签位置break
语句:跳出当前循环/选择结构continue
语句:跳过当前循环的剩余部分return
语句:返回函数调用点goto
语句goto
语句用于无条件跳转到指定标签位置if (a > 0)
goto positive;
goto end;
positive: // label
cout << "Positive\n";
end: // label
return 0;
goto
语句,灵活、强大,但抽象层次较低,会导致程序的可读性和可维护性降低名人名言
Goto Statement Considered Harmful!
— Edsger W. Dijkstra, 1968
Edsger W. Dijkstra,荷兰计算机科学家,1972年图灵奖、1980年IEEE计算机先驱奖获得者,他对整个计算机科学学科的贡献广泛而深远,被认为是计算机科学领域的奠基人之一。
考考你
汇编程序中的程序流程控制是结构化控制还是非结构化控制?
测一测
下列语句,哪些是合法的C++表达式语句?
const int a = 1;
a = a + 1;
cout << "Hello world!\n"
d = sin(f);
顺序结构案例
{}
括起来的多条语句组成,也称语句块
}
后不需要分号考考你
若上述程序中第7行末尾加上分号,是否会发生编译错误?试一试!
--- config: look: handDrawn themeVariables: fontSize: 28px --- mindmap Root(变量) 变量名:标识符 类型:数据类型 值:存储的数据 地址:内存中的位置 作用域:变量的可见范围 生存周期:变量的有效时间
测一测
下面的代码片段,存在问题的是?
编程求解
书写一个复合语句,实现变量定义、输入提示、读入百分制成绩、输出用户输入的百分制成绩
输入一个百分制成绩,输出对应的分等级的五分制成绩,例如:输入88,输出“B”
运行结果示例:
if
语句:根据布尔表达式条件执行语句switch
语句:根据整型(或兼容整型)表达式的值选择执行语句if
语句的三种形式if语句语法要点
if
后的条件表达式必须使用圆括号括起来if
与else
后的语句块必须是单条语句考考你
if
语句的三种形式和Python中对应语法结构的区别?测一测
下列两个程序输出结果有何不同?
明察秋毫
Python依靠缩进界定代码块的边界,而C++中缩进、换行等编程风格的目的是提升程序可读性,对程序语义无影响
大千世界
测一测
下列两个程序分别输出什么结果?
明察秋毫
else
总是与最近的没有匹配else
的if
匹配,称为最近匹配规则教员箴言
安全且优美:即使只有一个语句,也使用花括号!
if
语句可以使用嵌套if
语句替代温馨提示
两者的选择取决于代码的可读性和逻辑结构,在逻辑清晰的情况下,级联if
语句更易读
考考你
阅读下列程序,解释其功能
考考你
请使用if
语句完成分制转换问题
输入一个百分制成绩,输出对应的分等级的五分制成绩,例如:输入88,输出“B”
case
,可使用break
语句跳出整个switch
结构避坑
使用break
打破穿透的用法才是switch语句的惯用法——不要忘记break
!
default
分支default
分支可以出现在switch
结构的任意位置,但通常放在最后default
分支缺失,v
不匹配任何case
时,switch
结构不执行任何语句switch
与级联if
break
的switch
结构可表示为级联if
结构
switch
结构更加清晰switch
语句的限制switch
的条件表达式与case
标签必须是整型或兼容整型的类型
考考你
根据浮点数的值选择执行不同的语句,能否通过switch
语句实现?
switch
语句练习考考你
能否使用switch
语句完成分制转换问题?
输入一个百分制成绩,输出对应的分等级的五分制成绩,例如:输入88,输出“B”
--- config: look: handDrawn themeVariables: fontSize: 20px --- mindmap 控制结构(1) 顺序结构 变量作用域 语句 声明语句 执行性语句 表达式语句 控制语句 复合语句 选择语句 循环语句 跳转语句 选择结构 if语句 if-then型 if-then-else型 if-then-else-if型 switch语句 穿透与break 与级联if的比较
学习目标
计算机程序设计