C语言程序设计教程(厦门大学出版社提供)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章>>第二节
二、算法的表示方法
第2种:使用流程图描述
求sum的算法。
用流程图描述的算法如图
1-1所示。从图1-1中,可 以比较清晰地看出算法的 执行过程。
图1-1 求sun的算法流程图
第一章>>第二节
二、算法的表示方法
第2种:使用流程图描述求sum的算法。 传统流程图的一个主要不足是流程线的用法缺乏规 范。由于流程线可以转移流程的执行方向,如果使 用不当或流程控制转移不明晰,容易导致程序的混 乱和出错。为此,人们(I.Nassi和B.Schneiderman, 1973年)设计了一种新的流程图,它没有使用流程 线,而是把整个算法写在一个大框图内,这个大框 图由若干个小的基本框图构成,算法按照从上到 下、从左到右的顺序执行。这种流程图简称N-S流程 图。
第一章>>第三节
一、结构化程序基本控制结构
3.循环结构
图1-7 当型循环语 句
图1-8 直到型循环结构
图1-9 当型循环语 句
图1-10 直到型循环结构
第一章>>第三节
二、结构化程序设计的原则和步骤
要利用计算机语言设计一个结构化的程序,
一般应遵循以下几个原则:
(1) 使用语言中的顺序、选择、循环等基本控制 结构表示程序逻辑。 (2) 选用的控制结构只准许有一个入口和一个 出口。 (3) 程序语句组成容易识别的块,每块只有一个
第一章>>第三节
一、结构化程序基本控制结构
3.循环结构 在循环结构中,当条件满足时,反复执行某条件 语句或语句组的操作,直到条件不满足时为止。 循环结构也称重复结构。根据条件设置方式和 执行方式的不同,可以有两种不同的循环结构, 分别为当型循环结构和直到型循环结构,如图1-7 和图1-8所示,图1-9和图1-10分别是相应的N-S 流程图。
第一章>>第二节
二、算法的表示方法
第3种:使用伪代码描述sum的算法。 下面是用伪代码描述sum的算法,并附有注释行。
BEGIN i←1; sum←0; while i<=50 sum←sum+i; i←i+1;} sum←2*sum; 输出sum的值 END {
第一章>>第二节
/*算法开始*/ /*为变量i赋初值*/ /*为变量sum赋初值*/ /* 当变量 i<=50 时,执行下 面的环体语句*/
第一章>>第二节
二、算法的表示方法
描述一个算法可以有不同的方式,常见的有
以下三种:
(1)使用自然语言描述算法; (2)使用流程图描述算法; (3)使用伪代码描述算法。
第一章>>第二节
二、算法的表示方法
下面仍以求 1 到100 之间所有偶数的和(记为
sum )为例说明算法的 3种描述方法。假设采 用前面提到的最后一种算法,即先求出1到50 的和再乘以2。
入口和一个出口。 (4) 复杂结构应该用基本控制结构进行组合嵌套 来实现。 (5) 尽量避免使用跳转语句(如 GoTo 、 Break 等 语句)。
第一章>>第三节
二、结构化程序设计的原则和步骤
结构化程序设计通常包括以下6个主要步骤。 1.问题分析 2.建立数学模型 3.算法设计
第一章>>第一节
二、程序设计语言
下面对程序设计语言做进一步的解释。 1.第一代程序设计语言(1GL):机器语言 2.第二代程序设计语言(2GL):汇编语言 3.第三代程序设计语言(3GL):高级语言 4.第四代程序设计语言(4GL):面向问题语言
第一章>>第一节
一、算法的概念
图框 名称 起止框 流程线 输入输出框 判断框 表示算法流程的方向 表示算法过程中的信息输入和输出 表示算法过程中的选择分支结构。通常用上面的 顶点表示入口,根据需要用其余的顶点表示出口 表示算法过程中需要处理的内容。只有一个入口 和一个出口
表1-1 流程图的图形解释
含义 表示算法开始或结束的符号
处理框
第一章>>第二节
二、算法的表示方法
第1种:使用自然语言描述求sum的算法。 ①假设初始值i为1;
②假设变量sum初始值为0; ③如果i≤50时,执行④,否则转出执行⑦; ④计算sum加上i的值后,重新赋值给sum; ⑤计算i加1,然后将值重新赋值给i; ⑥转去执行③; ⑦计算sum乘以2的值,输出sum的值,算法结束。
第一章>>第三节
一、结构化程序基本控制结构
按照结构化程序设计的观点,任何算法功能都
可以通过三种基本控制结构以及它们的嵌套 组合来实现,这三种结构就是顺序结构、选择 (分支)结构和循环结构。
第一章>>第三节
一、结构化程序基本控制结构
1.顺序结构 顺序结构是依次执行指令的结构。即,程序中的 指令按照顺序依次执行,每条指令都必须执行,且 只执行一次,如图1-3所示,图1-4是相应的N-S流程 图。
一般来说,为解决一个问题而采取的方法和
步骤,就称为算法。计算机算法则是用计算 机求解一个具体问题或执行特定任务的一组 有序的操作步骤(或指令),是构成计算机 程序的核心部分。著名瑞士计算机科学家 N.Wirth曾经提出一个公式: 程序=数据结构+算法 其中,数据结构主要是数据的类型和数据的 组织形式,是对程序中数据的描述。算法 则是对程序中操作的描述,也就是操作步骤。
在设计算法时,要采用清晰的逻辑结构,同时充分
考虑到算法的复杂性问题,即算法的计算时间和占有 的空间应尽可能地少。
4.程序编码
5.测试 6.建立程序文档
第一章>>第三节
作为开篇,本章的主要目的是概要性地介绍程
序设计的基本知识,共包含3 个小节的内容。 第一节简要说明了什么是程序、程序设计和程 序设计语言,并对程序设计语言的分类进行了 介绍。第二节对算法的概念、其与程序设计的 关系以及 三种基本的算法表示方法进行了简 单描述。第三节介绍了结构化程序设计的基本 思想、基本控制结构以及主要步骤。
1.1 什么是程序设计?
1.2 低级语言和高级语言的主要区别是什么?
1.3 为什么说算法是程序设计的灵魂?
Βιβλιοθήκη Baidu.4 结构化程序设计的基本思想是什么?
第二章 C语言概述
主要内容: 第一节 C语言的发展历史和特点 第二节 C语言程序的结构 第三节 C语言程序的编译和运行 本章小结 习题
/*算法结束*/
一、结构化程序基本控制结构
结构化程序设计方法由著名的计算机科学家
E.W.Dijkstra 和N.Wirth等人在20世纪60年代后 期提出并逐渐发展起来,其基本思想是采用 “自顶向下、逐步求精、分而治之”的原则, 将一个较为复杂的原问题分解成若干相对独立 的小问题,依次细化,直至各个小问题获得解 决为止。
使用自然语言描述算法的方法比较容易掌握,
但是有些操作不易表述清楚,例如循环操作。 另外,还可能造成歧义,使他人对相同的一句 话产生不同的理解。
第一章>>第二节
二、算法的表示方法
第2种:使用流程图描述求sum的算法 传统的流程图由一些特定意义的图形、流程线及 简要的文字说明构成,它能明确地表示算法的 运行过程。表1-1给出流程图中所使用的图形的 含义。
第二章>>第一节
二、C语言的特点
C语言之所以风靡全球、被广泛使用,是因为
它具有以下优点:
第一章>>第二节
一、算法的概念
需 要 注 意 的 是 , 算 法 一 般 只 是 对 处理 问 题
思想的一种描述,不是计算机可以直接执行 的程序代码。因此算法本身是独立于计算机 的 , 算 法 的 具 体 实 现 则 由 计 算 机 完成 。 从 这 个 意义 上 说 , 程 序设 计 的本 质 就是 要 将 算法转化为计算机程序。 处理一个问题,可以有不同的算法。 设计和选择算法是至关重要的。不仅要保证 算法正确,还要考虑算法的质量和效率。
第一章>>第二节
二、算法的表示方法
第2种:使用流程图描述
求sum的算法。
图1-2 求sun算法的 N-S流程图
第一章>>第二节
二、算法的表示方法
第3种:使用伪代码描述sum的算法 伪代码是一种用来书写程序或描述算法时使用的 非正式表述方法,主要采用自然语言、数学公式和 符号来描述算法的操作步骤,同时采用计算机高级 语言(如 C 、 Pascal 、 VB 、 C++ 、 Java 等)的基本 控制结构来描述算法步骤的执行顺序。
第二章>>第一节
一、C语言的发展历史
随后几年,贝尔实验室又对 C 语言进行了多次
的改进,但仍局限在内部使用。直到 1975 年 Unix 第 6 版公布后, C 语言的突出优点才引起 人们的普遍注意。 1977 年出现了不依赖于具体机器的 C 语言编译 文 本 —— 《 可移 植 C 语 言 编译 程序 》 , 它使 C 语言移植到其他机器时所需做的工作大大 简化,同时也推动了 Unix 系统迅速地在各种 机器上实现。
出品人:蒋东明 主 编:叶东毅 责 编:眭 蔚 制作人:洪晓婧
第一章 第二章
第三章
第四章
第五章
第六章 第七章
程序设计概述 C语言概述 数据类型、运算符与表达式 程序控制结构 数组 指针 函数
第八章
用户自定义数据类型 第九章 文件
第一章 程序设计概述
主要内容: 第一节 程序和程序设计语言 第二节 算法概述 第三节 结构化程序设计方法 本章小结 习题
第一章>>第一节
二、程序设计语言
程序设计语言是一组用来定义计算机程序的
语法规则,用来向计算机发出指令。人们借助 程序设计语言来编写程序,解决不同的问题。 程序设计语言按照语言级别可以分为低级语言 和高级语言。
第一章>>第一节
二、程序设计语言
低级语言有机器语言和汇编语言,主要由机器
基本指令集构成。它依赖于所使用的计算机硬 件,即与特定的机器有关。它具有运行效率高 的特点,但编写复杂、费时,容易出差错,而 且程序修改维护困难。 高级语言的表示方法比较接近于自然语言,在 一定程度上与具体的计算机硬件无关,相对来 说易于学习和使用,而且也便于维护,但是运 行效率不如低级语言。
一、程序与程序设计的概念
作为一种能自动计算的机器,计算机通过执行
一系列指令来完成给定的计算工作。因此,要 让计算机完成某项任务,就必须将完成这项 任务的方法和具体步骤编写成计算机可以直接 或间接执行的一系列指令,使之执行这些指令 后,就可以完成给定的任务。这样的一系列 指令的集合就称为计算机程序或简称程序, 编写这些指令就是程序设计。
第二章>>第一节
一、C语言的发展历史
1978年,Brian W. Kernighan和Dennis M. Ritchie
出版了名著《C程序设计语言(The C Program ming Language)》,现在此书已被翻译成多种 语言,成为C语言最权威的教材之一。 1983 年,美国国家标准化协会 (ANSI) 根据 C 语言问世以来各种版本对C语言的发展和 扩充,制定了一套ANSI标准,称为ANSI C。 1987年,ANSI又公布了新标准——87ANSI C。 1990年,国际标准化组织ISO接受87ANSI C为 ISO C的标准(ISO98991990)。
图1-3 顺序结构
图1-4 顺序结构N-S图
第一章>>第三节
一、结构化程序基本控制结构
2.选择(分支)结构 选择(分支)结构根据逻辑判断的结果,做不同 的处理。一种典型的选择(分支)结构是双分支 结构,如图1-5所示,图1-6是相应的N-S流程图。
图1-3 双分支结构
图1-4 双分支结构N-S图
一、C语言的发展历史
C 语言是一种高效的编译型结构化程序设计
语言,最早由美国贝尔实验室的Dennis M.Ritchie 在 B 语言的基础上开发出来,并于 1972年在一台DECPDP-11计算机上首次实现。 最初的 C语言只是为描述和实现 Unix 操作系统 提供一种工作语言而设计的。 1973 年, Ken Thompson 和 Dennis M.Ritchie 两人合作,把 Unix 系统 90% 以上的内容用 C 语言改写,即 Unix的第5版。
相关文档
最新文档