第五章 语句
来源:互联网 发布:中兴软件南昌公司如何 编辑:程序博客网 时间:2024/04/24 01:27
简单语句和复合语句
Pascal 简单语句中不包含任何别的语句,赋值语句和过程调用即是简单语句的例子。简单语句用分号隔开,如下所示:
X := Y + Z; // assignmentRandomize; // procedure call
用begin 和end 将简单语句括起来即组成复合语句,复合语句用法与普通的Pascal 语句相同,见下例:
begin A := B; C := A * 2;end;
end之前的最后一条语句末尾分号不是必需的,你可以写成:
begin A := B; C := A * 2end;
这两种写法都是正确的。第一种多了一个无用(但也无害)的分号。分号实际上是一个空语
句,也就是说,是一个没有代码的语句。有时,空语句可用在循环体或其他特殊情况中。
赋值语句
在Pascal 语言中赋值语句用冒号-等号操作符“:=”,对使用其他语言的编程人员来说这是一个奇怪的符号。在其他语言中用作赋值符号的“=”在Pascal 中用作关系运算符,用于判断是否相等。
条件语句
条件语句通过条件检测,判断是否执行该条件语句中包含的语句。条件语句可有两种基本形式:if语句和case语句。
If语句
对if-then型语句,仅当条件满足时,语句才执行;对if-then-else型,if语句在两条语句中选择一条执行。条件用布尔表达式建立
procedure TForm1.Button1Click(Sender: TObject);begin // simple if statement if CheckBox1.Checked then ShowMessage ('CheckBox1 is checked')end;
procedure TForm1.Button2Click(Sender: TObject);begin // if-then-else statement if CheckBox2.Checked then ShowMessage ('CheckBox2 is checked') //没有 分号 else ShowMessage ('CheckBox2 is NOT checked');end;要注意的是,不能在第一句之后、else 关键词之前加分号,否则编译器将告知语法错误。
实际上,if-then-else 语句是单纯的一条语句,因此不能在语句中间加分号。
Case语句
如果你的if语句变得非常复杂,有时可以用case语句代替它。case语句包括用来选值的
表达式、可能值序列或一个取值范围。这些值应该是常量,并且它们必须唯一,而且应属于
有序类型。Case语句最后可以带一个else 语句,当没有一个标签与选择器的值一致时,
执行else语句。下面是两个简单的例子:
case Number of 1: Text := 'One'; 2: Text := 'Two'; 3: Text := 'Three';end;case MyChar of '+' : Text := 'Plus sign'; '-' : Text := 'Minus sign'; '*', '/': Text := 'Multiplication or division'; '0'..'9': Text := 'Number'; 'a'..'z': Text := 'Lowercase character'; 'A'..'Z': Text := 'Uppercase character';else Text := 'Unknown character';end;Pascal语言中的循环
其它编程语言中使用的循环语句,Pascal语言中都有,它们包括 for、 while 和 repeat
语句。如果你用过其他编程语言,你会发现Pascal中的循环语句没什么特别的,因此这里
我只作简要的说明。
For循环Pascal 中的for循环严格地建立在计数器基础上,循环每执行一次,计数器不是增加一个值
就是减小一个值。下面是一个for语句的简例,用来将前十个数加起来:
var K, I: Integer;begin K := 0; for I := 1 to 10 do K := K + I;
同样的for语句可以用正好相反的计数器来写:
var K, I: Integer;begin K := 0; for I := 10 downto 1 do K := K + I;
Pascal 中的for循环语句其灵活性比其他语言小(它不能指定1之外的步长),不过简单也
容易理解。如果需判断的条件比较复杂,或想自定义计数器,你可以用while语句或 repeat
语句,而不是for循环语句。
注意:for循环计数器不必非是数字,它可以是任何有序类型的值,例如一个字符或一个枚举类
型值。
while语句和repeat语句while-do 循环语句和 repeat-until 语句的不同点在于repeat 循环语句的代码至少要执行
一次。从下面的简例很容易理解这一点:
while (I <= 100) and (J <= 100) dobegin // use I and J to compute something... I := I + 1; J := J + 1;end;repeat // use I and J to compute something... I := I + 1; J := J + 1;until (I > 100) or (J > 100);
从上可见即使 I 或 J 的初始值大于100,repeat-until循环中的代码也仍会执行一次。
注意:两种循环另一个关键的不同点是,repeat-until 循环的条件是反向的条件,只要不满足
这个条件,循环就执行;当条件满足时,循环终止。这正好与while-do 循环相反,while-do
循环当条件是真值时才执行。为此,我不得不在上面代码中用反向条件来获得相同的结果。
注意:用 Break 和 Continue 系统过程可以改变循环执行的标准流程。Break 中断循环;
Continue直接跳至循环测试句,或使计数器增加一个步长,然后继续循环(除非条件为空或
计数器达到最大值)。还有两个系统过程 Exit 和 Halt,让你立即从函数或过程中返回,或者
终止程序。
With语句
我要讲的最后一种Pascal 语句是With语句,With语句是Pascal编程语言独有的语句,不过
最近JavaScript 和Visual Basic也添加了这种语句,它在Delphi程序设计中很有用。
With语句是一种用于简化代码的语句。如你要访问一个记录类型变量(或一个对象),用
With语句就不必每次重复变量的名字。例如对于以下的记录类型代码:
type Date = record Year: Integer; Month: Byte; Day: Byte; end;var BirthDay: Date;begin BirthDay.Year := 1997; BirthDay.Month := 2; BirthDay.Day := 14;
可以用with语句改进后半部分代码,如下:
begin with BirthDay do begin Year := 1995; Month := 2; Day := 14; end;
在Delphi程序中,这种方法能用于访问控件和类变量。现在通过with语句访问列表框的条目,
我们重写上面循环例子的最后部分:
procedure TForm1.WhileButtonClick(Sender: TObject);var I: Integer;begin with ListBox1.Items do begin Clear; // shortcut Randomize; I := 0; while I < 1000 do begin I := I + Random (100); // shortcut: Add ('Random Number: ' + IntToStr (I)); end; end;end;
当你使用控件或类时,with语句通常能简化你的代码,尤其对嵌套域。例如,你要改变
窗体画笔的宽度和颜色,你可以写代码如下:
Form1.Canvas.Pen.Width := 2;Form1.Canvas.Pen.Color := clRed;
但如果用With语句代码会更简单:
with Form1.Canvas.Pen dobegin Width := 2; Color := clRed;end;
当编写的代码很复杂时,with语句会很有用,也可省去一些临时变量。但是这样做也有
缺点,因为这样将使代码的可读性变差,特别对有相似或相同属性的对象。
- 第五章 条件语句
- 第五章 语句
- 第五章 DQL语句
- 第五章 语句
- 第五章 语句
- 第五章 语句
- 第五章 语句
- 第五章—语句
- 第五章 语句
- 第五章 语句
- 第五章 语句
- 第五章 流程控制语句
- 第五章 5.1 简单语句
- 第五章 5.5 跳转语句
- C ++ Primer | 第五章 语句
- C++ Primer 第五章 语句
- c++ primer(第五版)笔记 第五章 语句
- 《C++primer(第五版)》学习之路-第五章:语句
- Flex or JS Event Flow
- C语言位操作
- Go语言编译器安装
- 表大小 表空间大小
- Android模拟器和.apk文件的install步骤
- 第五章 语句
- 放假了
- 做一个优秀的PM(1)--论赞美和尊重
- 为你的Flex应用程序创建一个自定义动画光标
- CentOS的网卡顺序/网卡名称排列
- JavaScript高级程序设计学习笔记6:正则表达式
- Office 2010 Beta初体验
- Linux-Ubuntu8.10下固定IP设置
- 论数学的基础作用