C语言程序设计教案 第二章程序的灵魂
C语言程序设计 第2章 算法---程序的灵魂
2.1 算法概述 算法概述 2.2 简单的算法举例 2.3 算法的特性 2.4 怎样表示一个算法 2.5 结构化程序设计方法
2.1 算法概述 算法概述
一个程序主要包括以下两方面的信息: 一个程序主要包括以下两方面的信息:
(1) 对数据的描述。在程序中要指定用到哪些 对数据的描述。在程序中要指定用到哪 数据以及这些数据的类型和数据的组织形式 这就是数据结构(data structure) 这就是数据结构 (2) 对操作的描述。即要求计算机进行操作的 对操作的描述。 步骤 也就是算法(algorithm) 也就是算法
S1:sign=1 : S2:sum=1 : -1 S3: S3:deno=2 S4:sign=(-1)*sign -1/2 : S5:term=sign*(1/deno) 1-1/2 : S6:sum=sum+term : 3 满足,返回S4 满足,返回 S7:deno=deno+1 : S8:若deno≤100返回 ;否则算法结束 返回S4; : 返回 sign—当前项符号 当前项符号 term—当前项的值 当前项的值 sum—当前各项的和 当前各项的和 deno—当前项分母 当前项分母
2.1 算法概述 算法概述
数据是操作的对象 操作的目的是对数据进行加工处理, 操作的目的是对数据进行加工处理,以 得到期望的结果 著名计算机科学家沃思(Nikiklaus 著名计算机科学家沃思 Wirth)提出一个公式: 提出一个公式: 提出一个公式 算法 + 数据结构 = 程序
2.1 算法概述 算法概述
个学生, 例2.2 有50个学生,要求将成绩在 分 个学生 要求将成绩在80分 以上的学生的学号和成绩输出。 以上的学生的学号和成绩输出。
C程序设计第三版(谭浩强) 第二章 程序的灵魂-算法
2.4.6 用计算机语言代码表示算法
A
图 2.25 分支结构
当P1成立 A
A 直到p1成立
图 2.26 当型循环
图 2.27 直到型循环
A 成立 B 图 2.24
p ≥100 不成立 A r =0.06 r =0.08 当n ≤10 B p×(1+r) => p × 图 2.28 A本身是一个分支结构,B是一个循环结构 本身是一个分支结构, 是一个循环结构 本身是一个分支结构
2.2简单算法举例
例2.1 求1×2 ×3 ×4 ×5 ×
算法: 算法: s1: p=1; s1:使p=1; i=2; s2: 使i=2; 乘积放在变量p 表示p=p s3: 使p ×i ,乘积放在变量p中,表示p=p × i; 的值加1 s4: 使i的值加1,即i+1 i; s5: 如果不大于5,返回重新执行步骤s3和s5;否则算法 如果不大于5 返回重新执行步骤s3和s5;否则算法 s3 结束。 结束。 p=5
x= 0 x = x+1 打印x 打印 x≥5 Y 图 2.19 N
以上2个框图的 作用是打印5个 数
只有一个入口; 只有一个入口; 只有一个出口; 只有一个出口; 注意:菱形框有2个出口, 注意:菱形框有2个出口,选择结构的 出口只有一个; 出口只有一个; 结构内的每一部分都有机会被执行到; 结构内的每一部分都有机会被执行到; 结构内不存在“死循环” 结构内不存在“死循环”;
题目: 题目:1×3 ×5 ×7 ×9 ×11 算法: 算法: s1:1 p s2:3 i s3:p× s3:p× i p s4:i+2 i s5:若i≤11,返回s3;否则,结束。 返回s3 s5:若i≤11,返回s3;否则,结束。 s5:若i<11,返回 返回s3? 结果会怎样? s5:若i<11,返回s3? 结果会怎样?
第2章 程序的灵魂——算法
教材认为:
程序 =算法+数据结构+程序设计方法+语言工具和环境
灵魂 加工对象 工具
<
>
C语言程序设计
第二章 程序的灵魂——算法
§2.1 算法的概念
为解决一个问题而采取的方法和步骤,就成 为算法。例如:歌曲的乐谱,建造房子等。 算法核心是解决“做什么”和“怎么做”的 问题。
P15页的例2.1,求1……5之积。 可以有多种方法,一般采用简单和运算步骤少 的。准确、高效
第二章 程序的灵魂——算法
§课后作业
P36页习题:
2.4、2.8(结合实验指导读懂答案) 用N-S图表示2.4题中⑴⑵⑹ 用传统流程图求解以下问题:将一个16进制数 转化为10进制数
复习二进制的基本概念
“计算机文化基础”一书中P27~33页
<
>
P 真 A
假
当P为真 A
直到型循环结构
A 假 P 真 A 直到P为真
注:A,B,A1….An可以是一个简单 语句,也可以是一个基本结构 < >
C语言程序设计
第二章 程序的灵魂——算法
三种基本结构的共同特点:
只有一个入口; 只有一个出口; 结构内的每一部分都有机会被执行到; 结构内不存在“死循环”。
三种基本结构
顺序结构
A A B N-S图
流程图
B
<
>
C语言程序设计
第二章 程序的灵魂——算法
选择结构 二分支选择结构
真
P
假 真 B A
P B
假
A
k k=k1 k=k2 k=kn k=ki ... Ai ... An
多分支选择结构
C语言程序设计(谭浩强版)第二章
不应是中断程序的执行,而应是返回一个
表示错误或错误性质的值,以便在更高的
抽象层次上进行处理。
算法设计的原则
4.高效率与低存储量需求
通常,效率指的是算法执行时间; 存储量指的是算法执行过程中所需 的最大存储空间, 两者都与问题的规模有关。
算法设计的原则
算法的时间复杂度
第二章 程序的灵魂——算法
2.1 算法的概念 2.2 算法的简单举例
2.3 算法的特性 2.4 怎样表示一个算法 2.5 结构化程序设计方法
算法的概念
计算机应用: 提取数学模型—设计算法— 编程—测试—应用
程序设计=数据结构+算法
数据结构:对数据的描述 算法:对操作的描述 除此之外程序设计还包括:程序设计方法, 和程序设计语言
怎样表示一个算法
例4的伪代码表示法如下 开始 读入整数n 置sum的初值为0 置k的初值为1 执行下面的操作: 如果k为奇数,置item=1/k 如果k为偶数,置item=-1/k sum=sum+item 直到k>n 打印sum的值 结束
算法设计的原则
算法设计的原则
设计算法时,通常应考虑达到以下目标: 1.正确性 2.可读性 3.健壮性 4.高效率与低存储量需求
从算法中选取一种对于所研究的问题 来说是 基本操作 的原操作,以该基 本操作 在算法中重复执行的次数 作 为算法运行时间的衡量准则。
结构化程序设计方法
采用结构化算法写成的计算机程序是结构 化程序。要编写出结构化程序,经常采用 的方法是结构化程序设计方法。这种方法 的基本思路是: 把给定的问题按层次(纵方向)、分阶段 (横方向)分解为一系列易于编程解决的 小问题,然后对应着这些分解的小问题, 设计结构化的算法,最后采用语言将算法 描述出来。这样一种程序设计方法就是结 构化程序设计方法。
C语言程序设计 第02章 程序的灵魂—算法
第2章 程序的灵魂—算法
2.4 算法的表示
N-S流程图 ❖ 1973年美国学者I.Nassi和B.Shneiderman提出的一种新的流程图 形式。 ❖ N-S流程图的特点 没有流程线 全部算法写在一个矩形框内,该框内还可包含其它从属于它 的框。 适于结构化程序设计。
-24-
第2章 程序的灵魂—算法
=100 + 50 + 49×100 = 5050
-4-
第2章 程序的灵魂—算法
2.1 算法的概念
计算机算法 即计算机能执行的算法。 ❖ 数值运算的算法 可由库函数实现,如求函数的定积分等。 ❖ 非数值运算的算法 如查找、排序,事务管理系统等。
-5-
第2章 程序的灵魂—算法
2.2 简单算法举例
例2.1 求1×2 ×3 ×4 ×5 设被乘数为T,乘数为I,乘积结果仍放在变量T中,作为下一个被乘数。 S1:使T = 1 S2:使I = 2 S3:使T ×I,可表示为:T ×I=>T。 S4:使I的值加1,即I+1=>I。 S5:如果I不大于5,返回重新执行S3,以及其后的步骤S4, S5;否则, 算法结束。
-3-
第2章 程序的灵魂—算法
2.1 算法的概念
广义算法 ❖ 算法是为解决一个问题而采取的方法和步骤。 ❖ 对同一个问题,可以有不同的解题方法和步骤。
例如:求1+2+3+…+100 方法1:先进行1+2,再加3,再加4,一直加到100。 方法2:100 + (1+99)+(2+98)+…+(49+51)+50
第2章 程序的灵魂—算法
2.4 算法的表示
c程序设计 第二章 程序的灵魂-算法
2.2 简单算法举例 例2.5 对一个大于或等于3的正整数,判断 它是不是一个素数 素数的含义:是指除了1和该数本身之外, 不能被其他任何整数整除的数。 判断一个数n(n≥3)是否是素数的方法: 将n作为被除数,将2到(n-1)各个整数先 后作为除数,如果都不能被整除,则n为素 数。
2.2 简单算法举例
算法可以表示如下: S1:输入n的值 S2:i=2(i作为除数) S3:n被i除,得余数r S4:如果r=0,表示n能被i整除,则输出n “不是素数”,算法结束;否则执行S5 S5:i+1→i S6:如果i≤n-1,返回S3;否则输出n “是素数”, 然后结束
2.2 简单算法举例
注:实际上,n不必被2到(n-1)的整数除,只需被2 到n/2间整数除即可,甚至只需被2到 n 之间的整数 除即可。例如,判断13是否素数,只需将13被2、3 除即可,如都除不尽,n必为素数。 这样,S6步骤可改为: S6:如果i≤ n ,返回S3;否则算法结束。
2.4.4 用N-S流程图表示算法
1、N-S流程图所用的 流程图符号 (1)顺序结构
A B
图2-24 (2)选择结构
成立 A P 不成立 B
图2-25
(3)循环结构
① 当型循环结构
当P1成立 A
图2-26 ② 直到型循环结构
A 直到P1成立
图2-27
说明: (1)可以用以上3种N-S流程图的基本框 组成复杂的流程框,以表示算法。 (2)从图2-24到2-27中的A框或B框, 可以是一个简单的操作,也可以是3 个基本结构
这样的方法虽然是正确的,但太繁琐。 将算法改写如下: S1:使p=1 S2:使i=2 S3:使p*i,乘积仍放在变量p中,可表示 为:p*i→p S4:使i的值加1,即i+1→i S5:如果i不大于5,返回重新执行步骤S3以 及其后的步骤S4和S5;否则,算法结束。 最后得到p的值就是5!的值。 显然,这个算法比前面列出的算法要简练。
第2章 程序的灵魂-算法(第1次课)
C语言程序设计
5
2.2 算法的表示方法
一、算法及其表示
(1) 自然语言描述
例1 有两个存储单元a和b,要求将它们的值互换。 分析:按存储器的性质,如果将单元a的值直接送到单元
b中,那么就会覆盖掉b原来的内容,因此,需要借助一 个临时单元c来交换。 具体算法如下: 步骤1: 将单元a的值送给单元c; 步骤2: 将单元b的值送给单元a; 步骤3: 将单元c的值送给单元b。
结束
是
C语言程序设计
9
2.2 算法的表示方法
一、算法及其表示
(3) N-S图(盒图)
针对流程图存在的缺点,I. Nassi和B. Shneiderman提出 了结构化程序设计的流程图,称为N-S图,更能体现结
构化程序设计的思想。推荐使用N-S图。 N-S图完全去掉了流程线,算法的所有处理步骤都写在 一个大矩形框内(表示简单、符合结构化思想)(象堆 积木)
输入a、b、c 是 a>b 否 amax bmax 是 c>max 否 cmax 空 输出max (g)
S2 S2.2
C语言程序设计
18
C语言程序设计
10
2.2 算法的表示方法
一、算法及其表示
(3) N-S图(盒图)
C语言程序设计
11
2.3 简单算法举例
Eg: 求1+2+3+4+…+10 ,写出其算法。 流程图描述: 自然语言描述: 步骤1: 将0送到 0 => s S中; 步骤2: 将1送到 1 => n n中; 步骤3: 把n的值 s+n => s 加到S中; 步骤4: n增1; n+1 => 步骤5: 若n≤10 n 则转回步骤3,否 n ≤ 10 则执行步骤6; 否 步骤6: 输出S的 输出 值。 s
C程序设计_2_程序的灵魂——算法
求1×3×5×7×9 ×11
可以看出, 可以看出,用这种方法表示的算法具有 通用性,灵活性. 到 组成一个循环, 通用性,灵活性.S3到S5 组成一个循环, 在实现算法时,要反复多次执行S3,S4, 在实现算法时,要反复多次执行 , , S5等步骤,直到某一时刻,执行S5步骤时 等步骤,直到某一时刻,执行 步骤时 等步骤 经过判断,乘数 已超过规定的数值而不返 经过判断,乘数i已超过规定的数值而不返 步骤为止. 回S3步骤为止. 步骤为止 计算机实现循环是轻而易举. 计算机实现循环是轻而易举.
例如: 例如:
不需要输入任何信息,就可以计算出 ! 个输入) 不需要输入任何信息,就可以计算出5!;(0个输入) 个输入 如果要计算两个整数的最大公约数,则需要输入2个整数 个整数m, . 如果要计算两个整数的最大公约数,则需要输入 个整数 ,n.(2个 个 输入) 输入)
个或多个输出( 有1个或多个输出(即算法必须得到结果) 个或多个输出 即算法必须得到结果)
2.4. 怎样表示一个算法? 怎样表示一个算法?
为了表示一个算法,可以用不同的方法. 为了表示一个算法,可以用不同的方法. 常用的算法表示方法: 常用的算法表示方法: 自然语言 自然语言 传统流程图 结构化流程图(N-S流程图) 结构化流程图( 流程图) 结构化流程图 流程图 伪代码 伪代码 PAD图等 图等
求1×3×5×7×9 ×11
请同学们仔细分析循环结束的条件, 请同学们仔细分析循环结束的条件,即S5 步骤,如果在求求1×3×5×7×9 ×11时, 步骤,如果在求求 × × × × 时 步骤写成: 将S5步骤写成: 步骤写成 S5:若i<11,返回 . : ,返回S3. 这样会有什么问题?会得到什么结果? 这样会有什么问题?会得到什么结果?
c语言程序设计第2章(谭浩强)
第2章程序的灵魂——算法1. 概念:为解决某一特定问题而采取的具体工作步骤和方法。
2. 举例◆计算1+2+3+……+100的值◆计算1×2×3×……×1000的值◆有50个学生,要求输出他们之中成绩在80分以上的学号和成绩◆判定2000-2500年中的每一年是否闰年3. 算法的表示(1) 自然语言(2) 流程图表示法(3) 伪代码表示法(4) 计算机语言表示法(2) 流程图表示法顺序结构、选择结构和循环结构流程图这三种基本结构有以下共同的特点:1. 只有一个入口;2. 只有一个出口;3. 结构中的每一部分都有被执行到的机会;4. 结构内没有死循环。
用上述基本结构的顺序组合可以表示任何复杂的算法结构,但是基本结构中的流程线使流程图显得较乱,于是1973年美国学者提出了一种新的流程图形式。
在这种流程图中,完全去掉了带箭头的流向线,全部算法写在一个矩形框内。
下面是三种控制结构的N-S图。
例1 求四个数的和算法一:在内存中设一累加用的存储单元S。
第1步:将存储单元S清零。
第2步:输入第1个数a1。
第3步:把a1加到存储单元S中。
第4步:输入第2个数a2。
第5步:把a2加到存储单元S中。
第6步:输入第3个数a3。
第7步:把a3加到存储单元S中。
第8步:输入第4个数a4。
第9步:把a4加到存储单元S中。
第10步:把存储单元S中的结果输出。
算法二:在内存中设一累加用的存储单元S和一计数用的单元I。
第1步:将累加单元S清零。
第2步:将计数单元I清零。
第3步:输入一个数A。
第4步:把A加到累加单元S中。
第5步:计数单元I的值增加1,即I+1=>I。
第6步:若I<4则转去执行第3步,否则,继续执行第7步。
第7步:输出存储单元S中的结果。
开始结束S+A=>S 0=>S 0=>I 输入A I+1=>I I<4输出S 0=>s0=>I输入A S+A=>S I+1=>I 直到I=4输出结果S N-S 图Y例2 求5!开始结束T*i=>t 1=>t 2=>i i+1=>i i>5输出S N例3 将50名学生中成绩在80分以上练习1:交换两个单元的内容。
C语言第2章 程序的灵魂——算法
则算法可表示如下: S1: 1→i S2: 如果gi≥80,则打印ni和gi,否则不打印 S3: i+1→i S4:若i≤50, 返回S2,否则,结束。
【例2.3】判定2000 — 2500年中的每一年是否闰年,将结果输出。 润年的条件: 能被4整除,但不能被100整除的年份; 能被100整除,又能被400整除的年份; 设y为被检测的年份,则算法可表示如下: S1: 2000→y S2:若y不能被4整除,则输出y“不是闰年”,然后转到S6 S3:若y能被4整除,不能被100整除,则输出y“是闰年”,然后转到S6 S4:若y能被100整除,又能被400整除,输出y“是闰年” 否则输出y“不是闰 年”,然后转到S6 S5:输出y“不是闰年”。 S6:y+1→y S7:当y≤2500时, 返回S2继续执行,否则,结束。
2.1 算法的概念
做任何事情都有一定的步骤。为解决一个问题而采取的方法和步骤,就称为算法。 计算机算法:计算机能够执行的算法。
计算机算法可分为两大类: 数值运算算法:求解数值; 非数值运算算法:事务管理领域。
2.2 简单算法举例
【例2.1】求1×2×3×4×5。 算法: S1: 使t=1 S2: 使i=2 S3: 使t×i, 乘积仍然放在在变量t中,可表示为t×i→t S4: 使i的值+1,即i+1→i S5: 如果i≤5, 返回重新执行步骤S3以及其后的S4和S5;否则,算法结束。 如果计算100!只需将S5:若i≤5改成i≤100即可。
2.4.3 三种基本结构和改进的流程图 顺序结构:
选择结构:
循环结构:
三种基本结构的共同特点: 只有一个入口; 只有一个出口; 结构内的每一部分都有机会被执行到; 结构内不存在“死循环”。
C程序设计0 L第2章 程序的灵魂
③不符合这两个条件的年份不是闰年。
• • • • • • •
设y 为被检测的年份。 可采取以下算法: S1:2000=>y S2: y不能被4整除,则输出y ―不是闰年”。然后 转到S6 S3:若y能被4整除,不能被100整除,则输出y ―是闰年”。然后转到S6 S4:若y能被100整除,又能被400整除,输出 y―是闰年”;否则输出“不是闰年”。 然后转到 S6 S5:输出y ―不是闰年” S6:y+1=>y S7:当y≤2500时,转S2继续执行,如y>2500, 算法停止。
• 自然语言 由自然界和人类社会的发展自然形成的语言。 主要是指人类进行交际和交流信息所使用的各种口 头的和书面语言。 特点 具有二义性(歧义性) 注意 在描述算法时需避免歧义性 附:程序设计语言 用于书写计算机可以执行的程序的语言,是形式语 言。
*用循环算法来求 5! 的结果:
可以设两个变量,一个变量p表示结果其初值为1(被 乘数),一个变量i代表乘数。不另设变量存放乘积结 果,而直接将每一步骤的乘积放在被乘数变量中。 S1: 使p=1 (p称为乘法器,其初值为1) S2: 使i=2 (生成乘数,生成正整数) S3: 使p×i,乘积仍放在变量p中,可表示为p×i=>p S4: 使i的值加1,即i+1 => i (i 同时也是控制变量) S5: 如果i不大于5,返回重新执行步骤S3以及其后的 步骤S4和S5;否则,算法结束。 最后得到p的值就是5!的值。 上面的S1,S2…代表步骤1,步骤2……S是step(步)的 缩写。这是写算法的习惯用法。
*例2.4 求1-1/2+1/3-1/4+…+1/99-1/100。
• • • • • • • • • • 算法可以表示如下:P20 S0:0 => sum (sum是加法器或累加器,初值为0。) S1:1=>sign S2:1=>sum S3:2=>deno S4:(-1)×sign=>sign S5:sign×(1/deno)=>term S6:sum+term=>sum S7:deno+1=>deno S8:若deno≤100返回S4;否则算法结束。
C语言程序设计教案 第二章程序的灵魂
第二章程序的灵魂-算法课题第二章程序的灵魂——算法教学目的1、了解算法的概念2、掌握结构化程序的三种基本结构,及算法的N-S图表示法教学重点教学难点怎样表示一个算法三种基本结构步骤一复习引导从C程序的构成到C程序的设计过程步骤二讲授新课一个程序包括以下两方面内容:1.对数据的描述。
在程序中要指定数据的类型和数据的组织形式,即数据结构;2.对操作的描述。
即算法,为解决一个问题而采取的方法和步骤。
3.著名计算机科学家Wirth提出一个公式:数据结构+算法=程序一、简单的算法举例例1:设有两个杯子A和B,分别盛放酒和醋,要求将它们互换。
S1:C ←AS2:A ←BS3:B ←C例2:从10个数中挑出最大数,并将之置入max。
S1:i=1, 令max等于第一个数;S2:i=i+1;S3:将max与第i 个数进行比较,若前者小于后者,将修正max为第i 个数;否则进行S4;S4:若i <10,则转到S2;否则输出max并结束。
例3:求1~100的和S1:sum←0,t←1;S2:sum←sum+tS3:t←t+1S4:若t <= 100,则转到S2,否则转到S5;S5:输出sum,结束。
例4:求n!S1:s ←1,t ←1;S2:s ←s * t;S3:t ←t+1;S4:若t <= n,则返S2,否则输出s并结束。
二、算法的特征有穷性;2.确定性;3.有零个或多个输入;4.有一个或多个输出;5.有效性;三、怎样表示一个算法1.用自然语言表示算法–通俗易懂,但易出现“歧义性”。
2.用流程图表示算法–直观形象,易于理解。
程序的三种基本结构:顺序结构、选择结构、循环结构3. 用N-S 流程图表示算法4. 用伪代码表示算法用计算机语言表示算法(即实现算法)四、结构化程序设计方法结构化程序设计方法强调:程序设计风格和程序结构的规范化,提倡清晰的结构。
–①自顶向下 –②逐步细化–③模块化设计 –④结构化编码步骤三 课堂小结1、 程序的三种基本结构:顺序、选择、循环2、 5种描述算法的方法,关键是N-S 图3、 灵活运用三种基本结构,学会结构化的程序设计方法步骤四 布置作业用N-S 图表示求解以下问题的算法:1、求8!2、将100~200之间的素数打印出来A B P T F A B。
第2章教案
教师:序号:2
授课时间
授课班级
上课地点
学习内容
第二章算法——程序的灵魂
课时
4
教学目标
专业能力
了解什么是算法;
了解算法的特性;
掌握表示算法的方法。
方法能力
学会如何用形象的方式表达出抽象的问题
社会能力
提高逻辑思维能力,锻炼理性思维
目标群体
普专
教学环境
多媒体教室
教学方法
理论教学与上机训练相结合,即学即练
著名计算机科学家沃思(Nikiklaus Wirth)提出一个公式:
算法+数据结构=程序
算法是解决“做什么”和“怎么做”的问题,程序中的操作语句,是算法的体现。
2.1什么是算法
广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”
对同一个问题,可以有不同的解题方法和步骤
为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法
计算机算法可分为两大类别:
数值运算算法
非数值运算算法
数值运算的目的是求数值解
非数值运算包括的面十分广泛,最常见的是用于事务管理领域
2.2算法的举例
例2.1求1×2×3×4×5×…×1000
可以用最原始的方法进行:
步骤1:先求1*2,得到结果2。
步骤2:将步骤1得到的乘积2再乘以3,得到结果6。
步骤3:将6再乘以4,得24。
步骤4:将24再乘以5,得120。这就是最后的结果。
改进的算法:
设变量p为被乘数
变量i为乘数
用循环算法求结果
第二节
2.3算法的特性
一个有效算法应该具有以下特点:
(1)有穷性。一个算法应包含有限的操作步骤,而不能是无限的。
C语言程序设计第2章算法---程序的灵魂
否
输出 是
year%400为0 否year闰年输出year 闰年
输出year 非闰年
输出
year 非闰年
2020/7/9
苏州大学计算机科学与技术学院
16
第2章 小结
➢关键知识点
算法: 了解和积累自己的算法知识 算法的描述形式
传统流程图: 掌握 N-S流程图: 掌握
2020/7/9
苏州大学计算机科学与技术学院
闰年” ,然后转到S6 S5: 其他情况输出year的值和“不是闰年” S6: 停止
2020/7/9
苏州大学计算机科学与技术学院
10
传统流程图
➢流程图是用一些图框来表示各种操作 ➢用图形表示算法,直观形象,易于理解
起止框 输入输出框 判断框 处理框
流程线
连接点
注释框
2020/7/9
苏州大学计算机科学与技术学院
➢算法的描述方法有:
自然语言 传统流程图 结构化流程图 伪代码 ……
2020/7/9
苏州大学计算机科学与技术学院
8
算法描述方法
➢问题:
判定2012年是否为闰年,并将结果输出
➢闰年的条件:
能被4整除,但不能被100整除的年份都是闰年 ,如2008、2012、2048年
能被400整除的年份是闰年,如2000年 不符合这两个条件的年份不是闰年
2020/7/9
苏州大学计算机科学与技术学院
9
算法的自然语言描述
➢ 算法的自然语言描述如下:
S1:2000year S2:若year不能被4整除,则输出year 的值和“不
是闰年”。然后转到S6 S3:若year能被4整除,不能被100整除,则输出
C语言程序设计 第2章 程序的灵魂--算法
第三讲
N-S流程图
C语言编程基础
N-S流程图用以下的流程图符号:
(1)顺序结构
(2)
(3)循环结构
C语言编程基础
N-S流程图与改进流程图对比:
C语言编程基础
N-S流程图与改进流程图对比:
C语言编程基础
例4 将例1的传统流程图改画为 N-S 流程图
C语言编程基础
例5 将例3的改进流程图改为N-S 流程图
第三讲 算法种类
C语言编程基础
算法的设计要求
正确性、 可读性、 健壮性、 效率与 低存储 量需求 ;
第二章 2.2 常量和变量
C语言编程基础
算法的描述
可以用不同的方法描述算法,常用的有: 自然语言—日常使用的语言(通俗易懂, 但文字冗长,容易出现“歧义性”) 流程图(传统的流程图、改进的流程 图、N-S流程图)
第三讲
流程图
C语言编程基础
三种基本结构和改进的流程图
1.传统流程图的弊端
传统流程图用流程线指出各框的执行顺序, 对流程线的使用没有严格限制。因此,使用者 可以毫不受限制地使流程随意地转向,使流程 图变得毫无规律,阅读者要花很大精力去追踪 流程,使人难以理解算法的逻辑。如图:
第三讲
流程图
缺点:难以阅读、修改,使算法的 传统流程图的流程可以是: 可靠性和可维护性难以保证。 解决办法:必须限制箭头的滥用, 即不允许无规律地使流程随意转向, 只能顺序地进行下去。
(2)确定性:算法的描述必须无歧义,以保证算法 的执行结果是确定的。 (3)有效性:又称可行性,每个步骤都能有效地执 行,并得到确定的结果 (4)输入:一个算法必须有零个或多个输入量 (5)输出:个算法应有一个或多个输出量
第三讲 算法的特性
C程序设计 第2章 算法——程序的灵魂
开始 1→sum 2→deno 1→sign (-1)*sign→sign
sign*(1/deno) →term
sun+term→sum deno+1→deno N deno>100 Y
1→sum 2→deno 1→sign (-1)*sign→sign sign*1/deno→term sum+term→sum deno+1→deno 直到deno>100 输出sum
N
i>50 Y 1→i
Y
输出ni、gi
gi≥80
N
N
i>50 Y 结束 N
i+1→i
i>50 Y 结束
1→i 1→i
是
gi≥80
否
输入ni、gi 1
输出ni和gi
i+1 →i 直到i>5
图2.30 N—S图
gi≥80
否
输出ni和gi
i+1 →i 直到i>5
六、例2.3 判定2000—2500年中的每 一年是否为闰年,并将结果输出
① year不能 被4整除 ③year被100 整除,又能 被400整除 闰年 非闰年
②year被4整除, 但不能被100整除 闰年
④其他 非闰年
开始 2000→year year不能被 4整除 Y
N
year不能被 100整除 Y 输出year “是闰年”
N
输出year “不是闰年” Y year不能被 400整除 N
输出sum
结束
用伪代码表示的算法: begin 1→sum 2→deno 1→sign while deno≤100 { (-1)*sign →sign sign*1/deno →term sum+term →sum deno+1 →deno } print sum end
谭浩强 C语言程序设计教程(由曾怡视频修改) 第2章 程序设计的灵魂-算法
什么是程序设计语言?
在程序设计过程中,用于编写程序的语言。
编写C语言程序的大体步骤:
问题定义 总体/详细设计 编程 运行
一个算法应当具有五大特性:
1、有穷性:算法包含的操作步骤有限 2、确定性:
算法每一步的操作步骤都是确定的,不能模棱两可
3、有零个或多个输入:
在执行算法时从外界取得必要的信息
4、有一个或多个输出:即算法的求解 5、有效性:算法中每一个步骤都应当能有效执行
…
…
2)选择 结构框图
若条件P成立,则执行A操作; 否则执行B操作。
成立 A操作
条件P
不成立
B操作
if ( x > y ) z=x; else z = y;
顺序结构
选择结构
3)循环 结构框图
当型(While型)循环结构
直到型(Until型)循环 结构
2、三种基本结构的共同特点:
单入口单出口 结构内的每一部分都有机会被执行 不存在“死循环” 3、结构化程序设计的优点:
累 试 法 枚 举 法
细化
细化
cocks=0 当cocks≤19时 {hens=0 当hens ≤33时 {chicks=100-cocks-hens; 如果( 5*cocks+3*hens+chicks/3=100)则输出; hens加1; } cocks加1 }
2)用计算机语言写出程序 /*文件名:ex020030*/ #include<stdio.h> int main(void) { int cocks,hens,chicks; cocks=0; while(cocks<=19) { hens=0; while(hens<=33) { chicks=100-cocks-hens; if(5*cocks+3*hens+chicks/3==100 ) printf("cocks=%d,hens=%d,chicks=%d\n",cocks,hens,chicks); hens++; } cocks++; } return 0; } 3)调试程序
L第2章 程序的灵魂
(3) 面向对象的语言 OOPL Object Oriented Programming Language 例如 SQL--- Structured Query Language VC--- Visual C
0.3 *程序设计方法 P32
程序设计 • 是针对具体任务,进行算法设计,编写 和调试(源)代码的过程。 • 用高级语言编写的程序称为“源程序” (source program)。
计算机算法分类 P14
• 计算机算法可分为两大类别: 数值算法和非数值算法。 • 数值运算的目的是求数值解 。 • 非数值运算包括的面十分广泛,最常见 的是用于数据处理(事务管理)领域。
评定算法的标准 P14
对于同一个问题,可以有不同的算法,算法有 优劣之分。 效率评定标准: 时间标准 一个算法所占用时间的多少。 空间标准 一个算法所占空间的多少。 一般说,希望采用所占时间少、空间少的算法。 结构评定标准: 结构清晰。
数据结构
• 是对计算机要处理的数据以及它们之间 关系的描述。
程序设计
• 是针对具体任务,进行算法设计,编写 和调试源代码(源程序)的过程。 • 程序=算法+数据结构 +程序设计方法+语言工具与环境
0.2 程序设计语言
• 是计算机能理解的,人们用来编写程序 的计算机语言。 • 与自然语言相对应,它属于形式语言。
• 用循环算法来求结果: P15 可以设两个变量,一个变量p代表被乘数,一个变 量i代表乘数。不另设变量存放乘积结果,而直接将 每一步骤的乘积放在被乘数变量中。 • • • • • S1: 使p=1 S2: 使i=2 S3: 使p×i,乘积仍放在变量p中,可表示为p×i=>p S4: 使i的值加1,即i+1 => i S5: 如果i不大于5,返回重新执行步骤S3以及其后的 步骤S4和S5;否则,算法结束。 最后得到p的值就是5!的值。 上面的S1,S2…代表步骤1,步骤2……S是step(步)的 缩写。这是写算法的习惯用法。
c程序设计第四版第2章算法程序的灵魂
➢ 设year为被检测的年份。算法表示如下: S1:2000year S2:若year不能被4整除,则输出year 的 值和“不是闰年”。然后转到S6 S3:若year能被4整除,不能被100整除, 则输出year的值和“是闰年”。然后转到S6 S4:若year能被400整除,则输出year的 值和“是闰年” ,然后转到S6 S5: 其他情况输出year的值和“不是闰年” S6:year+1year S7:当year≤2500时,转S2,否则停止
2若.2求简1×单3×的5×算7×法9×1举1 例
➢ S1:使p=1,或写成1p
➢ S2:使i=32,或写成23i
➢ S3:使p与i相乘,乘积仍放在变量p中,可表
示为:p*ip
相当于i ≦11
➢ S4:使i的值加12,即i+12 i
➢ S5:如果i不大于51,1 返回重新执行S3;否则
,算法结束
➢ 最后得到p的值就是151!的值
c程序设计第四版第2章算法程序的 灵魂
例2.3 判定2000—2500年中的每一年是 否闰年,并将结果输出。 ➢闰年的条件:
(1)能被4整除,但不能被100整除的年份都是 闰年,如2008、2012、2048年 (2)能被400整除的年份是闰年,如2000年 不符合这两个条件的年份不是闰年 例如2009、2100年
➢一个程序主要包括以下两方面的信息:
(1) 对数据的描述。在程序中要指定用到哪些 数据以及这些数据的类型和数据的组织形式
这就是数据结构(data structure) (2) 对操作的描述。即要求计算机进行操作的
步骤 也就是算法(algorithm)
c程序设计第四版第2章算法程序的 灵魂
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章程序的灵魂-算法课题第二章程序的灵魂——算法
教学目的1、了解算法的概念
2、掌握结构化程序的三种基本结构,及算法的N-S图表示法
教学重点教学难点怎样表示一个算法三种基本结构
步骤一复习引导从C程序的构成到C程序的设计过程
步骤二讲授新课
一个程序包括以下两方面内容:
1.对数据的描述。
在程序中要指定数据的类型和数据的组织形式,即数据结构;
2.对操作的描述。
即算法,为解决一个问题而采取的方法和步骤。
3.著名计算机科学家Wirth提出一个公式:数据结构+算法=程序
一、简单的算法举例例1:设有两个杯子A和B,分别盛放酒和醋,要求将它们互换。
S1:C ←A
S2:A ←B
S3:B ←C
例2:从10个数中挑出最大数,并将之置入max。
S1:i=1, 令max等于第一个数;
S2:i=i+1;
S3:将max与第i 个数进行比较,若前者小于后者,将修正max为第i 个数;否则进行S4;
S4:若i <10,则转到S2;否则输出max并结束。
例3:求1~100的和
S1:sum←0,t←1;
S2:sum←sum+t
S3:t←t+1
S4:若t <= 100,则转到S2,否则转到S5;
S5:输出sum,结束。
例4:求n!
S1:s ←1,t ←1;
S2:s ←s * t;
S3:t ←t+1;
S4:若t <= n,则返S2,否则输出s并结束。
二、算法的特征有穷性;
2.确定性;
3.有零个或多个输入;
4.有一个或多个输出;
5.有效性;
三、怎样表示一个算法
1.用自然语言表示算法–通俗易懂,但易出现“歧义性”。
2.用流程图表示算法–直观形象,易于理解。
程序的三种基本结构:顺序结构、选择结构、循环结构
3. 用N-S 流程图表示算法
4. 用伪代码表示算法用计算机语言表示算法(即实现算法)
四、结构化程序设计方法结构化程序设计方法强调:
程序设计风格和程序结构的规范化,
提倡清晰的结构。
–①自顶向下 –②逐步细化
–③模块化设计 –④结构化编码
步骤三 课堂小结
1、 程序的三种基本结构:顺序、选择、循环
2、 5种描述算法的方法,关键是N-S 图
3、 灵活运用三种基本结构,学会结构化的程序设计方法
步骤四 布置作业
用N-S 图表示求解以下问题的算法:
1、求8!
2、将100~200之间的素数打印出来
A B P T F A B。