谭浩强C语言全书2008CH3-1

上传人:宝路 文档编号:48329034 上传时间:2018-07-13 格式:PPT 页数:94 大小:519.97KB
返回 下载 相关 举报
谭浩强C语言全书2008CH3-1_第1页
第1页 / 共94页
谭浩强C语言全书2008CH3-1_第2页
第2页 / 共94页
谭浩强C语言全书2008CH3-1_第3页
第3页 / 共94页
谭浩强C语言全书2008CH3-1_第4页
第4页 / 共94页
谭浩强C语言全书2008CH3-1_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《谭浩强C语言全书2008CH3-1》由会员分享,可在线阅读,更多相关《谭浩强C语言全书2008CH3-1(94页珍藏版)》请在金锄头文库上搜索。

1、第3章 算法与程序设计基础3.1算法的概述3.2 算法的常用表示方法3.3 结构化程序设计方法3.4 语句概述3.5 选择结构程序设计 退出3.1 算法3.1.1 算法的概念编写一个程序的时候,总要首先想好:l程序是干什么的?l应该如何实现这些目标?(应该先进行什么处理、后进 行什么处理?)l所处理的数据的类型是什么?l遇到一些复杂的问题,我们可能还需要考虑采用什么数 学方法。 这一切都涉及一个专业名词“算法”。 算法就是程序处理问题的步骤与方法。 很多时候,程序设计者所面临的问题就是寻找一个 合适的算法。因此,算法在软件设计中具有重要的地位 。程序=数据结构+算法3.1 算法P57 例3.1

2、:求1+2+3+4+100=? 算法1: 步骤1:1+2=3 步骤2:3+3=6 步骤3:6+4=10 步骤99:4950+100=5050 算法2: 步骤1:0+100=100 步骤2:1+99=100 步骤3:2+98=100 步骤50:49+51=100 步骤51:10050=5000 步骤52:5000+50=50503.1 算法P52 例3.1:求1+2+3+4+100=? 算法3: 步骤1:k=1,s=0 (k表示加数,s存放和) 步骤2:如果 k100 则 算法结束,S即为所求的和 步骤3:否则 s=s+k,k=k+1 步骤4:转向步骤2执行算法的优劣:方法简单、运算步骤少。3.

3、1.2算法的特性一个方法要成为我们可以在程序设计中所使用的算法 ,需要具备如下五个特征。1、有穷性一个算法要在有限的步骤内解决问题。例如,求某一自然数N的阶乘:N!=1*2*3*. .*N 但是,以下计算公式则不能作为算法,因为其计算步骤 是无限的:SUM=1+1/1+1/2+1/3+. .+1/n+.3.1 算法2、确定性算法中操作步骤的顺序和每一个步骤的内容都应 当是确定的,不应当是含糊不清的。3、可执行性一个算法应当是可以由计算机执行的,算法中描 述的操作都是可以通过计算机的运行来实现。(例如 :b=0,执行a/b)4、有零个或多个输入输入就是从外界取得必要的数据。一个算法可以 有零个或

4、多个输入。 例如:计算半径为r的圆的周长和面积。同时一个算 法可以没有输入,例如:计算出5!是多少。3.1 算法5、有一个或多个输出算法的目的就求解,“解”就是我们想要得到的最终结果。输出是同输入有着某些特定 关系的量。一个算法得到的最终结果就是输出。没有输出的算法是没有意义的。3.1 算法3.1.3 3.1.3 算法设计的要求算法设计的要求什么样的算法是好的算法呢?设计算法时应向哪些 方面努力呢?一般包括以下这几个方面。 1、正确性一个算法应当能够解决具体问题。其“正确性”可 分为以下几个方面:l不含逻辑错误;l对于几组输入数据能够得出满足要求的结果;l对于精心选择的典型、苛刻的输入数据都能

5、得到要 求的结果;l对于一切合法的输入都能输出满足要求的结果;3.1 算法2、可读性 算法应该可以用能够被人理解的形式表示。太复杂 的、不能被程序员所理解的算法难以在程序设计中采 用。 3、健壮性 指算法具有抵御“恶劣”输入信息的能力。当输入 数据非法时,算法也能适当的作出反应或进行处理, 而不会产生莫明其妙的输出结果。 例如,当输入三个边的长度值来计算三角形的面积时 ,一个有效的算法在三个输入数据不能构成一个三角 形时,应报告输入的错误,应返回一个表示错误或错 误性质的值并中止执行。3.1 算法概述4、效率与低存储量的需求效率指的是算法执行时间,对于一个问题如果有多个 算法可以解决,执行时间

6、短的算法效率高。 存储量需求指算法执行进程所需要的最大存储空间。 高效率和低存储量是优秀程序员追求的目标。效率与 低存储量需求这两者都与问题规模有关。占用存储量 最小、运算时间最少的算法就是最好的算法。3.1 算法概述3.2 算法的常用表示方法算法可以用多种方式来表达。常用的有自然语言、传统的流程图、伪代码、N-S流程图、计算机语言等。3.2.1 自然语言表示算法(P58)自然语言就是指人们在日常生活中使用的语言,如汉语、英语等。例如:编程计算圆周长和面积编程思路:输入圆的半径rscanf(“%f“,如果r0)使2*3.14*r,得到的积放在c中 c=2*3.14*r; 使3.14*r*r,得

7、到的积放在area area=3.14*r*r; 3.2 算法的表示方法3.2.2 流程图(P59) 用图形的方式来表示算法。用一些几何图形来代表不 同性质的操作。 常用的流程图符号: 3.2 算法的表示方法结构化程序设计中采用三种 基本结构:顺序结构、选择 结构和循环结构,其共同特 点:P591、顺序结构2、选择结构3、循环结构3.2 算法的表示方法编程计算圆周长和面积,用流程图表示的算法如下:3.2 算法的表示方法开始输入半径rr0c=2*3.14*r; area=3.14*r*r输出r,c,area结束noyes3.2.3 N-S结构流程图(P61)把流程图中的流程线完全去掉,全部算法写

8、在一个矩形框内。3.2 算法的表示方法ABAPBP成立AA当P成立编程计算圆周长和面积,用N-S图表示的算法如下 :3.2 算法的表示方法输入半径rr0yesnoc=2*3.14*r;area=3.14*r*r输出r,c,area3.2.4 伪代码表示法(P58) 指用介于自然语言和计算机语言(语句关键字)之间 的文字和符号来表示算法。 例如:编程计算圆周长和面积 编程思路:输入圆的半径r scanf(“%f“,if (r0) 计算:if (r0) c=2*3.14*r; c=2*3.14*r; area=3.14*r*r area=3.14*r*r; 3.2 算法的表示方法3.2.5 用计算

9、机实现算法用计算机解决一个问题,包括设计算法和实现算法两个部分。l用自然语言表示了算法,还要将它转换成计 算机语言程序。 l用计算机语言描述算法必须严格遵循所用语 言的语法规则。 例如:编程计算圆的周长和面积3.2 算法的表示方法3.2.5 用计算机实现算法#include #define PI 3.14 main() float r; double c,area; scanf(“%f“, c=2*PI*r; area=PI*r*r; printf(“r=%f,area=%f“,c,area); 如果对一个问题设计好了算法 ,再用计算机语言来表示就非 常容易,所以用计算机来解决 问题,算法设计

10、是非常关键的 。对于程序员在编写解决一较 复杂的问题的程序时,往往要 先设计解决该问题的算法。3.3 结构化程序设计方法要解决实际问题,编写程序的步骤是:确定数学模型设计算法编写源程序程序编译运行进行结构化的程序设计,采用的方法是(P64): 1、自顶向下 2、逐步细化 3、模块化 4、结构化编码 模块化:是将一个大任务分成若干个较小的任务,较小的 任务又细分为更小的任务,直到更小的任务只能解决功能 单一的任务为止,一个小任务称为一个模块。3.3 结构化程序设计方法在C语言中,模块化由函数来实现。 “自顶向下,逐步细化”:这种把大任务分成小任务的方 例例:工资管理系统分解成的模块结构如下:3.

11、4 C语句概述一个C语言程序的执行部分由语句组成。程序的各种 功能(如输入、输出、计算、打印等)也由语句实现的。 C语言的语句可分为:说明语句、表达式语句、函数调 用语句、控制语句、复合语句以及不执行任何操作的空 语句。 1、声明语句 声明语句用来定义变量的数据类型,如: int s,i; /* 说明s,i是整型变量 */ 2、函数调用语句 由一个函数调用加一个分号构成。 例:printf(“n Please input an integer to n:”);scanf(“%d”,3.4 C语句概述3、表达式语句 由一个表达式加上一个分号构成。任何表达式都可 以加上分号而成为语句。 例: s=

12、0; i=1; s=s+i; i=i+2;4、空语句只有分号的语句。空语句不执行任何操作;5、复合语句 把多个逻辑上相关的一组语句用大括号“”括 起来组成的一个语句称复合语句。C语言的编译系统 把复合语句作为是单条语句对待。如下所示就是一个 复合语句: b=c+d;a=e-f;printf(“%d%d“,b,a); 复合语句中的各条语句都以分号“;”结尾。 注意:在大括号“”之后不要加分号。3.4 C语句概述6、控制语句用来规定语句执行的顺序,共有9种控制语句:lif (条件) else 条件语句lfor (条件) 循环语句lwhile (条件) 循环语句ldo while (条件) 循环语句

13、lcontinue 结束本次循环语句lbreak 结束循环语句或结束switch语 句lswitch (表达式) 多分支选择语句lgoto 标号; 转向语句lreturn (表达式)3.4 C语句概述顺序结构举例bch2_1.c:输入圆半径,计算周长和面积。 编程思路:输入圆的半径rc=2*3.14*r;area=3.14*r*r 选择结构举例:改进上例,如果输入的半径为负,就输出 一段信息,说明输入数据错误。 编程思路:输入圆的半径r如果:r0 则c=2*3.14*r; area=3.14*r*r; 输出c,area否则:则输出“数据输入错误”,程序结束;3.3 结构化程序设计方法3.3 结

14、构化程序设计方法N-S流程图如下:输入半径rr0yesnoc=2*3.14*r;area=3.14*r*r输出r,c,area输出:“输入数据错误”源程序ch3_68.c #include #define PI 3.14 main() float r; double c,area; printf(“r=“); scanf(“%f“, if (r0) c=2*PI*r; area=PI*r*r; printf(“c=%f,area=%fn“,c,area); else printf(“输入数据必须大于0n“); 3.5 选择结构程序设计选择结构的特点是:根据 所给出的条件,决定从给 出的操作中选

15、择一组去执 行。3.5.1关系运算符和关系表达式(描述条件)关系运算符用来比较两个操作数大小关系的运算符 。利用关系运算符写出关系表达式,用这种表达式的结 果去控制计算的进程。1、关系运算符及优先级高:=低:=!=l可以对数值类型使用这些运算符,构造出关系表达式l关系运算符的优先级低于算术运算符,高于赋值运算符例如:3.24a+b 相当于c(a+b) a=bc相当于a=(bc) 2.关系表达式 用关系运算符连接起来的表达式称为关系表达式,C规定: 如果关系成立,表达式值为1;关系不成立表达式值为0。 例: 3.24a+b 若:a=3,b=4,c=9则结果为:1 a=bc若:b=4,c=9 则结果为:0 aA 结果为:13.5 选择结构程序设计一个关系表达式不连续写一个以上的关系运算符,例:数学关系:5=3=2判断变量c的值是否为字母:c=a scanf(“%d%d%d“, printf(“e=%d,a=%d,b=%d,c=%dn”,+a printf(“a=%d,b=%d,c=%d,e=%dn“,a,b,c, +a c=a|(a=c)b); printf(“a=%d,b=%d,c=%dn“,a,b,c); printf(“e=%d,a=%

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号