第2单元控制结构 语句,也不能随意从其他语句开始执行,或提前退出模块 按照结构化程序设计的观点,任何算法功能都可以通过由程序模块组成的三种基本程 序结构的组合:顺序结构、选择构和循环结构来实现。 顺序结构由两个程序模块串接构成,如图2-2左部所示。由图中可以看出,这两个程序 模块是顺序执行的,即首先执行<程序模块1>,然后执行<程序模块2>。 顺序结构中的两个程 序模块可以合并成一个新 的程序模块,即将图2-2 程序模块1 中的左边部分整个看成一1 个新的模块,如图2-2的1 新程序模块 右部。通过这种方法,可 程序模块2 以将许多顺序执行的语句 合并成一个比较大的程序 模块。但无论怎样合并, 生成的新的程序模块仍然 是一个整体,只能从模块 图2-2顺序结构 的顶部(入口)进入模块 开始执行模块中的语句,执行完模块中的所有语句之后再从模块的底部(出口)退出模块。 事实上,顺序结构是最常见的程序结构形式,在一般程序中大量存在。但是设想一下,是不 是所有程序都可以只使用顺序结构编写呢?显然答案是否定的。在求解实际问题时,常常要 根据输入数据的实际情况进行逻辑判断,对不同的结果分别进行不同的处理:或者需要反复 执行某些程序段落,以避免多次重复编写结构相似的程序段落带来的程序结构上的臃肿。这 就需要在程序中引入选择结构和循环结构。一个结构化程序正是由这三种基本程序结构交替 综合而构成的。 选择结构如图2-3所 示。从图中可以看出,根 据逻辑条件成立与否,分 不成立 条件 别选择执行<模块1>或 者<模块2>。虽然选择结 成立 新程序模块 构比顺序结构稍微复杂了 程序模块1 程序模块2 点,但是仍然可以将其 整个作为一个新的程序模 块:一个入口(从顶部进 入模块开始判断),一个出 图2-3选择结构(多分支) 口(无论执行了<模块1>还 是<模块2>,都应从选择结构框的底部出去)。 在编程实践中,还可能遇到选择结构中的一个分支没有实际操作的情况,如图2-4所示。 这种形式的选择结构可以看成是图2-3中的选择结构的特例第 2 单元 控制结构 - 18 - 语句, 也不能随意从其他语句开始执行, 或提前退出模块。 按照结构化程序设计的观点, 任何算法功能都可以通过由程序模块组成的三种基本程 序结构的组合: 顺序结构、选择构和循环结构来实现。 顺序结构由两个程序模块串接构成, 如图 2-2 左部所示。由图中可以看出, 这两个程序 模块是顺序执行的, 即首先执行<程序模块 1>, 然后执行<程序模块 2>。 顺序结构中的两个程 序模块可以合并成一个新 的程序模块,即将图 2-2 中的左边部分整个看成一 个新的模块,如图 2-2 的 右部。通过这种方法,可 以将许多顺序执行的语句 合并成一个比较大的程序 模块。但无论怎样合并, 生成的新的程序模块仍然 是一个整体,只能从模块 的顶部 (入口) 进入模块 开始执行模块中的语句,执行完模块中的所有语句之后再从模块的底部 (出口) 退出模块。 事实上,顺序结构是最常见的程序结构形式,在一般程序中大量存在。但是设想一下,是不 是所有程序都可以只使用顺序结构编写呢?显然答案是否定的。在求解实际问题时,常常要 根据输入数据的实际情况进行逻辑判断,对不同的结果分别进行不同的处理;或者需要反复 执行某些程序段落,以避免多次重复编写结构相似的程序段落带来的程序结构上的臃肿。这 就需要在程序中引入选择结构和循环结构。一个结构化程序正是由这三种基本程序结构交替 综合而构成的。 选择结构如图 2-3 所 示。从图中可以看出,根 据逻辑条件成立与否,分 别选择执行 <模块 1>或 者<模块 2>。虽然选择结 构比顺序结构稍微复杂了 一点,但是仍然可以将其 整个作为一个新的程序模 块:一个入口 (从顶部进 入模块开始判断),一个出 口(无论执行了<模块 1>还 是<模块 2>,都应从选择结构框的底部出去)。 在编程实践中,还可能遇到选择结构中的一个分支没有实际操作的情况,如图 2-4 所示。 这种形式的选择结构可以看成是图 2-3 中的选择结构的特例。 程序模块1 图2-2 顺序结构 程序模块2 新程序模块 图2-3 选择结构(多分支) 程序模块1 新程序模块 条件 程序模块2 不成立 成立