(共71张PPT)
1.2.1基本算法语句
——输入语句、输出语句和赋值语句
【探究新知】
我们知道,顺序结构是任何一个算法都离不开的基本结构。
语句n+1
语句n
输入、输出语句和赋值语句基本上对应于算法中的顺序结构.
计算机从上而下按照语句排列的顺序执行这些语句.
输入语句和输出语句分别用来实现算法的输入信息,输出结果的功能.
(如右图)
这就是这一节所要研究的主要内容——基本算法
语句。今天,我们先一起来学习输入、输出语句
和赋值语句。
程序设计语言有很多种。如BASIC,Foxbase,
C语言,C++,J++,VB等。为了实现算法中的
三种基本的逻辑结构:顺序结构、条件结构和循
环结构,各种程序设计语言中都包含下列基本的
算法语句:
输入语句 输出语句 赋值语句 条件 语句 循环 语句
输入语句和输出语句分别用来实现算法的输入信息,输出结果的功能。
例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)提示内容与变量之间用分号“;”隔开,
(5)“提示内容”和它后面的 “;”可以省略;
如INPUT “x=”;x 或INPUT x
例如,输入一个学生数学,语文,英语三门课的成绩,
可以写成:
INPUT “数学,语文,英语”;a,b,c
注意:
INPUT语句还可以给多个变量赋值,变量与变量之间用逗号“,”隔开.其格式为:
INPUT “提示内容1,提示内容2,…”;变量1,变量2,…
练一练:1、给定一个任意正整数n。
2、给定三角形的三条边长
1
INPUT “n=”; n
2
INPUT a, b, c
二.输出语句
PRINT “提示内容”;表达式
①输出常量,变量的值和字符串等系统信息。
②输出数值计算的结果。
(1)输出语句的用途:
输出语句的一般格式
(3)同输入语句一样,表达式前也可以有“提示内容”.
〖思考〗:在课本P7页图1.1-2程序框图中的输出框的内容怎样用输出语句来表达?
参考答案:
输出框:PRINT “n是质数.”
PRINT “n不是质数.”
如P9页的输出框 可以转化为输出语句:
输出S
PRINT “S=”; S
【例题解析】
〖例2〗:编写程序,计算一个学生数学、语文、
英语三门课的平均成绩。
分析:先写出算法,画出程序框图,再进行编程。
结束
开始
输入a,b,c
输出y
程序框图
程序:
INPUT “Maths= ”;a
INPUT “Chinese= ”;b
INPUT “English= ”;c
PRINT “The average= ”;(a+b+c)/3
END
y=(a+b+c)/3
输出y
结束
开始
例2、编写程序,计算一个学生数学、语文、英语三门课的平均成绩。
INPUT “a,b,c”;a,b,c
y=(a+b+c)/3
PRINT “y=”;y
END
输入a、b、c
INPUT “a,b,c”;a,b,c
PRINT “y=”;(a+b+c)/3
END
程序2
程序3
三.赋值语句
(1)赋值语句的一般格式:
变量=表达式
(2)作用:先计算出赋值号右边表达式的值,然后把这个值赋给左边的变量,使该变量的值等于表达式的值。
(3)赋值语句左边只能是变量名字而不是表达式,如:2=x是错误的;右边表达式可以是一个数据、常量或算式;不能利用赋值语句进行代数式的演算。(如化简、因式分解、解方程等)
(4)一个语句只能给一个变量赋值。
(5)对于一个变量可以多次赋值,但变量的取值总是最近被赋值的。
(1)
错
, 变量之间应用","号隔开;
(2)
错
, INPUT语句中只能是变量,而不能是表达式;
(3)
错
, PRINT语句不能用赋值号"=";
(4)
正确
,PRINT语句可以输出常量、表达式的值;
(5)
错
, 赋值语句中"="号左右不能互换;
(6)
错
, 不能给一个表达式赋值;
(7)
错
, 一个赋值语句只能给一个变量赋值;
(8)
正确
,该句的功能是将当前T的值平方后再赋给变量T.
练习:
练习:读下列两个程序,回答问题.
①X=3
y=4
x=y
PRINT x, y
END
上述程序最后输出的x ,y 分别是为:
② X=3
y=4
y=x
PRINT x, y
END
4,4
3,3
取余数
MOD
取商
\
<>
<=
>=
幂运算
^
除法运算
/
乘法运算
功能
运算符
*
Inx
|x|
功能
LOG(x)
SQR(x)
ABS(x)
注意事项
函数名
BASIC语言中的常用运算符号
返回
三、课后练习1:
p.24练习第一题程序
程序:
INPUT “F= ”;F
C=(F-32)*5/9
PRINT “C= ”;C
END
〖例3〗:给一个变量重复赋值。
程序:
A=10
A=A+15
PRINT A
END
A的输出值是多少
分析:此程序给变量A赋了两次值.A的初值为10,第二次赋值后,初值被“覆盖”,A的值变为25,因此输出值是25.
[变式引申]:在此程序的基础上,设计一个程序,
要求最后A的输出值是30.
A=10
A=A+15
PRINT A
A=A+5
PRINT A
END
程序:
〖例3〗:给一个变量重复赋值。
程序:
A=10
A=A+15
PRINT A
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
PRINT A,B
END
程序:
问题:能否用下列赋值语句交换A,B的值
A=B
B=A
不能!!!!!!
1:下列给出的输入,输出语句正确的是( )
①输入语句INPUT a;b;c
②输入语句INPUT x=3
③输出语句PRINT A=4
④输出语句PRINT 20,3*2
2:当x的值为5时, “PRINT “x=”;x”在屏幕上输出的结果是( )
A: 5=5 B: 5 C: 5=x D: x=5
练习1
INPUT “A,B=”;A,B
B=A+B
A=B-A
B=B-A
PRINT “A,B=”;A,B
END
(运行时从键盘输入3,7)
(1)
(2)
A=-1000
A=A+100
PRINT“A=”;A
END
将一个变量的值赋给另一个变量,前一个变量的值保持不变;可先后给一个变量赋多个不同的值,但变量的取值总是最近被赋予的值 。
A=-900
A,B =7 3
练习2.分析下列程序,考虑输出的结果是什么?
(3)a=1
b=a+3
b=b+1
PRINT “b=”;b
运算结果是 ( b=5 )
(4)a=2
b=3
c=4
b=c+2
c=b+4
d=(a+b+c)/3
PRINT “d=”;d
运算结果是( )
d=6
a=2
b=3
c=a+b
b=a+c-b
PRINT “a=,b=,c=”;a,b,c
END
运算结果是 ( )
(5)
(6)
x=1
x=x*2
x=x*3
x=x*4
PRINT x*5
END
运算结果是 ( )
a=2,b=4,c=5
60
三、课后练习2:
p.24练习第二题程序
程序:
INPUT “a=,b= ”;a,b
sum=a+b
diff=a-b
mul=a*b
div=a/b
PRINT sum,diff,mul,div
END
三、课后练习3:
p.24练习第三题程序
程序:
INPUT “a= ”;a
INPUT “b= ”;b
INPUT “c= ”;c
p=(a+b+c)/2
s=SQR(p*(p-a)*(p-b)*(p-c))
PRINT “s= ”;s
END
三、课后练习4:
p.24练习第四题程序
程序:
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
〖练习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
读下列两个程序语句回答问题.
(1)上述两个程序有何区别.
(2) 写出两个程序的运行结果;
(a)INPUT X
INPUT Y
X=2009
Y=2008
X=Y
PRINT X , Y
END
(b)INPUT X
INPUT Y
X=2009
Y=2008
Y=X
PRINT X , Y
END
能力提升
(a) 2008 2008
(b) 2009 2009
归纳总结
巩固提高
水果店的老板忙极了,小新设计了一个程序帮助老板算账.已知水晶梨2.4元/千克,葡萄8.6元/千克,哈密瓜4.2元/千克,某顾客分别买这三种水果a,b,c 千克.请你将程序补充完整。
INPUT
A=2.4*a
B=8.6*b
C=4.2*c
S=
PRINT
END
a, b, c
A+B+C
S
〖练习2〗P20页T1.
程序:
INPUT “F=”;F
C=(F-32) 5/9
PRINT “C=”;C
END
*
〖练习3〗P16页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
*
程序:
注:BASIC语言中的标准函数SQR(x),表示数x的算术平方根,ABS(x)表示x的绝对值等.
程序: p=(2+3+4)/2
t=p (p-2) (p-3) (p-4)
S=SQR(t)
PRINT “S=”;S
END
*
*
*
〖练习4〗P16页T3.
ABS(x)=|x|.
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
程序:
〖作业1〗P16页T4.
INPUT “a,b,h=”;a ,b,h
p=a+b
s=p*h/2
PRINT “s=”;s
END
程序:
〖作业2〗P25页A组T2.
【课堂小结】
(1)本节课介绍了输入语句、输出语句和赋值语句的结构特点及联系.
(2)掌握并应用输入语句,输出语句,赋值语句编写一些简单的程序解决数学问题,特别是掌握赋值语句中“=”的作用及应用.
(3)编程一般的步骤:先写出算法,再进行编程.我们要养成良好的习惯,也有助于数学逻辑思维的形成。
比较下列各组语句的区别,再判断它们是否正确.
(1)① 输入语句 INPUT “a=” ;a
② 输入语句 INPUT “a=” ,a
√
╳
(2)① 输入语句 INPUT “a,b,c=”;a,b;c
② 输入语句 INPUT a,b, c
√
“提示内容”与
变量之间用分
号隔开.
“提示内容”与后面的“;”可省略.
变量与变量之间用逗号隔开
出
PRINT
出
出
出
PRINT
PRINT
PRINT
╳
比较下列各组语句的区别,再判断它们是否正确.
(3)① 输出语句PRINT “S=”;7
② 输出语句PRINT S=7
√
╳
√
╳
赋值号左边是变量,只能给一个变量赋值.
╳
输入、输出语句中不能用赋值号.
(4)① 赋值语句 r=9
② 赋值语句 9=r
③ 赋值语句 R=r=9
作业:
1.2.2基本算法语句
——条件语句
算法中的条件结构是由条件语句来表达的,
条件语句是处理条件分支逻辑结构的算法语句 .
条件语句的一般格式
满足条件?
语句
是
否
只含一个“分支”的条件结构
写成条件语句为
IF 条件 THEN
语句体
END IF
当计算机执行这种形式的条件语句时,首先对IF后的条件进行判断,如果条件符合,就执行THEN后的语句体,否则执行END IF之后的语句.
满足条件?
语句1
语句2
是
否
含两个“分支”的条件结构
写成条件语句为
IF 条件 THEN
语句体1
ELSE
语句体2
END IF
当计算机执行上述语句时,首先对IF后的条件进行判断,如果条件符合,就执行THEN后的语句体1,否则执行ELSE后的语句体2.
条件语句的作用
在程序执行过程中,根据判断是否满足约定的条件而决定是否需要转换到何处去。需要计算机按条件进行分析、比较、判断,并按判断后的不同情况进行不同的处理。
【例题解析】
〖例1〗:编写程序,输入一元二次方程ax2+bx+c=0的系数,输出它的实数根。
算法分析:
一元二次方程的根有三种不同情况:
设判别式△=b2-4ac
(1)当△>0时,一元二次方程有两个不等的实数根.
(2)当△=0时,一元二次方程有两个相等的实数根.
(3)当△<0时,一元二次方程没有实数根.
是
【程序框图】
开始
输入a,b,c
△=b2-4ac
△≥0
原方程无实根
2
2
结束
否
1
1
△=0
输出p
是
否
x1=p+q
x2=p-q
输出x1,x2
【程序】
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
ELSE
PRINT “No real root!”
END IF
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.
c=b
b=t
b=t
c=t
a=c
【程序框图】
开始
输入a,b,c
b>a
是
t=a
a=b
否
c>a
是
t=a
否
c>b
t=c
是
否
输出a,b,c
交换a,b的值
【程序】
INPUT “a,b,c =”;a,b,c
IF b>a THEN
t=a
a=b
b=t
END IF
IF c>a THEN
t=a
a=c
c=t
END IF
IF c>b THEN
t=b
b=c
c=t
END IF
PRINT a,b,c
END
【课堂小结】
本节课主要学习了条件语句的结构、特点、作用以及用法,并懂得利用它解决一些简单问题。条件语句使程序执行产生的分支,根据不同的条件执行不同的路线,使复杂问题简单化。
条件语句一般用在需要对条件进行判断的算法设计中,如判断一个数的正负,确定两个数的大小等问题,还有求分段函数的函数值等,往往要用条件语句,有时甚至要用到条件语句的嵌套。
【课堂练习】
1.课本P29页T2.读程序,说明程序的运行过程.
INPUT “x=:”;x
IF 9a=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
此程序用于交换一个两位数的个位和十位数字.
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 “Leap year.”
ELSE
PRINT “Not leap year.”
END IF
END IF
END
参考答案:
表示c≠0
地球绕太阳公转,每年并不是365天,而是多出来5个多个小时,这样的话,每四年就会多将近1天,所以就放在2月的第29天了,闰年由此诞生。由于不是准确地多出来24小时,所以基本上每经过24个闰年就不会多出1天了,但还是会多出几分钟的,如果从公元元年开始计的话正好也就是逢100的年份大多数时候不是不闰年,这样把多出的那几分钟再攒着,经过400年后,就会有一个逢100的年份是闰年,比如公元1600年是闰年,1700、1800、1900年都不是,2000年才是闰年,下一次是2400年
5.编写一个程序,输入两个整数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
参考答案:
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
ELSE
y=3*x-11
END IF
END IF
PRINT“y=”;y
END
参考答案:
1.2.3基本算法语句
——循环语句
算法中的循环结构是由循环语句来实现的 .
循环结构有两种-----当型与直到型.
满足条件?
循环体
是
否
当型循环结构(当条件满足时反复执行循环体)
直到型循环结构(反复执行循环体直到条件满足)
循环体
是
否
满足条件?
对应于程序框图中的两种循环结构,一般程序设计语言中也有当型(WHILE型)和直到型(UNTIL型)两种语句结构。
(1)WHILE语句的一般格式是
WHILE 条件
循环体
WEND
当计算机遇到WHILE语句时,
先判断条件的真假,如果条件
符合,就执行WHILE与WEND之间的循环体;然后再检查上述条件,如果条件仍符合,再次执行循环体,这个过程反复进行,直到某一次条件不符合为止.这时,计算机将不执行循环体,直接跳到WEND语句后,接着执行WEND之后的语句.
满足条件?
循环体
是
否
当型循环结构
WHILE——当……时候
WEND—— 朝……方向行走
(2)UNTIL语句的一般格式是:
DO
循环体
LOOP UNTIL 条件
循环体
是
否
满足条件?
直到型循环结构
DO——做什么
LOOP UNTIL——绕环回线走,直到达到某种
条件为止
思考:参照其直到型循环结构对应的程序框图,说说
计算机是按怎样的顺序执行UNTIL语句的?
提问:通过对照,大家觉得WHILE型语句与UNTIL型
语句之间有什么区别呢?
区别:在WHILE语句中,是当条件满足时执行循环
体,而在UNTIL语句中,是当条件不满足时执行循环
体。
WHILE语句的一般格式
WHILE 条件
循环体
WEND
UNTIL语句的一般格式
DO
循环体
LOOP UNTIL 条件
例1.编写程序,
计算自然数1+2+3+…+99+100的和.
分析:这是一个累加问题.我们可以用WHILE型语句,也可以用UNTIL型语句。
WHILE语句
开始
结束
i=1
S=0
i=i+1
S=S+i
输出S
i≤100
是
否
当型循环结构
i=1
S=0
WHLIE i<=100
S=S+i
i=i+1
WEND
PRINT S
END
UNTIL语句
开始
结束
i=1
S=0
i=i+1
S=S+i
输出S
i>100
否
是
直到型
i=1
S=0
DO
S=S+i
i=i+1
LOOP UNTIL
i>100
PRINT S
END
开始
i=1
S=0
i≤100
是
S=S+i
i=i+1
否
输出S
结束
当型循环结构
变式训练(1):
编写程序求:n!=1×2×3×4×5×……×n的值.
如何修改
输入n
WHILE语句
i=1
S=0
WHLIE i<=100
S=S+i
i=i+1
WEND
PRINT S
END
INPUT “n=”;n
S=1
S=S*i
i≤n
S=1
n
S=S*i
变式训练(2):
编写程序求:1×3×5×7×……×101的值.
如何修改
UNITL语句
i=1
S=0
DO
S=S+i
i=i+1
LOOP UNTIL i>100
PRINT S
END
S=1
101
S=S*i
i=i+2
是
开始
结束
i=1
S=0
i=i+1
S=S+i
输出S
i>100
否
直到型
S=1
S=S*i
i=i+2
i>101
例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
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)PRINT m
END
继续
是
是
否
f(a) f(m)>0
程序框图
开始
f(x)=x2-2
输入误差ε
和初值a,b
a=m
否
b=m
|a-b|<ε或f(m)=0
输出m
结束
返回
P33页B组题1
程序框图
程序
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
继续
开始
程序框图
输入a1,b1,c1,a2,b2,c2
a1≠0
是
u=-a2/a1
b=b2+b1u
c=c2+c1u
y=c/b
x=(c2-b2y)/a2
否
y=c1/b1
输出x,y
结束
返回