运算符、布尔运算、表达式、标准函数
hb007 发表于 2006-3-22 19:24:26
一、运算符
1、算术运算符
运算符
运算 
运算对象 
结果类型 
+
整型、实型 
只要有一个运算对象是实型,结果就是实型,如果全部的运算对象都是整型并且运算不是除法,则结果为整型,若运算是除法,则结果是实型 
- 
整型、实型 
*
乘 
整型、实型 
/
整型、实型 
div
整除
整型
整型
mod
取余
整型
整型
例如:
4 + 5 = 9          8 - 3 = 5
2 * 3 = 6          12 * 24 = 408
5 / 2 = 2.5        34 / 12 = 2.83
5 div 2 = 2        123 div 4 = 30
5 mod 2 = 1        12 mod 5 = 2
 
2、逻辑运算符
 运算符
 运算
 运算对象
 结果类型
 not
 逻辑非
 布尔型
 布尔型
 and
 逻辑与
 布尔型
 布尔型
 or
 逻辑或
 布尔型
 布尔型
它们的运算真值表如下:
a
b
not b
a and b
a or b
false
false
true
false
false
false
true
true
false
true
true
false
false
false
true
true
true
false
true
true

3、关系运算符
运算符
运算
运算对象
结果类型
=
等于
简单类型
布尔型
<>
不等于
简单类型
布尔型
<
小于
简单类型
布尔型
>
大于
简单类型
布尔型
<=
小于等于
简单类型
布尔型
>=
大于等于
简单类型
布尔型
例如:设a,b为标准数据类型的变量,则:
a=b      如果a等于b结果为真,否则为假。
a<>b      如果a不等于b结果为真,否则为假。
a<b      如果a小于b结果为真,否则为假。
a>b      如果a大于b结果为真,否则为假。
a<=b      如果a小于等于b结果为真,否则为假。
a>=b      如果a在于等于b结果为真,否则为假。
例如:
5=5                结果为真。
5=10              结果为假。
false<true        结果为真。
false>true        结果为假。
'A'<'C'            结果为真。
12.5>-8            结果为真。
24>=21            结果为真。
10.3<10            结果为假。
二、运算符的优先级
运算符
优先级
园括号
按由里至外,逐层展开的规律进行。
not
1()
*,/,div,mod,and
2
+,-,or
3
=,<>,>=,<=,<>
4(低)

三、布尔运算
要判断X>Y”是否成立,其结果不是一个算术量(即数值),而是成立不成立,也可以用表示成立,用表示不成立,也就是说,它的结果是一个逻辑值(或者)。逻辑运算又叫布尔运算。布尔(Bool)是英国数学家的名字,他首先提出对二值变量进行逻辑运算的代数,称为布尔代数。
1、布尔常量
Pascal语言中true表示,False表示。所以布尔类型只有truefalse两个常量。
2、布尔型符号常量(boolean
在程序的说明部分,可以定义布尔符号常量。如:
const
  t=true;
  f=false;
执行部分就可以用t代表true,用f 代表false。例如:
write(t,f)
将输出:
TRUEFALSE
3、布尔变量
如果我们将某些变量说明成布尔型,那么这些变量就是布尔变量,它们只能用于存放布尔值(turefalse)。
例如,var a,b:boolean
      begin
        a:=true;
        b:=false;
4、布尔类型是顺序类型
由于这种类型只有两个常量,Pascal语言中规定ture的序号为1false的序号为0。若某种类型的常量是有限的,那么这种类型的常量通常都有一个序号,我们称这种类型为顺序类型。如前面我们学过的整型(integer),字符型(char)都是顺序类型。
四、表达式
 表达式是描述数值诸规则的算法结构,它是由操作数(变量名、常量名、函数名等)和运算符联结而成。
(一)算术表达式:
算术表达式是由算术运算符连接常量、变量、函数的式子。
算术表达式中各个运算符的次序为: ( )→函数*,/,div,mod+,-
同一级别的运算符,按在表达式中的次序先左后右的原则。
例如:a=17,b=24,c=8,d=5,e=21
b  - c * d Div(e Mod a)
         
       
最后的结果是14
(二)逻辑(布尔)表达式
1、简单布尔表达式(关系表达式)
下例这些都是关系表达式:
x>=0, b*b-4*a*c>0, x=y+z, a<>b, true>false, ‘a’>’b’
所谓关系表达式是由一个关系运算符将两个数值量(或字符型数据或布尔型数据)联结起来的式子。关系运算符的两侧可以是常量、变量或表达式(仅限数值型、字符型、布尔型)
关系表达式的值是一个布尔常量(TrueFalse),而不是一个数值。
Turbo Pascal中有六个关系运算符,它们的书写与含义如下所示:

大于 大于或等于 小于 小于或等于 等于 不等于
  >      >=      <      <=      =    <>
关系运算符两侧一般应使用同类型的数据。例如,数值不能同字符相比较。但整型量可以同实型量相比,在比较时,系统先将整型量转换成实型量,然后再进行比较。例如,如果number为实型量,则number>12,实际上是按number>120进行比较的。
由于实数在内存中的存贮存在误差,因此,可能会出现这样的情况:在理论上应该相等的两个数,用计算机判断它们却为不相等。例如,X=1X/10却不等于0.1,关系表达x/10=0.1”的值可能为(False)。因此,应该避免对两个实数作是否相等的比较。若想判断a是否等于b,应该写为:Abs(a-b)<1E-6abs绝对值)或小于一个其他足够小的数,只要小于此数,就认为ab足够地接近,近似地认为相等;如果ab的值比较大(1030),则a-b之差可能大于10-5,因此,可用相对误差,即:Abs((a-b)/x)<1E-5,当此关系式的值为Trueab相对误差小于百万分之一。
可以将一个布尔表达式的值赋给一个布尔变量。例如,若已定义x为布尔变量,ab为数值型变量,则x:=a>b是允许的。布尔表达式的值可以输出。若a的值为12.5,则write(a<10)将输出逻辑值False
以后还要介绍一个关系运算符in”,它的两侧是集合表达式。
   
2、布尔运算符和布尔表达式
布尔运算符:not(逻辑非)and(逻辑与)or(逻辑或)xor(逻辑异或)
它们的运算次序是:notandorxor  not最优先,and又优先于orxor
   
布尔表达式的形式为:
<布尔量>and/or/xor<布尔量>      not<布尔量>
由此可见,not是一个单目运算符,它的前面没有参加运算的布尔量,它的作用是改变它后面的布尔逻辑值;andorxor双目运算符,它们的前后都有布尔型数据。
abc是布尔型数据,则:
a and b
a or b
a xor b
not a
(a and b)or(b xor c)and(not a)
not c and (a xor b)
等都是布尔表达式。
a
b
Not a
a and b
a or b
a xor b
false
false
true
false
false
false
false
true
true
false
true
true
true
false
false
false
true
true
true
true
false
true
true
false
Turbo Pascal提供给布尔表达式以下基本操作:逻辑运算和关系运算。
如果在一个布尔表达式中既包括布尔运算符,又包括关系运算符和算术运算符,则它们的运算顺序为:
括号函数not*,/,Div,Mod,and+,-,or,xor>,<,>=,<=,=,<>,in
例如:若a=true,b=false,x=7,y=12,m=7,n=35,求下列布尔表达式的值。
a and not(m > n) and (x < y - m) or (a xor b)
                         
                     
先标出它们运算的先后顺序如上:
则有False5FalseTrueTrueTrueFalseTrue,因此最后得到布尔表达式的值为True
对混合运算应该特别注意的是:关系表达式要加括号,先进行关系运算,得到一个布尔量,再进行布尔运算。
例如:表示算术表达式:3<=x<=7
正确的表达式: 3<=x and x <=7
错误的表达式: 3<=x<=7 3<=x or x<=7
例如,命题:m,n都是偶数或都是奇数可表示为:
(m mod 2=0)and(n mod 2=0) or (m mod 2=1)and(n mod 2=1)

五、标准函数
标准函数是Turbo Pascal语言预先定义的,它们实际上是能完成特定功能的称为子程序的程序段。每个标准函数都用一个标识符来标识,每个标准函数都能完成一个特定的功能,在程序中可以直接调用它们。Turbo Pascal语言中某些标准函数与数学中的函数有相似之处。

(一)整数类型函数
Turbo Pascal语言提供了自变量为整型量的标准函数有顺序函数、算术函数和转换函数等。
整型是顺序类型,即所有的整型数都是按一定的顺序排列的。如3的后序数是4350的后序数是351。以后介绍的布尔型、字符型、枚举类型和子界类型等都是顺序类型。顺序函数可以对顺序类型数据进行操作,但要注意它们自变量的取值范围。
前趋函数:Pred(x)函数值为x-1,例如:
                    Pred (6)=5      Pred (-21)=-22
                    Pred(-Maxlongint-1)无意义
后继函数:Succ (x)函数值为x+1,例如:
                    Succ (l5)=16      Succ (-114)= -113 
                    Succ (Maxlongint)无意义
绝对值函数:Abs (x)函数值为︱x︱,例如:
                    Abs (-119)=119      Abs (101)=101
④平方函数:Sqr (x)函数值为X2,例如:
                    Sqr (-5)=25      Sqr (l0)= 100
以上四个函数的结果仍是整型数。
奇函数:Odd (x),函数的结果为布尔型。当X为奇数时,函数值为true;当X为偶数时,函数值为false。例如:
                    Odd (13)= True      Odd  (16)= False
⑥字符函数:Chr (X),函数值是序号的ASCII字符,属字符型。例如:
                    Chr (65)=’A’      Chr (32)=’  ’
(二)实数类型函数
Turbo Pascal语言提供了自变量为实型的标准函数,有如下几种:
1、算术函数
在下列算术函数中,X可以是实型或整型数的表达式。对于函数AbsSqr,其结果类型和变量X的类型相同,其他算术函数的结果类型都是实型。
绝对值函数Abs(x):函数值为x的绝对值
平方函数Sqr (x):函数值为x的平方
小数函数Frac (x):函数值为x的小数部分
整数函数Int (x):函数值为x的整数部分
正弦函数Sin (x):函数值为x的正弦,其中x的单位为弧度
余弦函数Cos (x):函数值为x的余弦,其中x的单位为弧度
指数函数Exp (x):函数值为了ex
对数函数Ln (X):函数值为x的自然对数
平方根函数Sqrt (x):函数值为x的平方根
反正切函数Arctan(x):函数值为x的反正切,单位为弧度
随机函数Random:无自变量时,函数值取(0,1)间的随机小数;有自变量且为Word类型时,函数值取(0,自变量)间的随机整数。例如:random(256)=0256(但不包括256)之间的一个随机整数;random=01之间的一个随机小数。
圆周率函数Pi:无自变量,函数值为π值。
函数FracInt有如下的关系:Frac(x)=x-Int(x)
Turbo Pascal语言没有乘幂运算符和函数。由于xy=eylnx,因此,若要计算xy,可用指数函数来计算:即xy=Exp(y*ln(x))
2、转换函数
在下面转换函数中,x是实型数,函数的结果类型是整型。
截尾函数Trunc(x):舍去实数x的小数部分,并转换为整型
舍入函数Round(x):对实数x作四舍五入,并转换为整型
例如:
Trunc(5.15)=5  Trunc(-5.15)=-5
Round(5.56)=6  Round(-5.15)=-5
Turbo Pascal还提供了一个常用的预定义字符型标准函数Upcase,该函数仅对英文小写字母返回其对应的大写字母,对其他字符不作改变而返回原值。例如:
Upcase('x')='X'    Upcase('?')='?'
(三)字符类型函数
Turbo Pascal语言提供如下自变量为字符型的标准函数,其中Ch为字符型。
false是什么函数①后继函数Succ (ch):例如,Succ (’8’)=’9’      Succ (’E’)=’F’
对字符集的最后一个字符,Succ函数无意义。
前趋函数Pred (ch):例如,Pred (’7’)=’6’  Pred (’B’)=’ A’
对字符集的第一个字符,Pred函数无意义。
序数函数Ord (ch):给出字符chASCII字符集中的序号,结果为整型。
注意:Ord (’7’)<>7,正确的是:Ord (’7’)=Ord(’0’)+7=48+7=55
ch是数字字符,则Ord (ch)-Ord ('0')是该数字字符的数值。例如:Ord (’7’)-Ord(’0’)=7
前面介绍的字符函数Chr (i)Ord (ch)的逆函数。例如:
    Chr (55)= ’7’        Chr (Ord(’A’))=’A’
(四)布尔类型函数
Turbo Pascal语言提供布尔型函数主要是几个字符型函数。
Ord (B):例如:Ord (false)=0    Ord (true)=1
Pred (B):例如:Pred(true)=false    Pred(false)无意义
Succ (B):例如:Succ(false)= true    Succ(true)无意义
除了上面的三个标准函数外,还有两个标准函数的值是布尔型:Eof(f)Eoln(f)。其中f是文件变量。若输入文件是标准文件input,可写成EofEoln。这两个函数的值在开始读文件时为False,当读到一个行结束符时(回车符Chr(13)),EolnTrue;当读到文件结束符(Chr(26))或(Ctrl+Z)时,EofTrue
杂类函数
函数标识符
自变量类型
意义
结果类型
random
无自变量
[0,1]之间的随机实数
real
random
word
[0,自变量]之间的随机整数
word
randomize
无自变量
用一随机值初始化内部随机数产生器
longint
upcase
字符型
使小写英文字母变为大写
字符型
练习:
1、布尔类型量可以做哪些运算?运算规则是什么?
2、表达式sqrt(abs(-100)*sqr(round(5.8)))的值是(    )。
3、把整数5变为字符'5'的表达式为(        )。
4、下列式子中,正确关系表达式为(    )。
  A 'a'<100  B 23.6<21  C (1<2)and('A'>'B')  D 5<x<8
5ax2+bx+cPascal表达式为(            )。
6、一元二次方程的根的Pascal表达式为(                )。
7、己知b1b2b3的布尔值分别为truefalsefalse
(1)not b1 and notb2=  )。
(2)b1 or b2 and b3=  )。
(3)(not b1 or b2)and(b2 or b3)=  )。
8、将小写字母x变为大写字母的式子为(    )。
9、有一编码规则如下:
原码:ABCXYZ
密码:ZYXCBA
已知原码变量为x,则密码的表达式为(      )。
10、求表达式的值,并指出运算次序:
1)已知a,b,c,d,e,f都是整型变量,它们的值分别为643525,计算下列表达式:a+b*c*(d div e)-f
2((3>2)and(8<2)) or not(2>1)
3((8<7) or ('y'>'x'))and((6>5)and not(5>2))or(2>1)
11、将下列代数式写成Pascal表达式
1(a+b)(a-b)      2sin(x)/(x-1)    3(a+b+c)/2
4ln(x+y)          5xy                    6s(s-a)(s-b)(s-c)
1、布尔类型的量可以用notandor运算。规则如下:not运算是对原值否定。如x为真,则not x的值为假。and运算是对两个布尔量进行运算。只要有一个假,运算结果就为假。表示为x and yor运算是对两个布尔量进行运算。只要有一个为真,运算结果就为真。表示为x or y
260.0
3chr(5+ord('0'))
4B
5a*x*x+b*x+c
6(-b+sqrt(b*b-4*a*c))/(2*a)(-b-sqrt(b*b-4*a*c))/(2*a)
7false  true  false
8chr(ord(r)-ord('a')+ord('A'))
9chr(ord('A')+ord('Z')-ord(x))
1016+4*3*(5div2)-5=25
        4 2 3  1  5
    2((3>2)and(8<2)) or not(2>1)
          1  3  2     6  5  4
    3((8<7) or ('y'>'x'))and((6>5)and not(5>2))or(2>1)
          1    3    2      8    4   7   6  5  10  9
111(a+b)*(a-b)  2sin(x)/(x-1)  3(a+b+c)/2
    4ln(x+y)       5x*exp(3*ln(y)) 6sprt(s*(s-a)*(s-b)*(s-c))
 

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