没有合适的资源?快使用搜索试试~ 我知道了~
C语言程序设计ppt-第5章1
需积分: 0 0 下载量 15 浏览量
2022-08-03
14:39:08
上传
评论
收藏 330KB PDF 举报
温馨提示
试读
15页
第5章 函数与程序结构C语言与程序设计 The C Programming Language & Program Design华中科技大学计算机学院 甘早斌华中
资源详情
资源评论
资源推荐
2015/3/27
1
第5章 函数与程序结构
C语言与程序设计 The C Programming Language & Program Design
3/27/2015 华中科技大学计算机学院 甘早斌 1/81
华中科技大学计算机学院
甘早斌
本章的教学目的
掌握结构化编程方法和C程序的一般结构
熟悉函数的机制,包括:
函数定义
函数声明
函数调用
3/27/2015 华中科技大学计算机学院 甘早斌 2/81
函数调用
变量的存储类型
参数数目可变的函数
本章目录
5.1 C程序的一般结构
5.2 函数的定义与函数原型
5.3 函数调用与参数传递
5.4 作用域与可见性
3/27/2015 华中科技大学计算机学院 甘早斌 3/81
5.5 存储类型
5.1 C程序的一般结构
5.1.1 结构化程序设计
5.1.2 蒙特卡罗模拟:猜数游戏
5.1.3 C程序的结构
3/27/2015 华中科技大学计算机学院 甘早斌 4/81
5.1.1 结构化程序设计 1/8
结构化程序设计(structured programming)的诞生和发展
结构化程序设计方法的起源来自对GOTO语句的认识和争论
结构化程序设计在1960年代开始发展,科拉多·伯姆及朱塞
佩·贾可皮尼伯姆于1966年5月在《Communications of the ACM》
期刊发表论文,说明任何一个有goto指令的程序,可以改为完
全不使用
t
指令的程序
3/27/2015 华中科技大学计算机学院 甘早斌 5
全不使用
go
t
o
指令的程序
1968年艾兹赫尔·戴克斯特拉提出著名的论文《 Go To Statement
Considered Harmful GOTO》
正方观点:
在块和进程的非正常出口处往往需要用GOTO语句,使用GOTO
语句会使程序执行效率较高
在合成程序目标时,GOTO语句往往是有用的,如返回语句用
GOTO
5.1.1 结构化程序设计 2/8
反方观点:
GOTO语句是有害的,是造成程序混乱的祸根,程序的质量与
GOTO语句的数量呈反比,应该在所有高级程序设计语言中取消
GOTO语句
取消GOTO语句后,程序易于理解、易于排错、容易维护,容易
进行正确性证明
3/27/2015 华中科技大学计算机学院 甘早斌 6
进行正确性证明
作为争论的结论,1974年Knuth发表了令人信服的总结并证实:
(1) GOTO语句确实有害,应当尽量避免
(2)完全避免使用GOTO语句也并非是个明智的方法,有些地方
使用GOTO语句,会使程序流程更清楚、效率更高
(3)争论的焦点不应该放在是否取消GOTO语句上,而应该放在
用什么样的程序结构上。其中最关键的是,应在以提高程序清
晰性为目标的结构化方法
中限制使用GOTO语句
2015/3/27
2
唐纳德·克努特Donald Ervin Knuth
1938年1月10日生于美国威斯康星州(Wisconsin)。
斯坦福大学计算机科学系荣誉退休教授,排版软件TeX
和字型设计系统Metafont发明人。
所著描述基本算法与数据结构的巨作《计算机程序设计
艺
被
家
志
的
艺
术》
被
《美国科学
家
》杂
志
列为20世纪最重要的12
本物理科学类专著之一,与爱因斯坦《相对论》、狄拉
克《量子力学》、理查·费曼《量子电动力学》等经典
比肩而立。
荣获1974年度的图灵奖
(时年36岁)。
他是最年轻图灵奖获得者纪录的保持者。
3/27/2015 华中科技大学计算机学院 甘早斌 7/81
5.1.1 结构化程序设计 3/8
结构化程序设计的基本思想
结构化程序设计是一种解决问题的策略,单入口单出口的控制
结构 ;
采用自顶向下、逐步求精及模块化的程序设计方法;
使用三种基本控制结构构造程序
,
任何程序都可由顺序
、
选择
、
3/27/2015 华中科技大学计算机学院 甘早斌 8
使用三种基本控制结构构造程序
,
任何程序都可由顺序
、
选择
、
循环三种基本控制结构构造;
结构化程序设计主要强调的是程序的易读性。
5.1.1 结构化程序设计 4/8
基本结构
顺序结构
顺序结构表示程序中的各操作是按照它们出现的先后顺序执行
的。
选择结构
选择结构表示程序的处理步骤出现了分支,它需要根据某一特
定的条件选择其中的一个分支执行。
选择结构有单选择、双选择和多选择三种形式。
循环结构
循环结构表示程序反复执行某个或某些操作,直到某条件为假
(或为真)时才可终止循环。在循环结构
中最主要的是:什么
情况下执行循环?哪些操作需要循环执行?循环结构的基本形
式有两种:当型循环和直到型循环。
3/27/2015 华中科技大学计算机学院 甘早斌 9
5.1.1 结构化程序设计 5/8
当型循环
表示先判断条件,当满足给定的条件时执行循环体,并且在循
环终端处流程自动返回到循环入口;如果条件不满足,则退出
循环体直接到达流程出口处。
因为是"当条件满足时执行循环",即先判断后执行,所以称为当
型循环
型循环
。
直到型循环
表示从结构入口处直接执行循环体,在循环终端处判断条件,
如果条件不满足,返回入口处继续执行循环体,直到条件为真
时再退出循环到达流程出口处,是先执行后判断。
因为是"直到条件为真时为止",所以称为直到型循环。
3/27/2015 华中科技大学计算机学院 甘早斌 10
5.1.1 结构化程序设计 6/8
结构化程序设计是进行以模块功能和处理过程设计为主
的详细设计的基本原则:
自顶向下
程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,
后考虑局部目标
。不
要
一
开始就过多
追
求众多的细节
,
先从最
3/27/2015 华中科技大学计算机学院 甘早斌 11
后考虑局部目标
要 开始就过多 求众多的细节
,
先从最
上层总目标开始设计,逐步使问题具体化。
逐步细化
对复杂问题,应设计一些子目标作为过渡,逐步细化。
模块化设计
一个复杂问题,肯定是由若干稍简单的问题构成。
模块化是把程序要解决的总目标分解为子目标,再进一步分解
为具体的小目标,把每一个小目标称为一个模块。
5.1.1 结构化程序设计 7/8
结构化程序设计的特点
结构化程序中的任意基本结构都具有唯一入口和唯一出口,并
且程序不会出现死循环
在程序的静态形式与动态执行流程之间具有良好的对应关系
任何算法功能都可以通过由程序模块组成的三种基本程序结构
3/27/2015 华中科技大学计算机学院 甘早斌 12
任何算法功能都可以通过由程序模块组成的三种基本程序结构
的组合: 顺序结构、选择结构和循环结构来实现
2015/3/27
3
5.1.1 结构化程序设计 8/8
结构化程序设计的优点
①整体思路清楚,目标明确,提高软件的可重用性
②编写的程序出结构良好、易于管理、修改和调试
③设计工作中阶段性非常强,有利于系统开发的总体管理和控制,方
便于多人分工合作完成程序的编制
④
增 程序的可读性
可维护性和可扩充性
在系统分析时可以诊
3/27/2015 华中科技大学计算机学院 甘早斌 13
④
增
强了
程序的可读性
、
可维护性和可扩充性
,
在系统分析时可以诊
断出原系统中存在的问题和结构上的缺陷
结构化程序设计的缺点
①用户要求难以在系统分析阶段准确定义,致使系统在交付使用时产
生许多问题
②用系统开发每个阶段的成果来进行控制,不能适应事物变化的要求
③系统的开发周期长
5.1.2 蒙特卡罗模拟:猜数游戏
模拟算法是最基本的算法,如,编程实现抛硬币、掷骰
子和玩牌等现实世界中的随机事件要用模拟算法
在程序设计中,可使用随机数函数来模拟现实中不可预
测情况,这称为蒙特卡罗模拟
其定 在很多方
3/27/2015 华中科技大学计算机学院 甘早斌 14
随机数以
其
不确
定
性和偶然性等特点
在很多
地
方
都有具
体的用处。比如:
软件测试中,用于产生具有普遍意义的测试数据
在加密系统中产生密钥
在网络中生成验证码等
在C语言中,用rand函数生成随机数,该函数称为随机数
发生器,该发生器从称为种子(一个无符号整型数)的
初始值开始用确定的算法产生随机数
伪随机数
通过种子产生第 个随机数后
后续的随机序列也就是确定的
3/27/2015 华中科技大学计算机学院 甘早斌 15
通过种子产生第
一
个随机数后
,
后续的随机序列也就是确定的
了,这种依靠计算机内部算法产生的“随机”数称为伪随机数
真随机数
随机数的产生依赖于种子,为了使程序在反复运行时能产生不
同的随机数,必须改变这个种子的值,这称为初始化随机数发
生器,由函数srand来实现
【例5.1】 编写一个猜数的游戏程序
在这个游戏中,计算机产生一个1到1000之间的随机数,并把该
数作为要猜的数。
玩游戏者输入所猜的数,如果猜得不正确,继续猜直到正确为
止
,
同时计算游戏者猜数的次数
。
3/27/2015 华中科技大学计算机学院 甘早斌 16
,
同时计算游戏者猜数的次数
为了帮助游戏者一步一步得到正确答案,程序会不断地发出信
息“Too high”或“Too low”。最后,程序向游戏者显示游戏结
果。
自顶向下的分解问题:
既然是一个游戏程序,就应该允许玩家反复玩多次,直到不想
玩为止。同时,将玩一次游戏的任务分解成以下两个子任务:
(1)计算机产生一个1到1000的随机数供游戏者猜测;
(
2
)
游戏者猜数
,
直至猜对
。
3/27/2015 华中科技大学计算机学院 甘早斌 17
(
2
)
游戏者猜数
,
直至猜对
。
主程序结构
do {
计算机产生一个1到1000的随机数
游戏者猜数,直至猜对
继续玩吗
3/27/2015 华中科技大学计算机学院 甘早斌 18
继续玩吗
} while (继续);
剩余14页未读,继续阅读
本本纲目
- 粉丝: 20
- 资源: 294
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0