5、Pascal程序可以分为三个部分,请将这三个部分的名称填入下面括号中(3)
6、在Pascal中,(15)
有六个算术运算符,它们是__+、-、*、/、MOD、DIV___。 有六个关系运算符,它们是__>、>=、<、<=、=、<>__。 有三个逻辑运算符,它们是__AND、OR、NOT___。
7、请自己设计一张图表将第6题中的运算符,再加上函数和括号在PASCAL程序中的运算优先规则表示出来。(3)
8、请将下列实型数据用另一种表示法表示(6) 小数表示法 12.5 132.67 0.0025 科学表示法 1.25e+1 1.3267e+2 2.5e-3 小数表示法 100 -30.5 -0.0002509 科学表示法 1e+2 -3.05e+1 -2.509e-4 ()
函数
NOT
优先级由高到低 AND
* / div mod
OR + -
< <= = >= > <>
( 语句部分 ) ( 说明部分 ) ( 程序首部 ) PROGRAM circle(input,output); CONST
PI=3.14159; VAR
r,l,s:real; BEGIN
read(r); l:=2*PI*r; s:=PI*r*r; write(r,l,s); END.
36
9、将下列代数式写成Pascal的表达式(4)
p?q?(r?1)22(r?1)?1 (1)a-(m-d)×4÷b+3y=A2 (2)
a-(m-d)*4/b+3*y=A2
(p*q*sqr(r+1))/(sqr(r+1)-1)
88?16?4ax47?15(3) (4)|3-eln(1+x)|
(88-16)/(47-15)-4*a
abs(3-exp(x)*ln(1+x))
二、程序找错(每个程序有4处错误,请你找出来) 10、
PROGRAM T55_002; a,h:integer; BEGIN
write(“San Jiao Xing Di:”); readln(a)
write(“San Jiao Xing Gao:”); readln(h);
writeln(“San Jiao Xing Mian Ji:”a*h/2:6:1) END. 11、
PROGRAM T65_004; VAR
n,integer; BEGIN
write('Please input a number from 0 to 6 for weekday:') read(n); CASE n
0:writeln('Sunday');
37
错误一:第2行少“VAR”; 错误二:第5行少分号; 错误三:第4、6、8行,字符串应用单引号,题中用了双引号; 错误四:第8行字符串与变量之间少逗号。 1:writeln('Monday'); 2:writeln('Tuesday'); 3:writeln('Wednesday'); 4:writeln('Thursday'); 5:writeln('Friday'); 6:writeln('Saturday'); END.
12、PROGRAM T75_002; VAR ch:char;
ZiMu,ShuZi,FuHao:integer; BEGIN ZiMu:=0; ShuZi:=0; FuHao:=0; WHILE ch<>'?' BEGIN read(ch);
错误一:第2行变量与数据类型之间应用冒号,这里用了逗号; 错误二:第5行少分号; 错误三:第7行,CASE语句少了OF; 错误四:CASE语句没有END与之配对。 IF (ch>A) AND (ch ELSE IF ord(ch)>=48 AND ord(ch)<=57 THEN ShuZi:=ShuZi+1 ELSE FuHao:=FuHao+1; END; writeln('Zi Mu Ge Shu: ',ZiMu); writeln('Shu Zi Ge Shu: ',ShuZi); writeln('Qi Ta Fu Hao Ge Shu: ',FuHao) END. 错误一:第9行WHILE语句少DO; 错误二:第12行IF语句中,字符没有加单引号; 错误三:第13行,赋值语句不对,应为:= 错误四:第14行,IF语句中,AND两边的逻辑判断应各自加括号,即(ord(ch)>=48) AND (ord(ch)<=57)。 38 第10课 函数(一)20080414 以前我们用过由PASCAL系统提供的标准函数,例如sqrt()(开方)、ord()(取数字)、pred()(取前导字符)、abs()(绝对值)等。在表达式中调用这些函数是相当简单的,只需写出函数名,并将自变量写在函数名后的括号中即可。 函数使用方便实用,但PASCAL提供的标准函数并不多,不能满足一些复杂问题的求解,这时就需要定义新的函数。 T85_001 输入x值,计算y。已知 y?sh(1?sh(x)) sh(2x)?sh(3x)其中sh是双曲正弦函数,它不是PASCAL 的标准函数。该问题要求4次计算双曲正弦函数,可以将它定义成一个函数,然后调用4次,以得到问题的解。 已知计算双曲正弦的公式如下: et?e?tsh(t)? 2按此写出的双曲正弦函数说明如下: 函数分程序 函数首部 函数说明部分 函数语句部分 (函数体) FUNCTION sh(t:real):real; BEGIN sh:=(exp(t)-exp(-t))/2 END; 函数说明的第一行称函数首部。它必须以保留字FUNCTION开头,然后是函数名,参数表和函数类型标识符。在此例中,函数名是sh,参数表是(t:real),在参数表中给出了形式参数t和它的类型real,函数类型是real。 在函数首部的后面是函数分程序。它由说明部分和语句部分构成。说明部分有时可以没有。语句部分又称函数体,它必须用BEGIN和END括起来 。函数体对形式参数进行处理,处理结果赋给函数名,作为函数结果传给调用它的程序。 此例中没有说明部分。函数体由给函数名sh赋值的语句组成。这个值作为函数执行的结果被回送。 函数说明的一般形式如下: FUNCTION <函数名> (<参数表>):<函数类型>; 39 <说明部分>; BEGIN <函数体> END; 为了调用非标准函数,必须预先将函数定义(或称函数说明)写在程序的说明部分(处于变量说明之后)。然后在程序中需要调用的地方,将函数名和相应的自变量(称实在参数)写在表达式中即可。一个表达式中可以包括多个函数调用。 T85_001的程序如下: PROGRAM T85_001; VAR x,y:real; FUNCTION sh(t:real):real; BEGIN sh:=(exp(t)-exp(-t))/2; END; BEGIN read(x); writeln('x=',x:6:2); y:=sh(1+sh(x))/(sh(2*x)+sh(3*x)); writeln('y=',y:6:2) END. 函数调用的一般形式为 <函数名>(<实在参数表>) T85_002 求五边形的面积(如图)。边长l1-l7由键盘读入。 讨论:求五边形的面积可以变成求3个三角形面积的和。已知三边长为a、b、c,求三角形面积S公式:S? l2 l1 S1 l6 S2 l7 S3 l3 l5 l4 p(p?a)(p?b)(p?c),其中p?1(a?b?c) 2 40