信息学奥赛第六讲:循环结构程序设计6 . 1 F or 语句 for 语句用来描述已知重复次数的循环结构。 for 语句有两种形式: (1) (2) 第一种形式的for 语句是递增循环。首先将初值赋给控制变量,接着判断控制变量的值是否小于或等于终值,若是,则执行循环体,在执行了循环体之后,自动将控制变量的值该为它的后继值,并重新判断是否小于或等于终值。当控制变量的值大于终值时,退出for循环,执行for语句之后的语句。 第 二 种形式的for 语句是递减循环。首先将初值赋给控制变量,接着判断控制变量的值是否大于或等于终值,若是,则执行循环体,在执行了循环体之后,自动将控制变量的值该为它的前趋值,并重新判断是否大于或等于终值。当控制变量的值小于终值时,退出for循环,执行for语句之后的语句。 for 语句中的初值、终值、控制变量的数据都必须是顺序类型。当初值和终值确定后,重复的次数就确定不变了,并且控制变量在重复语句内不能施加任何赋值操作。 例:计算1+2+3+……+99+100 program jia; var n,sum:integer; begin sum:=0; for i:=1 to 100 do sum:=sum+i; writeln(sum); end. 6.2 while语句 while语句用于“当满足某一条件时进行循环”的情况。 while语句的语法格式: while 布尔表达式 do 语句; 循环结束条件在进入循环体之前测试,若最初的测试值为false,则根本不进入循环体,也就是说while循环是是属于当型循环。为了能使while重复能终止,循环体中一定要有影响布尔表达式的操作,否则该循就是一个死循环。 例:计算从0到某个数之间所有奇数的和。 program jishu; var odds,limit,sum:integer; begin readln(limit); sum:=0; odds:=1; while odds<=limit do begin sum:=sum+odds; odds:=odds+2 end; writeln(sum:1) end. 6.3 repeat语句 repeat 语句用于“重复执行循环体,一直到指定的条件为真时为止”。 语法格式为: repeat 语句1; 语句n; repeat重复基本上有和while重复一样的描述循环计算的能力,但有一些不同:在repeat语句的结构中,布尔表达式求值在计算操作之后,而while语句中,布尔表达式求值在计算操作之前,也就是说repeat至少执行一次循环体。 while语句的成分语句只能是一个语句。因此,当重复动作包含多个语句时,要用begin和end ,使它变成一个复合语句。而repeat语句的保留字repeat和until已经起语句括号作用,可以包含多个语句而无须begin和end。repeat语句中,当布尔表达式为true时结束循环,而while语句中,是当表达式为false时才结束循环。当描述由计算操作后的情况确定重复是否继续进行的计算时,通常用repeat语句描述。 6.4 goto语句 goto语句是一种无条件转向语句,它可以控制直接从程序的一条语句转向另一条语句。goto语句的语法形式为: goto 标号; 其中标号必须是不超过4位整数的正整数或标识符组成,但标号必须在说明语句中先予以说明。 goto语句会使程序出现一种称为“乱面条”的结构,因此你最好还是不要去用。 【练习】 1、计算1×2×3× … ×50的积 2、百钱买百鸡”是我国古代的著名数学题。题目这样描述:3文钱可以买1只公鸡,2文钱可以买一只母鸡,1文钱可以买3只小鸡。用100文钱买100只鸡,那么各有公鸡、母鸡、小鸡多少只? (要求:用循环结构程序设计计算出各有公鸡、母鸡、小鸡多少只?) |
|