下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章函数和程序,第1节函数第2节程序第3节递归算法第4节递归,以前在编程中学习了三种茄子基本控制结构(顺序、分支、循环)。可以使用它们制作任何程序。但是,应用程序还经常使用子例程结构。一般来说,在编程中,我们会发现程序的其他部分中有一些节目片段重复。此时,这种节目段是一个相对独立的整体,可以用一个标识符命名。在所有程序中出现节目段的地方,只需简单地写下该标识符。(威廉莎士比亚,哈姆雷特,节目名) (这些程序我们称之为子程序)。使用子例程不仅可以缩短程序,还可以节省内存空间,减少节目编译时间,并有助于结构化节目设计。复杂的问题总是可以分解成多个子问题来解决,因此,如果子问题仍然复杂,可以继续分
2、解,直到每个子问题都是具有独立任务的模块。这样编制的节目结构清晰,逻辑关系明确,可以带来写、读、调试、修改等巨大好处。一个程序只能有主程序,没有子程序(在牙齿章节之前),但是如果没有主程序,则渡边杏。也就是说,不能单独运行子程序。帕斯卡的子程序有两种茄子形式:函数和过程。第一节函数,以前为介绍和使用Pascal提供的各种标准函数,如Abs()、Sqr()等。这些系统提供的函数为编写节目提供了极大的便利。范例:取得sin(1) sin(2) sin(100)的值。但是,这些函数只是常用的基本函数,编程时经常需要自定义某些函数。让我们看一下以下示例:请:1!2!3!10!-嗯?如果要编写程序,您会
3、看到,求阶乘的工作进行了10次。但是,每次请求的数量不同。我们认为:为了继承,不要写10号程序。我们想要求阶乘的函数。假设是js(x),我们可以这样求出牙齿问题。示例6.1节目ex6 _ 1;var I : integer:sum : longint;BEGIN sum :=0;for I :=1 to 10 do sum :=sum js(I);Writeln(sum=,sum);END .现在的问题是不提供Free PASCAL牙齿js(x)等标准函数。牙齿程序不能通过。如果是PASCAL的标准函数,则可以直接调用trunc(x)、ln(x)、sqrt(x)、PASCAL牙齿的标准函数不多
4、。那不重要,我们写自己的函数!函数的定义,Pascal中的函数也遵循先说明后使用的规则。程序中函数的说明位于调用函数的节目(主节目或其他子节目)的说明部分。函数的结构与主程序的结构非常相似。函数定义的一般格式:Function():/函数第一;Begin /以下是函数文本:End,说明:函数由第一个和函数正文组成。函数的第一部分以Function关键字开头,表示子程序是函数。函数名称是用户定义的标识符。函数的类型是函数返回值的类型,结果函数值返回通过函数名称调用函数的程序。如您所见,函数的作用通常是为了求值。格式参数只是格式参数,格式参数是函数的参数。参数的初始值是从函数调用中派生的。在函数中
5、,格式参数是通用格式,例如变量表1:类型标识符1。变量名表2:类型标识符2;变量名称表n:类型标识符n。可见格式参数表等同于变量说明,说明函数参数。默认格式参考表(当然也必须省略一对括号)称为无收购函数。函数体与程序体几乎相似,由说明部分和执行部分组成。函数正文的说明部分用于说明牙齿函数中使用的标签、常量、类型、变量和子程序。这些量仅在牙齿函数内有效,有效范围为本地。函数正文的执行部分以begin开头,以end结尾。中间有多个语句,中间用分号分隔,但end后面必须跟分号,不能像程序一样使用句点。在函数正文的执行部分,必须至少为函数名称指定一次值,以便在函数运行结束后将函数值返回给调用方。新版本
6、可以使用exit(返回值)命令获取返回值。编写阶乘函数。将牙齿函数命名为js。function js(n : integer): longint:Var I 3360 integer:s : longint;begin s :=1;For i:=1 to n do s:=s * ijs :=s;End在牙齿示例中,函数名为js,只有integer类型的收购N,函数js为longint类型。牙齿函数需要使用两个变量I,S,在var后面介绍。在函数正文中,是求阶乘的语句,但n的阶乘值在s中,但最后必须为函数js指定牙齿值。js没有参数。在任何函数中,必须在函数名称中指定最终结果。因为函数结果是以函
7、数名称返回的。其中函数的参数N是介面参数,更明确地说,是入口参数。调用Js(3)函数时,程序中N牙齿的任何地方都将替换为N牙齿3进行计算。这里3被称为实参。另一个范例为sqrt(4),ln(5)。这里4,5叫实参。Ln(x)、sqrt(x)的x、y称为格式参数。函数调用,可以在与函数值类型兼容的任何表达式中调用函数。或者,函数调用可以仅出现在表达式允许的地方,也可以作为表达式的元素出现。函数的调用方式与标准函数相同。函数调用的常规格式:函数名称或函数名称(实际参数表)说明:实际参数缩写实际参数。实际参数数必须与函数说明中的格式参数数匹配,实际参数的类型和格式参数的类型必须一一匹配。调用函数时,
8、实际参数通常必须有确定的值。调用函数的步骤是计算实际参数的值并将其分配给相应的格式参数。定义了函数。在以后的程序中,可以像调用标准函数一样直接调用用户定义的函数。针对范例6.1,您使用自订函数编写了程式。是6.2球1!2!10!的“成员配置文件”选项卡中。程序如下:program ex6 _ 2;var I : integer:sum : longint;function js(n : integer): longint:Var I 3360 integer:s : longint;begin s :=1;For i:=1 to n do s:=s * ijs :=s;EndBEGIN sum
9、 :=0;for I :=1 to 10 do sum :=sum js(I);Writeln(sum=,sum);END,函数的应用示例,示例6.4使用以前定义的阶乘函数5!9!即可从workspace页面中移除物件。程序如下:program ex6 _ 4;Var a1、a2:longintfunction js(n : integer): longint:Var I 3360 integer:s : longint;begin s :=1;For i:=1 to n do s:=s * ijs :=s;EndBEGIN a 13360=js(5);a 2:=js(9);Writeln(5
10、!=,a1,9!=,a2);End .牙齿程序在主程序的BEGIN之前说明了一个函数,后续程序可以直接调用自定义函数,就像标准函数一样。Function语句使用格式收购n牙齿,主节目调用使用调用函数的实际收购(如JS(5);程序运行到这里后,将5赋给以前的Function函数,用5替换所有n,最后将结果赋给js。所以在a1中必须是5!a2中的9!即可从workspace页面中移除物件。此外,函数不能单独使用,必须与主程序结合才能运行。主程序中的变量a1,a2称为完整变量,它不仅可以出现在主程序中,还可以出现在函数中。用于函数说明的变量I,S是局部变量,只能在函数部分使用,函数出来后就没有意义了
11、。但是,请注意,整个变量和局部变量的名称尽量不要具有相同的名称。范例6.5随机输入10组三角形的3条边以取得面积。您可以定义函数,以取得设定为Area(a1,a2,a3)的已知三角形的三边面积。程序如下:program ex6 _ 5;Var a、b、c、s:realI:integerFunction area (a1、a2、a : real): real;Var s1,d:realbegin d 3360=(a1 a2 a3)/2;s 1:=sqrt(d *(d-a1)*(d-a2)*(d-a3);Area:=s1EndBegin for i:=1到10 do begin writeln (
12、input a,b,c);Readln(a、b、c);If (a b=c)或(a c=b)或(b c=a) then writeln(数据错误!)else writeln(s=,area(a,b,c);EndEND .在函数说明中,如果有多个格式参数,则程序调用函数的实际参数数必须与格式参数数匹配。第一个实际参数对应于第一个格式参数,第二个实际参数无法调整以符合第二个格式参数的顺序。示例6.6定义了CHECK(N,d)函数以返回布尔值。如果其中一个整数n显示数字d,则返回TRUE,否则返回FALSE。示例:CHECK(325719,3)true;检查(77829,1)false;program
13、 ex6 _ 6;VAR a,b 3360 integer:Function heck(n,d 3360 integer): boolean;Var f:booleanE:integerBegin f:=falsewhile(n0)and(not f)do begin e :=n mod 10;N:=n div 10If e=d then f:=trueEnd检查:=f;EndBEGIN writeln(input n,d);前导(a,b);Writeln(检查(a,b);END,示例6.7计算地物多边形的面积。如图所示,五角形的面积是三个三角形面积的总和。、b1、b2、b3、b4、b5、b6
14、、b7,程序如下:Program ex6 _ 7;Varb1、B2、B3、B4、b5、B6、B7、s: realFunction area (a,b,c : real): real:Var p 3360 real;begin p 3360=(a b c)/2;area :=sqrt(p *(p-a)*(p-b)*(p-c);EndBEGIN主节目write (please input B1、B2、B3、B4、b5、B6、b 73360);Readln(b1、b2、b3、b4、b5、b6、B7);S:=区域(B1,b5,B6)区域(B2,B6,B7)区域(B3,B4,B7);Areawritel
15、n函数调用三次(s=,s :1033603);END,函数教室练习1。查找通过编程键盘随机输入的两个整数中的最大数目。2.以编程方式查找从键盘随机输入的三个整数中的最大数目。3.请在键盘上任意输入两个自然数的最大数目。4.从键盘随机输入三个最大自然数。5.在键盘上任意输入两个自然数的最小公倍数。6.使用函数得出1 2 3 n的总和(n=100)。机械练习6.1,1。编程请求5!7!9!11!的“成员配置文件”选项卡中。2.编程短语c rk=k!/(R!(K-R)!)(K R 0) 3。取得正整数2和100之间的完整数字。完整数:系数之和等于自身的自然数,例如6=1 2 3。4.如果自然数是小数
16、,其数值位置交换后仍然是小数,则称为绝对小数(例如13)。求所有两个绝对小数5。编写节目计算表达式:Y=x2 SH(x),SH(x)在双曲正弦提示 Fp中没有SH()函数,必须由用户定义。数学知识:sh (x),Pascal中的自定义过程与自定义函数一样,必须首先定义并调用。函数通常用于评估,过程通常用于实现特定任务。牙齿两种操作的本质区别在于,函数返回值,在主程序中调用时,使用该类型的变量接收牙齿值。过程是在没有返回值的情况下完成特定操作。调用时,可以将其用作完成特定功能的命令。(大卫亚设、美国电视电视剧、函数、函数、函数、函数、函数)、流程说明和流程说明的一般格式为procedure();
17、/流程第一;Begin /下一个是处理主体end。说明:过程的第一部分以关键字procedure开头。过程名是用户定义的标识符,不能说明过程类型,因为只能标识一个过程并表示数据。格式参考表的默认值(当然也必须省略一对括号)称为无参考进程。格式参数表的典型格式如下:您也可以按var变数名称1:类型来列印区段。其中,有var牙齿的称为变量参数,没有var牙齿的称为格式参数。函数通常是格式参数,很少使用变量参数,但可以使用。例如,(x,y : realN : integerVar w : realVar k : integerB : real) x、y、n、b是造型参数,w、k是变数造型参数。调用过
18、程时,通过过程提供远视数据,通过变量型参与将值返回到寻呼机。因此,格式参数是流程的输入参数,变量格式参数可以说是流程的输出参数。稍后将具体讨论变量参数。过程体类似于程序,函数体。与函数主体不同,函数主体的可执行部分至少有一个语句为函数名指定值,但过程主体的可执行部分不能为过程名指定值。这是因为过程名不能表示数据。过程主体的说明部分仅允许您在牙齿过程中定义有效的标签、常量、类型、变量、子节目等。过程调用、过程调用通过单独的过程调用语句完成,该语句与函数调用完全不同。过程调用的方式与调用标准过程(如write、read等)的方式相同。调用的常规格式为过程名或过程名(实际参数表)说明。实际参数的数目、类型必须与格式参数相符。与格式参数相对应的实际参数可以是表达式,与
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外研八下英语Unit 6 Starting out-Understanding ideas《合作探究三》课件
- 人教 八年级 语文 下册 第1单元《1. 教材习题课件》课件
- 2025 高中信息技术数据结构在视频会议画面清晰度增强的新算法课件
- 2026年自由行旅游合同(1篇)
- 2026年药品品种咨询合同(1篇)
- 心理评估的方法和工具应用
- 2026年及未来5年市场数据中国榆黄菇行业市场深度分析及投资潜力预测报告
- 2026届浙江宁波十校高三下学期二模地理试题+答案
- 春季工厂消防设施巡检与维护全流程指南
- 农业风险防控管理全流程体系构建与实践
- 4.2依法履行义务 课 件 2024-2025学年统编版道德与法治八年级下册
- 2025年中山中考物理试题及答案
- 2024年贵州省普通高中学业水平选择性考试地理试题(原卷版+解析版)
- 办公室安全知识培训
- 《GNSS定位测量》考试复习题库(含答案)
- 塑料搅拌机安全操作规程
- 2024年皖西卫生职业学院单招职业适应性测试题库及答案解析
- 《爱鸟惜花守家园·考察身边的生物资源》课件 2023-2024学年辽海版《综合实践活动》七年级下册
- GB/T 6553-2024严酷环境条件下使用的电气绝缘材料评定耐电痕化和蚀损的试验方法
- 《家用电冰箱与空调器维修》课件
- GB/T 14048.11-2024低压开关设备和控制设备第6-1部分:多功能电器转换开关电器
评论
0/150
提交评论