Lazarus讲义(循环结构二).docVIP

  • 3
  • 0
  • 约1.18万字
  • 约 16页
  • 2017-11-10 发布于江苏
  • 举报
Lazarus讲义(循环结构二)

第六课 循环结构程序设计(二) 6.2 while语句(当型循环) 一、语法: while 布尔表达式 do 语句; 或:while 布尔表达式 do begin 语句; 语句; 语句; end; 二、说明: 1、语义:当执行到while语句时 (1)计算布尔表达式的值 (2)如果布尔表达式的值是true,就执行do后面的语句 如果布尔表达式的值的false,则转到(4) (3)转到(1)(重新计算布尔表达式的值) (4)退出循环,继续执行while后面的语句。 2、while循环是不定次数的循环,它的循环开始和结束,由布尔表达式决定。 3、while循环中由于没有循环控制变量,不能自动实现变量的递变,因此,初学者 极易发生死循环。如: t:=true; while t do 循环体; 必须记住:在循环体内,必须至少一次对布尔表达式中的某个变量重新赋值。 否则,每次计算布尔表达式的值相同。 4、正因为循环体内至少有一个语句需要改变一个变量的值,所以,一般循环会不 止一个语句,大多数情况下,循环体是一个复合语句。 5、while循环常用于查找“第一个符合要求的值”。即在布尔表达式中进行判断, 循环体内对穷举对象递增(常用inc或dec),一旦找到对象就立即退出循环, 此时,相关变量保存的正好是所需的值。 三、例题: 16、求a,b的最大公约数。(辗转相除法) program xunhuan_ex16; var inf,outf:text; a,b,c:integer; begin assign(inf,xunhuan_ex16.in);assign(outf,xunhuan_ex16.out); reset(inf); rewrite(outf); read(inf,a,b); if ab then begin c:=a; a:=b; b:=c; end; while a mod b0 do begin c:=a mod b; a:=b; b:=c; end; write(outf,b); close(outf); end. 17、判断n是否是素数。 program xunhuan_ex17; var inf,outf:text; n,i:integer; begin assign(inf,xunhuan_ex17.in);assign(outf,xunhuan_ex17.out); reset(inf); rewrite(outf); read(inf,n); i:=2; while (n mod i0)and(i=trunc(sqrt(n))) do inc(i); if itrunc(sqrt(n))+1 then write(outf,false) else write(outf,true); close(outf); end. 18、求满足s=12+22+32+42+……+n2=m的最大n值。 program xunhuan_ex18; var inf,outf:text; n,m,s,i:integer; begin assign(inf,xunhuan_ex18.in);assign(outf,xunhuan_ex18.out); reset(inf); rewrite(outf); read(inf,m); s:=0; i:=1; while s=m do begin inc(i); s:=s+i*i; end; write(outf,i-1); close(outf); end. 19、读入一句英文语句,以句号为结束,且句中无句号。统计其中单词个数。 分析:只要遇到分隔符(即非字母),就可以认为一个单词结束。但是要考虑 到可能有连续的分隔符,如两个空格及标点符号连在一起。 program xunhuan_ex19; var inf,outf:text;

文档评论(0)

1亿VIP精品文档

相关文档