1 / 14
文档名称:

语句:选择(if).pdf

格式:pdf   大小:204KB   页数:14页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

语句:选择(if).pdf

上传人:酒酿小樱桃 2022/7/18 文件大小:204 KB

下载得到文件列表

语句:选择(if).pdf

相关文档

文档介绍

文档介绍:: .
语句:选择(if)
早可能很大
为支持 case 的高效实现和方便使用,不同语言的 case 语句设计也不同
• case 标号是否允许子界?
• 有无默认选择(default,others 子句)
• 如果选择表达式算出的值没有对应的标号,如何处理?(默认选择?)
2012年4月 30语句:循环(迭代)
没有循环(也没有递归)的程序是平凡的程序。
• 循环和递归给了计算机生命力
• 计算机的威力就在于它能反反复复地做一些事情
• 反复做之中还可以有变化
语言中的循环结构分为两种:
• 枚举控制的循环:对某个有限集合里的每个元素执行循环体一次
• 逻辑控制的循环:执行到某个逻辑条件变了
一些语言里这两种循环共有同一种形式,如 Algol 60,C 的 for 语句
2012年4月 31
循环:枚举控制
最早的 Fortran 只有枚举控制的循环:
do 10 i = 1, 12, 2
... ...
10 continue
Pascal: 没有步长,只能用步长 1 或 -1(downto)
FOR i := 1 TO 12 DO n := n + i
Modula: 可以有步长
FOR i := 1 TO 12 BY 2 DO n := n + i END
Ada: 没有步长,只能用步长 1 或 -1(reverse)
FOR i in 1..12 loop n := n + i; end loop
允许多种形式的枚举描述,包括针对数组下标的 a'range
2012年4月 32循环:枚举控制
枚举循环的问题:
ƒ 循环变量是否需要另行定义,如不需要,其作用域是否延伸到循环之后?
ƒ 循环变量在循环体里的作用:看作常量?看作普通变量(允许修改)?
ƒ 循环的上下界表达式什么时候求值?
• 循环开始前求值一次,以后作为常量
• 每次迭代之前判断循环是否应该结束时重新求值
ƒ 循环结束后循环变量的值是什么?
ƒ 是否允许以其他方式转入或者转出循环
• 用 goto 转入,循环变量的值是什么?
• 转出后能否访问循环变量?
for (short i = 0; i < 32700; i += 128) ...
设 short 为16位(注意什么时候条件不成立)
2012年4月 33
循环:枚举控制(实现)
• 应注意 0 次循环的情况
• 循环结束时循环变量的值
• 如果考虑值可能超越类型的最大值的问题,实现会更复杂一些
2012年4月 34循环:枚举控制的推广——迭代器
枚举循环的控制结构:
• 是一种能生成一系列离散值的机制
• 第一步总是初始化,建立循环的初始状态(设置循环变量初值)
• 提供一种操作,执行一次将得到一个新的(枚举)值
• 提供一种操作,通过它可以判断还有没有更多的枚举值
任何能提供这些功能的机制都可以称为是一种迭代器,通过“迭代器”机制控
制循环,是程序里的一种很常见的“描述模式”
• 一些语言里提供了定义迭代器的专门机制(Pragmatics 书 )
在其他语言里,可以通过模拟来实现迭代器,例如:
• C 语言标准库的 stdarg 功能(变长度参数表)就是一种迭代器
• C++ 标准库的许多功能依赖于迭代器的概念
2012年4月