基本算法语句
这就是这一节所要研究的主要内容——基本算法语句。程序设计语言有很多种。如BASIC,Foxbase,C语言,C++,J++,VB等。为了实现算法中的三种基本的逻辑结构:顺序结构、条件结构和循环结构,各种程序设计语言中都包含下列基本的算法语句:输入语句输出语句赋值语句条件语句循环语句
我们知道,顺序结构是任何一个算法都离不开的基本结构。语句n+1语句n输入、输出语句和赋值语句基本上对应于算法中的顺序结构.计算机从上而下按照语句排列的顺序执行这些语句.输入语句和输出语句分别用来实现算法的输入信息,输出结果的功能.(如右图)
输入语句和输出语句分别用来实现算法的输入信息,输出结果的功能。例1用描点法作函数y=x3+3x2-24x+30的图象时,需要求出自变量和函数的一组对应值.编写程序,分别计算当x=-5,-4,-3,-2,-1,0,1,2,3,4,5时的函数值.INPUT“x=”;xy=x^3+3*x^2-24*x+30PRINTxPRINTyEND程序:-----------------输入语句---------赋值语句-------------------------打印语句-------------------------打印语句-------------------------表示结束输出语句输出语句
一.输入语句INPUT“提示内容”;变量输入语句的一般格式说明:(1)输入语句的作用是实现算法的输入信息功能;(2)“提示内容”提示用户输入什么样的信息,变量是指程序在运行时其值是可以变化的量;(3)输入语句要求输入的值只能是具体的常数,不能是函数、变量或表达式;(4)提示内容与变量之间用分号“;”隔开,若输入多个变量,变量与变量之间用逗号“,”隔开.
例如,输入一个学生数学,语文,英语三门课的成绩,可以写成:INPUT“数学,语文,英语”;a,b,c注意:INPUT语句不但可以给单个变量赋值,还可以给多个变量赋值,其格式为:INPUT“提示内容1,提示内容2,提示内容3,…”;变量1,变量2,变量3,…
二.输出语句PRINT“提示内容”;表达式说明:(1)“提示内容”提示用户输出什么样的信息,表达式是指程序要输出的数据;①输出常量,变量的值和字符串等系统信息。②输出数值计算的结果。(2)输出语句的用途:输出语句的一般格式
(3)同输入语句一样,表达式前也可以有“提示内容”.如的输出框可以转化为输出语句:输出SPRINT“S=”;S
三.赋值语句(1)赋值语句的一般格式:变量=表达式(2)赋值语句的作用是:先计算出赋值号右边表达式的值,然后把这个值赋给左边的变量,使该变量的值等于表达式的值。(3)赋值语句中的“=”称作赋值号,与数学中的等号的意义是不同的.赋值号的左右两边不能对换.(4)赋值语句左边只能是变量名字而不是表达式,如:2=x是错误的;右边表达式可以是一个数据、常量或算式;不能利用赋值语句进行代数式的演算。(如化简、因式分解、解方程等)(5)对于一个变量可以多次赋值。
【例题解析】〖例2〗:编写程序,计算一个学生数学、语文、英语三门课的平均成绩。分析:先写出算法,画出程序框图,再进行编程。结束开始输入a,b,c输出y程序框图INPUT“Maths,Chinese,English”;a,b,cy=(a+b+c)/3PRINT“y=”;yEND程序:
〖例3〗:给一个变量重复赋值。程序:A=10A=A+15PRINTAENDA的输出值是多少?分析:此程序给变量A赋了两次值.A的初值为10,第二次赋值后,初值被“覆盖”,A的值变为25,因此输出值是25.
[变式引申]:在此程序的基础上,设计一个程序,要求最后A的输出值是30.A=10A=A+15PRINTAA=A+5PRINTAEND程序:〖例3〗:给一个变量重复赋值。程序:A=10A=A+15PRINTAEND
〖例4〗交换两个变量A和B的值,并输出交换前后的值。分析:引入一个中间变量X,将A的值赋予X,又将B的值赋予A,再将X的值赋予B,从而达到交换A,B的值.(比如交换装满水的两个水桶里的水需要再找一个空桶)INPUTAINPUTBPRINTA,BX=AA=BB=XPRINTA,BEND程序:问题:能否用下列赋值语句交换A,B的值?A=BB=A不能!!!!!!
〖练习1〗:编写一个程序,要求输入一个圆的半径,便能输出该圆的周长和面积.(π取3.14)分析:设圆的半径为R,则圆的周长C=2πR,面积S=πR2,可以利用顺序结构中的INPUT语句,PRINT语句和赋值语句设计程序。INPUT“R=”;RC=2*3.14*RS=3.14*R^2PRINT“C=”;CPRINT“S=”;SEND
〖练习3〗.INPUT“a,b(a,b≠0)=”;a,bX=a+bY=a-bZ=abQ=a/bPRINTX,Y,Z,QEND*程序:
注:BASIC语言中的标准函数SQR(x),表示数x的算术平方根,ABS(x)表示x的绝对值等.程序:p=(2+3+4)/2t=p(p-2)(p-3)(p-4)S=SQR(t)PRINT“S=”;SEND***〖练习4〗ABS(x)=|x|.
INPUT“a,b,h=”;a,b,hp=a+bs=p*h/2PRINT“s=”;sEND程序:〖作业2〗
算法中的条件结构是由条件语句来表达的,条件语句是处理条件分支逻辑结构的算法语句.条件语句的一般格式满足条件?语句是否只含一个“分支”的条件结构写成条件语句为IF条件THEN语句体ENDIF当计算机执行这种形式的条件语句时,首先对IF后的条件进行判断,如果条件符合,就执行THEN后的语句体,否则执行ENDIF之后的语句.
满足条件?语句1语句2是否含两个“分支”的条件结构写成条件语句为IF条件THEN语句体1ELSE语句体2ENDIF当计算机执行上述语句时,首先对IF后的条件进行判断,如果条件符合,就执行THEN后的语句体1,否则执行ELSE后的语句体2.
条件语句的作用在程序执行过程中,根据判断是否满足约定的条件而决定是否需要转换到何处去。需要计算机按条件进行分析、比较、判断,并按判断后的不同情况进行不同的处理。
【例题解析】〖例1〗:编写程序,输入一元二次方程ax2+bx+c=0的系数,输出它的实数根。算法分析:一元二次方程的根有三种不同情况:设判别式△=b2-4ac(1)当△>0时,一元二次方程有两个不等的实数根.(2)当△=0时,一元二次方程有两个相等的实数根.(3)当△=0THENp=-b/(2*a)q=SQR(d)/(2*a)IFd=0THENPRINT“Onerealroot:”;pELSEx1=p+qx2=p-qPRINT“Tworealroots:“;x1,x2ENDIFELSEPRINT“Norealroot!”ENDIFEND
〖例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=bb=tb=tc=ta=c【程序框图】开始输入a,b,cb>a?是t=aa=b否c>a?是t=a否c>b?t=c是否输出a,b,c交换a,b的值
【程序】INPUT“a,b,c=”;a,b,cIFb>aTHENt=aa=bb=tENDIFIFc>aTHENt=aa=cc=tENDIFIFc>bTHENt=bb=cc=tENDIFPRINTa,b,cEND
读程序,说明程序的运行过程.INPUT“x=:”;xIF9bANDb+c>aTHENPRINT“Yes.”ELSEPRINT“No.”ENDIFEND
INPUT“a=”;aIFaMOD2=0THENPRINT“Even.”ELSEPRINT“Odd.”ENDIFEND
算法中的循环结构是由循环语句来实现的.循环结构有两种-----当型与直到型.满足条件?循环体是否当型循环结构(当条件满足时反复执行循环体)直到型循环结构(反复执行循环体直到条件满足)循环体是否满足条件?对应于程序框图中的两种循环结构,一般程序设计语言中也有当型(WHILE型)和直到型(UNTIL型)两种语句结构。
即WHILE语句和UNTIL语句。(1)WHILE语句的一般格式是:WHILE条件循环体WEND其中循环体是由计算机反复执行的一组语句构成的。WHLIE后面的“条件”是用于控制计算机执行循环体或跳出循环体的。WHILE——当……时候WEND——朝……方向行走
(1)WHILE语句的一般格式是WHILE条件循环体WEND当计算机遇到WHILE语句时,先判断条件的真假,如果条件符合,就执行WHILE与WEND之间的循环体;然后再检查上述条件,如果条件仍符合,再次执行循环体,这个过程反复进行,直到某一次条件不符合为止.这时,计算机将不执行循环体,直接跳到WEND语句后,接着执行WEND之后的语句.满足条件?循环体是否当型循环结构
(2)UNTIL语句的一般格式是:DO循环体LOOPUNTIL条件循环体是否满足条件?直到型循环结构DO——做什么LOOPUNTIL——绕环回线走,直到达到某种条件为止思考:参照其直到型循环结构对应的程序框图,说说计算机是按怎样的顺序执行UNTIL语句的?
(2)UNTIL语句的一般格式是:DO循环体LOOPUNTIL条件循环体是否满足条件?直到型循环结构从UNTIL型循环结构分析,计算机执行该语句时,先执行一次循环体,然后进行条件的判断,如果条件不满足,继续返回执行循环体,然后再进行条件的判断,这个过程反复进行,直到某一次条件满足时,不再执行循环体,跳到LOOPUNTIL语句后执行其他语句,是先执行循环体后进行条件判断的循环语句.
提问:通过对照,大家觉得WHILE型语句与UNTIL型语句之间有什么区别呢?区别:在WHILE语句中,是当条件满足时执行循环体,而在UNTIL语句中,是当条件不满足时执行循环体。WHILE语句的一般格式WHILE条件循环体WENDUNTIL语句的一般格式DO循环体LOOPUNTIL条件
例1.编写程序,计算自然数1+2+3+…+99+100的和.分析:这是一个累加问题.我们可以用WHILE型语句,也可以用UNTIL型语句。
WHILE语句开始结束i=1S=0i=i+1S=S+i输出Si≤100?是否当型循环结构i=1S=0WHLIEi100?否是直到型i=1S=0DOS=S+ii=i+1LOOPUNTILi>100PRINTSEND
开始i=1S=0i≤100?是S=S+ii=i+1否输出S结束当型循环结构变式训练(1):编写程序求:n!=1×2×3×4×5×……×n的值.如何修改?输入nWHILE语句i=1S=0WHLIEi100PRINTSENDS=1101S=S*ii=i+2是开始结束i=1S=0i=i+1S=S+i输出Si>100?否直到型S=1S=S*ii=i+2i>101?
开始结束是f(a)f(m)