控制语句

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

格式

const

常量名 :数据类型 = 值

下面的例子声明了3 个常量:

  1. const
  2. Pi = 3.14159;
  3. BookID = ;
  4. BookName = "Delphi";

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

为常量指定数据类型,声明方法如下:

  1. const
  2.   UserID :Integer =;
  3.   UserName :String ='XIAL l'
  4.   Digits:array[..] of Char = ('','','','','','','','','','');

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

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

3.Goto 语句

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

Goto 语句的形式如下:

  1. goto label;

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

  1. label label1,label2,...,labeln;

":="为赋值符号,表示将右边的内容赋值给左边的内容,两边的数据类型应保持一致。

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

  1. begin
  2. c:=a;
  3. a:=b;
  4. b:=c;
  5. end;

5.If 语句
if...then语句

  1. if <条件> then
    begin
  2. <语句>
    end;

示例

if (Edit1.Text='xx') and (Edit2.Text = 'Soft') then

begin

...

end;

if...then...else语句

  1. if <条件> then
  2. <语句>
  3. else
  4. <语句>;

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

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

  1. if (Date>=) and (Date<=) then
  2. Writeln(’上旬’)
  3. else if (Date>=) and (Date<=) then
  4. Writeln(’中旬’)
  5. else if (date>=) and (Date<=) then
  6. Writeln(’下旬’)
  7. else
  8. Writeln(’错误的日期’);

注意:Else 子句之前,Then 引导的子句之后是不能有分号的。否则将出现语法错误。

if...then...else if语句
语法:

  1. if 条件 then
  2. begin
  3. 语句
  4. end
  5. else if 条件 then
  6. begin
  7. 语句
  8. end;

同样else if前面的一条语句后面不能加分号。

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

  1. case <表达式> of
  2. <数值>:<语句>;
  3. <数值>:<语句>;
  4. else
  5. <语句>;
  6. end;

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

  1. var
  2. S:Char;
  3.  
  4. begin
  5. Readln(S);
  6. case S of
  7. 'a'..'z', 'A'..'Z':Writeln('字符');
  8. ''..'':Writeln('数字');
  9. else
  10. Writeln('其他');
  11.   end;
  12. end;

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

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

  1. repeat
  2. <语句>
  3. until <条件表达式>

例如:

  1. I:=;
  2. repeat
  3. I:=I+;
  4. Writeln(IntToStr(I));
  5. until I>;

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

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

  1. while <条件表达式> do
  2. begin
  3. <语句>
  4. end;

例如:

  1. I:=0;
  2. while I<5 do
  3. begin
  4. Writeln(IntToStr(I));
  5. Inc(I);
  6. end;

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

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

  1. for <条件表达式> do
  2. begin
  3. <语句>
  4. end;

递增循环

for 循环变量:=初值 to 终值 do

begin

循环体语句

end;

递减循环

for 循环变量:=初值 downto 终值 do

begin

循环体语句

end;

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

  1. for I:=1 to 5 do
  2. begin
  3. Writeln(IntToStr(I));
  4. end;

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

  1. for I:=5 downto 1 do
  2. begin
  3. Writeln(IntToStr(I));
  4. end;

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

  1. for I:=1 to 10 do
  2. begin
  3. if I=5 then
  4. Break;
  5. end;

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

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

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

  1. with object do statement

例如:

  1. type
  2. TEmployee=record
  3. Name : string[];
  4. YearHired:..;
  5. Salary: Double;
  6. Position: string[];
  7. end;
  8.  
  9. var
  10. Employee:TEmployee;
  11.  
  12. begin
  13. with Employee do
  14. begin
  15. Name :=’Wang’;
  16. YearHired :=;
  17. Salary :=;
  18. Position := Technic Department’;
  19. end;

13. 其他语句

Exit语句
  Exit语句主要用于退出当前的代码块,如果该段代码块是主程序,那么Exit语句将导致程序终止,如果程序块是被调用的模块,则跳到上一层程序继续执行。

...

if Edit1.Text='' then

begin

Exit;

end;

...

Halt语句
  Halt语句用于强制终止程序的执行,并返回到操作系统。

  1. procedure TForm1.N21Click(Sender:TObject);
  2. begin
  3. if MessageDlg('真的要退出系统吗?',mtinformation,[mbyes,mbno],)=mbyes then
  4. begin
  5. Halt;
  6. end;
  7. end;

RunError语句
  RunError语句用于终止程序运行并产生一个运行期错误,错误号最高值为255。

  1. procedure TForm.Button1Click(Sender:TObject);
  2. begin
  3. RunError();
  4. end;

Abort语句
Abort语句用于中止程序的运行,产生一个特殊的"无记载异常",此异常与其他异常相同,只是不显示错误信息。

goto语句
  goto语句使用起来十分方便,可以从程序的一个地方直接跳到另一个地方,尽量少用goto语句。

  1. procedure TForm1.Button1Click(Sender:TObject);
  2. Label AA;//在此声明一个标签。
  3. var
  4. sum,i:Integer;
  5. begin
  6. sum:=;
  7. i:=;
  8. AA://使用标签;
  9. sum:=sum+i;
  10. i:=i+;
  11. if i<= then
  12. goto AA;//如果i不满足条件,则直接跳转到使用标签的位置。
  13. Edit1.Text:=IntToStr(sum);
  14. end;

Object Pascal 控制语句的更多相关文章

  1. Object Pascal 过程与函数

    过程与函数 过程与函数是实现一定功能的语句块,是程序中的特定功能单元.可以在程序的其他地方被调用,也可以进行递归调用.过程与函数的区别在于过程没有返回值,而函数有返回值. 1.过程与函数的定义 过程与 ...

  2. Object Pascal 运算符

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

  3. Object Pascal 数据类型

     数据类型与定义变量 Object Pascal 语言的最大特点是对数据类型的要求非常严谨.传递给过程或函数的参数值必须与形参的类型一致.在Object Pascal 语言中不会看到像C 语言编译器提 ...

  4. Object Pascal 语言基础

    Delphi 是以Object Pascal 语言为基础的可视化开发工具,所以要学好Delphi,首先要掌握的就是Object Pascal 语言.Object Pascal语言是Pascal之父在1 ...

  5. Object Pascal 语法之异常处理

    http://www.cnblogs.com/spider518/archive/2010/12/30/1921298.html 3 结构化异常处理 结构化异常处理(SHE)是一种处理错误的手段,使得 ...

  6. Object Pascal 面向对象的特性

    2 面向对象的特性 在软件系统开发过程中,结构分析技术和结构设计技术具有很多优点,但同时也存在着许多难以克服的缺点.因为结构分析技术和结构设计技术是围绕着实现处理功能来构造系统的,而在系统维护和软件升 ...

  7. Object Pascal对象模型中构造函数之研究

    http://www.delphi2007.net/delphiblog/html/delphi_2004511950333715.html 前言 近期,一直在使用 C++ 与 Object Pasc ...

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

    这点是与C语言不一样的地方,以前我一直都没有明白这一点,所以总是不明白:函数地址再取地址算怎么回事? ------------------------------------------------- ...

  9. Delphi APP 開發入門(六)Object Pascal 語法初探

    Delphi APP 開發入門(六)Object Pascal 語法初探 分享: Share on facebookShare on twitterShare on google_plusone_sh ...

随机推荐

  1. ResultSetMetaData和DatabaseMetaData实现数据库中属性,属性值,属性所赋值的获取等

    ----------------------------------------------有些类下面代码中有; public class Test1 { TestDAO t=new TestDAO( ...

  2. C#中的字符串处理——找出最长数字子串

    百度测试部2015年10月份的面试题之——字符串处理,找出最长的子串. 代码如下: private static string SelectNumberFromString(string input) ...

  3. git总结

    1.先画个图,先对git的操作有个直观了解 2.分析下git中文件是怎么存储的 正如下面所示git存储不是每次更改就会产生一个新的文件,而是产生一个版本,这个版本对应着记录每个文件的不同情况 具体的存 ...

  4. [Python]如何使用HtmlTestRunner让自动化测试报告内容更丰富

    简述 使用selenium webdriver + Python做自动化测试,执行完成后要生成测试报告,Python我们使用的HTMLtestrunner 进行生成,但是默认提供的生成报告内容,并不能 ...

  5. JavaScript获取元素尺寸和大小操作总结

    一.获取元素的行内样式 复制代码 代码如下: var obj = document.getElementById("test"); alert(obj.height + " ...

  6. Codeforces Round #372 (Div. 2) C

    Description ZS the Coder is playing a game. There is a number displayed on the screen and there are ...

  7. (4)Redis 资料

    Redis是一种面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景. Redis Home http://redis.io/ MSOpenTech/re ...

  8. 高通安卓调试LCD几方面总结

    来公司上班现在已经整整一个月了,蔽人不才,能力有限,学习进度缓慢,不过也是有一点点的收获与心得,在这里写出来与大家分享,养成良好的记录习惯也免得后忘记. 不啰嗦了,开入正题.来公司一个月左右的时间,主 ...

  9. background:linear-gradient()

    文章一   http://www.runoob.com/css3/css3-gradients.html 文章二:http://www.w3cplus.com/content/css3-gradien ...

  10. POSTMAN中各种请求方式的区别

    1.form-data:  就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开.既可以上传键值对,也可以上传文件.当上传的字段是文件 ...