广东省汕头市金山中学高中信息技术 pascal教程06 第六课 基本语句(四)教案.doc_第1页
广东省汕头市金山中学高中信息技术 pascal教程06 第六课 基本语句(四)教案.doc_第2页
广东省汕头市金山中学高中信息技术 pascal教程06 第六课 基本语句(四)教案.doc_第3页
广东省汕头市金山中学高中信息技术 pascal教程06 第六课 基本语句(四)教案.doc_第4页
广东省汕头市金山中学高中信息技术 pascal教程06 第六课 基本语句(四)教案.doc_第5页
免费预览已结束,剩余3页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六课 基本语句(四)6.1 while语句其一般形式:while do ;条件循环体n-s图表示:条件下一条语句循环体falsetrue流程图表示:while语句主要用于循环次数未知而又需要循环的情况,它把循环和条件判断结合在一起。执行while语句时,先检查布尔表达式的值,当为真时,重复执行do后面的语句,直到条件为假时才终止。若表达式的值从一开始为假,则do后面的语句一次也不执行。【例】试运行下面程序。var i : longint;begin i:=1; while i50 do beginwriteln ( i );i:=i+3; end;end.这个程序将输出50以内的一个等差数列:1 4 7 10 13 16 19 do后面的语句(即循环体),应有修改while后面的条件操作,否则会死循环。例如,上述程序中,如果少了 i:=i+3; 这句,i永远都是1,程序将无限地运行下去。不小心出现死循环怎么办?按ctrl+break强制中断程序运行。【例】输入一串字符,以?结束,输出其中小写字母个数与数字个数。分析:输入字符包括字母(a,b,z,a,b,z),数字(0,1,2,9)和其它字符(,$,),我们只统计其中的小写字母的个数和数字的个数。输入的字符用字符变量ch来存放,用num1,num2分别表示字母个数和数字个数。 一级算法: 1. 将小写字母个数和数字个数清0 2. 读入字符ch3. while ch? do begin 3.1 判断ch是小写字母或数字,并将相应个数加13.2 读入下一个字符ch end; 4. 输出小写字母个数与数字个数二级求精: 3.1 判断ch是小写字母或数字,并将相应个数加1: if ch是小写字母 (ch=a)and(ch=0)and(ch=9) then 数字个数加1 程序: program s601; var ch :char; ch存放读入的字符 num1 , num2 :integer; num1小写字母个数,num2数字个数begin num1 := 0; 将小写字母个数计数器清0 num2 := 0; 将数字个数计数器清0 read(ch); 读入字符到ch while ch? do begin 循环体内的语句不止一句,所以要用begin和end括起 if (ch=a)and(ch=0)and(ch=9) then num2 := num2 + 1; read(ch); 读入下一个字符到ch end; writeln(number of letter : , num1); 输出小写字母个数 writeln(number of digit : , num2); 输出数字个数end. 在上面的程序中,有两个读字符ch的语句,这是必要的。如果没有第一个读ch的语句,在while语句头部的布尔表达式ch? 就无法确定ch的值。如果没有第二个读ch的语句(循环体中),就无法读其余字符,循环也无法结束,因为ch将永远是第一次读入的字符。6.2 repeat语句repeat语句也是用于循环次数未知而又需要重复执行的情况。repeat语句的特点是先重复执行,直到条件满足。其一般形式为:repeat;until ;条件循环体n-s图表示:流程图表示:truefalse语句n语句1条件当until后面的条件为假时,重复执行循环体的语句,直到条件为真时,循环结束,然后执行它的下一条语句。其中repeat和until是配对使用,它们有相当于begin和end的作用,故循环体多于一个语句时,不必采用复合语句。repeat语句至少必须执行一次循环体,而且循环体中也要有影响循环结束条件的语句,否则会造成死循环。【例】求 ,其中项数n由键盘输入,n为整数,且n 0。var n , k :integer; sum : real; sum为累加和 beginreadln(n); sum := 0; 累加和sum清0k := 1;repeatsum := sum + 1 / k; 将1/k累加进sum k := k + 1; k加1 until k n;writeln ( sum is : , sum); 输出sum end. 程序:【例】用试商法判断质数(素数)。问题描述:输入一个大于1的整数n,若为质数,输出t,否则输出f。判断质数的方法:根据质数的定义,只要2到n-1都不能整除n,就可判定n为质数,这种方法被称为“试商法”。 program s602;var x,i: integer; f : boolean;begin readln(x); f:=true; i:=2; repeat if x mod i=0 then f:=false; i:=i+1; until (isqrt(x) or (f=false); if f=true then writeln(t) else writeln(f);end.(1)f是什么类型的变量: _ (2) x mod i=0 表示_(3)若输入 10 ,则repeat循环体执 行了_次。 (4) 其实我们没必要从2检测到n-1, 只需测到_即可。【例】数学学习机。刚上小学的欣欣吵着要买“数学学习机”,聪明的你发现用计算机编程,就可以自己做出个“学习机”来,又省钱又锻炼了编程,一举两得!随机给出一个100以内整数加法的式子,让欣欣去输入结果,如果对了,就输出“very good!”,错了则输出“error,try again.”,然后再等待输入,直到结果正确为止。12+25=?program s603;var x,y,z: integer; begin randomize; x:=random(100);y:=random(100); write(x ,+ , y , = ); repeat readln(z); if x+y=z then writeln(very good!) else writeln(error, try again.); until (x+y=z); end.6.3 重复语句小结1for语句的循环次数必须事先知道,其递增或递减的步长不能改变,都是所属类型的一个单位(如控制变量是整型,步长为1);而repeat和while语句则依赖于循环体。 2for和while语句是先判断后执行,故循环体语句可能一次也不执行;而repeat是先执行后判断,故循环体语句至少执行一次。 3循环体语句多于一条语句时,for和while语句必须用begin和end括起来,成为一条复合语句;而repeat语句则无需加begin和end。对于上面的例子,求 中的循环部分,采用这三种语句所设计的程序段如下for k :=1 to n dosum := sum + 1 / k ;k := 1;while k n;由上述三种重复语句对同一问题的描述不难看出,当循环次数为已知时,通常采用for语句。而当循环次数为未知时,且循环至少被执行一次时,一般采用repeat语句,若循环体由于问题本身决定有可能一次也不被执行时,则采用while语句。课后练习六:1、阅读下面程序,写出程序的运行结果。program ex209;var c : char; s : integer;begin read(c); s:=0; while c # do begin if (c=a) and (c=z) then s:=s+1; read(c); end; writeln(s);end.若输入 hello!i am tom.#输出:2、阅读下面程序,写出程序运行结果。program ex211;var s,x : longint;begin readln(s); repeat x:=s mod 10; write(x); s:=s div 10; until s=0;end. (1)输入: 9 输出: (2)输入:123456789 输出:3、阅读资料,回答问题。下面介绍求两个数的最大公约数的一种算法辗转相除法。 如果 x可以被 y 整除(即 x mod y=0),则 y 为 x 和y 的最大公约数;否则,设 z为x除以y的余数( z:=x mod y),再设 x:=y; y:=z;看x可以被 y 整除,若能整除,则y为x 和y 的最大公约数; 否则,继续辗转相除下去 例如: x=24 y=15 x y z 24 15 = 1 9 15 9 = 1 69 6 = 1 36 3 = 2 0program ex210;var a, b, c : longint ;begin readln(a,b); while a mod b0 do begin c:=a mod b; a:=b; b:=c; end; writeln(b);end.回答下面问题:(1) 输入 15 5 ,则while语句中的循环体执行了几次? _输出:_(2) 输入 24 15,则while语句中的循环体执行了几次? _ 输出:_4、编程求解下列问题(1)输入若干个字符,当输入#时终止,计算字符中字母a出现的个数。(2)求两个数的最小公倍数 输入:两个正整数 输出:最小公倍数(3)已知 ,累加所有不小于10-6 的项值。(4)完全数是一种特殊的自然数,它等于它的所有因子(除自身外)之和。 例如,第一个完全数6,它的真因子和为:1+2+3=6,正好等于它本身。 试编程,求出10000以内的所有完全数。(5)人们在观察兔子繁殖的过程中发现,成年兔子每个月可以生一对小兔子;小兔子在第二个月成熟,第三个月可以继续繁殖。如果你买来一对成年兔子,问多少个月后你的兔子超过100对?(假设所有兔子不死)。 提示:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论