循环结构与数组ppt课件_第1页
循环结构与数组ppt课件_第2页
循环结构与数组ppt课件_第3页
循环结构与数组ppt课件_第4页
循环结构与数组ppt课件_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

循环结构与数组,1,循环结构,循环控制结构为计算机程序描述重复计算提供控制手段。一个循环控制结构需指明以下三件事情中的两件:被循环执行的语句;是否循环的条件;详细指明循环方式。在PASCAL语言,用while,repeat和for三种语句描述循环控制结构,2,例:求S=1+2+3+100的值,分析:用S统计所有的和,如果每次加一个数值,需要做100次赋值。从上面的语句可以看出:上述这100个赋值语句有一个共同的特点,都可以抽象成S:=S+i的形式。其中i从1变化到100。为了简化程序设计,因此有必要采用可以用来重复运行某些语句段的程序结构这就是循环结构。,3,计数循环For语句,For语句有两种形式,它们的格式分别是:(1)递增循环:for控制变量:=todo(2)递减循环:for控制变量:=downtodo,4,For循环语句使用说明:,(1)我们一般把表达式1称为记数循环的初值,表达式2称为记数循环的终值。(2)for语句中的初值、终值、控制变量的数据都必须是顺序类型,且类型赋值相容。(3)当初值和终值确定后,循环的次数就确定不变了,并且在重复语句内不能对控制变量施加任何赋值操作。(4)Do后面的语句可以是任何一种语句,我们一般称其为循环体。,5,例:求S=1+2+3+100的值,程序代码段:Vari,s:integer;beginS:=0;Fori:=1to100dos:=s+i;Writeln(s=,s);End.,分析:用S统计所有的和,如果每次加一个数值,需要做100次赋值。从上面的语句可以看出:上述这100个赋值语句有一个共同的特点,都可以抽象成S:=S+i的形式。其中i从1变化到100。为了简化程序设计,因此有必要采用可以用来重复运行某些语句段的程序结构这就是循环结构。,6,例:按正、反两种顺序输出26个大写英文字母,varch:char;beginforch:=AtoZdowrite(ch);writeln;,forch:=ZdowntoAdowrite(ch);end.,7,例:Nocomachns定理,任何一个n3一定可以表示成n个连续的奇数和。输入n(n100),输出n3对应的表达式。,vari,n,a:longint;循环变量,连续的奇数个数,当前项,类型为长整型beginreadln(n);输入连续的奇数个数a:=(n*(n-1)+1;计算最小奇数fori:=1ton-1do输出表达式的前n-1项beginwrite(a,+);a:=a+2;end;writeln(a);输出第n项readln;end.main,8,例:百鸡问题,一只公鸡值5钱,一只母鸡值3钱,而1钱可买3只小鸡。现有100钱,想买100只鸡。问可买公鸡、母鸡、小鸡各几只?,我们通过两重for循环枚举出公鸡和母鸡的所有可能只数。在确定当前公鸡只数为i、母鸡只数为j的情况下,计算小鸡只数k=100-i-j。然后通过下述布尔表达式i*5+j*3+k/3=100判断当前100只鸡的总价值是否为100钱。如果是,则输出i、j和k。,vari,j,k:integer;beginfori:=1to20doforj:=1to33dobegink:=100-i-j;ifi*5+j*3+k/3=100thenwriteln(i:5,j:5,k:5);end;forreadln;end.main,9,FOR循环上机练习题,1.求N!=1*2*3*N。(N0dobeginif(ymod4=0)and(ymod1000)or(ymod400=0)thenbeginwriteln(y,year);n:=n-1;s:=4;end;theny:=y+s;endEnd.,n:=n-1;间隔的闰年数-1,y:=y+s;移至s年后,n=0;直至输出了n个闰年为止,15,例:计算Sum=1+3+5+n(n为大于1的奇数),求当Sum10000时,n的最大值,Varn,sum,:integer;beginwrite(inputaodddata:);sum:=0;n:=1;writeln(sum)end.,whilesum=10000,拓展:若求当SUM=a)and(ch=0)and(ch=9)thenn2:=n2+1;read(ch)end;writeln(numberofletter:,n1);writeln(numberofdigit:,n2)end.,Varn,I,j:integer;flag:boolean;Beginn:=2;i:=1;whilei=50dobeginflag:=false;j:=2;whilej=trunc(sqrt(n)dobeginend;ifnmodj=0thenbeginflag:=true;break;j:=j+1;end;ifflag=falsethenbeginwrite(n:4);if(Imod10=0)thenwriteln;i:=i+1;end;n:=n+1;end;End.,vare,p:real;i:integer;begine:=1;p:=1;i:=1;repeatp:=p/i;e:=e+p;i:=i+1untilp1e-7;writeln(e=,e)end.,18,利用循环输出各种规则图形,任意输入一个大写的英文字母,按菱形的方式输出。图为输入D时的显示结果,AABAABCBAABCDCBAABCBAABAA,varpos:integer;ch,chi,chj:char;beginwriteln(Pleaseinputaletter:);read(ch);pos:=26;forchi:=Atochdobeginwrite(:pos);forchj:=Atochidowrite(chj);forchj:=pred(chi)downtoAdowrite(chj);pos:=pos-1;writeln;end;,pos:=pos+1;forchi:=pred(ch)downtoAdobeginpos:=pos+1;write(:pos);forchj:=Atochidowrite(chj);forchj:=pred(chi)downtoAdowrite(chj);writeln;endend.,19,利用循环输出各种规则图形,对于平面规则图案的输出,一般用一个两重循环来实现,在实现时我们主要从以下几个方面来考虑:有多少行,一般用外循环来控制;1.每一行的起始位置跟行有什么关系,通常是用write(:有关行的表达式)的形式来控制输出的空格数;2.每一行有多少个输出项(列),用内循环来控制输出;3.具体一个输出项跟行、列有什么关系,直接输出相关输出项有关行和列的表达式。,20,数组,在代数上我们常常这样写:a1,a2.ai.a100(0i101),通过i来指明具体的ai,如i=10时代表a10,在pascal语言里我们也希望能够类似地描述。从前面的变量名里我们已经知道,a1,a2.ai彼此之间是相互独立的,并没有必然的联系。如要象代数上那样,可以使用数组。数组其实是一组相同值类型的变量的集合,这些变量共用一个名,彼此之间通过下标来区别。如定义了数组a,它的下标可以从1到100,那么就可以直接通过ai来指明第i个量,如i=10,ai指的是a10。,数组的说明可以先通过type标识符=array下标范围of值类型;然后再在变量说明里引用。如:typearray1=array1.100ofinteger;vara,b:array1;也可以直接在变量说明里说明:变量名:array下标范围of值类型;如:vara,b:array1.100ofinteger;描述下标范围一般通过离散(有序)类型,如从一个整数到另一个整数,或者从一个字符到另一个字符等。如:vara:array-5.5ofinteger;c:array1.20ofchar;d:arraya.zofinteger;数组元素值类型本身也可以是复杂的自定义类型,如子界类型,数组类型,记录等,21,例:用筛法求100以内的素数,分析:素数是除了1和它本身以外没有其它约数的数。用筛法求素数的方法是:用质数筛去合数:从第一个素数2开始,把它的倍数去掉;这样2以后的第一个非0数就一定也是素数,把它的倍数也删了重复这个删数过程,直到在所找到的素数后再也找不到一个非0数。把所有非0数输出。,vara:array1.100ofinteger;i,j,k:integer;beginfori:=1to100doai:=i;a1:=0;i:=2;whilei=100dobegink:=i;whilekPascal,24,字符串函数,25,字符串过程,26,例:统计单词,任意输入一个句子(以“.”结束

温馨提示

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

评论

0/150

提交评论