《《移动编程导论》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《移动编程导论》PPT课件.ppt(98页珍藏版)》请在三一办公上搜索。
1、移动编程导论,Introduction Of Mobile Programming主讲:罗舜庭,第1章 PC及移动平台基础知识,1.1 计算机发展简史及基础知识1.1.1 计算机发展简史 世界公认的第一台计算机ENIAC(电子数字积分与计算器)于1946在美国宾夕法尼亚大学诞生。按元器件来划分,至今电子计算机以经历了四个发展阶段:,1.1.2 PC机的发展 PC机最初始是由IBM公司于1981年推出的微型机,当时的CPU采用Intel公司的8086/8088,操作系统采用Microsoft公司的MSDOS。它的使用遍及商业、政府、教育、家庭等很多应用领域。,IBM PC机外观,1.1.3 计算
2、机组成结构 下图是根据冯诺依曼的存储程序原理得出的计算机基本组成结构。其中控制器(CU)和运算器(AU)组成中央处理器(Central Processing Unit,简称CPU),即计算机的“大脑”。CPU和内存称为主机,输入设备和输出设备统称外围设备,或输入输出设备(I/O设备)。,主存储器,输入设备,输出设备,控制器,运算器,冯诺依曼型计算机基本组成,CPU,表一、影响程序设计语言的一些因素,1.2 计算机语言发展史,最初,电子计算机用机器语言来编制程序,如实现1+1的功能机器语言:1010 0100 0000 0001 1000 0000 1100 0100 0000 0001后来出现
3、汇编语言:MOV AH,1ADD AH,1机器语言和汇编语言都是低级语言。它们的优点是面向机器,运行速度快,但缺点是难以编制和阅读。1957年,出现了第一种高级语言FORTRAN(FORmula TRANslator),以接近人类的习惯编制写程序:A=1+1FORTRAN的成功带动了高级语言的发展,1956-1960期间出现了COBOL、LISP等。随着硬件的速度增快,内存容量增大,60年代末出现了Basic语言,70年代初出现了Pascal,C,90年代出现以跨平台编程为目的的Java语言。,1.3 移动硬件平台的发展 20世纪90年代末,智能手机开始出现,直到Apple公司于2007年推出
4、iPhone手机,2010年推出iPad,移动计算迅速进入人们的生活各个领域。iPhone iPhone是一款结合了照相手机、个人数码助理、媒体播放器以及无线通信设备的掌上设备、智能手机,拥有收发电子邮件、网页浏览等功能,并支持Wi-Fi、2G、3G和4G LTE连接,以及基于上述链接访问VPN服务器,实现虚拟专线网络服务。第一代iPhone至iPhone 4S均采用9厘米(3.5英寸)LCD触摸显示屏24;iPhone的触摸屏具有热感功能,用户可利用手指在触屏上滑动进行手机操作,用户还可利用多根手指进行多点触控操作。iPhone手机的整体设计十分简洁,用户主要在触屏上进行操作,额外的按钮仅有
5、5个,其中最常用的是在屏幕正下方的圆形按钮“Home Button”,Home Button主要用来关闭应用程序、唤醒手机、呼出任务管理。手机上方的条形按钮主要用来锁屏及唤醒手机,长按会呼出关机选项;在手机关闭状态中长按此按 钮,将会开启手机。iPhone侧面的3个按钮分别用来控制音量和调整静音。在第一代iPhone上,除Home Button外,其他按钮均为塑料材质;自iPhone 3G起,除Home Button外的按钮均为金属制。iPhone的操作系统使用iOS。,iPad iPad,是一款苹果公司于2010年发布的平板电脑,定位介于苹果的智能手机iPhone和笔记本电脑产品之间,通体只
6、有四个按键,与iPhone布局一样,具备浏览网页、收发邮件、普通视频文件播放、音频文件播放、一些简单游戏等基本的多媒体功能。由于采用ARM架构,不能兼容普通PC台式机和笔记本的程序,不具备办公的能力,但可以通过安装第三方软件来实现对OFFICE系列文件的阅读和简单编辑。iPad有用wifi上网的版本,也有wifi和3G上网都支持的版本。,Android手机操作系统 Android(读音:ndrid,中文俗称安卓)是一个以Linux为基础的开源操作系统,主要用于移动设备,由Google成立的Open Handset Alliance(OHA,开放手持设备联盟)领导开发。2008年左右,Googl
7、e以Apache免费开源许可证的授权方式,发布了Android的源代码,让生产商推出搭载Android的智能手机,Android操作系统后来更逐渐拓展到平板电脑及其他领域上。典型的Android手机生产商有HTC、三星程序开发 在早期的Android应用程序开发中,通常通过在Android SDK(Android软件开发包)中使用Java作为编程语言来开发应用程序。开发者亦可以通过在Android NDK(Android Native开发包)中使用C语言或者C+语言来作为编程语言开发应用程序。同时Google还推出了适合初学者编程使用的Simple语言,该语言类似微软公司的Visual Bas
8、ic语言。此外,Google还推出了Google App Inventor开发工具,该开发工具可以快速地构建应用程序,方便新手开发者。从2012年1月1日起,App Inventor由麻省理工学院继续支持发展,改名为MIT App Inventor。,第2章 App Inventor程序开发,2.1 App Inventor简介 App Inventor是一种可视化的、通过拖放进行编程的工具,可以在Android平台上建立应用程序。你可以在基于浏览器图形用户界面设计器来设计用户界面接口,即程序的外观,然后可以像玩拼图一样来设计程序的动作。,2.2 App Inventor开发环境配置,计算机系
9、统要求:Computer and operating system Macintosh(with Intel processor):Mac OS X 10.5 or higher Windows:Windows XP,Windows Vista,Windows 7,Win8 GNU/Linux:Ubuntu 8 or higher,Debian 5 or higherBrowser Mozilla Firefox 3.6 or higherNote:If you are using Firefox with the NoScript extension,youll need to turn t
10、he extension off.See the note on the troubleshooting page.Apple Safari 5.0 or higher Google Chrome 4.0 or higher Microsoft Internet Explorer 7 or higher,访问,按该页面配置步骤配置计算机。,第一步:Prepare Your System(Java)如果你的计算机没有安装Java运行环境,可以在如下地址下载并安装:第二步,下载并安装App Inventor软件 按如下地址下载Windows版的 App Inventor软件:,第四步A(使用And
11、roid设备调试程序):使用WiFi连接Android设备来运行程序:(建议)在你Android手机下载如下程序,并运行:使用USB链接Android设备来运行程序:步骤略,第四步B:使用模拟器来运行程序Open the Blocks Editor,and click the New emulator button at top of the window.,2)Youll get a notice saying that the emulator is starting,and asking you to be patient;starting the emulator can take a
12、 couple of minutes.,3)The emulator will initially appear with an empty black screen(#1).Wait until the emulator is ready,with a colored screen background(#2).Even after the background appears,you should wait until the emulated phone has finished preparing its SD card:there will be a notice at the to
13、p of the phone screen while the card is being prepared.You might also need to use your mouse on the emulated phone screen to unlock the device by dragging the green lock button to the right(#3).,4)The emulator works like a phone with some limitations(e.g.,you cannot shake the emulator like you can d
14、o with a phone).After you unlock the emulator,click the Connect the Device.button and click the emulator.When the phone icon turns to green,it means the emulator is connected.,1.校内用户 App Inventor 的Web地址:2.APP Inventor的官方网站,2.3 用控件设计程序界面,2.3.1 设计一个简单的”hello,class”应用步骤:1.在My Projectes界面,点击New,在Project
15、Name里输入“HelloClass”,2.在Designer界面的Pallete面板中的Basic栏中将Label控件拖至Viewer的中手机的位置。,3.在属性面板,按如右图作如下设置:将FontBold的勾打上将FontSize设置为50将Text设置为“同学们好”将TextAlignment设置为center将TextColor设置为Blue将Width 设置为 Fill parent将Height 设置为60 pixels,4.设置完之后,如右图,5.点击Designer上的Save,保存工程。6.运行程序1)点击“Open the Blocks Editor”,出现如下对话框,直接
16、选择打开方式 Java(TM)Web Start Launcher(默认)。,2).点击确定后,会从mit.edu网站下载BlocksEditor.jar这个java程序到本机上运行,这个过程可以需要比较长的时间。3)下载完毕后,会自动运行BlockEditor.jar程序,然后出现出现Block Editor界面。4)如果要用模拟器运行程序,则在BlockEditor界面点击New emulator,会出现如右的模拟手机界面,该模拟器的标题是5554。将锁头向右拖动解锁。,5)解锁后,回到Block Editor的界面,在 Connect to Device下拉框中会出现一个选项 emula
17、tor-5554,如下图,选择该选项。等待一段时间后,5554模拟器就开始运行HelloClass这个程序。结果如右。,6)如果直接在手机上运行(以WiFi方式为例),则再Connect To Device下拉框直接选择WiFi,则会出现如下图。这时运行你手机上的MIT AICompanion,可以通过扫描二维码,或者直接在手机上输入下面的QR码:svebsq.稍等一会,就可以看见手机上运行本程序的结果了。,2.3.2 常用的控件和属性、事件和方法 控件(Components)是用来设计程序外观、或者完成特定功能的对象,每个控件都包含属性、事件和方法。可视控件(Visible):运行时可以看见
18、的控件,如按钮、TextBox、Labels、CheckBox 不可视控件(Non-visible):运行时不可看见的控件,通过这些控件可以访问设备内部功能。如Texting可以发送和处理SMS文本,LocationSensor可以确定设备的位置,TextToSpeech可以将文本读出声音,Clock是定时器。,属性(Properties)存放了控件的一些信息,如Width(宽度)、FontSize(字体大小)、Text(显示的文本)。事件(Events)每个控件可以响应一些特定的事件,以便当这些事件发生时可以执行一段动作,从而完成特定的任务。比如Button可以响应Click事件,当该按钮被
19、点击时,那么在Click事件中定义的动作会被执行。App Inventor提供一个可视化的“块”语言来定义动作。方法 每个控件会定义一些方法,这些方法可以完成特定的动作。比如:Canvas的DrawLine,TextBox的SetFocus。,1.常用的控件1)Button 按钮2)Canvas 画布3)CheckBox 检测框4)Image 显示图片5)Label 显示标题6)TextBox 文本输入框,2.常见属性 每个控件的都包含多个属性,以控制该属性的外观、行为特征等。每个控件可能包含不同的属性,下面是比较常见的属性。1)Width:2)Height:3)Alignment:位置的调整
20、,通常有Left,center,Right4)Text:5)FontSize:字体大小6)TextColor:文字颜色7)BackGroundColor:背景颜色8)Visible:在屏幕显示或隐藏该控件,3.事件 每个控件都会包含一些可以响应的事件,以便在这些事件发生事,程序会执行一些动作,完成特定的任务。1)Click2)GetFocus3)LostFocus,控件的用法1.用Image显示一个图片步骤:1)新建一个工程文件:ShowPicture2)在Basic栏中将Image和Button两个控件依次拖至Screen1,并设置:Image1.Width:Fill ParentImage
21、1.height:350 PixelsButton1.Text:显示校门结果如右图。,3)在Components面板底部点击“Upload New”上传两张相片:seagull.jpg和stu.jpg。如右图所示。,4)将Image1.Picture设置为seagull.jpg。如右图所示。然后点击Open the Blocks Editor。,5)在Blocks Editor中点击My Blocks,然后点击Button1,会出现与Button1相关的事件和属性。,6)将Button1的Clock事件拖至右侧空白处。如右图一。再将Image1的“Set Image1.Picture”拖至Bu
22、tton1的Click事件中。,7)点击“Set Image1.Picture”块的右边,选择”text”,如右图所示。点击粗体的text,并将其改为stu.jg。,2.用TextBox控件输入文本内容,点击Button,然后再Label控件显示刚输入的内容。1)新建一个工程,命名为”comp”。2)在Screen Arrangement中,拖出一个“HorizontalArrangement”,将Width设置为:Fill Parent,Height设为30。然后依次拖出Label和TextBox至该HorizontalArrangement,并将TextBox1改名为tbYourName,
23、然后作如下设置:Label1.Text:姓名tbYourName.Hint:请输入您的姓名,3)在Screen Arrangement中,拖出一个“HorizontalArrangement”,将Width设置为:Fill Parent,Height设为30。然后拖出两个Label,并将第二个Label改名为lblYourName。属性做如下设置:Label2.Text:您的姓名是:lblYourName.Text:空白,4)Screen Arrangement中,拖出一个“HorizontalArrangement”,将Width设置为:Fill Parent,Height设为30,Alig
24、nHorizontal设为Center。然后拖出一个Button,将Button1.Text设置为“确定”.然后点击Open the Blocks Editor。,5)在Blocks Editor中点击My Blocks,然后点击Button1,会出现与Button1相关的事件和属性。将Button1的Clock事件拖至右侧空白处。再将lblYourName的”Set lblYourName To”块拖至Button1.Click中。将tbYourName.Text拖至”Set lblYourName To”右侧。,2.用声音打招呼1)建立一个工程,取名SayHello2)设计界面如右图,3)
25、各个部件的列表和块设计,3)设计一个简单的病人的病情记录程序 输入病人姓名、性别、年龄和病史,如果是女的,则再记录月经史。,2.4 变量,变量是可以用来存储值的存储单元。在程序中,可以根据需要来定义新的变量,每个变量都有不同的名字。变量的定义 变量定义是在Blocks Editor定义的。以定义一个叫做Score变量为例说明定义变量的步骤:1)在Definitions Folder中的Build-in Block,拖动Def Variable块,2)改名:点击文本”variable”,输入”Score”。3)如果需要设置初始值为“0”,则将鼠标光标移至Score的右侧,选择Math中的“123
26、”块并查入到该变量的定义中,并将默认值“123”改为“0”,2.4.2 变量值的设置和获取 当定义好一个变量后,App Inventor就给它建立了两个块(在My Blocks的My Definitions中可以看到):“set global Score to”块:设置变量Score的值“global Score”块:读取变量Score值,将变量的值设置为一个表达式1)将变量增加1 我们在编程时经常会碰到需要将变量的值增加1的时候,下图就是实现将Score的值增加1。,2)建立复杂的表达式,2.4.4 例子1.摄氏度与华氏度的转换 C=(F 32)*5/9 F=9*C/5+32步骤:1)建立工
27、程Thermo,并设计如右界面,2)Blocks Editor作如右图的设计。,2)计算BMI(Body Mass Index)值 bmi=Weight/(Height*Height)体重的单位为kg,身高的单位为米 bmi=35:重度肥胖,2.5 条件程序设计,2.5.1 if 和 ifelse块 App Inventor提供了两种条件判断块:if块和ifelse块,它们存在于Block Editor中Built-in页面中的Control栏中。if块测试一个逻辑表达式,如果为真(TRUE),就执行 then-do后面的代码,否则(即值为假 False)不执行。ifelse块测试一个逻辑表达
28、式,如果为真(TRUE),就执行then-do后面的代码,否则(即值为假FALSE)执行else-do后面的代码。,逻辑表达式是一种数学表达式,它的值只有真(TRUE)或假(FALSE)两种值。关系运算符=、=、对应如下块:,例.计算实际年龄,输入出生年份和月份,计算今年的实际年龄。如果是6月份之后出生的,则实际年龄减1。1)新建工程,取名为CalcAge2)设计的界面如下:,3)设计的块如右图思考题:如果编程获取今年年份?,例.输入课程成绩(100分制),如果及格,则显示黑色字体的”Pass”,如果不及格,则显示红色的”Fail”1)建立工程,取名为Score2)界面设计如下:,3)代码块设
29、计如下:,作业:1.计算BMI值bmi=Weight/(Height*Height)体重的单位为kg,身高的单位为米 bmi=35:重度肥胖,_,2.基础代谢率计算公式:女性:655+(9.6 x 体重)+(1.7 x 身高)-(4.7X年龄)男性:66+(13.7 x 体重)+(5.0 x 身高)-(6.8x年龄),2.5.2 逻辑操作符 三个基本的逻辑操作符:AND、OR、NOT A AND B:当逻辑表达式 A和B同时为真时,A AND B才为真,其它全为假。A OR B:当逻辑表达式A和B同时为假时,A OR B才为假,其它全为真。NOT A:求反,例:输入一个年份,判断是否闰年。判断
30、一个年份是否为闰年,该年可以被4整除,不能被100整除,但可以被400整除。1)建立一个工程,取名LeapYear,并界面设计如下:,2)块设计如下:,2.5.3 choose块,2.6 循环,在程序设计中,有些代码(AppInventor 称为块)需要反复执行多次,这就需要循环结构。AppInenvtor有两种循环结构:foreach:作用是对列表的每一项进行处理。while:对某些块反复执行直到条件表达式改变。while是更具有普遍适用的一种循环结构。,2.6.1 while while 测试条件表达式,当条件表达式计算为TRUE时,就不断执行do中的块,直到条件表达式为FALSE。循环通
31、常包含如下四个部分:循环控制变量:用于控制循环次数。初始化代码:在进入循环之前,对各个变量赋初值。循环条件:如果条件为真,执行循环体中的代码,否则退出循环。循环体:反复执行的代码。,循环控制变量,初始化代码,循环条件,循环体,例 计算 1+2+3+n。1)新建工程,并设计如下界面:,2)块设计如下:,例:输入一个数字,判断是否素数 素数(Prime Number):除1和自身不能被别的数整除。如果一个数A能被另外一个数B整除,A/B的余数为0.1)建立工程,并设计界面如下:,2)块设计如下:,接上图:,例.绘制一个月的生物节律周期图 人体生物周期又称人体生物节律,具体表现为人的智力、情绪和体力
32、随时间呈现“高潮期临界期低潮期”的周期性变化。述本世纪初,一位德国内科医生威尔赫姆弗里斯和一位 奥地利心理学家赫尔曼斯瓦波达,通过长期的临床观察,发现在病人的病症、情感以及行为的起伏中,存在着一个以 23天为周期的体力盛衰以及以28天为周期的情绪 波动。大约过了20年,奥地利因斯布鲁大学的阿尔弗累特泰尔其尔教,在研究了数百名高中和大学学生的考试成绩后,发现人 的智力是以33天为波动周期的。,作业:已知圆周率的计算公式:=4*(1-1/3+1/5 1/7+1/n 1/(n+2)编程要求:输入n,计算出的值。,2.6.2 foreach,5.7 列表,5.7.1 列表(List)的概念列表(Lis
33、t):由相同性质的数据的集合。组成列表的每个数据成为项目(Item)。如果想存放多个同学的姓名,那么可以用如下块来定义个列表来存放:,5.7.2 建立列表 可以通过def variable块和make a list块来建立一个列表。1)在Built-in Pallete中,将def variable拖至程序区2)将文本”variable”改为”NameList”3)在List Pallete,将make a list块拖至NameList的定义块。4)最后,将text块拖至make list的item区,并将每个学生的名字输入。,5.7.3 访问列表的项目 可以通过select list it
34、em块并指定项目的序号(index),就可以访问列表中的项目了。比如,想访问smith这个项目,smith在名字列表中的序号为3,那么可以如下用select list item来访问该项目:,5.7.4 增加项目 可以用add items to list和Insert list item 给列表增加项目。比如,给NameList后面增加两个人名:”Kerry”和”Jack”在NameList中第二项插入一个人名:”Sam”,5.7.5 删除一个项目 可以用remove list item块来删除一个项目。比如删除第三个项目:5.7.6 计算列表项目数 可以用length of list来计算列
35、表中项目的个数。,例:输入n个数字,求它们的和、平均值、标准偏差。标准偏差:一种量度数据分布的分散程度之标准,用以衡量数据值偏离算术平均值的程度。标准偏差越小,这些值偏离平均值就越少,反之亦然。样本标准偏差S=Sqrt(xi-x拔)2)/(N-1),公式中代表总和,x拔代表所采用的样本x的均值,2代表二次方,Sqrt代表平方根。,1)建立工程文件,设计界面如下:,2)代码块设计,作业:输入年、月、日,计算出该日期是星期几,2.6 过程,可以将完成某个特定功能的一段块(即程序代码)定义成一个有名字的过程,这样可以在应用中任何地方都可以调用。过程可以减少程序代码的冗余、降低程序的复杂度,使程序易于
36、阅读、方便开发比较大型的程序。2.6.1 定义过程 定义过程与定义变量类似。打开Block Editors,在Built-in的Definition中,将to procedure block或者 to procedure block with result 块托至程序区。to procedure 块:定义一个无返回值得过程 to procedure with result:定义一个有返回值的过程。,定义一个过程,将一个数字列表求和,,2.6.2 调用过程 当定义好一个过程后,一个调用块就出现在“My Definition”中,将该调用块拖至程序区,就可以调用该过程。,定义计算标准偏差的过程。,计算数字列表和、平均数、标准偏差的块简化成如下:,2.6.3 用参数调用过程 使用参数调用过程,使得过程的使用使用范围更广。如果要给过程定义参数,那么将Definition中的name块拖出来并插入到过程的arg中,并取个更有意义的名字。2.6.4 从过程中返回值 经常在过程中完成执行代码块后,需要返回一个值给调用者,这就需要用 procedureWithResult 块来定义一个带返回值的过程。,例:定义一个过程,判断一个年份是否为闰年。,用year的值作为参数,传递给isLeapYear,判断是否为闰年。,例:用过程重写,