1、12.1赋值、输入和输出语句明目标、知重点1.理解输入语句、输出语句、赋值语句的作用;2.理解这些语句与相应逻辑结构的关系,并能转化为程序语句1赋值语句(1)格式:变量名表达式(2)赋值号:.(3)作用:先计算出赋值号右边表达式的值,然后把该值赋给赋值号左边的变量,使该变量的值等于表达式的值2输入语句(1)格式:变量名input(“提示内容”)(2)作用:不仅可输入数值,也可输入单个或多个字符3输出语句(1)格式:print(%io(2),变量名)(2)作用:在计算机屏幕上输出求解的结果情境导学我们用自然语言或程序框图描述的算法,计算机是无法“看得懂,听得见”的因此还需要将算法步骤、程序框图用
2、计算机能够理解的程序设计语言翻译成计算机程序探究点一简单的程序设计语言思考程序设计语言有很多种,这些程序语言都包含了哪些基本的语句结构?(阅读教材16页)各自对应怎样的算法结构?答基本的算法语句探究点二赋值语句 思考1在前面的学习中,我们遇到了“计算增量IPR”,“PPI”,“tt1”,其实这是三个赋值语句,如何定义赋值语句?赋值语句的一般格式是怎样的?什么是赋值号?答用来表明赋给某一个变量一个具体的确定值的语句叫做赋值语句赋值语句的一般格式:变量名表达式赋值语句中的“”号,称做赋值号思考2赋值语句有怎样的作用?在赋值语句的一般格式中,“表达式”具体指什么?答赋值语句的作用是先计算出赋值号右边
3、表达式的值,然后把该值赋给赋值号左边的变量,使该变量的值等于表达式的值格式中右边“表达式”可以是一个数值、常量或算式小结关于赋值语句,需要注意几点:赋值号左边只能是变量名字,而不是表达式;赋值号左右不能对换;不能利用赋值语句进行代数式(或符号)的演算(如化简、因式分解等);赋值号和数学中的等号的意义不同,它将赋值号右边的表达式的值赋给赋值号左边的变量例1判断下列给出的赋值语句是否正确?为什么?(1)赋值语句3B;(2)赋值语句xy0;(3)赋值语句AB2;(4)赋值语句TT*T.解(1)错,赋值语句中“”号左边不能是常量;(2)错,不能给一个表达式赋值;(3)错,一个赋值语句只能给一个变量赋值
4、;(4)正确,该句的功能是将当前T的值平方后再赋给变量T. 反思与感悟赋值号与数学中的等号的意义是不同的,赋值号左边的变量如果原来没有值,则执行赋值语句后,获得一个值;如果已有值,则执行该语句,以赋值号右边表达式的值代替该变量原来的值,即将原值“冲掉”;赋值号的左边不能是常量,一个赋值语句的表达式不能出现两个及两个以上的赋值号跟踪训练1判断下列各组语句是否正确(1)赋值语句r9;(2)赋值语句9r;(3)赋值语句Rr9.答案(1)对,(2)错,(3)错思考5阅读教材17页中间一段,回答:(1)在Scilab界面窗口内,赋值语句有计算功能吗?如有请举例说明(2)赋值语句后有没有分号“;”结尾时,
5、界面窗口内显示变量赋值后的结果有什么不同?答(1)赋值语句虽然不能进行代数式的演算,如化简及因式分解等,但能进行算式的计算例如计算三个数的平均值,可以在窗口中输入:a5;b7;c9;aver(abc)/3aver7(2)赋值语句后没有分号“;”结尾时,界面窗口内显示变量赋值后的结果;有分号“;”结尾时,则不显示结果探究点三输入语句问题在某些算法中,变量的初值要根据情况经常地改变,一般我们把程序和初始数据分开,每次算题时,即使初始数据改变,也不必改变程序部分,只要每次程序运行时,输入相应的数据即可,这个过程在程序语言中,用“输入语句”来控制,那么如何输入数据呢?思考1阅读教材18页的内容,你能抽
6、象出输入语句的一般格式吗?括号内的提示信息的作用是什么?答输入语句的一般格式:变量input(“提示内容”)括号内的提示内容的作用是在程序运行后,在屏幕上输出或显示一些与该变量有关的信息,是对变量的一种解释,目的是为了让程序执行者更方便、更精确地输入相应变量的值思考2我们要计算任意一个学生的语文、数学和外语三门考试的平均成绩,就要输入这个学生三门课的成绩,在Scilab文本编辑器中要写出怎样的程序?答ainput(“chinese”);binput(“math”);cinput(“foreign language”);aver(abc)/3小结(1)输入语句中ainput(“chinese”)
7、中,真正起作用的是ainput(),它将键盘输入的数值赋给a,括号中的chinese仅仅是提示作用,提醒用户输入的是语文成绩(2)输入语句要求输入的值只能是具体的常数,不能是函数,变量或者表达式,例如205,32/4等都不行,另外输入语句可以输入单个或者多个字符,例如:xinput(“I am a student”);xinput(“What is your name?”)等等(3)在Scilab中,还有“read”等其他输入语句,在其他各种程序语言中,一般都有自己的输入控制语句,它们的作用是相同的,只是每种程序语言的控制代码和表现形式不同例2写出鸡兔同笼问题的一个算法,画出相应算法的框图,写
8、出计算机程序解算法:S1输入鸡和兔的总数量M;S2输入鸡和兔腿的总数量N;S3鸡的数量A;S4兔的数量BMA;S5输出A,B.程序框图如下图所示:程序如下:Minput(“How many heads”);Ninput(“How many legs”);A(4MN)/2BMAAB反思与感悟本题得出的程序本身没法得出A,B的值,只有把上述程序保存成一个文件,然后在Scilab界面内执行该程序,然后根据屏幕出现的提示内容,从键盘输入相应数据才能计算出结果跟踪训练2“植树造林,防风抗沙”某沙漠地区在2013年底有绿化带树林20 000亩该地区每年春天都会种树400亩加以绿化,但同时每年冬天又会有总绿
9、化面积的1%被沙漠化,问2016年底该地区总绿化面积S有多少亩?画出程序框图,并写出程序解程序框图如图:程序如下:S20 000;S(S400)(10.01);S(S400)(10.01);S(S400)(10.01);S探究点四输出语句思考阅读教材19页下半页并类比赋值、输入语句的一般格式,你能抽象出输出语句的一般格式吗?答输出语句一般格式:print(%io(2),表达式)例3一个算法是,用Scilab中的rand()函数,首先生成一个01之间的随机数并把它赋值给变量a,再把3赋值给变量b,把ab赋值给变量c,最后把它们都输出到屏幕上这个算法用Scilab程序写出,并用print(%io(
10、2),a,b,c)语句控制输出,写出该程序解arand();b3;cab;print(%io(2),a,b,c);反思与感悟(1)print(%io(2),表达式)中的表达式指程序要输出的数据,输出语句可以输出常量,变量或表达式的值例如print(%io(2),B),print(%io(2),43)等. (2) print(%io(2),a,b,c)中的参数%io(2)表示在屏幕上输出,print(%io(2),a,b,c)在屏幕上输出的顺序是c,b,a.跟踪训练3用描点法作函数y2x33x212x15的图象时,需要求出自变量与函数的一组对应值编写该程序解我们用Scilab语言来描述:xinp
11、ut(“x”);y2x3+3x212x+15print(%io(2),y,x)1将两个数a8,b17交换,使a17,b8,下面语句正确的一组是()A. ab B. cb C. ba D. acba ba ab cbac ba答案B解析先把b的值赋给中间变量c,于是c17;再把a的值赋给变量b,于是b8;最后把c的值赋给变量a,于是a17.2下面算法执行后的结果为_a2;a4;aaa;a答案8解析先把2赋给a,然后又把4赋给a,此时a的原值2被4“冲掉”,所以a的值为4,最后把44再赋给a,因此输出的a的值为8.3下面算法执行后的结果为_a2;b3;cab;bacb;print(%io(2),a
12、,b,c);答案5,4,2解析由于把23的值赋给c,所以c的值为5,又把253的值赋给b,所以b的值为4,a的值没有变化仍为2.4已知三角形的三边长分别为a,b,c,借助海伦公式求三角形的面积解ainput(“a”);binput(“b”);cinput(“c”);p(abc)/2;Ssqrt(p*(pa)*(pb)*(pc);print(%io(2),S);呈重点、现规律1赋值语句中的“”称作赋值号,而不是“等号”;格式中右边“表达式”可以是一个数值、常量或算式,如果“表达式”是一个算式,赋值语句的作用是先计算出“”右边表达式的值,然后将该值赋给“”左边的变量2需输入信息时用input语句,
13、需输出信息时用print语句,当变量需要的数据较少或给变量赋予算式时,用赋值语句,当变量需要输入多组数据且程序重复使用时,使用输入语句较好一、基础过关1下列给出的赋值语句中正确的是()A4M BMMCBA3 Dxy0答案B解析赋值语句的格式:变量表达式,是将右边表达式的值赋给左边的变量,赋值时左右两端不能对换,也不能进行字符运算故选B.2下列给变量赋值的语句正确的是()A5a Ba2aCab4 Da2*a答案D解析A错,因为赋值语句的左右两边不能对换,赋值语句是将赋值号右边表达式的值赋给赋值号左边的变量;C错,因为赋值语句不能把一个值同时赋给两个变量;B错,赋值语句左边是一个变量,而不是代数式
14、;D项正确3下列程序执行后,变量a、b的值分别为()a15;b20;aab;bab;aab;print(%io(2),a,b);A20,15 B35,35C5,5 D5,5答案A解析根据赋值语句的意义,先把ab35赋给a,然后把ab352015赋给b,最后再把ab351520赋给a.4给出下面一个程序:A5;B8;XA;AB;BXA;print(%io(2),A,B);此程序运行后A,B的结果分别是()A5,8 B8,5 C8,13 D5,13答案C解析此程序先将A的值赋给X,再将B的值赋给A,再将XA的值赋给B,即将原来的A与B的和赋给B,最后A的值是原来B的值8,而B的值是两数之和13.5
15、下面一段程序执行后的结果是_A2;AA*2;AA6;print(%io(2),A);答案10解析先把2赋给A,然后把A*24赋给A,即A的值为4,再把4610赋给A,所以输出的A值为10.6下列给出的输入、输出语句错误的有_(填序号)输入语句 “input”a;b;c;输入语句 inputx5;输出语句 printA3;输出语句 print(%io(2),a)答案解析错,变量之间用“,”隔开;错,input语句中只能是变量,而不能是表达式;错,print语句中不能再用赋值号“”;正确7对于平面直角坐标系中给定的两点A(a,b),B(c,d),编写一个程序,要求输入两点的坐标,输出这两点间的距离
16、解程序如下:ainput(“a”);binput(“b”);cinput(“c”);dinput(“d”);Dsqrt(ac)*(ac)(bd)*(bd);D二、能力提升8下列程序语言中表达式的值正确的是()A6*sqrt(4)+32*2=154B3*(5+4)+ sqrt(9)2=17C(5+3*(127)/4=5D(2+3)*54+2*3* sqrt(4)2=72答案C解析C中,53(127)4(515)45;A中,6322121830;B中,39()236;D中,55423445.9当a3,b5,cb2时,print(%io(2),a,b,c)在屏幕上的输出结果自上而下依次是()A3,5
17、,7 B3,5,5C7,3,5 D7,5,3答案D解析print(%io(2),a,b,c)在屏幕上的输出是从右往左开始,即最上面是c的值,中间是b的值,最下面是a的值10读程序、,若两程序输入值与执行结果均分别相同,则两程序的输入值为_,执行结果为_程序:程序:xinput(“x”); xinput(“x”);yx2; y2*x+2print(%io(2),y); print(%io(2),y);答案02解析两程序执行结果相同,即求yx2与y2x2的交点11编写一个程序,要求输入两个正数a,b的值,输出ab和ba的值解ainput(“a”);binput(“b”);cab;dba;print
18、(%io(2),d,c);12读用Scilab语句编写的程序,根据程序画出程序框图xinput(“x”);yinput(“y”);print(%io(2),x/4);print(%io(2),2*y);x=x+2;y=y-1;print(%io(2),x);print(%io(2),y);解三、探究与拓展13新中国成立以后,我国共进行了六次人口普查,各次普查得到的人口数据都呈增长趋势假设我国现有人口数为P,人口的自然增长率为R,试设计一个程序,预测T年之后我国的人口总数解Pinput(“我国现有人口数:”);Rinput(“人口的自然增长率:”);Tinput(“预测时间为(年):”);M(1R)T;NP*M;print(%io(2),“预测人口总数:”,N);