欢迎来到天天文库
浏览记录
ID:6385252
大小:297.50 KB
页数:16页
时间:2018-01-12
《lazarus讲义5(循环结构二)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第六课循环结构程序设计(二)6.2while语句(当型循环)一、语法:while布尔表达式do语句;或:while布尔表达式dobegin语句;语句;语句;end;二、说明:1、语义:当执行到while语句时(1)计算布尔表达式的值(2)如果布尔表达式的值是true,就执行do后面的语句如果布尔表达式的值的false,则转到(4)(3)转到(1)(重新计算布尔表达式的值)(4)退出循环,继续执行while后面的语句。2、while循环是不定次数的循环,它的循环开始和结束,由布尔表达式决定。3、while循环中由于没有循环控制变量,不能自动实现变量的递变,因此,初学者极易发生死循环。如:t:=t
2、rue;whiletdo循环体;必须记住:在循环体内,必须至少一次对布尔表达式中的某个变量重新赋值。否则,每次计算布尔表达式的值相同。4、正因为循环体内至少有一个语句需要改变一个变量的值,所以,一般循环会不止一个语句,大多数情况下,循环体是一个复合语句。5、while循环常用于查找“第一个符合要求的值”。即在布尔表达式中进行判断,循环体内对穷举对象递增(常用inc或dec),一旦找到对象就立即退出循环,此时,相关变量保存的正好是所需的值。三、例题:16、求a,b的最大公约数。(辗转相除法)programxunhuan_ex16;varinf,outf:text;a,b,c:integer;be
3、ginassign(inf,'xunhuan_ex16.in');assign(outf,'xunhuan_ex16.out');reset(inf);rewrite(outf);read(inf,a,b);ifa0dobeginc:=amodb;a:=b;b:=c;end;write(outf,b);close(outf);end.17、判断n是否是素数。programxunhuan_ex17;varinf,outf:text;n,i:integer;beginassign(inf,'xunhuan_ex17
4、.in');assign(outf,'xunhuan_ex17.out');reset(inf);rewrite(outf);read(inf,n);i:=2;while(nmodi<>0)and(i<=trunc(sqrt(n)))doinc(i);ifi5、gn(inf,'xunhuan_ex18.in');assign(outf,'xunhuan_ex18.out');reset(inf);rewrite(outf);read(inf,m);s:=0;i:=1;whiles<=mdobegininc(i);s:=s+i*i;end;write(outf,i-1);close(outf);end.19、读入一句英文语句,以句号为结束,且句中无句号。统计其中单词个数。分析:只要遇到分隔符(即非字母),就可以认为一个单词结束。但是要考虑到可能有连续的分隔符,如两个空格及标点符号连在一起。programxunhuan_ex19;varinf,outf:6、text;n:integer;st:char;t:boolean;beginassign(inf,'xunhuan_ex19.in');assign(outf,'xunhuan_ex19.out');reset(inf);rewrite(outf);read(inf,st);n:=0;t:=false;whilest<>'.'dobeginifnot(((st<='Z')and(st>='A'))or((st<='z')and(st>='a')))thenbeginifnot(t)theninc(n);t:=true;endelsebegint:=false;end;read(inf,st);7、end;ifnot(t)theninc(n);write(outf,n);close(outf);end.20、读入一个不超过9位的正整数,计算各位数字之和。programxunhuan_ex20;varinf,outf:text;n:longint;s:integer;beginassign(inf,'xunhuan_ex20.in');assign(outf,'xunhuan_ex20.out
5、gn(inf,'xunhuan_ex18.in');assign(outf,'xunhuan_ex18.out');reset(inf);rewrite(outf);read(inf,m);s:=0;i:=1;whiles<=mdobegininc(i);s:=s+i*i;end;write(outf,i-1);close(outf);end.19、读入一句英文语句,以句号为结束,且句中无句号。统计其中单词个数。分析:只要遇到分隔符(即非字母),就可以认为一个单词结束。但是要考虑到可能有连续的分隔符,如两个空格及标点符号连在一起。programxunhuan_ex19;varinf,outf:
6、text;n:integer;st:char;t:boolean;beginassign(inf,'xunhuan_ex19.in');assign(outf,'xunhuan_ex19.out');reset(inf);rewrite(outf);read(inf,st);n:=0;t:=false;whilest<>'.'dobeginifnot(((st<='Z')and(st>='A'))or((st<='z')and(st>='a')))thenbeginifnot(t)theninc(n);t:=true;endelsebegint:=false;end;read(inf,st);
7、end;ifnot(t)theninc(n);write(outf,n);close(outf);end.20、读入一个不超过9位的正整数,计算各位数字之和。programxunhuan_ex20;varinf,outf:text;n:longint;s:integer;beginassign(inf,'xunhuan_ex20.in');assign(outf,'xunhuan_ex20.out
此文档下载收益归作者所有