《Pascal程序设计(第5课)-While和Repeat循环(1).ppt》由会员分享,可在线阅读,更多相关《Pascal程序设计(第5课)-While和Repeat循环(1).ppt(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第5 5课课【回顾回顾】在在PascalPascal中,实现循环程序设计的语句有三种:中,实现循环程序设计的语句有三种:ForFor语句:语句:规定循环次数的循环形式;规定循环次数的循环形式;WhileWhile语句:语句:满足条件时执行循环的形式;满足条件时执行循环的形式;RepeatRepeat语句:语句:反复执行直到满足条件停止的循环形式。反复执行直到满足条件停止的循环形式。在在PascalPascal中,实现循环结构的中,实现循环结构的ForFor语句的一般形式为:语句的一般形式为:For For :=:=To To Do Do ForFor语句还有另外的一种形式:语句还有另外的一种
2、形式:For For :=:=DowntoDownto Do Do 输入输入1010个学生成绩,分别统计出成绩个学生成绩,分别统计出成绩在在85-10085-100分,分,60-8560-85分和分和6060分以下的各分分以下的各分数段的人数并输出。数段的人数并输出。If If then then else else ;For For 循环变量循环变量=初值初值 to to 终值终值 dodo 参参考考格格式式【复习题复习题】参考参考【WhileWhile语句循环结构语句循环结构 】WhileWhile语句的一般形式是:语句的一般形式是:While While Do Do 程序的执行过程为:程
3、序的执行过程为:(1)(1)检查布尔表达式的值,如果它为真,则执行循环体检查布尔表达式的值,如果它为真,则执行循环体 ;(2)(2)执行完循环体之后,再次检查布尔表达式的值,如果执行完循环体之后,再次检查布尔表达式的值,如果仍为真,继续执行循环体,否则结束循环;仍为真,继续执行循环体,否则结束循环;(3)(3)执行执行WhileWhile语句后面的语句。语句后面的语句。注意:注意:WhileWhile循环体中一定要有能改变布尔变量值的语句,循环体中一定要有能改变布尔变量值的语句,否则循环将不能结束,而形成死循环。否则循环将不能结束,而形成死循环。看下列程序的功能:Program Exam12P
4、rogram Exam12;VarVar a:byte a:byte;BeginBegin While a:=200 do While a:=200 do BEGIN BEGINWritelnWriteln(a)(a);A:=a+1;A:=a+1;END;END;ReadlnReadln例例:输输入入一一串串字字符符,以以“?”?”结结束束,统统计计输输出出其其中的字母个数和数字个数。中的字母个数和数字个数。分析:分析:首先读如第一个字符,如果不是首先读如第一个字符,如果不是“?”?”,执行循环。,执行循环。在循环中,判断它是否是字母,若是将在循环中,判断它是否是字母,若是将x x的值加的值加
5、1 1,否则判断判,否则判断判断它是否是数字,若是将断它是否是数字,若是将y y的值加的值加1 1,然后读入下一个字符,如,然后读入下一个字符,如果不是果不是“?”?”,继续执行循环,直到输入,继续执行循环,直到输入“?”?”时结束循环,输出时结束循环,输出结果。结果。算法:算法:1 1、将存放字母和数字个数的变量、将存放字母和数字个数的变量x x和和y y置零;置零;2 2、读入第一个字符;读入第一个字符;3 3、while while chch?do?do Begin Begin 4 4、If(If(chch=a)and(=a)and(chch=z)=0)and(=0)and(chch=9
6、)=9)字符字符形式形式 7 7、Then y:=y+1Then y:=y+1;end;end;8 8、输出输出x x 和和y y。例例:输输入入一一串串字字符符,以以“?”?”结结束束,统统计计输输出出其其中的字母个数和数字个数。中的字母个数和数字个数。ProgramProgram c1 c1(input,outputinput,output););VarVar ch:charch:char;x,y:integerx,y:integer;BeginBegin x:=0 x:=0;将字母个数清将字母个数清0 0 y:=0 y:=0;将数字个数清将数字个数清0 0 read read(chch)
7、;whilewhile chch?dodo begin begin If If(chch=a)=a)andand(chch=z)=0)=0)andand(chch=9)=9)ThenThen y:=y+1 y:=y+1;readread(chch);endend;writelnwriteln(x=,x,y=,y)(x=,x,y=,y);End.End.参考程序:参考程序:【RepeatRepeat语句循环结构语句循环结构 】RepeatRepeat语句的一般形式是:语句的一般形式是:Repeat Repeat Until Until 程序的执行过程为:程序的执行过程为:(1)(1)执行循环体;
8、执行循环体;(2)(2)检查检查UntilUntil后的布尔表达式的值,直到布尔表达式为后的布尔表达式的值,直到布尔表达式为真时结束循环真时结束循环 ;(3)(3)执行执行RepeatRepeat语句后面的语句。语句后面的语句。【whilewhile和和RepeatRepeat的主要区别的主要区别】a a、RepeatRepeat语语句句是是在在执执行行完完循循环环体体后后才才检检查查布布尔尔表表达达式式的的值值,所所以以循循环环至至少少执执行行一一次次;而而whilewhile语语句句是是在在执执行行循循环环体体以以前前检检查查布布尔尔表表达达式式的的值值,有有可可能能一一次次循循环环也也不
9、不执执行行(布布尔尔表表达达式开始就为假)。式开始就为假)。b b、RepeatRepeat语句在布尔表达式为真时结束循语句在布尔表达式为真时结束循环,而环,而whilewhile语句在表达式为真时执行循环。语句在表达式为真时执行循环。例例:计计算算 直直到到最最后后一一项项的的绝绝对对值小于值小于1010-7-7时停止计算,其中时停止计算,其中x x由键盘输入。由键盘输入。分析:分析:这是一个级数求和的问题,其项数决定于最后一项这是一个级数求和的问题,其项数决定于最后一项的绝对值的大小是否小于的绝对值的大小是否小于1010-7-7,如果它大于,如果它大于1010-7-7,继续求下一,继续求下
10、一项,并累加到和上,否则结束求和。项,并累加到和上,否则结束求和。设自变量为设自变量为x x,和为和为sumsum,每一项为每一项为t t,都说明为实都说明为实型。另外定义一个常量型。另外定义一个常量w w表示误差表示误差1010-7-7,可以用来控制精确度。,可以用来控制精确度。例例:计计算算 直直到到最最后后一一项项的的绝绝对对值小于值小于1010-7-7时停止计算,其中时停止计算,其中x x由键盘输入。由键盘输入。算法:算法:1 1、读入、读入x x的值;的值;2 2、置、置sumsum和和t t的初值为的初值为x x;3 3、RepeatRepeat语句语句4 4、计算下一项、计算下一
11、项t t;5 5、将下一项加到将下一项加到sumsum上;上;6 6、Until tUntil t的绝对值小于的绝对值小于w w,结束结束RepeatRepeat循环;循环;7 7、输出和、输出和sumsum。其其中中第第4 4步步需需要要进进一一步步精精确确,我我们们可可以以通通过过每每一一项项的的前前一一项项的的值值来来计计算算这这一一项项。我我们们让让多多项项式式的的每每一一项项与与一一个个变变量量n n相相对对应应,其其中中n n的的值值依依次次为为1 1,3 3,5 5,7 7,99,从从多多项项式式的的前前一一项项 算算后后一项一项 ,只需要将前一个式子乘上一个因子,只需要将前一个
12、式子乘上一个因子 即可。即可。例如根据例如根据 计算计算 ,需要做以下运算:,需要做以下运算:。例例:计计算算 直直到到最最后后一一项项的的绝绝对对值小于值小于1010-7-7时停止计算,其中时停止计算,其中x x由键盘输入。由键盘输入。Program example16Program example16(input,outputinput,output););ConstConst w=1e-7 w=1e-7;VarVar x x,sum,t:realsum,t:real;n:integern:integer;Begin Begin read(x)read(x);writelnwriteln(
13、x=,x)(x=,x);n:=1n:=1;t:=xt:=x;sum:=xsum:=x;Repeat Repeat n:=n+2 n:=n+2;t:=t*(-x*x)/(n-1)/nt:=t*(-x*x)/(n-1)/n;sum:=sum+tsum:=sum+t;Until abs(t)w Until abs(t)=0)and(x=0)and(x=85)then if(x=85)then a:=a+1 then a:=a+1 else if(x=60)else if(x=60)then b:=b+1 then b:=b+1 else c:=c+1;else c:=c+1;end;end;Write(a,b,c)Write(a,b,c);End.End.用键盘输入用键盘输入3030个学生成绩,分别统计出成绩在个学生成绩,分别统计出成绩在85-10085-100分,分,60-8560-85分和分和6060分以下的各分数段的人数。分以下的各分数段的人数。返回返回