@[TOC]
第四章 程序流程控制
4.1条件语句
if <条件表达式> then
<语句1>
else
<语句2>;
以及
if <条件1> then
<语句1>
else if <条件2> then
<语句2>
...
else if <条件N> then
<语句N>
else
<其他语句>;
4.2选择语句
Case 选择表达式 of
常量1:语句1;
...
常量N:语句N;
else
...
end;
注:和条件语句一样,else及其后的语句可以省略;
举例
program EchoStar;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
N:integer;
begin
write('input a number between 1 and 4:');
read(n);
case N of
1:writeln('*');
2:begin
writeln('**');
readln;
end;
3:writeln('***');
4:writeln('****');
else
writeln('invalid input');
end;
readln;
end.
4.3循环语句
while循环
program SumInt;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
n,i:1..100;
Sum:integer;
begin
write('input a num between 1 and 100');
read(n);
sum:=0;
I:=1;
while i <=n do
begin
sum:=sum+i;
i:=i+1;
end;
writeln(inttostr(sum));
readln;
end.
注:
while的条件表达式省略时,循环永不停止,这样的循环称之为空循环;
repeat循环
while循环第一次先判断再执行
repeat循环第一次先执行再判断
举例
begin
write('input a num between 1 and 100:');
read(n);
sum:=1;
i:=1;
repeat
i:=i+1;
sum:=sum+i;//这两句顺序不可调换
until i=n;
writeln(inttostr(sum));
read(i);
end.
注意到sum的初始值变为1,因为是计算1+…+n,i=1
for循环
program ForSample
{$APPTYPE CONSOLE}
uses
SysUtils;
var
I,n:integer;
begin
write('input n:');
read(n);
for i:=1 to n do
writeln('delphi2010');
writeln('i is '+inttostr(i));
read(n);
end.
或者
for j:=n downto 1 do
writeln('like a baby');
writeln('j is '+inttostr(j));
read(n);
i为n+1,j为0
for…in语句
举例
program ForSample;
{$APPTYPE CONSOLE}
uses
SysUtils;
Var
myset:set of AnsiChar;
ch:AnsiChar;
begin
myset:=['D','B','C','A'];
for ch in myset do
write(ch);
readln;
end.
除了集合,
还可以遍历数组,一维二维多维,静态动态都行,遍历时按照由小到大遍历;
遍历字符串,按照前后顺序从第一个字符开始遍历;
类、接口、记录,这三个实现遍历功能比较复杂, 一般很少使用。
Continue和break
continue跳出当前循环继续下一个次循环,break停止循环继续循环语句后面的代码
举例
program BreakExample
{$APPTYPE CONSOLE}
uses
SysUtils;
var
ch:char;
str:string;
begin
str:='ABCDEFGHIJKLMN';
for ch in str do
begin
if ch='H' then
break;
writeln(ch);
end;
readln;
end.
4.4程序中止例程
程序中止分为两种:
退出当前语句不退出程序;
退出程序;
中止方法:
Exit,Halt,Terminate
Exit
exit退出当前语句不退出程序;
procedure M1;
begin
exit;
writeln('M1');
end;
begin
writeln('Start Program');
M1;
writeln('Ending Program');
readln;
end.
运行结果
Start Program
Ending Program
Halt
Halt会引发一个异常中断并通过这个中断直接退出整个程序;
uses
SysUtils,Dialogs;
procedure M1;
begin
Halt;
end;
procedure M2;
begin
writeln('M2');
M1;
end;
begin
ShowMessage('Starting Program');
M2;
ShowMessage('Ending Program');
end.
Terminate
Delphi的窗体程序中含有一个全局程序对象,其中的Terminate方法可以在窗体程序的任何地方使程序正常中断并退出;
举例
procedure TForm1.ButtonClick(Sender:TObject);
begin
Application.Terminate;
showmessage('');
end;