实训5
Delphi的语句
[实训目的]实训目的]◆掌握双分支
程序设计语句:if…then…else;◆掌握多分支程序设计语句:case…of;◆掌握while、repeat和for三种循环语句的使用;◆掌握break和continue语句的使用;◆掌握循环条件的控制方法。语句应用______计算优惠价5.1If语句与Case语句应用___计算优惠价实训要求][实训要求]某百货公司为了促销,采用购物打折扣的优惠办法,每位顾客一次购物:⑴在1000元以上者,按九五折优惠。⑵在2000元以上者,按九折优惠。⑶在3000元以上者,按八五折优惠。⑷在5000元以上者,按八折优惠。编写程序,输入购物款数,计算并输出优惠价(如图5.1)。
图5.1计算优惠价[要点说明]要点说明]⑴分析题意,总结出优惠付款公式。设购物款数为x元,优惠价为y元,优惠付款公式为:
⑵将购物款数必须转换为整数。由于购物款数x是一个实数,必须将其转换为整数(顺序类型)。为此,取表达式:trunc(x/1000)。这样,当x落在[0,1000],[1000,2000],[2000,3000],[3000,4000],[4000,5000]等区间时,表达式的值正好为整数值0,1,2,3,4。⑶据此分析画出流程图如图5.2所示。
图5.2计算优惠价的流程图[参考代码]参考代码]代码⑴编写“开始计算”按钮事件(OnClick)过程的程序代码。procedureTForm1.Button1Click(Sender:TObject);varx,y:real;beginifedit1.Text=''thenedit1.Text:='0';//增加的语句x:=strtofl
oat(edit1.Text);casetrunc(x/1000)of0:y:=x;1:y:=0.95*x;2:y:=0.9*x;3,4:y:=0.85*x;elsey:=0.8*x;end;panel1.caption:=format('优惠价为:%8.2f元',[y]);edit1.SelStart:=0;edit1.SelLength:=length(edit1.text);end;⑵编写Edit1的OnKeyPress事件)过程的程序代码。为了防止编辑框Edit1中输入非法字符,可以增加Edit1的OnKeyPress事件代码:procedureTForm1.Edit1KeyPress(Sender:TObject;varKey:Char);varl:boolean;beginl:=(key<#48)or(key>#57);iflthenkey:=#0;end;
循环语句应用___百钱买百鸡___百钱买5.2循环语句应用___百钱买百鸡实训要求][实训要求]我国古代著名的“百钱买百鸡”:每只公鸡值5元,每只母鸡值3元,三只小鸡值1元,用100元买100只鸡,问公鸡、母鸡和小鸡各买几只?单击“开始”按钮,将计算结果写入Memol组件,单击“清除”按钮,清除Memol组件中的计算结果。
图5.3百钱买百鸡要点说明][要点说明]⑴分析题意,列出方程组。设公鸡x只,母鸡y只,小鸡z只。依题意,列出以下方程组:x+y+z=1005x+3y+z/3=100由于2个方程式中有3个未知数,属于不定方程,无法直接求解。可以用“穷举法”来进行“试根”,即将各种可能的x、y、z组合一一进行测试,将符合条件者输出即可。⑵据此分析画出流程图如图5.4所示。考虑到公鸡最多只能买19只,母鸡最多买33只,画出流程图如图5.4所示。
图5.4流程图[参考代码]参考代码]代码⑴编写“开始”按钮事件(OnClick)过程的程序代码。procedureTForm1.Button1Click(Sender:TObject);varx,y,z:integer;p:string;begin
Memo1.Clear;forx:=0To19dofory:=0To33dobeginz:=100-x-y;if5*x+3*y+z/3=100Thenbeginp:=Format('%3d%3d%3d',[x,y,z]);memo1.Lines.Add(p);end;end;end;⑵编写“清除”按钮事件(OnClick)过程的程序代码。procedureTForm1.Button2Click(Sender:TObject);beginMemo1.Clear;end;思考与练习1.语句中双分支语句的语法格式是怎样的?如何利用双分支语句实现双分支和多分支程If序设计的功能?2.怎样利用Case…of语句实现多分支程序设计功能?这种语句有何局限性?3.While语句,Repeat语句和For语句在设置循环条件时有何不同?4.Break语句和Continue语句通
常用于什么语句之后?它们有什么区别?