(共34张PPT)
1.2.1输入、输出语句和赋值语句
赋值语句
格式说明:“:=”是赋值号。它与比较符“=”是两 个不同的符号。A:=5表明将整数5赋给变量A,完成一个动作。而A=5表明变量A与5相比较判断等与不等,结果是一个布尔值。
赋值语句执行过程:计算赋值号右边的表达式,求出其结果,并将结果赋给赋值号左边的变量名。
注意:赋值语句在使用时,要注意赋值号两边的数据类型必须赋值兼容,即类型相一致或相容。
练习1
说出每执行一次赋值语句后变量a、b的内容变化。
Program examp1_1
Var
a,b: integer;
Begin
a := 3; b :=5;
a := a+b;
b := b*a;
a := b div 2;
End.
练习2
编写程序,交换两个变量的值。
Program ex_2;
var
a,b,t: integer;
Being
read(a,b);
t:=a;
a:=b;
b:=t;
write(‘a=‘,a,’b=‘,b);
End.
输出语句
格式说明:write和writeln是标准过程名,它们是标准标识符。输出项可以是表达式,表达式可以是常量、变量、函数名、表达式。多个输出项用逗号隔开。
输入以下程序,说出write和writeln的区别。
Program ex_3;
Var a,b,c:integer;
Begin
a:=30; b:=5; c:=20;
write(a);
write(b);
write(c);
End.
Program ex_3;
Var a,b,c:integer;
Begin
a:=30; b:=5; c:=20;
writeln(a);
writeln(b);
writeln(c);
End.
自定义输出格式
单场宽
设e为输出项,单场宽的书写形式为e:n1。n1是正整数,用来表示输出的列数。
输入以下程序,改变场宽,观察变化
Program ex_4;
Var
a:integer;
ch:char;
flag:boolean;
Begin
a:=1234;
ch:=‘a’
flag:=true;
writeln(a,ch,flag);
writeln(a:8,ch:8,flag:8);
End.
如果场宽小于标准场宽,将会如何?
实数的输出
输入下面的程序,观察输出结果。
Program ex_5; var a:real; begin a:=13.56; writeln(a); end.
双场宽
双场宽是用来控制实型数的输出格式的。双场宽输出格式为e:n1:n2。其中n1、n2是两个正整数,并且n1大于n2。n1表示输出的总列数,包括符号位、整数部分、小数点、小数部分;n2表示小数部分占的列数。
通过双场宽可以将实数不按科学记数法的形式输出。
修改场宽,观察输出结果
Program ex_5; var a:real; begin a:=13.56; writeln(a:10:2); end.
如果a:=12345678,如何输出?
输入语句
格式说明:read和readln是标准过程。多个变量之间用逗号分隔,必须是变量名,不可以是常量和表达式。如read(2,a*b)。变量不可以是布尔型。
Read后必须有参数,readln后可以没有参数,只是等待输入一个回车。
当执行输入语句时,机器等待用户从键盘输入数据,输入的数据先进入键盘缓冲区,从键盘缓冲区中再依次输入给程序中相应的变量。如果输入语句有ln则给程序中变量输入完数据后,清空键盘缓冲区。没有ln则输入完后不清空。
如果输入数据类型不匹配,语句报错停止执行。报错信息为ERROR 106。
数据输入
输入数据必须为常量,不可以是变量或表达式。
输入以下程序,运行时输入数据,分清read、readln的区别。
Program ex_5; var a,b,c:integer; begin readln(a,b); read(c); write(‘a=‘,a,’b=‘,b,’c=‘,c); end.
输入的相容问题
Program ex_5; var a,b:integer; c:char; begin readln(a,b); read(c); write(‘a=‘,a,’b=‘,b,’c=‘,c); end.
输入以下数据,看发生什么情况:
1.2*10 30
2.2 10
2
3 a 20
§1.2.2条件语句
算法初步
复习巩固
1、输入语句、输出语句和赋值语句对应于算法中的哪种结构?这三种语句的一般格式是什么?
2、什么是条件结构?用程序框图表示这种结构
顺序结构
输入语句
输出语句
赋值语句
INPUT “提示文字”;变量
PRINT “提示内容”;变量
变量=表达式
新课讲解
阅读P16,思考以下问题
1、条件结构用怎样的程序语句来描述?这种语句的一般格式是怎样的?
2、把下列语句的意义翻译成程序框图
(1)IF x>0 THEN
y=1
ELSE
y=0
END IF
(2)IF x<0 THEN
x=ABS(x) END IF PRINT“x的绝对值为:”;x
IF 条件 THEN
语句1
ELSE
语句2
END IF
IF 条件 THEN
语句
END IF
或
例5 编写程序,输入一元二次方程
算法描述:
S1:输入a,b,c
S2:计算判别式△
S3:如果△<0有两不同实根, △=0有两个相同实根, △<0否则没实数根。根据情况输出结果。
开 始
输入a,b,c
Δ=b2-4ac
p= -b/2a
q=SQR(ABS (Δ))/(2a)
x1=p+q
x2=p-q
Δ≥0?
x1=x2?
原方程有两个不等
的实数根x1,x2
原方程有两个相等
的实数根x1,x2
原方程无实数根
结 束
是
否
是
否
的系数,输出它的实数根。
QBASIC程序:
INPUT “请输入一元二次方程的系数a,b,c=:”;a,b,c
d = b * b - 4 * a * c
p = -b / (2 * a)
q = SQR(ABS(d)) / (2 * a)
IF d >= 0 THEN
x1 = p + q
x2 = p - q
IF x1 = x2 THEN
PRINT “只有一个实根:”;x1=x1
ELSE
PRINT “有两个实根:”;“x1=”;x1,”x2=”;x2
END IF
ELSE
PRINT “没有实根”
END IF
END
例6 编写程序,使得任意输入3个整数按大到小的顺序输出。
算法分析:
算法思想:3个数两两比较,确定大小。按a、b、c输入,要按a、b、c输出,关键要找到最大值,将它赋值给a,中值赋给b,最小值赋给c。
第一步 输入3个整数a、b、c
第二步 将a与b比较,并把小者赋给b,大的赋给a;
第三步 将a与c比较,并把小者赋给c,大的赋给a
第四步 将b与c比较,并把小者赋给c,大的赋给b
第五步 按顺序输出a,b,c
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
相应的QBASIC程序:
开始
t=a,a=b,b=t
t=a,a=c,c=t
t=b,b=c,c=t
输入a,b,c
输入a,b,c
b>a?
c>a?
c>b?
结束
是
是
否
否
是
否
对应的流程图
练习巩固
开始
输入a,b,c
a+b>c,a+c > b,
b+c > a是否同时成立?
存在这样的
三角形
不存在这样
的三角形
结束
否
是
(1)
该程序框图所表示的算法是作用是什么?并根据程序框图写出相应的程序。
2、某快递公司规定甲、乙两地之间物品的托运费用根据下面的方法计算:物品重量在50千克以内,托运费为每千克 0.53 元,超过的话,超过部分每千克0.85元,试画出计算费用f的程序框图,并写出相应的QBASIC程序。
程序框图:
对应的QBASIC程序
INPUT “输入重量G=”;G
IF G<=50 THEN
M=0.53*G
ELSE
M=50*0.53+0.85*(G-50)
END IF
PRINT “运费为:”;M
END
小结
1、条件结构的程序表示
2、注意书写的规范性
IF 条件 THEN
语句1
ELSE
语句2
END IF
IF 条件 THEN
语句
END IF
作业布置
课本P20
练习第3、4题
课外活动
试查找数学课本一些分段函数的事例,看看能否能用条件语句写出解决问题的程序
§1.2.3 循环语句
算法初步
温故而知新
1、顺序结构常用的程序语言和格式
2、条件结构常用的程序语言和格式
输入语句 INPUT “提示文字”;变量列表
输出语句 PRINT “提示文字”;变量列表
赋值语句 变量=表达式
(1)
IF 条件成立 THEN
语句1
ELSE
语句2
END IF
(2)
IF 条件成立 THEN
语句
END IF
3、循环结构的程序框图
思考:如何用程序语句表示呢?
WHILE 条件
循环体
WEND
DO
循环体
LOOP UNTIL 条件
例1 根据下面的程序框图写出相应的QBASIC程序
i = 0
sum = 0
WHILE i<100
i = i + 1
sum = sum + i
WEND
PRINT sum
END
例2 根据下面的程序框图写出相应的QBASIC程序
i = 0
sum = 0
DO
i = i + 1
sum = sum + i
LOOP UNTIL i>=100
PRINT sum
END
例3 根据下面的程序语句画出对应的程序框图,并分析程序的结果。
s=0
i=2
WHILE i<=18
s=s+i
i=i+3
WEND
PRINT “s=”;s
END
(1)
(2)
i=1
sum=0
m=1
DO
m=m*i
sum=sum+m
i=i+1
LOOP UNTIL i>10
PRINT sum
END
练习巩固
1、设计一个算法框图:逐个输出12,22,32,……,n2,并写出相应的QBASIC程序。
INPUT n
i = 0
WHILE i < n
i = i + 1
t = i ^ 2
PRINT t
WEND
END
INPUT n
i = 0
DO
i = i + 1
t = i ^ 2
PRINT t
LOOP UNTIL i > = n
END
2、设计一个算法框图:求满足1+2 + 3 + … + n>10000的最小正整数n,并写出相应的QBASIC程序。
i = 0
sum = 0
DO
i = i + 1
sum = sum + i
LOOP UNTIL sum>10000
PRINT i
END
课堂小结
1、循环结构的程序表示
2、循环语句的一般格式
3、程序框图和程序语言的相互转换
循环语句
WHILE 条件成立
循环体
WEND
DO
循环体
LOOP UNTIL 条件成立
课后作业
课本P23
练习第3题
习题1.2A组第4题