pascal语言基础(一)

article/2025/10/3 14:02:08

该内容为学习 《PASCAL程序设计 第2版》郑启华编著  的笔记,部分与c语言对比学习,方便记忆。

pascal语言基础(二)

 

基本介绍

保留字(35个)

AND、ARRAY、BEGIN、CASE、CONST、DIV、DO、DOWNTO、ELSE、END、FILE、FOR、FUNCTION、GOTO、IF、IN、LABEL、MOD、NIL、NOT、OF、OR、PACKED、PROCEDURE、PROGRAM、RECORD、REPEAT、SET、THEN、TO、TYPE、UNTIL、VAR、WHILE、WITH。(加粗项NIL不常见需注意)

 

标识符

1. 以字母开头的字母、数字组合。(与c语言不同,不能有 ' _ ' 。)

2. 长度没有限制,但是pascal能识别的只有8位。例 students1 和 students2 只能表示同一标识符 students 。

3. 标准标识符(39个):

标准常量(3个)false, true, maxint
标准类型(5个)integer, real, char, boolean, text
标准文件(2个)input, output
标准函数(17个)abs, arctan, chr, cos, eof, eoln, exp, ln, odd, ord, pred, round, sin, sqr, sqrt, succ, trunc
标准过程(12个)get, new, pack, page, put, read, readln, reset, rewrite, unpack, write, writeln

 

程序结构

1. 例:已知半径,求圆周长和面积。

PROGRAM circle(input, output);{已知圆半径求圆周长和面积}CONSTpi = 3.14159;VARr, l, s : real;BEGINread(r);l := 2*pi*r;s := pi*r*r;write(r, l, s);END.

2. 完整的程序结构。

一个具体的程序不需要包括以下所有内容,但如果有以下内容,需按顺序出现。

PROGRAM 程序名(参数);LABEL标号说明;CONST常量说明;TYPE类型说明;VAR变量说明;FUNCTION函数说明;PROCEDURE过程说明;BEGIN...END.

 

顺序结构

标准数据类型

1. 实型(real):即小数(132.67)和指数(1.3267e+2),和c语言差不多。

其中需注意的几点是:

  • 没有 tan 函数,需写成 sin(x)/cos(x)
  • e^{^{2.5}} 应写成 exp(2.5)
  • lnx 应写为 ln(x),lgx 写为 ln(x)/ln(10)
  • 没有指数运算,sqr(x)表示平方,x^{_{y}} 为 exp( y*ln(x) )
  • trunc表示去尾,round表示四舍五入,例:trunc(1.6)=1,round(1.6)=2

2. 整型(integer) :正数、负数、0。

  • DIV为商,MOD为余数,例:10 DIV 3 = 3, 10 MOD 3 = 1
  • / , sin, cos, arctan, exp, ln, sqrt(开根号)的结果均为实型
  • abs(绝对值),sqr(平方)
  • pred(前导,小一位),succ(后继,大一位),例:pred(-5)=-6,succ(-5)=-4
  • odd(奇函数),判断该数的奇偶,例:odd(7)=true,odd(8)=false
  • chr(取字符),ASCII码的转换,例:chr(65)='A'
  • 运算中有实型和整型,则结果为实型

3. 字符型(char)

  • ''代表空格字符,''''代表字符'
  • ord()对应整型的chr(),例:ord('A')=65
  • pred('b')='a',succ('b')='c' 

4. 布尔型(boolean):false,true

  •  ord(true)=1,pred(ture)=false,succ(false)=true,false没有前导,true没有后继
  • 逻辑运算:AND, OR, NOT,跟C相同。优先级:NOT>AND>OR
  • 关系运算(>, <等)优先级低于逻辑运算,其中不等于写为 ' <> '

 

基本语句 

1. 赋值:与c语言的 ' = ' 不同,pascal为 ' := ' 。例 i := i+1;

2. read()语句:从终端读入数据,类似 scanf()。

read(a, b, c, d);{实数,用空格隔开}
1.1 1.2 1.3 1.4{字符,中间不间隔}
abcd{混合,前2个为字符,第3个为整型,第4个为实数}
ab 1 1.2

另有readln()语句,与read区别如下:

输入:
1.1 1.2 1.3
1.4 1.5 1.6执行1:(a=1.1, b=1.2, c=1.3, d=1.4)
read(a, b);
read(c, d);执行2:(a=1.1, b=1.2, c=1.4, d=1.5)
readln(a, b);
readln(c, d);

3. write()语句:打印结果,类似printf()。

  • writeln(); 打印完后换行,writeln; 表示打印空行
  • 可用场宽来控制打印输出的占位数,其中实型可用2个值分别表示整数位和小数位

 

 选择结构

IF语句

if-else 结构和c语言差不多,语法如下:

IF <条件>THEN <语句1>ELSE <语句2>{例1:复合:读入x和y,交换次序使x>y}
if x<ythenBEGINtemp := x;x := y;y := temp; {该处分号可不需要}END;
writeln('x=', x:8:2, ' y=', y:8:2); {该处分号可不需要}{例2:根据成绩输出结果}
if score>=90then writeln('outstanding')
else if score>=60then writeln('satisfactory')
else writeln('unsatisfactory')

第2个程序中,因为都在同一if语句中,if语句没有结束不要用 ' ; ' ,不然会报错。

而第1个程序中有begin-end的复合,所以中间需要用分号。

复合IF语句与多重IF语句执行效率更高。

改了一下程序的缩进关系,更符合个人理解。

 

CASE语句

和c语言的switch-case差不多,语法如下:

CASE <表达式> OF<值1> : <语句1>;...
END;{例:简单计算器,输入数值和运算符,输出计算结果}
CASE oper OF'+' : result := x+y;'-' : result := x-y;'*' : result := x*y;'/' : result := x/y; {可不要分号}
END;
wtireln(x:6:2, oper, y:6:2, '=', result:8:4);

上述例子中,输入时需注意:

read(x, oper, y);
输入: 
2.51*3.56
2.51 * 3.56
2.51 *3.56
均报错read(oper, x, y);
输入:
* 2.51 3.56
可成功执行

 

循环结构

FOR语句

1. 语法

FOR <循环变量> := <初值> TO/DOWNTO <终值> DOBEGIN<循环体>END;

其中,循环变量递增用 TO,递减用 DOWNTO。

如果循环体仅为一个单独的语句,则不需要加BEGIN-END。

2. 循环体类型:c语言的循环体只能为整型和布尔型,而pascal可以是所有有序的类型,如:

PROGRAM test(input, ouput);VARch: char;BEGINFOR ch:='a' TO 'z' DOwrite(ch);writeln;FOR ch:='z' DOWNTO 'a' DOwrite(ch);END.

输出:

abcdefghijklmnopqrstuvwxyz
zyxwvutsrqponmlkjihgfedcba

3. 一个有趣的例子:画出sinx的图形

PROGRAM graph(input, ouput);CONSTpi=3.14159;VARi, wide: integer;y: real;BEGINFOR i:=0 TO 24 DOBEGINy := sin(i*15*pi/180);   {把角度变成弧度,计算sinx的值}wide := round(35*y+40);  {把该值放大}writeln('*':wide);END;END.

为了输出函数曲线,让每行输出一个 ' * ',反映函数值的变化。

把输出的屏幕宽度定为80字符,则中心点在40。

y的值为[-1, 1],为了便于显示让范围扩大35倍再加上40,即 35*y+40 --> [5, 75]。

x从0°开始,每隔15°输出一次,共360°,即25个值。

 

WHILE语句

同c语言的while语句差不多,语法:

WHILE <布尔表达式> DOBEGIN<循环体>END;

 

REPEAT语句

 类似c语言的 do...while 语句,语法:

REPEAT<循环体>
UNTIL <布尔表达式>

 


http://chatgpt.dhexx.cn/article/ktQR539D.shtml

相关文章

PASCAL语言的基本知识

Pascal是一种计算机通用的高级程序设计语言。它由瑞士Niklaus Wirth教授于六十年代末设计并创立。 以法国数学家命名的Pascal语言。现已成为使用最广泛的基于DOS的语言之一。其主要特点有&#xff1a;严格的结构化形式&#xff1b;丰富完备的数据类型&#xff1b;运行效率高&am…

C语言assert()函数用法总结

&#xfeff;&#xfeff; assert宏的原型定义在<assert.h>中&#xff0c;其作用是如果它的条件返回错误&#xff0c;则终止程序执行&#xff0c;原型定义&#xff1a; #include <assert.h> void assert( int expression ); assert的作用是现计算表达式 expression…

C语言assert函数完全攻略

断言assert函数&#xff0c;C语言assert函数完全攻略 对于断言&#xff0c;相信大家都不陌生&#xff0c;大多数编程语言也都有断言这一特性。简单地讲&#xff0c;断言就是对某种假设条件进行检查。在 C 语言中&#xff0c;断言被定义为宏的形式&#xff08;assert(expressio…

python assert函数解析(最清晰的解释)

欢迎关注WX公众号&#xff1a;【程序员管小亮】 python assert的作用&#xff1a; assert函数用于程序调试 Python 官方文档解释https://docs.python.org/3/reference/simple_stmts.html#assert “Assert statements are a convenient way to insert debugging assertions …

C++中的assert用法

assert用法 void assert(int expression);C中assert&#xff0c;即断言&#xff0c;可以在程序调试阶段检查错误&#xff0c;常用的就比如函数传参时&#xff0c;若是整型&#xff0c;是否超出范围&#xff1b;若是字符串型&#xff0c;地址是否为空等。 在正常时&#xff0c;…

assert()函数(断言函数)

assert()函数&#xff08;断言函数&#xff09; 一&#xff0c;快速了解一下assert函数 void assert (int expression);//括号里面是一个表达式。assert函数是一个宏。 括号里面的表达式如果为真&#xff0c;程序正常执行。 如果函数形式的宏的参数表达式比较等于零&#x…

c语言中assert函数是什么

点击上方蓝字关注我&#xff0c;了解更多咨询 1、assert将通过检查表达式expresion的值来决定是否需要终止执行程序。 2、如果表达式expresion的值是假的(即0)&#xff0c;它将首先向标准错误流stderr打印错误信息。 通过调用abort函数终止程序运行。否则&#xff0c;assert没有…

assert()函数

今天&#xff0c;遇到一个函数返回值时引用&#xff0c;但是返回值存在为NULL的情况。下面是搜到的解决方案 然后&#xff0c;就搜了搜assert()函数的用法&#xff0c;找到一篇&#xff0c;贴在下面assert()函数用法总结 assert宏的原型定义在<assert.h>中&#xff0c;其…

assert()函数用法总结

assert宏的原型定义在<assert.h>中&#xff0c;其作用是如果它的条件返回错误&#xff0c;则终止程序执行&#xff0c;原型定义&#xff1a; #include <assert.h> void assert( int expression ); assert的作用是现计算表达式 expression &#xff0c;如果其值为假…

assert断言函数简介

目录 &#x1f38d;1.整体介绍 &#x1f38d;2.assert() 的用法和机制 &#x1f38d;3.关于NDEBUG 宏 &#x1f38d;4.使用assert()注意事项 &#x1f38d;4.1使用 assert() 时&#xff0c;被检测的表达式最好不要太复杂 &#x1f38d;4.2不要用会改变环境的语句作为断言…

第十二章 C语言调试_assert断言函数

在我们的实际开发过程之中&#xff0c;常常会出现一些隐藏得很深的BUG&#xff0c;或者是一些概率性发生的BUG&#xff0c;通常这些BUG在我们调试的过程中不会出现很明显的问题&#xff0c;但是如果我们将其发布&#xff0c;在用户的各种运行环境下&#xff0c;这些程序可能就会…

c语言之assert()函数用法总结

1.assert宏的原型定义在<assert.h>中&#xff0c;其作用是如果它的条件返回错误&#xff0c;则终止程序执行。 库函数&#xff1a; assert.h 原型定义&#xff1a; void assert( int expression ); assert的作用是现计算表达式 expression &#xff0c;如果其值为假&…

接私活必备!国外5个顶级程序员接私活网站

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 人生交契无老少&#xff0c;论交何必先同调。 文章目录 PeoplePerHour&#xff1a;薪酬最高的专业自由职业者网站GuruFreeLancerUpworkFiverr 话说程序员这个职业有…

关于网上程序员接私活的问题

点击上方“程序人生”&#xff0c;选择“置顶公众号” 第一时间关注程序猿&#xff08;媛&#xff09;身边的故事 文丨eachfeel 很多人都谈网上接私活这件事&#xff0c;其实大家想法都差不多&#xff0c;现在做软件的那么多&#xff0c;工资也不是那么高了&#xff0c;不像以前…

程序员兼职可以从什么平台接私活?

之前有一项调查&#xff0c;结果显示&#xff1a;想通过副业赚钱的朋友&#xff0c;其中60%的人找不到门路。今天这篇文章就给大家一批可以接私活的平台。不过&#xff0c;再次强调一下&#xff0c;副业并不等于接私活儿。 私活类型与价格区间 程序员兼职的项目大致可分为三类…

10个程序员可以接私活的平台和一些建议!

来源&#xff1a;http://mrw.so/5isQLi 什么样的私活不能接 1、没有第三方担保的个人对个人的尽量不要接&#xff0c;双方都没保障&#xff0c;出了问题很大的可能撕破脸皮不了了之。 2、一上来就直接说给我开发一个什么软件&#xff0c;不说具体需求&#xff0c;没有需求文档的…

程序员接私活常用平台汇总

作者&#xff1a;镇上宝塔 素材来源&#xff1a;今日头条 今天分享一些接私活的常用平台。 ▍前 言 关于程序员接私活&#xff0c;社会各界说法不一。按照作者的观点来说如果你确实急用钱&#xff0c;价格又合适&#xff0c;那就去做。如果不怎么缺钱&#xff0c;那就接私活之前…

程序员接私活的几个平台和建议,避免掉坑!

大家对于程序员接私活这件事的看法&#xff0c;褒贬不一。但是你如果确实用钱&#xff0c;价格又合适&#xff0c;那就大胆去接。 如果不那么缺钱&#xff0c;那么接私活之前先考虑清楚&#xff0c;如果自己将空余时间用在接私活所产生的价值是不是大于提升自己。如果是的话&a…

程序员接私活月入2万?分享10个接私活的网站快收藏~

最近&#xff0c;在和身边的程序员聊天中&#xff0c;听不少朋友分享了自己接私活的经历&#xff0c;那收入真是让我“瞠目结舌” … 程序员A&#xff1a;我Java程序员&#xff0c;工作两年&#xff0c;月薪13K&#xff0c;私活20K。 程序员B&#xff1a;之前在单位上班&#…

推荐几个程序员接私活的网站

相信很多新手程序员&#xff0c;都希望能迅速提高自己的能力同时&#xff0c;又可以赚点外快增加下个人收入&#xff0c;那么&#xff0c;去接一些私活是一个不错的选择。但是接私活之前也要考虑清楚&#xff0c;因为私活一般都会占用自己大量的休息时间&#xff0c;而如果你把…