




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章C语言与程序概述 C语言是现在世界上应用最广泛 最受欢迎的计算机语言之一 在本章的学习中需要掌握以下知识点 数据结构的概念和作用 算法的概念和作用 结构化程序设计的方法 三种基本结构 程序流程图和N S流程图 1 1C语言历史 C语言已经经历了几十年的发展 在学习C语言之前 应该要先了解C语言是如何诞生的 它的历史是怎么样的 本节将介绍C言语的诞生 C语言的标准化过程及其重要特点 最后还将展示一个标准的 Hello world 的程序 1 1 1C语言的诞生 C语言是由著名的计算机科学家DennisRitchie创造的 其历史可以追溯到ALGOL60 ALGOL60 也称为A语言 是纯粹的面向描述计算过程的语言 C语言的直接前身B语言就是从BCPL发展而来的 在1972 1973年间 DenisRitchie改进了B语言 为其添加了数据类型的概念 并将原来的解释程序改写为可以在直接生成机器代码的编译程序 并将其命名为C 现在 C语言已成为用途最为广泛的计算机高级语言 不仅可以用于编写系统软件 还可以用于构建各个领域的应用软件 1 1 2C语言的标准化 C语言发展到现在已经经历了3个标准 分别为K RC C89和C99 1 K RC2 C89或ANSIC3 C99 1 1 3C语言的特点 C语言之所以得到如此迅速的发展 并成为应用最广泛 最受欢迎的计算机语言之一 主要是因为它语法灵活 使用方便 并能实现高效而强大的功能 C语言具有以下特点 1 使用方便 功能强大2 便于结构化编程3 C语言是中级语言4 执行效率高5 C程序可移植性好 1 1 4Hello world 作为结构性语言 C程序的结构十分严整 下面来认识一下第一个C程序 这是十分著名的 Hello world 程序 这个程序经常被用作介绍各种语言的第一个程序 其功能是向屏幕打印一个字符串 Hello world 1 2数据结构与算法 一般来说 程序由数据结构和算法两个部分组成 数据结构是一个一个的实体 而算法是将它们联系在一起的各种手段 学习程序首先要了解数据结构和算法的概念 以及它们之间的关系 由于篇幅有限 本小节将只是简要地介绍数据结构和算法的一些基本知识 要想深入了解数据结构和算法 还需要读者去学习其他专门的材料 1 3程序设计 如本章1 1 3小结所述 C语言是一门便于结构化编程的语言 结构化编程 也就是结构化程序设计 那么 什么是结构化程序设计呢 结构化程序设计有什么好处 通过本小节的学习 读者可以得到这些问题的答案 同时会为学习以结构化程序设计为指导思想的C语言程序设计打下一个良好的铺垫 1 3 1结构化程序设计 结构化程序设计是荷兰科学家E W Dijikstra在1965年提出的 其主要思想是通过分解复杂问题为若干简单问题的方式降低程序的复杂性 它的主要观点是采用自顶向下 逐步细化的程序设计方法 同时严格使用三种基本控制结构构造程序 三种基本控制结构是指顺序结构 选择结构和循环结构 所有的程序结构都可以分解为这三个基本控制结构 1 3 2三种基本结构 按照操作的执行顺序 程序可以分为三类基本结构 顺序结构 选择结构和循环结构 1996年 计算机科学家Bohm和Jacopini证明 任何简单或复杂的算法都可以由顺序结构 选择结构和循环结构这三种结构组合而成 所以 这三种结构就被称为程序设计的三种基本结构 也是结构化程序设计建议采用的结构 1 顺序结构 在顺序结构的程序里 各操作是按照它们出现的先后顺序执行的 如下图所示 操作1和操作2按自上而下地顺序执行 这是最简单的一种基本结构 这个结构里只有一个入口点A和一个出口点B 其特点是从入口点A开始 按顺序执行所有操作 直至出口点B处 事实上 所有的程序的总流程总是一个顺序结构 2 选择结构 选择结构 也叫分支结构 选择结构的程序里存在一些分支 程序通过对一些条件的判断选择执行的分支 按照分支数 选择结构又可以分为单选择 双选择和多选择三种形式 双选择结构是最常见的 如下图所示 结构中有两个分支 必须要执行其中一支 如果满足条件则执行操作1 否则执行操作2 2 选择结构 2 选择结构 单选择结构如下图所示 当双选择结构中某个分支为空时 就称为单选择结构 多选择结构如下图所示 有多个分支共存 程序根据Type值来选择其中之一执行 2 选择结构 3 循环结构 在循环结构中 是反复地执行一系列操作 直到某条件为假 或为真 时才终止循环 按照判断条件出现的位置 可以分为while循环结构和until循环结构 while循环结构中 先判断条件 如下图所示 如果A不大于1 则直接退出循环体到达流程出口处 如果满足A大于1 执行操作1 并且在操作1结束后返回到循环入口 重新判断条件 如果A还是大于1 再次执行操作1 再返回结构入口 如此反复 3 循环结构 until型循环结构中 在结构入口处先执行循环体 然后再判断条件 如下图所示 当程序执行完操作1后 判断A是否大于1 如果是 则再执行操作1 然后再次判断A是否大于1 如果结果仍然为是 则再次执行操作1 3 循环结构 3 循环结构 在这两种结构中 操作1都可能被反复执行 直到A的值不大于1 才结束程序 同样 循环型结构也只有一个入口点A和一个出口点B 合理地使用这三种基本结构 可以组合成复杂的高级结构 而所有的复杂结构都可以分解为这三种基本结构 1 3 3算法描述方法 当算法过程比较复杂时 单靠自然语言来描述算法将显得十分困难 让人难以准确理解 此时 需要借助其他的算法描述手段 主要有 算法语言 有伪代码 各种程序设计语言 计算机语言等 图形描述 如流程图和N S图 图的描述应与算法语言的描述对应 形式语言 用数学的方法 可以避免自然语言的二义性 1 伪代码 伪代码是介于程序语言和自然语言之间的算法描述 即要具有自然语言通俗易懂的特点 还要能很容易地被转换为程序语言 这就要求伪代码具有清晰地逻辑结构 并且有准确的算法步骤 伪代码的形式有很多种 没有通用的规则 根据需要可以自行决定伪码的形式 在本书使用的伪代码一般为类C伪码 书写注重可读性和逻辑性 下面是上一小节直接排序算法的伪代码 该段伪代码已经细化到编程的每一小步 可以很容易使用C语言代替 1 伪代码 算法开始 设i值为0 当istuArray j 设min的值为j j自增1 交换第i个元素和第min个元素 i自增1 算法结束 1 伪代码 技巧 在编程时 当设计好一个算法后 要都先将它们使用伪代码描述出来 再使用程序语言来实现 这样有利于更有条理更有逻辑地书写程序语言 其作用就像写文章要先列好提纲一样 2 程序流程图 程序流程图是算法的图形描述方式 它使用一些简单的几何图形来表示各种不同性质的程序操作 使用流程线将各个图形连接起来 指示算法的执行过程 由于流程图的符号统一 且画法简单 结构清晰 逻辑性强 便于理解 因此成为描述程序流程的主要方法 下图中的图形是流程图中常用的一些标志 2 程序流程图 2 程序流程图 在1 3 1小节介绍三种基本程序结构时 已经接触了流程图的部分图形 将1 2 2小节中的直接排序算法使用流程图来表示 如下图所示 2 程序流程图 2 程序流程图 由于本书中的程序都较短小 而程序流程图描述小型程序时 能够发挥其简单灵活的优势 因此本书主要使用程序流程图来描述算法流程 3 N S流程图 由于程序流程图使用流程线的导向来引导程序流程 当程序流程较复杂时 框图中会常常有很多的流程线 导致逻辑杂乱无章 失去了流程图简洁清晰的优点 后来 当结构化程序设计方法日益流行后 两个美国学者I Nassi和B Shneiderman基于结构化思想提出了一种新的流程图形式 被称为N S流程图 N和S是两个发明人名字的首字母 按照结构化设计的思想 所有的程序都可以分解成三种基本结构的组合 N S流程图为三种基本结构设计了特殊的结构图 并以它们为基础来描述其余所有的算法 下图为顺序结构的N S表示图 先执行操作1 再执行操作2 操作1的方框上方为结构入口 操作2的方框下方为结构出口 3 N S流程图 3 N S流程图 下图为双选择结构 省略其中之一即可得单选择结构 3 N S流程图 下图中 左图为while循环结构 右图为until循环结构 3 N S流程图 N S使用这几种图形的组合便可以得到所有算法的N S流程图 所以 在N S流程图中去掉了程序流程图中眼花缭乱的流程线 并将整个程序流程放在一个大方框内 使程序流程更清楚 下图是直接排序算法的N S流程图 3 N S流程图 1 4综合练习 1 使用伪码描述使用冒泡排序法将序列从小到大排序的算法 并画出其程序流程图或N S流程图 提示 冒泡排序的基本思想是 对尚未排序的各元素从头到尾依次比较相邻的两个元素是否逆序 与欲排顺序相反
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025畜牧类雇佣劳动合同
- 2025年生物质能与煤炭耦合燃烧技术在供热领域节能减排应用研究报告
- 2025年电商知识产权保护与电子商务平台知识产权保护与知识产权保护市场策略创新报告
- 2025中式家具订购合同范本
- 2025-2030年欧洲电动车动力电池供应链稳定性保障策略报告
- 2025年健康饮品加盟店合同范本
- 2025年幼儿园理论考试试题试卷及答案
- 2024-2025年太阳能硅片硅碇行业光伏逆变器市场前景报告
- 2025年浙江安全员考试试题及答案
- 2025年智能语音语义理解技术创新:打造智能客服机器人解决方案
- 2025年成人高考政治(专升本)考试题库
- 《LOGO标志设计》课件
- 设计经理招聘笔试题与参考答案(某大型央企)2024年
- 土方出土合同模板
- 水库周边绿化养护方案
- 井下皮带运输机事故专项应急预案
- 北师大版六年级数学上册《百分数的认识》教学设计
- 2023八年级数学上册 第七章 平行线的证明4 平行线的性质教案 (新版)北师大版
- NB-T32042-2018光伏发电工程建设监理规范
- 博士高校面试答辩模板
- 在线网课知道知慧《战舰与海战》单元测试答案
评论
0/150
提交评论