第三步:
若△=0,则不等式解集为{x|x∈R且x
};
第四步:
若△<0,则不等式的解集为R。
2、求过P(a1,b1)、Q(a2,b2)两点的直线斜率有如下的算法:
第一步:
取x1=a1,y1=b1,x2=a2,y1=b2;
第二步:
若x1=x2;
第三步:
输出斜率不存在;
第四步:
若x1≠x2;
第五步:
计算
;
第六步:
输出结果。
3、写出求过两点M(-2,-1)、N(2,3)的直线与坐标轴围成面积的一个算法。
解:
算法:
第一步:
取x1=-2,y1=-1,x2=2,y2=3;
第二步:
计算
;
第三步:
在第二步结果中令x=0得到y的值m,得直线与y轴交点(0,m);
第四步:
在第二步结果中令y=0得到x的值n,得直线与x轴交点(n,0);
第五步:
计算S=
;
第六步:
输出运算结果
3.程序框图的概念:
是一种用规定的图形,指向线及文字说明来准确、直观地表示算法的图形。
4.基本概念:
(1)起止框图:
起止框是任何流程图都不可缺少的,它表明程序的开始和结束,所以一个完整的流程图的首末两端必须是起止框。
(2)输入、输出框:
表示数据的输入或结果的输出,它可用在算法中的任何需要输入、输出的位置。
图1-1中有三个输入、输出框。
第一个出现在开始后的第一步,它的作用是输入未知数的系数a11,a12,a21,a22和常数项b1,b2,通过这一步,就可以把给定的数值写在输入框内,它实际上是把未知数的系数和常数项的值通知给了计算机,另外两个是输出框,它们分别位于由判断分出的两个分支中,它们表示最后给出的运算结果,左边分支中的输出分框负责输出D≠0时未知数x1,x2的值,右边分支中的输出框负责输出D=0时的结果,即输出无法求解信息。
(3)处理框:
它是采用来赋值、执行计算语句、传送运算结果的图形符号。
图1-1中出现了两个处理框。
第一个处理框的作用是计算D=a11a22-a21a12的值,第二个处理框的作用是计算x1=(b1a22-b2a12)/D,x2=(b2a11-b1a21)/D的值。
(4)判断框:
判断框一般有一个入口和两个出口,有时也有多个出口,它是惟一的具有两个或两个以上出口的符号,在只有两个出口的情形中,通常都分成“是”与“否”(也可用“Y”与“N”)两个分支,在图1-1中,通过判断框对D的值进行判断,若判断框中的式子是D=0,则说明D=0时由标有“是”的分支处理数据;若D≠0,则由标有“否”的分支处理数据。
例如,我们要打印x的绝对值,可以设计如下框图。
5.三种基本结构:
1)顺序结构:
顺序结构描述的是是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的。
例2:
已知一个三角形的三边分别为2、3、4,利用海伦公式设计一个算法,求出它的面积,并画出算法的程序框图。
算法分析:
这是一个简单的问题,只需先算出p的值,再将它代入公式,最后输出结果,只用顺序结构就能够表达出算法。
程序框图:
2)条件结构:
一些简单的算法可以用顺序结构来表示,但是这种结构无法对描述对象进行逻辑判断,并根据判断结果进行不同的处理。
因此,需要有另一种逻辑结构来处理这类问题,这种结构叫做条件结构。
它是根据指定打件选择执行不同指令的控制结构。
例3:
任意给定3个正实数,设计一个算法,判断分别以这3个数为三边边长的三角形是否存在,画出这个算法的程序框图。
算法分析:
判断分别以这3个数为三边边长的三角形是否存在,只需要验收这3个数当中任意两个数的和是否大于第3个数,这就需要用到条件结构。
程序框图:
3)循环结构:
在一些算法中,经常会出现从某处开始,按照一定条件,反复执行某一处理步骤的情况,这就是循环结构,反复执行的处理步骤为循环体,显然,循环结构中一定包含条件结构。
循环结构又称重复结构,循环结构可细分为两类:
(1)一类是当型循环结构,如图1-5
(1)所示,它的功能是当给定的条件P1成立时,执行A框,A框执行完毕后,再判断条件P1是否成立,如果仍然成立,再执行A框,如此反复执行A框,直到某一次条件P1不成立为止,此时不再执行A框,从b离开循环结构。
(2)另一类是直到型循环结构,如下图所示,它的功能是先执行,然后判断给定的条件P2是否成立,如果P2仍然不成立,则继续执行A框,直到某一次给定的条件P2成立为止,此时不再执行A框,从b点离开循环结构。
例4:
设计一个计算1+2+…+100的值的算法,并画出程序框图。
算法分析:
只需要一个累加变量和一个计数变量,将累加变量的初始值为0,计数变量的值可以从1到100。
程序框图:
1.2算法的基本语句
(一)输入语句
在该程序中的第1行中的INPUT语句就是输入语句。
这个语句的一般格式是:
INPUT“提示内容”;变量
其中,“提示内容”一般是提示用户输入什么样的信息。
如每次运行上述程序时,依次输入-5,-4,-3,-2,-1,0,1,2,3,4,5,计算机每次都把新输入的值赋给变量“x”,并按“x”新获得的值执行下面的语句。
INPUT语句不但可以给单个变量赋值,还可以给多个变量赋值,其格式为:
INPUT“提示内容1,提示内容2,提示内容3,…”;变量1,变量2,变量3,…
例如,输入一个学生数学,语文,英语三门课的成绩,可以写成:
INPUT“数学,语文,英语”;a,b,c
注:
①“提示内容”与变量之间必须用分号“;”隔开。
②各“提示内容”之间以及各变量之间必须用逗号“,”隔开。
但最后的变量的后面不需要。
(二)输出语句
在该程序中,第3行和第4行中的PRINT语句是输出语句。
它的一般格式是:
PRINT“提示内容”;表达式
同输入语句一样,表达式前也可以有“提示内容”。
例如下面的语句可以输出斐波那契数列:
此时屏幕上显示:
TheFibonacciProgressionis:
11235813213455…
输出语句的用途:
(1)输出常量,变量的值和系统信息。
(2)输出数值计算的结果。
〖思考〗:
在1.1.2中程序框图中的输入框,输出框的内容怎样用输入语句、输出语句来表达?
(学生讨论、交流想法,然后请学生作答)
参考答案:
输入框:
INPUT“请输入需判断的整数n=”;n
输出框:
PRINTn;“是质数。
”
PRINTn;“不是质数。
”
(三)赋值语句
用来表明赋给某一个变量一个具体的确定值的语句。
除了输入语句,在该程序中第2行的赋值语句也可以给变量提供初值。
它的一般格式是:
变量=表达式
赋值语句中的“=”叫做赋值号。
赋值语句的作用:
先计算出赋值号右边表达式的值,然后把这个值赋给赋值号左边的变量,使该变量的值等于表达式的值。
注:
①赋值号左边只能是变量名字,而不能是表达式。
如:
2=X是错误的。
②赋值号左右不能对换。
如“A=B”“B=A”的含义运行结果是不同的。
③不能利用赋值语句进行代数式的演算。
(如化简、因式分解、解方程等)
④赋值号“=”与数学中的等号意义不同。
〖思考〗:
在1.1.2中程序框图中的输入框,哪些语句可以用赋值语句表达?
并写出相应的赋值语句。
(学生思考讨论、交流想法。
)
【例题精析】
〖例1〗:
编写程序,计算一个学生数学、语文、英语三门课的平均成绩。
分析:
先写出算法,画出程序框图,再进行编程。
算法:
程序:
〖例2〗:
给一个变量重复赋值。
程序:
[变式引申]:
在此程序的基础上,设计一个程序,要求最后A的输出值是30。
(该变式的设计意图是学生加深对重复赋值的理解)
程序:
〖例3〗:
交换两个变量A和B的值,并输出交换前后的值。
分析:
引入一个中间变量X,将A的值赋予X,又将B的值赋予A,再将X的值赋予B,从而达到交换A,B的值。
(比如交换装满水的两个水桶里的水需要再找一个空桶)
程序:
〖补例〗:
编写一个程序,要求输入一个圆的半径,便能输出该圆的周长和面积。
(
取3.14)
分析:
设圆的半径为R,则圆的周长为
,面积为
,可以利用顺序结构中的INPUT语句,PRINT语句和赋值语句设计程序。
程序:
(四)条件语句
条件语句的作用:
在程序执行过程中,根据判断是否满足约定的条件而决定是否需要转换到何处去。
需要计算机按条件进行分析、比较、判断,并按判断后的不同情况进行不同的处理。
算法中的条件结构是由条件语句来表达的,是处理条件分支逻辑结构的算法语句。
它的一般格式是:
(IF-THEN-ELSE格式)
当计算机执行上述语句时,首先对IF后的条件进行判断,如果条件符合,就执行THEN后的语句1,否则执行ELSE后的语句2。
其对应的程序框图为:
(如上右图)
在某些情况下,也可以只使用IF-THEN语句:
(即IF-THEN格式)
〖例2〗:
编写程序,使得任意输入的3个整数按从大到小的顺序输出。
算法分析:
用a,b,c表示输入的3个整数;为了节约变量,把它们重新排列后,仍用a,b,c表示,并使a≥b≥c.具体操作步骤如下。
第一步:
输入3个整数a,b,c.
第二步:
将a与b比较,并把小者赋给b,大者赋给a.
第三步:
将a与c比较.并把小者赋给c,大者赋给a,此时a已是三者中最大的。
第四步:
将b与c比较,并把小者赋给c,大者赋给b,此时a,b,c已按从大到小的顺序排列好。
第五步:
按顺序输出a,b,c.
(四)循环语句
算法中的循环结构是由循环语句来实现的。
对应于程序框图中的两种循环结构,一般程序设计语言中也有当型(WHILE型)和直到型(UNTIL型)两种语句结构。
即WHILE语句和UNTIL语句。
(1)WHILE语句的一般格式是:
其中循环体是由计算机反复执行的一组语句构成的。
WHLIE后面的“条件”是用于控制计算机执行循环体或跳出循环体的。
当计算机遇到WHILE语句时,先判断条件的真假,如果条件符合,就执行WHILE与WEND之间的循环体;然后再检查上述条件,如果条件仍符合,再次执行循环体,这个过程反复进行,直到某一次条件不符合为止。
这时,计算机将不执行循环体,直接跳到WEND语句后,接着执行WEND之后的语句。
因此,当型循环有时也称为“前测试型”循环。
其对应的程序结构框图为:
(如上右图)
〖思考〗:
直到型循环又称为“后测试型”循环,参照其直到型循环结构对应的程序框图,说说计算机是按怎样的顺序执行UNTIL语句的?
(让学生模仿执行WHILE语句的表述)
从UNTIL型循环结构分析,计算机执行该语句时,先执行一次循环体,然后进行条件的判断,如果条件不满足,继续返回执行循环体,然后再进行条件的判断,这个过程反复进行,直到某一次条件满足时,不再执行循环体,跳到LOOPUNTIL语句后执行其他语句,是先执行循环体后进行条件判断的循环语句。
〖提问〗:
通过对照,大家觉得WHILE型语句与UNTIL型语句之间有什么区别呢?
(让学生表达自己的感受)
区别:
在WHILE语句中,是当条件满足时执行循环体,而在UNTIL语句中,是当条件不满足时执行循环体。
【例题精析】
〖例3〗:
编写程序,计算自然数1+2+3+……+99+100的和。
分析:
这是一个累加问题。
我们可以用WHILE型语句,也可以用UNTIL型语句。
由此看来,解决问题的方法不是惟一的,当然程序的设计也是有多种的,只是程序简单与复杂的问题。
程序:
WHILE型:
UNTIL型:
1.3算法案例
辗转相除法:
1.辗转相除法
例1求两个正数8251和6105的最大公约数。
(分析:
8251与6105两数都比较大,而且没有明显的公约数,如能把它们都变小一点,根据已有的知识即可求出最大公约数)
解:
8251=6105×1+2146
显然8251的最大公约数也必是2146的约数,同样6105与2146的公约数也必是8251的约数,所以8251与6105的最大公约数也是6105与2146的最大公约数。
6105=2146×2+1813
2146=1813×1+333
1813=333×5+148
333=148×2+37
148=37×4+0
则37为8251与6105的最大公约数。
以上我们求最大公约数的方法就是辗转相除法。
也叫欧几里德算法,它是由欧几里德在公元前300年左右首先提出的。
利用辗转相除法求最大公约数的步骤如下:
第一步:
用较大的数m除以较小的数n得到一个商q0和一个余数r0;
第二步:
若r0=0,则n为m,n的最大公约数;若r0≠0,则用除数n除以余数r0得到一个商q1和一个余数r1;
第三步:
若r1=0,则r1为m,n的最大公约数;若r1≠0,则用除数r0除以余数r1得到一个商q2和一个余数r2;
……
依次计算直至rn=0,此时所得到的rn-1即为所求的最大公约数。
练习:
利用辗转相除法求两数4081与20723的最大公约数(答案:
53)
2.更相减损术
我国早期也有解决求最大公约数问题的算法,就是更相减损术。
更相减损术求最大公约数的步骤如下:
可半者半之,不可半者,副置分母·子之数,以少减多,更相减损,求其等也,以等数约之。
翻译出来为:
第一步:
任意给出两个正数;判断它们是否都是偶数。
若是,用2约简;若不是,执行第二步。
第二步:
以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数。
继续这个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数。
例2用更相减损术求98与63的最大公约数.
解:
由于63不是偶数,把98和63以大数减小数,并辗转相减,即:
98-63=35
63-35=28
35-28=7
28-7=21
21-7=14
14-7=7
所以,98与63的最大公约数是7。
练习:
用更相减损术求两个正数84与72的最大公约数。
(答案:
12)
3.比较辗转相除法与更相减损术的区别
(1)都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。
(2)从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到
4.辗转相除法与更相减损术计算的程序框图及程序
利用辗转相除法与更相减损术的计算算法,我们可以设计出程序框图以及BSAIC程序来在计算机上实现辗转相除法与更相减损术求最大公约数,下面由同学们设计相应框图并相互之间检查框图与程序的正确性,并在计算机上验证自己的结果。
(1)辗转相除法的程序框图及程序
程序框图:
程序:
INPUT“m=”;m
INPUT“n=”;n
IFmm=n
n=x
ENDIF
r=mMODn
WHILEr<>0
r=mMODn
m=n
n=r
WEND
PRINTm
END
3.秦九韶计算多项式的方法
例设计利用秦九韶算法计算5次多项式
当
时的值的程序框图。
解:
程序框图如下:
4.排序
直接插入排序:
冒泡排序:
进位制互相转化:
把余数从下往上排列即可。
第二章统计
2.1随机抽样
简单随机抽样的概念:
一般地,设一个总体含有N个个体,从中逐个不放回地抽取n个个体作为样本(n≤N),如果每次抽取时总体内的各个个体被抽到的机会都相等,就把这种抽样方法叫做简单随机抽样,这样抽取的样本,叫做简单随机样本。
【说明】简单随机抽样必须具备下列特点:
(1)简单随机抽样要求被抽取的样本的总体个数N是有限的。
(2)简单随机样本数n小于等于样本总体的个数N。
(3)简单随机样本是从总体中逐个抽取的。
(4)简单随机抽样是一种不放回的抽样。
(5)简单随机抽样的每个个体入样的可能性均为n/N。
最常用的简单随机抽样法:
抽签法的定义。
一般地,抽签法就是把总体中的N个个体编号,把号码写在号签上,将号签放在一个容器中,搅拌均匀后,每次从中抽取一个号签,连续抽取n次,就得到一个容量为n的样本。
抽签法的一般步骤:
(1)将总体的个体编号。
(2)连续抽签获取样本号码。
随机数法的定义:
利用随机数表、随机数骰子或计算机产生的随机数进行抽样,叫随机数表法,这里仅介绍随机数表法。
怎样利用随机数表产生样本呢?
下面通过例子来说明,假设我们要考察某公司生产的500克袋装牛奶的质量是否达标,现从800袋牛奶中抽取60袋进行检验,利用随机数表抽取样本时,可以按照下面的步骤进行。
第一步,先将800袋牛奶编号,可以编为000,001,…,799。
第二步,在随机数表中任选一个数,例如选出第8行第7列的数7(为了便于说明,下面摘取了附表1的第6行至第10行)。
162277943949544354821737932378
844217533157245506887704744767
630163785916955567199810507175
332112342978645607825242074438
576086324409472796544917460962
87352096438426349164
21763350258392120676
12867358074439523879
15510013429966027954
905284772708