




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,第三章Delphi基本程序设计,.,本章知识点和基本要求,顺序结构选择结构循环结构过程与函数掌握顺序结构、选择结构、循环结构的使用方法掌握过程与函数的定义和使用规则理解重载的含义。,.,顺序结构,顺序结构是程序设计中最简单、最常用的基本结构。在该结构中,各操作块(简称块,对应于程序中的“程序段”)按照出现的先后顺序依次执行。它是任何程序的主体基本结构,即使在选择结构或循环结构中,也常以顺序结构作为其子结构。,.,选择结构,分支语句根据用户输入或程序运行的中间结果来确定转向执行哪个分支流程。ObjectPascal提供的if语句和case语句用来实现程序的分支结构。if语句(1)if.then语句语法:if表达式then语句注意:1、复合表达式书写注意运算符的运算优先级。每一个表达式用括号括起。2、语句若为复合语句,注意使用begin和end。例:输入长和宽,计算矩形面积和周长。,.,选择结构,(2)if.then.else语句语法:if表达式then语句1else语句2;注意:1、在语句1末尾(else之前)不能加分号。2、else的配对。If条件表达式thenif条件表达式then语句11Else语句12若else要与第一个if配对,则应改为If条件表达式thenbeginif条件表达式then语句11endElse语句12,.,例:varx,y:integer;beginx:=5;y:=100ifx10theny:=200elsey:=300;write(y)end;,例:分段函数例:将任意输入的三整数按从大到小顺序显示,.,选择结构,例:编写VCL程序,界面及功能要求如图functionInputBox(constACaption:string,constAPrompt:string,constADefault:string):string;procedureShowMessage(constMsg:string);,.,选择结构,例:编写一个程序,用于判断输入的年份是不是闰年。注:是闰年的条件必须满足下列条件之一:(1)能被4整除,但不能被100整除的年份;(2)能被400整除的年份。,.,选择结构,.,选择结构,嵌套过多的if语句往往分不清if与else的匹配关系,影响程序的清晰,有碍阅读。对于多分支的结构宜采用case语句。其语法格式如下:case选择表达式of情况常量1:语句1;情况常量2:语句2;情况常量n-1:语句n-1;else语句n;end;,.,选择结构,注意:的值必须是顺序类型(如整型、字符型、布尔型、子界型等)。中的值应该是可能具有的值,各常量之间用逗号分隔。所有常量表中的值必须互不相同。可以是简单语句,也可以是复合语句。例:教材例题。例:修改成绩判断题,根据成绩按“优秀”、“良好”、“中等”、“及格”和“不及格”等输出。思考题:输入两个整数,分别代表年、月,输出该月的天数。(提示:注意闰年的情况。),.,循环结构,循环语句可以使一个语句块(循环体)重复执行,它是实现复杂程序流程的基础之一。ObjectPascal提供了三种循环语句:while语句、repeat语句、for语句。,1.while语句(“当”型)特点:先判断,再循环。其语法形式如下:while条件表达式do循环体;注意:循环体若为复合语句要在begin和end;之间。例:求前n个自然数的累加和。例:用户输入任意字符串,若字符串中包含字符0,则去掉0后显示,并统计去掉0的次数。,.,循环结构,2.repeat语句(“直到”型)特点:先循环,后判断,最少循环1次。其语法形式如下:,repeat语句1;语句2;until条件表达式;注意:这里不必把多个语句的循环体用begin和end括起来。,例:从1开始累加,当累加和刚刚大于79时,显示最后一个被累加的数及累加和。,.,循环结构,3.For语句语法格式:for循环变量=初值to终值do循环体;for循环变量=初值downto终值do循环体;特点:已知或可计算循环次数。和前两种循环不同,for循环中循环变量会随循环次数自动递增1或递减1,无需在循环体内控制循环变量(循环次数在进入循环前已确定,在循环体内更改会出现编译错误)注意:pascal中for循环本身无法控制步长(为1)Fori:=初值to终值divstepdoJ:=初值+(i-1)*step;,.,例:斐波那契(Fibonacci)数列问题,作业:1.输入一行字符,计算其中数字字符的个数2.计算表达式1!+2!+3!+-+50!的值3.按从大到小的次序,输出从1到1000之间所有能同时被3和7整除的数4.编写一个简略计算个人所得税的程序,收入在3000元以下,交3%;收入在3000到5000元(含3000),交6%,收入在5000到10000元(含5000),交10%,10000元及以上的,交15%。,.,循环的嵌套,例:求小于给定数的素数。对于有规律的复杂问题,嵌套是很好的解决方法。在多重循环中,内循环和外循环是相对的,嵌套的层数是任意的,但算法的时间复杂度会随层数成指数级增长,程序可读性也会降低,一般来说,不宜超过三层。例:求从1到指定数内奇数的阶乘之和。例:“百钱百鸡:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?”break:强制退出循环,一般用在循环体内的if结构中。continue:短路循环。例:求不能被3整除的自然数的和(S=1+2+4+5+7+N),和不超过1000。显示S及N的最大值。,.,过程与函数,Delphi中,有许多预先定义好的子程序,它们统称为运行库。ObjectPascal也允许程序员自己定义子程序。子程序的引入,降低了程序的复杂性。编写子程序还可以提高代码的重用率。子程序实现的功能相对独立。如此,将大大提高程序编写和维护的效率。ObjectPascal的子程序分为两种:过程(procedure)和函数(function)。过程和函数都是实现一定功能的语句块,可被其他模块调用,也可自身进行递归调用。过程和函数的区别主要在于过程本身没有返回值,而函数有一个返回值。,.,过程,过程声明procedure过程名(形参表);beginend;过程名即过程标识符。局部声明部分用于声明仅限于该过程内引用的常量、自定义数据类型、变量、过程和函数等。参数表内声明参数的个数和类型,同类型参数之间以逗号分隔,不同类型参数之间以分号分隔。例:编写求阶乘过程。,.,函数,函数声明function函数名(形参表):返回数据类型;beginend;函数首部除了声明函数的标识符、形式参数表以外,必须在冒号之后声明函数返回数据类型。局部声明部分与过程的局部声明部分类似。函数名本身作为一个特殊的变量,与系统预先定义的变量Result一样,可在函数体中接受赋值,用来存储函数返回值。例:编写求阶乘函数。,.,参数,过程或函数调用时,调用语句中传递给过程或函数的参数称为实际参数,简称实参。过程和函数首部中声明的参数称为形式参数,简称形参。实参的个数、数据类型和顺序必须与形式参数一一对应,若出现数据类型不符,编译器会将实参的数据类型进行转换(如整型到实型),多个参数之间用逗号隔开。形式参数,以及过程和函数局部声明的各种标识符均为局部的,即它们的作用范围只在该过程或函数中,在局部范围内有效。,.,参数,形式参数分为三类:值参数(简称值参)、常量参数和变量参数(简称变参)。三者在声明时的修饰和实参的区别分述如下:值参数声明时,形参的前面无任何修饰,值参传递的是一个值。调用时,实参的值拷贝给形参,形参值的改变不影响其对应实参的值。常量参数声明时,形参的前面用保留字const修饰。常量参数的传递形式本质上类似于值参,但在子程序中,它相当于局部的类型常量,不能对常量参数进行赋值。常量参数的使用可以防止子程序对实参的修改。,.,参数,变量参数声明时,形参的前面用保留字var修饰。变参传递的是一个变量的地址,即实参把地址传递给变参,这样变参和实参指向的是同一地址空间,因此,在过程和函数中对变参的修改,直接影响实参。显然可以利用变参为被调子程序(函数或过程)“传递”数据给主调程序。在函数或过程定义中,可以给值参数设置一个默认值。在调用子程序(过程或函数)时,如果没有提供相应的实参,那么子程序即以默认值作为初值。注意:参数的默认值只能从参数表的右边开始默认,且中间不能跳跃,此外,变参不能设置默认值。例:见下页,.,函数和过程的重载,procedureFillArray(a:arrayofInteger;value:Integer=0);值参value是默认参数,缺省值为0,可以有如下两种调用方式:FillArray(MyArray);/参数value使用缺省值0FillArray(MyArray,10);/参数value指值10函数和过程的重载过程和函数重载是指定义多个名称相同,而参数列表不同的过程和函数。编译器依据调用时实参表中参数个数和类型,自动匹配一个重载的过程或函数。重载过程和函数首部句尾应使用保留字overload修饰。例:见下页,.,过程和函数的重载,functionadd(a,b:integer):integer;overload;beginresult:=a+b;end;functionadd(a,b:real):real;overload;beginresult:=a+b;end;functionadd(a,b:string):string;overload;beginresult:=a+b;end;,.,函数和过程的重载,重载过程或函数要慎用默认参数,因为可能会导致二义性错误。如:functionf1(a:integer;b:integer=10);overload;beginresult:=a+b;end;functionf1(a:integer):overload;beginresult:=a*a;end;,.,过程和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025甘肃金昌市人力资源和社会保障局招聘公益性岗位人员1人考前自测高频考点模拟试题附答案详解(突破训练)
- 2025年吉林省农业种植(玉米)买卖合同书
- 2025保健品销售合同范本参考
- 2025吉林白城市暨洮北区人才交流中心就业见习岗位和见习人员征集模拟试卷及完整答案详解1套
- 2025江苏省退役军人事务厅直属优抚医院招聘12人模拟试卷及答案详解(网校专用)
- 2025标准企业租赁合同范本:租赁协议模板
- 2025年三明市供电服务有限公司招聘61人考前自测高频考点模拟试题及答案详解(历年真题)
- 2025年湖南长沙天心区招聘32名勤务协助人员和体能测评的考前自测高频考点模拟试题及参考答案详解1套
- 衡阳初一考试题库及答案
- 安全教育培训会议通知课件
- 隧道施工应急预案方案
- 植物鉴赏课件
- 2025云南丽江市公安局警务辅助人员招聘29人考试参考题库及答案解析
- 压实度试验课件
- 配怀母猪饲养管理
- 2025-2026学年赣美版(2024)小学美术二年级上册(全册)教学设计(附目录P126)
- 林业调查安全培训
- 流感疫苗接种课件
- 2025至2030中国氧化钪行业需求状况及未来趋势前景研判报告
- 社会科学研究方法 课件 第二章 研究的类型
- 奇瑞试乘试驾协议书模板
评论
0/150
提交评论