背景:
阅读新闻

第二课赋值语句、输出语句

[日期:11/15/2006 14:07:00] 来源:  作者: [字体: ]

上节课,我们学习了Pascal语言的程序基本结构,在一个程序中,所有的操作都由执行部分来完成,而执行部分又都是由一个个语句组成的。因此,下面开始我们要学习pascal语言的基本语句,并且在学习过程中逐步学会程序设计的基本方法。
  这节课我们要学习两种语句,即赋值语句与输出语句。在语句学习之前我们要先了解一些pascal语言的基础知识。

一、 常量、变量与算术表达式

(一)常量

  在程序运行过程中,其值不能被改变的量称为常量。如123,145.88,'abc',true等。

  整型常量

整型常量采用我们平常使用的十进制整数表示。如138,0,-512等都是整型常量,而18.18.0都不是整型常量。
pascal
中有一个标准标识符Maxint,它代表所使用的计算机系统允许的最大整型数,而最小的整型数即为-Maxint-1

一个整型数据用来存放整数。Turbo Pascal支持五种预定义整型,它们是shortint(短整型)、 integer(整型)、 longint(长整型)、 byte(字节型)和 word(字类型),Turbo Pascal分别用相同的名字作为他们的表识符。每一种类型规定了相应的整数取值范围以及所占用的内存字节数。

类型          数值范围                    占字节数            格式
shortint     -128..128                       1              带符号8
inteter      -32768..32767                   2             
带符号16
longint      -2147483648..2147483647         4             
带符号32
byte         0..255                           1            
带符号8
word         0..65535                         2            
带符号16

Turbo Pascal规定了两个预定义整型常量表识符maxintmaxlonint,他们各表示确定的常数值,maxint32767 maxlongint2147483647,他们的类型分别是integer longint

  实型常量

  实型常量包括正实数、负实数和实数零。pascal中表示实型常量的形式有两种。

  十进制表示法

  这是人们日常使用的带小数点的表示方法。
  如0.0,-0.0,+5.61,-8.0,-6.050等都是实型常量,而0.,.37都不是合法的实数形式。

  科学记数法

  科学记数法是采用指数形式的表示方法,如1.25×105可表示成1.25E+05。在科学记数法中,字母"E"表示10这个"底数",而E之前为一个十进制表示的小数,称为尾数,E之后必须为一个整数,称为"指数"。 如-1234.56E+26 , +0.268E-5 , 1E5是合法形式,而.34E12 , 2.E5 , E5 ,E,1.2E+0.5都不是合法形式的实数。

  无论实数是用十进制表示法还是科学表示法,它们在计算机内的表示形式是一样的,总是用浮点方式存储。

和整数相比,实数能表示的范围大得多,但值得注意的是实数的运算整数的运算速度慢且无法像整数那样精确表示,只能近似表示。

一个实型数据用类存放实数。Turbo Pascal支持五种预定义实型,它们是real(基本实型)、 single(但精度实型)、double(双精度实型)、extended(扩展实型)、comp(装配实型),Turbo Pascal分别用相同的名字作为他们的表识符。每一种类型规定了相应的实数取值范围、所占用的内存字节数以及它们所能达到的精度。

类型             数值范围             占字节数           有效位数
real           2.9e-39..1.7e38            6                11..12
single         1.5e-45..3.4e38           4                7..8
double         5.0e-324..1.7e308        8                15..16
extended       3.4e-4932..1.1e4932    10               19..20
comp           -2**63+1..2**63-1          8               
19..20

Turbo Pascal支持两种用于执行实型运算的代码生成模式:软件仿真模式和80x87浮点模式。除了real可以在软件仿真模式下直接运行以外,其他类型必须在80x87浮点模式下运行。

字符常量

  在Pascal语言中,字符常量是由单个字符组成,所有字符来自ASCII字符集,共有256个字符。在程序中,通常用一对单引号将单个字符括起来表示一个字符常量。如:'a''A''0'等。特殊地,对于单引号字符,则要表示成''''。对于ASCII字符集中,按每个字符在字符集中的位置,将每个字符编号为0255,编号称为对应字符的序号。

4.布尔常量

  布尔型常量仅有两个值,真和假,分别用标准常量名truefalse表示。它们的序号分别为10

5.符号常量

  一个常量即可以直接用字面形式表示(称为直接常量,如 124,156.8),也可以用一个标识符来代表一个常量,称为"符号常量"。但符号常量必须在程序中的说明部分定义,也就是说先定义,后使用。

  定义符号常量的一般格式:

CONST
<
常量标识符>=<常量>

说明:常量说明部分以关键字const开头, 后面的标识符为常量标识符,其中"="号后的常量为整数、实数、字符、 字符串(字符、字符串常量在后面章节中将作介绍)。而且,在常量说明部分可以将几个常量说明成符号常量,共用一个关键字"const"

则在本程序中pizero作为符号常量,分别代表实数3.14159和整数0。也就是说,常量说明部分既定义了常量名及其值,又隐含定义了常量的类型。  关于符号常量,应注意下列几点:

  符号常量一经定义,在程序的执行部分就只能使用该常量标识符,而不能修改其值。
  使用符号常量比直接用数值更能体现"见名知义"的原则,也便于修改参数,故一个较好的程序中,应尽量使用符号常量,在执行部分基本上不出现直接常量。

  (二)变量

  变量代表了一个存储单元,其中的值是可变的,故称为变量。如游戏"魂斗罗"中玩者命的个数最初为3,当你死了一次命减少一,这里命的个数就是一个变量(或者说命的个数存储在一个存储单元中)。即在程序运行过程中,其值可以改变的量,称为变量。

  变量有三个要素是:变量名、变量类型、变量值。

  一个程序中可能要使用到若干个变量,为了区别不同的变量,必须给每个变量(存贮单元)取一个名(称为变量名),该变量(存贮单元)存放的值称为变量的值,变量中能够存放值的类型为变量的类型。例如 "魂斗罗"游戏中用于存放""的变量,在游戏程序中的名字可取为N,它的类型为整型,游戏初始时这个变量的值为3

  1.变量名

  用一个合法的标识符代表一个变量。如n,m,rot,total 等都是合法变量名。在程序中用到的变量必须在说明部分加以说明,变量名应遵循自定义标识符的命名规则,并注?quot;见名知义"的原则,即用一些有意义的单词作为变量名。

  "自定义标识符"的命名规则为:自定义标识符必须以字母(包含下划线"_")开头,后面的字符可以是字母或数字。标识符长度不超过63个字符。

  2.变量的类型

  常量是有类型的数据,变量在某一固定时刻用来存放一个常量,因此也应有相应的类型。如整型变量用来存放整数,实型变量用来存放实数。

  3.变量说明

  在程序中若要使用变量,变量的名称及类型在程序的变量说明部分加以定义,变量的值则在程序的执行部分中才能赋给。

  变量说明的一般格式:

  VAR
<
变量标识符>[,<变量标识符>]:<类型
>;
(
中括号内部分表示可省,下同
)

  其中VARpascal保留字,表示开始一个变量说明段, 每个变量标识符或由逗号隔开的多个变量标识, 必须在它的冒号后面说明成同一类型。一个程序中,可以说明许多不同类型的变量,每种类型变量之间用分号隔开,共用一个VAR符号。

例如:
var
age,day:integer;
amount,average:real;

  其中,Integer(整型)Real(实型)是标准标识符, 它们是"类型标识符",代表了确定的类型,如age day 被定义为整型变量,amountaverage被定义为实型变量。
  一旦定义了变量,就确定了它的类型,也就是说,就确定了该变量的取值范围和对该变量所能进行的运算。

 

(三)算术表达式

算术表达式的定义

  pascal语言中的算术表达式是由符合pascal语法规定的运算对象(包括常量、变量、函数)、算术运算符、圆括号组成的有意义的式子。如:A+3.14159*5/8.4-Abs(-1123)

算术运算符

  常用的有以下6个算术运算符:

   + ()
   - (
)
   * (
)
   / (实数除)得到结果为实型.5.0/2.0=2.5 5/2= 2. 54/2=2.0而不等于2

   DIV (整除) DIV它要求除数和被除数均为整型, 结果也为整型。如10 DIV 2=5,10 DIV 3=3, 5 DIV 10=0. -15 DIV 4= -3DIV运算只取商的整数部分,参与DIV运算的两个对象不能为实型。
   mod (求余),也只能用于整数运算,结果为整数。例如:10 mod 4=2 , -17 mod 4= -1 , 4 mod (-3)=1, - 4 mod 3= -1,即 a mod b=a-(a div b)*b

(3)运算优先顺序

  如果一个表达式里出现两个或两个以上的运算符, 则必须规定它们的运算次序。pascal规定:

  表达式中相同优先级的运算符,按从左到右顺序计算;
  表达式中不同优先级的运算符,按从高到低顺序计算
;
  括号优先级最高,从内到外逐层降低
;
在算术运算中运算符的优先顺序与数学上的四则运算一致,即"先乘除后加减"(注:"MOD""DIV"运算的优先级与"""/"相同)。

 

二、赋值语句

  变量既然代表一个存储单元,其值是可变的,那么其中的值是怎么提供的,又是怎么改变的呢?可以通过赋值语句来进行。

1、 赋值语句的格式

变量名:=表达式;
其中":="称为赋值号。

2、 执行过程

计算机先计算赋值号右边表达式的值,然后将表达式的值赋给变量名代表的变量。如:A=9*8-2-1; A:=A+1

 

三、输出语句

输出语句的作用是将程序运算的结果输出到屏幕或打印机等输出设备。这里通常是指输出到屏幕。

 

(一)输出语句的两种格式

1 write语句
格式Write(表达式1,表达式2……)
:write(1,2,3,4);
write(1.2,3.4,5);
write('My name is Liping');
2
writeln语句

格式:
Write(
表达式1,表达式2……)
writeln

 

()输出语句的功能

  计算机执行到某一输出语句时,先计算出输出语句中的每个表达式的值,并将每一个表达式的值一个接一个地输出到屏幕上。
  Write语句与writeln语句格式上都相似,但它们在功能上有所不同,两个语句的区别在于,write语句将其后括号中的表达式一个接一个输出后,没有换行。而writeln语句则在输出各个表达式的值后换行。

例如以下两个程序段的输出分别为:
write(1,2,3,4);write(5,6);

输出为:
123456
writeln(1,2,3,4);write(5,6);

输出为:
1234
56

 

 

四、应用例析

1
   某仓库51日有粮食100吨,52日又调进20吨,53日卖出库存的3分之二,54日又调进库存的3倍粮食,问该仓库从51日到54日期间每天的粮食分别是多少吨?(输出每天的库存量)
分析:在这个问题中,主要要描述从51日到54日期间仓库的粮食库存量,且易知它是不断变化的。因此我们可以用一个变量A来描述仓库的粮食库存量。

程序可写如下:
Program ex1;
Var A : integer;
Begin
A:=100;Writeln('5/1:',A);
A:=A+20;Writeln('5/2:',A);
A:=A div 3; writeln('5/3:',A);
A:=A *4; writeln('5/4:',A);Readln;
End.

 

2
   有三个小朋友甲乙丙。甲有50粒糖果,乙有43粒糖果,两有13粒糖果。现在他们做一个游戏。从甲开始,将自己的糖分三份,自己留一份,其余两份分别给乙与丙,多余的糖果自己吃掉,然后乙与丙也依次这样做。问最后甲、乙、丙三人各有书多少粒糖果?

分析:
   这个问题中我们关心的是在游戏过程中每个小朋友的糖果个数,且他们所拥有的的糖果数是在变化的。因此可用a,b,c三个变量分别存放甲乙丙三个小朋友在某一时刻所拥有的糖果数。对于每人,分糖后,他的糖果数一定为原来的糖果数 div 3(因为分糖过程糖果的数目不一定都刚好分完,用整除恰恰可以表示多余的糖自己吃掉)。而其他两人则增加与这个小朋友现在拥有的一样的糖果。

程序可写如下:

program ex2;
 var A,B,C:integer;
begin
 A:=50;B:=43;C:=13; {初始时每个小朋友所拥有的糖果数
}
 A:=A div 3; B:=B+A;C:=C+A;{甲小朋友分糖果后,每个人拥有的糖果数变化情况
}
 B:=B div 3; A:=A+B;C:=C+B; {乙小朋友分糖果后,每个人拥有的糖果数变化情况
}
 C:=C div 3; A:=A+C;B:=B+C; {丙小朋友分糖果后,每个人拥有的糖果数变化情况
}
 writeln('A=',A,'B=',B,'C=',C); {输出结果
}
 
readln;
end.

注:
 上程序中倒数第三行中'A='表示一个字符串(即用一对单引号括起来的一串字符),对于字符串,输出字符串的内容(即引号内的所得字符,而引号不输出)。
以上程序的运行结果为:
A=51B=35C=16

收藏 推荐 打印 | 录入:admin | 阅读:
相关新闻        
本文评论   查看全部评论 (0)
表情: 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
热门评论