控制语句

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

格式

const

常量名 :数据类型 = 值

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

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

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

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

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

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...then语句

if <条件> then
begin
<语句>
end;

示例

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

begin

...

end;

if...then...else语句

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

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

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

if (Date>=) and (Date<=) then
Writeln(’上旬’)
else if (Date>=) and (Date<=) then
Writeln(’中旬’)
else if (date>=) and (Date<=) then
Writeln(’下旬’)
else
Writeln(’错误的日期’);

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

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

if 条件 then
begin
语句
end
else if 条件 then
begin
语句
end;

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

6.Case...of 语句
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('字符');
''..'':Writeln('数字');
else
Writeln('其他');
  end;
end;

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

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

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

例如:

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

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

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

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

例如:

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

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

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

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

递增循环

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

begin

循环体语句

end;

递减循环

for 循环变量:=初值 downto 终值 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:= to  do
begin
if i= then
Continue;
Writeln(IntToStr(I));
end;
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[];
YearHired:..;
Salary: Double;
Position: string[];
end; var
Employee:TEmployee; begin
with Employee do
begin
Name :=’Wang’;
YearHired :=;
Salary :=;
Position := ’ Technic Department’;
end;

13. 其他语句

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

...

if Edit1.Text='' then

begin

Exit;

end;

...

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

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

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

procedure TForm.Button1Click(Sender:TObject);
begin
RunError();
end;

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

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

procedure TForm1.Button1Click(Sender:TObject);
Label AA;//在此声明一个标签。
var
sum,i:Integer;
begin
sum:=;
i:=;
AA://使用标签;
sum:=sum+i;
i:=i+;
if i<= then
goto AA;//如果i不满足条件,则直接跳转到使用标签的位置。
Edit1.Text:=IntToStr(sum);
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. JQuery知识快览之五—操作属性和结构

    前文提到JQuery提供了丰富的内置方法来操作对象集,本文主要介绍JQuery中的那些内置操作属性和DOM结构的方法. prop还是attr? 从JQuery1.6版开始,新增了prop方法来获取和设 ...

  2. view class source code with JAD plugin in Eclipse

    The default class viewer doesn't decompile the class file so you cannot open and check the source co ...

  3. python 中time.sleep没有作用

    很简单的一个程序: # -*- coding: utf-8 -*- import MySQLdb,os,json,time #from wsgiref.simple_server import mak ...

  4. 触发onSaveInstanceState和onRestoreInstanceState的时机

    先看Application Fundamentals上的一段话:    Android calls onSaveInstanceState() before the activity becomes ...

  5. Java线程池与java.util.concurrent

    Java(Android)线程池 介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端执行 ...

  6. Date日期比对

    Calendar calendar1 = Calendar.getInstance(); Calendar calendar2 = Calendar.getInstance(); calendar1. ...

  7. 【Java】Float计算不准确

    大家可能都遇到过,float在计算某些值时,会有不准确的情况. 比如如下情况: > 计算不准确 package com.nicchagil.study.java.demo.No10float计算 ...

  8. 【Linux】方便的SecureCRT文件上传、下载命令

    使用SecureCRT连接服务器,可用命令上传.下载文件,非常方便. > 安装 如果系统报找不到以下命令,那么你可能没有安装软件.安装以下吧. [root@localhost ~]# yum - ...

  9. c++学习之:根据GetLastError()返回值获取错误信息

    VC中GetLastError()获取错误信息的使用在VC中编写应用程序时,经常需要涉及到错误处理问题.许多函数调用只用TRUE和FALSE来表明函数的运行结果.一旦出现错误,MSDN中往往会指出请用 ...

  10. JAVA——getter setter

    package org.hanqi.pn0120; public class User { private int userid; private String username; private S ...