_Pascal语言基础知识 循环

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
情况:要么什么也不做,要么执行else后面的语句。 注意:else前面没有分号.
补充
逻辑、算术、关系运算符的运算次序:
1. 2. 3. 4. 5.
括号 函数、not *、/、div、mod、and +、-、or >、>=、<、<=、=、<>
3.case 语句:分情况语句(多分支语句) 格式:case 表达式 of 常数表1:语句1; 常数表2:语句2; · · · · 常数表n:语句n; else 语句n+1 end; 功能:执行过程 说明:1)end 与case 对应 2)表达式的类型通常是整型、字符型 3)常量表是常量,其类型与表达式的 类型要一致。常量表中的常量不能重复。
• 三、多重循环
• 【例9】:求100~999中的水仙花数。(若三位数 abc,abc=a3+b3+c3,则称为水仙花数。如:153, 13+53+33=1+125+27=153) • 算法设计:采用三重循环求解,用for循环。 • 程序代码: • program ex9(input,output); • var • a,b,c:integer; • begin • for a:=1 to 9 do • for b:=0 to 9 do • for c:=0 to 9 do • if a*a*a+b*b*b+c*c*c=a*100+b*10+c • then write(a*100+b*10+c:6); • writeln • end.
三、 循环结构
循环结构的三种形式:
循环结构程序通常由三种的循环语句来实现。它们分别为 FOR循环、当循环while、直到repeat循环。
通常将一组重复执行的语句称为循环体,而控制重复执行或终止 执行由重复终止条件决定。
因此,重复语句是由循环体及重复终止条件两部分组成。
1.for语句
1.for语句:(“计数循环”):就是将规定循环体重复执行的次数。 格式:for 控制变量:=初值 to 终值 do 循环体语句; for 控制变量:=初值 downto 终值 do 循环体语句; 2、for语句执行过程 ①先将初值赋给左边的变量(称为循环控制变量); ②判断循环控制变量的值是否已“超过”终值,如已超过,则跳到步骤⑥; ③如果末超过终值,则执行do后面的那个语句(称为循环体); ④循环变量递增(对to)或递减(对downto)1; ⑤返回步骤②; ⑥循环结束,执行for循环下面的一个语句。 3、说明: 1) 初值和终值可以是表达式,控制变量和初值、终值的类型相同,且必须 是整型、布尔型和字符型等顺序类型,不能为实型。 2)递增按succ函数规律变化,递减按pred函数规律变化,整型按数值大小 变化,如果为字符型量,按ASCII码表的顺序计算。 3)初值和终值在循环之前计算,重复过程中,其值不受影响;不得在循环 语句中对控制变量进行赋值。 4)当初值超过终值,不执行循环,循环次数为零。
• • • • • • • • • • • • • • • • • • • • • • •
【例8】:从n个数中挑出最大的数。 算法分析: 读入n值; 读入第1个数,赋值给变量max; 依次读入后n-1个数,与max比较,若数值大于max,则将此数值赋给max; 输出最大数。 程序代码: program ex8(input,output); var n,m,max,x:integer; begin writeln(‘input n:’); read(n); writeln(‘input n nums:’); read(max); m:=0; repeat read(x); if x>max then max:=x; m:=m+1 until m=n-1; writeln(‘the max num is:’,max) end.
NO
a,b,c能否 构成三角形?
YES
输出:
‘No answer’
求p,s, 输出面积
var a,b,c:integer; p,s:real; begin readln(a,b,c); if (a+b>c)and(a+c>b)and(b+c>a) then begin p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); writeln(s:0:2); end else writeln(‘No answer’); end.
【例5】:输出1~100之间的奇数。 程序代码: program ex5(input,output); var x:integer; begin x:=1; while x<100 do begin write(x:5); x:=x+2 end end.

【例6】:输入若干个字符,它的终止符是‘#’,计算输入的字符中‘a’(‘A’) 出现的次数。 • 算法分析: • 设计数器i,置初值为0; • 出入字符; • 当字符不为‘#’时循环:如果字符为‘a’或‘A’,则计数器加1;读入下一个字 符; • 输出计数器的值,程序结束。 • 程序代码: • program ex6(input,output); • var • ch:char; • i:integer; • begin • i:=0; • read(ch); • while ch<>’#’ do • begin • if (ch=’a’) or (ch=’A’) • then i:=i+1; • read(ch) • end; • writeln(‘i=’,i) • end.
改进:
输入三角形的三条边a,b,c, 如果能构成三角形则输出三角形的面积; 如果不能构成三角形则输出”No answer”.
abc p abc p 2 s p( p2 a)( p b)( p c)
s p( p a)( p b)( p c)
readln(a,b,c) 读入边长
• 【例3】:键入一个自然数,输出其所有约数,计算出这些约数之和并输出。 • 算法分析:解决这一问题的关键是找出约数,也就是判定一数能否被另一 数整除。可以用x mod y=0,来找出所有约数。 • 程序代码: • program ex3(input,output); • var If语句作为 • i,x,y,sum:integer; • begin For语句的 • write(‘x=’);read(x); 循环体 • sum:=0;i:=0; • for y:=1 to x do • if x mod y=0 • then begin For If • write(y:8); 语 • i:=i+1; 语 句 • if i mod 5=0 then writeln; 句 • sum:=sum+y • end; • writeln(‘sum=’,sum) • end.
【例4】:输入两个数(均不为零)及一个算术运算符,输 出其运算的结果 程序代码: program ex3(input,output); var x,y,s:real; ch:char; begin writeln(‘input x & y & ch:’); readln(x,y); readln(ch); case ch of ‘+’:s:=x+y; ‘-‘:s:=x-y; ‘*’:s:=x*y; ‘/’:s:=x/y end; writeln(x,ch,y,’=’,s) end.
• • • • • • • • • • • • • • • • • • • •
【例4】:编程找出四位整数abcd中满足下述关系的数。 (ab+cd)(ab+cd)=abcd 算法分析:这道题属于搜索问题,因为是四位整数,其范围从1000——9999,所 求的数究竟在哪里,无法确定,只有在这个范围内从小到大一个一个进行搜索,对 每一个数,看它的高两位数与低两位数和的平方是否为该数。 高两位数:abcd div 100=ab 低两位数:abcd mod 100=cd 程序代码: program ex4(input,output); var i,m,n,k:integer; begin for i:=1000 to 9999 do begin m:=i div 100; n:=i mod 100; k:=(m+n)*(m+n); If k=i then write(I:8) end end. 补充说明: 以上用的方法也叫“枚举法”,又称“穷举法”。它是用计算机解题的一种常用的 办法。它的基本思路是:一一枚举各种可能的情况,并判断哪一种可能是符合要求 的解。方法虽然很笨,然而与计算机高速的处理能力相结合,也不失为一种较有用 的方法
程序的三种基本结构
一、顺序结构 二、选择结构 (if 、case) 三、循环结构(for、while、repeat)
一、顺序结构
例:输入三角形的三条边a,b,c,输出三角形的 面积。(a,b,c是正整数<100,满足三角形条件)
abc p abc p 2 2
s p( p a)( p b)( p c) s p( p a)( p b)( p c)
Readln(a,b,c) 读入边长
流 程 图
求p
求s
输出面积s
程序从第一句开始,依次 var 顺序执行语句直到结束, a,b,c:integer; 中间无分支和循环,这种 程序结构称为顺序结构 p,s:real; begin readln(a,b,c); p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); writeln(s:0:2); end.
无“;”
二、 选择结构 1.if 语句:
格式一: if <布尔表达式> thenHale Waihona Puke Baidu<语句>;
格式二: if <布尔表达式> then <语句1> else <语句2>;
功能:执行过程 说明:1)该语句为一个语句; 2)条件是一个布尔表达式或一个布尔变量,then 和else后的 语句可以是单个语句,当需要多条语句时,用begin和end括起 来构成复合语句。 3)当布尔表达式的值为真,则执行then后面的语句,值为假时有两种
• • • • • • • • • • • • • •
【例1】:计算1+2+3+4+· · · +100之和。 算法分析: 对于求和,我们使用的是累加的办法。 程序代码: program ex1(input,output); var i,sum:integer; begin sum:=0; for i:=1 to 100 do sum:=sum+I; writeln(‘sum=’,sum) end. 补充说明:类似sum迭加变量这样的功能称为“累 加器”;类似i这样的变量称为“计数器”;“计 数器”和“累加器”是在程序中经常使用的基本操 作语句。
对于for循环有时也称为计数循环。[适合用于事先知道循环次 数]. 当循环次数未知,只能根据某一条件来决定是否进行循环时,用 while 语句实现循环要更方便。
2.while语句:
(“当型循环”):当条件满足时反复执行循环体。 格式:while 布尔表达式 do 语句; 执行过程: while语句的执行过程为: ①判断布尔表达式的值,如果其值为真,执行步骤2,否则执行步骤4; ②执行循环体语句(do后面的语句); ③返回步骤1; ④结束循环,执行while的下一个语句。 说明: 1)为了是while循环能正常终止,布尔表达式中的变量必须在循环体中的某 语句中有所改变,即有可能是布尔表达式的值为假,使循环结束,否则将 出现死循环。 2)循环体中的语句一般是多条语句,用begin和end使其成为一条复合语句。
3. repeat语句:(“直到型循环”)
repeat语句:(“直到型循环”):反复执行循环体直到条件 满足为止。 格式:repeat 语句1; 语句2; 语句3; · · · 语句n until 布尔表达式; 功能:执行过程:先执行指定的语句序列,然后判别表达式。
说明:while语句和repeat语句都 可以实现循环结构,但它们有四 点不同:
• • • • • • • • • • • • • •
【例7】:将例题6的程序用repeat语句改写。 program ex7(input,output); var ch:char; i:integer; begin i:=0; repeat read(ch); if (ch=’a’) or (ch=’A’) then i:=i+1; until ch=’#’; writeln(‘i=’,i) end.
相关文档
最新文档