




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章C语言编程基础 C语言是Linux系统中最常用的程序设计语言 Linux系统中的大多数软件提供了C语言接口和源代码 供用户扩展和改进软件的功能 或基于这些软件构成新软件 正因为如此 在开源软件开发过程中可以很容易学习到他人的开发经验 GNU项目为C语言开发提供了丰富的工具 充分利用现有的代码资源和这些开发工具可将学习到的知识付诸实践 从而更快速地掌握C语言开发技术 5 1程序设计语言的发展 程序设计语言是用来描写计算机程序的逻辑语法结构 它已成为一种学科 同时也是程序设计者之间的交流方式 过去 程序设计语言是针对特定的计算机设计 程序员针对计算机的不同结构设计特定算法或者数据结构 随着计算机技术的发展 很多程序设计语言已能够运行在多种计算机平台上 并能在不同平台之间移植 正是因为如此 程序员才会试图使程序代码更容易阅读 在过去的几十年间 大量的编程语言被发明 被取代 被修改或组合在一起 5 1 1机器语言 电子计算机由复杂的逻辑电路所组成 它能够 认识 的仅仅是 0 和 1 所代表二进制数字信号 最初的计算机语言 也就是以二进制数字所组成的逻辑序列 称为机器语言 每个二进制字符称为位 bit 计算机最小的存储单元是8个位所组成的比特 Byte 机器语言难于阅读 并只能针对特定的计算机编写 代码无法移植 5 1 2汇编语言 为了减轻程序设计的劳动强度 计算机科学家设计了一些简洁的英文缩写来替代用于控制或表明数据类型的二进制逻辑序列 例如 ADD 表示两个变量相加 IN 表示读取端口数据 于是诞生了汇编语言 5 1 3高级语言 高级语言的发展也经历了从早期语言到结构化程序设计语言 从面向过程到面向对象的转变 相应的 软件的开发也由最初的个体手工作坊式封闭生产 发展为产业化 流水线式工业化生产 随着程序设计语言的进步 程序设计方法随之也愈加丰富 高级语言的下一个发展目标是面向应用 也就是说 只需要告诉程序你要干什么 程序就能自动生成算法 自动进行处理 这就是非过程化的程序语言 5 2C语言的特点 C语言 是一种通用的 程序式的编程语言 广泛用于系统与应用软件的开发 具有高效 灵活 功能丰富 表达力强和较高的移植性等特点 在程序员中备受青睐 C语言是由UNIX的研制者丹尼斯 里奇 DennisRitchie 和肯 汤普逊 KenThompson 在1970年研制出的B语言的基础上发展和完善起来的 5 2 1C语言是中级语言 C语言通常称为中级语言 这是因为它有着与汇编语言类似 能直接访问计算机底层资源的能力 同时它又具备了高级语言的各种优点 作为中级语言 C允许对位 字节和地址这些计算机功能中的基本成分进行操作 C语言程序非常容易移植 甚至可以设计出能同时运行在Linux系统和UNIX Windows等操作系统上的软件 5 2 2C语言是结构化语言 结构化语言所使用的设计方法为模块化设计方法 每个子问题求解的步骤被定义为模块 在C语言中 函数就是模块化的体现 函数之间是相互独立的 函数内的数据只能通过接口进行传递 C语言程序中 数据与代码是分离的 数据在各个函数之间通过接口传递 因此 设计良好的函数能够在多个程序间反复使用 构成了代码复用的基础 5 2 3C语言是程序员的语言 程序设计语言中 有许多是针对非程序员所设计的语言 大多数解释性语言都是非程序员的语言 例如BASIC FOXPRO 这一类语言虽然容易学习 但是所生产的程序执行效率低 可靠性差 不能访问计算机底层的资源 与其形成鲜明对比的是C语言 由于程序生成 修改和现场测试自始至终均由真正的程序员进行 因而它实现了程序员的期望 很少限制 语法自由 具备块结构和独立的函数 以及紧凑的关键字集合 用C语言编程 程序员可以获得高效机器代码 其效率几乎接近汇编语言代码 5 3C语言的程序结构 任何一种程序设计语言都具有特定的语法规则和规定的表达方法 一个程序只有严格按照语言规定的语法和表达方式编写 才能保证编写的程序在计算机中能正确地执行 同时也便于阅读和理解 5 3 1基本程序结构 基本程序结构就是从上至下顺序执行的程序 C语言程序必须有且只有一个主函数 程序从主函数开始执行 直到主函数结束 C语言程序为函数模块结构 所有的C语言程序都是由一个或多个函数构成 C语言程序的函数可分为编译器提供的标准函数和由用户自己定义的函数 5 3 2函数库和链接 函数的集合称之为函数库 遵守ANSIC标准的编译器所提供函数组成的函数库称之为ANSIC标准函数库 编写程序时用到的函数许多都可以在标准函数库中找到 他们是可以简单地组合起来的程序构件 编写了一个经常要用的函数之后 也可将其放入自定义的库中备用 编译器编译源代码时以函数为单位进行编译 并记忆函数的名字 随后 编译器以源文件中的顺序去查找函数间的关系 并且在可执行文件内部实现函数间的可访问性 该过程称之为 链接 5 3 3开发一个C语言程序 程序开发是一个科学的过程 开发一个C语言程序通常可概括为以下四个步骤 1 程序设计2 编写源代码3 程序测试4 程序运行 5 3 4C语言的关键字 关键字是已被C语言标准作为命令 数据类型或者固定函数名的字母组合 关键字不能被用做变量名或函数名 表5 1列举了C语言的32个关键字 他们遵循C语言的语法使用 形成了C程序设计语言 5 4算法 关于计算机程序的定义 有一种经典的表述是程序等于数据结构加上算法 这句话可以解释为 数据结构是将事物抽象成为可运算的数据形式输入到计算机中 而算法是对这些数据计算的方法 例如求某个学生的平均分 那么数据结构由课程名称和分值组成 求平均分的算法是将分值的总和除以课程总数 对于一些特殊的问题 例如排序 解方程 编码等 出现了许多适合计算机运算的算法 这些算法甚至专门针对于某个程序设计语言 由此可见 程序设计的关键之一 是解题的方法与步骤 是算法 5 4 1流程图与算法的结构化描述 流程图可用来描述事务的处理过程 因此是最早引入计算机算法设计领域的图示方法 基本流程图的形状如图5 1所示 1 顺序结构2 选择结构3 循环结构 5 4 2用N S图描述算法 除了传统的流程图以外 还有很多种图形可以用来描述程序的结构 N S图就是其中的一种 它由矩形组成 一个程序模块是最外围的矩形外框 程序中的每个步骤都是一个内嵌的小矩形 如图5 6所示 5 4 3用PAD图描述算法 PAD图 ProblemAnalysisDiagram 是国际上专业的程序员广泛使用的一种程序流程表示法 与其他图形相比 PAD图更容易描述扁平化的程序结构 特别是一些应用管理类软件 其中都会有很多扁平化的分支语句 这些语句用PAD描述更为清晰 5 5软件工程概览 软件工程是计算机科学的一个重要分支 所涉及的范围非常广泛 包括软件开发技术 软件工程环境 工程经济学和工程管理等许多知识领域 本节主要介绍软件工程的基本任务和常用的软件项目开发模型 以及如何通过软件工程指导C语言编程 其中 朴素软件工程思想是一套在教学中总结出的软件开发规律 它的主要目的是指导编程语言课程设计 也可用于少数开发者参与的软件项目 5 5 1认识软件工程 软件工程存在于各种应用中 存在于软件开发的各个方面 而程序设计只包含了程序设计和编码的反复迭代的过程 它是软件开发的一个阶段 软件工程力图对软件项目的各个方面做出指导 从软件的可行性分析直到软件完成以后的维护工作 1 用分阶段的生命周期计划严格管理2 坚持进行阶段评审3 实行严格的产品控制4 采用现代程序设计技术5 结果应能清楚地审查6 开发人员应少而精7 实践中不断改进软件工程 5 5 2瀑布模型及其改进 瀑布模型是由温斯顿 罗伊斯 WinstonRoyce 在1970年最初提出的软件开发模型 瀑布模型将软件开发过程定义为6个步骤 分别是问题定义 需求分析 设计原型 实现与单元测试 集成与系统维护 发布 运行与维护 5 5 3迭代发布模型 迭代发布模型是一种与传统软件工程开发相反的软件开发过程 它弥补了传统开发方式中的一些缺点 具有更高的成功率和生产率 5 5 4朴素软件工程思想 朴素软件工程思想将迭代发布模型简化为四个步骤 然后反复循环这四个步骤直到软件生命周期结束 这四个步骤分别是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水平三跑《接力跑》教学设计08
- 2025年火电运行值班员中级面试实战演练与答案解析
- 电力基本知识培训课件教学
- 2025年医生求职面试技巧与模拟题集锦
- 电力业务知识培训课件
- 2025年特岗教师招聘面试实战模拟题集萃小学英语教育心理学等
- 2025年人力资源和社会保障局公务员招录考试指南
- 2025年售前技术支持工程师中级面试技巧与模拟题
- 电仪岗位安全知识培训课件
- 血液透析护理服务规范
- 田间道路工程施工图设计说明
- 井下管路安装、维护管理规定
- 私募基金份额代持协议范文
- GB/T 7967-2002声学水声发射器的大功率特性和测量
- GB 38507-2020油墨中可挥发性有机化合物(VOCs)含量的限值
- GA/T 1162-2014法医生物检材的提取、保存、送检规范
- 污水处理厂安全风险清单
- 高级焊工考试题含答案
- 2022年高校教师资格证(高校教师职业道德)考试题库高分300题带解析答案(安徽省专用)
- 《退役军人保障法》知识考试题库(含各题型)
- 口腔科超声波洁牙知情同意书
评论
0/150
提交评论