当前位置:首页 >> 幼儿读物 >>

C语言一日一学第2课——算法(2)


N--S 流程图表示算法

# f* X0 W( ~8 K& O+ l9 k2 b6 R

1973 年美国学者 I.Nassi 和 B.Shneiderman 提出了一种新的流程图形式.在这种流程图中, 完全去掉了带箭头的流程线. 全部算法写在一个矩形框内, 在该框内还可以包含其它的从属 于它的框, 或者说, 由一些基本的框组成一个大的框. 这种流程图又称 N--S 结构化流程图 . N--S 流程图用以下的流程图符号:
% l; g2 B7 E8 {

顺序结构

' Z8 j/ ~8 w4 W3 S& \* J7 j, e* k

选择结构
; I3 C% A5 n. Y) ]1 k% I: @0 Q) C

+ k: J7 @) A* a- h9 E4 C

循环结构

循环结构

' _3 d& ^+ K- ?* `! P

用三种 N--S 流程图中的基本框,可以组成复杂的 N--S 流程图.图中的 A 框或 B 框,可以是 一个简单的操作,也可以是三个基本结构之一.
; p7 y3 M- [7 m9 ?5 p . O+ m8 A. ]2 z4 [

A 框可以是一个选择结构 B 框可以是一个循环结构 将例 1.0 判定闰年的算法用 N--S 图表示
. f; Q8 T7 U9 \6 h! ?

N--S 图表示算法的优点 比文字描述直观,形象, 易于理解;比传统流程图紧凑易画.尤其是它废除了流程线,整 个算法结构是由各个基本结构按顺序组成的,N--S 流程图中的上下顺序就是执行时的顺序. 用 N--S 图表示的算法都是结构化的算法,因为它不可能出现流程无规律的跳转,而只能自 上而下地顺序执行. 伪代码表示算法 概念:伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法. 特点:它如同一篇文章一样 ,自上而下地写下来.每一行(或几行)表示一个基本操作.它 不用图形符号, 因此书写方便 , 格式紧凑, 也比较好懂, 也便于向计算机语言算法(即程序) 过渡.
. o: m' v- e6 q; i/ U- Z, U8 o* b+ P ! H$ s: q5 r4 X F! M) D

用处:适用于设计过程中需要反复修改时的流程描述. 例 1.1 输出 50 个学生中成绩高于 80 分者的学号和成绩. 用伪代码表示算法

1. 2.

BEGIN{算法开始} 1 g i

3. 4. 5. 6. 7. 8. 9. 10. 11.

while i≤50 { input and i+1 g i } 1 g i while i≤50 {if ≥80 print and END{算法结束} i+1 g i}

复制代码

计算机语言表示算法 概念:用计算机实现算法.计算机是无法识别流程图和伪代码的.只有用计算机语言编写的 程序才能被计算机执行. 因此在用流程图或伪代码描述出一个算法后, 还要将它转换成计算 机语言程序. 特点: 用计算机语言表示算法必须严格遵循所用的语言的语法规则, 这是和伪代码不同的.
T& Z0 e) q ! ?$ W*

用处:要完成一件工作,包括设计算法和实现算法两个部分.设计算法的目的是为了实现算 法. 例 1.2 求 5!用 C 语言表示.

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.

#include <stdio.h> void main( ) { int i,t; t=1; i=2; while(i<=5) { t=t*i; i=i+1; } printf("%d\n",t); }

复制代码

应当强调说明:写出了 C 程序,仍然只是描述了算法,并未实现算法.只有运行程序才是实 现算法.应该说,用计算机语言表示的算法是计算机能够执行的算法. 结构化程序设计方法 一个结构化程序 就是用高级语言表示的结构化算法.用三种基本结构组成的程序必然是结 构化的程序,这种程序便于编写,便于阅读,便于修改和维护. 结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构. 结构化程序设计方法的基本思路是:把一个复杂问题的求解过程 分阶段进行,每个阶段处 理的问题都控制在人们容易理解和处理的范围内. 采取以下方法来保证得到结构化的程序: 自顶向下; 逐步细化; 模块化设计; 结构化编码. 两种不同的方法: 自顶向下,逐步细化; 自下而上,逐步积累 用这种方法逐步分解, 直到作者认为可以直接将各小段表达为文字语句为止. 这种方法就叫 做"自顶向下,逐步细化". 自顶向下,逐步细化方法的优点: 考虑周全,结构清晰,层次分明,作者容易写,读者容易看.如果发现某一部分中有一 段内容不妥,需要修改,只需找出该部分修改有关段落即可,与其它部分无关.我们提倡用 这种方法设计程序.这就是用工程的方法设计程序. 模块设计的方法: 模块化设计的思想实际上是一种"分而治之"的思想, 把一个大任务分为若干个子任务, 每 一个子任务就相对简单了. 在拿到一个程序模块以后, 根据程序模块的功能将它划分为若干个子模块, 如果这些子模块 的规模还嫌大,还再可以划分为更小的模块.这个过程采用自顶向下方法来实现. 子模块一般不超过 50 行 划分子模块时应注意模块的独立性,即:使一个模块完成一项功能,耦合性愈少愈好. 作 业: 1.用 N-S 流程图表示下题 (1)依次输入 10 个数,要求将其中最大的数输出. (2)有 3 个数,a,b,c,要求按大小顺序把他们输出. (3)求 1+2+3+…+100. 2.用伪代码表示 1 题目中的(3) 3.什么叫结构化程序设计,他的主要内容是什么? 4.用自顶向下,逐步细化方法进行 1 题中的(1)(2)算法的设计
0 I j- f0 I - G6 ~ 8 M/ s$ D% l2 ?3 N: } * F& h. C) K* n3 w. G ; O" }# G) D' G0 r5 f % D0 \% Z( z+ R6 S6 `: ] " t% }( ]8 H& Y % ~- V1 w- h- U( O7 D+ ^- {: J 1 J% N5 u5 j 2 b- x 7 [2 q - r" o5 v * [9 u9 ]6 M+ {2 `' T $ j- k/ s0 A9 ^- h6 x , a8 R/ h. [ 8 P+ i 7 ^

相关文章:
C语言一日一学第4课——最简单的C程序设计---顺序程序...
C语言一日一学第4课——最简单的C程序设计---顺序程序设计(2) C语言一日一学C语言一日一学隐藏>> 1.4 字符数据的输入输出 (一).字符输出函数 9 T6 T#...
C语言一日一学第6课——循环控制(2)
C语言一日一学第6课——循环控制(2) C语言一日一学C语言一日一学隐藏>> ...y$ f- P% A0 q ' g: N-S 结构化流程图表示算法 9 R% R7 c$ m. ...
数据结构(C语言版)(第2版)课后习题答案
数据结构(C语言版)(第2版)课后习题答案_计算机软件...( 2 )线性结构 数据元素之间存在一对一的关系。...( 5 )算法的时间复杂度取决于( A .问题的规模 ...
C语言一日一学第11课——结构体与共用体(2)
[课程]C 语言一日一学第 11 课——结构体与共用体(2) 11.7 用指针处理链表...算法如图 算法的实现: 我们约定学号不会为零,如果输入的学号为0,则表示建立...
c语言学习02
2财富值 C程序语言学习第02章_算法 暂无评价 63页...日 步骤 2:将步骤 1 得到的乘积 2 乘以 3,得到...润年的条件: 1) 2) 能被 4 整除,但不能被 ...
C语言程序设计2教学大纲
还应当具 有一定的算法设计能力、基本数据结构应用能力、自顶向下、逐步求精地...2 学时实验课 第二C 语言程序的组织结构 2+2 学时 主要内容: 1.单个...
c语言课件2
百度文库 教育专区 高等教育 工学上传文档...11页 2财富值 c语言课件 第5章(2) 31页 免费 ...2 程序的灵魂—算法 2.1 算法的概念 2.2 简单算法...
程序设计基础——基于C语言(第2版) 课后习题参考答案
程序设计基础——基于C语言(第2版) 课后习题参考...(2)计算机程序:用计算机语言所编写的一系列指令的...算法思想:输入三个数 a、b、c,首先比较 a 和 b...
谭浩强c语言word版第2章
润年的条件: 1) 2) 能被 4 整除,但不能被 100 整除的年份; 能被 100 ...则算法可表示如下: S1: 2000→y 第2C 语言教程讲义 S2:若 y 不能被...
第一、二章 C语言概述与算法
第一、C语言概述与算法_理学_高等教育_教育专区。第一、C 语言概述与算法 一、单选题 1. 一个算法应该具有“确定性”等五个特性,下面对另外 4 ...
更多相关标签: