PASCAL基础教程PASCAL基础教程信息学奥林匹克竞赛是一项益智性的竞赛活动,核心是考查选手的智力和使用计算机解题的能力。选手首先应针对竞赛中题目的要求构建数学模型,进而构造出计算机可以接受的算法,之后要写出高级语言程序,上机调试通过。程序设计是信息学奥林匹克竞赛的基本功,在青少年朋友参与竞赛活动的第一步必须掌握一门高级语言及其程序设计方法。Pascal是一种计算机通用的高级程序设计语言。它由瑞士NiklausWirth教授于六十年代末设计并创立。以法国数学家命名的Pascal语言现已成为使用最广泛的基于DOS的语言之一,其主要特点有:严格的结构化形式;丰富完备的数据类型;运行效率高;查错能力强。正因为上述特点,Pascal语言可以被方便地用于描述各种算法与数据结构。尤其是对于程序设计的初学者,Pascal语言有益于培养良好的程序设计风格和习惯。IOI(国际奥林匹克信息学竞赛)把Pascal语言作为三种程序设计语言之一,NOI(全国奥林匹克信息学竞赛)把Pascal语言定为唯一提倡的程序设计语言,在大学中Pascal语言也常常被用作学习数据结构与算法的教学语言。在Pascal问世以来的三十余年间,先后产生了适合于不同机型的各种各样版本。现在NOI和NOIP提倡使用FreePascal(简称FP),现在最新的版本是2.0.4,官方网站:。FP是编译型程序语言,它提供了一个集成环境的工作系统(IDE),集编辑、编译、运行、调试等多功能于一体。关于Pascal语言FreePascal的启动1、DOS下的启动(适用于MS-DOS6.22之后的版本或Win9X&Win2000/XP/2003的CommandMode):DOS下,在装有FreePascal的文件目录下,键入FP即可进入FreePascal集成环境。2、Win9X或Win2000/XP/2003模式下的启动:如果在Win9X或Win2000的“开始程序”菜单中通过单击FreePascal快捷方式即可启动FP的IDE开发环境。如果FP的IDE环境出现乱码,可以通过以下方式解决:退出FP的IDE环境,在FreePascal的快捷方式上点选右键,在“选项”标签里面选择“当前代码页”为“437(OEM-美国)”,确定后重新启动FreePascal即可。3、工作目录,FreePascal默认工作目录为fp.exe所在文件夹,我们可以自定义目录,使我们编写的程序存放于一个固定位置。一种方式是修改快捷方式里面起始位置,另一种方式是启动FP后选取File菜单里面的”Changedir…”命令来更改当前工作目录。FreePascal主界面Pascal程序基本组成例1.1计算半径为R的圆面积SprogramArea;{程序首部}constpi=3.14159;{说明部分——数据描述}vars,r:real;begin{执行部分}readln(r);s:=pi*sqr(r);writeln('s=',s);end.Pascal程序基本组成program程序名;uses已知单元说明;label标号说明;const常量说明;type类型说明;var变量说明;function函数说明;procedure过程说明;begin……语句end.一个完全的Pascal程序结构保留字(关键字)exitexportsfalsefilefinalizationfinallyforfunctiongotoifimplementationininheritedinitializationinlineinterfaceislabellibrarymodabsoluteandarrayasasmbeginbreakcaseclassconstconstructorcontinuedestructordisposedivdodowntoelseendexceptnewnilnotobjectofononoperatororpackedprocedureprogrampropertyraiserecordreintroducerepeatselfsetshlshrstringthenthreadvartotruetrytypeunituntilusesvarwhilewithxor共75个保留字保留符号单元符号:+-*/=[].,():^@{}$#双元符号:==:=+=-=*=/=(**)(..)//注释符号:{}(**)//标识符1)表识符的定义:标识符就是以字母开头的字母数字序列,可以包含“_”。有效长度为63个字符,并且大小写等效。可以用来标示常量、变量、自定义变量名、程序名、函数名、过程名等。例如例1.1中的Area(程序名),pi(符号常量),s、r(变量名)都是标识符。2)表识符的分类A、标准标识符:指Pascal语言预先定义的表识符,具有特殊含义。以下列举了FreePascal语言部分常用的标准表识符:标准常量FalseMaxintTrueMaxLongint标准类型BooleanCharRealIntegerString标准函数AbsArctanChrCosEofEolnExpLnOddOrdPredRoundSinSqrSqrtSuccTrunc标准过程DisposeGetNewPackPagePutReadReadlnResetRewriteUnpackWriteWriteln标准文件InputOutputB、用户自定义表识符:由你来根据需要定义。选用的表识符不能和保留字相同。语法上允许预定义的标准标识符作为你定义的的表识符使用,但最好还是不要用。字母_字母数字_Pascal数据类型数据是程序设计的一个重要内容,其重要特征----数据类型,确定了该数据的形、取值范围以及所能参与的运算。FreePascal提供了丰富的数据类型,这些数据类型可以分为三大类:简单类型、构造类型和指针类型,其中简单类型可以分为标准类型(整型、实型、字符型和布尔型)和自定义类型(枚举型和子界型),构造类型可以分为数组类型、集合类型、记录类型和文件类型。这些数据类型中除了指针类型是动态数据类型外,其他的都是静态数据类型。在这些数据类型中简单类型都是有序类型,除了实型以外的简单类型都是顺序类型,所谓顺序类型就是他们的值不仅是有序的而且是有顺序号。在这里主要介绍整型、实型、字符型和布尔型四种常用的数据类型。Pascal数据类型1、整型一个整型数据用来存放整数。FreePascal支持十种预定义整型,常用的有shortint(短整型)、integer(整型)、longint(长整型)、byte(字节型)和word(字类型)、longword(无符号长整型)、Int64(8字节长整型)、Qword(8字节无符号长整型),FreePascal分别用不同的名字作为他们的标识符。每一种类型规定了相应的整数取值范围以及所占用的内存字节数。类型数值范围占字节数Byte0..2551Shortint-128..1271Word0..655352Integer-32768..327672Longint-2147483648..21474836474Longword0..42949672954Int64-9223372036854775808..92233720368547758078QWord0..184467440737095516158FreePascal规定了两个预定义整型常量表识符maxint和maxlonint,他们各表示确定的常数值,maxint为32767,maxlongint为2147483647,他们的类型分别是integer和longint。Pascal数据类型2、实型一个实型数据用类存放实数。FreePascal支持五种预定义实型,它们是real(基本实型)、single(单精度实型)、double(双精度实型)、extended(扩展实型)、comp(装配实型),FreePascal分别用不同的名字作为它们的表识符。每一种类型规定了相应的实数取值范围、所占用的内存字节数以及它们所能达到的精度。类型数值范围占字节数有效位数real2.9e-39..1.7e38611..12single1.5e-45..3.4e3847..8double5.0e-324..1.7e308815..16extended3.4e-4932..1.1e49321019..20comp-2**63+1..2**63-1819..20FreePascal支持两种用于执行实型运算的代码生成模式:软件仿真模式和80x87浮点模式。除了real可以在软件仿真模式下直接运行以外,其他类型必须在80x87浮点模式下运行。Pascal数据类型3、布尔型一个布尔型数据用来存放逻辑值(布尔值)。布尔型的值只有两个:false和true,并且false的序号是0,true的序号是1。false和true都是预定义常数表识符,分别表示逻辑假和逻辑真。并且truefalse。boolean是布尔型的表识符。4、字符型字符型用char作为表识符。字符型必须用单引号括起来,字母作为字符型时,大小写是不等价的,并且字符型只允许单引号中有一个字符,否则就是字符串。5、字符串字符串用string或ansistring作为标识符。字符串是用单引号括起来的字符序列,定义标例:s:string;//字符串的最大长度为255s:string[10];//长度为10的字符串s:ansistring;//字符串的长度无限制常量1)常量:在某个程序的整个过程中其值不变的量。2)常量定义:常量定义出现在说明部分。它的语法格式是:const常量标识符=常量;...常量表识符的类型由定义它的常量的类型决定。例如:consta=12隐含说明a是整型;constr=3.21隐含说明r是实型......3)常量定义部分必须以保留字const开头,可以包含一个或几个常量定义,而且每个常量均以分号结束。4)FreePascal类型常量类型常量,又称变量常数,它是FreePascal的一个扩充特性。类型常量的定义与标准Pascal规定的常数定义和变量说明有所区别。类型常量定义的语法格式:const简单类型常量标识符:简单类型=常数;例如:constcounter:integer=0;flag:boolean=true;index:0..100=0;a:array[1..2]ofinteger=(0,1);变量1)变量:在某个程序中的运行过程中其值可以发生改变的量2)变量说明:变量说明出现在说明部分。它的语法格式是:var变量标识符列表:类型;...变量标识符列表:类型;其中,保留字var表示开始一个变量说明部分。变量标识符列表是一个用逗号隔开的标识符序列,冒号后面的类型是类型标识符。每个变量说明均以分号结束。例如:vara,b,c:integer;m,n:real;自定义变量定义形式:Type标识符=自定义变量类型;例:Typelisttype=array[0..999]ofinteger;Varlist:listtype;等同于声明list为一维数组类型。标准函数1、算术函数函数标识符自变量类型意义结果类型abs整型、实型绝对值同自变量arctan整型、实型反正切实型cos整型、实型余弦实型exp整型、实型指数实型frac整型、实型小数部分实型int整型、实型整数部分实型ln整型、实型自然对数实型pi无自变量圆周率实型sin整型、实型正弦实型sqr整型、实型平方同自变量sqrt整型、实型平方根实型例:abs(-4)=4、abs(-7.49)=7.49、arctan(0)=0.0、sin(pi)=0.0frac(-3.71)=-0.71、int(-3.71)=-3.0、sqr(4)=16、sqrt(4)=2标准函数2、标量函数函数标识符自变量类型意义结果类型odd整型判断奇数布尔型pre