- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[理学]c程序设计 2算法
第 2 章 程序的灵魂 ——算法 ? 算法及算法的表示方法 ? 结构化程序设计 ? 程序、程序设计、程序设计语言 程序设计中的科学思维方法 ? 算法(algorithm):是对特定问题求解步骤的一种描述。 ? 两大类算法: 数值运算算法 非数值运算算法 (求数值解 成熟) (事务管理 广泛) ? 算法特征: 1.有穷性 2.确定性 3.输入 4.输出 5.有效性 ? 算法要求: 1.正确性 2.可读性 3.健壮性 4.效率 ? 算法描述: 文字 图形(符号) 1. 自然语言 2. 专用工具 3. 伪代码 (传统流程图、 4. 计算机语言 结构化流程图、 PAD图) 算法描述 带序号的自然语言描述 易懂、不直观、不严格 流程图 灵活、自由、形象、直观、可表示任何算法 N-S图(盒图) 完全去除了流程图中的带箭号的流程线、所有步骤都在一个大的矩形框内完成 简单、符合结构化思想 伪代码 介于计算机语言和自然语言之间的文字及符号来描述算法 方便、易懂、便于向计算机语言过渡 计算机语言 算法表示—— 专用工具:流程图 连接点:将画在不同地方的流程线连接起来。 N-S图: N-S图表示的算法实例: 伪代码表示的算法实例: 计算机语言(C语言)表示的算法实例: 结构化程序设计 三种基本结构: 顺序结构 选择结构 循环结构 N-S流程图: 三种基本结构: 顺序结构 选择结构 循环结构 结构化程序设计的特点: 单入口单出口 结构内的每一部分都有机会被执行 不存在“死循环” 结构化程序设计的优点 易编、易读、易懂、易维护 强调程序设计风格和程序设计规范 核心思想: 自顶向下,逐步细化,模块化设计,结构化编码 结构化程序设计过程 确定算法:分析问题(建立数学模型, 选择公式),写出算法描述 编写程序:用计算机语言写出实现算法的程序 上机调试:输入(编辑)程序 编译、连接、执行程序 输出结果 举例:张丘建《算经》中提出”百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何? cocks = 0 当cocks ≤ 19 时 { 找满足题意的hens,chicks 数 cocks 加 1 } 用计算机语言写出程序 #include stdio.h void main() { int cocks = 0, hens , chicks; while (cocks = 19) { hens = 0; while( hens = 33 ) { chicks = 100 - cocks - hens; if( chicks % 3 == 0 5 * cocks + 3 * hens + chicks / 3 == 100 ) printf(cocks = %d, hens = %d, chicks = %d. \n, cocks ,hens , chicks); hens++; } cocks++; } } 调试程序 ?语句(statement):组成语言的基本单位,包含语法和语义两个方面。 ?语法(syntax):定义构造语言的正确的表达式或句子所需的各种规则。 ?语义(semantic):对构成语言成分的含义的定义和说明。 源程序:用户用高级语言编写的程序称为,C源程序文件名字后缀一般必须为“.c”。 程序加工:高级语言编写的程序,计算机不能直接执行,需要把这个程序转换成二进制代码的机器语言程序。这种转换过程称为程序加工。 汇编程序(assembler):将汇编语言程序翻译成机器语言程序的程序。 编译程序(compiler):把用高级语言写的源程序转换为相应的机器语言目标模块(object module)的程序。 算法设计常用方法 1. 枚举法 2. 迭代法 3. 递归法 4. 递推法 5. 分治法 6. 回溯法 7. 模拟人工 补充:等级考试中上机考试类型: 1.两个数相交换 2.循环计算 3.递归计算 4.素数的判断 5.找最大数 6.整数的计算 7.查找与排序 1.两个数相交换 概念:使两个变量的值相交换 特征:变量依旧,值已对换 2.循环计算 概念:通过循环计算到所求的值(N!,累加求和,数列前N项之和) 特征:可用累加器和循环结构来处理 3.递归计算 概念:函数直接或间接地调用自己 特征:必须有进行递归调用的选择结构;必须有递归变量,并可取得其递归终止值 4.素数的判断 概念:除1和本身外,不能被其他整数整除
文档评论(0)