循环结构程序设计.ppt
循环结构程序设计复习变量定义:Var x,y,z:integer;输入语句:read(x,y); readln(x,y);赋值语句:z:=x;输出语句:write(x,y); writeln(x,y);数据类型: 整型 integer 实型 real 字符型 char 布尔型 booleanprogram exam1; 程序首部Var x,y,z:integer; 说明部分数据描述Begin read(x,y); 执行部分 z:=x+y; writeln(z);End.程序基本组成: 程序首部 说明部分数据描述 执行部分程序结构: 顺序结构 选择结构 循环结构选择结构语句 if条件then ; if条件then else ;例:求y=f(x),其中f(x)=1 x=0-1 x=0) then y:=1 else y:=-1; writeln(y)End.例:求1+2+3+4+99+100的值。分析:如果把和放到 S 里,事实上,原题相当于:操作 S的值S:=0; 0S:=S+1; 1S:=S+2; 1+2=3S:=S+3; 3+3=6 S:=S+4; 6+4=10S:=S+99;S:=S+100;100次若用 i 来表示1、2、3100,则相当于计算100次的 S:=S+i在每一次计算中 i 的值不同(此处是递增1)。 算法实现:开始s:=s+i; i:=i+1;输出s结束s:=0; i:=1;做了100次了吗?否是是否有一种语句结构可以实现这种表示重复操作的呢?是否有一种语句结构可以实现这种表示重复操作的呢?循环结构1while语句while语句用于“当满足某一条件时进行循环”的情况。while语句的语法格式:while 布尔表达式do语句; 这里的语句一般是个复合语句。条件成立吗?是否语句例:输出110这十个数字。Var x:integer;Begin x:=1; while(x=10) do begin writeln(x); x:=x+1; end;End.复合语句为了能使while重复能终止,循环体中一定要有影响布尔表达式的操作,否则该循就是一个死循环。循环结束条件在进入循环体之前测试,若最初的测试值为false,则根本不进入循环体,我们把这种循环叫当型循环。分析:用变量x存放要输出的数字,让x从1变化到10,通过循环执行10次输出任务。下面,让我们一起来完成前面的任务:求1+2+3+4+99+100的值。分析: 1、实现算法:循环结构 2、变量定义:s 用于存放求和的结果 i 循环变量,并存放每次要加的数据Var s,i:integer;Begin s:=0; i:=1; while (i=100) do begin s:=s+i; i:=i+1; end; writeln(s=,s:1);End.问题:1、若要求前n个正整数的和,程序应如何修改?2、若要求前n个奇数的和,程序应如何修改?例:计算从0到某个数之间所有奇数的和。program jishu;var odds,limit,sum:integer;beginreadln(limit);sum:=0;odds:=1;while odds=limit dobeginsum:=sum+odds;odds:=odds+2end;writeln(sum:1)end. 练习:已知s=1+2+3+n,找出一个最大的整数n,使得s30000。编写程序解决这个问题。2repeat语句repeat 语句用于“重复执行循环体,一直到指定的条件为真时为止”。语法格式为:repeat语句1;语句n;until布尔表达式; repeat重复基本上有和while重复一样的描述循环计算的能力,但有一些不同:(1)在repeat语句的结构中,布尔表达式求值在计算操作之后,而while语句中,布尔表达式求值在计算操作之前,也就是说repeat至少执行一次循环体。(2)while语句的成分语句只能是一个语句。因此,当重复动作包含多个语句时,要用begin和end ,使它变成一个复合语句。而repeat语句的保留字repeat和until已经起语句括号作用,可以包含多个语句而无须begin和end。(3)repeat语句中,当布尔表达式为true时结束循环,而while语句中,是当表达式为false时才结束循环。当描述由计算操作后的情况确定重复是否继续进行的计算时,通常用repeat语句描述。练习:分别画出while语句和repeat语句的结构流程图。3for 语句for 语句用来描述已知重复次数的循环结构。for 语句有两种形式:(1) for 控制变量:初值to终值do语句;(2) for 控制变量:初值downto终值do语句;(1) for 控制变量:初值to终值do语句;递增循环。首先将初值赋给控制变量,接着判断控制变量的值是否小于或等于终值,若是,则执行循环体,在执行了循环体之后,自动将控制变量的值改为它的后继值,并重新判断是否小于或等于终值。当控制变量的值大于终值时,退出for循环,执行for语句之后的语句。(2) for 控制变量:初值downto终值do语句; 第二种形式的for 语句是递减循环。首先将初值赋给控制变量,接着判断控制变量的值是否小于或等于终值,若是,则执行循环体,在执行了循环体之后,自动将控制变量的值该为它的前趋值,并重新判断是否小于或等于终值。当控制变量的值小于终值时,退出for循环,执行for语句之后的语句。 for 语句中的初值、终值、控制变量的数据都必须是顺序类型。当初值和终值确定后,重复的次数就确定不变了,并且控制变量在重复语句内不能施加任何赋值操作。 例:计算1+2+3+99+100program jia;var n,sum:integer;beginsum:=0;for i:=1 to 100 dosum:=sum+i;writeln(sum);end. 练习:编写程序,打印九九乘法口诀表。4goto语句goto语句是一种无条件转向语句,它可以控制直接从程序的一条语句转向另一条语句。goto语句的语法形式为:goto标号;其中标号必须是不超过位整数的正整数或标识符组成,但标号必须在说明语句中先予以说明。goto语句会使程序出现一种称为“乱面条”的结构,因此你最好还是不要去用。练习:用goto语句编写程序,计算1+2+3+99+100。1、编写程序,求出1000以内的所有素数。2、求2-1000中的完全数(因子之和等于它本身的数为完全数,例如28的因子是1、2、3、7、14,且1+2+4+7+14=28,则28是完全数)。