




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章程序设计基础 1 1程序设计语言1 2程序设计1 3C语言概述 开始 结束 本章学习目标 l计算机语言按其发展过程一般分为 机器语言 汇编语言和高级语言l算法的概念 特性及描述l结构化程序设计的概念及设计步骤lC语言的发展和应用现状l初识C语言 C语言的特点和编译 返回本章首页 1 1程序设计语言 1 1 1机器语言1 1 2汇编语言1 1 3高级语言 返回本章首页 1 1 1机器语言 机器语言是最底层的计算机语言 用机器语言编写的程序 计算机硬件可以直接识别 机器语言程序是由二进制0和1组成的系列 可移植性差 但程序执行效率高 返回本节 1 1 2汇编语言 为了克服机器语言的缺点 人们对机器语言进行了改进 用一些容易记忆和辨别的有意义的符号代替机器指令 形成了汇编语言 也称为符号语言 汇编语言也是一种面向机器的语言 但比机器语言易读 易改 执行速度与机器语言相当 比高级语言快很多 所以直到现在仍在实时控制 实时处理领域中广泛应用 返回本节 1 1 3高级语言 20世纪50年代中期开始逐步发展出面向问题的程序设计语言 称为高级语言 高级语言的显著特点是独立于具体的计算机硬件 通用性和可移植性好 在使用高级语言设计程序时 可以有两种设计方法 一种是面向过程的程序设计方法 如BASIC PASCAL FORTRAN COBOL C 另一种是面向对象的程序设计方法 如VisualBasic VisualC VisualFoxpro Delphi Java等 返回本节 1 2程序设计 1 2 1算法1 2 2结构化程序设计1 2 3程序设计的步骤 返回本章首页 1 2 1算法 数据结构 算法 程序 沃思 NikiklausWirth 下一页 一 算法及其特性1 算法所谓算法 就是解决某类问题的办法 确切地说 就是对某一类特定的问题 给出解决该问题的一系列 有穷的 操作 而每一操作都有其确定的意义 并在有限时间内可以计算出结果 计算机算法可分为两大类 数值算法和非数值算法 下一页 2 算法的特性 1 确定性算法中每一个操作步骤都有确切的含义 2 有穷性算法的步骤不能是无限的 3 可执行性算法中每个步骤对计算机来说都是可以有效执行的 并得到确定的结果 4 输入一个算法有零个或多个输入 5 输出一个算法必须有一个或多个输出 下一页 3 算法的评价如何评价一个算法呢 对算法的要求有 必须是正确的 必须能高效率执行 即占用内存空间少 所需运行时间短 于是 对算法的评价可以从两个方面进行 1 执行算法所需的时间长短 2 执行算法所需的计算机内容容量大小 下一页 二 算法的描述常用的描述算法的方法有 自然语言 伪代码 流程图 1 自然语言自然语言就是人们日常使用的语言 可以是汉语 英语或其他语言 用自然语言描述算法具有通俗易懂的优点 但缺点也比较多 1 比较繁琐 2 容易出现 歧义性 3 用自然语言容易描述顺序执行的步骤 下一页 例1 1将两个变量x和y的值互换用自然语言描述如下 步骤1将x值存入中间变量z中 x z步骤2将y值存入变量x中 y x步骤3将中间变量z的值存入y中 z y 下一页 2 伪代码伪代码 pseudocode 一般介于自然语言与程序设计语言之间 它具有自然语言灵活的特点 同时又接近于程序设计语言的描述 伪代码与程序设计语言最大的区别就在于 伪代码描述比较自由 不像程序设计语言那样受语法的约束 只要描述得人们能理解就行 而不必考虑计算机处理时所要遵循的规定或其他一些细节 下一页 例如 在例1 1中 将两个变量x和y的值互换 可以用伪代码描述如下 BEGINx zy xz yEND 下一页 3 流程图流程图是用一些图框 流程线以及文字说明来表示算法 用图来表示算法 直观 形象 容易理解 1 传统流程图美国国家标准化协会ANSI规定了一些常用的流程图符号 各种流程图符号表示如下 下一页 起止框 输入输出框 处理框 判断框 流程线 连接点 注释 下一页 例1 2判断一个数是否是素数的算法用流程图表示如图1 2所示 下一页 下一页 2 结构化流程图 顺序结构 选择结构 图1 2顺序结构与选择结构流程图 下一页 循环结构 下一页 以上三种基本结构有以下共同的特点 只有一个入口 只有一个出口每一个基本结构中的每一部分都有机会被执行到 结构内不存在 死循环 即无终止的循环 下一页 3 N S流程图 顺序结构 选择结构 下一页 循环结构 例1 1算法的流程可以表示如图1 6所示 下一页 例1 2将求最大公约数的算法用N S流程图描述如图1 7所示 返回本节 1 2 2结构化程序设计 结构化程序设计强调程序设计风格和程序结构的规范化 提倡清晰的结构 怎样才能得到一个结构化的程序呢 具体说 采取以下方法可以保证得到结构化的程序 1 自顶向下 2 逐步细化 3 模块化设计 4 结构化编码 下一页 一 自顶向下 逐步细化的设计过程自顶向下 逐步细化的设计过程 包括以下两个方面 1 将一个复杂问题的解法分解和细化成由若干模块组成的层次结构 2 将一个模块的功能逐步分解细化为一系列的处理步骤 直到某种程序设计语言的语句或某种机器指令 自顶向下 逐步细化的设计过程具有以下两个优点 1 自顶向下 逐步细化的方法符合人们解决复杂问题的普遍规律 可以显著提高程序设计的效率 2 用先全局后局部 先整体后细节 先抽象后具体的逐步细化过程设计出的程序具有清晰的层次结构 容易阅读和理解 下一页 二 模块化设计模块化设计是指把一个大程序按人们能理解的大小规模进行分解 由于经过分解后的各模块比较小 因此容易实现 也容易调试 在进行模块化程序设计时 应重点考虑以下两个问题 1 按什么原则划分模块 2 如何组织好各模块之间的联系 下一页 1 按功能划分模块在按功能划分模块时 要求各模块的功能尽量单一 各模块之间的联系尽量少 满足这些要求的模块有以下几个优点 1 模块间的接口关系比较简单 并且每个模块都是人的智力所能及的 因此 这种程序的可读性和可理解性都比较好 2 各模块的功能比较单一 当需要修改某一功能时 一般只涉及到一个模块 不会影响到其他模块 因此 这种程序的可修改性和可维护性比较好 3 人们可以脱离程序的上 下文也能单独验证一个模块的正确性 便于对程序进行模块化测试 因此 这种程序的可验证性比较好 4 在扩充系统或建立新系统时 可以充分利用已有的一些模块 用积木式的方法进行开发 因此 这种程序的可重组性比较好 下一页 2 按层次组织模块 下一页 三 结构化编码结构化编码就是指在设计好一个结构化的算法之后 用高级语言语句正确地实现三种基本结构 如果所用的语言是结构化的语言 如C PASCAL等 则直接有与三种基本结构对应的语句 进行结构化编程序就不困难了 返回本节 1 2 3程序设计的步骤 一般来说 程序设计的过程可以分为以下几个步骤 1 分析问题 即分析任务的要求 要给出什么结果 提供什么资源 有无解决的可能 2 建立数学模型 即用数学语言描述它 3 选择计算方法 即选择用计算机求解该数学模型的近似方法 4 算法设计 即制定出计算机运算的全部步骤 5 编写程序 即选择一种计算机语言 根据前一步的算法编写程序 6 运行 调试程序 即上机运行程序 用各种不同的数据测试在不同的情况下能否得到正确结果 7 整理文档 即写出一份技术报告或程序说明书 其中应包括题目 任务要求 原始数据 数据结构 算法 程序清单 运行结果 所用计算机系统配置 使用的编程方法及工具 操作说明等 以便作为资料交流或保存 返回本节 1 3C语言概述 1 3 1C语言的发展与应用现状1 3 2C语言的特点1 3 3认识C程序1 3 4C语言的编译 返回本章首页 1 3 1C语言的发展与应用现状 一 C语言的发展史C语言可以说是伴随着对操作系统的改写而产生的 早期的操作系统等系统软件主要是用汇编语言编写的 由于汇编语言过分依赖计算机硬件 而且程序的可读性和可移植性比较差 所以人们就想找到既具有汇编语言的某些特性 如直接对硬件地址进行操作 又有一般高级语言特性 如可读性和可移植性好 的语言 C语言就是在这种情况下产生的 下一页 1 C语言是从B语言发展来的 1 ALGOL60语言1960年出现的ALGOL60是一种面向问题的高级语言 它离硬件比较远 不宜用来编写系统软件 2 CPL语言1963年英国的剑桥大学推出了CPL CombinedProgrammingLanguage 语言 CPL语言在ALGOL60的基础上接近硬件一些 但规模比较大 难以实现 3 BCPL语言1967年英国剑桥大学的MatinRichards对CPL语言进行简化得到BCPL BasicCombinedProgrammingLanguage 语言 4 B语言1970年美国贝尔实验室的KenThompson以BCPL语言为基础 进一步简化 设计出很简单的且接近硬件的B语言 取BCPL的条一个字母 但B语言过于简单 功能有限 下一页 5 C语言1972年至1973年间 贝尔实验室的D M Ritchie在B语言的基础上设计出C语言 取BCPL的第二个字母 C语言保持了BCPL和B语言的优点 如接近硬件 精练 又克服了它们的缺点 过于简单 数据无类型等 1973年 K Thompson和D M Richie两人合作把Unix的90 以上用C改写 即Unix第5版 下一页 2 C语言的使用及其标准化1978年以Unix第7版中的C编译程序为基础 BrianW kernighan和DennisM Ritchie合著了影响深远的名著 TheCProgrammingLanguage 这本书介绍的C语言成为以后各种版本的基础 称为标准C 1983年 美国国家标准化协会 ANSI 根据C的发展变化和扩充 制定了新的标准 称为ANSIC 1988年K R按ANSIC标准重新修改 TheCProgrammingLanguage 一书 1987年 ANSI又公布了新标准 87ANSIC 这个标准在1990年时被国际标准化组织ISO InternationalStandardOrganization 所接受 成为以后流行的C语言的基础 下一页 二 C语言的应用现状 1 C语言在底层编程中的应用C语言由于比较贴近硬件 因此 在单片机编程 通信接口编程 自动化控制方面的编程 手机 POS机 银行自动存取款机等方面的编程使用C语言比较多 2 C语言在图形编程中的应用C语言应用中很大部分是应用在图形编程上 如图形化的游戏开发 图形界面的设计等 3 C语言在普通信息系统方面的应用在数据库技术普及之前 使用C语言编写信息系统的比比皆是 因为C语言是一种很好的结构化程序设计语言 并且C语言中有丰富的数据类型如数组 结构体类型等为数据的处理提供了很好的工具 返回本节 1 3 2C语言的特点 1 C语言能实现汇编语言的大部分功能 C语言可以直接对硬件进行操作 能进行位 bit 操作 因此 C语言既有高级语言的功能 又具有低级语言的许多功能 可以用来写系统软件 又可以用来写应用软件 2 用C语言写的程序可移植性好 用标准C语言编写的程序几乎不做修改就能用于各种型号的计算机和各种操作系统 3 C程序生成的目标代码质量高 程序执行效率高 与其他高级语言相比 如PASCAL BASIC等 C程序的代码效率和质量更高 但仍比汇编程序生成的目标代码效率低10 20 下一页 4 具有结构化的控制语句 是一种结构化程序设计语言 C语言中有三种基本结构的语句 如if else语句 while语句 switch语句 for语句 并且用函数作为程序的模块单位 实现模块化程序设计 5 语言简洁 紧凑 使用方便 灵活 C语言中一共只有32个关键字 9种控制语句 程序书写形式自由 如一行可以写多个语句 一个语句也可以分成几行写 压缩了一切不必要的成分 减少了代码中关键字所占用的存储空间 6 运算符丰富 C语言中的运算符共有34种 包括算术运算符 逻辑运算符 关系运算符 位运算符 自增自减运算符等 并且将括号 赋值 强制类型转换等都作为运算符处理 从而使C的运算类型极其丰富 表达式类型多样化 下一页 7 数据结构丰富 C语言中数据类型有整型 实型 字符型 数组类型 指针类型 结构体类型 枚举类型等 还可以自定义类型 可以用来实现各种如链表 树 栈等复杂数据结构的运算 8 C语法限制不太严格 程序设计自由度大 这一特点对于一个不熟练的程序员来说 不是一个好事 比如 在C语言中对数组下标越界不做检查 因数组下标从0开始 经常造成错误 而是由程序编写者自己保证程序的正确 再如在C中整型数据与字符型数据可以通用 返回本节 1 3 3初识C程序 例1 3缩写一个程序 其功能是显示字符串 WelcometoCworld 其C程序如下 include 将标准输入输出头文件包含到程序中来 main printf WelcometoCworld 输出字符串 WelcometoCworld 下一页 例1 4将变量x与y的值互换 include 将标准输入输出头文件包含到程序中来 main intx y z 定义3个整型变量 scanf d d 将交换后x和y的值分别输出 下一页 例1 5求a b两个实数中的最大数 并输出 include 将标准输入输出头文件包含到程序中来 floatmax floatx floaty max函数的头部 最前面的float表示返回值的类型 x和y是形参 类型都为float floatm 定义变量m if x y m x 如果x大于y 将x的值赋给m elsem y 如果x小于等于y 则将y的值赋给m return m 将m的值返回 即带回主函数 下一页 main 主函数 floata b c 定义三个实型变量 scanf f f 输出变量c的值 程序运行情况如下 71 5 62 9 输入71 5和62 9分别给变量a和b Max 71 500000 输出变量c的值 下一页 通过以上几个例子 我们可以看出 1 一个完整的C程序可以由多个函数组成 但必须包含一个且只能包含一个名为main的函数 主函数 程序在执行时总是从main函数开始 并且到main函数结束 main函数可以放在程序中的不同位置 但不能放到其他函数体内 C语言程序是以函数作为模块单位的 在函数中输入用到的是scanf 函数 输出用到的是printf 函数 它们是C语言的库函数 标准函数 这类函数在头文件中已经定义 即在程序最前面的 include就是将标准输入 输出库函数的定义部分包含到C程序中来 下一页 2 在一个C函数模块中 由左右花括号 括起来的部分是函数体 其中的语句系统实现函数的预定功能 在C语言中用 括起来的还有复合语句 floatmax floatx floaty 返回值类型函数名形参定义 floatm if x y m x elsem y return m 下一页 3 C语言中的每个语句必须以 分号 结束 分号是C语言语句的标志 C语言书写比较自由 一行可以写多个语句 每个语句以 结束 一个C语句也可以写在多行上 4 C程序中的 是用作注释的 注释是用来给读程序的人看的 在程序编译中并不编译
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南美术出版社二年级下册美术能力分层教学计划
- 财经类数据分析研究性学习报告范文
- 市场运营管理专业实习总结范文
- 危重疑难病例讨论病例筛选流程
- 电影拍摄现场猝死应急流程
- 吸毒人员管控协调机制工作总结范文
- 小学科学二年级上册课外拓展计划
- 五年级数学思维导图辅差计划
- 2026届黑龙江省哈尔滨市延寿县物理八年级第一学期期末考试试题含解析
- 2026届北京市首都师大附中八年级物理第一学期期末调研试题含解析
- 卫生院常见护理常规
- 2025年全国矿山安全生产事故情况
- 2024年北京市西城区第十五中学七上数学期末检测模拟试题含解析
- 2025年环境监测试验检测人员培训计划
- 市政项目成本测算手册2023版
- 中华人民共和国监察法2025修订版实施条例试卷试题含答案
- 皮肤激光设备管理制度
- Unit 1 Happy Holiday 第1课时(Section A 1a-1d) 2025-2026学年人教版英语八年级下册
- Q-SY 13034-2024 物料主数据数字化描述规范
- 外墙工程维修协议书
- 2025年中国船舶代理项目投资可行性研究报告
评论
0/150
提交评论