




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1C语言概述 河南理工大学 C语言程序设计 编写组 重点 难点 本章重点 C语言的特点C语言程序的基本结构算法及其描述方法结构化程序设计方法本章难点 C语言与其他高级语言的区别算法的流程图 N S图描述方法 内容提要 1 1C语言的发展及特点1 1 1C语言的发展1 1 2C语言的特点1 2C语言程序的基本结构1 3算法及其描述1 3 1算法的概念1 3 2算法的描述方法1 4程序设计方法1 4 1程序设计的一般步骤1 4 2结构化程序设计方法 1 1C语言的发展及特点 1 1 1C语言的发展在C语言诞生以前 系统软件主要是用汇编语言编写的 由于汇编语言程序依赖于计算机硬件 所以其可读性和可移植性都很差 而一般的高级语言又难以实现对计算机硬件的直接操作 这正是汇编语言的优势 于是人们盼望能有一种兼有汇编语言和高级语言特性的新语言 C语言就是在这种背景下于20世纪70年代初问世的 当时主要是用于UNIX系统的开发 1978年由美国电话电报公司 AT T 贝尔实验室正式发表了C语言 同时由B W Kernighan和D M Ritchit合著了著名的 TheCProgrammingLanguage 一书 通常简称为 K R 也有人称之为 K R 标准 美国国家标准化协会ANSI AmericanNationalStandardsInstitute 在此基础上制定了一个C语言标准 于1983年发表 通常称之为ANSIC 在微机上使用的C编译系统主要有MicrosoftC TurboC QuickC BorlandC等 它们不仅实现了ANSIC标准 而且还各自作了一些扩充 使之更加方便 完美 如今C 又成为了高级语言的主流 C 是面向对象的程序设计语言 但它的基础是C语言 且二者在很多方面是兼容的 因此 掌握了C语言 再去学习C 就会达到事半功倍的效果 本书叙述以ANSIC为基础 C语言上机实验时用的是TurboC2 0 C 可使用BorlandC 3 1 1 1 2C语言的特点 1 与自然语言比较 2 与其他程序设计语言比较1 C语言简洁 紧凑 使用方便 灵活 ANSIC一共只有32个关键字 见附录 如int long float if while do等 9种控制语句 程序书写自由 主要用小写字母表示 压缩了一切不必要的成分 2 运算符丰富 共有34种运算符 见附录 C语言把括号 赋值 逗号等都作为运算符处理 从而使C语言的运算类型极为丰富 可以方便地实现其他高级语言难以实现的功能 3 数据结构类型丰富 具有现代语言的各种数据结构 C语言的数据类型有整型 实型 字符型 数组类型 指针类型 结构体类型 共用体类型等 能实现各种复杂数据结构 如链表 树 栈等 的运算 尤其是指针类型数据 使用起来更为灵活 多样 4 具有结构化的控制语句 用函数作为程序的基本单位 便于实现程序的模块化 C语言是良好的结构化语言 符合现代编程风格的要求 5 语法限制不太严格 程序设计自由度大 如对数组下标越界不做检查 对变量的类型使用比较灵活 如整型数据与字符型数据可以通用 6 C语言允许直接访问物理地址 能进行位 bit 操作 能实现汇编语言的大部分功能 可以直接对硬件进行操作 因此有人把它称为中级语言 7 生成目标代码质量高 程序执行效率高 可达到汇编语言程序的80 8 与汇编语言相比 用C语言写的程序可移植性好 C强调灵活性 使程序设计人员能有较大的自由度 以适应宽广的应用面 限制 与 灵活 是一对矛盾 限制严格 就失去灵活性 而强调灵活 就必然增加了出错的可能性 1 2C语言程序的基本结构 所谓程序 就是一系列遵循一定规则和思想并能正确完成指定工作的代码 使用C语言编写的程序称为C语言源程序 简称C语言程序或C程序 例1 1求两个整数之和 main 函数首部 inta b sum 定义整型变量a b sum printf Pleaseinputtwointegers n 输出提示信息 增强交互性 scanf d d 输出a b sum 程序运行情况如下 Pleaseinputtwointegers 6 8 表示空格 表示按Enter键 6 8 14 例1 2求两个整数中的较大者 include 编译预处理 main 主函数首部 intx y z 定义整型变量x y z intmax inta intb 声明函数max printf Pleaseinputtwointegers n 输出提示信息 scanf d d 把结果返回主调函数 程序运行情况如下 Pleaseinputtwointegers 6 8 Themaximumnumberis8 C程序的基本结构 1 C程序可由一个或多个函数构成 函数是C程序的基本单位 2 C程序必须有一个且只能有一个main函数 即主函数 3 一个C程序总是从主函数开始执行 而不论主函数在整个程序中位置如何 主函数执行完了 整个程序也就执行完了 4 C程序中可以有编译预处理命令 如include命令 5 每一个语句都必须以分号结尾 但编译预处理命令 函数首部 即函数的起始行 和花括号 之后不能加分号 6 C语言本身没有输入输出语句 输入输出功能是用输入输出库函数来实现的 7 和 为注释符 二者之间的部分为注释 C程序的书写规则 1 一个声明或一条语句占一行 当然C程序允许一行写多条语句 也允许一条语句写在多行上 且无需续行符 2 用 括起来的部分 通常表示程序的某一层次结构 一般与该结构语句的第一个字母对齐 最好单独占一行 3 低一层次的语句或声明可比高一层次的语句或声明缩进若干格后书写 以便看起来更加清晰 增加程序的可读性 在编程时应力求遵循这些规则 以养成良好的编程风格 1 3算法及其描述 1 3 1算法的概念 1 算法 程序的灵魂一个程序应包括如下两种描述 1 对数据的描述 在程序中要指定数据的类型和数据之间的组织形式 即数据结构 在C语言中 系统提供的数据结构是以数据类型的形式出现的 2 对数据处理的描述 即计算机算法 广义地说 为解决一个问题而采取的方法和步骤 就称为 算法 它是程序的灵魂 因此 著名计算机科学家沃思 NikiklausWirth 提出一个公式 程序 数据结构 算法 实际上 一个程序除了数据结构和算法外 还必须使用一种计算机语言 并在必要的环境支持下 采用合适的程序设计方法来设计 因此 程序可以更完整地表达为 程序 算法 数据结构 程序设计方法 语言工具和环境算法是灵魂 数据结构是加工对象 语言是工具 编程需要采用合适的方法 2 算法的分类计算机算法可分为两大类 数值算法和非数值算法 3 算法的特性一个算法应该具有以下特性 1 有穷性2 确定性3 有零个或多个输入4 有一个或多个输出5 有效性 1 3 2算法的描述方法 自然语言传统流程图N S流程图伪代码计算机语言等 例1 3求的值 1 用自然语言描述算法步骤1 预设sign为1 sign代表项的符号 第一项为正 值为1 步骤2 累加和sum置初值1步骤3 将之后要加的分母用deno表示 赋初值2 即下一步加的是第二项 步骤4 将sign乘以 1后再赋给sign 实现正负交替 步骤5 用当前符号sign与当前基项 1 deno 相乘得到当前项term步骤6 将当前项term与累加和sum相加得新的累加和sum步骤7 分母deno加1 得下一项分母deno步骤8 若分母deno 100返回步骤4 否则输出sum 算法结束 用自然语言描述算法的特点 通俗易懂 但文字冗长 容易出现 歧义性 此外 用自然语言描述包含分支和循环的算法 很不方便 因此 除了很简单的问题以外 一般不用自然语言描述算法 2 用流程图描述算法 流程图是用一些图框表示各种操作的算法描述方法 用图形描述算法 直观形象 易于理解 ANSI规定了一些常用的流程图符号 如图1 1所示 三种基本结构 1 顺序结构 2 选择结构 3 循环结构 当型直到型 例1 3的流程图 对于顺序 分支和循环这三种基本结构 有以下共同特点 1 虽然结构内部的某些基本框并不是也不可能是单入口和单出口 比如选择结构和循环结构中的判断框有两个出口 但整个结构只有一个入口和一个出口 2 结构内的每一部分都有机会被执行到 也就是说 对每一个基本框来说 都应当有一条从入口到出口的路径通过它 3 结构内不存在 死循环 无终止的循环 在有限时间内必能结束执行过程 已经证明 由以上三种基本结构顺序组成的算法结构 可以解决任何复杂的问题 由这三种基本结构所构成的算法属于 结构化 的算法 这种设计方法也称为结构化程序设计方法 主要有以下三个要求 1 结构化程序的控制结构只能由顺序 分支和循环三种基本结构构成 当然也可以由这三种基本结构进行组合形成新的结构 但必须要满足基本结构所要求的三个条件 2 整个程序是由许多个这三种结构的程序块串联起来的 因为这三种结构都只有一个入口和一个出口 所以是可以把它们串联起来的 3 整个程序只有一个入口和出口 结构化的流程图描述算法的特点 用这种结构化的流程图描述算法直观形象 比较清楚地显示出各个框之间的逻辑关系 但是这种流程图占用篇幅较多 尤其当算法比较复杂时 画流程图既费时又不方便 3 用N S流程图描述算法 1973年美国学者I Nassi和B Shneiderman提出了一种新的流程图形式 在这种流程图中 完全去掉了带箭头的流程线 全部算法写在一个矩形框内 在该框内还可以包含其他的从属于它的框 或者说 由一些基本的框组成一个大的框 这种流程图称为N S结构化流程图 适用于结构化程序设计 而且所用篇幅较少 因而很受欢迎 1 顺序结构 2 选择结构 3 循环结构 例1 3的N S图 N S图描述算法的特点 用传统的流程图和N S图描述算法 直观易懂但画起来比较费事 4 用伪代码描述算法 伪代码 pseudocode 是用介于自然语言和计算机语言之间的文字和符号来描述算法 它不用图形符号 因此书写方便 格式紧凑 也比较好懂 便于向计算机语言描述的算法 即程序 过渡 例1 3的算法可以用伪代码描述如下 BEGIN 算法开始 1 sum2 deno1 signwhiledeno 100 1 sign signsign 1 deno termsum term sumdeno 1 deno printsumEND 算法结束 伪代码描述算法的特点 伪代码书写格式比较自由 容易表达出设计者的思想 同时 用伪代码很容易写出结构化的算法 并且写出的算法也很容易修改 但是用伪代码描述算法不如流程图直观 可能会出现逻辑上的错误 例如循环或选择结构的范围搞错等 5 用计算机语言描述算法 要完成一件工作 包括设计算法和实现算法两个部分 我们的任务是用计算机解题 也就是要用计算机实现算法 计算机是无法识别自然语言 流程图和伪代码的 只有用计算机语言编写的程序才能被计算机执行 当然还要编译成二进制目标程序 因此 在用流程图或伪代码描述出一个算法后 还要将它转换成计算机语言程序 例1 3的算法可以用C语言描述如下 main intsign 1 floatdeno 2 0 sum 1 0 term while deno 100 sign sign term sign deno sum sum term deno deno 1 printf Thesumis f n sum 程序运行结果为 Thesumis0 688172 1 4程序设计方法 1 4 1程序设计的一般步骤 1 分析问题并确定数据结构 2 算法设计 3 编写程序 4 上机调试 5 整理写出文档资料 1 4 2结构化程序设计方法 1 自顶向下 逐步细化 2 模块化设计 3 结构化编码 本章内容十分重要 是学习后面各章的基础 学习程序设计的目的不只是学习一种特定的语言 而是学习程序设计的一般方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 茶艺中级知识考试题库及答案
- 相遇问题试讲题目及答案
- 2025年九年级数学秋季开学摸底考(江苏专用)含答案
- 2025年G1工业锅炉司炉证考试题库及答案
- 2025年5月计算机文化基础模拟考试题与答案
- 2025物业服务合同管理规范范本
- 2025年4月肿瘤专科练习题库(含参考答案)
- 2025年4月基础医学概论模拟习题(含参考答案)
- 2025-2026学年七年级语文上册第五单元检测培优卷( 含答案)
- 2025年沪教版八年级英语上册预习Unit1【含答案解析】
- 化妆品生产质量管理规范(2022年)PPT
- 供电所技能竞赛装表接电技能实操试题含计算题与评分标准
- (英文简单)皇帝的新装英文剧本
- YY/T 1421-2016载脂蛋白B测定试剂盒
- 照相凹版制版法课件
- 《无人机组装与调试》课件 第一章
- 轨行区作业安全专项方案
- 云南省食品经营许可申请表
- 校园管制刀具排查记录表
- 财务管理学及财务知识分析笔记串讲
- 07FK02防空地下室通风设备安装PDF高清图集
评论
0/150
提交评论