pascal简介

发表在    深坑帝国 10-18 21:30:40

1 4460 0

Pascal的名称是为了纪念十七世纪法国著名哲学家和数学家Blaise Pascal(帕斯卡)的,它由瑞士Niklaus Wirth教授于六十年代末设计并创立的。

Pascal语言语法严谨,层次分明,程序易写,可读性强,是第一个结构化编程语言。

Pascal计算机程序教程如今已经有专业化课程,并且越来越完善和严格化。

Pascal有5个主要的版本,分别是Unextended Pascal、Extended Pascal、Object-Oriented Extensions to Pascal、Borland Pascal和Delphi Object Pascal。

Pascal现已进入大学、初中、小学的一些课堂中,甚至一些学校将这作为特长生,免考录取。

基本信息

  • 外文名称pascal
  • 类型高级程序设计语言
  • 所属科目计算机

 

  • 设计者Niklaus Wirth教授
  • 意义第一个结构化的编程语言
  • 适合问题描述数值和非数值的问题
目录

Pascal的名称是为了纪念十七世纪法国著名哲学家和数学家Blaise Pascal的,它由瑞士Niklaus Wirth教授于六十年代末设计并创立的。

Pascal语言语法严谨,层次分明,程序易写,可读性强,是第一个结构化编程语言。

Pascal计算机程序教程如今已经有专业化课程,并且越来越完善和严格化。

Pascal有5个主要的版本,分别是Unextended Pascal、Extended Pascal、Object-Oriented Extensions to Pascal、Borland Pascal和Delphi Object Pascal。

折叠编辑本段创立背景

Pascal由瑞士苏黎世联邦工业大学的Niklaus Wirth教授于六十年代末设计并创立。1971年,瑞士联邦技术学院尼克劳斯·沃尔斯(N.Wirth)教授发明了另一种简单明晰的计算机程序设计语言,这就是以电脑先驱帕斯卡的名字命名的Pascal语言。Pascal语言语法严谨,一出世就受到广泛欢迎,迅速地从欧洲传到美国。

Pascal是最早出现的结构化编程语言,具有丰富的数据类型和灵活的操作语句。

Pascal基于ALGOL编程语言,为纪念法国数学家和哲学家布莱兹·帕斯卡而命名。维尔特后来开发了类似Pascal的Modula-2和Oberon。在开发Pascal之前,维尔特开发了语言Euler,然后开发了Algol-W。

最初,Pascal在很大程度上但不是完全地为了教授学生结构化编程。很多代学生已使用Pascal作为本科课程的入门语言。Pascal的变种也逐渐地用于从研究项目到PC游戏和嵌入式系统的所有领域。更新的Pascal编译器存在于广泛使用它的领域。

GCC,Gnu C编译器,最初是用Pascal的一种方言Pastel编写的(见GCC#概观)。Pascal是Apple Lisa和早期Mac开发使用的高级语言;最初Macintosh操作系统的部分是从Pascal源代码手工翻译成Motorola 68000汇编语言的。流行的排版系统TeX是由高德纳使用基于DEC PDP-10 Pascal的最初文学编程系统WEB编写的,而像Total Commander的应用是使用Delphi(即Object Pascal)编写的。

Object Pascal仍然广泛用于开发像Skype这样的Windows应用。

折叠编辑本段产品特点

Pascal以法国数学家命名的Pascal语言现已成为使用非常广泛的语言之一,其主要特点有:严格的结构化形式;丰富完备的数据类型;运行效率高;查错能力强。

Pascal强调的结构化编程带来了非结构化语言如Fortran之流无法比拟的美和乐趣,Unix崇尚的"小即是美"、"没有消息就是好消息"。

正因为上述特点,Pascal语言可以被方便地用于描述各种算法与数据结构。尤其是对于程序设计的初学者,Pascal语言有益于培养良好的程序设计风格和习惯。

IOI(国际奥林匹克信息学竞赛)把Pascal语言作为三种程序设计语言之一,NOI(全国奥林匹克信息学竞赛)Pascal 语言Pascal 语言把Pascal语言和c语言、c++语言作为竞赛使用程序设计语言,在大学中Pascal语言也常常被用作学习数据结构与算法的教学语言。

高级语言发展过程中,PASCAL是一个重要的里程碑。1971年,瑞士联邦技术学院尼克劳斯·沃尔斯(N.Wirth)教授发明了另一种简单明晰的电脑语言,这就是以电脑先驱帕斯卡的名字命名的PASCAL语言。PASCAL语言语法严谨,编程语言。

它一出世就受到广泛欢迎,迅速地从欧洲传到美国。

沃尔斯一生还写作了大量有关程序设计、算法和数据结构的著作,因此,他获得了1984年度"图灵奖"。

折叠编辑本段主要版本

在Pascal问世以来的三十余年间,完善。

Turbo Pascal语言是编译型程序语言。

Pascal有5个主要的版本,分别是Unextended Pascal、Extended Pascal、Object-Oriented Extensions to Pascal、Borland Pascal和Delphi Object Pascal。其中,Unextended Pascal、Extended Pascal和Object-Oriented Extensions to Pascal是由Pascal标准委员会所创立和维护的,Unextended Pascal类似于瑞士Niklaus Wirth教授和K.Jensen于1974年联名发表的Pascal用户手册和报告,而Extended Pascal则是在其基础上进行了扩展,加入了许多新的特性,它们都属于正式的Pascal标准;Object-Oriented Extensions to Pascal是由Pascal标准委员会发表的一份技术报告,在Extended Pascal的基础上增加了一些用以支持面向对象程序设计的特性,但它属于非正式的标准。

Borland Pascal和Delphi Object Pascal是由Borland公司专门为其开发的编译工具设计的Pascal语言,前者是用于DOS的Turbo Pascal系列和Windows 3.x的Turbo Pascal for Windows的传统高级语言,后者是用于Windows的Delphi和Linux的Kylix的面向对象程序设计语言,它们都不是正式的Pascal标准,具有专利性。但由于Turbo Pascal系列和Delphi功能强大并且广为流行,Borland Pascal和Delphi Object Pascal已自成为一种标准,为许多人所熟悉。

折叠编辑本段缺点

传统PASCAL的标准库中缺乏对网络编程的支持,并且仅通过自带的graph单元难以实现较好的图形界面(GUI),这些缺点大多需要嵌入汇编语言代码才能得到解决,缺乏与机器语言的接口。

另一方面,作为一个面向过程的编程语言,和90年代兴起的面向对象的语言相比,不利于大型软件的开发。

尽管Pascal非常流行(然而在八十到九十年代时比21世纪更加流行),依据维尔特的对这种语言的定义来构建Pascal,使它不适合在非教学的场合使用,这遭到了广泛的批评。 推广了C语言的Brian Kernighan早在1981年就在他的论文《Why Pascal Is Not My Favourite Programming Language》对Pascal提出了严厉的抨击。

折叠编辑本段发展历程

注:高级语言发展过程中,Pascal是一个重要的里程碑。Pascal语言是第一个系统地体现了E.W.Dijkstra和C.A.R.Hoare定义的结构化程序设计概念的语言。

Pascal语言结构严谨,功能强大。在Pascal问世以来的三十余年间,先后产生了适合于不同机型的各种各样版本。其中影响最大的莫过于Turbo Pascal系列软件。它是由美国Borland公司设计、研制的一种适用于微机的Pascal编译系统。该编译系统由1983年推出1.0版本发展到1992年推出的7.0版本,其版本不断更新,而功能更趋完善。目前应用最广泛的是Free Pascal 2.04。

折叠编辑本段基本符号

Pascal语言在 OEM-美国 编码下只能使用以下几类基本符号:

折叠英文字母

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

a b c d e f g h i j k l m n o p q r s t u v w x y z

折叠数字

1 2 3 4 5 6 7 8 9 0

折叠其他符号

+ - * / = <> <= >= > < ( ):= , . ; : .. ' ' ^ @$ div mod shr shl

运算符

优先级

not,(,)

1(最优先)

*,/,div,mod,and

2

xor,+,-,or

3

不等号

4(末优先)

注:Pascal中div是整除,mod是求余;

Free Pascal 中,大写字母与小写字母没有区别,只是除了字符串中的字母,即是说:A与a被认作同一个字母。

折叠ACSII码

Pascal中,字符代码是由ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)码进行转换的。由函数chr(x) (求编号x对应的字符)和ord(x) (求字符x或枚举型X对应的编号)进行转换执行。

折叠编辑本段编程工具

Turbo Pascal

Turbo Pascal 它提供了一个集成环境的工作系统,集编辑、编译、运行、调试等多功能于一体。

编年史

出版年代

版本名称

主要特色

1983

Turbo Pascal 1.0

Turbo Pascal 2.0

Turbo-87 Pascal

提高实数运算速度并扩大值域

1985

Turbo Pascal 3.0

增加图形功能

Turbo BCD Pascal

特别适合应用于商业

1987

Turbo Pascal 4.0

提供集成开发环境(IDE),引入单元概念

1988

Turbo Pascal 5.0

增加调试功能

1989

Turbo Pascal 5.5

支持面向对象的程序设计(OPP)

1990

Turbo Pascal 6.0

提供面向对象的应用框架和库(Turbo Vision)

1992

Turbo Pascal 7.0

面向对象的应用系统、更完善的IDE

Turbo Vision 2.0

1993

Borland Pascal 7.0 开发

Object Windows提供对OLE应用的支持

1995

Delphi (Object Pascal)

开发Object pascal语言,使能应用于网络编程操作

Visual Pascal

Free Pascal

2005DEV Pascal 1.9.2
2008super pascal
2010CP Pascal Edtior 3.5可输入中文,支持一些Free pascal不支持的过程

2011

lazarus 0.9.30

图形应用程序编辑

2012Lazarus 1.0功能更加强大

展开

Pascal是一门编程语言,而Turbo Pascal/Free Pascal是Pascal程序的编译系统

Pascal只是一门语言,而Turbo Pascal/Free Pascal是编译器,这两个是不能比较的 。

你可以把两个语言放在一起比较,或者两个编译器放在一起比较 。

在中国的信息学奥林匹克竞赛中,过去比较常用的Pascal编程工具是Turbo Pascal。Turbo Pascal是DOS下的一种16位编程工具,在Delphi出现之前,它是世界上最多人使用的Pascal编程工具,拥有编译速度极快的先进编译器和功能强大而又简便易用的集成开发环境(IDE),在微机程序员中广为流行,正是它的出现奠定了Pascal在DOS/Windows平台上不可动摇的根基,现常见的版本有Turbo Pascal 5.5、Turbo Pascal 6.0和Borland Turbo Pascal with Objects 7.0。Turbo Pascal 6.0与Turbo Pascal 5.5相比,主要是IDE更为强大,而其程序设计功能改变不大,只是增加了一些新的功能,例如可以内嵌asm汇编语句等。而Borland Turbo Pascal with Objects 7.0(简称Borland Pascal 7.0)则有了新的飞跃,首先是IDE进一步加强,提供了程序浏览器,然后是程序设计功能有了很大的提升,新增了一些十分有用的标准子程序,支持比较完善的面向对象程序设计功能,并提供了DOS实模式、DOS保护模式和Windows模式三种程序编译模式,能够编写出可以使用扩充内存(XMS)的保护模式应用程序或者在Windows 3.x下运行的Windows程序,另外还提供了一个对象窗口库(OWL),使用它可以快速的开发出具有一致的视窗界面(DOS或Windows 3.x)的应用程序。Borland Pascal 7.0在1992年推出,是Turbo Pascal系列在DOS下的最后版本。

Free Pascal

随着Turbo Pascal逐渐被淘汰,全国信息学奥林匹克竞赛决赛(NOI)全国信息学奥林匹克联赛决赛(NOIP)和国际信息学奥林匹克竞赛(IOI)已经指定Free Pascal为比赛使用的Pascal编程工具。Free Pascal是由一个国际组织开发的32/64位Pascal编程工具,属于自由软件,可用于各种操作系统。根据编译选项的不同,它可以使用Turbo Pascal兼容语法、Delphi 语法或者其它语法进行编写程序。由于它拥有32/64位的编译器,而且一直在更新发展中,因此它的功能比Borland Pascal更加强大,拥有许多现代程序设计的特征。但它对程序员的吸引力比不上拥有VCL和CLX的Delphi和Kylix。

Free Pascal是一个在多种版本Pascal和Delphi下的产物,目前比较成熟的版本是由FreePascal. org发布的2.2.4版本(最新版本为2.6.4),由于是Pascal上的改版,在FP里加入了很多以前没有的东西,例如:FillChar系列内存块赋值语句,用Power代替了**(乘方),但是**还是可以使用。

另外FP加强了与内存的互容性,增大对内存的支持,FP里的内存限制是TP和BP里的将近上万倍。

FP还进一步加强了单元支持、面向对象程序设计的支持、显卡(声卡)的支持、图形高级覆盖的支持、WindowsLinuxOS/2..等众多系统的支持。在FP的较稳定版本中,可以方便的利用Win32编译模式,编译出Windows应用程序,与Delphi的功能相当。同时对动态连接库、控件、数据库、文件、网络、OpenGL的深入支持,使得 FP 在各种 Pascal编译系统中脱颖而出。

更值得提出的是,FP支持Delphi及C++的部分语言,例如:A+=2这样的C Style语言,在FP里完美支持。

FP中支持单目、双目操作符,即所有版本的Pascal的符号和"@"等特殊符号。

FP 支持运算符重载

FP现为竞赛推荐工具。

最新发布版本为 2014 年3 月11 日发布的 2.6.4。

最新 bugfix 版本为 svn repo 里的 2.4.3。

最稳定版本为2.4.4。

P.S.Free Pascal与Turbo Pascal的区别

Free Pascal使用的是跨平台的32位编译器,最大可以利用4GB的内存。而对于Turbo Pascal来说,由于是16位的编译器,数据类型和变量不能超过64 KB,而且只限在Windows上使用。这使得Free Pascal与Turbo Pascal存在着如下差别:

1. 表达式执行的顺序是不确定的。比如表达式a:=f(1)+g(2);不保证f(1)一定在g(2)之前执行;

2. 布尔表达式不一定要全部计算,只要最终结果已经能够确定,就不再计算其他部分;

3. 乘方x^y可以表示成x**y。但x是实数且y是整数的时候不能这样表示。一般还是用换底公式(exp(y*ln(x)))来计算x^y;

4. 因为在Free Pascal中添加了函数重载功能,所以函数和过程在使用时,参数的类型必须和定义的完全一致。函数可以返回复杂的类型,比如记录和数组;

5. 在Free Pascal中,集合中的元素都是4个字节长的;

6. Free Pascal在程序结束之前一定要关闭输出文件,否则输出文件可能不能被正确地写入;

7. Free Pascal支持长文件名。在Windows系统中文件名的大小写是无关的。由于信息学竞赛的评测系统是Linux,而Linux对文件名区分大小写,所以程序中用到的文件名必须和系统中的文件名完全一致。

最后,如果代码遵守ANSI Pascal标准,就完全可以从Turbo Pascal移植到Free Pascal中使用。

Lazarus

Lazarus是一个用于Free Pascal的快速应用开发(RAD)的面向对象的Pascal集成开发环境(IDE)。Lazarus 对于窗口管理来说是中性的。可以工作在KDE(1.13版本)下,也可以工作在GNOME(1.23版本)或其他窗口管理器(MVM、WindowMaker)。Lazarus的设计目标是应用Free Pascal,所以所有凡是Free Pascal能运行的平台,Lazarus也可以运行。最新版本能运行于Linux,Win9x/2000/xp/win7和FreeBSD。21世纪,已提供32位和64位版本支持。Lazarus的工作界面、外观和操作和Borland 的Delphi IDE非常相似,所不同的是Lazarus 是完全的自由软件。Lazarus 可以直接移植Delphi的代码。Lazarus的编程语言是以Pascal为基础的。Pascal语言具有可读性好、编写容易的特点,这使得它很适合作为基础的开发语言。同时,使用编译器创建的应用程序只生成单个可执行文件(.EXE,但生成的可执行文件体积相对Delphi的来说有点大,只包含一个空窗体的工程生成的可执行文件就达到了10多M。这里,可以通过编译选项来减小可执行文件的大小,可以减为1M多点,然后通过UPX压缩,可以减为600多K。)。正是这种结合,使得Pascal成为Lazarus这种先进开发环境的编程语言。目前Lazarus的最新版本为1.2.4。

CP Pascal Editor

CP Pascal Editor 有两大特色,第一,它含有一个初学者知识库,在代码的任意关键字处双击鼠标左键,提示面板上将会显示与该关键词相关的知识,例如数据类型范围等。另外,CP Pascal Editor含有CP代码快速输入模式,这项功能使您可以在编写程序时使用来自其他语言的语法,甚至一些伪代码表达方式。当您完成输入时,CP会自动将这些代码转换为Pascal代码。

在 CP Pascal Editor 中含有中文错误提示信息,并大幅度提高编辑速度,而且它的稳定性好,支持语法高亮,支持代码中输入中文,还具有Math与Crt等常用单元。虽然它的界面还停留在传统的pascal编程界面,有些老套,但从功能上来看十分适合Pascal语言编写者使用。

优点:1、中文界面,有中文错误提示信息。2、稳定性好。

缺点:1、界面简陋。2、现已被证实使用crt单元时会出现PPU 100版本错误。

折叠编辑本段语言知识

折叠语言概述

Pascal语言是一种算法语言,它是瑞士苏黎世联邦工业大学的沃思教授于1968年设计完成的,1971年正式发表。Pascal语言是在ALGOL60的基础上发展而成的。它是一种结构化的程序设计语言。它的功能强、编译程序简单,是70年代影响最大一种算法语言。

从使用者的角度来看,Pascal语言有以下几个主要的特点:

⒈ 结构化

Pascal可以方便地书写出结构化程序,保证了程序的正确性和易读性。在结构化这一点上,Pascal比其它算法语言更好。

⒉ 数据类型丰富

Pascal是一种强类型语言。它提供了整数型、实数型、字符型、布尔型、枚举型、子界型以及由以上类型构成的数组类型、集合类型、记录类型和文件类型。此外,还提供了其它许多语言中所没有的指针类型。丰富的数据结构和上述的结构化性质,使得Pascal可以被方便地用来描述复杂的算法。

⒊ 适用性好

既适用于数值运算,也适用于非数值运算领域。有些语言只适用于数值计算,有些语言则适用于商业数据处理和管理领域。Pascal的功能较强,能广泛应用于各种领域。

⒋ 书写较自由

得益于语句末的分号做分隔符,Pascal允许一行写多个语句,一个语句可以分写在多行上,这样就可以使Pascal程序写得象诗歌格式一样优美,便于阅读,但一行不可超过257个字符

由于以上特点,许多学校选Pascal作为程序设计课程中的一种主要的语言。它能给学生严格而良好的程序设计的基本训练,培养学生结构化程序设计的风格。

折叠基本结构

任何程序设计语言都有一定的规则。使用Pascal语言必须遵循其本身所规定的规则来编写程序。尽管不同版本的Pascal语言所采用的符号的数量、形式不尽相同,但其基本成分一般都符合标准Pascal的规定。下面我们首先来了解Pascal语言的程序基本结构。

为了明显起见,先举一个最简单的Pascal程序例子:

【例1】

从这个简单的程序可以看到:

⒈ 一个Pascal程序分为两个部分:程序首部和程序体(或称分程序)。

⒉ 程序首部是程序的开头部分,它包括:

⑴程序标志。用"program"来标明这是一个Pascal 程序。Pascal规定任何一个控制台Pascal程序的首部都必须以此字开头。在Free Pascal中,首部也可省略。

⑵程序名称。由程序设计者自己定义,如例中的li1。在写完程序首部之后,应有一个分号。

⒊ 程序体是程序的主体,在有的书本里也称"分程序"。程序体包括说明部分(也可省略)和执行部分两个部分。

⑴说明部分用来描述程序中用到的标号、常量、类型、变量、函数、过程等。正如示例中的"var"标注定义变量的名称、类型,其它的标注字段为:label(标号)、const(常量)、type(类型)、var(变量)、function(函数)、procedure(过程)。

Pascal规定,凡程序中用到的所有变量、符号常量、数组、过程与函数、记录、文件等数据都必须"先说明,再使用"。

⑵执行部分的作用是给出需要计算机执行的操作。

执行部分以"begin"开始,以"end"结束,其间有若干个语句,一般为了易于阅读,begin..end中的语句应空2格(不包括"begin"和"end"),语句之间以分号隔开。执行部分之后有一个句点,表示整个程序结束。

⒋ Pascal程序的书写方法比较灵活。书写程序应结构清晰、容易阅读理解。在编写程序时希望读者尽量模仿本书中例题程序格式和缩进(两个空格或一个Tab)。

⒌ 在程序中,一对大括号间的文字称为注释(也可用(*、*))。注释的内容由人们根据需要书写,可以用英语或汉语表示。注释可以放在任何空格可以出现的位置。编译器对注释不予理睬。

折叠使用

信息学竞赛使用的Pascal语言系统是Free Pascal,下面我们就来学习Free Pascal的使用。

1.系统的启动在运行系统目录下的启动程序fp.EXE,即可启动系统。屏幕上出现如图1所示的集成环境。

2.Free Pascal系统集成环境简介

最顶上一行为主菜单。中间蓝色框内为编辑窗口,在它个编辑窗口内可以进行程序的编辑。最底下一行为提示行,显示出系统中常用命令的快捷键,如打开一个文件的快捷键为F3,将当前编辑窗口中文件存盘的快捷键为F2,获得系统帮助的快捷键为F1,等等。

3.新建程序窗口

按F10进行主菜单,选择FILE菜单,执行其中New命令。就可建立一个新的程序窗口(默认文件名为Noname00.pas或Noname01.pas等)。

4.程序的输入、编辑与运行

在当前程序窗口中,一行一行的输入程序。程序窗口是一个编辑器。所以对程序的编辑与其它编辑器相似,类似记事本程序。

当程序输入完毕之后,一般要先按Alt+F9(或执行compile菜单中compile命令)对程序进行编译。如果程序有语法错误,则会在程序窗口的下方显示错误信息。若无语法错误,则窗口正中央会出现一个对话框,提示编译成功。接下来,我们可以运行程序了。

程序的运行可以通过按ALT+R打开RUN菜单中的RUN命令,或直接按快捷键CTRL+F9。则可以在用户窗口中输出运行结果。通常在程序运行结束后系统回到Pascal系统的集成环境,因此要查看运行结果,要按ALT+F5将屏幕切换到用户屏幕。

5.程序的保存与打开

当我们想把程序窗口中的程序存入磁盘时,可以通过按F2键(或执行File菜单中的save命令)来保存程序。第一次保存文件时屏幕上会出现一个对话框要求输入文件名(默认扩展名为.pas)。

当我们要将磁盘上的程序文件中的Pascal程序装入窗口时,可按F3(或执行File菜单中的Open命令)来装入程序,此时系统也会弹出一个对话框要求输入要打开的文件名,或直接在文件对话框列表中选择所要的文件,然后回到打开文件。(.pas文件,可以由记事本打开)

折叠编辑本段保留字

Pascal语言中保留字可分为如下6种类型:

折叠编辑本段标识符

  • 标准常量:false,true,maxint.
  • 标准类型:integer,real,char,string,boolean,text.
  • 标准文件:input,output.
  • 标准函数:abs,arctan,chr,cos,eof,eoln,exp,ln,odd,ord,pred,round,sin,sqr,sqrt,succ,trunc.
  • 标准过程:get,new,pack,page,put,read,readln,reset,rewrite,unpack,write,writeln.
  • real 实数
  • integer 整型
  • longint 长整型
  • shortint 短整型
  • int64 超长整型
  • single 单精度
  • double 双精度
  • char 单个字符
  • string字符串型
  • ansistring内存字符串型
  • int64 -2^63-2^63-1的整数类型
  • qword无符号的整型(0~2^64-1)
  • begin 开始
  • end 结束
  • if 如果
  • for ... to .... do 循环
  • read 输入 (readln 输入并换行)
  • write 输出(writeln 并换行输出)
  • then 那么(常与if连用)
  • else 否则 (常与if和then连用,当if后面的条件为假时,程序就会执行else后的语句)
  • boolean布尔型
  • true 真
  • false 假

折叠编辑本段错误代码

折叠常见错误

  • 1无效DOS功能号
  • 2文件未找到
  • 3路径未找到
  • 4打开文件过多
  • 5禁止文件存取
  • 6无效文件句柄
  • 12无效文件存取代码
  • 15无效驱动器号
  • 16不能删除当前目录
  • 17不能跨驱动器改文件名
  • 100磁盘读错误
  • 101磁盘写错误
  • 102文件变量未赋值
  • 103文件未打开
  • 104文件未用输入方式打开
  • 105文件未用输出方式打开
  • 106无效数字格式
  • 150磁盘写保护
  • 151未知单元
  • 152驱动器未准备好
  • 153未知命令
  • 154数据CRC校验错
  • 155驱动器请求的结构长度错
  • 156磁盘定位错
  • 157未知媒介类型
  • 158扇区未找到
  • 159打印机缺纸
  • 160设备写失败
  • 161设备读失败
  • 162硬件故障
  • 200被零除
  • 201范围检查错
  • 202堆栈溢出错
  • 203堆溢出错
  • 204无效指针操作
  • 205浮点上溢出
  • 206浮点下溢出
  • 207无效浮点运算
  • 208未安装覆盖管理程序
  • 209覆盖文件读错
  • 210对象未初始化
  • 211调用抽象方法
  • 212流登计错
  • 213**下标越界
  • 214**溢出
  • 215算术上溢错误
  • 216存取非法
  • 217控制-C
  • 218授权指令
  • 219无效的TYPECAST
  • 220无效的变体TYPECAST
  • 221无效的变体操作
  • 222没有变体方法调用DISPATCHER
  • 223不能建立变体数组
  • 224变体不包含数组
  • 225变体数组边界错误
  • 226TLS初始化错误

折叠错误类型

  • 1内存溢出
  • 2缺标识符
  • 3标识符未定义
  • 4标识符重定义
  • 5语法错误
  • 6实型常量错
  • 7整型常量错
  • 8字符串常量跨行
  • 9文件嵌套过多
  • 10非正常文件结束
  • 11行过长
  • 12缺类型标识符
  • 13打开文件过多
  • 14无效文件名
  • 15文件未找到
  • 16磁盘满
  • 17无效编译指示
  • 18文件过多
  • 19指针定义中未定义类型
  • 20缺变量标识符
  • 21类型错误
  • 22结构过长
  • 24文件分量不能为文件
  • 25无效字符串长度
  • 26类型不匹配
  • 27无效子界基类型
  • 28下界大于上界
  • 29缺有序类型
  • 30缺整型常数
  • 31缺常数
  • 32缺整型或实型常数
  • 33缺指针类型标识符
  • 34无效的函数结果类型
  • 35缺标号标识符
  • 36缺BEGIN
  • 37缺END
  • 38缺整型表达式
  • 39缺有序表达式
  • 40缺布尔表达式
  • 41操作数类型与操作符不匹配
  • 42表达式
  • 43非法赋值
  • 44缺字段标识符
  • 45目标文件过长
  • 46未定义外部标识符
  • 47无效*.OBJ文件记录
  • 48代码段过长
  • 49数据段过长
  • 50缺DO
  • 51无效PUBLIC定义
  • 52无效EXTRN定义
  • 53EXTRN定义过多
  • 54缺0F
  • 55缺INTERFACE
  • 56无效重定位引用
  • 57缺THEN
  • 58缺T0或DOWNTO
  • 59未定义的向前引用
  • 60过程过多
  • 61无效类型转换
  • 62被零除
  • 63无效文件类型
  • 64不能读写该类型的变量
  • 65缺指针变量
  • 66缺字符串变量
  • 67缺字符串表达式
  • 68单元循环引用
  • 69单元名不匹配
  • 70单元版本不匹配
  • 71单元重名
  • 72单元文件格式错误
  • 73缺IMPLEMENTATI0N
  • 74常数与CASE类型不相匹配
  • 75缺记录变量
  • 76常数越界
  • 77缺文件变量
  • 78缺指针变量
  • 79缺整型或实型表达式
  • 80标号不在当前块中
  • 81标号已定义
  • 82标号未定义
  • 83无效参数
  • 84缺UNIT
  • 85缺";"
  • 86缺":"
  • 87缺","
  • 88缺"("
  • 89缺")"
  • 90缺"="
  • 91缺":="
  • 92缺"["或"(."
  • 93缺"]"或".)"
  • 94缺"."
  • 96变量过多
  • 97无效FOR控制变量
  • 98缺整型变量
  • 99此处不允许用文件
  • 100字符串长度不匹配
  • 101无效字顺序
  • 102缺字符串常数
  • 103缺整型或实型变量
  • 104缺有序变量
  • 105INLINE错
  • 106缺字符表达式
  • 107重定位项过多
  • 112CASE常量越界
  • 113语句错
  • 114不能调用中断过程
  • 116必须在8087方式下编译
  • 117未找到目标地址
  • 118此处不允许包含文件
  • 120缺NIL
  • 121无效限定符
  • 122无效变量引用
  • 123符号过多
  • 124语句部分过长
  • 126文件必须为变量参数
  • 127条件符号过多
  • 128条件指令错位
  • 130初始条件定义错
  • 131过程和函数头与前面定义的不匹配
  • 132严重磁盘错误
  • 133不能计算该表达式
  • 134表达式错误结束
  • 135无效格式说明符
  • 136无效间接引用
  • 137此处不允许结构变量
  • 138无SYSTEM单元不能计算
  • 139不能存取该符号
  • 140无效浮点运算
  • 141不能将覆盖编译至内存
  • 142缺过程和函数变量
  • 143无效过程或函数引用
  • 144不能覆盖该单元
  • 147缺对象类型
  • 148不允许局部对象类型
  • 149缺VIRTUAL
  • 150缺方法标识符
  • 151不允许虚拟构造方法
  • 152缺构造方法标识符
  • 153缺释放方法标识符
  • 154FAIL只允许在构造方法内使用
  • 155无效的操作符和操作数组合
  • 156缺内存引用
  • 157不能加减可重定位符号
  • 158无效寄存器组合
  • 159未激活286/287指令
  • 160无效符号引用
  • 161代码生成
  • 162缺ASM

折叠编辑本段运用

Turbo Pascal系列软件作为开发系统软件与就任软件及实施科学计算和教学的有力工具,下发挥着越来越大的作用。也是国际和全国青少年信息学奥林匹克竞赛指定的语言之一。从历届信息学竞赛的情况看,它是最能出成绩和选手最欢迎的语言。以后的例子就以Turbo Pascal 7.0进行程序设计。

下面我们就以一个实例来看一看Pascal程序的结构,从中认识到Pascal语言程序的书写方式,以及其规范的标准设计方式。

例1:输入一个圆的半径,求出其圆周长。

设圆的半径为R,周长为L,我们知道公式如下:

L=2πR

它的Pascal程序如下:

从以上简单的例子可以看出,Pascal程序是由程序首部、程序说明部分和程序执行部分组成。具体如下所示:

折叠编辑本段组成

1、程序首部

程序首部是程序的开头部分,由保留字program后,接程序名及程序参数表组成,结束时一定要有分号。程序名yzhch是用户自己定义的标识符,参数表一般是文件变量名,用于该程序与外界的数据交流。最常用的参数为input和output。Turbo Pascal程序首部中参数表可以省略。

2、程序说明部分

Pascal语言要求用户将在程序中所使用的标号、常量、类型、变量、记录、文件、以及过程和函数除了Pascal自己预先定义的标准量之外,都必须在说明部分说明后才能在程序执行部分使用。但各个内容部分是可选的,只有执行程序部分需要的时候才进行说明。

3、程序执行部分

紧接着说明部分的begin和end之间的部分为程序的执行部分。它由一系列语句组成,一条语句执行一定的功能,所有语句完成程序设计的任务。语句之间用";"隔开,允许一行写多个语句,也允许一个语句写多行。最后一行的end后加"."号表示结束。所跟其后的语句将无任何作用。Begin与end应配对出现,这是每一个Turbo Pascal程序都必须的。

注意:后面将学习到的语句中,也需要引用begin和end作为程序段的分隔标记,但其必须遵守语句规则。

数据类型、常量的变量

概念

计算机处理数据对象是一个广义的概念。例如,125、12.76是数据,'xiang qj zhong'这一串字符也是数据。前者是数值数据,后者是字符串数据,是非数值数据。显然,为了表示这些数据,它们在内存中必须以不同方式存放。为处理这些数据,计算机对它们施加的运算也不同。为此,Turbo Pascal语言建立了数据类型的概念,对描述的数据进行分类。每一种数据类型定义了一个具有相同性质的数据集合。各种数据类型的数据具有不同的性质。程序中所用到的每一个数据,包括常量和变量都有一个和它相联系的类型。由此决定了数据所具有的值,也决定了对该数据所能进行的操作。

Pascal语言中数据具有丰富的类型,按它们的特点可以分为简单类型、构造类型、指针类型和过程类型四大类,如图下所示。

其中,标准类型用语言系统预先定义的标准标识符表示,整型用integer表示,实型用real表示,布尔型用boolean表示,字符型用char表示。

二、常量

常量是指在程序中使用的一些具体的整型数、实型数和字符串。

(1)整型数:如9、3、-5、0等。

(2)实型数:如3.1、-6.1E+20等。

(3)字符串:是用单引号括起来的一串字符,如,'book'、'96·5'、'ABC'等。

以上列举的都可以作为常量在程序中使用。为了提高程序的可读性并使程序便于修改,在程序中往往用一些标识符来代表具体的常量。

在Turbo Pascal语言中,可以给一些常量取个名字用一个标识符代表它,这就是常量定义。例如,Cost=60;Blank=' '。

经常量定义的标识符又称为常量标识符。

在Turbo Pascal语言中,常量定义要写在常量定义部分中。

常量定义部分的一般形式:

Const

(常量标识符1)= (常量1);

(常量标识符2)=(常量2);

(常量标识符n)=(常量n);

Const是保留字,表示开始一个常量定义部分,其后可以有若干个常量定义,这些

常量定义之间要用";"号分隔。例如:

Const

Cost=60;

A=Cost+30;

Pi =3.14159;

Turbo Pascal语言对常量定义有如下要求:

(1)常量定义要放在程序的常量定义部分,即程序首部之后,执行部分之前。

(2)必须遵循先定义后使用的原则,即只有已经定义的常量标识符,才能在程序中

使用。

三、变量

在程序执行过程中其值可以改变的数据,称为变量。每个变量都要有一个名称,这就是变量名。变量名由用户自己定义,但必须符合标识符的规定。

在一个程序中,一个变量只能属于一种确定的数据类型。因此,程序中出现的每个变量都必须说明其数据类型,这样就规定了该变量的取值范围,也决定了对该变量所能执行的运算操作。

变量的类型,可以是标准数据类型integer、real、boolean和char,也可以是用户自定义的各种类型。

变量说明形式是:一个变量标识符或由逗号隔开的多个变量标识符在它的冒号":"后面说明其数据类型。

在Turbo Pascal程序中,变量说明要写在变量说明部分中。

变量说明部分的一般形式:

var

(变量说明1);

(变量说明2);

……(变量说明n);

其中var是保留字,表示一个变量说明部分开始。一个var可以含有多个不同的变量说明,每个变量说明之间用分号隔开,有时称被分号隔开的变量说明为变量说明项。例如:

varx,y:real;chl:char;t,f:boolean;

注意:不同类型的变量一般不能互相串用。

这里还应指出,变量一经说明系统就在计算机内存中为其分配一个存贮空间。在程序中使用到变量时,就在相应的内存中存入数据或取出数据,这种操作称为变量的访问。

标准数据类型

Pascal向程序设计者提供了丰富的数据类型,它们用于专门的目的,但却都是由简单的、非构造型的数据类型所构成的。本节介绍Turbo Pascal中最为基本的几种数据类型:整型、实型、布尔型和字符型。它们都是系统定义的简单数据类型,称为标准数据类型,其对应的名字称为标准标识符。

1、整型

一个整型数据用来存放整数,整型数据可以是正整数、负整数和整数零。

Turbo Pascal中的整型常数必须按规定严格书写。

Turbo Pascal支持五种预定义整型,它们是短整型(Shortint)、整型(Integer)、长整型(Longint)、字节型(Byte)和字类型(Word),每一种类型规定了相应的整数取值范围以及所占内存字节数(一个字节为8个二进制位)。因此,用户在具体编程定义变量类型时,要根据它们的特点选用适当的类型,以达到理想的效果。当两个不同范围类型的操作数进行运算时,得到的结果属于较大范围的类型。如下表所示。

Turbo Pascal语言规定可以对整型数据进行算术运算符+、-、*、Div、Mod。

它们分别表示加、减、乘、整除和取余。这五种运算,要求参加运算的两个数都是整型数,运算结果也是整型数。前三种运算与一般的算术运算加、减、乘相同。Div整除运算,是两个整型数相除取整数部分(商的整数部分),得到整型结果。Mod取余运算,是两个整型数相除取余数,余数的符号与被除数符号相同。例如:

3 Div 2 = 1 5 Div 7 = 0

6 Div (-4) = - 1 (-12) Div (-5) = 2

7 Mod 4 = 3 (14) Mod (-4) = 2

(-18) Mod (-6) = 0 6 Mod l7 = 6

由此可见,a Mod b,所得结果的符号与a相同,其值(绝对值)在0~∣b∣-1之间。运算符Mod与Div之间有如下关系:

a Mod b = a – (a Div b) * b (b<>0)

其中Mod运算的结果的符号与a的符号相同。

利用以上两种运算可以对正整数进行分离。例如:

n为四位数8531,可用下法分离出它的个、十、百、千位。

8531 Mod l0 = 1 (个位数)

(8531 Mod l00) Div l0 = 3 (十位数)

(8531 Mod l000) Div l00 = 5 (百位数)

8531 Mod l0000 = 8 (千位数)

利用 a Mod b可以判断a能否被b整除。当a Mod b = 0时,a能被b整除。

2、实型

一个实型数据用来存放实数。实型数据可以是正实数、负实数和实数零。实型数据一般用小数或指数形式(亦称科学表示法)表示。例如:

+1993,33,3.5E+8(=3.5×105), -0.5E-3(=-0.5×10-3,),-20.0,,0.0等都是合法实型数。

Turbo Pascal支持一种预定义实型,它们是基本实型(Real)、单精度实型(Single)、双精度实型(Double)、扩展实型(Extended)和装配实型(Comp)。每一种类型规定了相应的实数取值范围和所占内存字节数,以及它们所能达到的精度,即有效数字位数。因此,用户在具体编程时应根据以上的参数适当选用,以达到最佳效果。如下表所示。

对于此类实型数据,若其绝对值大于上界,则产生上溢;绝对值小于下界,则产生下溢,下溢导致结果为0。Comp类型的取值范围是-263+1~238-1之间的整数,相当于十进制的-9.218~9.218。由于Comp类型的数据表示成二进制形式的数,这种类型的变量有时处理起来比较方便,特别对于数值很大的整数间的计算,这种数据类型很有用。

Turbo Pascal语言允许实型数使用下列运算符进行运算。

运算符:+、-、*、/

分别表示加、减、乘和除。其中"/"叫实数除,即使两个整型数相除,其结果也总是实型,如: 7/2=3.5 6/3=2.0

3、字符型

用标准标识符Char标明字符型。字符型数据可以是字母、符号、数字(0-9)等ASCII码的所有字符。Turbo Pascal支持扩展ASCII码,共包括256个字符。但非印刷字符是不能在标准显示上显示或打印输出。在计算机内部,字符集的元素是以该元素在字符集内的顺序位置来标记的,位置取值范围为0~255,我们称这些整数为字符在字符集内的序数值或序号。每个字符型数据在内存中占一个字节。将字符用单引号括起来,即成字符常数,如,'X','7','?'。字符常数可按字符的序数值确定大小关系,也就是说它们的大小由它们所对应的ASCII码值决定,如:'Y','Z','A'<'a'。

由于采用ASCII码,字符依ASCII码序号排列。这样,字符与ASCII码序号有一一对应的映射关系。

4、布尔型

一个布尔型数据用来存放逻辑值,或称布尔值。Turbo Pascal支持预定义布尔型,以标准标识符Boolean表示。Boolean一词,系根据19世纪英国数学家George boole (1815-1864)的名字而得,George boole为现代布尔代数之父。布尔型数据的值只有两个:True(逻辑真)和False(逻辑假)。布尔型是顺序类型,规定False<TRUE,FALSE的序号为0,TRUE的序号为1。

逻辑运算的结果只有两个:True(真)和False(假)。Turbo Pascal提供了六种关系运算符和四种逻辑运算符:

=(等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、<>(不等于)

NOT(非)、AND(与)、OR(或)、XOR(异或)

运算关系

函 数

标准函数。Turbo Pascal语言提供了自变量为整型量的标准函数有顺序函数算术函数和转换函数等。

标准函数是Turbo Pascal语言预先定义的,它们实际上是能完成特定功能的称步子程序的程序段。每个标准函数都用一个标识符来标识,每个标准函数都能完成一个特定的功能,在程序中可以直接调用它们。Turbo Pascal语言中某些标准函数与数学中的函数有相似之处。

整数类型函数

整型是顺序类型,即所有的整型数都是按一定的顺序排列的。如3的后序数是4,350的后序数是351。以后介绍的布尔型、字符型、枚举类型和子界类型等都是顺序类型。顺序函数可以对顺序类型数据进行操作,但要注意它们自变量的取值范围。

①前趋函数:Pred(x)函数值为x-l,例如:

Pred (6)=5 Pred (-21)=-22

②后继函数:Succ (x)函数值为x+l,例如:

Succ (l5)=16 Succ (-114)= -113

③绝对值函数:Abs (x)函数值为︱X︱,例如:

Abs (-119)=119 Abs (101)=101

平方函数:Sqr (x)函数值为X2,例如:

Sqr (-5)=,25 Sqr (l0)= 100

以上四个函数的结果仍是整型数。

⑤奇函数:Odd (x),函数的结果为布尔型。当X为奇数时,函数值为true;当X为偶数时,函数值为false。例如:

Odd (13)= True Odd (16)= False

⑥字符函数:Chr (X),函数值是序号的ASCII字符,属字符型。例如:

Chr (65)='A' Chr (32)=' '

二、实数类型函数

在下列算术函数中,X可以是实型或整型数的表达式。对于函数Abs和Sqr,其结果类型和变量X的类型相同,其他算术函数的结果类型都是实型。

绝对值函数Abs(x):函数值为x的绝对值

平方函数Sqr (x):函数值为x的平方

小数函数Frac (x):函数值为x的小数部分

整数函数Int (x):函数值为x的整数部分

正弦函数Sin (x):函数值为x的正弦,其申,的单位为弧度

余弦函数Cos (x):函数值为x的余弦,其中,的单位为弧度

指数函数Exp (x):函数值为了ex

对数函数Ln (X):函数值为x的自然对数

平方根函数的Sqrt (x):函数值为x的平方根

反正切函数Arctan(x):函数值为x的反正切,单位为弧度

随机函数Random:无自变量时,函数值取(0,1)间的随机小数;有自变量且为Word类型时,函数值取(0,自变量)间的随机整数。

三、字符类型函数

Turbo Pascal语言提供如下自变量为字符型的标准函数,其中Chr为字符型。

后继函数Succ (ch):例如,Succ ('8')='9' Succ ('E')='F'

字符集的最后一个字符,Succ函数无意义。

前趋函数Pred (ch):例如,Pred ('7')='6' Pred ('B')=' A'

序数函数Ord (ch)::给出字符ch在ASCII字符集中的序号,结果为整型。

注意:Ord ('7')<>7,正确的是:Ord ('7')=Ord('0')+7=48+7=55

若ch是数字字符,则Ord (ch)-Ord ('0')是该数字字符的数值。例如:Ord ('7')-Ord('0')=7

前面介绍的字符函数Chr (i)是Ord (ch)的逆函数。例如:

Chr (55)= '7' Chr (Ord('A'))='A'

三、布尔类型函数

Turbo Pascal语言提供布尔型函数主要是几个字符型函数。

Ord (B)例如:Ord (false)=0 Ord (true)=1

表达式

运算是对数据进行加工处理的过程,得到运算结果的数学公式或其它式子统称为表达式。表达式可以是常量也可以是变量或算式,在表达式中又可分为:算术表达式、逻辑表达式和字符串表达式。

1、算术表达式:

算术表达式是最常用的表达式,又称为数值表达式。它是通过算术运算符来进行运算的数学公式。我们先来看Visual Basic中的算术运算符:

算术运算符

运算符表达式 说 明 举 例

* X*Y 求X乘Y的值 6*7=42

/ X/Y 求X除Y的值(浮点数运算) 2.76/1.2=2.3

div X div Y 求X除Y的整数商(对整型数计算) 25=5

Mod X mod Y 求X除Y的余数(对整型数运算) 25 mod 4=1

+ X+Y 加法运算 32+2=34

- X-Y 减法运算 48-21=27

由于Visual Basic只能识别按其格式书写的数学表达式,所以必须将我们常用的数学表达式转换成Visual Basic表达式。例如:

数学式 Visual Basic表达式

2、逻辑运算

逻辑运算的结果只有两个:True(真)和False(假)。Visual Basic提供了六种关系运算符和四种逻辑运算符:

=(等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、<>(不等于)

NOT(非)、AND(与)、OR(或)、XOR(异或)

运算关系

p q NOT p p AND q p OR q

True True False True True

True False False False True

False True True False True

False false True False False

例如:5>3 结果为 True, "a">"b" 结果为False。

3、表达式的运算优先顺序

在进行表达式的转换过程中,必须了解各种运算的优先顺序,使转换后的表达式能满足数学公式的运算要求。运算优先顺序为:

括号→函数→乘方→乘、除→加、减→字符连接运算符→关系运算符→逻辑运算符

如果同级的运算是按从左到右次序进行;多层括号由里向外。

例:

(10+6)*3^2*COS(1)/2*8+7

① ④ ③ ⑤ ② ⑥ ⑦ ⑧

Sqrt(Abs(p/n-1))+1

④ ③ ① ② ⑤

2.1 Pascal字符与符号

1.标识符

(1) 标识符的定义:标识符就是以字母开头的字母数字序列,有效长度为63个字符,并且大小写等效。可以用来标示常量、变量、程序、函数等。例如例1.1中的Area(程序名),pi(符号常量),s、r(变量名)都是标识符。

(2) 标识符的分类:

a.保留字(关键字)

所谓保留字是指在Pascal语言中具有特定的含义,你必须了解它的含义,以便于正确的使用,否则会造成错误。标准Pascal语言中的保留字一共有35个,Turbo Pascal语言一共有51个。下面是Pascal语言的保留字:

AND,ARRAY,BEGIN,CASE,CONST,DIV,DO,DOWNTO,ELSE,END,FILE,FOR,FUNTION,GOTO,IF,IN,LABEL,MOD,NIL,NOT,OF,OR,PACKED,PROCEDURE,PROGRAM,RECORD,REPEAT,SET,THEN,TO,TYPE,UNTIL,VAR,WHILE,WITH等

b.标准标识符:指Pascal语言预先定义的标识符,具有特殊含义。

以下列举了Turbo Pascal语言部分常用的标准表识符:

标准常量 False Maxint True

标准类型 Boolean Char Real Integer

标准函数 Abs Arctan Chr Cos Eof Eoln Exp

Ln Odd Ord Pred Round Sin Sqr

Sqrt Succ Trunc

标准过程 Dispose Get New Pack Page Put Read

Readln Reset Rewrite Unpack Write Writeln

标准文件 Input Output

c.用户自定义标识符:由你自己根据需要来定义。

(1)选用的标识符不能和保留字相同。

(2)语法上允许预定

登录或注册后发布评论
author avatar

黑客1

英勇黄铜Ⅲ 467荣誉值

10

0

1