程序设计基础第一章.ppt_第1页
程序设计基础第一章.ppt_第2页
程序设计基础第一章.ppt_第3页
程序设计基础第一章.ppt_第4页
程序设计基础第一章.ppt_第5页
已阅读5页,还剩109页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计基础 陈文宇电子科技大学计算机科学与工程学院 联系方式 cwy楼B1 513 学时 24 24成绩构成 平时10 期中10分实验20分 期末60分考试 闭卷 笔试 教材 C语言程序设计黄迪明等电子科技大学出版社2008 7 参考书 BrianW Kernighan DemisRitchieTheCProgrammingLanguage2ndEd 英文影印版 清华大学出版社2000谭浩强 C程序设计 第3版 清华大学出版社2005 程序设计Programming 给出解决特定问题程序的方法和过程 是软件构造活动的重要组成部分专业的程序设计人员称为程序员程序设计过程应当包括需求分析设计编码测试维护五个阶段 并生成各种文档资料 程序设计 程序设计需要以某种程序设计语言为工具 编写出该语言的程序 问题 什么是程序设计语言 什么是程序 什么是软件 程序设计语言与程序的关系是什么 语言 一组规则的组合 自然语言中的英语 1 字母表的定义 2 词法规则 单词符号的形成规则一个单词对应一条形成规则 规定了该单词由哪些字母按照什么顺序进行排列 3 语法规则 语法单位的形成规则短语 从句 句子 段落 文章4 语义规则 单词符号和语法单位的含义规则 5 语用规则 语义规则的发展和延伸强调在一定的语境中使用单词和语法单位时体现出来的具体意义需要根据上下文进行明确 思考 英语和英语文章的关系 程序设计语言 用于程序设计的人工语言 程序设计语言 机器语言 第一代程序设计语言字母表 0 1 单词符号 操作码 地址语法单位 指令1011100010011110程序指令的组合 机器语言 编写程序十分繁琐和痛苦 程序不便于记忆 阅读和书写 容易出错 查错和改错 十分困难 每类计算机的指令系统各不相同 可移植性很差 造成了重复工作 机器语言 指令针对特定型号的计算机 与机器有关 低级语言 运算效率很高 汇编语言 字母表 主要增加了英文字母单词符号 操作码 内存符号 寄存器 数据语法单位 指令ADDA R0程序指令的组合 汇编语言 第二代计算机语言 助记忆符 用与代码指令含义相近的英文缩写词 字母和数字等符号取代指令代码较容易理解程序 纠错及维护变得较方便汇编语言仍然是面向机器的语言 低级语言 仍比较繁琐 通用性也差 汇编语言 需要将汇编语言指令翻译成机器语言的指令 汇编汇编语言程序的目标程序占用内存空间少 运行速度快有着高级语言不可替代的用途 高级程序设计语言 1 字母表的定义 2 词法规则 一般有五类单词符号3 语法规则 语法单位包括 表达式 语句 模块 程序 高级程序设计语言 4 语义规则 5 语用规则 无二义的6 其他规则 如数据类型的定义 运算符优先级的定义 参数的传递方式 作用域的规定等 FORTRAN语言的一条语句 if num 0 thenabs numelseabs num 高级程序设计语言 独立于计算机的硬件对具体的算法进行描述 算法语言 独立性 通用性和可移植性好 高级程序设计语言 一般包含有以下四种成分 数据成分 描述程序所涉及的数据运算成分 描述运算控制成分 表达程序的控制结构传输成分 表达数据的传输 输入输出 文件读写操作 高级程序设计语言 高级语言的程序主要是描述计算机的解题过程 即描述复杂的加工处理过程 所以也称高级语言为面向过程语言 计算机不能直接执行高级语言的程序 源程序 通常有解释方式和编译方式两种方法在计算机上执行程序 目标程序 思考 大量的程序设计语言被发明 被取代 被修改或组合在一起 尽管多次试图创造一种通用的程序设计语言 却没有一次尝试是成功的WHY 高级语言的发展 从早期语言到结构化程序设计语言从面向过程到非过程化程序语言 FORTRAN FORmulaTRANslation主要用于科学计算2 ALGOL60 ALGOrithmicLanguage60采用BNF形式描述语法 一 早期的高级语言 50年代 早期的高级语言 3 COBOLCOmmonBusinessOrientedLanguage 广泛应用于各种事务处理领域 引入了文件和数据描述 基于数学原则的语言1 LISP 其基础是函数和函数作用2 APL 支持函数式程序设计风格 应用于大量矩阵运算的科学计算 二 早期的突破 3 SNOBOL4 主要用于字符串处理 与机器无关的宏功能 增加了程序的可移植性 PL 1 希望将所有语言概念集成大全 分程序概念和递归过程 数据描述机能 动态数据结构 异常处理 多任务机能 可用于科学数值计算 数据处理等 难以得到广泛的应用 三 概念的集成 64年 引入了许多有趣的概念1 ALGOL68 以零型文法描述语法规则 引入正交性和通用性原则 四 再一次突破 60年代后期 2 SIMULA67 应用于模拟领域 协同程序 引入了类的概念 3 PASCAL 具有明显的简洁性 体现结构程序设计思想 具有用户自定义类型利用语法图形式描述语法规则 4 BASICBeginner sAll purposeSymbolicInstructionCode 简单易学 交互式工作环境 解释执行 70年代 支持系统软件开发1 语言研究涉及抽象数据类型 异常处理和并行处理机制2 MODULA 2 支持模块结构 模块可以独立编译 面向实时系统和并行系统综合功能 五 大量的探索 3 CCPL BCPL B C 具有高级语言和低级语言的优点 应用于各种领域 70年代以后 注重可移植性1 Ada 面向专门领域的特殊要求 是在引入了一个不大的 容易理解的概念集合的基础上开发的 体现许多现代软件设计方法学的语言 提高程序的可读性 可靠性 可维护性 六 Ada和第四代语言 2 第四代语言 超高级语言面向问题 表达力强 更接近于问题的描述 着重关心的是 做什么 Java HTMLJava是一种通用 并发 基于类的面向对象的程序设计语言 面向对象实现 编译与解释相结合分布性 安全性 并发性 七 网络时代的语言 抛弃冯 诺依曼体系结构包括函数式 逻辑式语言应用于人工智能等领域 八 新一代程序设计语言 1 基础存储器 控制器 处理器 ip2 特点 数据或指令以二进制形式存储 存储程序的工作方式 程序顺序执行 可强制修改执行顺序 存储器的内容可以被修改 冯 诺依曼体系结构 模型 ip 代码存储器 C 数据存储器 D 一些高级语言的关系 程序设计语言的发展小结 机器语言 汇编语言 高级语言用机器语言编写的程序由二进制代码组成 计算机可以直接执行 将机器语言符号化 于是产生了汇编语言 机器语言和汇编语言都是与机器有关的语言 通常称为低级语言 C语言的发展 1963年 在ALGOL60的基础上 英国剑桥大学推出了CPL CombinedProgrammingLangurage 语言 1967年英国剑桥大学的MatinRichards对CPL语言做了简化 推出了BCPL BaseCPL 语言 1970年美国贝尔实验室的KenThompson对BCPL进一步简化 设计出了简单的而且很接近硬件的B语言 并用B语言写出了第一个UNIX操作系统 1972年至1973年间 贝尔实验室的戴尼斯 利奇 DemisRitchie 和布朗 卡尼汉 BrianKernighan 在B语言的基础上设计出了C语言 BCPL C语言即保持BCPL语言和B语言的优点 精练 接近硬件 又克服了他们的缺点 过于简单 数据无类型等 1973年新的UNIX版本完全用C语言编写 1977年出现了可移植C语言的编译程序 推动了UNIX在各种机器上实现 C语言也迅速得到推广 其发展相辅相成 1978年以后 C语言先后移植到大 中 小 微型计算机上 成为最广泛使用的计算机程序设计语言之一 1978年在BrianW Kernighan和DennisM Ritchie合著的 TheCProgrammingLanguage 成为C语言的标准 1983年 美国国家标准化协会 ANSI 根据C语言各种版本对C的发展和扩充 制定了新的标准ANSIC 比标准C有了很大的发展1987年 ANSI公布了新标准 87ANSIC 1989年 公布了新的C语言标准 C891990年 ISO接受C89作为国际标准 通常称为C90 1999年 ISO对C语言增加了一些面向对象的特征 简称为C99 目前流行的C语言编译系统大多是以C89为基础进行开发的 第一章C语言程序设计基础知识 C语言是一种通用的高级程序设计语言当今世界上最流行的程序设计语言之一开发系统软件和应用软件中得到广泛应用本章简介C语言程序设计相关的基础知识 1 1引言 1 1 1计算机与信息社会计算机定义 一种在事先存入程序的控制下 能够接收数据 存储数据 处理数据并提供处理结果的数字化电子设备 计算机工作流程图 输入 运算与控制 存储 输出 数据 计算机 结果 1 1 2计算机中信息的表示 1 计算机内所有信息采用二进制表示2 采用二进制的原因 1 二进制只包含0和1 因此可用大量具有两种不同稳定状态的元件来表示 2 二进制数的运算规则简单 使得计算机中的运算部件的结构变得比较简单 3 计算机中信息的表示数值直接转换为二进制字符采用ASCII编码 7位 美国标准信息交换码 其它信息 汉字 图形 图象 声音 表格 也有相应的编码标准和规则 计算机系统 软件系统 硬件系统 系统软件 操作系统 编译程序 诊断程序系统服务软件等 应用软件 信息管理软件 游戏等 CPU 控制器 运算器 输入设备 鼠标 键盘 手写笔 MIC等 输出设备 显示器 绘图仪 打印机等 存储器 内存储器 RAM 外存储器 软盘 硬盘 光盘 1 1 3计算机系统的组成 程序的灵魂 算法 一个程序应包括 对数据的描述 在程序中要指定数据的类型和数据的组织形式即数据结构 datastructure 对数据进行操作的描述 即操作步骤 也就是算法 algorithm NikiklausWirth提出的公式 程序 数据结构 算法目前程序 算法 数据结构 程序设计方法 语言工具和环境 算法及其表示 算法 解决问题所采取的一系列步骤例 要求用一个给定的半径计算圆的面积 计算机算法为 设置半径值r 使用公式s r2 显示S的值 算法的特点 1 有输入算法可以有零个或多个输入 输入是用来在一个算法的执行过程中 向它提供处理对象 数据 或控制算法执行过程的信息 2 有输出算法必须具有一个或多个执行结果的输出 没有输出的算法是一个无效的算法 算法的特点 3 有穷性任何算法都应该在执行有穷步骤之后结束 4 确定性算法不能具有二义性 算法中每一步的语义都应该清晰明了 明确指出应该执行什么操作 如何执行操作 算法的特点 5 高效性根据算法编写出来的程序应具有较高的时空效率 执行时间短不占用过多内存 算法的表示 描述 自然语言表示易理解和交流 但易产生二义性 伪代码表示伪代码使用介于自然语言和计算机语言之间的文字和符号来描述算法 用形式化语言描述算法的逻辑过程 算法的表示 描述 程序流程图用图形符号和文字说明来表示数据处理的过程和步骤 N S流程图也称方框图 适于结构化程序设计的算法描述工具 程序流程图 是描述算法的良好工具 由逻辑框和流向线组成 逻辑框是表示程序操作功能的图形符号 流向线用来指示程序的逻辑处理顺序 流程图的逻辑框 起止框表示程序的开始和结束 处理框表示一种处理功能或程序段 框内用文字简述其功能 逻辑框 判断框表示在此进行判断以决定程序的流向 框内注明判断条件 连接框框内注有字母 当流程图跨页时 或者可能出现流向线交叉时 用它来表示彼此之间的关系 相同符号的连接框表示它们是相互连接的 流向线 流向线表示程序处理的逻辑顺序 以单向箭头表示 逻辑框和流向线 N Y N S流程图 1973年美国学者Nassi和Schneiderman提出N S流程图 也称为方框图 它是一种适于结构化程序设计的算法描述工具 由于流程图各步骤之间 一般总是按照从上到下顺序执行 N S流程图中取消了流向线 二选一结构的表示 A B Y N 满足 不满足 A B 算法例子1 输入一个整数 输出其绝对值 自然语言描述 1输入一个整数 2若该数为正数 则其绝对值取该数的值否则 其绝对值取该数的相反数值 3输出其绝对值 伪码表示 BEGINREADnumbIFnumb 0abs numbELSEabs numbPRINTabsEND 程序流程图 BEGIN READnumb numb 0 abs numb abs numb PRINTabs END Y N 算法例子2 从键盘读入10个整数输出其中正整数的和 BEGINSET0 sumSET0 countWHILEcount0thensum x sumENDcount 1 countEND WHILEPRINTsumEND 算法例子2伪代码 程序流程图描述算法 N S流程图算法 编写程序 算法用C语言进行实现 该过程也称对算法进行编码 按照算法的流程顺序编写程序编写程序还必须进行语句执行过程的控制 语言提供的控制结构 1 顺序 定义了语句按顺序执行的次序 2 选择 提供了根据某个条件的结果在不同的语句中选择执行某一条语句的能力 3 循环 重复 提供根据某个条件的结果重复地执行某些语句的能力 4 调用 即在需要时运行指定的代码段 C语言程序的基本结构 includevoidmain 数据定义 变量说明语句 数据处理 执行语句 程序说明 每个C程序必须有一个主函数main 是函数开始和结束的标志若需要输入和输出功能 程序开头应该为 include includevoidmain printf ThisisaCprogram n 程序例1 程序的作用是输出一行信息 ThisisaCprogram 程序例2求绝对值 includevoidmain intnumb 代表某个整数 intabs 代表该整的绝对值 scanf d 输出 注释 表示注释 注释是对源程序进行的注解 增加程序的可读性 对编译和运行不起作用 程序例3求两个实数之和 includevoidmain floata b sum 实型数据定义 scanf f f 程序例4 利用海伦公式计算边长分别为3 4 5的三角形的面积 include includevoidmain floata 3 0 b 4 0 c 5 0 floats area s a b c 2 area sqrt s s a s b s c printf area f n area 库函数 C语言 编译器 提供了许多基本的 常用的功能 分别保存在不同的文件中 以函数形式提供给程序员使用 库函数分类 1 I O功能 需要的包含文件 stdio h如 printf scanf等 2 字符 串 处理功能 string h如 islower strcat strcmp strlen等 3 数学功能 math h如 sin cos exp log sqrt等 库函数分类 4 时间 日期功能 time h如 time 5 图形功能 包括各种绘制点 线 圆 方和填色等的函数 graphics h6 动态存储分配 alloc h 程序例5求2个整数中较大者 通过函数实现 intmax intx inty x y 形参 intz if x y z x elsez y return z main部分 includevoidmain inta b max num scanf d d 程序例6输出华氏 摄氏温度对照表 在华氏0 100 之间 间隔20 给出对应的摄氏温度 includevoidmain intlower 0 upper 100 step 20 floatcs fs fs lower printf fahrCelsius n while fs upper cs 5 0 9 0 fs 32 0 printf 5 1f 6 1f n fs cs fs fs step endofwhile endofmain 程序执行结果 fahrCelsius0 0 17 820 0 6 740 04 460 015 980 026 7100 037 8 程序的结构特点 C程序由函数 模块 构成 C程序可由一个或多个函数组成 其中必须有且仅有一个main 函数 C程序在执行中可调用由C语言提供的各种标准库函数和用户自定义的函数 编程风格 1 通常使用小写英文字母 2 充分利用注释功能 增加可读性 3 程序中的各种语句组按其功能和嵌套关系缩进编排 使程序的模块和复合关系明显 4 注意花括号对齐和配对 5 适当空格和空行可使程序更加清晰 字母是程序中的最小单位 是构成其他语法单位的基础 C规定的合法字符集是ASCII码字符集 C语言字母表 字符集 C语言单

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论