Delphi--第三章_Delphi基本程序设计_第1页
Delphi--第三章_Delphi基本程序设计_第2页
Delphi--第三章_Delphi基本程序设计_第3页
Delphi--第三章_Delphi基本程序设计_第4页
Delphi--第三章_Delphi基本程序设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

4、n.else语句语句语法:语法: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

5、条件表达式条件表达式 then 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选择结构选择结构.2选择结构选择结构例:编写一个程序,用于判断输入的年份是不是闰年。例:编写一个程序,用于判断输入的年份是不是闰年。注:是闰年的条件必须满足下列条件之一:注:是闰年的条件必

6、须满足下列条件之一:(1) 能被能被4整除,但不能被整除,但不能被100整除的年份;整除的年份;(2) 能被能被400整除的年份。整除的年份。.2选择结构选择结构组件名组件名属属 性性属属 性性 值值Label1Label1CaptionCaption请输入年份:请输入年份:Label2Label2CaptionCaption显示结果显示结果Edit1Edit1TextTextButton1Button1CaptionCaption判断判断.2选择结构选择结构v嵌套过多的嵌套过多的if语句往往分不清语句往往分不清if与与else的匹配关系,影的匹配关系,影响程序的清晰,有碍阅读。对于多分支的结

7、构宜采用响程序的清晰,有碍阅读。对于多分支的结构宜采用case 语句。语句。其语法格式如下:其语法格式如下: case 选择表达式选择表达式 of 情况常量情况常量1: 语句语句1;情况常量情况常量2: 语句语句2; 情况常量情况常量n-1: 语句语句n-1; else 语句语句n; end; 语句语句n-1n-1计算选择表达式的值计算选择表达式的值inin常量常量1 1inin常量常量2 2inin常量常量n-1n-1语句语句1 1语句语句2 2语句语句n n.2选择结构选择结构注意注意: 的值必须是顺序类型(如整型、字符的值必须是顺序类型(如整型、字符型、布尔型、子界型等)。型、布尔型、子

8、界型等)。 中的值应该是中的值应该是 可能具有可能具有的值,各常量之间用逗号分隔。所有常量表中的值必的值,各常量之间用逗号分隔。所有常量表中的值必须互不相同。须互不相同。 可以是简单语句,也可以是复合语句。可以是简单语句,也可以是复合语句。例:教材例题。例:教材例题。例:修改成绩判断题,根据成绩按例:修改成绩判断题,根据成绩按“优秀优秀”、“良好良好”、“中等中等”、“及格及格”和和“不及格不及格”等输出。等输出。思考题:思考题:输入两个整数,分别代表年、月,输出该月的天数。输入两个整数,分别代表年、月,输出该月的天数。(提示:注意闰年的情况。)(提示:注意闰年的情况。).2循环结构循环结构v

9、循环语句可以使一个语句块(循环体)重复执行,它是实现循环语句可以使一个语句块(循环体)重复执行,它是实现复杂程序流程的基础之一。复杂程序流程的基础之一。Object PascalObject Pascal提供了三种循环提供了三种循环语句:语句:whilewhile语句语句、repeatrepeat语句语句、forfor语句语句。1. while1. while语句(语句(“当当”型)型)特点:特点:先判断,再循环先判断,再循环。其语法形式如下:其语法形式如下:whilewhile 条件表达式条件表达式 dodo 循环体循环体; ;注意注意:循环体若为复合语句要在:循环体若为复合语句要在begi

10、nbegin和和endend;之间。之间。例:求前例:求前n n个自然数的累加和。个自然数的累加和。例:用户输入任意字符串,若字符串中包含字例:用户输入任意字符串,若字符串中包含字符符00,则去掉,则去掉00后显示,并统计去掉后显示,并统计去掉00的次数。的次数。条件表达式条件表达式循环体语句(块)循环体语句(块)TF.2循环结构循环结构2. repeat语句(语句(“直到直到”型)型)特点:特点:先循环,后判断,最少循环先循环,后判断,最少循环1次次。其语法形式如下:其语法形式如下:repeatrepeat语句语句1;1;语句语句2;2;until until 条件表达式条件表达式; ;注意

11、注意:这里:这里不必不必把多个语把多个语句的循环体用句的循环体用beginbegin和和endend括起来。括起来。例:从例:从1 1开始累加,当累开始累加,当累加和刚刚大于加和刚刚大于7979时,显示时,显示最后一个被累加的数及累最后一个被累加的数及累加和。加和。 循环体语句(块)循环体语句(块)条件表达式条件表达式TF.2循环结构循环结构3.For3.For语句语句语法格式:语法格式:forfor 循环变量循环变量 = = 初值初值 toto 终值终值 dodo 循环体循环体 ;forfor 循环变量循环变量 = = 初值初值 downtodownto 终值终值 dodo 循环体循环体 ;

12、特点:特点:已知或可计算循环次数已知或可计算循环次数。和前两种循环不同,。和前两种循环不同,forfor循环循环中循环变量会随循环次数中循环变量会随循环次数自动递增自动递增1 1或递减或递减1 1,无需在循环体,无需在循环体内控制循环变量(循环次数在内控制循环变量(循环次数在进入循环前已确定进入循环前已确定,在循环体,在循环体内更改会出现编译错误)内更改会出现编译错误)注意注意:pascalpascal中中forfor循环本身无法控制步长(为循环本身无法控制步长(为1 1)For i:=For i:=初值初值 to to 终值终值 div step do div step do J:=J:=初

13、值初值+(i-1)+(i-1)* *step;step;.例:斐波那契(例:斐波那契(Fibonacci)数列问题)数列问题Fn=1 (n=2)作业:作业:1.输入一行字符,计算其中数字字符的个数输入一行字符,计算其中数字字符的个数2.计算表达式计算表达式1!+2!+3!+-+50!的值!的值3.按从大到小的次序,输出从按从大到小的次序,输出从1到到1000之间所有能同时之间所有能同时被被3和和7整除的数整除的数4.编写一个简略计算个人所得税的程序,收入在编写一个简略计算个人所得税的程序,收入在3000元元以下,交以下,交3%;收入在;收入在3000到到5000元(含元(含3000),交),交

14、6%,收入在收入在5000到到10000元(含元(含5000),交),交10%,10000元及以元及以上的,交上的,交15%。.2循环的嵌套循环的嵌套例:求小于给定数的素数。例:求小于给定数的素数。v对于有规律的复杂问题,嵌套是很好的解决方法。在多重循对于有规律的复杂问题,嵌套是很好的解决方法。在多重循环中,内循环和外循环是环中,内循环和外循环是相对的相对的,嵌套的层数是任意的,但,嵌套的层数是任意的,但算法的时间复杂度会随层数成指数级增长,程序算法的时间复杂度会随层数成指数级增长,程序可读性可读性也会也会降低,一般来说,不宜超过三层。降低,一般来说,不宜超过三层。例:求从例:求从1到指定数内

15、奇数的阶乘之和。到指定数内奇数的阶乘之和。例:例:“百钱百鸡:鸡翁一百钱百鸡:鸡翁一,值钱五值钱五,鸡母一鸡母一,值钱三值钱三,鸡雏三鸡雏三,值钱值钱一一,百钱买百鸡百钱买百鸡,问翁、母、雏各几何问翁、母、雏各几何? ”vbreak:强制退出循环,一般用在循环体内的:强制退出循环,一般用在循环体内的if结构中。结构中。vcontinue:短路循环。:短路循环。例:例:求不能被求不能被3 3整除的自然数的和(整除的自然数的和(S=1+2+4+5+7+NS=1+2+4+5+7+N),和),和不超过不超过10001000。显示。显示S S及及N N的最大值。的最大值。 .2过程与函数过程与函数vDe

16、lphiDelphi中,有许多预先定义好的子程序,它们统称为运行库。中,有许多预先定义好的子程序,它们统称为运行库。Object PascalObject Pascal也允许程序员自己定义子程序。子程序的引也允许程序员自己定义子程序。子程序的引入,降低了程序的复杂性。编写子程序还可以提高代码的入,降低了程序的复杂性。编写子程序还可以提高代码的重重用率用率。子程序实现的功能相对独立。如此,将大大提高程序。子程序实现的功能相对独立。如此,将大大提高程序编写和维护的效率。编写和维护的效率。vObject PascalObject Pascal的子程序分为两种:的子程序分为两种:过程过程(proced

17、ureprocedure)和)和函函数数(functionfunction)。)。过程和函数都是实现一定功能的语句块,过程和函数都是实现一定功能的语句块,可被其他模块调用,也可自身进行递归调用。可被其他模块调用,也可自身进行递归调用。过程和函数的过程和函数的区别主要在于过程本身没有区别主要在于过程本身没有返回值返回值,而函数有一个返回值。,而函数有一个返回值。.2过程过程v过程声明过程声明procedure procedure 过程名过程名( (形参表形参表);); beginbegin end;end;过程名过程名即过程标识符。即过程标识符。局部声明部分局部声明部分用于声明仅限于该过程内用于

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

19、在冒号之后声明函数号之后声明函数返回数据类型返回数据类型。局部声明局部声明部分与过程的局部部分与过程的局部声明部分类似。声明部分类似。函数名函数名本身作为本身作为一个特殊的变量一个特殊的变量,与系统预先定义的变量,与系统预先定义的变量ResultResult一样,可在函数体中接受赋值,一样,可在函数体中接受赋值,用来存储函数返回值用来存储函数返回值。例:编写求阶乘函数。例:编写求阶乘函数。.2参数参数过程或函数调用时,调用语句中传递给过程或函数的参过程或函数调用时,调用语句中传递给过程或函数的参数称为数称为实际参数实际参数,简称实参。过程和函数首部中声明的参数,简称实参。过程和函数首部中声明的

20、参数称为称为形式参数形式参数,简称形参。实参的个数、数据类型和顺序必,简称形参。实参的个数、数据类型和顺序必须与形式参数一一对应,若出现数据类型不符,编译器会将须与形式参数一一对应,若出现数据类型不符,编译器会将实参的数据类型进行转换(如整型到实型),多个参数之间实参的数据类型进行转换(如整型到实型),多个参数之间用逗号隔开。用逗号隔开。形式参数,以及过程和函数局部声明的各种标识符均为形式参数,以及过程和函数局部声明的各种标识符均为局部局部的,即它们的的,即它们的作用范围只在该过程或函数中作用范围只在该过程或函数中,在局部范,在局部范围内有效。围内有效。.2参数参数形式参数分为三类:形式参数分

21、为三类:值参数值参数(简称值参)、(简称值参)、常量参数常量参数和和变量参数变量参数(简称变参)(简称变参) 。三者在声明时的修饰和实参的区。三者在声明时的修饰和实参的区别分述如下:别分述如下: 值参数值参数声明时,形参的前面无任何修饰,值参传递声明时,形参的前面无任何修饰,值参传递的是一个值。调用时,实参的值拷贝给形参,的是一个值。调用时,实参的值拷贝给形参,形参值的改变形参值的改变不影响其对应实参的值不影响其对应实参的值。常量参数常量参数声明时,形参的前面用保留字声明时,形参的前面用保留字constconst修饰。修饰。常量参数的传递形式本质上类似于值参,但在子程序中,它常量参数的传递形式

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

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

24、重载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); / FillArray(MyArray,10); /

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

26、d;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; over

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论