1.2基本算法语句
【创设情境】 在现代社会里,计算机已经成为人们日常生活和工作不可缺少的工具,如:听MP3,看电影,玩游戏,打字排版,画卡通画,处理数据等等,那么,计算机是怎样工作的呢? 计算机完成任何一项任务都需要算法,但是,我们用自然语言或程序框图描述的算法,计算机是无法“看得懂,听得见”的。因此还需要将算法用计算机能够理解的程序设计语言(programming language)翻译成计算机程序。
程序设计语言有很多种。如BASIC,Foxbase, C语言,C++,J++,VB等。为了实现算法中的 三种基本的逻辑结构:顺序结构、条件结构和循 环结构,各种程序设计语言中都包含下列基本的 算法语句: 输入语句 输出语句 赋值语句 条件 语句 循环 语句 这就是这一节所要研究的主要内容——基本算法 语句。今天,我们先一起来学习输入、输出语句 和赋值语句。
1.2.1基本算法语句 ——输入语句、输出语句和赋值语句
我们知道,顺序结构是任何一个算法都离不开的基本结构。 【探究新知】 我们知道,顺序结构是任何一个算法都离不开的基本结构。 输入、输出语句和赋值语句基本上对应于算法中的顺序结构. (如右图) 计算机从上而下按照语句排列的顺序执行这些语句. 语句n+1 语句n 输入语句和输出语句分别用来实现算法的输入信息,输出结果的功能.
输入语句和输出语句分别用来实现算法的输入信息,输出结果的功能。 例1 用描点法作函数y=x3+3x2-24x+30的图象 时,需要求出自变量和函数的一组对应值.编写程序, 分别计算当x=-5,-4,-3,-2,-1,0,1, 2,3,4,5时的函数值. 程序: INPUT “x=”;x y=x^3+3*x^2-24*x+30 PRINT x PRINT y END -----------------输入语句 ---------赋值语句 -------------------------打印语句 输出语句 -------------------------打印语句 输出语句 -------------------------表示结束
一.输入语句 输入语句的一般格式 INPUT “提示内容”;变量 说明: (1)输入语句的作用是实现算法的输入信息功能; (2)“提示内容”提示用户输入什么样的信息, 变量是指程序在运行时其值是可以变化的量; (3)输入语句要求输入的值只能是具体的常数, 不能是函数、变量或表达式; (4)提示内容与变量之间用分号“;”隔开, 若输入多个变量,变量与变量之间用逗号“,”隔开.
INPUT语句不但可以给单个变量赋值,还可以给多个变量赋值,其格式为: 注意: INPUT语句不但可以给单个变量赋值,还可以给多个变量赋值,其格式为: INPUT “提示内容1,提示内容2,提示内容3,…”;变量1,变量2,变量3,… 例如,输入一个学生数学,语文,英语三门课的成绩, 可以写成: INPUT “数学,语文,英语”;a,b,c 练一练:请你用输入语句表达课本P7和P9页程序框图中输入框中的内容. P7页: INPUT “n=”; n P9页: INPUT a, b, c
二.输出语句 输出语句的一般格式 PRINT “提示内容”;表达式 说明: (1)“提示内容”提示用户输出什么样的信息,表 达式是指程序要输出的数据; (2)输出语句的用途: ①输出常量,变量的值和字符串等系统信息。 ②输出数值计算的结果。
(3)同输入语句一样,表达式前也可以有“提示内容”. 如P9页的输出框 可以转化为输出语句: 输出S PRINT “S=”; S 〖思考〗:在课本P7页图1.1-2程序框图中的输出框的内容怎样用输出语句来表达? 参考答案: 输出框: PRINT “n is a prime number .” PRINT “n is not a prime number.”
三.赋值语句 变量=表达式 (1)赋值语句的一般格式: (2)赋值语句的作用是:先计算出赋值号右边表达 式的值,然后把这个值赋给左边的变量,使该变量的 值等于表达式的值。 (3)赋值语句中的“=”称作赋值号,与数学中的等 号的意义是不同的.赋值号的左右两边不能对换. (4)赋值语句左边只能是变量名字而不是表达式, 如:2=x是错误的;右边表达式可以是一个数据、 常量或算式;不能利用赋值语句进行代数式的 演算。(如化简、因式分解、解方程等) (5)对于一个变量可以多次赋值。
〖例2〗:编写程序,计算一个学生数学、语文、 英语三门课的平均成绩。 【例题解析】 〖例2〗:编写程序,计算一个学生数学、语文、 英语三门课的平均成绩。 分析:先写出算法,画出程序框图,再进行编程。 程序框图 程序: 开始 INPUT “Maths,Chinese,English”;a,b,c y=(a+b+c)/3 PRINT “y=”;y END 输入a,b,c 输出y 结束
分析:此程序给变量A赋了两次值.A的初值为10,第二次赋值后,初值被“覆盖”,A的值变为25,因此输出值是25. 〖例3〗:给一个变量重复赋值。 程序: A的输出值是多少? A=10 A=A+15 PRINT A END 分析:此程序给变量A赋了两次值.A的初值为10,第二次赋值后,初值被“覆盖”,A的值变为25,因此输出值是25.
〖例3〗:给一个变量重复赋值。 A=10 A=A+15 PRINT A END 程序: [变式引申]:在此程序的基础上,设计一个程序, 要求最后A的输出值是30. A=10 A=A+15 PRINT A A=A+5 END 程序:
不能!!!!!! 〖例4〗交换两个变量A和B的值,并输出交换前后 的值。 分析:引入一个中间变量X,将A的值赋予X,又将B 的值赋予A,再将X的值赋予B,从而达到交换A, B的值.(比如交换装满水的两个水桶里的水需要 再找一个空桶) 程序: INPUT A INPUT B PRINT A,B X=A A=B B=X END 问题:能否用下列赋值语句交换A,B的值? A=B B=A 不能!!!!!!
〖练习1〗:编写一个程序,要求输入一个圆的半径, 便能输出该圆的周长和面积.( π取3.14) 分析:设圆的半径为R,则圆的周长C=2πR,面积S=πR2,可以利用顺序结构中的INPUT语句,PRINT语句和赋值语句设计程序。 INPUT “R=”;R C=2*3.14*R S=3.14*R^2 PRINT “C=”;C PRINT “S=”; S END
〖练习2〗P24页T1. 程序: INPUT “F=”;F C=(F-32) 5/9 PRINT “C=”;C END *
INPUT “a,b(a,b≠0)=”;a ,b X=a+b Y=a-b Z=a b Q=a/b PRINT X,Y,Z,Q END 〖练习3〗P24页T2. INPUT “a,b(a,b≠0)=”;a ,b X=a+b Y=a-b Z=a b Q=a/b PRINT X,Y,Z,Q END * 程序:
〖练习4〗P24页T3. ABS(x)=|x|. 程序: p=(2+3+4)/2 t=p (p-2) (p-3) (p-4) S=SQR(t) PRINT “S=”;S END * 注:BASIC语言中的标准函数SQR(x),表示数x的算术平方根,ABS(x)表示x的绝对值等. ABS(x)=|x|.
〖作业1〗P24页T4. INPUT “a,b,c=”;a ,b,c X=10.4*a Y=15.6*b Z=25.2*c 程序: INPUT “a,b,c=”;a ,b,c X=10.4*a Y=15.6*b Z=25.2*c sum=X+Y+Z PRINT “sum=”;sum END
〖作业2〗P25页A组T2. INPUT “a,b,h=”;a ,b,h p=a+b s=p*h/2 PRINT “s=”;s END 程序: INPUT “a,b,h=”;a ,b,h p=a+b s=p*h/2 PRINT “s=”;s END
【课堂小结】 (1)本节课介绍了输入语句、输出语句和赋值语句的结构特点及联系. (2)掌握并应用输入语句,输出语句,赋值语句编写一些简单的程序解决数学问题,特别是掌握赋值语句中“=”的作用及应用. (3)编程一般的步骤:先写出算法,再进行编程.我们要养成良好的习惯,也有助于数学逻辑思维的形成。
二、重点与难点 重点:正确理解输入语句、输出语句、赋值语句的作用. 难点:准确写出输入语句、输出语句、赋值语句.
1.2.2基本算法语句 ——条件语句 学习目标: 1、知识与技能 (1)正确理解条件语句的概念; (2)会应用条件语句编写程序。 2、过程与方法 经历对现实生活情境的探究,认识到应用计算机解决数学问题方便简捷,促进发展学生逻辑思维能力
3、情感态度与价值观 了解条件语句在程序中起判断转折作用,在解决实际问题中起决定作用。通过本小节内容的学习,有益于我们养成严谨的数学思维以及正确处理问题的能力。 重点与难点: 重点:条件语句的步骤、结构及功能. 难点:会编写程序中的条件语句.
条件语句是处理条件分支逻辑结构的算法语句 . 条件语句的一般格式 写成条件语句为 算法中的条件结构是由条件语句来表达的, 条件语句是处理条件分支逻辑结构的算法语句 . 条件语句的一般格式 写成条件语句为 只含一个“分支”的条件结构 满足条件? 语句 是 否 IF 条件 THEN 语句体 END IF 当计算机执行这种形式的条件语句时,首先对IF后的条件进行判断,如果条件符合,就执行THEN后的语句体,否则执行END IF之后的语句.
当计算机执行上述语句时,首先对IF后的条件进行判断,如果条件符合,就执行THEN后的语句体1,否则执行ELSE后的语句体2. 含两个“分支”的条件结构 写成条件语句为 IF 条件 THEN 语句体1 ELSE 语句体2 END IF 满足条件? 语句1 语句2 是 否 当计算机执行上述语句时,首先对IF后的条件进行判断,如果条件符合,就执行THEN后的语句体1,否则执行ELSE后的语句体2.
条件语句的作用 在程序执行过程中,根据判断是否满足约定的条件而决定是否需要转换到何处去。需要计算机按条件进行分析、比较、判断,并按判断后的不同情况进行不同的处理。
(1)当△>0时,一元二次方程有两个不等的实数根. 【例题解析】 〖例1〗:编写程序,输入一元二次方程ax2+bx+c=0的系数,输出它的实数根。 算法分析: 一元二次方程的根有三种不同情况: 设判别式△=b2-4ac (1)当△>0时,一元二次方程有两个不等的实数根. (2)当△=0时,一元二次方程有两个相等的实数根. (3)当△<0时,一元二次方程没有实数根.
【程序框图】 开始 1 2 输入a,b,c 是 △=b2-4ac 否 否 x1=p+q 是 x2=p-q 结束 1 2 △=0? △≥0? 输出x1,x2 原方程无实根 结束 1 2
【程序】 INPUT “ a,b,c =”;a,b,c d=b*b-4*a*c IF d>=0 THEN p=-b/(2*a) q=SQR(d)/(2*a) IF d=0 THEN PRINT “One real root:”;p ELSE x1=p+q x2=p-q PRINT “Two real roots:“;x1,x2 END IF PRINT “No real root!” END 【程序】
〖例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.
【程序框图】 交换a,b的值 是 否 是 t=a 否 a=b t=a b=t a=c c=t 是 否 t=c c=b b=t 开始 输入a,b,c 是 b>a? 否 是 t=a c>a? 否 a=b t=a b=t a=c c=t 是 c>b? 否 t=c c=b b=t 输出a,b,c
【程序】 IF b>a THEN IF c>b THEN t=a t=b a=b b=c b=t c=t END IF INPUT “a,b,c =”;a,b,c IF b>a THEN t=a a=b b=t END IF IF c>a THEN a=c c=t IF c>b THEN t=b b=c c=t END IF PRINT a,b,c END
【课堂小结】 本节课主要学习了条件语句的结构、特点、作用以及用法,并懂得利用它解决一些简单问题。条件语句使程序执行产生的分支,根据不同的条件执行不同的路线,使复杂问题简单化。 条件语句一般用在需要对条件进行判断的算法设计中,如判断一个数的正负,确定两个数的大小等问题,还有求分段函数的函数值等,往往要用条件语句,有时甚至要用到条件语句的嵌套。
[问题]如输入的数x=86,则输出的结果是什么? 68 此程序用于交换一个两位数的个位和十位数字. 【课堂练习】 1.课本P29页T2.读程序,说明程序的运行过程. INPUT “x=:”;x IF 9<x AND x<100 THEN a=x\10 b=x MOD 10 x=10*b+a PRINT x END IF END 如果有两个或是两个以上的并列条件时,用“AND”把它们连接起来。 “\”用来取商.此处表示 x除以10的商. “MOD”用来取余数.此处表示x除以10所得余数为b. [问题]如输入的数x=86,则输出的结果是什么? 68 此程序用于交换一个两位数的个位和十位数字.
IF a+b>c AND a+c>b AND b+c>a THEN PRINT “Yes.” ELSE END IF 2.课本P29页T1. 参考答案: INPUT “a,b,c=”; a,b,c IF a+b>c AND a+c>b AND b+c>a THEN PRINT “Yes.” ELSE PRINT “No.” END IF END
3.课本P29页T3.编写求一个数是偶数还是奇数的程序,从键盘输入一个整数,输出该数的奇偶性. 参考答案: INPUT “a=”; a IF a MOD 2 =0 THEN PRINT “Even.” ELSE PRINT “Odd.” END IF END
4.课本P29页T1.闰年指年份能被4整除但不能被100整除,或者能被400整除的年份.编写一个程序,判断输入的年份是否为闰年. INPUT “Please input a year:”;y b=y MOD 4 c=y MOD 100 d=y MOD 400 IF b=0 AND c< >0 THEN PRINT “Leap year.” ELSE IF d=0 THEN PRINT “Not leap year.” END IF END 表示c≠0 参考答案:
5.(P33页A组T3)编写一个程序,输入两个整数a,b,判断a是否能被b整除. 参考答案: INPUT “a,b=”; a,b IF a MOD b =0 THEN PRINT “b divides a.” ELSE PRINT “b does not divide a.” END IF END
IF x>=1 AND x<10 THEN y=2*x-1 6.(P25页B组T2) 参考答案: INPUT “x=”;x IF x<1 THEN y=x ELSE IF x>=1 AND x<10 THEN y=2*x-1 y=3*x-11 END IF END IF PRINT“y=”;y END
1.2.3基本算法语句 ——循环语句 学习目标: 1、知识与技能 (1)正确理解循环语句的概念; (2)会应用循环语句编写程序。 2、过程与方法 经历对现实生活情境的探究,认识到应用计算机解决数学问题方便简捷,促进发展学生逻辑思维能力
3、情感态度与价值观 了解循环语句在程序中起判断转折作用,在解决实际问题中起决定作用。通过本小节内容的学习,有益于我们养成严谨的数学思维以及正确处理问题的能力。 重点与难点: 重点:循环语句的步骤、结构及功能. 难点:会编写程序中的循环语句.
直到型循环结构(反复执行循环体直到条件满足) 当型循环结构(当条件满足时反复执行循环体) 算法中的循环结构是由循环语句来实现的 . 循环结构有两种-----当型与直到型. 直到型循环结构(反复执行循环体直到条件满足) 当型循环结构(当条件满足时反复执行循环体) 循环体 是 否 满足条件? 满足条件? 循环体 是 否 对应于程序框图中的两种循环结构,一般程序设计语言中也有当型(WHILE型)和直到型(UNTIL型)两种语句结构。
即WHILE语句和UNTIL语句。 (1)WHILE语句的一般格式是: WHILE 条件 循环体 WEND WHILE——当…… 时候 WEND——朝……方向 行走 其中循环体是由计算机反复执行的一组语句构成的。WHLIE后面的“条件”是用于控制计算机执行循环体或跳出循环体的。
(1)WHILE语句的一般格式是 WHILE 条件 循环体 WEND 当计算机遇到WHILE语句时, 先判断条件的真假,如果条件 符合,就执行WHILE与WEND之间的循环体;然后再检查上述条件,如果条件仍符合,再次执行循环体,这个过程反复进行,直到某一次条件不符合为止.这时,计算机将不执行循环体,直接跳到WEND语句后,接着执行WEND之后的语句. 满足条件? 循环体 是 否 当型循环结构
LOOP UNTIL——绕环回线走,直到达到某种 条件为止 循环体 是 否 满足条件? 直到型循环结构 (2)UNTIL语句的一般格式是: DO 循环体 LOOP UNTIL 条件 DO——做什么 LOOP UNTIL——绕环回线走,直到达到某种 条件为止 思考:参照其直到型循环结构对应的程序框图,说说 计算机是按怎样的顺序执行UNTIL语句的?
从UNTIL型循环结构分析,计算机执行该语句时,先 执行一次循环体,然后进行条件的判断,如果条件不 是 否 满足条件? 直到型循环结构 (2)UNTIL语句的一般格式是: DO 循环体 LOOP UNTIL 条件 从UNTIL型循环结构分析,计算机执行该语句时,先 执行一次循环体,然后进行条件的判断,如果条件不 满足,继续返回执行循环体,然后再进行条件的判断, 这个过程反复进行,直到某一次条件满足时,不再执 行循环体,跳到LOOP UNTIL语句后执行其他语句, 是先执行循环体后进行条件判断的循环语句.
UNTIL语句的一般格式 DO 循环体 LOOP UNTIL 条件 WHILE语句的一般格式 WHILE 条件 循环体 WEND 提问:通过对照,大家觉得WHILE型语句与UNTIL型 语句之间有什么区别呢? 区别:在WHILE语句中,是当条件满足时执行循环 体,而在UNTIL语句中,是当条件不满足时执行循环 体。
例1.编写程序, 计算自然数1+2+3+…+99+100的和. 分析:这是一个累加问题.我们可以用WHILE型语句,也可以用UNTIL型语句。
当型循环结构 WHILE语句 i=1 S=0 WHLIE i<=100 S=S+i i=i+1 WEND PRINT S END 开始 结束 i=1 S=0 i=i+1 S=S+i 输出S i≤100? 是 否 当型循环结构 WHILE语句 i=1 S=0 WHLIE i<=100 S=S+i i=i+1 WEND PRINT S END
直到型 UNTIL语句 i=1 S=0 DO S=S+i i=i+1 LOOP UNTIL i>100 PRINT S END 开始 结束 i=1 S=0 i=i+1 S=S+i 输出S i>100? 否 是 直到型 UNTIL语句 i=1 S=0 DO S=S+i i=i+1 LOOP UNTIL i>100 PRINT S END
变式训练(1): 编写程序求:n!=1×2×3×4×5×……×n的值. WHILE语句 如何修改? INPUT “n=”;n i=1 S=0 开始 i=1 S=0 i≤100? 是 S=S+i i=i+1 否 输出S 结束 当型循环结构 如何修改? INPUT “n=”;n 输入n i=1 S=0 S=1 S=1 WHLIE i<=100 n S=S+i S=S*i i=i+1 S=S*i WEND i≤n? PRINT S END
变式训练(2): 编写程序求:1×3×5×7×……×101的值. 如何修改? UNITL语句 i=1 S=0 DO S=S*i S=S+i 直到型 如何修改? UNITL语句 是 开始 结束 i=1 S=0 i=i+1 S=S+i 输出S i>100? 否 i=1 S=0 S=1 S=1 DO S=S*i S=S*i S=S+i i=i+2 i=i+1 i=i+2 i>101? LOOP UNTIL i>100 101 PRINT S END
例2:根据P7页图1.1-2,将程序框图转化为程序语句. 分析:仔细观察,该程序框图中既有条件结构,又有循环结构。 INPUT “n=”;n i=2 DO r=n MOD i i=i+1 LOOP UNTIL i>=n OR r=0 IF r=0 THEN PRINT “n is not a prime number.” ELSE PRINT “n is a prime number.” END IF END 分析:仔细观察,该程序框图中既有条件结构,又有循环结构。 程序
习题解答 程序 程序框图 a=1 1.P24页练习T1. b=2 e=0.005 DO m=(a+b)/2 f=m^2-2 g=a^2-2 IF g*f>0 THEN a=m ELSE b=m END IF LOOP UNTIL ABS(a-b)<e OR f=0 PRINT m 继续 END
程序框图 开始 f(x)=x2-2 否 是 b=m a=m 否 是 返回 f(a) f(m)>0? 输入误差ε 和初值a,b 否 f(a) f(m)>0? 是 b=m a=m 否 |a-b|<ε或f(m)=0? 是 返回 输出m 结束
2.P24页练习T2. 程序 x=1 DO y=x^2-3*x+5 PRINT “x=”;x, “y=”;y x=x+1 LOOP UNTIL x>20 END
2.P24页练习T2. 程序 x=1 WHILE x<=20 y=x^2-3*x+5 PRINT x, y x=x+1 WEND END
3.P25页A组T4. 程序 INPUT “n=”;n i=1 S=0 WHILE i<=n S=S+(i+1)/i i=i+1 WEND PRINT “S=”;S END
4.P25页B组T1. 程序 n=1 p=1000 WHILE n<=7 p=p*(1+0.5) n=n+1 WEND PRINT p END
5.P40页A组T4. 程序 INPUT “n=”;n i=1 S=0 WHILE i<=n S=S+1/i i=i+1 WEND PRINT “S=”;S END
6.P40页A组T2. 程序框图 程序 INPUT a1,b1,c1,a2,b2,c2 IF a1<>0 THEN u=-a2/a1 b=b2+b1*u c=c2+c1*u y=c/b x=(c2-b2*y)/a2 ELSE y=c1/b1 x=(c2-b2*y)/a2 END IF PRINT x,y 继续 END
程序框图 开始 u=-a2/a1 b=b2+b1u c=c2+c1u y=c1/b1 y=c/b x=(c2-b2y)/a2 输出x,y 输入a1,b1,c1,a2,b2,c2 否 a1≠0? 是 u=-a2/a1 b=b2+b1u c=c2+c1u y=c1/b1 y=c/b 输出x,y 结束 x=(c2-b2y)/a2 返回
P33B组T4. 程序 INPUT “a=”;a INPUT “n=”;n tn=0 sn=0 i=1 WHILE i<=n tn=tn+a sn=sn+tn a=a*10 i=i+1 WEND PRINT sn END