C语言程序设计 清华大学 郑莉安颖莲 第三讲 C语言程序的 基本控制结尥 参考书 《计算机程序设计基础》第三章 《C程序设计》第四章、第五章 Page 1
Page 1 C语言程序设计 清华大学 郑莉 安颖莲 第三讲 C语言程序的 基本控制结构 参考书 《计算机程序设计基础》第三章 《C程序设计》第四章、第五章
C语言程序设计 清华大学郑莉安颖莲 本讲主要内容 ·结构化程序设计 ·f语句 ·switch语句 ·whi1le语句 ·do-while语句 ·for语句 ·break和continue语句 Page 2
Page 2 C语言程序设计 清华大学 郑莉 安颖莲 本讲主要内容 • 结构化程序设计 • if 语句 • switch 语句 • while 语句 • do-while 语句 • for 语句 • break 和 continue 语句
C语言程序设计 清华大学 郑莉安颖莲 结构化程序设计 ·计算机程序=算法十数据结构 ·计算机程序设计三算法十数据结构 +程序设计方法学 Page 3
Page 3 C语言程序设计 清华大学 郑莉 安颖莲 结构化程序设计 • 计算机程序=算法+数据结构 • 计算机程序设计=算法+数据结构 +程序设计方法学
C语言程序设计 清华大学■ 郑莉安颖莲 结构化程序设计 结构化算法 (一) 算法就是解决问题的方法。 例如:素九韶在《九章算术》中记载的,求最大公 约数的辗转相湘除法: 第一步:算法开始。 第二步:输入原始数据:取得所给定的自然数m和n。 第三步:当m≠n时,顺序执行第四步:反之,转到第六步。 第四步:若m>n,则m←m-n;否则n←n-m。 第五步:返回第三步。 第六步:输出结果:所求最大公约数为m。 第七步:算法结束。 Page 4
Page 4 C语言程序设计 清华大学 郑莉 安颖莲 结构化程序设计 —结构化算法(一) 算法就是解决问题的方法。 例如:秦九韶在《九章算术》中记载的,求最大公 约数的辗转相除法: 第一步:算法开始。 第二步:输入原始数据:取得所给定的自然数 m 和 n。 第三步:当 m≠n 时,顺序执行第四步;反之,转到第六步。 第四步:若 m>n ,则 m←m-n ;否则 n←n-m。 第五步:返回第三步。 第六步:输出结果:所求最大公约数为 m。 第七步:算法结束
C语言程序设计 清华大学 郑莉安颖莲 结构化程序设计 结构化算法 (二) 算法的特征: 有穷性 如:Sinx=x/1-x3/3!+x5/5!-x/7!+.不是算法。 N!=1×2×3×.×N是算法。 确定性 。 如:菜谱中说“加少许盐”不严格,不是算法。 。 可执行性 ·0个或多个输入 ·1个或多个输出 Page 5
Page 5 C语言程序设计 清华大学 郑莉 安颖莲 算法的特征: • 有穷性 如:Sin x=x/1-x 3/3!+x5/5!-x 7/7!+. 不是算法。 N!=1×2×3×.×N 是算法。 • 确定性 如:菜谱中说“加少许盐”不严格,不是算法。 • 可执行性 • 0个或多个输入 • 1个或多个输出 结构化程序设计 —结构化算法(二)
C语言程序设计 清华大学■ 郑莉安颖莲 结构化程序设计 一结袍化算法 算法类型: 一数值算法、非数值算法。 ·基本结构: 结构化算法必须只能由下列三种基本控制 结构所构成: -顺序结构 -分支结构 循环结构 Page 6
Page 6 C语言程序设计 清华大学 郑莉 安颖莲 • 算法类型: –数值算法、非数值算法。 • 基本结构: 结构化算法必须只能由下列三种基本控制 结构所构成: –顺序结构 –分支结构 –循环结构 结构化程序设计 —结构化算法(三 )
C语言程序设计 清华大学 郑莉安颖莲 结构化程序设计 结构化算法 (三) 结构化算法的本质属性: ·有且仅有一个入口 ·有且仅有一个出口 无死块(即永远无法执行到的块) 无死循环块 Page 7
Page 7 C语言程序设计 清华大学 郑莉 安颖莲 结构化程序设计 —结构化算法(三) 结构化算法的本质属性: • 有且仅有一个入口 • 有且仅有一个出口 • 无死块(即永远无法执行到的块) • 无死循环块
C语言程序设计 清华大学 郑莉安颖莲 结构化程序设计 一结构化算法 (四) 算法描述工具: ·流程图 ·N-S图 ·PDL语言 Page 8
Page 8 C语言程序设计 清华大学 郑莉 安颖莲 算法描述工具: • 流程图 • N-S图 • PDL 语言 结构化程序设计 —结构化算法(四)
C语言程序设计 清华大学 郑莉安颖莲 结构化程序设计 一结构化程序设计技术与方法 。5 模块化结构设计方法 在程序设计中,将一个复杂的算法(或程序)分解成若干 个相对独立、功能单一的模块,利用这些模块即可适当地 组合成所需要的全局算法(或)程序。 ·自顶向下结构设计方法 从总体出发,居高临下,逐层分解和逐步细化。 。 逐步求精结构设计方法 实质上也是一种自顶向下的设计方法。 首先抛开细节设计出抽象算法,然后把抽象数据和操作逐 步具体化,直到可以由计算机具体实现为止。 Page 9
Page 9 C语言程序设计 清华大学 郑莉 安颖莲 结构化程序设计 —结构化程序设计技术与方法 • 模块化结构设计方法 在程序设计中,将一个复杂的算法(或程序)分解成若干 个相对独立、功能单一的模块,利用这些模块即可适当地 组合成所需要的全局算法(或)程序。 • 自顶向下结构设计方法 从总体出发,居高临下,逐层分解和逐步细化。 • 逐步求精结构设计方法 实质上也是一种自顶向下的设计方法。 首先抛开细节设计出抽象算法,然后把抽象数据和操作逐 步具体化,直到可以由计算机具体实现为止
C语言程序设计 if语句 清华大学 郑莉安颖莲 三种形式 if (表达式) 语句 例:if(x>y) printf ("%d",x); if (表达式) 语句1else 语句2 例:if(x>y) printf("%d”,x); else printf("%d",y); if (表达式1)语句1 else if (表达式2) 语句2 else if (表达式2) 语句3 else 语句n Page 10
Page 10 C语言程序设计 清华大学 郑莉 安颖莲 if (表达式) 语句 例:if (x>y) printf("%d",x); if (表达式) 语句1 else 语句2 例:if (x>y) printf("%d",x); else printf("%d",y); if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式2) 语句3 . else 语句 n if 语句 ——三种形式