C语言和Pascal语言的对比
林金正(2010101032)
(汕头大学计算机系,广东汕头515063)
摘要:C语言和Pascal语言是目前对计算机发展影响较深的两门计算机程序设计语言。两种语言各有特点,Pascal语言是一种结构式程序设计语言,最初是为系统地教授程序设计而发明的,语法严谨,特点是简明化和结构化,适合教学,科学计算等。C语言则是国际上应用最广泛的计算机中级语言,具有语言简洁紧凑,使用方便灵活及运算符丰富等特点,语法限制不严格,程序设计自由度大,程序可移植性好。以下从程序结构、数据类型、运算和指针共四个方面对两种语言进行比较。
关键词:C语言、Pascal语言、对比、程序结构、数据类型、运算、指针。
The Comparison between Language C and language Pascal
Lin Jinzheng (2010101032)
(Computer Science Department Shantou University, Guangdong, Shantou 515063)
Abstract: the language C and language Pascal is currently on computer development influence of deep two foreign computer programming language. Two languages have different features, Pascal language is a structured programming language, was initially for systematically professor programming and invention, grammar is rigorous, the characteristic is concise change and structured, suitable for teaching, scientific calculations, etc. C language is the most widely used on international computer intermediate language, with simple language is compact, easy to use and flexible and operators rich characteristics, such as grammar limit not strictly, program design freedom is big, program portability. The following items from the program structure, data type, computing, subroutine and pointer 5 aspects of two languages are compared.
Keywords: Language C, Language Pascal, comparison, program structure, operation, pointer.
.程序结构
程序结构体现了一个完整程序的构成。Pascal语言所编写的程序由程序首部和分程序构成。其中,程序首部是程序的开头部分,它包括:(1)程序的标志,用“program”来标识“这是一个Pascal 程序”。Pascal规定任何一个Pascal程序的首部都必须以此字开头。在Turbo Pascal语言中,首部也可省略。(2)程序名称,由程序设计者自己定义,如例中的exam1。(3)程序参数,指明程序与外部联系的文件名。分程序包括说明部分(可省略)和语句部分(即执行部分)。(1) 说明部分用来描述程序中用到的变量、常量、类型、过程与函数等。Pascal规定,凡是程序中用到所有变量、符号常量、数组、标号、过程与函数、记录、文件等数据都必须在说明部分进行定义(或称“说明”)。也就是说,不允许使用未说明先使用。(2)执行部分的作用是通知计算机执行指定的操作。如果一个程序中不写执行部分,在程序运行时计算机什么工作也不做。因此,执行部分是一个Pascal程序的核心部分。执行部分以“begin”开始,以“end”结束,其间有若干个语句,语句之间以分号隔开。执行部分之后有一个句点,表示整个程序结束。
Pascal语言程序由一个主程序和多个函数或过程组成,而与Pascal语言程序不同,C语言程序为函数模块结构,所有的C语言程序都是由c语言和c++区别一个或多个函数构成,其中必须只能有一个主函数main()。程序从主函数开始执行,当执行到调用函数的语句时,程序将控制转
移到调用函数中执行,执行结束后,再返回主函数中继续运行,直至程序执行结束。C程序的函数是由编译系统提供的标准函数(如printfscanf等)和由用户自己定义的函数。虽然从技术上讲,主函数不是C语言的一个成分,但它仍被看做是其中的一部分,因此,“main”不能用作变量名。C语言函数的基本形式是:函数类型 函数名 (形式参数) 形式参数说明;{说明部分;语句部分}
.数据类型
Pascal语言的数据类型可分为:简单类型、构造类型和指针类型三大类。而C语言的数据类型则可分为:基本数据类型,构造数据类型,指针类型和空类型四大类。两者在基本数据类型上的差别有很多,[1]Pascal的基本类型有:(1)整型(integer),范围-215次方至215次方减1;(2)实型(real),-1037次方至1037次方;(3)字符型(char),范围是ASCII字符集;(4)布尔型(boolean,truefalse两个值。而C语言为了适应不同问题的需求和优化内存管理,对各种类型又做了细分,仅整型就有intshortlongunsignedunsigned shortunsigned long型,实型又有floatdoublelong double型,每种类型都有不同的取值范围,字符型除ASCII码外,还有一些具有特殊
功能的字符,与Pascal最大的不同在于C中没有布尔型,判断表达式时0为假,非0则为真。
其他类型中,Pascal的数组下标从1开始,C的数组下标从0开始。
3.运算
Pascal的运算符除主要的加(+)、减(-)、乘(*)、除(/)外,还有整除(div)、取模(mod)、非(not)、与(and)、或(or)、小于(<)、小于或等于(<=)、大于(>)、大于或等于(>=)、等于(=)、不等于(<>),运算符丰富,可很好地满足科学计算的需求。其中,加、减、乘的运算结果视运算对象而定,两者皆为整形,则结果为整形,两者中有一个是实型或两者都是实型,则结果为实型;除的结果则一律为实型;整除和取模的结果为整形;其他运算的结果全为布尔型。
C语言的运算符与Pascal语言的运算符相似,但少了整除、和取模操作。虽然运算符减少了,但亦能实现Pascal所能实现的操作。Pascal的数据类型有运算限制,如字符只能做关系运算,关系表达式只能进行逻辑运算等。而C语言在这方面与Pascal相比有很大的自由。
在C中,字符之间也可做算式运算,具体操作方法是取该字符的ASCII码值进行运算,其结果为整数,单个字符也可做自加或自减运算,其结果为该字符在ASCII码中的下一个字符或上一个字符,如此一来,实现相同的操作,C语言算法可以比Pascal语言算法简洁许多。此外,在C语言的除运算,若运算对象皆为整形,则运算结果亦为整形,这就实现了Pascal中的整除操作。
4.指针
指针方面的差别是C语言和Pascal语言两者最大的差别,也是C语言相比于Pascal语言最大的优势所在。大家都认为,C语言之所以强大,以及其灵活性,很大部分体现在其灵活的指针运用上。
Pascal的指针主要用于建立动态数据结构,动态数据结构随着程序的执行而增长。一个动态数据结构是元素(或称结点,通常是记录)的汇集。动态数据结构在程序执行时,根据程序的数据存储需要而扩充或缩减,用于存储那些时常需要改变的数据。使用Pascal的指针必须在说明部分说明,在使用前,还必须申请。Pascal指针的操作中,只能把一个指针复制给另一个指针,单个指针不能进行加、减等运算,也不能直接给指针赋值。指针所存
的地址不可见。这大大制约了Pascal指针的使用。
相比于Pascal语言,C语言的指针的可操作性提高了许多。由于在C语言中每个数据类型都必有存储空间,所以指针可以应用于几乎所有的数据类型中。所以,从这个角度出发可以将指针分为:指向变量的指针、数组指针、字符指针、指向指针的指针、函数指针、结构变量的指针以及文件指针等等。其中,指向变量的指针就是存储变量的地址的。如 int * s这就是一个指向整型的指针,可以用于指向一个整型变量。如int a; 当p=&a时,就是将p存储整型变量a的地址,这是C语言指针最简单的一种操作类型。[2]函数指针是C语言指针的一大特,就象某一数据变量的内存地址可以存储在相应的指针变量中一样,函数的首地址也以存储在某个函数指针变量里的。这样,我就可以通过这个函数指针变量来调用所指向的函数了。
[3]在C语言中指针的十分应用广泛,除具有一般的功能外,具体特殊功能的应用总结起来有三个方面:一是用于在函数中可以返回多个值;还有就是可以实现动态调用函数;最后就是实现数组的动态定义。其中,由于由函数的特点,一个函数只能有一个返回值,但在有些场合需要返回多个值,就可以定义指针参量来实现,其定义的基本框架如下:
Sss(int a,int *p);
{
int s;
……
return s;
}
在这中情况下,函数不仅可以得到返回值(通过Return s来实现的),还可以通过指针p来返回相应的值。所谓指针能实现动态调用函数,这里用到的指针就是上文中提到的函数指针。函数指针就是指向函数入口地址的指针,我们还知道其实函数名就是一个函数指针。我们就是通过函数名实现动态调用函数的。在主调函数的参数中采用函数名充当实参就能实现函数的动态调用。该方法以简短的代码实现了复杂的功能。最后讲到指针能实现数组的动态定义。从C语言的学习中,我们知道在定义数组时一定要指定数组的大小,否则,
不能完整数组的定义。那么如何实现数组的动态定义?数组从本质上来讲就是连续的空间集合罢了。那么,我们可以通过申请一个空间并赋值给一个指针变量,以此指针变量为首空间,就能获取连续的空间,这与数组相同。当然数组还有许多应用,只有认真分析就能得到更多更好的应用实例。
5.总结
Pascal语言和C语言各有特,Pascal语言适合初学者的程序设计入门,而Pascal语言则适合用来编写各种复杂的程序,尤其是操作系统地编写。两者还有许多细节方面的不同,如C语言可以在定义变量的时候为该变量赋值而Pascal语言中变量的定义和赋值必须分开,诸如此类还有许多,无法细讲,这里只能掠过。
6.致谢
感谢于津老师的指导和学习小组给我在学习上的帮助。
7.参考文献
[1]C语言与Pascal的对比学习,黄晓因
[2]C语言指针PPT,黄暖和
[3]C语言中的指针浅谈,

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。