第一章算法初步算法知识结构:基本概念算法基本结构表示方法应用自然语言程序框图基本算法语句顺序结构条件结构循环结构辗转相除法和更相减损数秦九韶算法进位制赋值语句条件语句循环语句输入、输出语句算法的定义:通常指可以用计算机来解决的某一类问题的程序或步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成。算法最重要的特征:1.有序性2.确定性3.有限性用程序框、流程线及文字说明来表示算法的图形称为程序框图,它使算法步骤显得直观、清晰、简明.终端框(起止框)输入、输出框处理框(执行框)判断框流程线○连接点二、程序框图程序框图又称流程图,是一种用规定的图形,指向线及文字说明来准确、直观地表示算法的图形。程序框名称功能终端框(起止框)表示一个算法的起始和结束输入、输出框表示算法的输入和输出的信息处理框(执行框)赋值、计算判断框判断一个条件是否成立,用“是”、“否”或“Y”、“N”标明二、程序框图1、顺序结构2、条件结构3、循环结构步骤n步骤n+1满足条件?步骤A步骤B是否满足条件?步骤A是否循环体满足条件?否是循环体满足条件?是否先做后判,否去循环先判后做,是去循环二、程序框图1、顺序结构设计一算法,求和1+2+3+…+100,并画出程序框图。算法:第一步:取n=100;第二步:计算;(1)2nn第三步:输出结果。开始结束输入n=100s=(n+1)n/2输出s二、程序框图2、条件结构算法:第一步:输入x;第二步:如果x≥0;则输出x;否则输出-x。设计一个算法,求数x的绝对值,并画出程序框图。YN结束x≥0输入x开始输出x输出-x算法分析:实数X的绝对值(0)(0)xxxxx二、程序框图3、循环结构AP是否否是AP(A)AP否是(C)是否AP(B)(D)直到型循环结构对应的程序框图是当型循环结构对应的程序框图是直到型循环结构当型循环结构AD设计一个计算1+2+3+……+100的值的算法,并画出程序框图。算法:第一步:令i=1,s=0;第二步:s=s+i第三步:i=i+1;第四步:直到i>100时,输出S,结束算法,否则返回第二步。程序框图如下:i100?i=1开始输出s结束是s=0i=i+1s=s+i否是循环体条件循环结构直到型循环结构设计一个计算1+2+3+……+100的值的算法,并画出程序框图。算法:第一步:令i=1,s=0;第二步:若i=100成立,则执行第三步;否则,输出s,结束算法;第三步:s=s+i;第四步:i=i+1,返回第二步。i=100?i=1开始输出s结束否是s=0i=i+1s=s+i当型循环结构程序框图如下:循环体条件是否语句一般格式主要功能说明1.输入语句2.输出语句3.赋值语句INPUT“提示内容”;变量PRINT“提示内容”;表达式变量=表达式可对程序中的变量赋值可输出表达式的值,计算可对程序中的变量赋值,计算(1)提示内容和它后面的“;”可以省略(2)一个语句可以给多个变量赋值,中间用“,”分隔(3)无计算功能(1)表达式可以是变量,计算公式,或系统信息(2)一个语句可以输入多个表达式,中间用“,”分隔(3)有计算功能(1)“=”的右侧必须是表达式,左侧必须是变量(2)一个语句只能给一个变量赋(3)有计算功能三.五种基本算法语句(4)条件语句IF-THEN-ELSE格式IF-THEN格式IF条件THEN语句1ELSE语句2ENDIF满足条件?语句1语句2是否IF条件THEN语句ENDIF满足条件?语句是否(5)循环语句①WHILE语句②UNTIL语句WHILE条件循环体WEND满足条件?循环体是否DO循环体LOOPUNTIL条件满足条件?循环体是否成立AP不成立AP成立不成立While(当型)循环Until(直到型)循环两种循环结构有什么差别?先执行循环体,然后再检查条件是否成立,如果不成立就重复执行循环体,直到条件成立退出循环。先判断指定的条件是否为真,若条件为真,执行循环条件,条件为假时退出循环。先执行后判断先判断后执行编写程序,求和1+2+3+…+n。开始结束输入ns=(n+1)n/2输出sINPUTns=(n+1)n/2*PRINT“S=”;S程序语句:输入语句赋值语句输出语句顺序结构:END变量=表达式练:编写一程序,求实数X的绝对值。条件结构:开始输入XX≥0输出X输出-X结束YNIFX=0THENPRINTXELSEPRINT-XENDIF程序:INPUTXEND条件语句:i=1S=0WHILEi=100S=S+ii=i+1WENDPRINTSEND当型循环语句当型循环语句练:设计一算法,求和1+2+3+…+100。循环体条件是否WHILE条件循环体WEND开始1i0S结束1iiSSi100?i输出S是否程序框图:程序语句:当型循环结构i=1S=0DOS=S+ii=i+1LOOPUNTILi100PRINTSEND开始结束1i0S1iiSSi100?i输出S直到型循环语句直到型循环语句否是否是循环体条件DO循环体LOOPUNTIL条件直到型循环结构辗转相除法(欧几里得算法)1、定义:所谓辗转相除法,就是对于给定的两个数,用较大的数除以较小的数。若余数不为零,则将余数和较小的数构成新的一对数,继续上面的除法,直到大数被小数除尽,则这时较小的数就是原来两个数的最大公约数。2、定义:所谓更相减损术,就是对于给定的两个数,用较大的数减去较小的数,然后将差和较小的数构成新的一对数,再用较大的数减去较小的数,反复执行此步骤直到差数和较小的数相等,此时相等的两数便为原来两个数的最大公约数。更相减损术用辗转相除法与更相减损术求161与253的最大公约数辗转相除法:32369231699169192161921161253更相减损术:232346462369236992699216192161253所以,161和253的最大公约数为23《数书九章》——秦九韶算法0111)(axaxaxaxfnnnn设)(xf是一个n次的多项式对该多项式按下面的方式进行改写:0111)(axaxaxaxfnnnn01211)(axaxaxannnn012312))((axaxaxaxannnn0121)))((axaxaxaxannn0121)))(()(axaxaxaxaxfnnn要求多项式的值,应该先算最内层的一次多项式的值,即11nnaxav然后,由内到外逐层计算一次多项式的值,即212naxvv323naxvv01axvvnn这种将求一个n次多项式f(x)的值转化成求n个一次多项式的值的方法,称为秦九韶算法。通过一次式的反复计算,逐步得出高次多项式的值,对于一个n次多项式,只需做n次乘法和n次加法即可。秦九韶算法的特点:例:用秦九韶算法求多项式f(x)=2x5-5x4-4x3+3x2-6x+7当x=5时的值.解法一:首先将原多项式改写成如下形式:f(x)=((((2x-5)x-4)x+3)x-6)x+7v0=2v1=v0x-5=2×5-5=5v2=v1x-4=5×5-4=21v3=v2x+3=21×5+3=108v4=v3x-6=108×5-6=534v5=v4x+7=534×5+7=2677所以,当x=5时,多项式的值是2677.然后由内向外逐层计算一次多项式的值,即一、进位制进位制是人们为了计数和运算方便而约定的记数系统。进位制是一种记数方式,用有限的数字在不同的位置表示不同的数值。可使用数字符号的个数称为基数,基数为n,即可称n进位制,简称n进制。“满几进一”就是几进制,几进制的基数就是几.基数:二进制、七进制、八进制、十二进制、六十进制等二进制只有0和1两个数字,七进制用0~6七个数字十六进制有0~9十个数字及ABCDEF六个字母.二进制与十进制的转换1、二进制数转化为十进制数例1:将二进制数110011(2)化成十进制数。解:根据进位制的定义可知012345)2(21212020212111001112116132151所以,110011(2)=51.注意:1.最后一步商为0,2.将上式各步所得的余数从下到上排列,得到:89=1011001(2)522212010余数11224489222201101练习将下面的十进制数化为二进制数?(1)10(2)20十进制转换为二进制例、把89化为二进制数例:把89化为五进制数。解:根据除k取余法以5作为除数,相应的除法算式为:所以,89=324(5)895175350423余数除k取余法:十进制数转化为k进制数的方法用k连续去除该十进制数或所得的商,直到商为零为止,然后把每次所得的余数倒着排成一个数,就是相应的k进制数。