宜宾学院教案
C语言程序设计_课程
周 次
第1周,第2次课
章 节
名 称
第二章 程序的灵魂——算法
授 课
方 式
课堂讲授(√ );实验课( );其他方式( )
教学
时数
2
教 学 目 的
1、了解算法的概念
2、掌握结构化程序的三种基本结构,及算法的程序流程图、N-S图表示法
教学重点与难点
重点:
怎样表示一个算法
难点:
三种基本结构,N-S图表示法
参考资料
《C语言程序设计教程》 谭浩强 高等教育出版社
《C高级实用程序设计》 王士元 清华大学出版社
《C程序设计及应用》 李盘林、孟宪福著高等教育出版社
《C语言程序设计》 王树义 钱达源 编著 大连理工大学出版社
C语言程序设计课程教案 何明儒教授等 四川大学计算机学院
授课内容与过程
步骤一 复习引导
从C程序的构成到C程序的设计过程
步骤二 讲授新课
一个程序包括以下两方面内容:
1.? 1. 对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构;
2.?对操作的描述。即算法,为解决一个问题而采取的方法和步骤。
3.?著名计算机科学家Wirth提出一个公式:数据结构+算法=程序
?
简单的算法举例
?
例1:设有两个杯子A和B,分别盛放酒和醋,要求将它们互换。
S1:C ← A
S2:A ← B
S3:B ← C
例2:从10个数中挑出最大数,并将之置入max。
S1:i=1, 令max等于第一个数;
S2:i=i+1;
S3:将max与第 i 个数进行比较,若前者小于后者,将修正max为第 i 个数;否则进行S4;
S4:若i <10,则转到S2;否则输出max并结束。
例3:求1~100的和
S1:sum←0,t←1;
S2:sum←sum+t
S3:t←t+1
S4:若t <= 100,则转到S2,否则转到S5;
S5:输出sum,结束。
例4:求n!
S1:s ← 1,t ←1;
S2:s ← s * t;
S3:t ← t+1;
S4:若 t <= n,则返S2,否则输出s并结束。
?
算法的特征:
1.有穷性;
2.确定性;
3.有零个或多个输入;
4.有一个或多个输出;
5.有效性;
怎样表示一个算法
1.用自然语言表示算法–通俗易懂,但易出现“歧义性”。
2.用流程图表示算法–直观形象,易于理解。
程序的三种基本结构:顺序结构、选择结构、循环结构
B
B
A
A
B
P
A
P
A
P
A
P
3.用N-S流程图表示算法
A?
A
?
B
P
T
F
A
B
A
当P成立
A
当P成立
4.用伪代码表示算法
?
5.用计算机语言表示算法(即实现算法)
我们的任务是用计算机解题,也就是要用计算机实现算法。计算机是无法识别流程图和伪代码的。只有用计算机语言编写的程序才能被计算机执行(当然还要经过编译成目标程序才能被计算机识别和执行)。因此,在用流程图或伪代码描述出一个算法后,还要将它转换成计算机语言程序。
用计算机语言表示算法必须严格遵循所用语言的语法规则,这是和伪代码不同的。我们将前面介绍过的算法用C语言表示。
四、结构化程序设计方法
前面介绍了结构化的算法和三种基本结构。一个结构化程序就是用高级语言表示的结构化算法。用三种基本结构组成的程序必然是结构化的程序,这种程序便于编写、阅读、修改和维护。这就减少了程序出错的机会,提高了程序的可靠性。
结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。如果面临一个复杂的问题,是难以一下子写出一个层次分明、结构清晰、算法正确的程序的。结构化程序设计方法的基本思路是,把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。
具体说,采取以下方法保证得到结构化的程序。
(1) 自顶向下;(2) 逐步细化;(3) 模块化设计;(4) 结构化编码。
在接受一个任务后应怎样着手进行呢?有两种不同的方法:一种是自顶向下,逐步细化;一种是自下而上,逐步积累。以写文章为例来说明这个问题。有的人胸有全局,先设想好整个文章分成哪几个部分,然后再进一步考虑每一部分分成哪几节,每一节分成哪几段,每一段应包含什么内容,如图2.36示意。
用这种方法逐步分解,直到作者认为可以直接将各小段表达为文字语句为止。这种方法就叫 做“自顶向下,逐步细化”。
结构化程序设计方法强调:1.程序设计风格和程序结构的规范化,2.提倡清晰的结构。
①自顶向下
②逐步细化
③模块化设计
④结构化编码
?
步骤三--课堂小结:
1.程序的三种基本结构:顺序、选择、循环
2.5种描述算法的方法,关键是N-S图
3.灵活运用三种基本结构