APPINVENTOR编程基础变量块变量是在内存中占据一定的存储单元,其值可以改变的量。在AI中,变量必须先进行声明,然后才可以使用。AI的变量块里面有五种类型的块变量•变量名称必须以英文字母、下划线或中文开头,可包括英文字母、下划线、数字和中文,如Sum,S1,求和,_a2都为合法的变量名。•AI中变量可以接受任何类型的值•任何时候都可以对变量的名称进行重命名,所有引用过该变量原有名称的块将自动更新。•AI中的变量类型有数字、文本、逻辑、列表、颜色。变量•在AI中,变量包括全局变量和局部变量二种•全局变量可以用在应用的所有过程及事件处理函数中,是一个独立的块。在应用的运行过程中,可以在应用的任何部分对全局变量的值引用和修改。全局变量•定义使用全局变量•修改变量的值计算器•例1、定义一个简单的计算器,计算两个数字的和计算器组件所属组件组命名用途属性文本输入框用户界面TextBox1输入第一个加数默认文本输入框用户界面TextBox2输入第二个加数默认文本输入框用户界面TextBox3显示和默认按钮用户界面Button1成绩等级判定文本:计算标签用户界面Label1显示加号文本:+标签用户界面Label2显示等号文本:=代码块局部变量•局部变量块是一个可扩展块,用于在过程或事件处理函数中,创建一个或多个只在局部有效的变量,因此每当过程或事件处理函数开始运行时,这些变量都被赋予同样的初始值。它的有效作用范围仅限于块内。局部变量•定义局部变量局部变量•初始化局部变量局部变量•使用局部变量局部变量•将例1的计算器修改成局部变量来实现带返回值的局部变量块的使用控制块•顺序结构、选择结构和循环结构是程序设计的三种基本结构,已经证明:任何可解问题的解决过程都是由这三种结构通过有限次组合而成的。•控制块是AI编程的基本结构,主要包括流程控制块:选择和循环,屏幕控制相关操作等。选择选择•三种基本结构选择•(a)“如果...则...”进行条件测试:如果测试结果为真(T),则按顺序执行“则”右边的块;否则(F)跳过这些块。条件件语句模块TF选择•(b)“如果...则...否则...”进行条件测试:如果测试结果为真,则按顺序执行“则”右边的块;否则,按顺序执行“否则”右边的块。条件T语句模块1语句模块2F选择•(c)“如果...则...否则,如果...则...”进行条件测试:如果测试结果为真,则按顺序执行第一个“则”右边的块;否则做下一步的条件测试“否则如果”,如果测试结果为真,则按顺序执行第二个“则”右边的块,否则按顺序执行最后一个“否则”右边的块。T条件1TF条件2语句模块1语句模块2选择•例2:成绩等级判定,开发一个App,输入一个成绩,单击判定按钮输出其等级。判定规则如下:如果成绩大于等于90分,等级判定为优秀;如果成绩大于等于80分并且小于90分,等级判定为良好;如果成绩大于等于70分并且小于80分,等级判定为中等;如果成绩大于等于60分并且小于70分,等级判定为及格;如果成绩小于60分,等级判定为不及格。选择•关于代码几点说明:•(1)用于条件判断的“大于等于”、“小于”等关系运算符如图所示进行添加。关系运算符可以通过单击“=”号,在弹出的下拉列表框中进行选择改变。选择•组件说明组件所属组件组命名用途属性文本输入框用户界面文本输入框1供用户输入分数默认按钮用户界面按钮1成绩等级判定文本:成绩等级标签用户界面标签1显示等级文本:空(删除掉原有文本不输入任何东西)选择•如果满足分数大于等于80分,并且小于90分,则等级为“良好”。这里用到的逻辑运算符“并且”选择•代码块选择•下面改写成嵌套结构循环•在AI中存在计数循环(for)、逐项循环(for……inlist)和条件循环(while)三种循环结构。循环•(a)计数循环从循环计数变量的起始值(如1)开始执行循环体内语句块,执行完成后,循环计数变量增加循环间隔指定的增量(如1),然后重复执行上面的操作,值到终止值(如5)。•例3:设计如图所示应用,用户输入一个正整数n,计算1+2+……+n的结果。循环组件所属组件组命名用途属性文本输入框用户界面文本输入框_n输入正整数n默认按钮用户界面按钮_计算计算1+2+…n文本:计算1到n的和标签用户界面标签1提示文本:结果为:标签用户界面标签_结果显示结果文本:空注:组件和变量的名称一般按照其含义命名,做到见名知义。循环•代码循环•(b)逐项循环,针对列表中的每一项重复执行相同的操作。其中“列表项”代表正在参与运算的列表项。•例4:随机产生4个数,并计算4个数的和。循环•组件说明组件所属组件组命名用途属性按钮用户界面按钮_计算计算随机数的和文本:计算随机数的和标签用户界面标签1提示文本:结果为:标签用户界面标签_结果显示结果文本:空循环•代码循环•(c)条件循环。该循环首先进行条件测试,当测试结果为真时,执行循环体内的语句块,然后再次进行条件测试,如果为真,执行同样一组操作;重复以上操作到当条件测试为假,跳出循环。•例5:将例3中的循环修改成条件循环。循环•代码条件返回•条件返回块“如果…则…否则…”,首先进行条件测试,如果测试结果为真,按顺序执行“则”右边的模块,得到结果并将值返回;如果测试结果为假,执行“否则”右边的模块,得到结果并将值返回。条件返回•例6:计算标准体重。我国常用Brcoa改良公式计算标准体重,其计算方法如下:•男生:标准体重=(身高-100)×0.90•女生:标准体重=(身高-105)×0.92条件返回•组件说明组件所属组件组命名用途属性按钮用户界面按钮_计算计算标准体重文本:标准体重(千克)标签用户界面标签1提示文本:您的身高:(厘米)标签用户界面标签2提示文本:您的性别:(男,女)标签用户界面标签_结果显示结果文本:空文本输入框用户界面文本输入框_身高输入身高默认文本输入框用户界面文本输入框_性别输入性别默认条件返回•代码带返回值的执行模块•带返回值的执行模块运行“执行”区域中的代码块并返回一条语句,用于在赋值前插入执行某个过程。求值但忽视结果•求值但忽视结果模块运行所连接的代码块,但不返回运算值,用于调用求值过程但不需要其运算值。打开屏幕•打开屏幕模块用于在多屏应用中打开一个新的屏幕•例7:屏幕之间的切换•首先在第一个屏幕添加一个标签和一个按钮组件所属组件组命名用途属性按钮用户界面按钮_下一页屏幕切换,进入下一页文本:下一页标签用户界面标签1提示文本:这是第一个屏幕打开屏幕•后单击“组件设计”中“增加屏幕”按钮添加一个新的屏幕,命名为Screen2。并在屏幕二中添加一个标签和一个按钮,屏幕二界面。组件所属组件组命名用途属性按钮用户界面按钮_上一页屏幕切换,返回到上一页文本:上一页标签用户界面标签1提示文本:这是第二个屏幕打开屏幕•屏幕1代码•屏幕2代码打开屏幕并传值•打开屏幕并传值模块在多屏应用中开启一个新的屏幕,并向其传入初始值,在打开的屏幕中可以用“获取初始值”模块取得传入的值。打开屏幕并传值•例8:修改例7中屏幕1的代码。当打开屏幕2时,并传递值100给屏幕2。打开屏幕并传值•修改屏幕2的代码。当打开屏幕2时,修改标签1的文本为屏幕1传递过来的值。其它控制块•“关闭屏幕”:关闭当前屏幕。•“关闭屏幕并返回值”:关闭当前屏幕并向打开此屏幕者返回结果。•“退出程序”:关闭所有屏幕并终止程序运行。•“获取初始文本值”:屏幕被其他应用启动时获取所传入的文本值,如果调用者没有内容传入,则返回空文本值。对于多屏应用,一般更多采用获取初始值的方式,而非获取纯文本值。其它控制块•“关闭屏幕并返回文本”:关闭屏幕,并向打开此屏幕的应用返回文本,对于多屏应用,则多采用关闭屏幕并返回值的方式,而不采用关闭屏幕并返回文。逻辑块•“true”:布尔常量“真”,表示某种情况成立。•“false”:布尔常量“假”,表示某种情况不成立。•“否定”:如果输入项为假则返回真值,如果输入项为真则返回假值。•“等于”:用于判断等号左右二个对象是否相等,对象可以是任意类型,不限于数字。单击“等于”下拉列表还有逻辑运算“不等于”,用于判断二个对象是否互不相等。逻辑块•“并且”:测试两个逻辑表达式的值是否都为真。当且仅当两者都为真时,返回值为真;其它情况,返回值均为假。•“或者”:测试两个逻辑表达式的值中是否有一个为真。只要有一个为真,则返回值即为真。数学块数学块•基本数字块,默认为0、可以是任何正数或负数(包括小数)。双击“0”就可以改变其中的数值。关系运算符,共六种数学块•算术运算符•^,乘方运算,返回第一个数的第二个数次方。数学块•随机整数,返回给定的两个值(包括两个值)之间的随机整数,限于2^30内。默认是1到100之间。•随机小数,返回一个0到1之间的随机小数。•随机数种子设定,每个种子数会生成固定的随机数。如图代码,如果在文本框中输入一个固定的数,生成的随机数是固定的。数学块•数学函数•就高取整,返回大于或等于给定数的最小整数。注意:如-5.7就高取整后返回-5而不是-6,5.7就高取整后返回6。数学块•四舍五入,返回一个整数,如果该数的小数部分0.5,则返回该数的整数部分;如果该数的小数部分≥0.5,则返回整数部分的值+1。•就低取整,返回小于或等于给定数的最大整数。注意:如-5.7就低取整后返回-6而不是-5;5.6就低取整后返回5。•e的乘方,对于给定的数x,求e(2.71828...)的x次方。•自然对方,返回给定数的自然对数。数学块•模数,模数与除数正负相同。对于给定的两个正数a、b,求模与求余数的结果是相同的。如,模数(11,5)=1,模数(-11,5)=4,模数(11,-5)=-4,模数(-11,-5)=-1。•余数,余数(a,b)的返回值为a除以b所得的余数。余数(a,b)的结果在符号上与a相一致。如,余数(11,5)=1,余数(-11,5)=-1,余数(11,-5)=1,余数(-11,-5)=-1。•商数,做除法运算,返回商的整数部分。如,商数(11,5)=2,商数(-11,5)=-2。数学块•三角函数和反三角函数数学块•atan2,反正切函数2,对于给定的x与y坐标,返回y/x的反正切函数值。其范围为(-180,+180)。•角度变换-弧度转角度,对于给定的弧度值,将其换算成角度值,其范围为[0,360)。•角度变换-角度转弧度,对于给定的角度值,将其换算成弧度值,其范围为[-π,+π)。数学块•对于给定的数字,设定其小数点后面的位数,位置值必须是非负的整数,超出位数的小数部分将依据四舍五入的原则进位,不足的位数将添0补齐。数学块•如果给定的对象为数字,则返回值为真,否则为假。文本块文本块•字符串文本,可以包含任何字符(字母、数字或其他特殊字符),在AI中被视为文本对象。文本块•合并文本,将给定的若干个字符串连接成一个新字符串。文本块•返回字符串中包含的字符个数(包括空格)。注意:与其它编程语言不同的是,中文、英文、半角、全角下的字符长度均为1。文本块•返回字符串中是否包含字符,当字符串长度为0时,返回值为true,否则为false。文本块•比较文本:包括<>=,返回两个字符串的顺序关系:<、>或=。按照字典顺序(即字母表的顺序),越靠后面的值越大,同一个字母,大写<小写;返回值为true或false。文本块•对给定字符串删除首尾空格。文本块•大写,将字符串中所有字母转换为大写字母并返回。小写,将字符串中所有字母转换为小写字母并返回。文本块•求子串位置,求子串在文本中的起始位置,返回一个数字,如果子串没有在文本中出现,则返回值为0。文本块•检查文本中是否包含子串,如果包含则返回值为true,否则为false。文本块•分解文本,以指定文本作为字符串,将字符串分解为不同片段,并生成一个列表作为返回结果,如以逗号“,”分解one,two,three,将返回列表(onetwothree)。文本块•分解首项,在首次出现分隔符的位置将给定文本分解为两部分,并返回包含分隔符点前和点后两部分内容的列表。•如分解字符串“苹果,