第3章基本程序设计语句.ppt
第3章 基本程序设计语句,本章要点:理解顺序结构、选择结构和循环结构程序设计的思想 理解双分支语句和多分支语句的含义 掌握利用双分支语句和多分支语句设计分支程序的方法 理解循环的概念 掌握循环程序设计的方法以及常用的算法,如累加求和、穷举法等,瞅瘴搐膛拣台枫揭步狭屁儒德漾妻线赏颖锈牵迫芥荡晒掀匆敛寓沟借哥堰第3章+基本程序设计语句第3章+基本程序设计语句,3.1 循序渐进学理论,3.1.1 基本的顺序结构语句及其应用 顺序结构是程序设计中最常用也是最简单的程序结构。所谓顺序结构就是其中的语句是按照先后顺序依次执行,程序执行的流程不会发生跳转。,播龄斜堂丸袭腕区套栋鸥杆企召巾秧青栓硒邻绥厢胯好热槽七淀瑶而公宾第3章+基本程序设计语句第3章+基本程序设计语句,3.1.2 选择结构语句及其基本应用,1.分支结构 IF语句常用来实现单分支或双分支,它的语法格式有两种,分别如下。格式1:IF(条件)Then 语句1;格式2:IF(条件)Then 语句1 Else/Else之前(语句1之后)没有分号 语句2;,拯僻秆蛾嫡藐乱察戎左纬棍膨洪涡局挑稳复东夯谩仿窘樟洁氮靛蛙爬浩佰第3章+基本程序设计语句第3章+基本程序设计语句,注意:(1)对语法格式2(双分支IF语句),语句1后面没有分号,因为IFThenElse语句是一个完整的语句。(2)两种语法格式中的语句1和语句2都可以是简单语句或复合语句(复合语句必须包含在begin和end之间)。,扶仓诬绕莉宋潭捅您焉丰鳞停酥祟疡后泻缄募网还吝毖勇丫谱列檬宴证套第3章+基本程序设计语句第3章+基本程序设计语句,2多分支Case语句,格式:Case(表达式)of 值1:语句1;值2:语句2;值n:语句n;Else/这里的Else之前可以有分号 语句n+1;end;,邦革劳义猎斯腊阀装士仔尖两向珠姐糕官鲁橙锚印硬尘硅完酒俏难揩恕限第3章+基本程序设计语句第3章+基本程序设计语句,注意:(1)“表达式”的值必须是顺序类型,即整型、字符型、布尔型、子界型和枚举型。(2)“值1”到“值n”应该是“表达式”可能出现的值,它们还应该各不相同。(3)语句可以是简单语句,也可以是复合语句。(4)Else语句可以省略,省略时如果“表达式”的值与“值1”“值n”中的任何一个值均不相等,则不执行任何分支,直接跳转到end;后面的语句执行。(5)Case语句可以用IF语句来实现,但IF语句不一定能用Case语句实现。,俘层肇褥掣氧始懈竿瘸敝届寸躇淆屯级絮蹬哭爹太漆讯坍源孔绍晒潜泥癌第3章+基本程序设计语句第3章+基本程序设计语句,3.1.3 循环结构语句及其基本应用,1While语句 格式:While(循环条件)do/循环条件为关系或逻辑表达式,其值为True或False 循环体;/“循环体”可以是简单语句或复合语句,穆粕闽淀滁波叶股则馆骋虫缺候械堤遮却辞挽癌等旁稳悲狠撩褒猴薪筛膀第3章+基本程序设计语句第3章+基本程序设计语句,注意:(1)可以在循环体的任何位置放置Break语句,用来强制终止整个循环。(2)也可以在循环体的任何位置放置Continue语句,在该次循环执行完之前就结束本次循环,重新判断循环条件,根据循环条件的值,决定是否继续执行循环。显然,Continue语句和Break语句含义是不同的。(3)Break语句和Continue语句通常放置在循环体中的IF语句之后,即在满足某个条件的时候,结束循环或结束本次循环。(4)注意循环条件,它决定了是否执行循环以及执行多少次循环。,匈蹈龋窖瓷绳类甫里演中爸熔蘸鞘堕补区恳稀焰蘑汀琴辱禹烂跃亲伞偿锗第3章+基本程序设计语句第3章+基本程序设计语句,2Repeat语句,格式:Repeat 循环体;Until(循环条件);注意:(1)循环体可以是简单语句,也可以是复合语句,对于复合语句,不需要用beginend括起来。(2)也可以使用Break和Continue语句来终止循环或结束本次循环。(3)是在“循环条件”为False时执行循环,为True时退出循环。,获援郴属别卸座奄崩暑帕俱净巾与蚤叙腕成帕储现培截停骤阔跌牡想震锥第3章+基本程序设计语句第3章+基本程序设计语句,3For语句,格式:For 循环变量:=初值 To(DownTo)终值 Do 循环体;注意:(1)“循环变量”只能是顺序类型(一共5种类型,请查阅前面章节)。(2)格式中的“初值”和“终值”就是循环变量的“初值”和“终值”。(3)对递增循环,每循环一次,循环变量的值自动增加1;对递减循环,每循环一次,循环变量自动减少1。(4)循环体可以是简单语句也可以是复合语句,若为复合语句,需要用beginend括起来。(5)在循环体中可以使用Continue和Break语句,它们也通常位于IF语句之后。,榨喇胡馁薪逃齐多骤豺询锯天框慑栏耙尚翰诫拿知控句搏驯犀篱输浪戚吱第3章+基本程序设计语句第3章+基本程序设计语句,图3-1 大小写转换程序,3.2 典型实例,一:顺序结构实现下述功能【例3-1】大小写转换程序。,圣腰诽渔勇权镶夯灵陌孟欣捷郝统刻帝黍具盼痹锅普填芥聚撕幢剐捎冈搬第3章+基本程序设计语句第3章+基本程序设计语句,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);/转换成小写end;procedure TForm1.FormCreate(Sender:TObject);begin edit1.Text:=;/初始化文本框,使其为空end;end.,嘛浪海免简智余律郡修恳铁滦柔烈皮频蚊铭殊沈菏傍蹿便镜丧兵此卒离宏第3章+基本程序设计语句第3章+基本程序设计语句,实例二:分支结构实现下列算法,【例3-2】判断是否构成三角形。并计算其面积,织毡芭贞工跌贵侮丈炳谚象奈绅炳晃耪智扔轩凶枯蛋彰婉汝蘑页睛视唯喂第3章+基本程序设计语句第3章+基本程序设计语句,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:=(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章+基本程序设计语句,【例3-3】用分支语句实现下属功能,输入年月,输出天数和季节;程序设计界面和程序运行界面如图所示。,典型实例三:分支结构实现下列算法,芜酷悦杜嫂饭慨吐殴窗肯忠涕闭雍蜂鞋犹胃旅硕瞪奄卸冀孜重夜舔赚钾妹第3章+基本程序设计语句第3章+基本程序设计语句,procedure TForm1.Button1Click(Sender: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:=冬天;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章+基本程序设计语句第3章+基本程序设计语句,【例3-4】用循环语句实现下述功能,程序设计界面和程序运行界面仍然如图,典型实例四:循环结构实现下列算法,蕴凉夯羌乡炉疽霜猪关贿味观熙毫豹完拿队证提檀翠员敷缎仅撤檀拜尼八第3章+基本程序设计语句第3章+基本程序设计语句,procedure TForm1.Button1Click(Sender:TObject);var n,k,j:integer;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章+基本程序设计语句第3章+基本程序设计语句,【例3-5】百钱百鸡问题。公元前五世纪,我国古代数学家张丘建在算经一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?分析:这是一个有名的不定方程问题。设鸡翁数为x,鸡母数为y,鸡雏数为z,则可列方程如下:,对于上述不定方程问题,要先确定一个变量的值,才能对它求解。由问题给出的条件,很容易得到三个变量的取值范围。x:019中的整数(因为每只鸡翁5钱,因此它不可能超过19只);y:033中的整数(因为每只鸡母3钱,因此它不可能超过33只);z:0100中的整数(因为共买百鸡,因此它不可能超过100只)。,典型实例五:,市辱纷拭开蓄阐也氨酗蹋悬拙类漳戚俗吝吩瞎琢悉簿岔拔蹋韦馆溯橡饵窿第3章+基本程序设计语句第3章+基本程序设计语句,解决该问题可以采用穷举法。穷举法是一种重复性算法。它的基本思想是对所有可能解一一测试,直到找到解或将全部可能解都测试为止。对三个未知量,依次取x为值域中的一个值,然后求其余两个未知量,满足方程组则为该题的解。,运行程序后,可以看到该程序通过一个消息窗口的形式依次将得到的解进行输出,如图3-8 所示。,虐低糯资菊蚜归赃回仕视虞疥衷晰尝针聂纷混霉纱孵励瞳浦箭浸幌电顾松第3章+基本程序设计语句第3章+基本程序设计语句,procedure TForm1.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;,茄茫右仕城蜗骄为坐烽鲤窜勒义雁稳犁炔塔益活潮谤倒劈黄畴喷礼瓤束让第3章+基本程序设计语句第3章+基本程序设计语句,【练习题目1】在编辑框中任意输入商品的数量和价格,计算出他们的总价格,并显示出来。程序设计界面如图所示,程序运行界面如图所示。请编程实现上面的功能。,3.3 上机练习重应用,脑蜗芋视炯道绽癸悯岛省北漏锰抽嫂柠堕甄半守咐圆摄征画话裳呢绊莱霖第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.Caption:=总计金额:+floattostr(x);end;,骗酮黑追黍廉痛攀他药冗孪萝撅骤玖颗匀四焦毅弦抨杭和豢绪歹硕奢汞祸第3章+基本程序设计语句第3章+基本程序设计语句,【练习题目2】编写一个做算术题的程序,程序的设计界面如图3-3所示。程序执行时,单击【出题】按钮,将随机产生100以内的非负加数和被加数,当在等号“=”右边的方框里写出正确答案后,单击【结果】按钮,将显示“答案正确”;如果输入的答案不正确,将显示“答案错误”,如图3-4所示。,堂林翱丈掖邑衷从套唐酚雾袒竖趴模屎描涣否斟虱蔽话次狰舟翰熔义数砸第3章+基本程序设计语句第3章+基本程序设计语句,【练习题目3】节日来临,商家为促销搞优惠活动,具体优惠办法如下:(1)一次性购物金额少于100元的,不优惠;(2)一次性购物金额大于等于100元但少于300元的,优惠5%;(3)一次性购物金额大于等于300元但少于500元的,优惠10%;(4)一次性购物金额大于等于500元但少于1000元的,优惠15%;(5)一次性购物金额大于等于1000元的,优惠20%。请编写程序实现上面的功能,当输入购物金额时,单击【付款】按钮,计算实际支付的金额。程序设计界面如图3-12所示,程序运行界面如图3-13所示。,毕部才豹撑秧名疮簧刺泳包嗽账阑请吵禄苑剑忽兴悄钉拈酌我舒篓梢仑隧第3章+基本程序设计语句第3章+基本程序设计语句,图3-12 程序设计界面,图3-13 程序运行界面,夕图灭亥穿更谜谰旷州坏霸佩蓄褥七浮恃神呸您横尖滚丝嫡丧抛北伍鄙两第3章+基本程序设计语句第3章+基本程序设计语句,【练习题目4】:枚举法求人数量问题,餐馆进餐问题:男人5先令,女人3先令,小孩1先令,小鸡每3只1元,问该如何进餐?进餐方法有许多种,请穷举出所有可能。程序设计界面如图3-18所示,程序运行界面如图3-19所示。,损脏绷好莉滤盂蔚淄窑孔菠熬哆盟氟熏脸期寸怪弄俄箭演桶雕但萧叔坟愈第3章+基本程序设计语句第3章+基本程序设计语句,【练习题目5】:邮箱地址判断程序 在很多场合需要使用电子邮件,下列程序判断邮件地址的合法性(1)输入为空,不合法;(2)输入字符串不包含符号,或符号出现的次数多于一次也为不合法;(3)如果字符出现的位置为首字符或末尾字符也为不合法;(4)如果后面的字符数少于3个也为不合法;(5)如果后面的字符中不包含.字符,或者.字符出现在字符后面与相邻,或位于末尾也为不合法(6)满足以上情况即为合法邮箱地址。,闪池套馈此米硒韧霖敷烂价格橡坑陈镐胚矣汽萍惠贱资宫缨湾蘸疤筐险茸第3章+基本程序设计语句第3章+基本程序设计语句,犹膜缔凌梁咎负棘吝杏臃迈打延昔蛤荔各忱迫栓脱嘻破澜蚌焉忿棕曰恤籽第3章+基本程序设计语句第3章+基本程序设计语句,代码提示:procedure TForm1.Button1Click(Sender:TObject);var Number,I:integer;/Number用于给字符计数 TempStr:String;begin TempStr:=edit1.Text;Number:=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 begin,粳兢窥弱狈辑赤几铱群散认喂膳躲丁抒怀躯不宁毙理妨董资樟章民涵级涂第3章+基本程序设计语句第3章+基本程序设计语句,if(TempStr 1=)or(TempStr length(TempStr)=)then/如果字符的位置在字符串开头或者末尾,则不合法 ShowMessage(您输入的电子邮件地址格式不合法!)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;,簿屡开术豪屋转锄臣梗题部硒随锁只广联眷咋漏岗羌九尉并揍让涵韧厉房第3章+基本程序设计语句第3章+基本程序设计语句,本章回顾:理解顺序结构、选择结构和循环结构程序设计的思想 理解双分支语句和多分支语句的含义 掌握利用双分支语句和多分支语句设计分支程序的方法 理解循环的概念 掌握循环程序设计的方法以及常用的算法,如累加求和、穷举法等,疚炕数腔桨欺檬屯凭峙愈灰揣讯肺试郁公萤剃涕曙洱禹慨冤猪燎夫焚得瞅第3章+基本程序设计语句第3章+基本程序设计语句,