当前课程知识点:大学计算机基础 > 第六章 算法与程序设计 > 6-8 程序设计应用举例 > 6-8 程序设计应用举例
本节我们通过几个应用实例来说明
完整的程序设计
例一,编写程序
求任意两个正整数的最大公约数
求解该问题的算法
我们称为欧几里得算法
其算法描述我们已经在前面讲解过
基本思想是假设任意两个正整数为A和B
求最大公约数的步骤为
第1步比较A和B的大小
将较大的数设为A较小的数设为B第
2步
将A÷B得到的余数C.如果C为0
则最大公约数就是B.否则将B赋值给A
C赋值给B,重复进行第2步,第3步
对应此算法的源程序如下
在这里我们看到,第一行用#号开始为
单行注释
第2行,第3行
接收用户输入的任意两个正数
分别赋值给变量M和N
从第4行到第9行
是用一个if分支语句实现的一个
选择结构
如果M>=N我们将M赋值给A
N赋值给B.否则的话将N赋值给A
M赋值给B.其实现的结果就是将较大的
数存入变量A中较小的存入B中
第10行
我们将A除以B的余数赋值给变量r
第11行到第14行
是用一个while循环语句实现的辗转相除
当上面的余数R不等于0的时候
我们反复执行语句
将B赋值给A,R赋值给B,A除以B的余数
赋值给R.再翻回去
判断R是否等于0
直到R为0
整个while循环结束
此时输出变量B的值
用户输入的两个正数的最大公约数
这就是我们用Python语言编写的求任意
两个正整数的最大公约数的程序
程序的一次执行结果
如右图所示
假设我们从键盘输入的第1个正数为
36
第2个正数为8
执行之后输出36和8的最大公约数
是4
例2
编写程序求N的阶乘
求解此问题有两种方法
方法一
求N的阶乘可以等价为
求1×2×3
一直乘到N.此次重复做的就是一个
乘法操作
所以我们可以用循环语句来实现
方法2
N的阶乘可以看成为当N大于0的时候
N的阶乘等于N乘以N-1的阶乘
而求N-1的阶乘与
求N的阶乘是性质相同的
只是规模减小直到N等于0
0的阶乘等于1
像这种通过一个对象自身的结构来
描述或部分描述
该对象就称之为递归
所以我们也可以用递归来实现求N的
阶乘
对应以上两种求N的阶乘的方法
源程序如下图
同样我们看到从第3行到第7行
我们定义了一个函数fact1是��上述
的方法一
通过1×2×3
一直乘以N连乘的方法来实现的求N
的阶乘的方法
在这个函数当中
我们通过一个for循环语句来实现的
1到N的累积相乘
第9行到第13行
定义了第2个函数fact2
其是方法二的一个实现
通过if语句
分支语句
将求N的阶乘转化为先求N-1的阶乘
直到N等于0
递归返回
在第16行
我们将用户输入的求阶乘的数
赋值给变量M.第17行调用fact1来实现
求M的阶乘并输出
第18行调用函数fact2来求M的阶乘
这两种分别是我们用两个不同的方法
一个是累积相乘
一个是递归的方法来实现的求N的阶
乘的方法
程序的一次执行结果
如右图所示
假设我们输入的N的值等于3
分别用方法一和方法二
求出N的阶乘为6
例3
编写程序
计算阶乘的和.求解此程序的源程序
代码如下图所示
我们通过一个for循环语句来实现
累积相乘和相加
当N分别为3或者4的时候
运行的结果如图所示
假设我们输入的N的值为3
程序执行之后求的结果1的阶乘加
2的阶乘,一直加3的阶乘等于9
假设我们键盘输入N的值为4
则求出1的阶乘,加2的阶乘,加3的阶乘
加4的阶乘等于33
例四
例4要求先编写一个函数
实现汉诺塔金片的移动
然后再编写程序
输入汉诺塔上面金片的个数
调用上述编写的函数
输出金片移动的过程
首先我们看一下什么是汉诺塔金片的
移动
此为汉诺塔问题的一个初始模型
假设有ABC 3个时针
在A上插好了
由大到小的金片
要求一次只能移动一片金片
并且要保持始终小片
在大片的上面
要将所有的金片移到另外一个指针C上
我们需要编写程序来求出金片具体的
移动过程
下面是针对这一问题的具体的程序
实现
在第2行到第8行之间
我们通过一个递归函数来实现了金片
的移动
函数的作用是针对于N个金片
从A上指针上面借助于B指针
移动到C指针上面
当N大于1的时候
我们求解的问题转化为先求解
N减1个金片
借助于C指针
从A指针上面全部移动到B指针上面
然后把A指针上剩下的最后一个大的
金片放到C上面
下一步转化为求N减1个金片
从B指针上面借助于A指针
再移动到C指针上面
以此类推进行递归
直到N等于1的时候
直接将A上面的一个金片移动到
C上面
此为通过递归函数实现的金片的一个
移动
下面当输入一个具体的盘片数目的时候
我们可以通过调用上面定义的递归
函数来求解金片具体的移动过程
右边给出了一个例子
假设我们输入盘片的数目是三个
下面给出了三个金片
具体的移动过程
来实现汉诺塔金片的移动
本节我们简单的介绍了几个程序设计
的应用实例
谢谢观看
-1-1 计算机的诞生
--第一章 习题1
--计算机的诞生1
--计算机的诞生2
-1-2 计算机的分类
--第一章 习题2
--计算机的分类
-1-3 计算机的应用领域
--第一章 习题3
-1-4 计算机系统组成
--第一章 习题4
--计算机系统组成1
--计算机系统组成2
-1-5 计算机思维的定义
--第一章 习题5
--计算思维1
-1-6 计算思维的特点
--第一章 习题6
--计算思维2
-1-7 计算思维的应用案例
--第一章 习题7
--计算思维3
-第一章 章测试
-2-1 进位计数制表示方法
--第二章 习题1
-2-2 进位计数制的相互转换
--第二章 习题2
--进位计数制2
-2-3 整数的表示方法
--第二章 习题3
--整数的表示1
-2-4 浮点数表示方法
--第二章 习题4
--浮点数的表示1
-2-5 BCD格式表示法
--第二章 习题5
--BCD码
-2-6 算术运算
--2-6 算术运算
--第二章 习题6
-2-7 运算溢出及判断
--第二章 习题7
--运算的溢出
-2-8 逻辑运算
--2-8 逻辑运算
--第二章 习题8
--逻辑运算
-2-9 ASCII编码
--第二章 习题9
-2-10 Unicode编码
--第二章 习题10
-2-11汉字编码
--2-11汉字编码
--第二章 习题11
--汉字编码
-2-12数据校验编码
--第二章 习题12
--数据校验编码
-第二章 章测试
-3-1中央处理器
--3-1中央处理器
--第三章 习题1
--中央处理器
-3-2 存储器
--3-2 存储器
--第三章 习题2
--存储器1
--存储器2
--存储器3
-3-3 总线和接口
--第三章 习题3
--总线
-3-4 外部设备
--3-4 外部设备
--第三章 习题4
--外部设备
-3-5 冯.诺依曼体系结构
--第三章 习题5
-3-6 计算机常用性能指标
--第三章 习题6
--性能指标1
--性能指标2
-3-7嵌入式系统
--第三章 习题7
--嵌入式系统
-3-8哈佛体系结构
--第三章 习题8
--哈佛体系结构
-3-9 DSP简介
--3-9DSP简介
--第三章 习题9
--DSP
-3-10 虚拟台式计算机模拟器
--虚拟桌面架构
-3-11 4位计算机模拟器
-第三章 章测试
-4-1计算机软件分类
--第四章 习题1
--软件分类
-4-2软件的工作模式
--第四章 习题2
--软件的工作模式
-4-3软件的安装方法
--第四章 习题3
--软件安装
-4-4计算机软件生命周期
--第四章 习题4
--生命周期1
--生命周期2
--生命周期3
--软件测试1
--软件测试2
-4-5计算机软件开发过程模型
--第四章 习题5
- 4-6 常用软件介绍-办公软件
--第四章 习题6
-办公软件实例1 文字处理软件
-办公软件实例2 电子表格软件
-办公软件实例3 演示文稿软件
-4-7 常用软件介绍-多媒体创作软件
--第四章 习题7
-多媒体创作软件实例1 音频处理软件
-多媒体创作软件实例2 图像处理软件
-多媒体创作软件实例3 动画制作软件
-多媒体创作软件实例4 视频处理软件
-4-8 常用软件介绍-网页制作软件
--第四章 习题8
-第四章 章测试
-5-1 操作系统概述
--第五章 习题1
--操作系统
--操作系统分类
--操作系统管理
-5-2 Windows 7基本操作
--第五章 习题2
-5-3 Windows 7文件管理
--第五章 习题3
-5-4 Windows 7程序管理
--第五章 习题4
-5-5 Windows 7系统安全
--第五章 习题5
--操作系统安全
-5-6 Windows 7计算机管理
--第五章 习题6
-5-7 Dos命令
--第五章 习题7
--dos
-5-8 Windows 7常用软件
--第五章 习题8
-5-9 Linux操作系统
--第五章 习题9
--Linux
-5-10 手机操作系统
--第五章 习题10
-5-11 虚拟机及Vmware介绍
--第五章 习题11
--虚拟机
--虚拟机使用
-第五章 章测试
-6-1 算法基础
--6-1 算法基础
--第六章 习题1
-6-2 程序设计语言分类
--第六章 习题2
-6-3 程序设计过程
--第六章 习题3
-6-4 程序设计方法
--第六章 习题4
-6-5 程序设计语言基本要素(一)
--第六章 习题5
-6-6 程序设计语言基本要素(二)
--第六章 习题6
-6-7 Python简介及编程环境配置
--第六章 习题7
-6-8 程序设计应用举例
--第六章 习题8
-第六章 章测验
-7-1 数据库技术概述
--第七章 习题1
--信息和数据
-7-2 数据库管理系统
--第七章 习题2
--数据库管理系统
-7-3 数据库系统的组成与功能
--第七章 习题3
--独立性
--数据库系统分类
-7-4 关系模型的数据结构
--第七章 习题4
--E-R图
--三级模式结构
-7-5 关系模型的数据操作及完整性约束
--第七章 习题5
--关系模型
--数据库范式
--完整性约束
-7-6 Access数据库的建立
--第七章 习题6
--Access
-7-7 Access的数据查询
--第七章 习题7
-第七章 章测试
-8-1计算机网络概述
--第八章 习题1
--定义
-8-2网络分类
--8-2网络分类
--第八章 习题2
--分类
-8-3数据传输
--8-3数据传输
--第八章 习题3
--数据传输
-8-4网络拓扑结构
--第八章 习题4
--网络拓扑结构
-8-5网络体系结构
--第八章 习题5
--网络体系结构
-8-6网络互连
--8-6网络互连
--第八章 习题6
--网络互连
-8-7Internet基础:TCP╱IP协议结构
--第八章 习题7
--TCP/IP模型
--IP协议
-8-8Internet基础:IP地址
--第八章 习题8
--IP地址
-8-9Internet基础:域名系统
--第八章 习题9
--域名
-8-10Internet基础:Internet的基本服务
--8-10Internet基础:Internet的基本服务
--第八章 习题10
--Internet
-8-11Internet基础:Internet的接入
--第八章 习题11
-第八章 章测试
-9-1信息安全的基本概念
--第九章 习题1
--信息安全的CIA
--攻击与防御
-9-2 密码技术及应用
--第九章 习题2
--数字签名
-9-3防火墙技术
--9-3防火墙技术
--第九章 习题3
--防火墙的分类
--防火墙的基本特性
-9-4恶意软件
--9-4恶意软件
--第九章 习题4
--恶意软件类型
-9-5入侵检测技术
--第九章 习题5
--入侵检测概念原理
--入侵检测分类
-第九章 章测试
-10-1 云计算
--10-1 云计算
--第十章 习题1
-10-2大数据
--10-2大数据
--第十章 习题2
-10-3物联网
--10-3物联网
--第十章 习题3
-10-4机器学习
--10-4机器学习
--第十章 习题4
-10-5人工智能
--10-5人工智能
--第十章 习题5
-10-6物联网应用
-第十章 章测验
-1-0 准备步骤
--1-0 准备步骤
-1-1 台式机组装
-1-2 笔记本电脑组装
-3-1 启动和退出Word
-3-2 创建、编辑和保存Word文档
-3-3 封面的制作
--封面的制作-1
--封面的制作-2
--封面的制作-3
--封面的制作-4
-3-4 长文档编辑
--长文档编辑
-3-5 页面插入与目录
-3-6 页眉页脚与页码
-3-7 完成文档
-4-1 创建和编辑Excel表格
-4-2 简单公式和函数
-4-3 插入图表
--4-3 插入图表
-4-4 电子表格中数据的管理
-5-1 创建演示文稿与添加幻灯片
-5-2 编辑演示文稿
-5-3 设置演示文稿外观
-5-4 交互式演示文稿的设置
-5-5 设置演示文稿动画和音乐
-5-6 演示文稿放映
-6-1 图像的修饰
-6-2 淡黄色的记忆
-6-3 心形贺卡
--6-3 心形贺卡
-6-4 燃烧字
--6-4 燃烧字
-6-5 闻味的小狗狗
-6-6 换脸
--6-6 换脸
-7-1 逐帧动画的制作
-7-2 动作补间动画的制作
-7-3 形状补间动画的制作
-8-1 网站制作前期工作
-8-2 在Dreamweaver中建立和管理站点
-8-3设计制作网站主页
-8-4 制作网站导航栏
-8-5 修饰美化页面
-8-6 填写页面内容
-8-7 设计制作次级页面并建立链接
-9-1 Python的下载
-9-2 Python的安装
-9-3 IDLE的使用
-9-4 求矩形的周长和面积
-9-5 求三角形的面积
-9-6 求素数
--9-6 求素数
-10-1 数据库的建立
-10-2 SQL的应用
-11-1 Packet Tracer简介及下载方法
-11-2 有线网络的组网与配置
-11-3 无线网络的组网及无线路由配置
-12 无线网络安全配置