App inventor 教學講義chapter2 - SlideShare

文章推薦指數: 80 %
投票人數:10人

條件選擇(Control 控制指令) 程式中的選擇(selection) 就是依. 程式區1; break; case value2: 程式區2; break; . for each ... SlideShareusescookiestoimprovefunctionalityandperformance,andtoprovideyouwithrelevantadvertising.Ifyoucontinuebrowsingthesite,youagreetotheuseofcookiesonthiswebsite.SeeourUserAgreementandPrivacyPolicy. SlideShareusescookiestoimprovefunctionalityandperformance,andtoprovideyouwithrelevantadvertising.Ifyoucontinuebrowsingthesite,youagreetotheuseofcookiesonthiswebsite.SeeourPrivacyPolicyandUserAgreementfordetails. Home Explore Login Signup Successfullyreportedthisslideshow. Activateyour30dayfreetrial tounlockunlimitedreading. Appinventor教學講義chapter2 8 Share JerryWu • May.29,2014 • 8likes • 23,122views DownloadNow Download NextSlideShares Youarereadingapreview. Activateyour30dayfreetrial tocontinuereading. ContinueforFree UpcomingSlideShare Appinventor教學講義chapter4 Loadingin…3 × Facebook Twitter LinkedIn Size(px) Starton ShowrelatedSlideSharesatend Share Email     Topclippedslide 1 1of28 Appinventor教學講義chapter2 May.29,2014 • 8likes • 23,122views 8 Share DownloadNow Download Downloadtoreadoffline Mobile 介紹Appinventor2的運算與判斷與相關範例 1.算數、關係運算與數學指令 2.關係、邏輯運算指令 Readmore JerryWu Follow -- 介紹Appinventor2的運算與判斷與相關範例 1.算數、關係運算與數學指令 2.關係、邏輯運算指令 Readmore Mobile Appinventor教學講義chapter4 JerryWu Appinventor教學講義chapter3 JerryWu Appinventor教學講義chapter6 JerryWu Appinventor1 RoyWang Appinventor3 RoyWang Appinventor5 RoyWang Appinventor2 RoyWang Android程式設計(2) RoyWang Appinventor4 RoyWang Android程式設計(1) RoyWang Appinventor教學講義chapter4 JerryWu Appinventor教學講義chapter3 JerryWu Appinventor教學講義chapter6 JerryWu Appinventor1 RoyWang Appinventor3 RoyWang Appinventor5 RoyWang Appinventor2 RoyWang Android程式設計(2) RoyWang Appinventor4 RoyWang Android程式設計(1) RoyWang MoreRelatedContent YouMightAlsoLike Appinventor2利用WebViewer與ActivityStarter連到外部網站 JerryWu Appinventor教學講義chapter1 JerryWu WhattoUploadtoSlideShare SlideShare BeAGreatProductLeader(Amplify,Oct2019) AdamNash TrillionDollarCoachBook(BillCampbell) EricSchmidt APIdaysParis2019-Innovation@scale,APIsasDigitalFactories'NewMachi... apidays Afewthoughtsonworklife-balance WimVanderbauwhede Isvcstillathingfinal MarkSuster TheGaryVeeContentModel GaryVaynerchuk MammalianBrainChemistryExplainsEverything LorettaBreuning,PhD Blockchain+AI+CryptoEconomicsAreWeCreatingaCodeTsunami? DinisGuarda TheAIRush Jean-BaptisteDumont AIandMachineLearningDemystifiedbyCarolSmithatMidwestUX2017 CarolSmith 10factsaboutjobsinthefuture PewResearchCenter'sInternet&AmericanLifeProject HarrySurden-ArtificialIntelligenceandLawOverview HarrySurden InsideGoogle'sNumbersin2017 RandFishkin Pinot:RealtimeDistributedOLAPdatastore KishoreGopalakrishna HowtoBecomeaThoughtLeaderinYourNiche LeslieSamuel VisualDesignwithData SethFamilian DesigningTeamsforEmergingChallenges AaronIrizarry UX,ethnographyandpossibilities:forLibraries,MuseumsandArchives NedPotter WinnersandLosers-Allthe(Russian)President'sMen IanBremmer Study:TheFutureofVR,ARandSelf-DrivingCars LinkedIn ShorterERWaitTimes Knowledge@Wharton Asia'sArtificialIntelligenceAgenda.MITTechnologyReview AlexanderJarvis MartinLutherKing'sPearlOfWisdom! SurveyCrest TeachingStudentswithEmojis,Emoticons,&Textspeak ShellySanchezTerrell InauguralAddresses BoozAllenHamilton Howtothinklikeastartup LoicLeMeur 32WaysaDigitalMarketingConsultantCanHelpGrowYourBusiness BarryFeldman HowtoFixtheInternet LinkedInEditors'Picks 5majoreventsthatshaped2016 KotakSecurities What'sNextinGrowth?2016 AndrewChen TheOutcomeEconomy HelgeTennø TheSixHighestPerformingB2BBlogPostFormats BarryFeldman 6thingstoknowaboutdemonetisation KotakSecurities Reuters:PicturesoftheYear2016(Part2) maditabalnco Theimpactofinnovationontravelandtourismindustries(WorldTravelMarke... BrianSolis OpenSourceCreativity SaraCannon 2017MarketingPredictions—Marketo Marketo RelatedBooks Freewitha30daytrialfromScribd Seeall TheImpulseEconomy:UnderstandingMobileShoppersandWhatMakesThemBuy GarySchwartz (4.5/5) Free Tubes:AJourneytotheCenteroftheInternet AndrewBlum (4/5) Free Emergence:TheConnectedLivesofAnts,Brains,Cities,andSoftware StevenJohnson (4.5/5) Free WorldWideMind:TheComingIntegrationofHumanity,Machines,andtheInternet MichaelChorost (4/5) Free AnArmyofDavids:HowMarketsandTechnologyEmpowerOrdinaryPeopletoBeatBigMedia,BigGovernment,andOtherGoliaths GlennReynolds (4/5) Free InthePlex:HowGoogleThinks,Works,andShapesOurLives StevenLevy (4.5/5) Free Hamlet'sBlackBerry:APracticalPhilosophyforBuildingaGoodLifeintheDigitalAge WilliamPowers (4/5) Free TheThankYouEconomy GaryVaynerchuk (4/5) Free TalkingBacktoFacebook:TheCommonSenseGuidetoRaisingKidsintheDigitalAge JamesP.Steyer (4.5/5) Free PublicParts:HowSharingintheDigitalAgeImprovestheWayWeWorkandLive JeffJarvis (3.5/5) Free TheNatureoftheFuture:DispatchesfromtheSocialstructedWorld MarinaGorbis (4/5) Free Socialnomics:HowSocialMediaTransformstheWayWeLiveandDoBusiness ErikQualman (3/5) Free TheEndofBusinessAsUsual:RewiretheWayYouWorktoSucceedintheConsumerRevolution BrianSolis (5/5) Free BlogSchmog:TheTruthAboutWhatBlogsCan(andCan't)DoforYourBusiness RobertWBly (4/5) Free FromCounterculturetoCyberculture:StewartBrand,theWholeEarthNetwork,andtheRiseofDigitalUtopianism FredTurner (2.5/5) Free 101AwesomeBuilds:Minecraft®™SecretsfromtheWorld'sGreatestCrafters TriumphBooks (4.5/5) Free RelatedAudiobooks Freewitha30daytrialfromScribd Seeall TheNewNewThing:ASiliconValleyStory MichaelLewis (4.5/5) Free EverybodyLies:BigData,NewData,andWhattheInternetCanTellUsAboutWhoWeReallyAre SethStephens-Davidowitz (4.5/5) Free CognitiveSurplus:CreativityandGenerosityinaConnectedAge ClayShirky (3.5/5) Free SoYouWanttoStartaPodcast:FindingYourVoice,TellingYourStory,andBuildingaCommunitythatWillListen KristenMeinzer (4.5/5) Free TheDarkNet:InsidetheDigitalUnderworld JamieBartlett (4/5) Free WhoOwnstheFuture? JaronLanier (4/5) Free AnIntroductiontoInformationTheory:Symbols,SignalsandNoise JohnR.Pierce (4.5/5) Free KillAllNormies:OnlineCultureWarsFrom4ChanAndTumblrToTrumpAndTheAlt-Right AngelaNagle (4/5) Free TheArtofSocialMedia:PowerTipsforPowerUsers GuyKawasaki (4/5) Free AlgorithmstoLiveBy:TheComputerScienceofHumanDecisions BrianChristian (4.5/5) Free AloneTogether:WhyWeExpectMorefromTechnologyandLessfromEachOther SherryTurkle (4.5/5) Free TheDeathofExpertise:TheCampaignAgainstEstablishedKnowledgeandWhyitMatters TomNichols (4.5/5) Free TheEmperor'sNewMind:ConcerningComputers,Minds,andtheLawsofPhysics RogerPenrose (3.5/5) Free BlockchainRevolution:HowtheTechnologyBehindBitcoinIsChangingMoney,Business,andtheWorld DonTapscott (4/5) Free NewDarkAge:TechnologyandtheEndoftheFuture JamesBridle (4.5/5) Free TheHistoryoftheFuture:Oculus,Facebook,andtheRevolutionThatSweptVirtualReality BlakeJ.Harris (4.5/5) Free Appinventor教學講義chapter2 1. AppInventor教學講義 2 吳為勇 2. Chapter2 運算與判斷 任何一種程式語言都有它的特色,但是『變數、常數、數值運算與控制結構』永 遠都是入門的第一步。

即便是AppInventor這種圖形化的介面也不例外。

這些 設定都是在Blocks拼塊設計區。

宣告常數與變數 常數在建立時就指定其初始值,此值不能在程式中加以改變,例如『圓周率』。

如果要可用在程式中所有的副程式或是事件就要設成全域變數,不然則設定成區 域變數即可。

此設定為畫面左方Builtin的Variables。

圖表1變數Variables指令區 3. 拼塊說明: initialglobal(name)to 本指令是用來宣告一個全域(global) 變數,後面的欄位可自由使用各種資料 形態。

點擊(name)就可以更改這個 全域變數的名稱。

全域變數可用在程式 中所有的副程式或是事件,也就是說本 指令是獨立的。

您在程式執行時都可以自由修改全域 變數值,且在程式的任何地方(包含副 程式與事件)都可讀寫它。

您可隨時修 改本區域變數的值,任何參照到它的指 令也會一併更新名稱。

get 取得您已經宣告的變數值,請由下拉式 選單來選擇您要的變數。

set()to 修改您已經宣告的變數值,請由下拉式 選單來選擇您要的變數,並在後方欄位 填入您所要修改的新值。

initializelocal(name)toin(do) 本指令可讓您新增一個只能用在某個 副程式中的變數,也就是區域(local) 變數。

這樣一來每次該副程式被呼叫 時,其中的所有(區域)變數都會以相 4. 同的值被初始化(initialize)一次。

您可隨時修改本區域變數的值,任何參 照到它的指令也會一併更新名稱。

initializelocal(name)toin (return) 同上,只是多了回傳值欄位。

5. 範例: HelloWorlldPart2: 使用元件:Button(按鈕),Label(標籤). Step1: 開啟一個新的名為HelloWorld2之Project並仿照Chapter1的HelloWorld 範例用設計師設計放入一個btnClick與一個lblHello兩個元件。

存檔後開啟Blocks(拼塊設計師)。

圖表2HelloWorld2畫面設計 Step2: 開啟拼塊編輯器,先點選左側Builtin裡的Variable。

選擇『initialglobal (name)to』來設定一個『show_word』的全域變數。

再點選左側Builtin裡 的Text。

設定一個字串為『大家好!』並將此字串與『show_word』的全域 變數拼在一起。

Step3: 點選左側Builtin裡的Screen下的btnClick選擇whenButton1.Click事件。

再點選Screen下的lblHello選擇setLabel1.Textto指令,代表要設定 6. Label1的文字。

Step4: 點選左側Builtin裡的Variable。

選擇get下拉選擇到globalshow_word。

並將其拖拉到lblHello中的缺口裡。

圖表3HelloWorld2Blocks設計 Step5: 最後可以使用工具列上的Connect(連結選單上的選項)。

選擇Emulator(模 擬器)選項來啟動模擬器。

就可以看到執行的結果。

圖表4HelloWorld2執行結果 7. 算數、關係運算與數學指令 舉凡+-×÷=≠等等運算指令都是位於BlocksEditor內的Builtin裡的Math 中。

圖表5數學Math指令區 拼塊說明: number 指定一個數字常數。

以下六個指令位於同一選單中。

=、!=、、>= 比較兩個指定數字的等於、不等於、小 於、小於等於、大於與大於等於關係。

如果滿足回傳true,否則回傳false。

8. + 回傳兩個指定數字的和。

− 回傳兩個指定數字的差。

× 回傳兩個指定數字的積。

/ 回傳前者除以後者的商。

例如,1除以 3為0.3333。

^ 回傳a的b次方,例如2^3=8 randominteger 回傳一個介於指定數字之間的隨機整 數,包含上限(to)與下限(from)。

參數 由小到大或由大到小不會影響計算結 果。

randomfraction 回傳一個介於0和1之間的隨機小數。

randomsetseed 產生可重複的隨機數序列。

您可設定 seed來產生相同序列的隨機數。

這在 測試會用到隨機數的程式中非常好用。

以下兩個指令位於同一選單中。

min/max 回傳指定數字中最小/最大者。

sqrt 回傳指定數字的平方根。

abs 回傳指定數字的絕對值。

9. -(negate) 回傳指定數字的相反數。

log 回傳指定數字的自然對數運算結果。

exp 回傳e(2.71828...)的指定次方運算結 果。

round 回傳指定數字四捨五入到整數位的運 算結果。

ceiling 回傳指定數字無條件進位到整數位的 運算結果。

floor 回傳指定數字無條件捨去到整數位的 運算結果。

以下三個指令位於同一選單中。

modulo 當指定數字皆為正數時,Modulo(a,b) 計算結果與remainder(a,b)相同。

一 般公式如下:對所有a與b而言, (floor(a/b)×b)+modulo(a,b)=a。

例如modulo(11,5)為1; modulo(-11,5)為4;modulo(11, -5)為-4;modulo(-11,-5)為-1。

Modulo(a,b)永遠與b同號,但 remainder(a,b)則永遠與a同號。

remainder remainder(a,b)指令可回傳第一個數 a除以第二個數b的餘數 (remainder)。

例如Forexample, 10. remainder(11,5)為1; remainder(-11,5)為-1; remainder(11,-5)為1; remainder(-11,-5)為-1。

quotient quotient(a,b)指令回傳第一個數a除 以第二個數b的商,但只取整數部分, 小數點以後忽略不計。

以下六個指令位於同一選單中。

sin、cos、tan、asin、acos、atan 回傳指定數字的正弦、餘弦、正切、反 正弦、反餘弦與反正切函數值,單位: 度。

atan2 回傳y/x的反正切函數值。

以下兩個指令位於同一選單中。

convertradianstodegrees 將弧度轉換為角度。

convertdegreestoradians 將角度轉換為弧度。

formatasdecimal 將原數字轉換為指定位數之小數。

指定 小數位數不能為負數。

若原小數位數過 多則四捨五入,反之則補0。

isanumber? 指定物件如果為數字,回傳true,反 之回傳false。

11. 範例: 求取BMI值 身體質量指數(BodyMassIndex,縮寫為BMI)。

其計算公式如下:BMI=體重(kg)/身高(m2 ) 我們先設計一下畫面大概如下圖: 圖表6求取BMI畫面示意圖 使用元件:HorizontalArrangement(水平排列)、Label(標籤)、 TextBox(文字方塊)、Button(按鈕)。

Step1: 先建立一個bmi-1新專案。

Step2: 開啓Disigner設計師,依序加入以下元件。

1.選擇畫面左邊Palette下的Layout裡的HorizantalArrahgement(水平 排列)元件。

然後點選畫面中Components裡的 HorizantalArrahgement1的設定此元件的Width(寬度)為Fill_ parent。

2.選擇畫面左邊的UserInterface(使用者介面)下的Label,將此元件放 到上一步驟設定的HorizantalArrahgement1裡去。

然後點選畫面中 Components裡的Label1設定此元件的Text為『身高(公分)』。

3.選擇畫面左邊的UserInterface(使用者介面)下的TextBox。

將此元件 放到上一步驟設定的HorizantalArrahgement1裡去,然後點選畫面 中Components裡的TextBox1將此元件名稱改為txtHeight。

並修改 此元件的Properties框架裡的Text屬性為空值。

12. 4.選擇畫面左邊Palette下的Layout裡的HorizantalArrahgement(水平 排列)元件。

然後點選畫面中Components裡的 HorizantalArrahgement2的設定此元件的Width(寬度)為Fill_ parent。

5.選擇畫面左邊的UserInterface(使用者介面)下的Label,將此元件放 到上一步驟設定的HorizantalArrahgement2裡去。

然後點選畫面中 Components裡的Label2設定此元件的Text為『體重(公分)』。

6.選擇畫面左邊的UserInterface(使用者介面)下的TextBox。

將此元件 放到上一步驟設定的HorizantalArrahgement2裡去,然後點選畫面 中Components裡的TextBox2將此元件名稱改為txtWeight。

並修 改此元件的Properties框架裡的Text屬性為空值。

7.選擇畫面左邊的UserInterface(使用者介面)下的Button。

將此元件放 到txtWeight的下方,然後點選畫面中Components裡的Button1將 此元件名稱改為btnSend。

並修改此元件的Properties框架裡的Text 屬性為『”計算BMI”』。

8.選擇畫面左邊Palette下的Layout裡的HorizantalArrahgement(水平 排列)元件。

然後點選畫面中Components裡的 HorizantalArrahgement3並修改此元件的Properties框架裡的 Width(寬度)為Fill_parent。

9.選擇畫面左邊的UserInterface(使用者介面)下的Label,將此元件放 到上一步驟設定的HorizantalArrahgement3裡去。

然後點選畫面中 Components裡的Label3設定此元件Properties框架裡的Text為『指 數』。

10.選擇畫面左邊的UserInterface(使用者介面)下的TextBox。

將此元件 放到上一步驟設定的HorizantalArrahgement3裡去,然後點選畫面 中Components裡的TextBox3將此元件名稱改為txtBMI。

並修改此 元件的Properties框架裡的Text屬性為空值。

到此就算完成元件的佈 置。

結果如下圖: 13. 圖表7求取BMI元件佈置 Step3: 開啓BlocksEditor(拼塊編輯器),依下列步驟將拼塊組合起來。

1.從畫面左邊Blocks中Screen1裡的btnSend。

會出現下面的圖案,選 擇whenbtnSend.Click事件。

2.從畫面左邊Blocks中Screen1裡的txtBMI。

選擇settxtBMI.Textto 指令,代表要設定txtBMI的文字。

然後拖拉到上一步驟所選的when btnSend.Click事件中。

3.從畫面左邊Blocks中Math中選擇『/』除法指令放到settxtBMI.Text to指令中,如下圖。

圖表8加入除法指令 4.從畫面左邊Blocks中Screen1裡的txtWeight。

選擇到txtWeight.text。

將此拼塊拖拉放到除法指令的左邊欄位。

如下圖: 14. 圖表9將體重資訊拖拉到除法欄位之左邊欄位 5.因為我們畫面上身高要求輸入的是公分,而BMI的公式身高的單位是 公尺的平方。

我們必須要先將公分轉換成公尺。

我們可以從畫面左邊 Blocks中Math中選擇『/』除法指令。

先拖拉到畫面上。

再從Blocks 的Screen1中點選『txtHeight』從中挑選到txtHeight.text一樣將此 元件拖拉畫面上。

然後再從Blocks中Math中選擇number(常數設定), 將此number設定為100並拖拉到畫面上。

最後將txtHeight.text與 number拖拉放到除法指令的左右兩邊的欄位裡。

如下圖所示: 圖表10身高轉換成公尺 6.從畫面左邊Blocks中Math中選擇『^』n次方指令,拖拉到畫面上。

再從Math中選擇選擇number(常數設定),將此number設定為2。

表示為平方。

將此number拖拉放到n次方指令的右邊欄位。

將步驟4 設定好的身高(公尺)拖拉放到n次方指令左邊的欄位裡。

如下圖: 圖表11身高(公尺)的平方 7.上一步驟設定好的身高資訊拼塊拖拉放到步驟三的除法指令的右邊欄 位。

這樣就算完成拼塊編輯了。

完成圖如下: 15. 圖表12BMIBlocks拼塊編輯 8.在模擬器上執行的結果: 圖表13求取BMI執行結果 16. 關係、邏輯運算指令 關係運算就是數學裡的大於小於,是用來確認二個數字之間的關係,結果會產生 true/false的布林值。

邏輯運算通常是用來連結關係運算,就像英文的連接詞 and/or連接兩個句子一般。

它是針對關係運算後產生的布林值進行運算,邏輯 運算常用1代表true,0代表false。

在AppInventor2裡與『關係』或是『邏輯』運算是位於BlocksEditor內的 Builtin裡的Logic中。

圖表14Logic指令區 true 布林常數的真(true)。

用來設定元件的 布林(boolean)屬性值,或用來表示 某種狀況是否成立。

false 布林常數的假(false)。

用來設定元件的 布林屬性值,或用來表示某種狀況是否 不成立。

17. not 邏輯運算的not。

輸入true或條件判 斷為true則回傳false,反之回傳 true。

以下兩個指令位於同一選單中。

=與!=(不等於) 綜合性邏輯相等運算符。

可判斷數字、 字串與清單的相等或不相等。

例如: 兩個數字是否相等(例如: 1=1.0)。

兩個字串是否相等,包括大小 寫。

例如banana不等 於Banana。

若兩個清單的長度相同且對應元 件相等則相等。

以下兩個指令位於同一選單中。

and 測試是否所有的敘述皆為真。

當您插入 第一個test項目時會自動跑出第二個 插槽。

測試順序由上到下,測試過程中 若任一條件已知為假則停止測試。

若無 任何敘述則回傳true。

or 測試所有敘述中是否至少有一者為真。

當您插入第一個test項目時會自動跑出 第二個插槽。

測試順序由上到下,測試 過程中若任一條件已知為真則停止測 試。

若無任何敘述則回傳false。

18. 條件選擇(Control控制指令) 程式中的選擇(selection)就是依條件(condition)使程式有不同的執行方向, 若條件為真,也就是true,程式就會跳過false的部份執行true的部份,反之 亦然。

這些選擇條件是在BuiltIn裡的Control控制指令區中。

單向選擇if(條件式) { 成立敘述; … } 雙向選擇if(條件式) { 成立敘述; } else { 不成立敘述; } 多向選擇if(條件式1) {程式區1;} elseif(條件式2) {程式區2;} elseif(條件式3) {程式區3;} else {程式區else;} 多向選擇switch(表示式) { casevalue1: 19. 程式區1; break; casevalue2: 程式區2; break; ........... default: 程式區default; break; } ifthen、if、if/else與if/elseif… (單向,雙向與多向選擇) 測試指定條件test。

若為true則執行以 下動作,反之則跳過此段。

請不要忽視左上角那個藍色小方塊,神 奇的地方在這裡,它整合了if/else與if/ elseif…等功能。

請如下圖操作即可自行 製作各種判斷結構。

20. foreach(number) 根據指定範圍之整數個數來決定do的 執行次數,可自由設定每次累加的數字 step。

您可使用該變數名稱來取得它的 值。

foreach(item)inlist 根據指定清單的元素數目來決定do的 執行次數。

您可使用該變數名稱來取得 它的值。

while 測試指定敘述。

若為true則重複執行以 下動作,反之則結束此段。

if/else(呼叫型) 直接把if/else當作指令來呼叫。

若為 true則執行then區塊內容,反之則則 執行else區塊內容。

do 您可以將本指令當作procedures的 代替品,在do區塊中放入您所要執行 的指令,還可以回傳一個result。

evaluatebutignore 您可以將本指令當作轉接頭來使用。

把 要執行的指令接在右邊,要呼叫副程式 或是if/else都可以。

您所要的內容都 會執行,但回傳值會自動被忽略,這在 某些情況下可能正好符合您的需求(有 21. 時候不一定允許回傳值)。

openanotherscreen 啟動另一個畫面,填入要啟動的畫面名 稱即可。

openanotherscreenwithstart value 啟動另一個畫面,填入要啟動的畫面名 稱即可。

您可藉由本指令將A畫面的某 些計算結果傳給B畫面。

getstartvalue 取得當現在畫面啟動時所接收到的 value。

closescreen 關閉現在的畫面。

closescreenwithvalue 關閉螢幕,並指定回傳結果result。

closeapplication 結束程式。

getplainstarttext 當現在畫面被啟動時,取得呼叫端所傳 來的純文字內容。

如果沒有值的話,本 指令結果為空字串。

如果您的app有多 個畫面,請使用getstartvalue指令而 非本指令。

closescreenwithplaintext 22. 關閉現在的畫面並傳送一個純文字內容 給呼叫端。

如果您的app有多個畫面, 請使用closescreenwithvalue指令 而非本指令。

23. 範例 判斷BMI值 之前既然可以求出BMI值,那我們在利用條件選擇的指令來將BMI的結果做個 分類。

分類標準如下: 體重過輕 BMI<18.5 健康體位 18.5<=BMI<24 體重過重 24<=BMI<27 輕度肥胖 27<=BMI<30 中度肥胖 30<=BMI<35 重度肥胖 BMI>=35 圖表15BMI分級標準 Step1: 開啟之前bmi-1專案。

將此專案另存成bmi-2專案。

Step2: 在Designer設計師作業需要新增一個Label元件。

由左側的Basic元件區 選擇一個標籤Label,拖拉到Viewer(開發設計區)中放到最下方。

在 Components(應用元件區)中選此Label,按下下方Rename修改此元件名稱為 lblDesc。

並在Properties(元件屬性設定區)設定TextColor(字體顏色)為Blue, 24. 文字設為""(無內容,因為要另外指定內容),寬度設為"FillParent".其餘不變。

結果如下圖: 圖表16加入分類說明Label Step3: 開啟Blocks拼塊編輯器。

點選左側Builtin裡的Variable。

選擇『initial global(name)to』來設定一個『bmi』的全域變數。

再點選左側Builtin裡 的Math。

設定一個Number為『0』並將此Number與『bmi』的全域變數 拼在一起。

如下圖: 圖表17設定一個全域變數bmi 25. Step4: 從畫面左邊Blocks中Variables裡選擇『setto』指令,下拉設定為global bmi。

再從Blocks中的Screen1點選txtBMI.Text並將此設定拖拉至『set globalbmito』右邊的框框內。

這代表要將計算出來的BMI值設定給全域 變數globalbmi。

然後拖拉到上一步驟所選的whenbtnSend.Click事件 中。

圖表18設定分類說明欄位顯示全域變數bmi 圖表19將分類說明欄位設定拖拉到whenbtnSend.Click事件中。

Step5: 1.從畫面左邊Blocks中Control點選if判斷式將其拖拉到when btnSend.Click事件中。

2.從Blocks中Math點選『



請為這篇文章評分?