语言《序设计 第2章程序的灵魂一算法 任课老师:彭金莲
第2章 程序的灵魂—算法 任课老师:彭金莲
本章要求 令算法的概念, 令算法的特性, 算法的表示方法:流程图,伪代码,计算机语 言,程序设计方法 程序设计方法。 上一页下一页 返回
上一页 下一页 返回 第2章 程序的灵魂—算法 计算机系彭金莲制作 本章要求 ❖ 算法的概念, ❖ 算法的特性, ❖ 算法的表示方法:流程图 ,伪代码 ,计算机语 言 ,程序设计方法。 ❖ 程序设计方法
第2章程序的灵魂一算法 令2.1算法的概念 2.2算法的举例 令2.3算法的特性 令2.4怎样表示一个算法 2.5结构化程序设计方法 上一页下一页 返回
上一页 下一页 返回 第2章 程序的灵魂—算法 计算机系彭金莲制作 第2章 程序的灵魂—算法 ❖ 2.1 算法的概念 ❖ 2.2 算法的举例 ❖ 2.3 算法的特性 ❖ 2.4 怎样表示一个算法 ❖ 2. 5 结构化程序设计方法
一个程序应包括以下两方面内容: (1)对数据的描述。在程序中要指 定数据的类型和数据的组织形式,即数 据结构( data structure) (2)对操作的描述。即操作步骤, 也就是算法( algorithnl) 数据是操作的对象,操作的目的是 对数据进行加工处理,以得到期望的结 果 上一页下一页 返回
上一页 下一页 返回 第2章 程序的灵魂—算法 计算机系彭金莲制作 ❖ (1)对数据的描述。在程序中要指 定数据的类型和数据的组织形式,即数 据结构(data structure)。 ❖ (2)对操作的描述。即操作步骤, 也就是算法(algorithnl)。 ❖ 数据是操作的对象,操作的目的是 对数据进行加工处理,以得到期望的结 果。 一个程序应包括以下两方面内容:
程序 数据结构十算法一程序 令程序=算法十数据结构十程序设计方法个语言 工具和环境 也就是说,以上4个方面是一个程序设计人员所应 具备的知识。 在这4个方面中,算法是灵魂,数据结构是加工对 象,语言是工具,编程需要采用合适的方法。算 法是解决“做什么”和“怎么做”的问题。程序 中的操作语句,实际上就是算法的体现 令我们的目的是使读者通过学习本书,能够知道 怎样编写一个C程序,并且能够编写出不太复 杂的C程序。 上一页下一页 返回
上一页 下一页 返回 第2章 程序的灵魂—算法 计算机系彭金莲制作 程序 ❖ 数据结构十算法一程序 ❖ 程序=算法十数据结构十程序设计方法个语言 工具和环境 ❖ 也就是说,以上4个方面是一个程序设计人员所应 具备的知识。 ❖ 在这4个方面中,算法是灵魂,数据结构是加工对 象,语言是工具,编程需要采用合适的方法。算 法是解决 “做什么” 和“怎么做”的问题。程序 中的操作语句,实际上就是算法的体现。 ❖ 我们的目的是使读者通过学习本书,能够知道 怎样编写一个C程序,并且能够编写出不太复 杂的C程序
2.1算法的概念 ☆做任何事情都有一定的步骤。这些步骤都是按 定的顺序进行的,缺一不可,次序错了也不行 令对同一个问题,可以有不同的解题方法和步骤 令例如,求1+2+3+..+100 令计算机算法可分为两大类别: ◆数值运算算法:数值运算的目的是求数值解,例如 求方程的根,求一个函数的定积分等,都属于数值 运算范围 令非数值运算算法。最常见的是用于事务管理领域, 例如图书检索、人事管理、行车调度管理等。 上一页下一页 返回
上一页 下一页 返回 第2章 程序的灵魂—算法 计算机系彭金莲制作 2.1 算法的概念 ❖ 做任何事情都有一定的步骤。这些步骤都是按一 定的顺序进行的,缺一不可,次序错了也不行。 ❖ 对同一个问题,可以有不同的解题方法和步骤。 ❖ 例如,求1+2+3+…+100 ❖ 计算机算法可分为两大类别: ❖ 数值运算算法:数值运算的目的是求数值解,例如 求方程的根,求一个函数的定积分等,都属于数值 运算范围。 ❖ 非数值运算算法。最常见的是用于事务管理领域, 例如图书检索、人事管理、行车调度管理等
2.2算法的举例 例2.1求1*2*3*4*5 可以用最原始的方法进行。 步骤1:先求1*2,得到结果2 步骤2:将步骤1得到的乘积2再乘以3,得到结果6 步骤3:将6再乘以4,得24 步骤4:将以再乘以5,得120。这就是最后的结果 令这样的算法虽然是正确的,但大繁琐。如果要求 1*2**1000,则要写999个步骤,显然是不可 取的。 上一页下一页 返回
上一页 下一页 返回 第2章 程序的灵魂—算法 计算机系彭金莲制作 2.2 算法的举例 ❖ 例 2.1 求1*2*3*4*5 ❖ 可以用最原始的方法进行。 ❖ 步骤1:先求1*2,得到结果2 ❖ 步骤 2:将步骤 1得到的乘积 2再乘以 3,得到结果 6。 ❖ 步骤3:将6再乘以4,得24。 ❖ 步骤4:将以再乘以5,得120。这就是最后的结果。 ❖ 这样的算法虽然是正确的,但大繁琐。如果要求 l* 2*… * 1000,则要写 999个步骤,显然是不可 取的
一种通用的表示方法 令可以设两个变量,一个变量代表被乘数,一个变量 代表乘数。不另设变量存放乘积结果,而直接将每 步骤的乘积放在被乘数变量中 令设p为被乘数,i为乘数。用循环算法来求结果。可 以将算法改写如下: & SI ● 使使使 p 1 S3:使p*i, 乘积仍放在变量P中,表示为 米 >p 令S4:使i的值加1,即i+1>i S5:如果i不大于5,返回重新执行步骤S3以及其后 的步骤S4和S5;否则,算法结束。最后得到P的值 就是5!的值。 上一页下一页 返回
上一页 下一页 返回 第2章 程序的灵魂—算法 计算机系彭金莲制作 一种通用的表示方法 ❖ 可以设两个变量,一个变量代表被乘数,一个变量 代表乘数。不另设变量存放乘积结果,而直接将每 一步骤的乘积放在被乘数变量中。 ❖ 设p为被乘数,i为乘数。用循环算法来求结果。可 以将算法改写如下: ❖ S1:使 p=1 ❖ S2:使 i=2 ❖ S3:使 p * i,乘积仍放在变量 P中,表示为 p * i=>p ❖ S4:使 i的值加 l,即 i+l>i ❖ S5:如果i不大于5,返回重新执行步骤S3以及其后 的步骤S4和S5;否则,算法结束。最后得到P的值 就是5!的值
F求1米3米5米7米9*11 算法只需作很少的改动即可: ☆S1 S2:i3 P-p 今S4:i=i+2 S5:若<11,返回S3: 否则,结束。 算法具有通用性、灵活性。S3到S5组成一个循环,在实 现算法时,要反复多次执行S3S4S5等步骤,直到某一时 刻,执行S5步骤时经过判断,乘数i超过规定的数值而 不返回S3步骤为止。此时算法结束,变量P的值就是所求 结果 上一页下一页 返回
上一页 下一页 返回 第2章 程序的灵魂—算法 计算机系彭金莲制作 求1*3*5*7*9*11 ❖ 算法只需作很少的改动即可: ❖ S1:p=1 ❖ S2:i=3 ❖ S3:p=p * i ❖ S4:i=i + 2 ❖ S5:若i<11,返回S3; 否则,结束。 ❖ 算法具有通用性、灵活性。S3到S5组成一个循环,在实 现算法时,要反复多次执行S3,S4,S5等步骤,直到某一时 刻,执行S5步骤时经过判断,乘数i已超过规定的数值而 不返回S3步骤为止。此时算法结束,变量P的值就是所求 结果
例2.2 有50个学生,要求将他们之中成绩在80分以上者 打印出来。用n表示学生学号,n1代表第一个学生 学号,n代表第个学生学号。用g代表学生成绩, g代表第i个学生成绩,算法可表示如下 S1:i=1 S2:如果g=80,则打印和g,否则不打印 S3: j=i+l 令S4:如果i<=50,返回S2,继续执行; 否则,算法结束 上一页下一页 返回
上一页 下一页 返回 第2章 程序的灵魂—算法 计算机系彭金莲制作 例 2.2 ❖ 有50个学生,要求将他们之中成绩在80分以上者 打印出来。用n表示学生学号,n1代表第一个学生 学号,ni代表第i个学生学号。用g代表学生成绩, gi代表第i个学生成绩,算法可表示如下。 ❖ S1: i=1 ❖ S2:如果gi >=80,则打印ni和gi,否则不打印 ❖ S3: i=i+l ❖ S4:如果 i<=50,返回 S2,继续执行; 否则,算法结束