《《基本程序设计语句》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《基本程序设计语句》PPT课件.ppt(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章 基本程序设计语句基本程序设计语句 本章要点:理解顺序结构、选择结构和循环结构程序设计的思想 理解双分支语句和多分支语句的含义 掌握利用双分支语句和多分支语句设计分支程序的方法 理解循环的概念 掌握循环程序设计的方法以及常用的算法,如累加求和、穷举法等3.1 循序渐进学理论3.1.1 基本的顺序结构语句及其应用基本的顺序结构语句及其应用 顺序结构是程序设计中最常用也是最简单的程序结构。所谓顺序结构就是其中的语句是按照先后顺序依次执行,程序执行的流程不会发生跳转。3.1.2 选择结构语句及其基本应用选择结构语句及其基本应用1.分支结构 IF语句常用来实现单分支或双分支,它的语法格式有两
2、种,分别如下。格式1:IF(条件)Then 语句1;格式2:IF(条件)Then 语句1 Else/Else之前(语句1之后)没有分号 语句2;注意:(1)对语法格式2(双分支IF语句),语句1后面没有分号,因为IFThenElse语句是一个完整的语句。(2)两种语法格式中的语句1和语句2都可以是简单语句或复合语句(复合语句必须包含在begin和end之间)。2多分支Case语句 格式:Case(表达式)of 值1:语句1;值2:语句2;值n:语句n;Else /这里的Else之前可以有分号 语句n+1;end;注意:(1)“表达式”的值必须是顺序类型,即整型、字符型、布尔型、子界型和枚举型。
3、(2)“值1”到“值n”应该是“表达式”可能出现的值,它们还应该各不相同。(3)语句可以是简单语句,也可以是复合语句。(4)Else语句可以省略,省略时如果“表达式”的值与“值1”“值n”中的任何一个值均不相等,则不执行任何分支,直接跳转到end;后面的语句执行。(5)Case语句可以用IF语句来实现,但IF语句不一定能用Case语句实现。3.1.3 循环结构语句及其基本应用循环结构语句及其基本应用 1While语句 格式:While(循环条件)do/循环条件为关系或逻辑表达式,其值为True或False 循环体;/“循环体”可以是简单语句或复合语句注意:注意:(1)可以在循环体的任何位置放置
4、Break语句,用来强制终止整个循环。(2)也可以在循环体的任何位置放置Continue语句,在该次循环执行完之前就结束本次循环,重新判断循环条件,根据循环条件的值,决定是否继续执行循环。显然,Continue语句和Break语句含义是不同的。(3)Break语句和Continue语句通常放置在循环体中的IF语句之后,即在满足某个条件的时候,结束循环或结束本次循环。(4)注意循环条件,它决定了是否执行循环以及执行多少次循环。2Repeat语句 格式:Repeat 循环体;Until(循环条件);注意:(1)循环体可以是简单语句,也可以是复合语句,对于复合语句,不需要用beginend括起来。(
5、2)也可以使用Break和Continue语句来终止循环或结束本次循环。(3)是在“循环条件”为False时执行循环,为True时退出循环。3For语句 格式:For 循环变量:=初值 To (DownTo)终值 Do 循环体;注意:(1)“循环变量”只能是顺序类型(一共5种类型,请查阅前面章节)。(2)格式中的“初值”和“终值”就是循环变量的“初值”和“终值”。(3)对递增循环,每循环一次,循环变量的值自动增加1;对递减循环,每循环一次,循环变量自动减少1。(4)循环体可以是简单语句也可以是复合语句,若为复合语句,需要用beginend括起来。(5)在循环体中可以使用Continue和Bre
6、ak语句,它们也通常位于IF语句之后。图3-1 大小写转换程序3.2 典型实例典型实例一:顺序结构实现下述功能一:顺序结构实现下述功能【例3-1】大小写转换程序。procedure TForm1.Button1Click(Sender:TObject);var s:string;begin s:=edit1.Text;edit1.Text:=uppercase(s);/转换成大写end;procedure TForm1.Button2Click(Sender:TObject);var s:string;begin s:=edit1.Text;edit1.Text:=lowercase(s);/
7、转换成小写end;procedure TForm1.FormCreate(Sender:TObject);begin edit1.Text:=;/初始化文本框,使其为空end;end.实例二:分支结构实现下列算法实例二:分支结构实现下列算法【例3-2】判断是否构成三角形。并计算其面积procedure TForm1.Button1Click(Sender:TObject);var a,b,c,s,area:Single;begin a:=strtofloat(edit1.Text);b:=strtofloat(edit2.Text);c:=strtofloat(edit3.Text);s:=(
8、a+b+c)/2;If(s 0)And(s-a 0)And(s-b 0)And(s-c 0)Then begin area:=Sqrt(s*(s-a)*(s-b)*(s-c);Label1.Caption:=能构成三角形的三边,该三角形的面积为:+floattoStr(area);end Else Label1.Caption:=不能构成三角形的三边。;end;【例3-3】用分支语句实现下属功能,输入年月,输出天数和季节;程序设计界面和程序运行界面如图所示。典型实例三:分支结构实现下列算法典型实例三:分支结构实现下列算法 procedure TForm1.Button1Click(Sender
9、:TObject);var y,m,d:word;Leapyear,ji:string;begin y:=strtoint(Edit1.Text);Leapyear:=不是;if(y mod 4=0)And(y mod 100 0)Or(y mod 400=0)then/判断闰年 Leapyear:=是;m:=strtoint(Edit2.Text);if(m=0)or(m 12)then showmessage(错误的月份,请重新输入!)else begin case m of/判断季节 3,4,5:ji:=春天;6,7,8:ji:=夏天;9,10,11:ji:=秋天;12,1,2:ji:=
10、冬天;end;case m of/判断月天数 2:if Leapyear=是 then d:=29 else d:=28;1,3,5,7,8,10,12:d:=31;4,6,9,11:d:=30;end;Label3.Caption:=format(%d年%s闰年,%d月份是%s,共有%d天。,y,Leapyear,m,ji,d);end;end;【例3-4】用循环语句实现下述功能,程序设计界面和程序运行界面仍然如图典型实例四:循环结构实现下列算法典型实例四:循环结构实现下列算法 procedure TForm1.Button1Click(Sender:TObject);var n,k,j:i
11、nteger;s:int64;begin n:=strtoint(Edit1.Text);j:=0;s:=0;For k:=1 To n do begin j:=j+k;s:=s+j;end;Panel2.Caption:=format(s=%d,s);Edit1.SetFocus;end;【例3-5】百钱百鸡问题。公元前五世纪,我国古代数学家张丘建在算经一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?分析:这是一个有名的不定方程问题。设鸡翁数为x,鸡母数为y,鸡雏数为z,则可列方程如下:对于上述不定方程问题,要先确定一个变量的值,才能对它
12、求解。由问题给出的条件,很容易得到三个变量的取值范围。x:019中的整数(因为每只鸡翁5钱,因此它不可能超过19只);y:033中的整数(因为每只鸡母3钱,因此它不可能超过33只);z:0100中的整数(因为共买百鸡,因此它不可能超过100只)。典型实例五:典型实例五:解决该问题可以采用穷举法。穷举法是一种重复性算法。它的基本思想是对所有可能解一一测试,直到找到解或将全部可能解都测试为止。对三个未知量,依次取x为值域中的一个值,然后求其余两个未知量,满足方程组则为该题的解。运行程序后,可以看到该程序通过一个消息窗口的形式依次将得到的解进行输出,如图3-8 所示。procedure TForm1
13、.Button1Click(Sender:TObject);var x,y,z:integer;p:string;beginfor x:=0 to 19 do for y:=0 to 33 do begin z:=100-x-y;if 5*x+3*y+z/3=100 then beginp:=format(得到一个解:鸡翁%d只,鸡母%d只,鸡雏%d只,x,y,z);showmessage(p);/将得到的一个解用消息窗口的方式进行输出 end;end;end;【练习题目1】在编辑框中任意输入商品的数量和价格,计算出他们的总价格,并显示出来。程序设计界面如图所示,程序运行界面如图所示。请编程实
14、现上面的功能。3.3 上机练习重应用 procedure TForm1.Button1Click(Sender:TObject);var a1,b1,c1:Single;a2,b2,c2:Integer;x:Single;begin a1:=strtofloat(Edit1.Text);a2:=strtoint(Edit2.Text);b1:=strtofloat(Edit3.Text);b2:=strtoint(Edit4.Text);c1:=strtofloat(Edit5.Text);c2:=strtoint(Edit6.Text);x:=a1*a2+b1*b2+c1*c2;Label6
15、.Caption :=总计金额:+floattostr(x);end;【练习题目2】编写一个做算术题的程序,程序的设计界面如图3-3所示。程序执行时,单击【出题】按钮,将随机产生100以内的非负加数和被加数,当在等号“=”右边的方框里写出正确答案后,单击【结果】按钮,将显示“答案正确”;如果输入的答案不正确,将显示“答案错误”,如图3-4所示。【练习题目3】节日来临,商家为促销搞优惠活动,具体优惠办法如下:(1)一次性购物金额少于100元的,不优惠;(2)一次性购物金额大于等于100元但少于300元的,优惠5%;(3)一次性购物金额大于等于300元但少于500元的,优惠10%;(4)一次性购物
16、金额大于等于500元但少于1000元的,优惠15%;(5)一次性购物金额大于等于1000元的,优惠20%。请编写程序实现上面的功能,当输入购物金额时,单击【付款】按钮,计算实际支付的金额。程序设计界面如图3-12所示,程序运行界面如图3-13所示。图3-12 程序设计界面 图3-13 程序运行界面【练习题目4】:枚举法求人数量问题 餐馆进餐问题:男人5先令,女人3先令,小孩1先令,小鸡每3只1元,问该如何进餐?进餐方法有许多种,请穷举出所有可能。程序设计界面如图3-18所示,程序运行界面如图3-19所示。【练习题目5】:邮箱地址判断程序:邮箱地址判断程序 在很多场合需要使用电子邮件,下列程序判
17、断邮件地址的合法性(1)输入为空,不合法;(2)输入字符串不包含符号,或符号出现的次数多于一次也为不合法;(3)如果字符出现的位置为首字符或末尾字符也为不合法;(4)如果后面的字符数少于3个也为不合法;(5)如果后面的字符中不包含.字符,或者.字符出现在字符后面与相邻,或位于末尾也为不合法(6)满足以上情况即为合法邮箱地址。代码提示:代码提示:procedure TForm1.Button1Click(Sender:TObject);var Number,I:integer;/Number用于给字符计数 TempStr:String;begin TempStr:=edit1.Text;Numb
18、er:=0;if(TempStr=)then ShowMessage(您输入的电子邮件地址格式不合法!)else for I:=1 to Length(TempStr)do begin if(TempStr I=)then INC(Number);end;if(Number=0)or(Number 1)then /如果不含有字符,或者其个数大于,则不合法 ShowMessage(您输入的电子邮件地址格式不合法!)else beginif(TempStr 1=)or(TempStr length(TempStr)=)then /如果字符的位置在字符串开头或者末尾,则不合法 ShowMessage
19、(您输入的电子邮件地址格式不合法!)else begin I:=pos(,TempStr);/获取字符在字符串当中的位置 delete(TempStr,1,I);/获取字符串中字符后面的剩余子串 if(Length(TempStr)3)then /如果剩余子串的长度小于3,则不合法 ShowMessage(您输入的电子邮件地址格式不合法!)else begin if(pos(.,TempStr)=0)or(pos(.,TempStr)=length(TempStr)or(pos(.,TempStr)=1)then /如果剩余的子串当中不含有字符.,或者其位置在/子串的开头或者末尾,则不合法 ShowMessage(您输入的电子邮件地址格式不合法!)else /以上的判断都通过,则表示地址字符串为合法 ShowMessage(您输入的电子邮件地址格式合法!)end;end;end;end;本章回顾:理解顺序结构、选择结构和循环结构程序设计的思想 理解双分支语句和多分支语句的含义 掌握利用双分支语句和多分支语句设计分支程序的方法 理解循环的概念 掌握循环程序设计的方法以及常用的算法,如累加求和、穷举法等
限制150内