1、第二章:第二章:VF程序设计基础程序设计基础考核知识点v常量、变量和表达式常量、变量和表达式v常用函数:字符处理函数,数值计算函常用函数:字符处理函数,数值计算函数,日期时间函数,数据类型转换函数数,日期时间函数,数据类型转换函数和测试函数。和测试函数。v程序与程序文件:程序的概念,程序的程序与程序文件:程序的概念,程序的基本结构,多模块程序设计。基本结构,多模块程序设计。重要考点重要考点:v常量和变量的概念、类型及特点;常量和变量的概念、类型及特点;v表达式的类型;表达式的类型;v函数的使用:函数的使用:trim,left,right,substr,at,like,date,str,val,
2、isnull,empty,vartype,eof,bof,iifv程序与程序文件、程序的选择结构、程程序与程序文件、程序的选择结构、程序的循环结构、多模块程序设计。序的循环结构、多模块程序设计。考点一:常量考点一:常量常量用以表示一个具体、不变的值。常量用以表示一个具体、不变的值。不同类型常量的书写格式不同。分为:不同类型常量的书写格式不同。分为:n数值型:代码数值型:代码N,用来表示一个数量的大小。,用来表示一个数量的大小。无定界符。如:无定界符。如:0,20,-3.14,1.25E-2n货币型:代码货币型:代码Y,用来表示货币值,定界符:,用来表示货币值,定界符:$。n字符型:代码字符型:
3、代码C,就是一串字符,定界符:,就是一串字符,定界符:“”,&必须是在英文状态下输入必须是在英文状态下输入4.日期型:代码日期型:代码D,表示日期,定界符,表示日期,定界符,如:如:2019-07-20,5.日期时间型:代码日期时间型:代码T,表示一个日期时间,定界符,表示一个日期时间,定界符,如:如:2019-07-20 20:10:306.逻辑型:代码逻辑型:代码L,只有逻辑真,逻辑假两种值,定界,只有逻辑真,逻辑假两种值,定界符:符:.逻辑真:逻辑真:.T.t.Y.y.逻辑假逻辑假:.F.f.N.n.考点二:变量:表示可变的值。考点二:变量:表示可变的值。分为内存变量和字段变量。分为内存
4、变量和字段变量。1.简单内存变量:简单内存变量:每个变量都有一个名字每个变量都有一个名字,可以通,可以通过变量名访问变量的值。过变量名访问变量的值。变量名必须以字变量名必须以字母、汉母、汉字或者下划线字或者下划线开头开头,后接,后接汉字、字母、下划线、汉字、字母、下划线、数字数字。(在自治区的笔试考试中会出现此类题目在自治区的笔试考试中会出现此类题目)给变量赋值:给变量赋值:变量名变量名=表达式表达式,store 表达式表达式 to 变量名变量名1,变量名变量名2显示变量的值:?变量名(显示变量的值:?变量名(换行显示换行显示)?变量名(?变量名(不换行显示不换行显示)n数组变量:数组变量:由
5、一系列数组元素组成,每一个数由一系列数组元素组成,每一个数组元素相当于一个内存变量。数组要先定义后组元素相当于一个内存变量。数组要先定义后使用。使用。在一切使用简单内存变量的地方都可以在一切使用简单内存变量的地方都可以使用数组;但在同一运行环境中,数组名不能使用数组;但在同一运行环境中,数组名不能与简单变量名重复;与简单变量名重复;n 数组在定义后数组在定义后,系统自动赋初值系统自动赋初值.F.,可以用一,可以用一维数组的形式访问二维数组。维数组的形式访问二维数组。(1)定义数组定义数组:declare 或或 dimension 数组名(下标数组名(下标n,n)如:如:dimesion a(5
6、)&定义了一个有定义了一个有5个元素的一维数组个元素的一维数组,数组名为数组名为a。declare bus(3,4)&定义了有定义了有12个元素的二维数组个元素的二维数组,数组名为数组名为bus。(2)给数组赋值给数组赋值,与前相同。,与前相同。如:如:a(1)=10,a(4)=“city”,a=25 bus(1,1)=“17路路”,bus(10)=“101”2019-9v(15)如果有定)如果有定 dimension data(3),则则data(2)的初值是:的初值是:_。A)整数)整数 0 B)不定值)不定值 C)逻辑真)逻辑真 D)逻辑假)逻辑假 3.字段变量:表中的每个字段,就是一字
7、段变量:表中的每个字段,就是一个字段变量。个字段变量。如果字段变量与内存变量同名,那如果字段变量与内存变量同名,那么,访问内存变量时要在变量名前么,访问内存变量时要在变量名前加前缀:加前缀:m.内存变量名内存变量名或者或者m-内内存变量名,存变量名,否则系统访问的将是同否则系统访问的将是同名的字段变量。名的字段变量。真实考题:真实考题:(22)假设职员表已在当前工作区打开,其)假设职员表已在当前工作区打开,其当前记录的当前记录的“姓名姓名”字段值为字段值为“张三张三”(字符型,宽度为(字符型,宽度为6)。在命令窗口输入并)。在命令窗口输入并执行如下命令:执行如下命令:姓名姓名=姓名姓名-“您好
8、您好”?姓名姓名那么主窗口中将显示那么主窗口中将显示A)张三张三 B)张三张三 您好您好 C)张三您好张三您好 D)出错出错v考点三:内存变量的常用命令考点三:内存变量的常用命令n显示内存变量:显示内存变量:list memory|display memory1.清除内存变量:清除内存变量:clear memory|release 变量名变量名alln表中数据与数组数据之间的交换表中数据与数组数据之间的交换n将表的当前记录复制到数组将表的当前记录复制到数组n 格式:格式:scatter fields to n将数组数据复制到表的当前记录将数组数据复制到表的当前记录 格式:格式:gather f
9、rom fields 例:例:use 学生学生 dimesion a(4),b(3)scatter to a scatter fields 姓名,年龄姓名,年龄 to b?a(1),a(2),a(3),a(4),b(1),b(2),b(3)例:例:dimesion b(4)b(1)=“01001”b(2)=“宁宁宁宁”gather from b disp2.2 表达式v考点四:考点四:数值、字符与日期时间表达式数值、字符与日期时间表达式 表达式是指由常量、变量、函数通过运算表达式是指由常量、变量、函数通过运算符连接形成的式子。符连接形成的式子。优先级优先级运算符运算符说明说明1()2*或或 乘
10、方乘方3*/%乘,除,求余乘,除,求余4+-加,减加,减求余规则求余规则当被除数与除数符号相同时,直接求出余数;当被除数与除数符号相同时,直接求出余数;当被除数与除数符号相异时,最后余数为两数当被除数与除数符号相异时,最后余数为两数相除的余数再加除数的值。相除的余数再加除数的值。例:例:9*(5-3)%3*5=_ 自治区考题:自治区考题:请将以上例题中的数学表达式改写成请将以上例题中的数学表达式改写成VF语言中语言中的表达式。的表达式。n数值表达式数值表达式2.字符表达式:用字符表达式:用+或或-将字符型数据连将字符型数据连接起来,其结果仍是字符型。接起来,其结果仍是字符型。例:例:“ab ”
11、+“1”=_ “ab ”-“1”=_ 运算符运算符作用作用备注备注+将两个字符串连接起来将两个字符串连接起来 优先级优先级 相相 同同-将两个字符串连接起来,将两个字符串连接起来,如果前一个字符串尾部如果前一个字符串尾部有空格,则移到新字符有空格,则移到新字符串的尾部。串的尾部。3.日期时间表达式日期时间表达式几个相关命令几个相关命令nSet strictdate to 0 不进行严格的日期型格式不进行严格的日期型格式检查。检查。n Set strictdate to 1 进行严格的日期型格式进行严格的日期型格式检查。检查。n2)Set century on|off 打开或关闭世纪年份打开或关
12、闭世纪年份的显示的显示n3)Set mark to “符号符号”规定年月日之间的规定年月日之间的分隔符分隔符1)4)Set date to ymd|mdy|dmy 显示日期时显示日期时年月日的顺序年月日的顺序日期运算日期运算n日期日期天数天数 n如如:2019-07-10 5n日期日期-日期日期 n如如:2019-07-10 2019-05-10n日期时间日期时间秒数秒数 n如如:2019-07-10 12:10:00 504)日期时间日期时间-日期时间日期时间如如:2019-07-10 12:10:00-2019-07-10 11:10:00 n关系表达式关系表达式运算符运算符说明说明运算符
13、运算符说明说明小于小于大于大于=大于等于大于等于=等于等于=全等(精确比较)全等(精确比较),#,!=不等于不等于$子串包含测试子串包含测试提示:提示:1)全等只有在两个字符串完全相等时,结果才为真;)全等只有在两个字符串完全相等时,结果才为真;2)等于的结果受)等于的结果受set exact on|off 的影响,如:的影响,如:set exact on?“ab”=“a”set exact off?“ab”=“a“结果:.F.结果:.T.顺序相同,字母相同就为真.顺序相同,左包含右就为真.3)$:如果前一个字符串是后一个字符串的如果前一个字符串是后一个字符串的子串,得到逻辑真,否则,得到逻辑
14、假。子串,得到逻辑真,否则,得到逻辑假。如:如:“ab”$“12ab34”“我我“$“我们我们”“香蕉香蕉”$“水果水果”顺序相同,右包含左就为真.n逻辑表达式逻辑表达式表达式表达式1表达式表达式1表达式表达式1 AND 表达式表达式2表达式表达式1 OR 表达式表达式2.T.T.T.T.T.F.F.T.F.T.F.T.F.F.F.F.全真才真全真才真全假才假全假才假v各运算符的优先级别:先括号,再算术、字符、日期运算符,各运算符的优先级别:先括号,再算术、字符、日期运算符,然后是关系运算符,最后是逻辑运算符。然后是关系运算符,最后是逻辑运算符。算术、字符、日期运算符算术、字符、日期运算符关系
15、运算符关系运算符括号括号逻辑运算符逻辑运算符6.运算优先级:非运算优先级:非与与或或例:例:“we”$“rew”and 5+6=11(10%3=1)and(15%2=0)or 电脑电脑!=计算机计算机2.3 常用函数v考点五:数值函数考点五:数值函数 数值函数的参数和返加值一般都是数值型数据。数值函数的参数和返加值一般都是数值型数据。v取表达式的绝对值取表达式的绝对值格式:格式:ABS(Nexp)v返回数值的符号,若是正数,返回返回数值的符号,若是正数,返回1;负数返回;负数返回-1,零返回零返回0格式:格式:SIGN(Nexp)v求表达式的平方根求表达式的平方根格式:格式:SQRT(Nexp
16、)v得到圆周率,无参数得到圆周率,无参数格式:格式:PI()v求整数,只保留数值的整数部分求整数,只保留数值的整数部分格式格式:INT(Nexp)v对对Nexp1按按Nexp2规定的位数进行四舍规定的位数进行四舍五入五入格式格式:ROUND(Nexp1,Nexp2)v求一组数中的最大值或最小值求一组数中的最大值或最小值格式格式:MAX(Nexp1,)MIN(Nexp1,)v求求Nexp1除以除以Nexp2的余数的余数格式格式:MOD(Nexp1,Nexp2)v考点六考点六:字符函数字符函数n返回字符串的长度,注意:一个汉字占两个返回字符串的长度,注意:一个汉字占两个字符空间字符空间格式格式:L
17、EN(Cexp)n大小写字母转换大小写字母转换UPPER(Cexp)小写转大写小写转大写LOWER(Cexp)大写转小写大写转小写n 3.生成指定的空格字符生成指定的空格字符 格式格式:SPACE(Nexp)n删除字符串的前后空格删除字符串的前后空格TRIM(Cexp1)删除尾部空格删除尾部空格LTRIM(Cexp1)删除前端空格删除前端空格ALLTRIM(Cexp1)删除前后空格删除前后空格n取指定字符串的子串取指定字符串的子串LEFT(Cexp1,长度)长度)对对Cexp1从从左左侧按指侧按指定长度截取子串定长度截取子串RIGHT(Cexp1,长度)长度)对对Cexp1从从右右侧按指侧按指
18、定长度截取子串定长度截取子串SUBSTR(Cexp1,起始位置,起始位置,长度长度)对对Cexp1 从起始位置开始截取指定长度的字符串从起始位置开始截取指定长度的字符串关于截取函数的练习关于截取函数的练习?LEFT(“GOOD BYE!”,2)?RIGHT(“GOOD BYE!”,3)?SUBSTR(“GOOD BYE!”,6,2)趣味练习趣味练习1.将将”DCBA”转换成转换成”ABCD”2.将将”去去来来去去来来”转换成转换成”来来去去来来去去”3.将将”你爱我你爱我”转换成转换成”我爱你我爱你”4.将将”移转叫呼情爱移转叫呼情爱”转换成转换成”爱情呼叫转移爱情呼叫转移”6.返回字符串返回
19、字符串1在字符串在字符串2中出现的次数中出现的次数OCCURS(Cexp1,Cexp2)Store“abracadabra”to s?occurs(“a”,s)?occurs(“b”,s)?occurs(“c”,s)?occurs(“e”,s)7.求字符串求字符串1在字符串在字符串2中出现的位置中出现的位置AT(Cexp1,Cexp2,Nexp)Store“This is Visual Foxpro”to a?AT(“fox”,a)?ATC(“fox”,a)?AT(“is”,a,2)?AT(“xo”,a)8.子串替换函数子串替换函数用字符串用字符串2替换字符串替换字符串1中指定的字符中指定的字
20、符STUFF(Cexp1,起始位置,长度,起始位置,长度,Cexp2)S1=“GOOD BYE!”S2=“MORNING”?STUFF(S1,6,3,S2)?STUFF(S1,1,4,S2)9.字符替换函数字符替换函数CHRTRAN(Cexp1,Cexp2,Cexp3)(1)当第一个字符串中的一个或多个相同字符与第二个字符串)当第一个字符串中的一个或多个相同字符与第二个字符串中的某个字符相匹配时中的某个字符相匹配时,就用第三个字符串中的对应字符就用第三个字符串中的对应字符(与第二与第二个字符串的那个字符具有相同位置个字符串的那个字符具有相同位置)替换这些字符。替换这些字符。?CHRTRAN(“
21、ABACAD”,”ACD”,”X12”)(2)若第三个字符串包含的字符个数少于第二个字符串包含的)若第三个字符串包含的字符个数少于第二个字符串包含的字符个数,导致没有对应字符字符个数,导致没有对应字符,那么第一个字符串中相匹配的各那么第一个字符串中相匹配的各字符将被删除。字符将被删除。?CHRTRAN(“计算机计算机ABC”,”计算机计算机”,”电脑电脑”)(3)如果第三个字符串包含的个数多于第二个字符串包含的个)如果第三个字符串包含的个数多于第二个字符串包含的个数数,多余的字符被忽略。多余的字符被忽略。?CHRTRAN(“大家好大家好!”,”大家大家”,”你们好你们好”)分为三种情况分为三种
22、情况n比较两个字符串对应位置上的字符,若全比较两个字符串对应位置上的字符,若全等,返回等,返回.T.,否则返回,否则返回.F.LIKE(Cexp1,Cexp2)注意:注意:&只可在只可在Cexp1中可使用通配符中可使用通配符&通配符有两种通配符有两种:*表示任意零个、一个或多个字符。表示任意零个、一个或多个字符。?表示任意一个字符。?表示任意一个字符。&返回值是逻辑型。返回值是逻辑型。store“abc”to x y=“abcd”?like(“abc*”,x)?like(“ab*”,x)?like(“abc*”,y)?like(x,y)?like(“?b?”,x)?like(“Abc*”,x)
23、v考点七:日期和时间函数考点七:日期和时间函数n系统日期和时间函数系统日期和时间函数nDATE()返回当前系统日期返回当前系统日期,结果为日期结果为日期型型;nTIME()返回当前系统时间,返回当前系统时间,结果为字符结果为字符型型;1.DATETIME()返回当前系统日期时间,返回当前系统日期时间,结果为结果为日期时间型日期时间型n求年份、月份、天数求年份、月份、天数YEAR(Dexp)MONTH(Dexp)DAY(Dexp)3.求时,分、秒求时,分、秒HOUR(Texp)MINUTE(Texp)SECOND(Texp)考点八:数据类型转换函数考点八:数据类型转换函数1.将将数值型数值型按指
24、定的长度和小数位数按指定的长度和小数位数转换为字符型转换为字符型STR(Nexp,长度长度,小数位数小数位数)功能:将功能:将的值转换成字符串,转换时根据需要自的值转换成字符串,转换时根据需要自动进行四舍五入。返回字符串的理想长度动进行四舍五入。返回字符串的理想长度L应该是应该是值的整数部分位数加上值的整数部分位数加上值,再加上一位小数值,再加上一位小数点。点。&的默认值为的默认值为0,的默认值为的默认值为10.例如:例如:?str(-123.456,8,3)?str(123.456,7,3)?str(-123.456)?str(123.456)(1)如果如果值大于值大于L,则字符串加前导空格
25、以满足规定的,则字符串加前导空格以满足规定的要求;要求;?str(-123.456,9,2)?str(123.456,9,2)(2)如果如果值大于等于值大于等于值的整数部分位数(包括值的整数部分位数(包括负号)但又小于负号)但又小于L,则优先满足整数部分而自动调整小数位数;,则优先满足整数部分而自动调整小数位数;?str(-123.456,6,2)?str(123.456,5,2)(3)如果如果值小于值小于值的整数部分位数则返回值的整数部分位数则返回一串星号(一串星号(*)。)。?str(-123.456,3)?str(-123.456,2)还有三种特殊情况还有三种特殊情况2.将字符串将字符串
26、(包括小数点包括小数点,符号符号)转换为数值型转换为数值型VAL(Cexp)?VAL(123.+45)分为两种特殊情况分为两种特殊情况:(1)若字符串中出现非数字字符,那么只转换前面的部分;若字符串中出现非数字字符,那么只转换前面的部分;?VAL(123.+4A5)?VAL(123.+A45)(2)若字符串中的首字符不是数字符号,则返回数值零,但若字符串中的首字符不是数字符号,则返回数值零,但忽略前导空格。忽略前导空格。?VAL(“A123.+A45)?VAL(“A-58.+A45)3.字符串和日期或日期时间函数转换字符串和日期或日期时间函数转换CTOD ,CTOT ,DTOC ,TTOC4.
27、宏替换函数宏替换函数:替换出字符型变量的值替换出字符型变量的值格式格式:&.例如例如:X1=58.22“?41.78+&X1 N=886,M=345,K=“M+N“?1+&K考点九考点九:测试函数测试函数1.值域测试值域测试:判断表达式判断表达式1是否介于表达式是否介于表达式2和和表达式表达式3之间之间BETWEEN(Nexp1,Nexp2,Nexp3)例如例如:?BETWEEN(150,100,200)?BETWEEN(100,150,200)?BETWEEN(300,200,100)2.空值测试空值测试ISNULL(Exp)只有在表达式的值是只有在表达式的值是:.null.时时,结果才为真
28、结果才为真,其它都为假。其它都为假。3.“空空”值测试值测试EMPTY(Exp)只有在表达式的值是只有在表达式的值是:0,“”,.F.时,时,结果才为真结果才为真,其它都为假。其它都为假。记忆函数记忆函数n数据类型测试数据类型测试VARTYPE(Exp)n表文件测试表文件测试EOF()测试指针是否指到了测试指针是否指到了表文件表文件的结尾的结尾;BOF()测试指针是否指到了测试指针是否指到了表文件表文件的开始的开始;考点考点 十十 3.条件测试条件测试IIF(Lexp,exp1,exp2)若逻辑表达式为真若逻辑表达式为真,则返回则返回exp1的值的值,否则返否则返回回exp2的值的值X=100
29、Y=300?IIF(X100,X-50,X+50)?IIF(Y100,Y-50,Y+50)函数部分练习题:函数部分练习题:填空题:填空题:1.将数值型转换成字符型的函数是(将数值型转换成字符型的函数是()。)。2.将字符型转换成数值型的函数是(将字符型转换成数值型的函数是()。)。3.求当前系统时间的函数是(求当前系统时间的函数是(),当前系),当前系统时间的返回值的数值类型是(统时间的返回值的数值类型是()。)。4.求当前年份的函数是(求当前年份的函数是(),他的返回值),他的返回值的数值类型是(的数值类型是()5.?len(alltrim(“计算机等级计算机等级”)的的结果是结果是:6.表
30、示表示”1962年年10月月27日日”的日期型常量应该写为的日期型常量应该写为:7.下列符号中下列符号中,不常作为日期型常量分隔符的是不常作为日期型常量分隔符的是:A.斜杠斜杠(/)B.连字符连字符(-)C.句点句点(.)D.脱字符脱字符()8.在下面的数据类型中在下面的数据类型中,默认值为默认值为.F.的是的是:A.数值型数值型 B.字符型字符型 C.逻辑性逻辑性 D.日期型日期型9.在在VF中中,内存变量的数据类型不包括的是内存变量的数据类型不包括的是:A.数值型数值型 B.货币型货币型 C.备注型备注型 D.逻辑型逻辑型10.在下列函数中在下列函数中,函数值为数值型的是函数值为数值型的是
31、:A.AT(“中国中国”,”中国计算机中国计算机”)B.CTOD(“04/30/2019”)C.BOF()D.SUBSTR(DTOC(DATE(),7)11.函数函数STUFF(“计算机计算机”,5,4,”信息报信息报”)的返回值的返回值:A.计算机信息报计算机信息报 B.计算信息报计算信息报 C.计算机信息计算机信息 D.机信息报机信息报12.已知已知X=45,则函数则函数VARTYPE(X)的结果是的结果是:13.假定系统日期就是今天的日期假定系统日期就是今天的日期,则执行命令则执行命令X1=MOD(YEAR(DATE()-2000,3)后后,X1的值是的值是:14.STR(123.545
32、4,6,3)的值是的值是:15.在命令窗口输入如下命令在命令窗口输入如下命令:STORE 2*3 TO X?X 的返回值是的返回值是:16.Store 3*5=15 to xY=.F.?x.AND.Y 的返回值是的返回值是:17.有如下赋值语句有如下赋值语句,结果为结果为”大家好大家好”的表达式是的表达式是:A=“你好你好”B=“大家大家”A.b+AT(a,1)B.b+RIGHT(a,1)C.b+LEFT(a,3,4)D.b+RIGHT(a,2)2.4 程序与程序文件v考点十一:基础考点十一:基础v概念:程序是能够完成一定任务的命令的集合。当运概念:程序是能够完成一定任务的命令的集合。当运行程
33、序时,系统会按照一定的次序自动执行程序中的行程序时,系统会按照一定的次序自动执行程序中的命令。命令。v程序文件的建立程序文件的建立“文件文件”“新建新建”“程序程序”或者或者 modify commandv程序文件的执行程序文件的执行1)单击工具栏上的)单击工具栏上的“!”2)Ctrl+E3)命令:命令:do 程序文件名程序文件名4)CANCEL&终止程序的运行终止程序的运行,清除所有私有变量清除所有私有变量,返回命令窗口返回命令窗口.DO&转去执行另一个程序转去执行另一个程序.RETURN&结束当前程序的执行结束当前程序的执行,返回到调用它的返回到调用它的上级程序上级程序,若无上级程序则返回
34、命令窗口若无上级程序则返回命令窗口.QUIT&退出退出VF系统系统,返回操作系统返回操作系统.程序文件的扩展名是:_例题:编写程序,计算圆的周长和面积?CLEAR&清除清除VF主窗口或当前用户自定义窗口的主窗口或当前用户自定义窗口的全部内容全部内容 r=3 *设置半径设置半径 *依次计算周长和面积依次计算周长和面积P=2*PI()*r&函数函数PI()返回圆周率返回圆周率a=PI()*r2*输出计算结果输出计算结果?周长周长=,P?面积面积=,aRETURN 考点十二:简单的输入输出命令v1.INPUT 命令命令格式:格式:input to 如:如:input “请输入您的姓名请输入您的姓名”
35、to xm input “请输入您的出生日期请输入您的出生日期”to rq功能:该命令等待用户从键盘输入数据,当用户回功能:该命令等待用户从键盘输入数据,当用户回车后,系统将表达式的值存入指定的内存变量。车后,系统将表达式的值存入指定的内存变量。注释:注释:输入的值可以是常量、变量、表达式,但不能输入的值可以是常量、变量、表达式,但不能不输入内容,直接按回车。输入的内容要加定界符。不输入内容,直接按回车。输入的内容要加定界符。2.ACCEPT 命令命令格式:格式:accept to 功能:该命令等待用户从键盘输入功能:该命令等待用户从键盘输入字符串字符串,当用户,当用户回车后,系统将字符串存入
36、指定的内存变量。回车后,系统将字符串存入指定的内存变量。注释:注释:该命令只能接收字符串。用户输入时不该命令只能接收字符串。用户输入时不必加定界符,如果不输入任何内容而直接回必加定界符,如果不输入任何内容而直接回车,系统会把空字符串赋给指定的内存变量。车,系统会把空字符串赋给指定的内存变量。3.WAIT格式:格式:wait to 内存变内存变量量 window.功能:该命令显示字符表达式的值作为提示功能:该命令显示字符表达式的值作为提示信息,暂停程序的执行,直到用户按任意键信息,暂停程序的执行,直到用户按任意键或单击鼠标,程序才继续运行。或单击鼠标,程序才继续运行。2.5 程序的基本结构v程序
37、结构是指程序中命令或语句执行的流程结构,有程序结构是指程序中命令或语句执行的流程结构,有3种基种基本结构:本结构:顺序,顺序,选择结构,选择结构,循环结构循环结构v顺序顺序accept“accept“请输入您的姓名请输入您的姓名”to nto ninput“input“请输入您的生日请输入您的生日”to bto b?您的姓名是:您的姓名是:,n,n?您的年龄是:您的年龄是:,year(date()-,year(date()-year(b)year(b)考点十三:选择结构v选择结构包括:条件语句和分支语句选择结构包括:条件语句和分支语句 1.条件语句条件语句 格式:格式:If else endi
38、f逻辑表达式逻辑表达式为真?为真?语句序列语句序列1 1ENDIFENDIF后面的语句后面的语句NY语句序列语句序列2 2例例1:编写程序:从键盘接收编写程序:从键盘接收2个数个数x和和y,然后判,然后判断断x能否被能否被3整除。如果整除。如果x能被能被3整除,则整除,则y的值的值增加增加x,否则,否则y的值不变。的值不变。ClearInput x=to xInput y=to yIf x%3=0 y=y+xelse y=y Endif?y=,yinput x=to x input y=to y if x/3=int(x/3)y=y+x else y=y endif?y=,y例例 2:2:cl
39、earinput 输入您的年龄输入您的年龄 to ageif age=18?已成年已成年else?未成年未成年endif例例3:Input“a=“to aIf a=10 s=0EndifS=1?sInput“a=”to a If a=10 s=0 Else S=1 Endif?s例例4:计算运费:计算运费货物重量不超过货物重量不超过50公斤时公斤时,每公斤每公斤0.50元元,重量超过重量超过50公斤时超公斤时超过部分每公斤加收过部分每公斤加收0.40元元,编制计算运费的程序编制计算运费的程序.INPU重量重量=TO XY=0.5*XIF X50 Y=Y+0.4*(X-50)ENDIF?运费运费
40、=,YINPU重量重量=TO XIF X50 Y=25+0.9*(X-50)ELSE Y=0.5*XENDIF?运费运费=,Y解法1解法2解法解法3INPU重量重量=TO XIF X50 Y=25+0.9*(X-50)EndifIf x=50 Y=0.5*XENDIF?运费运费=,Y例例5:根据用户输入的考试成绩,判断并显示根据用户输入的考试成绩,判断并显示 相应的成绩等级。相应的成绩等级。v60以下以下不及格;不及格;v60-80合格;合格;v80-90-优良;优良;v90以上以上优秀。优秀。ClearInput输入考试成绩输入考试成绩 to chjIf chj60 dj=不及格不及格Els
41、e if chj 80 dj=合格合格 else if chj90 dj=优良优良 else dj=优秀优秀 endif endifEndif?成绩等级:成绩等级:+djClearInput 输入考试成绩输入考试成绩 to chjIf chj60 dj=不及格不及格Else if chj 90 dj=通过通过 else dj=优秀优秀 endifEndif?成绩等级:成绩等级:+djreturn注意:注意:if和和endif必必须成对出现;条件须成对出现;条件语句可以嵌套,但语句可以嵌套,但是不能出现交叉。是不能出现交叉。2.分支语句分支语句 do case DO CASECASE 条件条件1
42、 语句序列语句序列1CASE 条件条件2 语句序列语句序列2OTHERWISE 语句序列语句序列n+1ENDCASEENDCASE后面的语句YN语句序列2逻辑表达式1语句序列1语句序列n+1逻辑表达式n逻辑表达式2语句序列nNNYY说明说明v执行执行do case时,依次判断时,依次判断case后面的条件后面的条件是否成立,如果某个是否成立,如果某个case的条件成立,就执的条件成立,就执行该行该case和下一个和下一个case之间的语句序列,然之间的语句序列,然后执行后执行endcase后的语句。后的语句。v如果所有的条件都不成立,则执行如果所有的条件都不成立,则执行otherwise与与e
43、ndcase之间的语句。之间的语句。例例1 1:根据用户输入的考试成绩,判断并显示根据用户输入的考试成绩,判断并显示 相应的成绩等级。相应的成绩等级。60以下以下不及格;不及格;60-90 合格;合格;90以上以上优秀优秀.Input“输入考试成绩输入考试成绩”to sDo case case s60?”不及格不及格”case s 90?“优秀优秀”endcase例例2:计算分段函数的值计算分段函数的值 2x-1(x0)3x+5(0=x3)F(x)=x+1(3=x5)5x-3(5=x=10)Clear Input “输入输入x的值的值”to xDo caseCase x0 f=2*x-1Cas
44、e x3 f=3*x+5Case x5 f=x+1Case x=10 f=7*x+2endcase?“f的值为的值为”,freturn例例:3:3 假设成绩表当前记录中假设成绩表当前记录中”计算机计算机”字段的值为字段的值为85,85,修改并执行下面程序段后使输出结果为优秀修改并执行下面程序段后使输出结果为优秀Clear Do case Case 计算机计算机=60?“计算机等级是计算机等级是”+“及格及格”Case 计算机计算机=75?“计算机等级是计算机等级是”+“良好良好”Case 计算机计算机=85?“计算机等级是计算机等级是”+“优秀优秀”endcase 求程序的计算结果A=10B=
45、20C=40IF ABIF CAC=A+BELSE C=A-BENDIFENDIF?C1.do-while循环循环DO WHILE LOOP EXIT ENDDOLOOP 无条件循环无条件循环EXIT 无条件退出无条件退出ENDDOENDDO后面的语句后面的语句N循环体循环体条件满足条件满足Y考点十四:考点十四:循环结构循环结构例例1 1:s=0i=1do while i=5s=s+ii=i+1enddo?si=1Do while i=1Y=Y+SUBSTR(X,L-1,2)L=L-2ENDDO?Y例例3:计算计算s=1+2+3+100.思路:思路:引进变量引进变量 s 和和 i。s 用来保存
46、累加的结果,初值为用来保存累加的结果,初值为0;i 既既作为被累加的数据,也作为控制循环条件是否成立的变量,初作为被累加的数据,也作为控制循环条件是否成立的变量,初值为值为1.重复执行命令:重复执行命令:s=s+i 和和 i=i+1,直到,直到 i 的值超过的值超过100,每执行一次,每执行一次,s 的值增加的值增加i,i 的值增加的值增加1。clearS=0i=1Do while i=3)”to nF=0i=2Do while i=n-1 if mod(n,i)0 i=i+1 loop else f=1 exit endifEnddoIf f=0?Str(n,3)+”是素数是素数”Else?
47、Str(n,3)+”不是素数不是素数”EndifreturnInput“请输入自然数请输入自然数(=3)”to nF=0i=2Do while i=n-1 if mod(n,i)=0 f=1 exit endifEnddoFOR 变量变量=初值初值 TO 终值终值 STEP步长步长 语句序列语句序列ENDFOR|NEXT 变量变量NEXT后面的语句N变量赋初值循环体在范围内Y变量增加一个步长2.FOR循环循环*循环体中不应包含改变循环循环体中不应包含改变循环 变量值的命令变量值的命令,否则循环次数否则循环次数 将改变将改变v该语句通常用于实现循环次数已确该语句通常用于实现循环次数已确定的情况。
48、执行该语句时,首先将定的情况。执行该语句时,首先将初值赋给循环变量,然后判断条件初值赋给循环变量,然后判断条件是否成立,若循环条件成立,则执是否成立,若循环条件成立,则执行循环,然后循环变量增加一个步行循环,然后循环变量增加一个步长值再次判断循环条件是否成立,长值再次判断循环条件是否成立,若循环条件不成立,则结束该循环若循环条件不成立,则结束该循环语句。语句。v功能注释:功能注释:n步长默认值为步长默认值为1;n初值、终值和步长的值一旦确定,不再改变;初值、终值和步长的值一旦确定,不再改变;n步长为正数,初值小于终值;为负数,初值步长为正数,初值小于终值;为负数,初值大于终值;大于终值;n循环
49、次数的计算:循环次数的计算:int(终值初值终值初值)/步长步长)+1用用exit 可以退出循环,循环不再执行;用可以退出循环,循环不再执行;用 loop 可以结束本次循环,再到循环的开始处可以结束本次循环,再到循环的开始处继续执行循环。继续执行循环。例例1 1:Clear Dimension A(6)For k=1 to 6A(k)=20-2*kEndfor?A(1),A(2),A(3),A(4),A(5),A(6)练习题练习题 1.分别用分别用FOR循环和循环和DO WHILE循环计循环计算算1+2+3+30的值?的值?2.用用FOR循环输出循环输出1100之间所有不能之间所有不能被被7整
50、除的数?(提示:使用整除的数?(提示:使用LOOP)练习题答案S=0FOR I=1 TO 30 S=S+IENDFOR?S S=0I=0DO WHILE I=1A(K)=A(K)-A(K+1)K=K-1ENDDO?A(1),A(3),(5)例例3:从键盘上输入从键盘上输入10个数,然后找出其中最大值和最小值。个数,然后找出其中最大值和最小值。思路:思路:假定已经找出假定已经找出n-1个数中的最大值个数中的最大值ma(或最小值(或最小值mi),),现在再读入第现在再读入第n个数个数a,那么那么a和和ma(或(或mi)中的较大者)中的较大者(或较小者)就是(或较小者)就是n个数中的最大值(或最小值