C语言与程序设计.ppt_第1页
C语言与程序设计.ppt_第2页
C语言与程序设计.ppt_第3页
C语言与程序设计.ppt_第4页
C语言与程序设计.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计 学习C语言的理由 C语言可以作为学习计算机程序设计语言的入门语言C语言是编写操作系统的首选语言 与计算机硬件打交道灵巧且高效C语言具有现在高级程序设计语言的基本语法特征常用的面向对象程序设计语言如C 和Java 其基本语法来源于C语言许多用C语言编写的系统需要维护 学习C语言的理由 续 用于要求程序运行效率高的领域 例如嵌入式系统 通信程序游戏开发者和黑客少不了C语言C语言使用者和爱好者众多 计算机系统的组成 计算机系统由硬件和软件组成 硬件是组成计算机的物理设备 由运算器 控制器 存储器 输入设备和输出设备组成 软件是指程序及其相关文档 程序是计算任务的处理对象和处理规则的描述 文档是为了便于了解程序所需的阐明性资料 程序必须装入机器内部才能工作 文档一般是给人看的 不一定装入机器 程序是软件系统中不可或缺的重要组成部分 是用计算机语言编写的 学习计算机语言和程序设计技术 就是要学会用计算机语言编写解决实际问题的程序 这对于软件开发人员来说是重要的一步 学习计算机语言 学习计算机语言 主要是学习语法和语义两个方面 计算机语言的语法是严格定义的 不允许有语法错误 语法是一些规定 如各种语句及各种语法成分都有各自的规定 同时计算机语言的语义是唯一的 没有二义性的 各种语句及语法成分有各自的语义 只有掌握计算机语言的语法 理解语义 才能正确使用计算机语言编写没有语法错误和逻辑错误的程序 程序设计 给出解决特定问题程序的过程 包括问题分析 算法设计 程序源代码设计 测试 调试和维护 源代码可以用C语言编写 也可以用其他计算机语言编写 程序设计的目的是得到一个指令序列 提供给计算机来执行 使得问题得到解决 在程序设计过程中 往往需要不同方面 不同领域的专业知识 包括应用领域知识 特定算法知识和形式逻辑知识等 C语言程序设计是一门实践性很强的课程 在学习过程中 不仅要掌握基本概念 语法和语义等内容 还需要注重实验环节 通过自己动手编写程序 在完成C语言程序的编辑 编译 调试和运行的过程中 加深对C语言的理解 本课程学习目标 计算机语言 C语言的词法 语法和语义程序设计 第1章C语言与程序设计 本章主要内容 C语言发展简史与特点 计算机解题过程 算法及其表示 常用算法介绍 结构化程序设计方法 第1章C语言与程序设计 1 1C语言发展简史1 2C语言的特点1 3计算机解题过程1 4算法及其表示1 5常用算法介绍1 6结构化程序设计方法 1 1C语言发展历史 1960年ALGOL60语言 一种面向问题的高级语言 1963年英国剑桥大学推出CPL语言 同年剑桥大学的马丁 理查德对其简化 提出BCPL语言1970年美国贝尔实验室的肯 汤姆逊进一步简化 提出了B语言 取BCPL的第一个字母 1972年美国贝尔实验室的布朗 W 卡尼汉和丹尼斯 M 利奇对其完善和扩充 提出了C语言 取BCPL的第二个字母 1983年美国标准化协会制定C语言标准 ANSIC 即现在流行的C语言 形成C89或C90 1 1C语言发展历史 图1 1C语言的发展历程 1 2C语言的特点 C语言简洁 紧凑 灵活可移植表达方式简练 实用灵活具有丰富的数据类型具有低级语言的特点是一种结构化语言 适合于大型程序的模块化设计各种版本的编译系统都提供了预处理命令和预处理程序可移植性好生成的目标代码质量高C语言语法限制不严 程序设计自由度大 1 2C语言的特点 C程序的错误更隐蔽C程序有时会难以理解C程序有时会难以修改 C语言的缺点 1 3计算机解题过程 图1 2计算机解题过程 1 4算法及其表示 一般软件工程方法 分析设计编码调试 测试 运行 1 4算法及其表示 例1 1 求任意两个数的和与平均值 数据描述问题中有4个数据 即两个任意数 任意数之和以及它们的平均值 在程序中定义4个浮点型变量存储这些数据 例如 floata b sum average 处理步骤描述第1步 输入2个任意数 存储在变量a和b中 第2步 求2个数的和以及平均值 存储在变量sum和average中 第3步 输出变量sum和average的值 即得到问题所要求的结果 1 4算法及其表示 例1 2 某体育比赛中 有10个裁判为参赛选手打分 参赛选手最后得分的计算方法是 去掉一个最高分和一个最低分后其它分数的平均值 求参赛选手的最后得分 数据描述问题中的原始数据有10个 解题过程中求最高分 最低分和最后得分 在程序中可定义1个数组s存储10个分数 3个实型变量max min score分别存储最高分 最低分和最后得分 另外还需要若干辅助变量 处理步骤描述第1步 输入10个任意数 存储在数组s中 第2步 求10个数的最高分 最低分以及它们的和 并存储在变量max min和sum中 第3步 从sum中减去max和min并且除以 10 2 值为8 求得最后得分 并将其存储在变量score中 第4步 输出变量score的值 则得到问题所要求的结果 1 4算法及其表示 计算机解题步骤 了解题目要做什么明确处理的数据以及数据特征 确定处理方案清楚地描述对数据的处理步骤 算法设计 以便得到预期的结果对处理步骤进一步细化 求精算法 直到能够使用程序设计语言编程实现将算法转换为程序运行程序 分析结果 1 4算法及其表示 算法的概念 算法是精确定义的一系列规则的集合 这些规则规定了解决特定问题的一系列操作 以便在有限的步骤内产生出问题的答案 1 4算法及其表示 例1 3 求两个正整数m和n的最大公约数 即同时能够整除m和n的最大正整数 欧几里得阐述了求两个数的最大公约数的过程 欧几里得算法 第1步 以n除m 并令r为所得余数 显然n r 0 第2步 若r 0 算法结束 n即为m和n的最大公约数 第3步 置m n n r 返回第1步 1 4算法及其表示 算法的特性 有穷性 算法在执行了有限步骤的之后结束 并且每一步都可以在有穷的时间内完成确定性 算法中每种操作必须有确切的含义 即无二义性 同时 无论如何算法都只有唯一的一条执行路径 即相同的输入只能得出相同的输出可行性 算法中描述的操作都可以通过已经实现的基本操作执行有限次实现输入 有零个或多个输入 即算法需要的必要信息输出 有一个或多个输出 输出的是与输入有某些特定关系的信息 没有输出的算法是无意义的 1 4算法及其表示 没有输入的程序不论运行多少次 只能得到相同的计算结果没有输出的程序 是没有意义的程序 1 4算法及其表示 算法的表示 自然语言描述 例1 2 例1 3 传统流程图N S流程图 参见图1 6 p9 伪代码 1 4算法及其表示 图1 3常用流程图符号 传统流程图 1 4算法及其表示 图1 4求最大公约数的传统流程图 传统流程图 1 4算法及其表示 N S流程图 1 顺序结构 A操作和B操作按顺序进行 先进行A操作 再进行B操作 2 选择结构 根据判断条件P是否成立 在A和B两种操作中选择一种 若判断条件P成立 选择A操作执行 否则 选择B操作执行 3 循环结构 根据判断条件P是否成立 决定A操作是否被重复执行 C语言中的循环结构分为while循环 亦称为当型循环 和do while循环 亦称为直到型循环 while循环是先判断条件P 若成立 则重复A操作 do while循环是先执行A操作 再判断条件P 若成立 则重复A操作 1 4算法及其表示 图1 5N S流程图基本结构 N S流程图 1 4算法及其表示 图1 6求最大公约数的N S流程图 N S流程图 1 4算法及其表示 伪代码 求最大公约数 算法开始输入m n do r 以n除m的余数 m n n r while r 0 输出m 算法结束 1 4算法及其表示 算法的表示 自然语言描述 例1 2 例1 3 传统流程图 参见图1 4 p8 N S流程图 参见图1 6 p9 伪代码 1 5常用算法介绍 常用算法 枚举法 又称为穷举法 该方法通过逐一考察问题的所有可能解 找出问题真正的解 枚举法要求问题的可能解必须是有限的 而且这些可能解是已知的 递推法 递推法是从已知的初始条件出发 逐次推出中间结果 在理想状态下 每递推一次 结果逐渐接近问题的最后解 递归法 一个直接或间接调用过程 或函数 自身的算法称为递归算法 一个函数如果调用自身进行计算则称该函数为递归函数 一些问题的算法描述中 递归法往往比非递归法简洁易懂 1 5常用算法介绍 枚举法 例1 4 给定一个正整数 确定它的整数立方根是否存在 若存在则找出这个立方根 问题分析 一个正整数的整数立方根如果存在 一定在0和这个数之间 而这之间正整数的个数是有限的 所以可设计一个基于枚举法的算法 算法开始输入一个正整数给n x 0 while x n且x x x n x x 1 if x n 找到n的整数立方根 输出x的值 else输出n的整数立方根不存在信息 算法结束 1 5常用算法介绍 递推法 例1 5 计算一个正整数N的阶乘 根据数学知识N 1 2 3 N 为了求得N 可以从1开始 求得1的阶乘后再求2的阶乘 再和3相乘得3的阶乘 依次类推 最后求得N的阶乘 算法开始输入一个正整数给n t 1 i 1 while i n t t i i i 1 输出结果t算法结束 1 5常用算法介绍 递归法 例1 6 计算一个正整数N的阶乘 阶乘函数f的递归定义为 f 1 1 1 1 N 1时 f N N f N 1 N N N 1 如果N 1 1 6结构化程序设计方法 结构化程序设计是由E W Dijikstra在1965年提出的 对程序设计及软件开发产生了深远的影响 结构化程序设计以功能模块和过程设计为主 其要点如下 1 采用自顶向下 逐步求精的程序设计方法 2 任何程序只使用顺序 选择和循环这三种基本控制结构 结构化程序设计要求程序中

温馨提示

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

评论

0/150

提交评论