循环结构程序

循环结构程序

ID:38543117

大小:969.00 KB

页数:45页

时间:2019-06-14

上传者:xinshengwencai
循环结构程序_第1页
循环结构程序_第2页
循环结构程序_第3页
循环结构程序_第4页
循环结构程序_第5页
资源描述:

《循环结构程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

循环结构程序信息学奥林匹克培训讲座(四) PASCAL基础知识——函数函数就是指一种运算。 格式为函数名+(+自变量+)其中自变量可以是数、字符、变量或表达式。函数的值为经过某种形式的计算得出的结果。常用函数绝对值函数:ABS(X)平方函数:SQR(X)平方根函数:SQRT(X)前趋函数:PRED(X)后继函数:SUCC(X)奇函数:ODD(X)字符函数:CHR(X)序数函数:ORD(CH)小数函数:FRAC(X)整数函数:INT(X)截尾函数:TRUNC(X)舍入函数:ROUND(X) 绝对值函数ABS(X)1、绝对值是指去掉正负号的数值,故绝对值函数ABS(X)就是把自变量X的值去掉符号。2、例:ABS(-119)=119ABS(119)=1193、绝对值函数的自变量可以是整数或实数,其相对应的函数的值也是整数或实数。 平方函数SQR(X)和平方根函数SQRT(X)1、平方即指某个数自己乘以自己。 即SQR(X)=X*X=X22、例:SQR(-5)=25ABS(10)=1003、平方函数的自变量可以是整数或实数,其相对应的函数值也是整数或实数。4、平方根即指如果某个数X是由另一个正数Y*Y所得,那么Y就是X的平方根。即SQRT(X)=Y5、例:SQRT(25)=5SQRT(100)=106、平方根函数的自变量可以是整数或实数,其相对应的函数值也是整数或实数。 前趋函数PRED(X)和后继函数SUCC(X)1、前趋是指前一个的意思。前趋函数PRED(X)即指求X的前面一个值。2、例:pred(-119)=-120pred(119)=118 pred(‘x’)=‘w’pred(‘R’)=pred(‘Q’)pred(true)=false3、前趋函数的自变量可以是整数、字符或布尔量,其相对应的函数值也是整数、字符或布尔量。4、后继是指后一个的意思。后继函数SUCC(X)即指求X的后面一个值。5、例:succ(-119)=-118succ(119)=120 succ(‘x’)=‘y’succ(‘R’)=pred(‘S’)pred(false)=true6、后继函数的自变量可以是整数、字符或布尔量,其相对应的函数值也是整数、字符或布尔量。 奇函数ODD(X)1、奇数指除不2尽的数。奇函数ODD(X)指X为奇数时,函数的值为真,当X为偶数时,函数的值为假。2、例:ODD(-119)=TRUEODD(12)=FALSE3、奇函数的自变量只可以是整数,其相对应的函数值是布尔量。 字符函数CHR(X)和序数函数ORD(X)1、ASCⅡ码把各种符号转换成数字的代码表。3、例:CHR(65)=‘A’CHR(97)=‘a’CHR(48)=‘0’4、字符函数的自变量只可以是0至255之间的整数,其相对应的函数值是各种符号。2、字符函数CHR(X)就是把数字通过ASCⅡ码转换成相对应的字符。3、例:ord(’B’)=66ord(’b’)=98ord(’1’)=49ORD(FALSE)=0ORD(TRUE)=14、字符函数的自变量只可以是各种符号共256个,其相对应的函数值是0至255之间的整数。5、序数函数ORD(X)就是把符号通过ASCⅡ码转换成相对应的数字。 小数函数frac(X)和整数函数INT(X)1、小数函数FRAC(X)就是取自变量X的值的小数部分。2、例:FRAC(-10.34)=-0.34FRAC(10.34)=0.343、小数函数的自变量只可以是实数,其相对应的函数的值也是实数。4、整数函数INT(X)就是取自变量X的值的整数部分。2、例:INT(-10.34)=-10.00INT(10.34)=10.003、整数函数的自变量只可以是实数,其相对应的函数的值也是实数。 截尾函数trunc(X)和舍入函数round(x)1、截尾函数trunc(X)是指把自变量X的小数部分舍去,并转换为整数。2、例:TRUNC(-11.9)=-11TRUNC(11.9)=113、截尾函数的自变量可以是只能是实数,其相对应的函数的值也只能是整数。4、舍入函数ROUND(X)是指把自变量X的小数部分四舍五入保留成整数,并把函数值转换为整型的数。5、例:ROUND(-11.9)=-12ROUND(11.9)=126、舍入函数的自变量可以是只能是实数,其相对应的函数的值也只能是整数。 课堂练习一:求出表达式的值:(1)124DIV4*SQR(6.0)/3.6(2)28DIV4MOD3*TRUNC(3.674)(3)12MOD5*ORD(SUCC(‘N’)DIV3–ORD(TRUE))(4)(‘A’>’b’)or(succ(‘E’)=‘F’)(5)PRED(TRUE)=FALSE(6)SUCC(5)>=5(7)98DIV12/ORD(PRED(‘F’))*TRUNC(2.45+3.6*4)*ROUND(23.56*3-6.75) 循环结构语句1、For循环变量:=初值表达式to终值表达式do语句2、For循环变量:=初值表达式downto终值表达式do语句3、While布尔表达式do语句4、Repeat语句until布尔表达式 for语句的一般格式:programtext1;vari:integer;beginfori:=1to10dowrite(i:3);end.上机测试:输出结果for<循环控制变量>:=<初值表达式>to<终值表达式>do语句;(递增型循环)for<循环控制变量>:=<初值表达式>downto<终值表达式>do语句;(递减型循环)programtext1;vari:integer;beginfori:=10downto1dowrite(i:3);end.上机测试:输出结果 for语句的执行过程:1、先将初值赋给“循环变量”;2、判断变量的值是否超过终值(对递增型来说,“超过”是大于,对递减型来说,“超过”是小于),如果超过则跳到步骤6;3、如果未超过终值,则执行do后面的语句;4、循环变量递增(递减)1;5、返回执行步骤26、循环结束,继续执行下面的语句; 试一试programtext2;vari:char;beginfori:=‘a’to‘z’dowrite(i:3);end.programtext3;vari:real;beginfori:=1.5to2.5dowrite(i:3);end.programtext1;vari:integer;beginfori:=1to10dobegini:=2*i+1;writeln(x);end;end. 1、For循环变量:=初值表达式to终值表达式do语句2、For循环变量:=初值表达式downto终值表达式do语句(1)当我们多次重复做某件有规律的事时,我们通常采用循环语句。FOR循环适用于知道循环次数的时候。(1)循环次数=abs(ord(终值)—ord(初值))+1。(2)FOR语句的含意是:计算循环次数N,重复执行N次do后面的语句。(3)循环变量是FOR循环中控制循环次数的变量,只可以是有序型变量(整数、字符、布尔)。(4)循环体可以是一个基本语句,也可以是一个复合语句。 例3:programex5_3;varI,x:integer;beginx:=1;forI:=1to5dobeginx:=x*2;writeln(‘x=‘,x)endend.例1:programex5_1;vari:integer;beginforI:=1to5dowriteln(‘i=‘,i)end.例4:programex5_4;vari:char;beginforI:=zdowntoudowriteln(‘i=‘,i)end.例2:programex5_2;varI,x:integer;begin x:=1; forI:=1to5do x:=x*2; writeln(‘x=‘,x) end. 例5:programex5_5;vari:boolean;beginforI:=falsetotruedowriteln(‘i=‘,i)end.例6:programex5_6;varI,a,b,c:integer;begina:=1;b:=9;c:=1;forI:=a+ctob+c-adobeginI:=I-1;writeln(‘i=‘,i)endend.例7:programex5_7;varI,a,b,c:integer;begina:=1;b:=9;forI:=atotrunc(b/a)dowriteln(‘i=‘,i)end. 练习:1、programlx_1; vari:integer; begin fori:=10to50do write(i:5); writeln end.3、programlx_3; varI,k:integer; begin k:=10; fori:=1to6dobegin k:=k+5;write(k:5); end end.2、programlx_2; varI,s:integer; begin s:=88 fori:=1to6do write(i:5); writeln end.4、programlx_4; varI,a,b,c:integer; begin a:=2;b:=10;c:=3 fori:=atobdobegin c:=i+c;write(c:5); end end. 例8:求1—97的累加和。Program5_8;Vars,i:integer;beginEnd.S:=0;Fori:=1to97doS:=s+I;Writlen(s:5)分析:S=1+2+3+……+97循环次数:97次Fori:=1to97do每一次所加的数与循环变量的关系等于S:=S+I当第一次执行S:=S+I时,表达式中的S没有值S赋初值S:=0加的数据是有规律的 例9:求1—100之间的奇数和。Program5_9;Vars,i:integer;beginEnd.S:=0;Fori:=1to50doS:=s+2*i-1;Writlen(s:5)分析:S=1+3+5+……+97+99循环次数:50次Fori:=1to50do每一次所加的数与循环变量的关系2*i-1S:=S+2*i-1当第一次执行S:=S+2*i+1时,表达式中的S没有值S赋初值S:=0加的数据是有规律的 家庭作业:1、累加1+5+9+……+33的和。2、求1000以内的奇数和。 复习1、第一台计算机的叫(),是()年()国研制而成的。1034732写成科学计数法是()看程序写结果(1)varx,y:integer;beginreadln(x,y);ifx-10>ythenwriteln(xdivy)elsewriteln(xmody);end.输入:3426输出:(2)vara,b,c,d,e:integer;begina:=79;b:=46;c:=57;d:=10;e:=1;if(a>c)and(b>c)thend:=d+eelseifd+101X=3X=4X<>4四句话有三个T,一个F,则四句话的序号加起来为1Program5_12;Varx:integer;beginEnd.Forx:=1to4doiford(x<>1)+ord(x=3)+ord(x=4)+ord(x<>4)=1then writeln(chr(64+x));因为我们不知道谁是对,谁是错,因此我们采用穷举法,一个个去试,因为四种可能,即循环次数为4。FORI:=1TO4循环变量的值刚好可以看成是甲乙丙丁 课堂练习五:A,b,c,d四人中有一个人做了好事。A:我没做好事。B:是C做了好事。C:是D做了好事。D:不是我做了好事。已知四人中有一个人说了假话,请编程判断是谁做了好事。 While布尔表达式do语句1、WHILE语句的含义是:当布尔表达式的值是T时,反复执行DO后面的语句,直到布尔表达式的值是F才执行下一语句。2、WHILE语句适用于不知道循环次数的循环语句。3、WHILE语句和FOR语句比较ForI:=1to10do语句1I:=1; whileI<=10dobegin语句1; I:=I+1; end; 例13:计算1*3*5*……*N<=10000时,N的值是多大?分析:因为不知道循环次数,所以不能用FOR循环,而只能使用WHILE循环。假设积为P,则条件表达式为P<=10000注意P要在循环前赋初值1Whilep<=10000doProgram5_13;Varp,i:integer;beginEnd.p:=1;Whilep<=10000dobeginp:=p*i;Writlen(I-2:5)i:=1;i:=i+2;end; 课堂练习:计算1+1*2+2*3+3*4……+(N-1)*N<900时,N的值是多大?分析:除第一项以外,其余各项均为有规律的数,故采用循环来做,但又不知道循环次数,而只能使用WHILE循环。假设和为s,则条件表达式为s<900I:=1; Whilep<900dobegin计算和;I:=I+1 end;Program5_13;Vars,i:integer;beginEnd.s:=1;Whiles<900dobegins:=s+i*(I+1);Writlen(s:5)i:=1;i:=i+1;end;项与循环变量的关系是:X:=I*(I+1)S:=S+I*(I+1) 看程序写结果Programlx_1; varx,y,n,I:integer; begin read(n,x); forI:=1tondo begin read(y); ifx>ythenx:=y end; writeln(‘x=’,x) end.输入:8978774 2212435690Programlx_2; varp,I:integer; begin p:=1; forI:=1topdo begin p:=p+1; ifp>3thenwrite(p) end; writeln(p) end. Repeat语句1; 语句2;……until布尔表达式1、repeat语句的含义是:反复执行repeat后面的语句直到当布尔表达式的值是T时才执行下一语句。2、repeat语句适用于不知道循环次数的循环语句。3、repeat语句和while语句区别在于:repeat语句先执行后判断,而while语句先判断后执行。 例14:利用格里高公式求。4=1-+-+……,直到最后一项的值于10-6为止。131517分析:因为不知道循环次数,所以不能用FOR循环,而使用repeat循环。假设最后一项为N,则条件表达式为N<0.000001WhileN<=0.000001doProgram5_13;Varn,s,o,i:integer;beginEnd.s:=1;Whilen<0.000001dobeginn:=1/i;Writlen(s:5)i:=3;O:=1i:=i+2;end;o:=-o;s:=s+o*n; 课堂练习三:剧场中有1000个座位,已知第一排有30个座位,以后每排增加2个座位,1000个座位最多能排几排?最后剩余不够一排的座位有几个?如果按前边的排法再补全一排,整个剧场有多少座位? 看程序写结果Programlx_1; vara,b,y:integer; Begin a=3; b:=6; y:=b-a; whiley<=a+bdobegin write(“y=“:10,y); y:=y+bdiva; end; end.Programlx_2; vara,b,y:integer; Begin t:=0; a:=0; repeat a:=a+1; t:=t+a; untila>=20; wirteln(“t=“;t) end. 循环语句结构各种循环语句特点归纳:for循环的特点:while循环的特点:repeat循环的特点:循环次数确定不变循环变量为顺序类型每执行完一次,循环变量自动递增(递减)1循环体可以是一个语句或者是一个复合语句;循环次数不确定没有循环变量的概念循环条件的递增(递减)需要人工设置循环体可以是一个语句或者是一个复合语句;先判断,再执行循环次数不确定没有循环变量的概念循环条件的递增(递减)需要人工设置循环体是被包含在repea……until的所有语句;先执行,再判断 循环结构中终止循环的语句continue;(退出本次循环)break;(退出循环体)试一试:programtest3;vari:integer;beginfori:=1to10dobeginifi=4thencontinue;write(i:3);end;writeln(‘tesingtheprogram’);end.programtest4;vari:integer;beginfori:=1to10dobeginifi=4thenbreak;write(i:3);end;writeln(‘tesingtheprogram’);end.1235……10testing……123testing…… 多重循环1、循环中套循环,形成多重循环,又称循环嵌套。例:begin forI:=1to5dobegin write(““:40-i); forj:=1to8do write(“*”); writeln; end; end.内循环外循环 例:找出200至500之间有多少素数。分析:采用穷举法举出所有可能是素数的数。ForI:=200to500do素数的概念:随了1和本身,其它的数都除不尽的数。求N是否是素数:即除不尽2~N-1采用穷举法举出所有需要除的数。Forj:=2toI-1do 复习1、微机出现于()年,它是第()代计算机。2、(107)D=()H=()B看程序写结果(1)PROGRAMEXAM1;VARA,B,C,D,S:INTEGERBEGINA:=2005;B:=2008;C:=28;D:=14;S:=0;IF(AB)THENS:=S+D;IF(A>C)AND(C>B)THENS:=S+DELSEIFA+C

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭