Delphi-第三章-Delphi基本程序设计.ppt

上传人:wuy****n92 文档编号:70740882 上传时间:2023-01-27 格式:PPT 页数:27 大小:399KB
返回 下载 相关 举报
Delphi-第三章-Delphi基本程序设计.ppt_第1页
第1页 / 共27页
Delphi-第三章-Delphi基本程序设计.ppt_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《Delphi-第三章-Delphi基本程序设计.ppt》由会员分享,可在线阅读,更多相关《Delphi-第三章-Delphi基本程序设计.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第三章第三章 DelphiDelphi基本程序设计基本程序设计2本章知识点和基本要求本章知识点和基本要求顺序结构顺序结构选择结构选择结构循环结构循环结构过程与函数过程与函数J掌握顺序结构、选择结构、循环结构的使用方法掌握顺序结构、选择结构、循环结构的使用方法J掌握过程与函数的定义和使用规则掌握过程与函数的定义和使用规则J理解重载的含义。理解重载的含义。2顺序结构顺序结构v顺序结构是程序设计中最简单、最顺序结构是程序设计中最简单、最常用的基本结构。在该结构中,各常用的基本结构。在该结构中,各操作块(简称块,对应于程序中的操作块(简称块,对应于程序中的“程序段程序段”)按照出现的先后顺序)按照出现

2、的先后顺序依次执行。它是任何程序的主体基依次执行。它是任何程序的主体基本结构,即使在选择结构或循环结本结构,即使在选择结构或循环结构中,也常以顺序结构作为其子结构中,也常以顺序结构作为其子结构。构。语句语句n-1n-1语句语句1 1语句语句2 2语句语句n n开始开始结束结束2选择结构选择结构分分支支语语句句根根据据用用户户输输入入或或程程序序运运行行的的中中间间结结果果来来确确定定转转向向执执行行哪哪个个分分支支流流程程。Object Object PascalPascal提提供供的的ifif语语句句和和casecase语句用来实现程序的分支结构。语句用来实现程序的分支结构。vifif语句语

3、句 (1)if.then(1)if.then 语句语句语法:语法:if if 表达式表达式 thenthen 语句语句 注意注意:1 1、复合表达式书写注意、复合表达式书写注意运算符的运算优先级。每一个运算符的运算优先级。每一个表达式用括号括起。表达式用括号括起。2 2、语句若为复合语句,、语句若为复合语句,注意使用注意使用beginbegin和和endend。例:输入长和宽,计算矩形面积和周长。例:输入长和宽,计算矩形面积和周长。语句(块)语句(块)条件表达式条件表达式TrueTrueFalseFalse2选择结构选择结构(2)if.then.else(2)if.then.else语句语句语

4、法:语法:ifif 表达式表达式 thenthen 语句语句1 1 elseelse 语句语句2 2;注意注意:1 1、在语句在语句1 1末尾(末尾(elseelse之前)不能加分号。之前)不能加分号。2 2、elseelse的配对。的配对。If If 条件表达式条件表达式 then if then if 条件表达式条件表达式 then then 语句语句11 11 Else Else 语句语句1212若若elseelse要与第一个要与第一个ifif配对,则应改为配对,则应改为If If 条件表达式条件表达式 then then beginbegin if if 条件表达式条件表达式 then

5、 then 语句语句11 11 endendElse Else 语句语句1212 条件表达式语句A语句BT TF F例:例:var x,y:integer;beginx:=5;y:=100if x10 then y:=200else y:=300;write(y)end;例:分段函数例:分段函数例:将任意输入的三例:将任意输入的三整数按从大到小顺序整数按从大到小顺序显示显示2选择结构选择结构例:编写例:编写VCL程序,界面及功能要求如图程序,界面及功能要求如图function InputBox(const ACaption:string,const APrompt:string,const A

6、Default:string):string;procedure ShowMessage(const Msg:string);2选择结构选择结构例:编写一个程序,用于判断输入的年份是不是闰年。例:编写一个程序,用于判断输入的年份是不是闰年。注:是闰年的条件必须满足下列条件之一:注:是闰年的条件必须满足下列条件之一:(1)能被能被4整除,但不能被整除,但不能被100整除的年份;整除的年份;(2)能被能被400整除的年份。整除的年份。2选择结构选择结构组件名组件名属属 性性属属 性性 值值Label1Label1CaptionCaption请输入年份:请输入年份:Label2Label2Capti

7、onCaption显示结果显示结果Edit1Edit1TextTextButton1Button1CaptionCaption判断判断2选择结构选择结构v嵌套过多的嵌套过多的if语句往往分不清语句往往分不清if与与else的匹配关系,影的匹配关系,影响程序的清晰,有碍阅读。对于多分支的结构宜采用响程序的清晰,有碍阅读。对于多分支的结构宜采用case 语句。语句。其语法格式如下:其语法格式如下:case 选择表达式选择表达式 of 情况常量情况常量1:语句语句1;情况常量情况常量2:语句语句2;情况常量情况常量n-1:语句语句n-1;else 语句语句n;end;语句语句n-1n-1计算选择表达

8、式的值计算选择表达式的值inin常量常量1 1inin常量常量2 2inin常量常量n-1n-1语句语句1 1语句语句2 2语句语句n n2选择结构选择结构注意注意:的值必须是顺序类型(如整型、字符的值必须是顺序类型(如整型、字符型、布尔型、子界型等)。型、布尔型、子界型等)。中的值应该是中的值应该是 可能具有可能具有的值,各常量之间用逗号分隔。所有常量表中的值必的值,各常量之间用逗号分隔。所有常量表中的值必须互不相同。须互不相同。可以是简单语句,也可以是复合语句。可以是简单语句,也可以是复合语句。例:教材例题。例:教材例题。例:修改成绩判断题,根据成绩按例:修改成绩判断题,根据成绩按“优秀优

9、秀”、“良好良好”、“中等中等”、“及格及格”和和“不及格不及格”等输出。等输出。思考题:思考题:输入两个整数,分别代表年、月,输出该月的天数。输入两个整数,分别代表年、月,输出该月的天数。(提示:注意闰年的情况。)(提示:注意闰年的情况。)2循环结构循环结构v循环语句可以使一个语句块(循环体)重复执行,它是实现循环语句可以使一个语句块(循环体)重复执行,它是实现复杂程序流程的基础之一。复杂程序流程的基础之一。Object PascalObject Pascal提供了三种循环提供了三种循环语句:语句:whilewhile语句语句、repeatrepeat语句语句、forfor语句语句。1.wh

10、ile1.while语句(语句(“当当”型)型)特点:特点:先判断,再循环先判断,再循环。其语法形式如下:其语法形式如下:whilewhile 条件表达式条件表达式 dodo 循环体循环体;注注意意:循循环环体体若若为为复复合合语语句句要要在在beginbegin和和endend;之间。之间。例:求前例:求前n n个自然数的累加和。个自然数的累加和。例例:用用户户输输入入任任意意字字符符串串,若若字字符符串串中中包包含含字字符符00,则则去去掉掉00后后显显示示,并并统统计计去去掉掉00的次数。的次数。条件表达式条件表达式循环体语句(块)循环体语句(块)TF2循环结构循环结构2.repeat语

11、句(语句(“直到直到”型)型)特点:特点:先循环,后判断,最少循环先循环,后判断,最少循环1次次。其语法形式如下:其语法形式如下:repeatrepeat语句语句1;1;语句语句2;2;until until 条件表达式条件表达式;注注意意:这这里里不不必必把把多多个个语语句句的的循循环环体体用用beginbegin和和endend括括起起来。来。例例:从从1 1开开始始累累加加,当当累累加加和和刚刚刚刚大大于于7979时时,显显示示最最后后一一个个被被累累加加的的数数及及累累加和。加和。循环体语句(块)循环体语句(块)条件表达式条件表达式TF2循环结构循环结构3.For3.For语句语句语法

12、格式:语法格式:forfor 循环变量循环变量 =初值初值 toto 终值终值 dodo 循环体循环体 ;forfor 循环变量循环变量=初值初值 downtodownto 终值终值 dodo 循环体循环体 ;特点:特点:已知或可计算循环次数已知或可计算循环次数。和前两种循环不同,。和前两种循环不同,forfor循环循环中循环变量会随循环次数中循环变量会随循环次数自动递增自动递增1 1或递减或递减1 1,无需在循环体,无需在循环体内控制循环变量(循环次数在内控制循环变量(循环次数在进入循环前已确定进入循环前已确定,在循环体,在循环体内更改会出现编译错误)内更改会出现编译错误)注意注意:pasc

13、alpascal中中forfor循环本身无法控制步长(为循环本身无法控制步长(为1 1)For i:=For i:=初值初值 to to 终值终值 div step do div step do J:=J:=初值初值+(i-1)*step;+(i-1)*step;例:斐波那契(例:斐波那契(Fibonacci)数列问题)数列问题Fn=1 (n=2)作业:作业:1.输入一行字符,计算其中数字字符的个数输入一行字符,计算其中数字字符的个数2.计算表达式计算表达式1!+2!+3!+-+50!的值!的值3.按从大到小的次序,输出从按从大到小的次序,输出从1到到1000之间所有能同时之间所有能同时被被3

14、和和7整除的数整除的数4.编写一个简略计算个人所得税的程序,收入在编写一个简略计算个人所得税的程序,收入在3000元元以下,交以下,交3%;收入在;收入在3000到到5000元(含元(含3000),交),交6%,收入在收入在5000到到10000元(含元(含5000),交),交10%,10000元及以元及以上的,交上的,交15%。2循环的嵌套循环的嵌套例:求小于给定数的素数。例:求小于给定数的素数。v对于有规律的复杂问题,嵌套是很好的解决方法。在多重循对于有规律的复杂问题,嵌套是很好的解决方法。在多重循环中,内循环和外循环是环中,内循环和外循环是相对的相对的,嵌套的层数是任意的,但,嵌套的层数

15、是任意的,但算法的时间复杂度会随层数成指数级增长,程序算法的时间复杂度会随层数成指数级增长,程序可读性可读性也会也会降低,一般来说,不宜超过三层。降低,一般来说,不宜超过三层。例:求从例:求从1到指定数内奇数的阶乘之和。到指定数内奇数的阶乘之和。例:例:“百钱百鸡:鸡翁一百钱百鸡:鸡翁一,值钱五值钱五,鸡母一鸡母一,值钱三值钱三,鸡雏三鸡雏三,值值钱一钱一,百钱买百鸡百钱买百鸡,问翁、母、雏各几何问翁、母、雏各几何?”vbreak:强制退出循环,一般用在循环体内的:强制退出循环,一般用在循环体内的if结构中。结构中。vcontinue:短路循环。:短路循环。例:例:求不能被求不能被3 3整除的

16、自然数的和(整除的自然数的和(S=1+2+4+5+7+NS=1+2+4+5+7+N),和),和不超过不超过10001000。显示。显示S S及及N N的最大值。的最大值。2过程与函数过程与函数vDelphiDelphi中,有许多预先定义好的子程序,它们统称为运行库。中,有许多预先定义好的子程序,它们统称为运行库。Object PascalObject Pascal也允许程序员自己定义子程序。子程序的引也允许程序员自己定义子程序。子程序的引入,降低了程序的复杂性。编写子程序还可以提高代码的入,降低了程序的复杂性。编写子程序还可以提高代码的重重用率用率。子程序实现的功能相对独立。如此,将大大提高程

17、序。子程序实现的功能相对独立。如此,将大大提高程序编写和维护的效率。编写和维护的效率。vObject PascalObject Pascal的子程序分为两种:的子程序分为两种:过程过程(procedureprocedure)和)和函函数数(functionfunction)。)。过程和函数都是实现一定功能的语句块,过程和函数都是实现一定功能的语句块,可被其他模块调用,也可自身进行递归调用。可被其他模块调用,也可自身进行递归调用。过程和函数的过程和函数的区别主要在于过程本身没有区别主要在于过程本身没有返回值返回值,而函数有一个返回值。,而函数有一个返回值。2过程过程v过程声明过程声明proced

18、ure procedure 过程名过程名(形参表形参表););beginbegin end;end;过过程程名名即即过过程程标标识识符符。局局部部声声明明部部分分用用于于声声明明仅仅限限于于该该过过程程内内引引用用的的常常量量、自自定定义义数数据据类类型型、变变量量、过过程程和和函函数数等等。参参数数表表内内声声明明参参数数的的个个数数和和类类型型,同同类类型型参参数数之之间间以以逗逗号号分分隔隔,不同类型参数之间以不同类型参数之间以分号分号分隔。分隔。例:编写求阶乘过程。例:编写求阶乘过程。2函数函数v函数声明函数声明function function 函数名函数名(形参表形参表):):返回

19、数据类型返回数据类型;beginbegin end;end;函函数数首首部部除除了了声声明明函函数数的的标标识识符符、形形式式参参数数表表以以外外,必必须须在在冒冒号号之之后后声声明明函函数数返返回回数数据据类类型型。局局部部声声明明部部分分与与过过程程的的局局部部声明部分类似。声明部分类似。函函数数名名本本身身作作为为一一个个特特殊殊的的变变量量,与与系系统统预预先先定定义义的的变变量量ResultResult一样,可在函数体中接受赋值,一样,可在函数体中接受赋值,用来存储函数返回值用来存储函数返回值。例:编写求阶乘函数。例:编写求阶乘函数。2参数参数过过程程或或函函数数调调用用时时,调调用

20、用语语句句中中传传递递给给过过程程或或函函数数的的参参数数称称为为实实际际参参数数,简简称称实实参参。过过程程和和函函数数首首部部中中声声明明的的参参数数称称为为形形式式参参数数,简简称称形形参参。实实参参的的个个数数、数数据据类类型型和和顺顺序序必必须须与与形形式式参参数数一一一一对对应应,若若出出现现数数据据类类型型不不符符,编编译译器器会会将将实实参参的的数数据据类类型型进进行行转转换换(如如整整型型到到实实型型),多多个个参参数数之之间间用逗号隔开。用逗号隔开。形形式式参参数数,以以及及过过程程和和函函数数局局部部声声明明的的各各种种标标识识符符均均为为局局部部的的,即即它它们们的的作

21、作用用范范围围只只在在该该过过程程或或函函数数中中,在在局局部部范范围内有效。围内有效。2参数参数形式参数分为三类:形式参数分为三类:值参数值参数(简称值参)、(简称值参)、常量参数常量参数和和变量参数变量参数(简称变参)(简称变参)。三者在声明时的修饰和实参的区。三者在声明时的修饰和实参的区别分述如下:别分述如下:值值参参数数声声明明时时,形形参参的的前前面面无无任任何何修修饰饰,值值参参传传递递的的是是一一个个值值。调调用用时时,实实参参的的值值拷拷贝贝给给形形参参,形形参参值值的的改改变变不影响其对应实参的值不影响其对应实参的值。常常量量参参数数声声明明时时,形形参参的的前前面面用用保保

22、留留字字constconst修修饰饰。常常量量参参数数的的传传递递形形式式本本质质上上类类似似于于值值参参,但但在在子子程程序序中中,它它相相当当于于局局部部的的类类型型常常量量,不不能能对对常常量量参参数数进进行行赋赋值值。常常量量参参数的使用可以防止子程序对实参的修改。数的使用可以防止子程序对实参的修改。2参数参数变变量量参参数数声声明明时时,形形参参的的前前面面用用保保留留字字varvar修修饰饰。变变参参传传递递的的是是一一个个变变量量的的地地址址,即即实实参参把把地地址址传传递递给给变变参参,这这样样变变参参和和实实参参指指向向的的是是同同一一地地址址空空间间,因因此此,在在过过程程

23、和和函函数数中中对对变变参参的的修修改改,直直接接影影响响实实参参。显显然然可可以以利利用用变变参参为为被被调调子程序(函数或过程)子程序(函数或过程)“传递传递”数据给主调程序。数据给主调程序。在在函函数数或或过过程程定定义义中中,可可以以给给值值参参数数设设置置一一个个默默认认值值。在在调调用用子子程程序序(过过程程或或函函数数)时时,如如果果没没有有提提供供相相应应的的实实参参,那那么么子子程程序序即即以以默默认认值值作作为为初初值值。注注意意:参参数数的的默默认认值值只只能能从从参参数数表表的的右右边边开开始始默默认认,且且中中间间不不能能跳跳跃跃,此此外外,变变参参不不能能设置默认值

24、。设置默认值。例:见下页例:见下页2函数和过程的重载函数和过程的重载procedure FillArray(a:array of Integer;procedure FillArray(a:array of Integer;value:Integer=0);value:Integer=0);值值参参valuevalue是是默默认认参参数数,缺缺省省值值为为0 0,可可以以有有如如下下两两种种调调用用方方式:式:FillArray(MyArray);/FillArray(MyArray);/参数参数valuevalue使用缺省值使用缺省值0 0FillArray(MyArray,10);/Fil

25、lArray(MyArray,10);/参数参数valuevalue指值指值1010v函数和过程的重载函数和过程的重载过程和函数重载是指定义多个名称相同,而参数列表不过程和函数重载是指定义多个名称相同,而参数列表不同的过程和函数。编译器依据调用时实参表中同的过程和函数。编译器依据调用时实参表中参数个数和类参数个数和类型型,自动匹配一个重载的过程或函数。重载过程和函数首部,自动匹配一个重载的过程或函数。重载过程和函数首部句尾应使用保留字句尾应使用保留字overloadoverload修饰。例:见下页修饰。例:见下页2过程和函数的重载过程和函数的重载function add(a,b:integer

26、):integer;overload;function add(a,b:integer):integer;overload;beginbegin result:=a+b;result:=a+b;end;end;function add(a,b:real):real;overload;function add(a,b:real):real;overload;beginbegin result:=a+b;result:=a+b;end;end;function add(a,b:string):string;overload;function add(a,b:string):string;overl

27、oad;beginbegin result:=a+b;result:=a+b;end;end;2函数和过程的重载函数和过程的重载重载过程或函数要慎用默认参数,因为可能会导致重载过程或函数要慎用默认参数,因为可能会导致二义二义性性错误。如:错误。如:function f1(a:integer;b:integer=10);overload;function f1(a:integer;b:integer=10);overload;beginbegin result:=a+b;result:=a+b;end;end;function f1(a:integer):overload;function f1

28、(a:integer):overload;beginbegin result:=a*a;result:=a*a;end;end;2过程和函数的递归调用过程和函数的递归调用递归调用递归调用是指是指子程序子程序(函数或过程)(函数或过程)调用子程序自身调用子程序自身。递归在解决某些问题时是十分有用的方法,它可以使某些看递归在解决某些问题时是十分有用的方法,它可以使某些看起来相当难的问题变得容易解决,写出的程序较简短,容易起来相当难的问题变得容易解决,写出的程序较简短,容易理解,但递归的程序执行效率比较低。理解,但递归的程序执行效率比较低。例:求例:求s=1+2+3+ns=1+2+3+n。这个求和问题可以这样理解:这个求和问题可以这样理解:1 1 当当n=1n=1时时f(n)=f(n)=f(n-1)+n f(n-1)+n 当当n1n1时时在如:阶乘在如:阶乘 1 1 当当n=1n=1时时f(n)=f(n)=f(n-1)*n f(n-1)*n 当当n1n1时时例:用递归调用的方法,编写函数,在屏幕上显示给定层数图例:用递归调用的方法,编写函数,在屏幕上显示给定层数图形。如形。如xh(10)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁