课件40张PPT。第一章 如何用计算机解决问题 第一节 计算机解决问题的过程什么是程序计算机的任何动作都是在执行人给它的指令。人们针对某一需要而为计算机编制的指令序列称为程序
程序设计就是寻求解决问题的方法,并将其实现步骤编写成计算机可以执行的程序的过程。用于书写计算机程序的语言称为程序设计语言。
如vb、c、c++、pascal等
什么是程序设计语言Basic:
beginner’s all-purpose symbolic
instruction code
(初学者通用符号指令代码)
Visual basic:可视化编程软件。
带有面向对象的程序设计的初级思想。
程序设计语言产生与发展过程 书P11
程序设计语言发展经历了机器语言、汇编语言和高级语言的过程。 机器语言是用“0”和“1”二进制代码表示的计算机能直接识别和执行的一种机器指令的集合
汇编语言(符号语言)是用一些简洁的英文字母、符号串来替代一个特定的指令中的二进制串
高级语言:接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用 。例如:vb、pascal 、c 、c++等新课引入----韩信点兵(书P4实践2) 韩信是我国西汉初著名的军事家。韩信点兵,多多益善,不仅如此,还能经常以少胜多,以弱胜强。在与楚军决战时韩信指挥诸侯联军,在垓下十面埋伏,击败楚军,楚霸王项羽因此自杀。 韩信说:“如果每3个人编为一队,那最后剩下1个人;如果每5个人编为一队,那最后剩下2个人;如果每7个人编为一队,最后剩下4个人。请大家算一下,有多少士兵?”(假设士兵总数不超过100人)他的这种巧妙算法,人们称为“鬼谷算”、 “隔墙算”、“秦王暗点兵”等。 “韩信点兵”问题1:求除3余1、除5余2、除7余4的最小自然数。 我们可以利用已学过的数学知识找出题目已知什么、求什么,明确已知和未知之间的关系,写出求解问题的解题步骤。分析探究:分析问题和解题步骤 算法:解决问题的方法与步骤。每一步都必须是确定的、能行的、不能有二义性。穷举法就是通过把需要解决问题的所有可能情况逐一试验来找出符合条件的解的方法 ,是效率最低的一种算法,优点是思路简单,编程容易。 ——算法1:穷举法求解用计算机实现解决问题的过程 上机调试:启动Visual Basic程序设计环境,输入程序代码,并调试运行。 士兵数:67拓展“韩信点兵”问题2:求除3余1、除5余2、除7余4、除13余6、除17余8的最小自然数。 尝试调试:分析上述问题并写出算法, 修改程序,调试运行,检测结果。士兵数:18232算法2—最小公倍数法求解在《孙子算经》中也有记载:“今有物不知其数:三三数之余二,五五数之余三,七七数之余二,问物几何?”
明代,数学家程大位把这个问题的算法编成了四句歌诀: 三人同行七十稀,五树梅花廿一枝;七子团圆正半月,除百零五便得知
用现在的话来说就是:一个数用3除,除得的余数乘70;用5除,除得的余数乘21;用7除,除得的余数乘15。最后把这些乘积加起来再减去105的倍数,就知道这个数是多少。 “韩信点兵”问题3:求除3余2、除5余3、除7余2的最小自然数。 被5、7整除,而被3除余1的最小正整数是70;被3、7整除,而被5除余1的最小正整数是21;被3、5整除,而被7除余1的最小正整数是15。
所以,这三个数的和是70×2+21×3+15×2,必然具有被3除余2,被5除余3,被7除余2的性质。但所得结果233(30+63+140=233)不一定是满足上述性质的最小正整数,故从它中减去3、5、7的最小公倍数105的若干倍,直至差小于105为止。这里我们算得的结果是……算法2的正确性分析 「孙子算经」中的问题:「今有物,不知其数,三三数之,剩二,五五数之,剩三,七七数之,剩二,问物几何?」 答曰:「二十三」 术曰:「三三数之剩二,置一百四十,五五数之剩三,置六十三,七七数之剩二,置三十,并之,得二百三十三,以二百一十减之,即得。凡三三数之剩一,则置七十,五五数之剩一,则置二十一,七七数之剩一,则置十五,即得。」 从南北朝时期的《孙子算经》到南宋的秦九韶《数书九章》对一次同余式问题的研究成果,在19世纪中期开始受到西方数学界的重视。1852年,英国传教士伟烈亚力向欧洲介绍了《孙子算经》的“物不知数”题和秦九韶的“大衍求一术”;1876年,德国人马蒂生指出,中国的这一解法与西方18世纪高斯《算术探究》中关于一次同余式组的解法完全一致。从此,中国古代数学的这一创造逐渐受到世界学者的瞩目,并在西方数学史著作中正式被称为“中国剩余定理”。 韩信点兵人工解题与计算机解题的异同点用计算机程序解决问题的基本过程 书P3图1-2
设计算法分析问题编写程序调试程序检测结果这里,我们主要想向同学们说明两个问题:
1.我们为什么要用计算机程序来解决问题;
2.我们如何利用计算机程序解决问题。
同学们是否已经有了答案了呢?计算机解决任何问题都要依赖于算法,只有将解决问题的过程分解成若干个明确的步骤,并用计算机能够接受的语言准确地描述出来,计算机才能解决问题。本节课堂练习利用计算机解决问题的一般步骤是( )①调试运行程序 ②分析问题 ③设计算法 ④问题解决 ⑤编写程序A、①②③④⑤???? B、②④③⑤①????
C、④②③⑤①???? D、②③⑤①④?
下列选项都是属于高级语言的是(? )
A、汇编语言 机器语言? ?
B、Basic语言 Pascal语言???
C、汇编语言 Basic语言???
D、机器语言 Pascal语言(? )是计算机能直接识别,理解执行的语言
A、汇编语言??? B、Pascal语言?
C、Basic语言?? D、机器语言
??以下说法正确的是( )?
A、编译型语言和解释型语言都是属于高级语言
B、低级语言都能够被计算机直接识别执行
C、汇编语言编写的代码能够移植到任何计算机上执行
D、QBasic和Visual Basic都是属于解释型语言本节课堂练习第一章 如何用计算机解决问题第二节 算法描述与设计想清楚计算机是怎样工作的,算法的学习是必须的,算法的研究与发展又能使得我们写出更有效率的程序,使得计算机能更好地解决问题。
算法不仅是数学及其应用的重要组成部分,也是计算机科学的重要基础。
希望同学们能够通过学习算法的过程,体会算法的基本思想,发展有条理的思考与表达能力,进而提高逻辑思维能力。
一、算法的发现世界上最早的算法(P5)
在数学领域,算法一词第一次出现在12世纪,指的是用阿拉伯数字进行算术运算的过程。
在计算机科学领域,“算法是程序设计的灵魂”这一说法,是尼克劳斯.沃斯(N.Writh)提出的,他指出:算法+数据结构=程序。
(即算法不能单独构成程序,它必须和数据结构合二为一)
算法独立于任何具体的程序设计语言,一个算法可以用多种程序设计语言来实现。1. “韩信点兵问题”中不同的求解过程,体现了不同的算法。数学中还有许多经典的算法,都可以为我们提供解决问题的途径。
2.算法不仅仅用来解决数字计算的问题,算法还存在于人们生活中,如:上街购物、顾客付款、营业员找银等。
二、算法是“灵魂” 3. 为了能更好地理解什么是算法,我们利用日常生活中的“打电话” 的例子来讨论。“打电话” 的过程:拿
起
电
话拨
号打不通通了把电话放下通话结束把电话放下等会儿再拨无人接听把电话放下等会儿再拨可见,计算机在解决问题的过程中
需要用到的算法,不但要解决数字
计算的问题,还要对各种情况进行
判断,对人机交互进行处理。
本学科中算法的概念:解决问题的方法和步骤就是算法。三、算法—解决问题的方法和步骤。 算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是推理实现的算法,后者是操作实现的算法。
我们用一个数学计算的例子来具体分析算法的特点。
(书P6) 例:计算1+2+3+……+100=?
分析:计算这道题目的算法有限制范围,可以在有限时间内完成,这是算法的第一个特征:有穷性。计算时可以用纸笔、算盘、运算器和计算机来完成,且计算过程是多样的,但结果是唯一的。这就是算法的可行性、确定性。
计算方法:
⑴把这100个数按顺序相加。
⑵用凑数法:1+99=100,2+98=100,3+97=100,……,49+51,最后只剩下50和100。
⑶计算机计算法:迭代法
算法的另外两个特征:输入、输出。
随时可以将程序改变:N个连续数相加,N个奇数或偶数相加等……小结:算法的特征 算法要有一个清晰的起始步,表示处理问题的起点,且每一个步骤只能有一个确定的后继步骤(1算法的确定性),从而组成一个步骤的有限序列(2算法的有穷性);要有一个终止步(序列的终止)表示问题得到解决或不能得到解决;每条规则必须是确定的、可行的(3算法的可行性)、不能存在二义性。算法总是对数据进行加工处理,因此,算法的执行过程中通常要有数据4输入(0个或多个)和数据5输出(至少一个)的步骤。
算法可以用多种方法来描述 第一章 如何用计算机解决问题第二节 算法描述与设计1、用自然语言来描述。(书P6-7)什么是自然语言。即用人们日常使用的语言和数学语言描述的算法
算法描述:以“韩信点兵问题”
为例:课外思考-----书P7实践:加密后的字符串是什么?
若改为k=2,则加密后的字符串是……
自然语言的优点:通俗易懂。
缺点:容易产生歧义。
例如:“这个人连老张也不认识”。 意思之一:这个人不认识老张。
意思之二:老张不认识这个人。
2、用流程图来描述。什么是流程图?
(也称程序框图)它是算法的一种图形化表示方法。
认识流程图符号流程图练习:
输入两个正整数a和b,输出其中较大的数。
流程图的特点:与自然语言相比,用流程图描述算法形象、直观,更容易理解。1)用伪代码描述“韩信点兵问题”的算法For I=1 to N
if n能被3、5、7整除余数为2、3、2 then
输出n
end if
Next I3、用伪代码描述算法。2)例如,判断一个四位数的年份是否为闰年。
算法分析:
我们知道,如果2月是28天,则这一年是平年;如果是29天,则这一年是闰年。判断闰年的条件是:如果该年份能被4整除但不能被100整除,或者能被400整除,则该年为闰年。
算法描述(伪代码):
输入年份→y
IF y能被4整除 and y不能被100整除 THEN
输出“是闰年”
ELSE
IF y 能被400整除 THEN
输出“是闰年”
ELSE
输出“不是闰年”
END IF
END IF使用伪代码描述算法没有严格的语法限制,书写格式也比较自由,只要把意思表达清楚就可以了,它更侧重于对算法本身的描述。
在伪代码描述中,表示关键词的语句一般用英文单词,其他语句可以用英文语句,也可以用汉语语句。伪代码的优缺点(书P9):用伪代码描述的算法简洁、易懂,修改起来也比较容易,并且很容易转化为程序语言代码。
缺点是不够直观。 练习:说出下面流程图的各框名称开始框输入框处理框判断框处理框处理框处理框输出框结束框如果两个数有最大公约数A,那么这两个数,以及这两个数的差,还有大数除以小数的余数,必然都是A的倍数。 所以当最后两个数刚好能整除时,较小的数就是最大公约数。 这个流程图描述的是数学史上
很古老的一个算法,你知道吗?
1)什么是算法?解决问题的方法和步骤就是算法
本节小结 :
2)算法描述的方法有三种。用自然语言来描述
用流程图来描述
(熟记流程图符号并能够熟练绘制流程图)
用伪代码描述算法 本节小结 :