function area(const a,b:real):real; var s:real; begin
s:=a*b/2.0; area:=s; end;
procedure myproc; var a,b:real; s:real; begin
write('Please input two number a,b:'); readln(a,b); s:=area(a,b);
writeln('the area of trian is: ',s:5:2); end;
{============= main program ================} begin
myproc; end.
练习:
一、判断以下标识符的合法性: a3 3a a17 abcd ex9.5 α β λ
二、将下列的数学表达式改写成PASCAL表达式: b^2-4ac
三、求下列表达式的值:
20 mod 19, 15 mod 9, 7 div 8 ,19 div 3,(4>5) and (7<8),(8>9) or ( 9<10),2 and ((3=3) or (3<7))
第一节 顺序结构
顺序结构是程序设计中最简单的结构,也是最基本的结构,它就是按照程序书写的顺序逐句执
行程序中的指令。流程图如下:
例题:计算圆的周长的过程:
操作一 输入圆的半径;(操作一)
计算圆的周长;(操作二) 输出圆的周长;(操作三) 操作二 基本的程序语句: 赋值语句:
赋值语句是最简单的语句,其一般形式为:
<变量>:=<表达式>;
“:=”称为赋值号,赋值语句的作用是计算表达式的值,并赋给变量。对于任何一个变量必须首先赋值,然后才能引用,否则,未赋初值的变量将以一个随机值参与运算。另外,赋值号两边的类型必须相同,但表达式值为整数时,它可自动化为实型后赋给该实型变量,即符合赋值相容。 如:Pi:=3.14; R:=2; Age:=20; S:=Pi*R*R 例:关于赋值的例子 prssogram example; var a,b:integer; begin
a:=3; b:=2; a:=a+b; writeln(a);
5
writeln(b); end.
输入语句
通过计算机的外设把数据送到计算机内存的过程称为输入。Turbo Pascal语言的输入语句有如下两种形式:
read(<变量名表>); readln(<变量名表>);
<变量名表>是一个或几个由逗号隔开的变量标识符,他们必须在程序说明部分预先说明,他们可以是整型、实型或字符型,布尔型不可以直接读入。例如a,b,c为整型变量,read(a,b,c)之后,键盘输入:20 30 40
readln语句和read语句不同之处在于输入数据到各变量之后,readln自动换行,从下一行开始再输入数据。一个read语句执行完后,数据行中多余的未读数据可以被下一个输入语句读入;而一个readln于执行完后,数据行中多余未读数据就没有用了。readln语句中可以不包含变量名表。即有以下等价情况:
read(a,b);readln等价于readln(a,b)
输入语句输入的数据类型必须和变量一一对应。如果输入的是一串整数或实数,数据间用空格或回车分隔;若输入的是一串字符,则不用分隔。 输出语句
输出是将内存中的数据送到外设的过程。Turbo Pascal的输出语句有两种形式: write(<输出项表>); writeln(<输出项表>);
其中<输出项表>是一串用逗号分隔的常量、变量、函数名、表达式或字符串。如果是变量、函数名、表达式,则将其计算结果输出;如果是常量或字符串,则直接输出其值。
write和writeln的区别在于:write语句是输出项输出后,不换行,光标停留在最后一项后,writeln语句按项输出后,自动换行,光标则停留在下一行的开始位置。
writeln语句允许不含有输出项,即仅writeln;表示换行。
Turbo Pascal语言把输出项的数据显示占用的宽度称为域宽,你可以根据输出格式的要求在输出语句中自动定义每个输出项的宽度。定义宽度时分为单域宽和双域宽。
单域宽输出格式:writeln(I:n);
在n个字符宽的输出域上按右对齐方式输出I的值,若n大于I的实际位数,则在I值前面补(n-I的实际位数)个空格。若I的实际位数大于n,则自动突破限制。n必须是整数。
双域宽输出格式:writeln(a:n:m);
双域宽主要用于实型数据的输出。n的用法同上。在n个字符宽的输出域上按右队齐方式用小数点形式输出a的数值,m是小数点后的位数。原来的数据按该该格式指定的小数位数四舍五入。若m=0 ,则不输出小数部分和小数点,原数据四舍五入取整。n,m必须是整数。 例:输出语句的例子 program shuchu; const s='pascal';
var i:integer;r:real;c:char;b:boolean; begin
i:=12345; r:=123.45 c:='a'; b:=true; writeln('i='); writeln(i:6);
writeln('r=',r,r:6:1); writeln('c=',c,c:10); writeln('b=',b,b:10) end. 复合语句
复合语句是由若干语句组成的序列,语句之间用分号“;”隔开,并且以begin和end括起来,作为一条语句。复合语句的一般形式:
6
begin
语句1; 语句2; …… 语句n; end;
例:变量值的交换 program swap; var a,b,t:integer; begin
a:=10;b:=20; begin
t:=a; a:=b; b:=t; end;
writeln('a=',a,'b=',b) end.
例题1:输入圆的半径,求出圆的周长和面积: Progam CalCircle;
var R,C,S:Real;{变量声明} begin
write(?输入圆的半径:?); readln(R); C:=2*Pi*R;
write(?周长=?,C); readln;
S:=Pi*sqr(R);{sqr(R)=R*R} write(?面积=?,S); readln; end.
例题2:找出下面程序中的语法错误。 Program Example1;
{计算圆环面积的程序,R2表示外圆环的半径,R1表示内圆环的半径,R2>R1} var R1,R2:Real; begin
S=(R2+R1)*(R2-R1)*Pi {Pi=3.14为常数} writeln(s) end;
纠正以后的程序 Program Example1;
{计算圆环面积的程序,R2表示外圆环的半径,R1表示内圆环的半径,R2>R1} var R1,R2:real;
S:real;{每一个变量都必须声明} begin
S=(R2+R1)*(R2-R1)*Pi; {Pi=3.14为常数} writeln(s); {语句必须以“;”结束} end.{主程序必须以“.”结尾}
练习:
编写程序实现以下功能:
1、输入三角形三边的长,计算三角形的面积。 计算公式:
7
s?p?p(p?a)(p?b)(p?c)a?b?c2
Pascal程序中计算平方根的函数为:sqrt(x);{x:real; x?0}
基本要求:有友好的输入输出界面,不需要考虑输入的a,b,c是否可以构成三角形,假设输入的数据符合要求。
第二节 IF分支结构
例题: 输入一个考试分数,如果大于等于60就说恭喜你考试及格,如果小于60就说真差劲,要努力哦!
program JudgeScore; 输入分数→score; 如果Score≥60那么
输出“恭喜你考试及格” 否则
输出“真差劲,要努力哦”
“如果...那么”形式的判断在Pascal中使用If语句来实现。IF语句是由一个布尔表达式和两个供选择的操作序列组成。运行时根据布尔表达式求值结果,选取其中之一的操作序列执行。有两种形式的IF语句:
if <布尔表达式> then <语句>; if <布尔表达式> then <语句1>
else <语句2>;
当布尔表达式的值为真,则执行then后面的语句,值为假时有两种情况:要么什么也不做,要么执行else后面的语句。注意else前面没有分号,因为分号是两个语句之间的分隔符,而else并非语句。如果在该处添了分号,则在编译的时候就会认为if 语句到此结束,而把else当作另一句的开头,输出出错信息。 前面例题的Pascal程序代码: Program JudgeScore;
var score:real;{声明分数变量score} begin
readln(score); {输入分数} if score>=60 then
begin {score代表分数的变量}
writeln(?恭喜你,考试及格!?); end else begin
writeln(?真差劲,要努力哦!?); end; {end if score>=60} end.
例:求y=f(x),当x>0时,y=1,当x=0时,y=0,当x<0时,y=-1 program lianxi; var x,y:real; begin
if x>0 then y:=1; if x=0 then y:=0; if x<0 then y:=-1; writeln('y=',y); end.
在Turbo Pascal语言if语句中被构造的语句只能是一条语句,当条件选择某个分支的计算要用多个语句描述时,就必须把该分支用begin和 end括来,写成复合语句。在用if语句连续嵌套
8
相关推荐: