Pascal 也分 Turbo Pascal 和 Free Pascal 的
Pascal也分TurboPascal和FreePascal的推荐的三种语言是FreePascal,Lazarus,dec-c++上面是从"知道"里复制来的.请问,Del...
Pascal 也分 Turbo Pascal 和 Free Pascal 的
推荐的三种语言是 Free Pascal ,Lazarus ,dec-c++
上面是从"知道"里复制来的.
请问,Delphi7和里面说到的Turbo Pascal和Free Pascal可以说是什么关系呢?
Free Pascal ,Lazarus ,dec-c++ 这是三种语言吗?Pascal我知道,怎么它还分Free Pascal和Turbo Pascal两种版本吗?
这样的话再问一下.某网友跟我说,Delphi7所使用的虽然是Pascal语言,但是是经过应该可以说是经过修改了的之类的吧,因此人们习惯上把它称为Delphi而不称为Pascal(这里的Delphi就相当于一种语言而不是编写平台).这和你(carmen816)所说的"Delphi所用的Pascal有点不一样,是改造过的Pascal "的意思差不多. 那请问,Pascal语言和Delphi语言(即改进后的Pascal语言)差多吗?特别是在奥林匹克信息学竞赛里?因为其中有一语言就是Pascal...(对了,这样的话,Pascal和Delphi不是不同了?那学Delphi的就无法参加了?) 展开
推荐的三种语言是 Free Pascal ,Lazarus ,dec-c++
上面是从"知道"里复制来的.
请问,Delphi7和里面说到的Turbo Pascal和Free Pascal可以说是什么关系呢?
Free Pascal ,Lazarus ,dec-c++ 这是三种语言吗?Pascal我知道,怎么它还分Free Pascal和Turbo Pascal两种版本吗?
这样的话再问一下.某网友跟我说,Delphi7所使用的虽然是Pascal语言,但是是经过应该可以说是经过修改了的之类的吧,因此人们习惯上把它称为Delphi而不称为Pascal(这里的Delphi就相当于一种语言而不是编写平台).这和你(carmen816)所说的"Delphi所用的Pascal有点不一样,是改造过的Pascal "的意思差不多. 那请问,Pascal语言和Delphi语言(即改进后的Pascal语言)差多吗?特别是在奥林匹克信息学竞赛里?因为其中有一语言就是Pascal...(对了,这样的话,Pascal和Delphi不是不同了?那学Delphi的就无法参加了?) 展开
13个回答
展开全部
Free Pascal是个由国际组织开发的完全的win32的pascal语言编译器,类似delphi,可编写windows程序。
此前被广泛使用的PASCAL编译器普遍为Turbo Pascal & Borland pascal。但是它们可用的空间十分有限。而Free Pascal理论上可以使用4GB内存。所以在利用Free Pascal编程的时候,可以改变原有思路,将大量时间转嫁给空间,提高效率。
虽然Free Pascal尽量设计得和Turbo Pascal接近,但是由于以下的两个原因,两者之间还是有一些区别的:
1. Free Pascal是一个32位的编译器,而Turbo Pascal只是16位编译器;
2. Free Pascal是一个跨平台的编译器,而Turbo Pascal只在windows和DOS上使用。
如果你的代码是遵守ANSI Pascal的,那么代码从Turbo Pascal移植到Free Pascal是没有问题的。
下面是在Turbo Pascal上可以使用,但是在Free Pascal就不能使用的一些语言特性:
1. 函数和过程在使用时,参数的类型必须和定义时完全一致。原因是在Free Pascal中添加了函数,EXCEPT,RAISE成为了关键字,因此不能作为函数和过程的名字。
3. FAR,NEAR不再是关键字了。原因是Free Pascal是32位系统,不再需要这些关键字。
4. 布尔表达式不一定要全部进行计算。只要最终结果已经能够确定,就不再计算其它还没有计算的部分了。比如布尔表达式exp1 AND exp2 AND exp3,如果已知exp1的结果是false,那么怎么表达式的结果肯定是false,exp2和exp3就不用进行计算了。
5. 在Free Pascal中,集合中的元素都是4个字节长的。
6. 表达式执行的顺序是不确定的。比如对于表达式a:=g(2)+f(3); 不保证g(2)一定在f(3)之前执行。
7. 如果用Rewrite打开文件,那么文件就只能被写入了。如果需要读取这个文件,要对文件执行Reset。
8. Free Pascal在程序结束之前一定要关闭输出文件,否则输出文件可能不能被正确的写入。
9. Free Pascal理论上可以使用4GB的内存,因此实际上几乎可以使用系统中的所有剩余内存(除非赛题中有内存限制)。这是Free Pascal由于32位的编译器。但是对于Turbo Pascal来说,由于是16位的编译器,因此不能定义大小超过64KB的数据类型和变量,并且在DOS实模式下可以使用的内存总数只有640KB。
下面是Free Pascal相对于Turbo Pascal扩充的一些功能:
1. 函数可以返回复杂的类型,比如记录和数组。
2. 在函数中,函数的返回值通常可以作为一个变量来处理。比如:
function a : longint;
begin
a:=12;
while a>4 do
begin
{...}
end;
end;
这个例子在Turbo Pascal中,a>4会被认为是函数的递归调用,但是在Free Pascal中会认为a只是一个变量。如果想在Free Pascal中实现递归调用,就要写成下面的形式:
function a : longint;
begin
a:=12;
{ this is the recursive call }
if a()>4 then
begin
{...}
end;
end;
3. exit可以接受一个参数作为函数的返回值。比如:
function a : longint;
begin
a:=12;
if a>4 then
begin
exit(a*67); {函数的返回值就是a*67 }
end;
end;
4. Free Pascal支持函数重载。可以用相同的名字定义不同的函数,只要这些函数的参数不同,就是不同的函数。比如:
procedure DoSomething (a : longint);
begin
{...}
end;
procedure DoSomething (a : real);
begin
{...}
end;
可以使用不同的参数类型longint或者real来调用不同的DoSomething过程。
由于这个功能,函数的提前声明必须有完整的参数声明:
procedure x (v : longint) : forward;
{...}
procedure x;{ 这里定义的过程x重载了前面声明的过程x。因此这里的两个x是不同的}
begin
{...}
end;
5. Free Pascal容许运算符重载。比如,可以自己为矩阵运算定义一个“+”运算。
6. Free Pascal在windows 95及其以上的windows版本上支持长文件名。对于文件名,由于windows系统对大小写不敏感,因此在程序中,文件名的大小写是无关的。但是对于其它大小写敏感的系统,比如linux,程序中用到的文件名必须和系统中的文件名完全一致。但是由于信息学竞赛的评测系统一般是linux,因此要求程序中的文件名和系统中的文件名一样。
编辑本段PASCAL程序设计介绍
1. PASCAL语言介绍
PASCAL语言是由瑞士的沃斯(N.Wirth)教授于1971年提出来的。它的命名是为了纪念法国数学家Pascal。它是世界上第一个结构化的高级程序设计语言。结构化程序设计主要由三种基本结构(顺序结构、选择结构、循环结构)组成。后来有人把函数和过程作为第四种基本结构。这四种结构对外看都只有一个入口和一个出口,结构清晰,避免了由GOTO语句所引起的混乱。另外在程序设计方法方面,主张采用自顶向下,逐步求精的方法。即将一个大的复杂问题,划分成若干少的易解决的问题。每个小问题,又可划分成一些更小的更易解决的问题。这样,只要把每个小问题都解决了,整个大问题也就解决了。这种方法也为多个人合作编程提供方便。
由于PASCAL语言具有良好的结构程序设计特性,适合于教学,特别是适合于培养学生掌握自顶向下逐步求精的结构化程序设计思想和方法,并养成良好的程序设计风格和习惯,因此,国内外许多大学都将PASCAL作为一门程序设计教学语言。
1.1.2 PASCAL程序的结构初步认识
例1-1:输入半径求园的周长和面积?
program circle(input,output);
const
Pi=3.14;
var
r,L,s:real;
begin
write('r=');
readln(r);
L:=2*pi*r;
s:=pi*r*r;
writeln('R=',r:8:2,' L=',L:8:2,' S=',s:8:2);
end .
1.1.3 调入Turbo Pascal集成环境、编辑程序、保存程序
1. 请确定Turbo.exe文件所在磁盘目录。假如它是放在F:盘的TP7文件夹(又称子目录)中。
2. 把您要保存程序文件的盘设为当前盘,并保存文件于当前盘的当前目录中。假如您的程序文件要存在H:盘的当前目录,则在DOS方式提示符“>”后输入下面命令。
> h:←┘
3.调入并执行Turbo.exe,进入Turbo Pascal集成环境。
> f:\tp7\turbo.exe←┘
4.在程序编辑窗口中,输入例1-1程序。注意一个编辑窗口只能编辑一个程序文件。常用的编辑键有:
← ↑ → ↓ :光标移动键。
Delete :删除光标所在字符。
←┘ :回车键,用于换行或在光标处插入一行之用。
5.程序编辑完后,按F10 键,执行主菜单[File]中的[Save]项目菜单保存程序到磁盘中,并试用“yz1-1.PAS”作为例1-1程序存盘文件名。
1.1.4 运行程序、观察运行结果、跟踪调试程序
1. 按F10 键,执行主菜单[ RUN ]中的[Run]项目菜单,运行程序,然后在提示后输入一个调试用的半径值:
r= 10←┘
2. 按F10 键,执行主菜单[Debug]中的[ output ]项目菜单,打开输出窗口观察到结果如下:
R= 10.00 L= 62.80 S= 314.00
如果有错,请找出错误并修改它,重复第1步,再执行直到有正确输出结果。
3.重复第1步,再次运行程序,输入另一个园的半径值5,观察输出结果是否也正确,从而确定该程序能否正确解决不同半径的园的周长和面积的求解问题。
程序调试中我们常用的操作还有:
双线框的窗口称为“当前活动窗口”。
F1 键: 得到光标所在位置的项目的帮助信息。
F4 键: 要求运行到当前光标处暂停。
F5 键: 放大或缩小当前活动窗口。
F6 键: 切换其它窗口为当前活动窗口。
F7 键: 单步执行程序并能跟踪进入子程序。
F8 键: 单步执行程序但不能跟踪进入其子程序。
F10 键:在菜单和活动窗口间转换。
CTRL + Break 键:强制终止当前程序的运行。
其它功能按键请同学们以后自己查看英文帮助说明,出色的程序员都习惯查看英文帮助。
4.学习跟踪调试方法,它可帮助我们检查分析出算法上存在的错误。
(1) 按F10 键,执行主菜单[Debug]中的[ Watch ]项目菜单,打开监视窗口
(2) 按 Insert 键,输入常量pi ←┘
Insert 键,输入变量r ←┘
Insert 键,输入变量l ←┘
Insert 键,输入变量s ←┘
(3) 请按F8 键或F7单步执行程序直到程序结束,观察上述常量和变量如何变化。
(4) 观察程序执行过程中Watch监视窗口中常量和变量的值变化,分析算法是否正确。
说明:如果想在程序还未结束前终止程序的单步执行或跟踪调试,可按F10 键,执行主菜单[Run]中的[ Program Reset ]项目菜单。
1.1.5 关闭当前活动窗口、退出Turbo Pascal集成环境
1. 按 F6 键切换当前活动窗口,执行主菜单[Windows]中的[Close]菜单项关闭当前活动窗口,如果当前活动窗口是程序编辑窗,在关闭前可能因程序已修改过而提问用户是否需要保存编辑窗口中的被更改后的程序。试逐一关闭所有窗口。
2. 执行主菜单[File]中的[Exit]菜单项可退出Turbo Pascal集成环境,返回DOS提示符状态。
1.1.6 深入理解例1-1程序各语句意义
1. 在Pascal中有些词具有特定的含义,用户必须正确理解其含义和正确使用,否则会运行出错。这些具有特定含义的词称为“保留字”。“保留字”不能做常量名、变量名或程序名。在Turbo Pascal7.0编辑窗口中,保留字默认用白色显示。例1-1中的包含的保留字有:program,const,var,begin,end,它们的特定含义分别是:program 指出后面定义的是程序名;const指出后面定义的是程序将用到的常量;var指出后面定义的是程序将用到的变量;begin指出程序执行代码开始;end指出程序执行代码结束。
2. 除了保留字外,还用到标识符,用于表示常量、变量、类型、文件、函数、过程或程序的名字。标识符是以字母开头的字母、数字组合,标识符又分为标准标识符和用户自定义标识符。如例1-1中,用户自定义标识符有:程序名为circle,常量pi,实数型变量r、l和s,它们由程序设计者定义的;标准标识符有:实数标准类型名real,读数标准过程名readln,输出标准过程名write和writeln ,标准输入文件input,标准输出文件output。在Pascal编译系统中,标准标识符也具有特殊的含义,我们定义标识符时也应尽量避免与标准标识符取相同名字。PASCAL中的保留字及标识符是不区分大小写的。
保留字 program , const , var , begin ,end
标识符 标准标识符 Real,readln,write,writeln,input,output
用户自定义标识符 circle , pi , r , l , s
3. 注意程序的书写格式
程序名说明: program <用户自定义的程序名>(input,output);其中圆括号的内容称为程序的参数。程序参数指明程序与外部联系的文件名。input是标准输入文件,例如键盘;output是标准输出文件,例如屏幕、打印机等。对于标准设备常可省略(input,output)的说明,简写为:program <用户自定义的程序名>;如例1-1可省略简写为:“ program circle; ”
常量定义:Const
<常量标识符>=<常量>;
......
<常量标识符>=<常量>;
变量定义:var
<变量表> :<类型>;
......
<变量表> :<类型>;
主程序语句部分: begin
<语句>;
......
<语句>;
end .
赋值语句: <变量名标识符>:=<表达式>; 其意义是把右边表达式的运算结果送到左边变量名所对应的数据区中。
读数据标准过程(又称读语句):read(变量表),园括符内必须是已定义过的变量标识符,有多个时变量时可用逗号分隔构成变量表。
输出数据标准过程(又称写语句):write(数据项表)或writeln(数据项表),有多个数据项时要用逗号分隔。数据项可以是字符串(如:'L=',' S=')、变量(如:l、s),如:s:8:2,表示要求输出时数据保留2位小数位,总长度包括小数点为8位;write与writeln区别是writeln完成所有输出后自动换行。
1.2 PASCAL基本组成
1.2.1 PASCAL语言使用的几类基本符号
(1) 大小写英文字母:A,B,...Z,a,b,..z
(2) 数字:0,1,2,3,4,5,6,7,8,9
(3) 其它符号:+ , - , * , / , = , < > , >= , <= , < , > , ( , ) ,[ ,] , := , ' , , . : , .. , ∧ 等。
注意:PASCAL的标识符及保留字定义只能采用上述基本符号,其它特殊符号。例如:αβε∮∞≈,汉字等只能在字符型常量中使用。
1.2.2 PASCAL语言使用的保留字
在PASCAL语言中,有些词具有特定的含义。用户必须了解其含义,以便正确的使用,否则会造成错误,这些具有特定含义的词被称为保留字,保留字不能作其它用途,如作变量名等。在Turbo pascal7.0中,保留字默认用白色显示,保留字如下:PROGRAM ,CONST,VAR,BEGIN,END,AND,ARRAY,CASE,DIV,DO,DOWNTO,ELSE,FILE,FOR,FUNCTION,GOTO,IF,IN,LABEL,MOD,NIL,NOT,OF,OR,PACKED,PROCEDURE,PROGRAM,RECORD,REPEART,SET,THEN,TO,TYPE,UNTIL,WHILE,WITH等。
1.2.3 语法图说明
语法是语言的结构规则,语言的所有成分都必须符合语法的要求,如果语言的结构规则描述不严密,就会产生岐义。我们在下面说明语法中,采用语法图进行描述,使说明更加简洁。语法图常用的4种图形元素的意义如下:
1.2.4 PASCAL语言中的标识符
在PASCAL中标识符分标准标识符和用户自定义标识符,它可作为常量、变量、类型、过程、函数和文件的名字。标识符是以字母开头的字母数字序列,构成语法如下图示:
在PASCAL中有些标识符已定义了特定的含义,称为标准标识符,它们是:
标准常量:false,true,maxint等;
标准类型:integer,real,char,boolean,string,text等;
标准文件:input,output等;
标准函数:abs,chr,cos,eof,eoln,round等;
标准过程:read,readln,write,writeln,new,reset等;
指出下面用户自定义标识符为什么会错: begin,1student,student 1,
1.2.5 PASCAL中使用的常量与变量
程序中数据分为两类:一类是在程序执行过程中其值保持不变的量,称为常量;另一类是在程序执行过程中,其值可以改变的,这类数据称为变量。根据使用方式的不同,常量又可以分为直接常量和用户定义常量两种。
1.直接常量
指程序中直接引用的常数,在PASCAL中经常使用的常量有:整型常数,实型常数,字符型常数和布尔型常数等。
(1) 整型常数语法图如下:
如:100 , +120 ,-199 , 0等。
(2) 实型常数语法图如下:
如:100 , +120 ,2.5 ,0 ,0.005 , +2.418 , 1.24E+3 ,-1.24E+3
这里E表示用科学记数法表示,1.24E+3相当于数学的1.24×10+3 。
(3) 字符型常数语法图如下:
如:'A' ,'a','?','4','aBbc','12.5'等。
(4) 布尔型常量
布尔型常量简称为布尔型常数,它只有两个:true和false,分别表示逻辑判断的结果是真(True)和假(False)。
2.用户自定义常量
在程序中,如果一个常数反复多次出现在程序中,用户可以通过说明语句来定义一个标识符来代表这个常量。常量说明语法图如下:
如: const
pi=3.14;
country='China';
success=true;
3.变量说明
PASCAL程序中数值可以改变的量称为变量,由于变量可以取不同的值,因此变量必须通过标识符来代表。程序中出现的每个变量都必须在程序的变量说明部分进行类型说明.变量说明语法图如下:
如: var
x,y,z:real;
i,j,k:integer;
ch:char;
t,f:boolean;
name:string;
1.2.6 Turbo Pascal中标准数据类型介绍
数据的类型确定了该类数据的表示形式和取值范围,而且确定了其所能参加的各种运算。PASCAL语言提供了丰富的数据类型,如下图1.1所示。这里我们先介绍标准类型,其它类型以后用到时才介绍。
1.整型
一个数存放在计算机中都要占用固定的存储空间,这决定了在计算机中的每种数据类型定义的数的大小是有限的,这点与数学中的定义不同,为了节省空间和提高处理速度,我们通常要根椐处理的数的最大可能决定选用不同的数据类型。Byte为信息存储单位。
整数的可选类型如下:
名称 类型标识符 数据表示范围 占用存储空间
整型 integer -32768 ~ +32767 2byte
短整型 shortint -128 ~ +127 1byte
长整型 longint -2147483648 ~ +2147483647 4byte
字节型 byte 0 ~ 255 1byte
字型 word 0 ~ 65535 2byte
例:var
i:byte;
当i值取256时出错,因为byte类型只能接受0~255之间的数。可定义大些,如word型
提问:若解题时i的最大可能取值为40000,问i变量应定义为那种数据类型较合适?
2.实型:实型有4种类型,如下表示
实型名称 类型标识符 数据表示范围 有效位 占用存储空间
实型 real -2.9*10^39~+1.7*10^38 11~12 6byte
单精度型 single -1.5*10^45~+3.4*10^38 7~8 4byte
双精度型 double -5.0*10^-324~+1.7*10^308 15~16 8byte
扩展型 extended -1.9*10^-4932~+1.1*10^4932 19~20 10byte
装配十进制型 comp -2^63+1 ~ +2^63 –1 19~20 8byte
注:在Turbo Pascal中,single,double,extended,comp需要计算机的数学协处理器支持,即要在程序首行加入编译开关{$N+},若计算机为486SX以下,没有协处理器,可采用仿真办法,即在程序首行加入编译开关{$N+,$E+}
例:var
x:real;
当x的数学值为2时,在计算机中的值为:2.0000000000E+00
当x的数学值为-25时,在计算机中的值为:-2.5000000000E+01
当x的数学值为0.05时,在计算机中的值为:5.0000000000E-02
3. 字符型和字符串型
名称 类型标识符 说明
字符型 char 单个字符用一对单引号括起的数据。
字符串型 string 一个或一串字符用一对单引号括起来的数据。
例: var
ox:char;
note:string;
name:string[5];
4. 布尔型
名称 类型标识符 说明
布尔型 boolean 值只有true和false,分别表示真和假或对与错。
1.2.7 运算符、标准函数及标准过程
1.运算符
在PASCAL中提供的运算符有算术运算符、关系运算符和逻辑运算符等。不同的运算符都规定了其运算对象的数据类型和运算结果的类型。如下表:
运算符 运算类型 运算对象及类型 结果类型
+、-、* 算术运算 整型或实型 整型或实型
/ 算术运算 整型或实型 实型
div、mod 算术运算 整型 整型
not、and、or 逻辑运算 布尔型 布尔型
< 、<= 、= 、> 、>= 、<> 关系运算 标准类型 布尔型
(1)算术运算符+ 、- 、 * 、/ 说明
在PASCAL中乘用“*”表示,除用“/”表示。通过下面例子加深理解:
运算对象及式子 运算结果 结果类型
1+5 6 整型
1.0+5 6.0000000000E+00 实型
6/2 3.0000000000E+00 实型
2*6 12 整型
2.0*6 1.2000000000E+01 实型
(2) 算术运算符div 、mod 说明
div表示求两个整数除的商,mod表示求两上整数除的余数。
运算对象及式子 运算结果 结果类型及说明
7 div 2 3 整型
7 mod 2 1 整型
7.0 div 2 出错 运算对象不允许实数
(4) 关系运算符< 、<= 、= 、> 、>= 、<>说明
运算对象及式子 运算结果 结果类型及说明
7 >5 true 布尔型
7<>7 false 布尔型
7=7 true 布尔型
7>=7 true 布尔型
7.5>7 true 布尔型
'B'>'A' true 布尔型
'b'>'B' true 布尔型
'abd'>'abc' true 布尔型
说明:字符常量比较大小是按字符对应的ASCII码值大小比较大小。如:字符'A'的ASCII码为65,'B'的ASCII码为66 ,故'B'>'A',在ASCII码表中,小写字母的ASCII值又大过大写字母的ASCII值,故'b'>'B'。字符串的比较是逐个比,直到不同为止,故有'abd'>'abc' 。
(5) 逻辑运算符not、and、or
运算符 名称 意义 举例 结果
Not 非运算 相当于“求反” not(4>3) F not true false
And 与运算 相当于“而且” (4>3) and (2>3) F true and false false
Or 或运算 相当于“或者” (4>3) or (2>3) F true or false true
下表说明逻辑运算的运算结果
A B not A A and B A or B
true true false true true
true false false false true
false true true false true
false false true false false
(6) 字符串连接运算符 +
如:'abc'+'def' 结果为:'abcdef' 。
此前被广泛使用的PASCAL编译器普遍为Turbo Pascal & Borland pascal。但是它们可用的空间十分有限。而Free Pascal理论上可以使用4GB内存。所以在利用Free Pascal编程的时候,可以改变原有思路,将大量时间转嫁给空间,提高效率。
虽然Free Pascal尽量设计得和Turbo Pascal接近,但是由于以下的两个原因,两者之间还是有一些区别的:
1. Free Pascal是一个32位的编译器,而Turbo Pascal只是16位编译器;
2. Free Pascal是一个跨平台的编译器,而Turbo Pascal只在windows和DOS上使用。
如果你的代码是遵守ANSI Pascal的,那么代码从Turbo Pascal移植到Free Pascal是没有问题的。
下面是在Turbo Pascal上可以使用,但是在Free Pascal就不能使用的一些语言特性:
1. 函数和过程在使用时,参数的类型必须和定义时完全一致。原因是在Free Pascal中添加了函数,EXCEPT,RAISE成为了关键字,因此不能作为函数和过程的名字。
3. FAR,NEAR不再是关键字了。原因是Free Pascal是32位系统,不再需要这些关键字。
4. 布尔表达式不一定要全部进行计算。只要最终结果已经能够确定,就不再计算其它还没有计算的部分了。比如布尔表达式exp1 AND exp2 AND exp3,如果已知exp1的结果是false,那么怎么表达式的结果肯定是false,exp2和exp3就不用进行计算了。
5. 在Free Pascal中,集合中的元素都是4个字节长的。
6. 表达式执行的顺序是不确定的。比如对于表达式a:=g(2)+f(3); 不保证g(2)一定在f(3)之前执行。
7. 如果用Rewrite打开文件,那么文件就只能被写入了。如果需要读取这个文件,要对文件执行Reset。
8. Free Pascal在程序结束之前一定要关闭输出文件,否则输出文件可能不能被正确的写入。
9. Free Pascal理论上可以使用4GB的内存,因此实际上几乎可以使用系统中的所有剩余内存(除非赛题中有内存限制)。这是Free Pascal由于32位的编译器。但是对于Turbo Pascal来说,由于是16位的编译器,因此不能定义大小超过64KB的数据类型和变量,并且在DOS实模式下可以使用的内存总数只有640KB。
下面是Free Pascal相对于Turbo Pascal扩充的一些功能:
1. 函数可以返回复杂的类型,比如记录和数组。
2. 在函数中,函数的返回值通常可以作为一个变量来处理。比如:
function a : longint;
begin
a:=12;
while a>4 do
begin
{...}
end;
end;
这个例子在Turbo Pascal中,a>4会被认为是函数的递归调用,但是在Free Pascal中会认为a只是一个变量。如果想在Free Pascal中实现递归调用,就要写成下面的形式:
function a : longint;
begin
a:=12;
{ this is the recursive call }
if a()>4 then
begin
{...}
end;
end;
3. exit可以接受一个参数作为函数的返回值。比如:
function a : longint;
begin
a:=12;
if a>4 then
begin
exit(a*67); {函数的返回值就是a*67 }
end;
end;
4. Free Pascal支持函数重载。可以用相同的名字定义不同的函数,只要这些函数的参数不同,就是不同的函数。比如:
procedure DoSomething (a : longint);
begin
{...}
end;
procedure DoSomething (a : real);
begin
{...}
end;
可以使用不同的参数类型longint或者real来调用不同的DoSomething过程。
由于这个功能,函数的提前声明必须有完整的参数声明:
procedure x (v : longint) : forward;
{...}
procedure x;{ 这里定义的过程x重载了前面声明的过程x。因此这里的两个x是不同的}
begin
{...}
end;
5. Free Pascal容许运算符重载。比如,可以自己为矩阵运算定义一个“+”运算。
6. Free Pascal在windows 95及其以上的windows版本上支持长文件名。对于文件名,由于windows系统对大小写不敏感,因此在程序中,文件名的大小写是无关的。但是对于其它大小写敏感的系统,比如linux,程序中用到的文件名必须和系统中的文件名完全一致。但是由于信息学竞赛的评测系统一般是linux,因此要求程序中的文件名和系统中的文件名一样。
编辑本段PASCAL程序设计介绍
1. PASCAL语言介绍
PASCAL语言是由瑞士的沃斯(N.Wirth)教授于1971年提出来的。它的命名是为了纪念法国数学家Pascal。它是世界上第一个结构化的高级程序设计语言。结构化程序设计主要由三种基本结构(顺序结构、选择结构、循环结构)组成。后来有人把函数和过程作为第四种基本结构。这四种结构对外看都只有一个入口和一个出口,结构清晰,避免了由GOTO语句所引起的混乱。另外在程序设计方法方面,主张采用自顶向下,逐步求精的方法。即将一个大的复杂问题,划分成若干少的易解决的问题。每个小问题,又可划分成一些更小的更易解决的问题。这样,只要把每个小问题都解决了,整个大问题也就解决了。这种方法也为多个人合作编程提供方便。
由于PASCAL语言具有良好的结构程序设计特性,适合于教学,特别是适合于培养学生掌握自顶向下逐步求精的结构化程序设计思想和方法,并养成良好的程序设计风格和习惯,因此,国内外许多大学都将PASCAL作为一门程序设计教学语言。
1.1.2 PASCAL程序的结构初步认识
例1-1:输入半径求园的周长和面积?
program circle(input,output);
const
Pi=3.14;
var
r,L,s:real;
begin
write('r=');
readln(r);
L:=2*pi*r;
s:=pi*r*r;
writeln('R=',r:8:2,' L=',L:8:2,' S=',s:8:2);
end .
1.1.3 调入Turbo Pascal集成环境、编辑程序、保存程序
1. 请确定Turbo.exe文件所在磁盘目录。假如它是放在F:盘的TP7文件夹(又称子目录)中。
2. 把您要保存程序文件的盘设为当前盘,并保存文件于当前盘的当前目录中。假如您的程序文件要存在H:盘的当前目录,则在DOS方式提示符“>”后输入下面命令。
> h:←┘
3.调入并执行Turbo.exe,进入Turbo Pascal集成环境。
> f:\tp7\turbo.exe←┘
4.在程序编辑窗口中,输入例1-1程序。注意一个编辑窗口只能编辑一个程序文件。常用的编辑键有:
← ↑ → ↓ :光标移动键。
Delete :删除光标所在字符。
←┘ :回车键,用于换行或在光标处插入一行之用。
5.程序编辑完后,按F10 键,执行主菜单[File]中的[Save]项目菜单保存程序到磁盘中,并试用“yz1-1.PAS”作为例1-1程序存盘文件名。
1.1.4 运行程序、观察运行结果、跟踪调试程序
1. 按F10 键,执行主菜单[ RUN ]中的[Run]项目菜单,运行程序,然后在提示后输入一个调试用的半径值:
r= 10←┘
2. 按F10 键,执行主菜单[Debug]中的[ output ]项目菜单,打开输出窗口观察到结果如下:
R= 10.00 L= 62.80 S= 314.00
如果有错,请找出错误并修改它,重复第1步,再执行直到有正确输出结果。
3.重复第1步,再次运行程序,输入另一个园的半径值5,观察输出结果是否也正确,从而确定该程序能否正确解决不同半径的园的周长和面积的求解问题。
程序调试中我们常用的操作还有:
双线框的窗口称为“当前活动窗口”。
F1 键: 得到光标所在位置的项目的帮助信息。
F4 键: 要求运行到当前光标处暂停。
F5 键: 放大或缩小当前活动窗口。
F6 键: 切换其它窗口为当前活动窗口。
F7 键: 单步执行程序并能跟踪进入子程序。
F8 键: 单步执行程序但不能跟踪进入其子程序。
F10 键:在菜单和活动窗口间转换。
CTRL + Break 键:强制终止当前程序的运行。
其它功能按键请同学们以后自己查看英文帮助说明,出色的程序员都习惯查看英文帮助。
4.学习跟踪调试方法,它可帮助我们检查分析出算法上存在的错误。
(1) 按F10 键,执行主菜单[Debug]中的[ Watch ]项目菜单,打开监视窗口
(2) 按 Insert 键,输入常量pi ←┘
Insert 键,输入变量r ←┘
Insert 键,输入变量l ←┘
Insert 键,输入变量s ←┘
(3) 请按F8 键或F7单步执行程序直到程序结束,观察上述常量和变量如何变化。
(4) 观察程序执行过程中Watch监视窗口中常量和变量的值变化,分析算法是否正确。
说明:如果想在程序还未结束前终止程序的单步执行或跟踪调试,可按F10 键,执行主菜单[Run]中的[ Program Reset ]项目菜单。
1.1.5 关闭当前活动窗口、退出Turbo Pascal集成环境
1. 按 F6 键切换当前活动窗口,执行主菜单[Windows]中的[Close]菜单项关闭当前活动窗口,如果当前活动窗口是程序编辑窗,在关闭前可能因程序已修改过而提问用户是否需要保存编辑窗口中的被更改后的程序。试逐一关闭所有窗口。
2. 执行主菜单[File]中的[Exit]菜单项可退出Turbo Pascal集成环境,返回DOS提示符状态。
1.1.6 深入理解例1-1程序各语句意义
1. 在Pascal中有些词具有特定的含义,用户必须正确理解其含义和正确使用,否则会运行出错。这些具有特定含义的词称为“保留字”。“保留字”不能做常量名、变量名或程序名。在Turbo Pascal7.0编辑窗口中,保留字默认用白色显示。例1-1中的包含的保留字有:program,const,var,begin,end,它们的特定含义分别是:program 指出后面定义的是程序名;const指出后面定义的是程序将用到的常量;var指出后面定义的是程序将用到的变量;begin指出程序执行代码开始;end指出程序执行代码结束。
2. 除了保留字外,还用到标识符,用于表示常量、变量、类型、文件、函数、过程或程序的名字。标识符是以字母开头的字母、数字组合,标识符又分为标准标识符和用户自定义标识符。如例1-1中,用户自定义标识符有:程序名为circle,常量pi,实数型变量r、l和s,它们由程序设计者定义的;标准标识符有:实数标准类型名real,读数标准过程名readln,输出标准过程名write和writeln ,标准输入文件input,标准输出文件output。在Pascal编译系统中,标准标识符也具有特殊的含义,我们定义标识符时也应尽量避免与标准标识符取相同名字。PASCAL中的保留字及标识符是不区分大小写的。
保留字 program , const , var , begin ,end
标识符 标准标识符 Real,readln,write,writeln,input,output
用户自定义标识符 circle , pi , r , l , s
3. 注意程序的书写格式
程序名说明: program <用户自定义的程序名>(input,output);其中圆括号的内容称为程序的参数。程序参数指明程序与外部联系的文件名。input是标准输入文件,例如键盘;output是标准输出文件,例如屏幕、打印机等。对于标准设备常可省略(input,output)的说明,简写为:program <用户自定义的程序名>;如例1-1可省略简写为:“ program circle; ”
常量定义:Const
<常量标识符>=<常量>;
......
<常量标识符>=<常量>;
变量定义:var
<变量表> :<类型>;
......
<变量表> :<类型>;
主程序语句部分: begin
<语句>;
......
<语句>;
end .
赋值语句: <变量名标识符>:=<表达式>; 其意义是把右边表达式的运算结果送到左边变量名所对应的数据区中。
读数据标准过程(又称读语句):read(变量表),园括符内必须是已定义过的变量标识符,有多个时变量时可用逗号分隔构成变量表。
输出数据标准过程(又称写语句):write(数据项表)或writeln(数据项表),有多个数据项时要用逗号分隔。数据项可以是字符串(如:'L=',' S=')、变量(如:l、s),如:s:8:2,表示要求输出时数据保留2位小数位,总长度包括小数点为8位;write与writeln区别是writeln完成所有输出后自动换行。
1.2 PASCAL基本组成
1.2.1 PASCAL语言使用的几类基本符号
(1) 大小写英文字母:A,B,...Z,a,b,..z
(2) 数字:0,1,2,3,4,5,6,7,8,9
(3) 其它符号:+ , - , * , / , = , < > , >= , <= , < , > , ( , ) ,[ ,] , := , ' , , . : , .. , ∧ 等。
注意:PASCAL的标识符及保留字定义只能采用上述基本符号,其它特殊符号。例如:αβε∮∞≈,汉字等只能在字符型常量中使用。
1.2.2 PASCAL语言使用的保留字
在PASCAL语言中,有些词具有特定的含义。用户必须了解其含义,以便正确的使用,否则会造成错误,这些具有特定含义的词被称为保留字,保留字不能作其它用途,如作变量名等。在Turbo pascal7.0中,保留字默认用白色显示,保留字如下:PROGRAM ,CONST,VAR,BEGIN,END,AND,ARRAY,CASE,DIV,DO,DOWNTO,ELSE,FILE,FOR,FUNCTION,GOTO,IF,IN,LABEL,MOD,NIL,NOT,OF,OR,PACKED,PROCEDURE,PROGRAM,RECORD,REPEART,SET,THEN,TO,TYPE,UNTIL,WHILE,WITH等。
1.2.3 语法图说明
语法是语言的结构规则,语言的所有成分都必须符合语法的要求,如果语言的结构规则描述不严密,就会产生岐义。我们在下面说明语法中,采用语法图进行描述,使说明更加简洁。语法图常用的4种图形元素的意义如下:
1.2.4 PASCAL语言中的标识符
在PASCAL中标识符分标准标识符和用户自定义标识符,它可作为常量、变量、类型、过程、函数和文件的名字。标识符是以字母开头的字母数字序列,构成语法如下图示:
在PASCAL中有些标识符已定义了特定的含义,称为标准标识符,它们是:
标准常量:false,true,maxint等;
标准类型:integer,real,char,boolean,string,text等;
标准文件:input,output等;
标准函数:abs,chr,cos,eof,eoln,round等;
标准过程:read,readln,write,writeln,new,reset等;
指出下面用户自定义标识符为什么会错: begin,1student,student 1,
1.2.5 PASCAL中使用的常量与变量
程序中数据分为两类:一类是在程序执行过程中其值保持不变的量,称为常量;另一类是在程序执行过程中,其值可以改变的,这类数据称为变量。根据使用方式的不同,常量又可以分为直接常量和用户定义常量两种。
1.直接常量
指程序中直接引用的常数,在PASCAL中经常使用的常量有:整型常数,实型常数,字符型常数和布尔型常数等。
(1) 整型常数语法图如下:
如:100 , +120 ,-199 , 0等。
(2) 实型常数语法图如下:
如:100 , +120 ,2.5 ,0 ,0.005 , +2.418 , 1.24E+3 ,-1.24E+3
这里E表示用科学记数法表示,1.24E+3相当于数学的1.24×10+3 。
(3) 字符型常数语法图如下:
如:'A' ,'a','?','4','aBbc','12.5'等。
(4) 布尔型常量
布尔型常量简称为布尔型常数,它只有两个:true和false,分别表示逻辑判断的结果是真(True)和假(False)。
2.用户自定义常量
在程序中,如果一个常数反复多次出现在程序中,用户可以通过说明语句来定义一个标识符来代表这个常量。常量说明语法图如下:
如: const
pi=3.14;
country='China';
success=true;
3.变量说明
PASCAL程序中数值可以改变的量称为变量,由于变量可以取不同的值,因此变量必须通过标识符来代表。程序中出现的每个变量都必须在程序的变量说明部分进行类型说明.变量说明语法图如下:
如: var
x,y,z:real;
i,j,k:integer;
ch:char;
t,f:boolean;
name:string;
1.2.6 Turbo Pascal中标准数据类型介绍
数据的类型确定了该类数据的表示形式和取值范围,而且确定了其所能参加的各种运算。PASCAL语言提供了丰富的数据类型,如下图1.1所示。这里我们先介绍标准类型,其它类型以后用到时才介绍。
1.整型
一个数存放在计算机中都要占用固定的存储空间,这决定了在计算机中的每种数据类型定义的数的大小是有限的,这点与数学中的定义不同,为了节省空间和提高处理速度,我们通常要根椐处理的数的最大可能决定选用不同的数据类型。Byte为信息存储单位。
整数的可选类型如下:
名称 类型标识符 数据表示范围 占用存储空间
整型 integer -32768 ~ +32767 2byte
短整型 shortint -128 ~ +127 1byte
长整型 longint -2147483648 ~ +2147483647 4byte
字节型 byte 0 ~ 255 1byte
字型 word 0 ~ 65535 2byte
例:var
i:byte;
当i值取256时出错,因为byte类型只能接受0~255之间的数。可定义大些,如word型
提问:若解题时i的最大可能取值为40000,问i变量应定义为那种数据类型较合适?
2.实型:实型有4种类型,如下表示
实型名称 类型标识符 数据表示范围 有效位 占用存储空间
实型 real -2.9*10^39~+1.7*10^38 11~12 6byte
单精度型 single -1.5*10^45~+3.4*10^38 7~8 4byte
双精度型 double -5.0*10^-324~+1.7*10^308 15~16 8byte
扩展型 extended -1.9*10^-4932~+1.1*10^4932 19~20 10byte
装配十进制型 comp -2^63+1 ~ +2^63 –1 19~20 8byte
注:在Turbo Pascal中,single,double,extended,comp需要计算机的数学协处理器支持,即要在程序首行加入编译开关{$N+},若计算机为486SX以下,没有协处理器,可采用仿真办法,即在程序首行加入编译开关{$N+,$E+}
例:var
x:real;
当x的数学值为2时,在计算机中的值为:2.0000000000E+00
当x的数学值为-25时,在计算机中的值为:-2.5000000000E+01
当x的数学值为0.05时,在计算机中的值为:5.0000000000E-02
3. 字符型和字符串型
名称 类型标识符 说明
字符型 char 单个字符用一对单引号括起的数据。
字符串型 string 一个或一串字符用一对单引号括起来的数据。
例: var
ox:char;
note:string;
name:string[5];
4. 布尔型
名称 类型标识符 说明
布尔型 boolean 值只有true和false,分别表示真和假或对与错。
1.2.7 运算符、标准函数及标准过程
1.运算符
在PASCAL中提供的运算符有算术运算符、关系运算符和逻辑运算符等。不同的运算符都规定了其运算对象的数据类型和运算结果的类型。如下表:
运算符 运算类型 运算对象及类型 结果类型
+、-、* 算术运算 整型或实型 整型或实型
/ 算术运算 整型或实型 实型
div、mod 算术运算 整型 整型
not、and、or 逻辑运算 布尔型 布尔型
< 、<= 、= 、> 、>= 、<> 关系运算 标准类型 布尔型
(1)算术运算符+ 、- 、 * 、/ 说明
在PASCAL中乘用“*”表示,除用“/”表示。通过下面例子加深理解:
运算对象及式子 运算结果 结果类型
1+5 6 整型
1.0+5 6.0000000000E+00 实型
6/2 3.0000000000E+00 实型
2*6 12 整型
2.0*6 1.2000000000E+01 实型
(2) 算术运算符div 、mod 说明
div表示求两个整数除的商,mod表示求两上整数除的余数。
运算对象及式子 运算结果 结果类型及说明
7 div 2 3 整型
7 mod 2 1 整型
7.0 div 2 出错 运算对象不允许实数
(4) 关系运算符< 、<= 、= 、> 、>= 、<>说明
运算对象及式子 运算结果 结果类型及说明
7 >5 true 布尔型
7<>7 false 布尔型
7=7 true 布尔型
7>=7 true 布尔型
7.5>7 true 布尔型
'B'>'A' true 布尔型
'b'>'B' true 布尔型
'abd'>'abc' true 布尔型
说明:字符常量比较大小是按字符对应的ASCII码值大小比较大小。如:字符'A'的ASCII码为65,'B'的ASCII码为66 ,故'B'>'A',在ASCII码表中,小写字母的ASCII值又大过大写字母的ASCII值,故'b'>'B'。字符串的比较是逐个比,直到不同为止,故有'abd'>'abc' 。
(5) 逻辑运算符not、and、or
运算符 名称 意义 举例 结果
Not 非运算 相当于“求反” not(4>3) F not true false
And 与运算 相当于“而且” (4>3) and (2>3) F true and false false
Or 或运算 相当于“或者” (4>3) or (2>3) F true or false true
下表说明逻辑运算的运算结果
A B not A A and B A or B
true true false true true
true false false false true
false true true false true
false false true false false
(6) 字符串连接运算符 +
如:'abc'+'def' 结果为:'abcdef' 。
参考资料: http://baike.baidu.com/view/26358.html?wtp=tt
展开全部
Pascal 是语言
Free Pascal,Turbo Pascal,Delphi是开发工具
Delphi所用的Pascal有点不一样,是改造过的Pascal
语言是语言,工具是工具
就像C++对应的开发工具有TurBo C,Borland C++,Visual C++(简称VC),Borland C++ builder(简称BCB)
Delphi是语言的名称,也是工具的名称,更是CodeGear的产品线的名字
Delphi 的Pascal是一种面向对象的Pascal,因为传统的Pascal是面向过程的
Borland公司把这种传统的Pascal改进成了Object Pascal(面向对象的Pascal语言),在Delphi这个开发工具出到4.0后,就不再使用Object Pascal语言,直接称之为Delphi语言,每一次Delphi和升级都会使Delphi语言改动的
如果你会了Delphi语言,基本上就会了Pascal语言,只是有些书写习惯和函数调用不一样,语法一样的
留下QQ,我教你
Free Pascal,Turbo Pascal,Delphi是开发工具
Delphi所用的Pascal有点不一样,是改造过的Pascal
语言是语言,工具是工具
就像C++对应的开发工具有TurBo C,Borland C++,Visual C++(简称VC),Borland C++ builder(简称BCB)
Delphi是语言的名称,也是工具的名称,更是CodeGear的产品线的名字
Delphi 的Pascal是一种面向对象的Pascal,因为传统的Pascal是面向过程的
Borland公司把这种传统的Pascal改进成了Object Pascal(面向对象的Pascal语言),在Delphi这个开发工具出到4.0后,就不再使用Object Pascal语言,直接称之为Delphi语言,每一次Delphi和升级都会使Delphi语言改动的
如果你会了Delphi语言,基本上就会了Pascal语言,只是有些书写习惯和函数调用不一样,语法一样的
留下QQ,我教你
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Pascal 是语言
Free Pascal,Turbo Pascal,Delphi是开发工具
Delphi所用的Pascal有点不一样,是改造过的Pascal
语言是语言,工具是工具
就像C++对应的开发工具有TurBo C,Borland C++,Visual C++(简称VC),Borland C++ builder(简称BCB)
Delphi是语言的名称,也是工具的名称,更是CodeGear的产品线的名字
Delphi 的Pascal是一种面向对象的Pascal,因为传统的Pascal是面向过程的
Borland公司把这种传统的Pascal改进成了Object Pascal(面向对象的Pascal语言),在Delphi这个开发工具出到4.0后,就不再使用Object Pascal语言,直接称之为Delphi语言,每一次Delphi和升级都会使Delphi语言改动的
1. Pascal 支持子程序嵌套,C 否。因为 C 的设计目标之一就是与机器语言的结构直接对应。
2. Pascal 子程序分过程/函数,C 只有函数。
3. Pascal 类型更严格,如 char, boolean 都是特殊的枚举类型,而枚举与整型不是一回事,必须用 Ord() 转换。
而 C 的 char、enum 都被当作整型。
4. C 支持可变参数 void f(int x, ...),Pascal 没有。
5. C/C++ 的模块机制是头文件的文件包含+*.obj文件的连接,文件包含属于文本操作,编译速度很慢。而 Pascal 是 unit 的连接,二进制操作,编译速度飞快(对开发大型软件还是很重要的)
6. C 语言的结构/数组的初始化只用给出数值,而且元素个数可以比定义的少;而Pascal必须明确指出分量名称,个数严格对应:
var Point: TPoint = ( x: 100, y: 200 );
7. C 的标志符大小写敏感,Pascal 否。
8. C 编译预处理功能比 Pascal 的强大,实践中也很重要(它弥补了 C 编译器的许多不足)。
9. 很容易被忽视也很重要的一条:两者的表达式不同。
9.1. C/C++ 的表达式被赋予了太多的使命,连赋值语句本身也是表达式,a = b 同时返回 a,因此可以写 a = b = c; 而 Pascal 对赋值号被严格当作一个规定好的操作:赋值,别无其它,你不能写 a := b := c。
9.2. C/C++ 的表达式的类型严格取决于源操作数: char a = 100, b = 200; 则 a+b 的结果类型仍然是 char,当然就会溢出。Pascal 会“体贴”地替你扩展成足够大的数据类型:
归根结蒂,C 贴近机器,骨子里把操作数当作“二进制”处理(这有时是优点,尤其是跟硬件打交道时);Pascal 贴近数学,尽量以数学的视角看待数值。
10. 至于 C 的 for 循环如何强大,Pascal 的 for 循环如何循规蹈矩,这些都不是太重要
至于Delphi我没接触过,不太清楚。
Free Pascal,Turbo Pascal,Delphi是开发工具
Delphi所用的Pascal有点不一样,是改造过的Pascal
语言是语言,工具是工具
就像C++对应的开发工具有TurBo C,Borland C++,Visual C++(简称VC),Borland C++ builder(简称BCB)
Delphi是语言的名称,也是工具的名称,更是CodeGear的产品线的名字
Delphi 的Pascal是一种面向对象的Pascal,因为传统的Pascal是面向过程的
Borland公司把这种传统的Pascal改进成了Object Pascal(面向对象的Pascal语言),在Delphi这个开发工具出到4.0后,就不再使用Object Pascal语言,直接称之为Delphi语言,每一次Delphi和升级都会使Delphi语言改动的
1. Pascal 支持子程序嵌套,C 否。因为 C 的设计目标之一就是与机器语言的结构直接对应。
2. Pascal 子程序分过程/函数,C 只有函数。
3. Pascal 类型更严格,如 char, boolean 都是特殊的枚举类型,而枚举与整型不是一回事,必须用 Ord() 转换。
而 C 的 char、enum 都被当作整型。
4. C 支持可变参数 void f(int x, ...),Pascal 没有。
5. C/C++ 的模块机制是头文件的文件包含+*.obj文件的连接,文件包含属于文本操作,编译速度很慢。而 Pascal 是 unit 的连接,二进制操作,编译速度飞快(对开发大型软件还是很重要的)
6. C 语言的结构/数组的初始化只用给出数值,而且元素个数可以比定义的少;而Pascal必须明确指出分量名称,个数严格对应:
var Point: TPoint = ( x: 100, y: 200 );
7. C 的标志符大小写敏感,Pascal 否。
8. C 编译预处理功能比 Pascal 的强大,实践中也很重要(它弥补了 C 编译器的许多不足)。
9. 很容易被忽视也很重要的一条:两者的表达式不同。
9.1. C/C++ 的表达式被赋予了太多的使命,连赋值语句本身也是表达式,a = b 同时返回 a,因此可以写 a = b = c; 而 Pascal 对赋值号被严格当作一个规定好的操作:赋值,别无其它,你不能写 a := b := c。
9.2. C/C++ 的表达式的类型严格取决于源操作数: char a = 100, b = 200; 则 a+b 的结果类型仍然是 char,当然就会溢出。Pascal 会“体贴”地替你扩展成足够大的数据类型:
归根结蒂,C 贴近机器,骨子里把操作数当作“二进制”处理(这有时是优点,尤其是跟硬件打交道时);Pascal 贴近数学,尽量以数学的视角看待数值。
10. 至于 C 的 for 循环如何强大,Pascal 的 for 循环如何循规蹈矩,这些都不是太重要
至于Delphi我没接触过,不太清楚。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1. Pascal 支持子程序嵌套,C 否。因为 C 的设计目标之一就是与机器语言的结构直接对应。
2. Pascal 子程序分过程/函数,C 只有函数。
3. Pascal 类型更严格,如 char, boolean 都是特殊的枚举类型,而枚举与整型不是一回事,必须用 Ord() 转换。
而 C 的 char、enum 都被当作整型。
4. C 支持可变参数 void f(int x, ...),Pascal 没有。
5. C/C++ 的模块机制是头文件的文件包含+*.obj文件的连接,文件包含属于文本操作,编译速度很慢。而 Pascal 是 unit 的连接,二进制操作,编译速度飞快(对开发大型软件还是很重要的)
6. C 语言的结构/数组的初始化只用给出数值,而且元素个数可以比定义的少;而Pascal必须明确指出分量名称,个数严格对应:
var Point: TPoint = ( x: 100, y: 200 );
7. C 的标志符大小写敏感,Pascal 否。
8. C 编译预处理功能比 Pascal 的强大,实践中也很重要(它弥补了 C 编译器的许多不足)。
9. 很容易被忽视也很重要的一条:两者的表达式不同。
9.1. C/C++ 的表达式被赋予了太多的使命,连赋值语句本身也是表达式,a = b 同时返回 a,因此可以写 a = b = c; 而 Pascal 对赋值号被严格当作一个规定好的操作:赋值,别无其它,你不能写 a := b := c。
9.2. C/C++ 的表达式的类型严格取决于源操作数: char a = 100, b = 200; 则 a+b 的结果类型仍然是 char,当然就会溢出。Pascal 会“体贴”地替你扩展成足够大的数据类型:
归根结蒂,C 贴近机器,骨子里把操作数当作“二进制”处理(这有时是优点,尤其是跟硬件打交道时);Pascal 贴近数学,尽量以数学的视角看待数值。
10. 至于 C 的 for 循环如何强大,Pascal 的 for 循环如何循规蹈矩,这些都不是太重要
至于Delphi我没接触过,不太清楚。
2. Pascal 子程序分过程/函数,C 只有函数。
3. Pascal 类型更严格,如 char, boolean 都是特殊的枚举类型,而枚举与整型不是一回事,必须用 Ord() 转换。
而 C 的 char、enum 都被当作整型。
4. C 支持可变参数 void f(int x, ...),Pascal 没有。
5. C/C++ 的模块机制是头文件的文件包含+*.obj文件的连接,文件包含属于文本操作,编译速度很慢。而 Pascal 是 unit 的连接,二进制操作,编译速度飞快(对开发大型软件还是很重要的)
6. C 语言的结构/数组的初始化只用给出数值,而且元素个数可以比定义的少;而Pascal必须明确指出分量名称,个数严格对应:
var Point: TPoint = ( x: 100, y: 200 );
7. C 的标志符大小写敏感,Pascal 否。
8. C 编译预处理功能比 Pascal 的强大,实践中也很重要(它弥补了 C 编译器的许多不足)。
9. 很容易被忽视也很重要的一条:两者的表达式不同。
9.1. C/C++ 的表达式被赋予了太多的使命,连赋值语句本身也是表达式,a = b 同时返回 a,因此可以写 a = b = c; 而 Pascal 对赋值号被严格当作一个规定好的操作:赋值,别无其它,你不能写 a := b := c。
9.2. C/C++ 的表达式的类型严格取决于源操作数: char a = 100, b = 200; 则 a+b 的结果类型仍然是 char,当然就会溢出。Pascal 会“体贴”地替你扩展成足够大的数据类型:
归根结蒂,C 贴近机器,骨子里把操作数当作“二进制”处理(这有时是优点,尤其是跟硬件打交道时);Pascal 贴近数学,尽量以数学的视角看待数值。
10. 至于 C 的 for 循环如何强大,Pascal 的 for 循环如何循规蹈矩,这些都不是太重要
至于Delphi我没接触过,不太清楚。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Pascal 是语言
Free Pascal,Turbo Pascal,Delphi是开发工具
Delphi所用的Pascal有点不一样,是改造过的Pascal
语言是语言,工具是工具
就像C++对应的开发工具有TurBo C,Borland C++,Visual C++(简称VC),Borland C++ builder(简称BCB)
Delphi是语言的名称,也是工具的名称,更是CodeGear的产品线的名字
Delphi 的Pascal是一种面向对象的Pascal,因为传统的Pascal是面向过程的
Borland公司把这种传统的Pascal改进成了Object Pascal(面向对象的Pascal语言),在Delphi这个开发工具出到4.0后,就不再使用Object Pascal语言,直接称之为Delphi语言,每一次Delphi和升级都会使Delphi语言改动的
Free Pascal,Turbo Pascal,Delphi是开发工具
Delphi所用的Pascal有点不一样,是改造过的Pascal
语言是语言,工具是工具
就像C++对应的开发工具有TurBo C,Borland C++,Visual C++(简称VC),Borland C++ builder(简称BCB)
Delphi是语言的名称,也是工具的名称,更是CodeGear的产品线的名字
Delphi 的Pascal是一种面向对象的Pascal,因为传统的Pascal是面向过程的
Borland公司把这种传统的Pascal改进成了Object Pascal(面向对象的Pascal语言),在Delphi这个开发工具出到4.0后,就不再使用Object Pascal语言,直接称之为Delphi语言,每一次Delphi和升级都会使Delphi语言改动的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询