Object Pascal 语法之语言基础(三)

1.6 Object Pascal 的运算符

运算符是程序代码中对各种类型的数据进行计算的符号,通常分为算数运算符、逻辑运算符、比较运算符和按位运算符。

1.算术运算符
Object Pascal 语言的算术运算符,如表1-9 所示。
表1-9 Object Pascal 语言算术运算符

操作符 操作 操作数据类型 结果类型
+ 整型、实型 整型、实型
- 整型、实型 整型、实型
* 整型、实型 整型、实型
/ 整型、实型 整型、实型
mod 取余 整型 整型
div 整除 整型 整型

2.逻辑运算符
逻辑运算符操作对象和返回值都为布尔型,如表1-10 所示。
表1-10 Object Pascal 语言逻辑运算符

操作符 操作 操作数据类型
not 布尔
and 布尔
or 布尔
xor 异或 布尔

3.比较运算符
比较运算符返回值为布尔型(True 或False),关系运算符如表1-11 所示。
表1-11 Object Pascal 语言关系运算符

操作符 操作 操作数据类型
= 等于 简单数据类型、指针、集合、字符串或字符串包
<> 不等于 简单数据类型、指针、集合、字符串或字符串包
< 小于 简单数据类型、指针、集合、字符串或PChar
> 大于 简单数据类型、指针、集合、字符串或PChar
<= 小于等于 简单数据类型、指针、集合、字符串或PChar
>= 大于等于 简单数据类型、指针、集合、字符串或PChar
<= 子集 集合
>= 父集 集合

4.按位运算符
通过按位运算符可以修改一个变量的单独的位。可以进行按位与、或、非、异或,也可以对一个数进行向左(Shl)或向右(Shr)移位操作。

5.运算符优先级
一个表达式中可能有多个运算符,它们的运算是有先后顺序的,不同的运算符在表达式中的优先级如表1-12 所示。
表1-12 运算符的优先级

运算符 说明
() 括号
+,- 正号和负号
^ 乘方
*,/ 乘和除
+,- 加和减,字符串连接
=,>,<,<=,>=,<> 关系运算符
not 逻辑非
and 逻辑与
or 逻辑或

1.7 语句

1.常量声明语句
常量在声明时就被赋予了一个值,在程序执行过程中是不可改变的。下面的例子声明了3 个常量:

const
    Pi = 3.14159;
    BookID = 362;
    BookName = "Delphi";

像变量一样,常量也有类型。上文的3 个常量的类型分别是Real 型、整型、字符串型。常量用“=”表示两边的值是相等的。

2.赋值语句
赋值语句的形式如下:

variable:=expression; //变量: = 表达式;

3.Goto 语句
Goto 语句可以从程序中的一个地方直接跳转到另一个地方。但是从结构化程序设计的角度来考虑,尽量不要使用Goto 语句。
Goto 语句的形式如下:

goto label;

在使用Goto 语句之前,首先要声明标号。标号声明语句如下:

label label1,label2,...,labeln;

4.复合语句
首尾使用Begin 和End 包括起来的一组语句称为复合语句。复合语句可以嵌套使用,也允许有空的复合语句。例如:

begin
    c:=a;
    a:=b;
    b:=c;
end;

5.If 语句
If 语句的结构如下:

if <条件> then
    <语句>;

还可以为基本语句添加Else 子句:

if <条件> then
    <语句>
else
    <语句>;

需要注意的是,上面两个例子中的<语句>可以是单语句或复合语句。If...Then 语句被认为是单语句,在语句结束时只有一个分号(在第1 种情况的Then 引导的子句之后,或在第2 种情况的Else 引

导的子句之后)。
例如下面的代码中Date 为整数类型,判断Date 如果在1 与10 之间显示为“上旬”、11 与20 之间显示为“中旬”、21 与31 之间显示为“下旬”,如果数值不包含在上述范围内则显示“错误的日期”:

if (Date>=1) and (Date<=10) then
    Writeln(’上旬’)
else if (Date>=11) and (Date<=20) then
    Writeln(’中旬’)
else if (date>=21) and (Date<=31) then
    Writeln(’下旬’)
else
    Writeln(’错误的日期’);

注意:Else 子句之前,Then 引导的子句之后是不能有分号的。

6.Case 语句
If...Then...Else 语句适合选项较少的情况,如果有很多选项的话利用If 语句就比较麻烦,在这种情况下,Case 语句就容易多了。Case 语句的语法如下:

case <表达式> of
    <数值>:<语句>;
    <数值>:<语句>;
else
    <语句>;
end;

下面这个例子中的S 为Char 类型。当用户输入一个字符后按回车键确认后判断变量S,如果是小写或大写字母将显示“字符”,如果是数字,则显示“数字”,其余的字符就显示“其他”,判断语句如
下:

var
    S:Char;

begin
    Readln(S);
    case S of
        ‘a‘..‘z‘, ‘A‘..‘Z‘:Writeln(‘字符‘);
        ‘0‘..‘9‘:Writeln(‘数字‘);
    else
        Writeln(‘其他‘);
end;

注意:Case 构造中的任何一个语句都可以是单语句或复合语句。如果需要在某种情况下执行多行代码,必须将它们用Begin...End 括起来。

7.Repeat 语句 
Repeat 语句会重复执行一行或多行语句,直到某一状态为真。语句以Repeat 开始,以Until 结束,其后跟随被判断的布尔表达式。结构如下:

repeat
    <语句>
until <条件表达式> 

例如:

    I:=0;
    repeat
        I:=I+1;
        Writeln(IntToStr(I));
    until I>5; 

执行以上的例子时,会显示1-6 的数字。布尔表达式I>5 直到Repeat...Until 程序段结束才会被计算,也就是Repeat 语句至少要执行一次。

8.While 语句 
While 语句和Repeat 语句的不同之处在于While 语句的布尔表达式在循环的开始进行判断。如果表达式的结果为真则执行循环,否则退出循环。结构如下:

while <条件表达式>
begin
    <语句>
end;

例如:

I:=0;
while I<5 do
    begin
        Writeln(IntToStr(I));
        Inc(I);
    end;

执行以上的例子时会显示0-4 的数字。直到I 不小于5 时才退出循环。

9.For 语句
For 语句内的程序代码会执行一定的次数。它需要一个循环变量来控制循环次数。循环变量的类型可以是整型、布尔型、字符型、枚举型或子界型。结构如下:

for <条件表达式> do
begin
    <语句>
end;

下面的例子将显示1-5 的数字:

for I:=1 to 5 do
begin
    Writeln(IntToStr(I));
end;

而下面的例子将显示5-1 的数字:

for I:=5 downto 1 do
begin
    Writeln(IntToStr(I));
end;

10.Break 语句
在各循环中调用Break,可以使得程序的执行流程立即跳到循环的结尾。例如程序执行5 次后跳出循环,代码如下:

for I:=1 to 10 do
begin
    if I=5 then
    Break;
end;

11.Continue 语句
如果想跳过循环中部分代码,并开始下一次循环,可以调用Continue 语句。下面的例子在执行第3 次循环时,Continue 后的代码不执行而继续下一次的循环:

for I:=1 to 5 do
begin
    if i=3 then
    Continue;
    Writeln(IntToStr(I));
end;

12.With 语句
使用记录类型的变量时,可以通过With 语句指定一些语句,这些都是针对某一个变量来说的,这样可以简化代码的输入量。With 语句的形式如下:

with object do statement

例如:

type
    TEmployee=record
        Name : string[20];
        YearHired:2000..2010;
        Salary: Double;
        Position: string[20];
end;

var
    Employee:TEmployee;

begin
    with Employee do
        begin
        Name :=’Wang’;
        YearHired :=2005;
        Salary :=10000;
        Position := ’ Technic Department’;
end;

Object Pascal 语法之语言基础(三)

时间: 2024-08-07 21:16:28

Object Pascal 语法之语言基础(三)的相关文章

Object Pascal 语法之语言基础(二)

1.5 数据类型与定义变量 Object Pascal 语言的最大特点是对数据类型的要求非常严谨.传递给过程或函数的参数值必须与形参的类型一致.在Object Pascal 语言中不会看到像C 语言编译器提示的“可疑的指针转换”等警告信息.由于Object Pascal 语言对数据类型比较严谨,因此它会对代码进行严格检查,以确保不会出现错误.变量是程序代码中代表一个内存地址的标识符,那么该地址的内存内容就可以在程序代码执行时被改变.每个变量都有一个名字和数据类型,名字可以用来引用变量,数据类型决

Object Pascal 语法之语言基础(四)

1.8 过程与函数 过程与函数是实现一定功能的语句块,是程序中的特定功能单元.可以在程序的其他地方被调用,也可以进行递归调用.过程与函数的区别在于过程没有返回值,而函数有返回值. 1.过程与函数的定义过程与函数的定义包括过程原型或函数原型.过程体或函数体的定义.过程定义的形式如下: procedure ProcedureName(ParameterList); directives; var LocalDeclarations; begin statements end; ProcedureNa

Object Pascal 语法之语言基础(一)

Delphi 是以Object Pascal 语言为基础的可视化开发工具,所以要学好Delphi,首先要掌握的就是Object Pascal 语言. 1 语言基础 Object Pascal 语言是在Pascal 语言的基础上发展起来的,它继承了Pascal 语言语法严谨.数据结构丰富等优点,同时融入了面向对象编程的语法要素,使之成为一个完善的面向对象的编程语言. 1.1 Object Pascal 语言编写环境 随着Windows 操作系统的普及,很少有人在DOS 环境下编写程序了,下面将为读

Object Pascal 语法之控制语句

控制语句 1.常量声明语句常量在声明时就被赋予了一个值,在程序执行过程中是不可改变的. 格式 const 常量名 :数据类型 = 值 下面的例子声明了3 个常量: const Pi = 3.14159; BookID = 362; BookName = "Delphi"; 像变量一样,常量也有类型.上文的3 个常量的类型分别是Real 型.整型.字符串型.常量用“=”表示两边的值是相等的. 为常量指定数据类型,声明方法如下: const  UserID :Integer =1; Use

C语言基础三

程序执行顺序: 1.顺序结构 2.条件结构;if条件结构,if...else条件结构,多重if条件分支结构(if...elseif..else)和switch条件结构 3.循环结构:do....while循环,while循环,for循环 运算符: 算术运算符(按照操作数分类) 1.一元操作符 ++,-- 2.二元运算符:+,-,*,/,%(取模或求余) 赋值运算符:= 复合赋值运算符:+=,-=,*=,/=.%= 比较运算符:比较数值的大小关系(<,>,<=,>=,!=,==) 逻

C++语言学习(二)——C++对C语言基础语法的扩展

C++语言学习(二)--C++对C语言基础语法的扩展 C++是基于C语言扩展发展而来的面向对象的程序设计语言,本文将主要讨论C++语言基于C语言扩展的方面. 一.实用性增强 C语言中变量的定义必须在作用域开始的位置进行定义. #include <stdio.h> int main(int argc, char *argv[]) { int i;//定义变量 int j; //使用变量 for(i = 0; i < 10; i++) { for(j = 0; j < 10; j++)

嵌入式linux C++语言(二)——C++对C语言基础语法的扩展

嵌入式linux C++语言(二)--C++对C语言基础语法的扩展 C++是基于C语言扩展发展而来的面向对象的程序设计语言,本文将主要讨论C++语言基于C语言扩展的方面. 一.类型增强 1.类型检查更严格 在C语言中: const int a = 100; int *p = &a; 在C++语言中: const int a = 100;//必须在定义的时候初始化 const int *p = &a; 在C++语言中不能隐式转换数据类型. error: invalid conversion

终于懂了:Delphi的函数名不是地址,取地址必须遵守Object Pascal的语法(Delphi和C的类比:指针、字符串、函数指针、内存分配等)good

这点是与C语言不一样的地方,以前我一直都没有明白这一点,所以总是不明白:函数地址再取地址算怎么回事? ---------------------------------------------------------------------------------------------------------------- 在学习Delphi的时候,一个很好的建议是和C/C++去类比着学习,从指针,到内存管理,到数组,到面向对象……各个方面,都是有很多可以相似和或者也有不同的方,类比着学习,一

第3天:语言基础(三)

Java 中基本数据类型的类型转换 Java 中的基本数据类型的转换分为两种:自动类型转换和强制类型转换 1.自动类型转换 当"小"的数据类型和"大"的数据类型进行计算时,会自动将"小"的数据类型转换成"大"的数据类型,然后再进行计算,得到的结果是最"大"的数据类型. 在进行方法的参数传递的时候,也是这样. 关于自动类型转换,有一个规则: 所有的 byte.short.char 都将转换成 int 类型 如