1
阳光家教网 www.ygjj.com 高三数学学习资料 高一数学必修3公式总结以及例题
§1 算法初步
? 秦九韶算法:通过一次式的反复计算逐步得出高次多项式的值,对于一个
多项式,只要作n次乘法和n次加法即可。表达式如下:
anx?an?1xnn?1n次
?...?a1?????anx?an?1?x?an?2?x?...?x?a2?x?a1
例题:秦九韶算法计算多项式 3x6?4x5?5x4?6x3?7x2?8x?1 , 当 x?0.4 时,
需要做几次加法和乘法运算? 答案: 6 , 6
即: ?????3x?4?x?5?x?6?x?7?x?8?x?1
? 理解算法的含义:一般而言,对于一类问题的机械的、统一的求解方法称为算法,其意
义具有广泛的含义,如:广播操图解是广播操的算法,歌谱是一首歌的算法,空调说明书是空调使用的算法… (algorithm)
1. 描述算法有三种方式:自然语言,流程图,程序设计语言(本书指伪代码).
2. 算法的特征:
①有限性:算法执行的步骤总是有限的,不能无休止的进行下去
②确定性:算法的每一步操作内容和顺序必须含义确切,而且必须有输出,输出可以是
一个或多个。没有输出的算法是无意义的。
③可行性:算法的每一步都必须是可执行的,即每一步都可以通过手工或者机器在一定
时间内可以完成,在时间上有一个合理的限度
3. 算法含有两大要素:①操作:算术运算,逻辑运算,函数运算,关系运算等②控制结
构:顺序结构,选择结构,循环结构
? 流程图:(flow chart): 是用一些规定的图形、连线及简单的文字说明表示算法及程序
结构的一种图形程序,它直观、清晰、易懂,便于检查及修改。
注意:1. 画流程图的时候一定要清晰,用铅笔和直尺画,要养成有开始和结束的好习惯
2. 拿不准的时候可以先根据结构特点画出大致的流程,反过来再检查,比如:遇到判断框时,往往临界的范围或者条件不好确定,就先给出一个临界条件,画好大致流程,然后检查这个条件是否正确,再考虑是否取等号的问题,这时候也就可以有几种书写方法了。 3. 在输出结果时,如果有多个输出,一定要用流程线把所有的输出总结到一起,一起终结到结束框。
算法结构: 顺序结构,选择结构,循环结构 A A p A Y N N p p Y
B A B Y N
? 水激石则鸣,励激志则宏!知识改变命运,勤奋成就未来! 共26 页第 1页4/18/2013 2
阳光家教网 www.ygjj.com 高三数学学习资料 直到型循环 当型循环
Ⅰ.顺序结构(sequence structure ):是一种最简单最基本的结构它不存在条件判断、控制
转移和重复执行的操作,一个顺序结构的各部分是按照语句出现的先后顺序执行的。
Ⅱ.选择结构(selection structure ):或者称为分支结构。其中的判断框,书写时主要是注
意临界条件的确定。它有一个入口,两个出口,执行时只能执行一个语句,不能同时执行,其中的A,B两语句可以有一个为空,既不执行任何操作,只是表明在某条件成立时,执行
某语句,至于不成立时,不执行该语句,也不执行其它语句。
Ⅲ.循环结构(cycle structure):它用来解决现实生活中的重复操作问题,分直到型(until)
和当型(while)两种结构(见上图)。当事先不知道是否至少执行一次循环体时(即不知道循
环次数时)用当型循环。
? 基本算法语句:本书中指的是伪代码(pseudo code),且是使用 BASIC
语言
编写的,是介于自然语言和机器语言之间的文字和符号,是表达算法的简单而实用的好方法。伪代码没有统一的格式,只要书写清楚,易于理解即可,但也要注意符号要相对统一,避免引起混淆。如:赋值语句中可以用x?y ,也可以
用 x?y ; 表示两变量相乘时可以用“*”,也可以用“?”
Ⅰ. 赋值语句(assignment statement):用 ? 表示, 如:x?y ,表示将y的值赋给x,
其中x是一个变量,y是一个与x同类型的变量或者表达式.
一般格式:“变量?表达式” ,有时在伪代码的书写时也可以用 “x?y”,但
此时的 “ = ”不是数学运算中的等号,而应理解为一个赋值号。 注: 1. 赋值号左边只能是变量,不能是常数或者表达式,右边可以是常数或者表达式。“ = ”具有计算功能。如: 3 = a ,b + 6 = a ,都是错误的,而a = 3*5 – 1 , a = 2a + 3 都是正确的。2.一个赋值语句一次只能给一个变量赋值。 如:a = b = c = 2 , a , b ,
c =2 都是错误的,而 a = 3 是正确的.
例题:将x和y的值交换
p?xp?xx?y , 同样的如果交换三个变量x,y,z的值 : y?px?yy?zz?p
Ⅱ. 输入语句(input statement): Read a ,b 表示输入的数一次送给 a ,b
输出语句(out statement) :Print x ,y 表示一次输出 运算结果x ,y 注:1.支持多个输入和输出,但是中间要用逗号隔开!2. Read 语句输入的只能是变量而不是表达式 3. Print 语句不能起赋值语句,意旨不能在Print 语句中用 “ = ”4. Print语句可以输出常量和表达式的值.5.有多个语句在一行书写时用 “ ; ”隔开. 例题:当x等于5时,Print “x = ”; x 在屏幕上输出的结果是 x = 5 Ⅲ.条件语句(conditional statement):
1. 行If语句: If A Then B 注:没有 End If
水激石则鸣,励激志则宏!知识改变命运,勤奋成就未来! 共26 页第 2页4/18/2013
3
阳光家教网 www.ygjj.com 高三数学学习资料 2. 块If语句: 注:①不要忘记结束语句End If ,当有If语句嵌套使用时,
有几个If ,就必须要有几个End If ②. Else If 是对上一个条件的否定,即已经不属于上面的条件,另外Else If 后面也要有End If ③ 注意每个条件的临界性,即某个值是属于上一个条件里,还是属于下一个条件。④ 为了使得书写清晰易懂,应缩进书写。格式如下:
Read a , b , c If a?b Then If a?c Then Print a Read a , b , c If a?b and a?c Then Print a Else If b?c Then Print b Else Print c End If If A Then B Else C End If 例题: 用条件语句写出求三个数种最大数的一个算法.
If A Then B Else If C Then D End If
Else 或者 Print c
End If Else If b?c Then Print b Else 注:1. 同样的你可以写出求三个数中最小的数。 Print c 2. 也可以类似的求出四个数中最小、大的数 End If
End If
Ⅳ.循环语句( cycle statement): ? 当事先知道循环次数时用 For 循环 ,即使是 N次也是已知次数的循环 ? 当循环次数不确定时用While循环 ? Do 循环有两种表达形式,与循环结构的两种循环相对应. While A For I From 初值 to 终值 Step 步长 … … End While While循环 End For For 循环 Do While p Do … … Loop 当型Do循环 Loop Until p 直到型Do循环 说明:1. While循环是前测试型的,即满足什么条件才进入循环,其实质是当型循环,一般在解决有关问题时,可以写成While循环,较为简单,因为它的条件相对好判断. 2. 凡是能
水激石则鸣,励激志则宏!知识改变命运,勤奋成就未来! 共26 页第 3页4/18/2013
4
阳光家教网 www.ygjj.com 高三数学学习资料 用While循环书写的循环都能用For 循环书写 3. While循环和Do循环可以相互转化 4. Do
循环的两种形式也可以相互转化,转化时条件要相应变化 5. 注意临界条件的判定.
例题: 设计计算 1?3?5?...?99 的一个算法.(见课本P21)
S?1S?1I?1While I ? 99 S?1For I From 3 To 99 Step 2 S?S?IEnd ForPrint SI?1While I ? 97 I?I?2 S?S?IEnd While Print S S?S?I I?I?2End While Print SS?1I?1Do
? ? ?
S?1I?1Do S?S?I I?I?2Loop Until I ?100 (或者 I ?99 )Print SS?1I?1Do While I ?99 (或者I ?100 ) S?S?I I?I?2Loop Print S I?I?2 S?S?ILoop Until I ?99 Print SS?1I?1
? ?
Do While I ?97 (或者I ?99 ) I?I?2 S?S?I Loop Print S
? ?
颜老师友情提醒:1. 一定要看清题意,看题目让你干什么,有的只要写出算法,有的只要求写出伪代码,而有的题目则是既写出算法画出流程还要写出伪代码。
2. 在具体做题时,可能好多的同学感觉先画流程图较为简单,但也有的算法伪代码比较好写,你也可以在草稿纸上按照你自己的思路先做出来,然后根据题目要求作答。一般是先写算法,后画流程图,最后写伪代码。
3. 书写程序时一定要规范化,使用统一的符号,最好与教材一致,由于是新教材的原因,再加上各种版本,可能同学会看到各种参考书上的书写格式不一样,而且有时还会碰到我们没有见过的语言,希望大家能以课本为依据,不要被铺天盖地的资料所淹没!
Ex: 1. 对于任意给定的N ,一定存在自然数1?12?13?14...?n , 使得1?110012?13?...?1n?N
2. 用循环语句写出求的一个算法.
水激石则鸣,励激志则宏!知识改变命运,勤奋成就未来! 共26 页第 4页4/18/2013
5
阳光家教网 www.ygjj.com 高三数学学习资料 3. 设计一个计算1?Read NS?0n?0While S ? N12?13?...?1100的一个算法,并画出流程图,写出伪代码.
S?0a?1For I From 1 to 100aI 算法:S1 S?0S2 I?1答案:1 n?n?1 2. S?S? S?S?End WhliePrint n1n 3.S3 如果 I ?100 则1 S?S? I?I?1 转 S3I 否则输出 S
a?a??-1?End ForPrint S 流程图: 伪代码: 开始 S?0S?0I?I?1S?0I?1While I?100For I From 1 to 1001I S?S?I?1 S?S?1I或者 S?S?1I End F orPrint S I?I?1End WhilePrint S I?100Y N ? 典型例题: 3. 与下列为代码对应的 输出数学表达式是 2. 下面的伪代码的目的是 10 Read m , n Read n 1. 下面的伪代码输出的结果是: 20 If m/n = Int(m/n) Then Go to 70 e?0 I ? 2 30 c ? m -Int(m/n)*n S?1 For n from 2 To 10 Step 2 I ? 2 I + 1 If I > 20 Then I ? I - 20 End If End for 40 m ? n 50 n ? c For I from 1To n S= S*I e?e+1/S End for Print e 60 Go to 20 70 Print n Print I 4. 下面的程序输出的是 Read n I ? 1 While I ? n If n / I = Int( n / I ) Then S ? I 5. I ?0 For n From 1 to 100 If Int ( n / 7 ) = n / 7 then I ?I+1 End If End For Print I 上面一段为代码的目的是: 6. a?1 b?2 c?3 a?b b ?c c? a Print a ,b ,c I=I+1 End if a= b= Print S 水激石则鸣,励激志则宏!知识改变命运,勤奋成就未来! 共26 页第 5页4/18/2013c= End while