C语言概述(5).ppt_第1页
C语言概述(5).ppt_第2页
C语言概述(5).ppt_第3页
C语言概述(5).ppt_第4页
C语言概述(5).ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

第1章C语言概述 教学目标了解C语言的起源 发展和特点掌握C语言程序的基本结构掌握算法的概念 特点及描述方法掌握C语言程序的开发步骤和上机调试流程掌握使用VisualC 6 0调试C语言程序的操作过程 目录C语言简介简单的C程序设计算法 1 1C语言简介 程序设计技术和程序设计语言的发展历程面向机器的程序设计面向过程的程序设计 如Basic Pascal C等面向对象的程序设计 如C Java Delphi等C语言简介面向过程的专业编程语言 规模小 效率高 功能强应用领域 系统软件 应用软件编程规模 微型程序 大型程序应用平台 大型机 微型机 包括单片机 广泛普及 同样深受业余编程人员欢迎影响深远 C Java是以C为基础发展的后起之秀 C语言的起源和发展 起源BCPL语言 B语言 C语言发展初衷 仅为贝尔实验室编写UNIX系统而设计赢得青睐 源于UNIX的成功和流行 名著 TheCProgrammingLanguage 的出版应用平台 从大型机到微型机 包括单片机 应用领域 从系统软件到应用软件进一步发展 标准化原因 多种C语言版本 影响C语言程序的可移植性ANSI ISOC89标准 定于1989年 得到普遍支持ISOC99标准 定于1999年 尚未得到普遍支持 C语言的主要特点 语言规模小 数据类型丰富 运算符多样 表达简洁 使用灵活 支持结构化和模块化编程 既适用于编写大软件 又适用于编写小程序兼有高级语言和汇编语言的优点 编程效率高 目标程序执行效率高 大大缩小了汇编语言的使用范围语言接口开放 便于 C编译系统提供通用库函数 用户创建自用库函数 第三方提供各类专业库函数库函数丰富 编程不必从零开始 大大缩短编程时间可移植性好 源于 尽可能剥离与硬件有关的语言成分 预编译命令支持 语言和常用库函数标准化不足 如数据类型检查较弱可能产生难以发现的错误 表达过于简洁产生难以理解的代码等 C语言编译器 早期的C语言编译器 独立存在 如MicrosoftC TurboC HighC WatcomC等目前流行的C编译器 大多依附于C 编译器商业化软件 如VisualC C Builder ComeauC 支持C99 等非商业化软件 如GNUC Dev C Code Blocks等免费使用的在线编译器 读者不妨一试 如 1 2简单的C语言程序设计 C 集成开发环境 IDE 集成多种编程工具 如源程序的编辑 编译 链接 运行 调试等 使用方便C 编程环境支持C语言程序的编译和调试等 约定 若源程序文件的扩展名为C 则为C程序若源程序文件的扩展名为CPP 则为C 程序说明 所有示例程序的文件扩展名均为C所有示例程序都在VisualC 6 0 Dev C 4 9 9 2编程环境下调试通过 演示举例计算圆的面积 问题描述输入圆的半径 计算并输出该圆的面积问题分析C语言程序的组成 数据及对数据的操作数据存于变量 变量对应于内存本例的数据圆的半径 存于变量r圆的面积 通过数学式 r2计算转换数学式 r2成C语言表达式 3 14159f r r注 用浮点数3 14159f代替 后缀f表示单精度浮点数 C语言的乘用 表示 程序实现 源程序名 ex1 1 c功能 计算并输出圆的面积计算方法 圆的面积 r r输入数据 圆的半径输出数据 圆的面积 includeintmain void 无参 floatr 定义浮点变量r 存半径 printf 输入圆的半径 向显示器输出提示信息 scanf f 返回0值 main函数正常结束 关于程序的其他说明程序书写自由 一个语句可写若干行 一行可写若干语句 但要便于阅读 严格区分大小写字母 如main与Main是不同的 程序的一次运行结果为 输入圆的半径 1 5 半径为1 5的圆的面积 7 06858 问题讨论C语言编写小程序解决简单问题很方便 如何编写大程序解决复杂问题 编程思路 功能分解 把一个复杂问题按功能分解成较为简单的若干个子问题 每个子问题通过义一个函数来解决 若子问题还不够简单 则继续按功能分解 直到所有子问题都能解决为止 功能集成 解决这个复杂问题的函数即可通过调用一系列解决子问题的函数来实现 因C语言以函数为模块编程 故这种编程方法也称为 自顶向下 逐步求精 的模块化编程方法 编程实践 以演示程序所解决的问题来说明功能分解 分解成三个简单问题输入圆的半径 调用库函数scanf实现计算圆的面积 调用自定义函数area实现输出圆的面积 调用库函数printf实现功能集成 主函数依次调用上述3个函数即可最终解决整个问题 程序源代码 参见下页编程结论 用 自顶向下 逐步求精 的模块化编程方法可以解决任何复杂问题 学习编程应从解决基本的简单问题开始 includefloatarea floatr return3 14159f r r intmain void floatr 定义浮点型变量r 存放圆的半径 printf 输入圆的半径 scanf f 同时参考 教材例1 1 C语言程序的开发步骤和上机调试流程 C语言程序的开发步骤 分析问题 产生解题步骤 即算法 根据解题算法编写C语言源程序 编辑源程序并保存 文件扩展名为C 编译源程序 生成目标程序 文件扩展名为obj 链接 目标程序及其所用库函数合并成可执行文件 文件扩展名为exe 调试 运行可执行文件 分析运行结果 若结果错误 则修改源程序 重复以上过程 直到结果正确为止 优化 改进算法 缩短运行时间 合理分配内存 减少所用内存 图1 1C语言程序上机调试流程 1 3程序的灵魂 算法 算法的概念简单算法举例算法的特性怎样表示一个算法结构化程序设计方法 一个程序应包括两个方面的内容 对数据的描述 数据结构 datastructure 对操作的描述 算法 algorithm 著名计算机科学家沃思提出一个公式 数据结构 算法 程序 数据结构 算法 程序设计方法 语言工具 完整的程序设计应该是 算法的概念 广义地说 为解决一个问题而采取的方法和步骤 就称为 算法 方法1 1 2 3 4 一直加到100加99次方法2 100 1 99 2 98 49 51 50 100 50 50 对同一个问题 可有不同的解题方法和步骤 例 求 为了有效地进行解题 不仅需要保证算法正确 还要考虑算法的质量 选择合适的算法 希望方法简单 运算步骤少 计算机算法可分为两大类别 数值运算算法 求数值解 例如求方程的根 求函数的定积分等 非数值运算 包括的面十分广泛 最常见的是用于事务管理领域 例如图书检索 人事管理 行车调度管理等 算法的概念 简单算法举例 举例求1 2 3 4 5 步骤1 先求1 2 得到结果2步骤2 将步骤1得到的乘积2再乘以3 得到结果6步骤3 将6再乘以4 得24步骤4 将24再乘以5 得120 太繁琐 如果要求1 2 1000 则要写999个步骤 S1 使p 1 S2 使i 2 S3 使p i 乘积仍放在变量p中 可表示为 p i pS4 使i的值加1 即i 1 i S5 如果i不大于5 返回重新执行步骤S3以及其后的步骤S4和S5 否则 算法结束 最后得到p的值就是5 的值 可以设两个变量 一个变量代表被乘数 一个变量代表乘数 不另设变量存放乘积结果 而直接将每一步骤的乘积放在被乘数变量中 设p为被乘数 i为乘数 用循环算法来求结果 算法可改写 S1 1 pS2 3 iS3 p i pS4 i 2 iS5 若i 1000 返回S3 否则 结束 如果题目改为 求1 3 5 1000的值 算法只需作很少的改动 算法简练 用这种方法表示的算法具有通用性 灵活性 S3到S5组成一个循环 在实现算法时 要反复多次执行S3 S4 S5等步骤 直到某一时刻 执行S5步骤时经过判断 乘数i已超过规定的数值而不返回S3步骤为止 此时算法结束 变量p的值就是所求结果 同时参考 教材例1 3 算法的特性 有穷性 包含有限的操作步骤 确定性 算法中的每一个步骤都应当是确定的 有零个或多个输入 输入是指在执行算法时需要从外界取得必要的信息 有一个或多个输出 算法的目的是为了求解 解 就是输出 有效性 算法中的每一个步骤都应当能有效地执行 并得到确定的结果 一个算法应该具有以下特点 算法的描述 可以用不同的方法表示算法 常用的有 自然语言传统流程图结构化流程图伪代码PAD图 用自然语言表示算法 自然语言就是人们日常使用的语言 可以是汉语或英语或其它语言 用自然语言表示通俗易懂 但文字冗长 容易出现 歧义性 自然语言表示的含义往往不大严格 要根据上下文才能判断其正确含义 描述包含分支和循环的算法时也不很方便 因此 除了那些很简单的问题外 一般不用自然语言描述算法 例1 3判定2000 2500年中的每一年是否闰年 将结果输出 分析得出闰年的条件是 1 能被4整除 但不能被100整除的年份都是闰年 如1996 2004年是闰年 2 能被100整除 又能被400整除的年份是闰年 如1600 2000年是闰年 不符合这两个条件的年份不是闰年 我们把二月份是28天的这一年叫做平年 把二月份是29天的这一年叫做闰年 可以这样记 四年一闰 百年不闰 四百年再闰 你知道平年和闰年的由来吗 这是由于一年的时间长短 是根据地球绕太阳转一圈所用的时间来定的 我国古代的科学水平是非常先进的 早在二千多年前就测出地球绕太阳转一周的时间是365天多一些 后来 经过科学家精确计算 得出其精确时间为365天5小时48分46秒 每年按365天来计算 每过四年就多出将近一天的时间 因此 规定每四年的二月份增加一日 以补上过去少算的时间 但这样实际上每四年又要亏一点 推到100年时 亏了又将近一日 所以规定到公元整百年时不增加这一天 而到整400年时再增加这一天 S1 2000 yS2 若y不能被4整除 则输出y不是闰年 然后转到S6S3 若y能被4整除 不能被100整除 则输出y是闰年 然后转到S6S4 若y能被100整除 又能被400整除 输出y是闰年 否则输出不是闰年 然后转到S6S5 输出y不是闰年S6 y 1 yS7 当y 2500时 转S2继续执行 如y 2500 算法停止 设y为被检测的年份 算法可表示如下 以上算法中每做一步都分别分离出一些范围 已能判定为闰年或非闰年 逐步缩小范围 直至执行S5时 只可能是非闰年 其它 包括能被4整除 又能被100整除 而不能被400整除的那些年份 如1990 是非闰年 用流程图表示算法 美国国家标准化协会ANSI AmericanNationalStandardInstitute 规定了一些常用的流程图符号 举例将求5 的算法用流程图表示 如果需要将最后结果打印出来 可在菱形框的下面加一个输出框 例1 4将例1 3判定

温馨提示

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

评论

0/150

提交评论