三种循环结构都需掌握

技术与开发

学习内容:Pascal语言

学习进度:第六课

上手难度:★★★★

考试类型:二级Delphi

循环结构是Delphi二级考试的重中之重,也是Pascal语言的难点之一。今年4月等级考试中许多考生在此知识点上都失分了,考生对循环结构的理解和掌握程度是能否顺利考试过关的关键。本文对循环结构的难点进行剖析,希望考生能吃透循环结构,在此知识点上尽量少失分或不失分。

一、最常用的for循环

1.了解for循环的基本用法

循环就是重复执行语句。在 Pascal语言中,常见的循环语句有for语句、while语句和repeat语句,下面我们先来学习for语句:

for循环的一般格式为:

for <循环变量>:=<初值> to <终值> do

<一组语句>

在for循环结构中,for、to、do为关键字,do后面的一组语句为循环体,如果语句超过一条,需要使用begin end结构。循环变量为一个计数器变量,初值为计数器的起始值,终值为计数器的终止值。

在循环执行之前,先根据初、终值表达式计算出初、终值,并据此来决定循环的次数及循环变量的取值。在循环体中对初、终值表达式的改变(循环变量自动加1或者减1)不会影响循环次数及循环变量的取值。for 语句的执行过程是:开始时,循环变量等于初值,如果在初值后面的保留字是to,而且循环变量小于或等于终值,则执行do后面的语句一次,同时,循环变量的值加1直到大于终值。

考生使用for语句要注意下面几点:第一,循环变量的初值、终值可以是表达式,也可以是常量或变量;第二,循环变量必须与初值、终值的数据类型相同,并且只能是有序类型(如整数类型、布尔类型、字符类型、枚举类型、子界类型)。不能是无序类型(如实数类型);第三,循环体可以是任何单个语句或者由多个语句组成的复合语句;第四,在循环体中,不允许用任何语句来改变循环变量的值。

小提示:循环变量每次进行加1操作,因此循环初值应该小于终值。如果想对循环变量每次进行减1操作,则可以用downto来代替to,比如for i:=100 downto 1 do//此时初值大于终值,每执行一次do后面的语句循环变量的值减1直到小于终值。

2.理解for循环的嵌套

在考试中,for循环嵌套经常和break、continue、exit三个语句配合使用来考查考生对for循环的理解能力,很多考生不理解这这三个语句的含义非常容易失分,这是for循环的考试重点之一。

break语句的作用是使程序的执行流程立即跳到循环的结尾;continue语句的作用是结束本次循环的所有操作,开始下一次循环;exit语句的作用是退出当前代码块的执行。下面来看一个例子:

for i:=1 to 50 do//i为循环变量,此处循环

begin

for j:=1 to i do

begin

sum:=sum+1;

if sum>3 then

break;//一旦sum大于3后,程序跳到j循环的结尾,退出j循环并执行sum:=sum+3;

//continue;// 一旦sum大于3后,程序结束本次j循环,开始下一次j循环,执行sum:=sum+1;

//exit;// 一旦sum大于3后,本段代码块全部结束,直接跳到最后一个end;

二、while…do循环基本用法

while…do循环用于“当满足某一条件时进行循环”的情况,它属于“当型循环”。while…do循环的一般形式为:

while 布尔表达式 do

循环体;

while保留字后面必须跟一个布尔表达式。第一次执行循环时,程序首先判断布尔表达式的值,如果该表达式的结果为真,循环被执行,否则退出循环执行while语句后面的程序。在while…do循环结构中,考生需要注意两点:第一,循环体有可能一次都不被执行,第二,循环体中必须有改变布尔表达式的操作,否则该循环就是一个死循环。

三、repeat… until循环基本用法

repeat…until循环最主要的优点是不必事先设定循环次数,只要until语句后面的布尔表达式的值不为真,就会继续执行循环体。repeat…until循环的特点是先执行后判断,其一般形式是:

repeat

语句

until布尔表达式;

在循环体中必须包括有改变布尔表达式值的语句,否则循环将一直执行下去而无法结束程序。

小提示:while…do 循环和repeat…until循环的不同点在于repeat…until循环的代码至少要执行一次,while…do 循环则可能一次都不执行;repeat…until循环的条件是反向的条件,只要不满足这个条件,循环就执行;当条件满足时,循环终止。这正好与while…do 循环相反,while…do循环当条件是真值时才执行。

读者反馈

读者 花之舞:请教一下,使用case语句时,如果表达式结果1 对应的语句有多个,应该怎么处理?

小新解答:这种情况下必须添加begin end结构,否则编译器将报错。多条语句在begin和end之间,每一条语句用分号分开,注意end后面也必须要用分号。