初识PASCAL
PASCAL语言基础教程

PASCAL 语言基础教程BY IcEBlast第一章 PASCAL程序结构一个典型的PASCAL程序是这样的:Program <程序名>Uses <调用的单元>Type <数据类型>Const <常量>Procedure <过程>Function <函数>BeginEnd.还有一个Lable,用来规定行号,不过我是恨死它了,因为它使你的程序变得没条理(记得GOTO吗),一般是禁止使用的。
如果你没有程序设计的基础,可能看不懂上面的结构,那么可以参照Pascal的帮助,或读下面的程序,我们还是从“Hello World”开始。
Program Hello_world;Uses crt;Const str=’Hello World’;BeginClrscr;Writeln(str);End.我用的是Word,发现拼写错误就不要追究了。
我们可以看到,Pascal程序是比较严格的,当然对初学者培养变成习惯大有好处。
有上机条件的话可以试一下。
差点忘了,注释的标志是 {,}, (*, *)注意括号配对。
下面介绍Pascal的表达式。
和其他编程语言类似,Pascal中使用+,-,*,/,()表示表达式,例如:1+2*4=9a-3+b/(a*5)Pascal中还提供一些数学函数,包括SIN,ARCCOS,LN,EXP等等。
请参见帮助中的SYSTEM单元。
请注意,这里没有以10为底的对数,所以应这样写LG(X): LG(X)=LN(X)/LN(10)这是换底公式。
请尝试读以下程序:Program aver;Var a,b,c,aver:integer;BeginReadln(a,b,c);Aver:=(a+b+c) DIV 3;Writeln(aver);End.该程序求三个数的平均数。
DIV表示整除。
作业:(1)求三个数的最大值(2)在屏幕上输出以下字符:***Welcome to Pascal world!***答案我就不提供了。
pascal教程Pascal是一种结构化编程语言

pascal教程Pascal是一种结构化编程语言
由Niklaus Wirth于1968年设计。
它是一种高级编程语言,适用于计算机程序的编写和开发。
一个Pascal的基础教程。
1. 安装和环境配置
在安装Pascal之前,需要检查你的操作系统是否与Pascal兼容。
可以在官方网站下载Pascal软件,并根据安装向导来完成安装。
安装完成后,需要配置Pascal环境,包括设置工作目录、调整字体大小和颜色等。
2. 语法基础
在Pascal中,程序由各种函数和过程构成。
Pascal的语言结构相对简单,包括基本数据类型、运算符、控制流语句、数组和记录等。
需要掌握此语法基础才能够编写代码。
3. 实现过程
在Pascal中,过程是一个代码块,它是一系列被关键词procedure包围的指令。
Pascal程序员编写的代码可以使用传递给过程的变量和参数。
过程可以被其他过程调用,以实现分治和模块化编程模式。
4. 核心命令和算法
Pascal具有常用的命令和算法,包括循环、选择语句、递归函数
等。
在编写程序时,可以使用这些命令来实现程序的逻辑。
5. 调试和测试
调试是编写可靠代码的关键。
Pascal提供了许多调试工具,包括单步调试、变量监视、断点等等。
通过手动和自动测试,可以发现和修复代码的错误。
总的来说,Pascal是一种非常实用的编程语言,初学者需要通过多次练习和实践来掌握其基本使用方法和技巧。
学习过程中,可以查阅Pascal官方网站提供的教程资料,也可以与其他编程爱好者交流和共享编程经验。
Pascal入门简介:第四课 Pascal数组与字符串(1)

Pascal入门简介:第四课Pascal数组与字符串(1)一. 数组迄今为止,我们已讨论了PASCAL中所有的简单数据类型,似乎我们已经完全有能力编写出能解决各种复杂问题的程序,但是请看下面一个简单问题:输入50名学生某门课程的成绩,要求把高于平均分的那些成绩打印出来,那么只使用简单数据类型显然是难以对付的,因为每一个定义在简单数据类型之上的变量只能存放一个简单类型数据,如果我们要处理的问题需要存储大量的数据,你得用大量的变量去存储这些数据.如上例要用a1 ,a2 ,a3, ……a5 0共50个整形变量,这就给变量的说明和编程带来很大的困难.要解决这个问题,需要引进新的数据类型——数组.应用数组解决上述问题,程序就会变得十分简单.程序如下: for i:=1 to 50 doread(a[i]);readln;sum:=0;for i:=1 to 50 dosum:=sum+a[i];average:=sum/50;for i:=1 to 50 doif a[i]> average then writeln ('No.',i, ' ',a[i]);在这里我们用带下标的变量(亦称数组元素) a[i]来代替a1 ,a2 ,a3, ……a50全体,方括号中的i 称为下标.当循环变量i=1时, a[i]就代表a[1],当i=2时, a[i]就代表a[2]……,当i= 50时, a[i]就代表a[50],输入的时候让i 从1 变化到50,循环体内输入语句中的a[i]也就分别代表a[1] ,a[2] ,a[3],…… a[50]这50个带下标的变量.上述问题所要求达到的目的,用三个简单的循环就可以实现.1.一维数组(1)一维数据的定义当数组中每个元素只带有一个下标时,我们称这样的数组为一维数组,在PAS CAL中定义数组可以采用以下两种方法:①在说明部分的TYPE 区中定义数组类型,然后再在VAR区中说明数组,形式如下:TYPE 数组类型名=ARRAY[下标类型] OF 数组元素类型.例如:TYPE scoretype = array[1..50] of integer; VAR score:scoretype;②直接在VAR区中定义数组,形式如下: VAR 数组名ARRAY [下标类型] OF 数组元素类型例如: VAR score: array [1..50] of integer;在以上两种方式的定义中: ARRAY 是保留字,用于标志数组类型,元素(成员)1..50 是子界类型,它表示相应的数组是由50个元素(成员)组成的有序组,序号分别为1,2,3…50. int eger 表示该数组的各个元素(成员)的类型是整数,即该数组可存储50个整数.左右方括号以及保留字of 都是构造数组类型时的界限符号,数组类型是一种结构类型.所谓结构类型指的是由一个或多个事先已定义过的类型按一定方法构造而成的类型.这些事先已定义过的类型称为“成分类型”或“元素类型”,它可以是简单类型,也可以是结构类型.数组类型是由固定数量的多个成分所组成的有序结构,其中各个成分的类型都必须是一致的.方括号中的下标类型必须是有序类型,用以指出数组的大小和元素的次序,一维数组只有一个下标类型,下标类型可以是标准的BOOLEAN,CHAR,也可以是用户定义的枚举类型或子界类型.下标类型的每一个值对应着该数组的一个元素.通常下标类型表达为形如min..max的子界.数组的大小即元素的个数为ord(max)-ord(min)+1(但ord(max)必须大于ord(mi n)).。
第一讲 PASCAL的简单运用(lazarus)PPT课件

练习:
❖ 熟悉Pascal编辑环境. ❖ .尝试使用快捷键. ❖ 将下面的Pascal程序输入并运行.
文件名为101.pas
文件名为102.pas
22
提问与回答
用思想传递正能量
23
结束语 CONCLUSION
感谢参与本课程,也感激大家对我们工作的支持与积极的参与。课程 后会发放课程满意度评估表,如果对我们课程或者工作有什么建议和 意见,也请写在上边,来自于您的声音是对我们最大的鼓励和帮助, 大家在填写评估表的同时,也预祝各位步步高升,真心期待着再次相 会!
第一讲 PASCAL的初步认识
1
整体 概述
一 请在这里输入您的主要叙述内容
二
请在这里输入您的主要 叙述内容
三 请在这里输入您的主要叙言呢?
Pascal语言方便地描述各种算法与数据结构。 对于程序设计的初学者,使用Pascal语言有益 于培养良好的程序设计风格和习惯。
6、在空白处 添加程序代码
14
7、输入程序
15
16
运行成功后的提示
17
四、保存源程序
18
将文件名更换为指定的文件名,例如temp
19
Temp.pas 是我们需要提交的源程序.
20
4、pascal的操作汇总
(1)进入与退出 (2)编辑程序 (3)编译程序(Compile):Alt+F9 (4)运行程序(Run):Ctrl+F9
7
二、正确启动软件
单击“开始”“程序”lazaruslazarus
8
需要编写程序 前.请关闭以往 的源程序!
9
三、建立新的PASCAL源程序
1、选择file
10
Pascal语言学习入门

Pascal 语言入门篇一、 引入:程序一:已知长方形的长、宽,求长方形的周长program circle; 该程序的首部,program 是保留字 var chang,kuan,zhouchang:real; 定义变量:设定长,宽,周长为实数类型 begin 开始语句readln(chang); 读语句,读入长(chang)和宽(kuan) readln(kuan);zhouchang:=2*(chang+kuan); 赋值语句,将计算结果赋给zhouchang write(zhouchang); 写语句,将结果(zhouchang ) end. 结束语句,与begin 成对出现程序二:已知长方形的长、宽,求长方形的周长,并求出长方形的面积。
rogram circle;var chang,kuan,zhouchang,mianji :real; beginreadln(chang); readln(kuan);zhouchang:=2*(chang+kuan); mianji:=chang*kuan; write(zhouchang ,mianji ); end.小结:一个完整的pascal 程序结构 Program 程序名(程序参数表); const常量说明;var变量说明;Begin语句; 语句;……End.思考练习:1、已知长方体的长、宽、高,求长方体的表面积及体积。
2、已知正方体的边长,求正方体的表面积及体积。
3、已知圆半径,求圆的周长及面积。
程序说明部分程序语句主过程二、读写语句读语句一:read用于在程序执行时,从外部输入数据给变量一般形式:read(变量表) 其中变量表是一些由逗号分开的变量x,y是整型,我们从键盘上输入就必须是整型数,例如:14、-6,而不能是实型数,例如:1.9、98.0;而z是实型数,输入可以是小数也可以是整数,例如:2.36666 ,或者是10。
读语句二:readln在完成该语句的最后一个变量值的输入以后,将结束包括这个数据值的输入行,使下一个read语句(或readln语句)从下一个新行开始输入数据。
PASCAL基础知识

PASCAL基础知识第一节数据类型1.常数:整型常量maxint表示计算机系统所允许的最大整数,-maxint-1表示最小整数实常数包括正实常数和负实常数。
有两种表示法:十进制表示法和科学计数法。
科学计数法:有位数,底数和指数构成。
字符常量:单个引号括起来布尔常量:符号常量:在使用常量之前必须定义符号常量2.变量:自定义标识符必须以字母(包括下划线)开头,后面的字符可以是字母或数字。
3.算术表达式:常用的6个算术运算符:+,-,*,/(实数除),div(整除),mod(求余)。
/(实数除法)的结果是实数为4/2=2.0,而不是2。
div(整数除)要求参与运算的两个数都是整型,结果也为整形。
10div3=3,5div10=0,div运算只取商的整数部分。
Mod(余数)只能用于整数运算,结果也是整数4帕斯卡标准函数:odd()判断变量是否为奇数abs()绝对值sqr()求平方sqrt()求平方根Chr(数值表达式)返回用数值表达式的值编码的字符。
数值表达式的取值范围为0-255。
Ord()返回字符的ASCII码,结果是一个整数。
在字符范围内,和Chr()函数是彼此的反函数。
TRUNC(1.999)是一个值为1的截断函数。
Round()取整函数random()随机函数mod()余数函数succ(x)求x的后继succ(‘b’)=’c’succ(5)=6succ(false)=truepred(x)求x的前导pred(‘b’)=’a’pred(5)=4pred(true)=false第三节输出语句(写入语句)1.write语句write(表达式1,表达式2,表达式3,....);2.Writeln语句Writeln(表达式1、表达式2、表达式3等);和写的区别在于输出之后有换行。
第四节输入语句1.写语句的输出格式:对整数的默认输出格式是十进制形式,对实数的输出,默认的形式这是科学计算的形式。
在Pascal中,数据占用的宽度称为“字段宽度”或“字段宽度”。
Pascal语言基础知识一
Pascal语言基础一
一、程序的上机调试和运行 二、程序的基本结构 三、语言基础一
一、程序的上机调试和运行
上机调试运行程序的步骤:
1、运行: Free Pascal
2、filenew :新建文件
3、compilemake :编译,找错误。
4、run run:运行
5、debug output(Alt+F5):察看结果
p=3.1415926; var r:integer; s:real; begin readln(r); s:=p*r*r; writeln(s:0:4); end.
格式:缩进2个空格,便于读程序。
三、语言基础一
一、常量与变量的定义说明: 二、数据类型(整型、实型)
三、基本语句(赋值语句、输入语句read、输出语句write)
e=2.718…..
abs(-4)=4
abs(-7.49)=7.49
int(3.71)=3.0 sqrt(4)=2
正确的书写表达式:
1)、
1
a cb
2)、 b b 4 ac
2a
上机练习
1、输入三角形的三条边a,b,c,输出三角形的面 积。(a,b,c是正整数<100,满足三角形条件)
四、算术运算符和算术表达式
1.算术运算符 运算符 运算 + 加 减 * 乘 / 除
div mod 整除 取余 运算对象 整型、实型 整型、实型 整型、实型 整型、实型 整型 整型 结果类型 只要有一个运算对象是实型,结果就 是实型,如果全部的运算对象都是整 型并且运算不是除法,则结果为整型 若运算是除法,则结果是实型。 整型 整型
海伦公式:
p abc 2
Pascal入门简介:第二课 Pascal入门(二)
Pascal入门简介:第二课Pascal入门(二)第四章、循环结构程序设计一、FOR语句格式:1、FOR <循环变量>:=<初值> TO <终值> DO <语句>;2、FOR<循环变量>:=<终值> DOWNTO <初值> DO <语句>。
[例1]:输入10个数,求最大值、最小值、和、及平均值。
PROGRAM ten(input,output);VAR a,s,max,min,avg:real;i:integer;BEGINwrite('please input:');read(a);s:=a;max:=a;min:=a;FOR i:=2 TO 10 DOBEGINread(a);s:=s+a;IF a>maxTHEN max:=aELSE IF a<条件> DO <循环体>[例2]:求s=1!+2!+3!+ (10)PROGRAM sum_fac(input,output);VAR i,j,s,m:integer;BEGINs:=0:for j:=1 to 10 dobegin m:=1;for j:=1 to i do m:=m*j;s:=s+m;end;write(……);END.二、while语句格式:WHILE <条件> DO <循环体>[例1]:输入一串字符串,求第一个“,”前的大小写字母个数和其它字符个数。
program string(input,output);varch:char;c,s,o:integer;beginwrite(……);read(ch);c:=0;s:=0;o:=0;while ch<>',' dobeginif (ch>='A')and(ch<='Z') then c:=c+1else if (ch>='a')and(ch<='z') then s:=s+1else o:=o+1;read(ch);end;write(……);end.三、REPEAT语句格式:REPEAT <循环体> UNTIL [例]:以字符(char)的形式读入一实数,以实形(re al)输出该数。
小学PASCAL全教程
PASCAL全教程Pascal基本教程第一章第一章 Pascal语言概述与预备知识1 关于Turbo PascalPascal是一种计算机通用的高级程序设计语言。
它由瑞士Niklaus Wirth 教授于六十年代末设计并创立。
以法国数学家命名的Pascal语言现已成为使用最广泛的基于DOS的语言之一,其主要特点有:严格的结构化形式;丰富完备的数据类型;运行效率高;查错能力强。
正因为上述特点,Pascal语言可以被方便地用于描述各种算法与数据结构。
尤其是对于程序设计的初学者,Pascal语言有益于培养良好的程序设计风格和习惯。
IOI(国际奥林匹克信息学竞赛)把Pascal语言作为三种程序设计语言之一, NOI(全国奥林匹克信息学竞赛)把Pascal语言定为唯一提倡的程序设计语言,在大学中Pascal语言也常常被用作学习数据结构与算法的教学语言。
在Pascal问世以来的三十余年间,先后产生了适合于不同机型的各种各样版本。
其中影响最大的莫过于Turbo Pascal系列软件。
它是由美国Borland公司设计、研制的一种适用于微机的Pascal编译系统。
该编译系统由1983年推出1.0版本发展到1992年推出的7.0版本,其版本不断更新,而功能更趋完善。
下面列出Turbo Pascal编年史出版年代版本名称主要特色1983Turbo Pascal 1.0Turbo Pascal 2.0Turbo-87 Pascal提高实数运算速度并扩大值域1985Turbo Pascal 3.0增加图形功能Turbo BCD Pascal特别适合应用于商业1987Turbo Pascal 4.0提供集成开发环境(IDE),引入单元概念1988Turbo Pascal 5.0增加调试功能1989Turbo Pascal 5.5支持面向对象的程序设计(OPP)1990Turbo Pascal 6.0提供面向对象的应用框架和库(Turbo Vision)1992Turbo Pascal 7.0面向对象的应用系统、更完善的IDETurbo Vision 2.01993Borland Pascal 7.0开发 Object Windows库、(For Windows)提供对OLE多媒体应用开发的支持1995DelphiVisual PascalTurbo Pascal语言是编译型程序语言,它提供了一个集成环境的工作系统,集编辑、编译、运行、调试等多功能于一体。
PASCAL入门教学6ppt
FOR 语句 例:输入六个自然数,求最大数
Var I,x,max:integer; Begin max:=-9999; for I:=1 to 6 do begin read(x);if x>max then max:=x; end; write(‘max=‘,max); end.
例:求100之内自然数中不能被9整除的偶数的和为多少? var x,s:integer;
3.输出1-9数字的中文拼音。
var n:integer; Begin write(‘n=');readln(n); case n of 1:write(‘yi’);2:write(‘er’); 3:write(‘shan’); 4:write(‘si’); 5:write(‘wu’); 6:write(‘liu’); End; End. 7:write(‘qi’);
6。读入一个字符,若是元音则在该字符后加“*”;若 是单数则在该字符后加“!”号;若是偶数则在该字符 后加“#”号。如输入U,则输出U*。
Var c:char; Begin read(c); case c of ‘a’,’e’,’I’,’o’,’u’,’A’,’E’,’I’,’O’,’U’:WRITE(C,’*’); ‘1’,’3’,’5’,’7’,’9’:WRITE(C,’!’); ‘2’,’4’,’6’,’8’,’0’:WRITE(C,’#’); END; 上面条件语句中BEGIN END为复合语句 END.
End;write(‘s=‘,s);
end. 注意:then后面的begin 和end不能遗漏,否则个数不对。
练习题 1.求1-100之间3的倍数的和。 2。求S=1*3+3*5+5*7+7*9+……+99*101的和 3。输入六个自然数,求最小数及位置。 4。某项体育比赛有六位裁判打分,运动员得分为:去掉最高分 和最低分的平均分。如输入9.5, 8.8, 9.2, 9.0, 8.5, 9.6则运动员得 分为9.13(保留2位小数)。 5。输入六个数,计算正数及负数的和。 6。输出四位数中回文数,并统计个数。 7.一个四位数,划掉它的个位数字得第二个数;划掉它的个位、 十位上的数字得第三个数,已知这三个数的和为4212,求这个 四位数。 (3796) 8。一个四位数,它的个位数字为2,如果将个位数字移作千位 数字,原来的千位数字移作百位数字,原来的百位数字移作十 位数字,原来的十位数字移作个位数字,那么所得的新数比原 数少2889,求原数。 (5432)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
初识PASCAL一个完全的PASCAL程序结构框架如下:PROGRAM程序名(程序参数表); CONST常量声明;TYPE类型声明;VAR变量声明;FUNCTION函数名(参数表):函数类型;函数声明;PROCEDURE过程名(参数表);过程声明;BEGIN程序主体;END.一、变量定义方法VAR变量名1:变量类型1;变量名2:变量类型2;变量名3,变量名4:变量类型3;二、变量命名规则1、首字符必须是英文2、只能由英文、数字和下划线组成。
三、变量类型常用的几个变量类型如下表:类型名含义取值范围占字节数shortint短整型-128~1271 integer整型-32768~327672 longint长整型-231~231-14 real实数 2.9×10-39~1.7×10386 single单精度 1.5×10-45~3.4×10384 double双精度 5.0×10-324~1.7×103088 extended扩展实数 1.9×10-4951~1.1×10493210char字符单个ASCII字符1string字符串最多255个字符字符个数boolean布尔型True,False1一、输出语句格式Writeln(项目1,项目2,……,项目n);{输出内容后换行}Write(项目1,项目2,……,项目n);{输出内容后不换行}二、输入语句格式Read(变量1,变量2,……,变量n);{从键盘输入n个数据,以空格格开}Readln(变量1,变量2,……,变量n);{从键盘输入n个数据,以空格格开,读完后换行}三、赋值语句用法变量名:=表达式;{把右边表达式的值计算出来,结果赋给左边的变量}举例:a:=3;a:=a+1;s:=(a+b)*(c+d);一、装配文件assign(input,’文件路径’);{文件路径一般为相对路径,相对程序的工作目录}reset(input);assign(output,’文件路径’);rewrite(output);二、输入输出方法read(x);write(x);三、关闭文件close(input);close(output);{输出文件必须关闭,否则可能不能正确保存}程序的基本控制结构一、顺序结构的程序按照书写顺序依次执行begin语句1;语句2;end;二、实例输入两个整数x,y,计算x,y的差并输出。
Program example;varx,y,s:integer;beginread(x,y);s:=x-y;writeln(s);end.一、分支结构又叫选择结构或条件结构If条件then语句1{注意这里不可以加分号,因为IF语句到这里没有结束,后面还有ELSE语句}else语句2;二、没有ELSE的IF语句If条件then语句1;三、实例输入3个整数,输出最大的数。
Program bijiao;vara,b,c,max:integer;beginreadln(a,b,c);if a>=bthen max:=aelse max:=b;if c>max then max:=c;writeln(max);end.四、IF语句的嵌套If条件Then BeginIf条件Then语句1Else语句2;EndElse BeginIf条件Then语句3Else语句4;End;一、For循环For循环变量:=初值to终值do循环体;若循环体有多条语句,则必须用begin…end复合语句括起来。
【典型例题1】计算s=1+2+3+...+n,n由键盘输入。
Program example;vars,i,n:integer;beginreadln(n);s:=0;For i:=1to n dos:=s+i;writeln(s);end.【典型例题2】从键盘输入一个数,判断它是不是素数。
PROGRAM sushu;VARa,i:integer;flag:boolean;BEGINreadln(a);flag:=true;FOR i:=2to trunc(sqrt(a))doIF a mod i=0THEN BEGIN flag:=false;BREAK;END;IF flagTHEN writeln(‘Y’)ELSE writeln(‘N’);END.二、While循环While条件Do循环体;同样,若循环体有多条语句,则必须用begin…end复合语句括起来。
【典型例题】求最大公约数program HCF;vara,b,r:integer;beginr:=a mod b;while r<>0dobegina:=b;b:=r;r:=a mod b;end;writeln(b);end.三、Repeat循环Repeat循环体;Until条件;即使循环体有多条语句,也不必用begin…end复合语句。
【典型例题】求自然对数e的近似值,直到最后一项小于10-5为止。
program e1;vari:integer;e,s,t:real;begine:=1;t:=1;i:=1;repeatt:=t*i;e:=e+1/t;i:=i+1;until1/t<=10e-5;writeln(e);end.函数和过程一、标准函数(内置函数)函数名含义abs(a)求a的绝对值sqr(a)求a的平方sqrt(a)求a的平方根sin(a)求a的正弦值,a是弧度cos(a)求a的余弦值,a是弧度arctan(a)求a的反正切值,结果为弧度exp(a)自然对数e的a次方ln(a)求a的自然对数值trunc(a)求a的整数部分round(a)四舍五入取整ord(a)求字符a的ASCII码chr(a)根据ASCII码换成相应的字符random(a)求小于a的随机整数二、自定义函数Funtion函数名(参数1:参数类型,参数2:参数类型,...):函数值类型;VAR函数内变量定义;BEGIN函数体;END;【典型例题】自定义一个判断素数的函数Function prime(a:longint):Boolean;Vari:longint;Beginprime:=true;for i:=2to trunc(sqrt(a))doif a mod i=0then begin prime:=false;break;end;End;一、标准过程inc(a){等价于a:=a+1}inc(a,i){等价于a:=a+i}dec(i){等价于a:=a-1}dec(a,i){等价于a:=a-i}二、自定义过程Procedure过程名(参数1:参数类型,参数2:参数类型,...);VAR过程内变量定义;BEGIN过程体;END;【典型例题】随机产生10个100以内不重复的随机数存入数组并输出,然后从小到大排序再输出。
Program example;Constn=10;Vara:array[1..n]of integer;i,x,temp:integer;Function find(x:integer):boolean;{自定义查找函数}vari:integer;beginfind:=false;for i:=1to n doif a[i]=x then begin find:=true;exit;end;end;Procedure writea;{自定义输出数组元素的过程} vari:integer;beginfor i:=1to n dowrite(a[i],'');writeln;end;Procedure selectsort;vari,j,k:integer;beginfor i:=1to n-1dobegink:=i;for j:=i+1to n doif a[k]>a[j]then k:=j;if k<>i then begin temp:=a[i];a[i]:=a[k];a[k]:=temp;end;end;end;Begin{主程序开始}randomize;x:=random(100);for i:=1to n dobeginwhile find(x)dox:=random(100);a[i]:=x;end;writea;{调用输出数组过程}selectsort;{调用选择排序过程}writea;{调用输出数组过程}end.【典型例题1】求阶乘n!求n!我们可以使用For循环来做,这里我们换一个思路,使用递归的方法来做。
看下面的数学递推表达式。
我们可以看出为求n!,必先求出(n-1)!,同理,要求出(n-1)!,必先求出(n-2)!,则如此递推下去,最终当n=0时我们就可以马上得出结果1,然后我们从1开始再逐步返回到n来求出n!【演示课件】请用右键[目标另存为]命令保存下来再观看Program jiecheng;Varn:integer;Function jc(n:integer):longint;BeginIf n=0Then jc=1Else jc=n*jc(n-1)End;Begin{main}readln(n);writeln(jc(n));End.【典型例题2】汉诺塔问题有三根柱A、B、C,在柱A上有N块盘片,所有盘片都是大的在下面,小片能放在大片上面。
现要将A上的N块盘片移到C柱上,每次只能移动一片,而且在同一根柱子上必须保持上面的盘片比下面的盘片小,输入任意的N,输出移动方法。
(注意:这是一个古老的传说,传说是如果把64个盘子由A柱移到了C柱的话,那么世界末日就到了,事实上如果要把64个盘子从A柱移到C柱的话,即使用计算机运算,也要计算数亿年,所以这个预言未必不是真实。
)【分析】我们可以这样考虑,当n=1时,我们只要直接将A柱的盘子移到C柱,当n>1时,我们可以先把n-1个盘子由A柱通过C柱移到B柱,此时就可以把A柱剩下的最后一个盘子直接移到C柱,这样接下来只要把n-1个盘子通过A柱移到C柱即可,如果就构成了递归的思路,我们可以定义个移动过程mov(n,a,b,c)表示将n个盘子从a通过b移到c【程序】Program hannuota;Varn:integer;Procedure move(n,a,b,c:integer);beginif n=1then writeln(a,'->',c)else beginmove(n-1,a,c,b);{把n-1个盘子从a柱经由c柱移到b柱}writeln(a,'->',c);{把剩下的第n个盘子直接移到c柱}move(n-1,b,a,c);{把在b柱上的n-1个盘子经由a柱移到c柱}end;end;Beginreadln(n);move(n,1,2,3);End.【典型例题3】求公约数问题利用递归函数的方法求a,b的公约数。