(delphi11最新学习资料) Object Pascal 学习笔记---第3章第5.2节( Break和Continue语句)

Object Pascal 学习笔记,Delphi 11 编程语言的完整介绍 作者: Marco Cantu 笔记:豆豆爸

3.5.2 使用Break和Continue语句改变执行流程

​ 尽管每种循环之间存在一定差异,但是每种循环都允许您基于一定规则多次执行一组语句。但是,在某些情况下,您可能希望添加一些额外的行为。例如,假设您有一个for循环,其中搜索给定字母的出现次数(此代码是FlowTest示例的一部分):

var
  S: string;
  I: Integer;
  Found: Boolean;
begin
  S := 'Hello World';
  Found := False;
  for I := Low(S) to High(S) do
    if S[I] = 'o' then
      Found := True;

​ 最后,您可以检查found的值,以查看给定的字母是否是字符串的一部分。问题是,程序会不断重复循环,即使在找到一个给定的字符后仍然要继续查找该字符(这在字符串很长的情况下是个问题)。

​ 一个经典的替代方法是将其转换为 while 循环,同时检查两个条件(循环计数器和 Found 的值):

var
  S: string;
  I: Integer;
  Found: Boolean;
begin
  S := 'Hello World';
  Found := False;
  I := Low(S);
  while not Found and (I < = High(S)) do
  begin
    if S[I] = 'o' then
      Found := True;
    Inc(I);
  end;

​ 虽然这段代码逻辑性和可读性强,但需要的代码量较多,而且如果条件变得多样化和复杂,将所有各种选项组合在一起将使代码非常难以理解。

​ 这就是为什么这种语言(或更确切地说,其运行时支持)提供系统过程(system procedure)允许您改变循环执行的标准流程:

  • Break过程中断循环,直接跳到循环体后的第一条语句,结束循环执行。
  • Continue过程跳转到循环测试或计数器增量,继续循环的下一次迭代(除非条件不再为真或计数器达到其最大值)。

​ 使用Break操作,我们可以修改原始匹配字符的循环如下:

var
  S: string;
  I: Integer;
  Found: Boolean;
begin
  S := 'Hello World';
  Found := False;
  for I := Low(S) to High(S) do
    if S[I] = 'o' then
    begin
      Found := True;
      Break; // 跳出for循环
    end;

​ 另外两个系统过程ExitHalt,让您立即从当前函数或过程返回或终止程序。我将在下一章中介绍Exit,而实际上没必要调用Halt,因为它会突然终止程序(因此我不会在书中真正讨论它)。

难道Goto语句来了?不会!

​ 实际上,除了上面介绍的四个系统过程之外,还有更多的方式来中断程序执行流程。最初的 Pascal 语言的特点之一就是臭名昭著的 goto 语句,,该语句允许你在源代码的任何一行附加一个标签,并从程序的另一个位置跳转到该行。条件语句和循环语句都揭示了为什么要偏离顺序代码流,而 goto 语句则不同,它一般看起来像不规则的跳转,而且确实是完全不受欢迎的。我有提到它们在Object Pascal中受到支持吗?没有,我根本没有提,并且我也不会向您展示代码示例。对我来说,goto已经过时。

注解:还有其他语言语句,我到目前为止还没有涉及,但它们是语言定义的一部分。其中之一是with语句,与记录专门相关,因此我将在第5章中进行介绍。with是另一个备受争议的语言特性,但仍然经常使用。

最近更新

  1. TCP协议是安全的吗?

    2024-01-30 11:56:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-30 11:56:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-30 11:56:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-30 11:56:02       20 阅读

热门阅读

  1. ubuntu nginx配置密码访问并下载

    2024-01-30 11:56:02       54 阅读
  2. IP类接口大全,含免费次数

    2024-01-30 11:56:02       37 阅读
  3. Python学习之路-Django基础:请求与响应

    2024-01-30 11:56:02       32 阅读
  4. Android Glide从网络加载图片 点击可放大查看效果

    2024-01-30 11:56:02       41 阅读
  5. QT国内的安装源

    2024-01-30 11:56:02       36 阅读
  6. 设计模式之设计原则

    2024-01-30 11:56:02       38 阅读
  7. 低代码

    2024-01-30 11:56:02       40 阅读