Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer dat een waarde kan bevatten. In dit hoofdstuk leer je meer over variabelen, verschillende typen en de waardetoekenning. Door gebruik te maken van het vergelijken van verschillende variabelen kun je meer uit je applicatie halen dan tot nu toe gebeurde. Hoe dit werkt, wordt ook in dit hoofdstuk beschreven. 6 Ontwikkelen van Apps 6.91
Variabelen en statements in ActionScript 6.2 Verschillende soorten variabelen Er zijn verschillende soorten variabelen die ook allemaal verschillende eigenschappen hebben. Zo zijn er variabelen die als waarde een stukje tekst kunnen hebben en er zijn variabelen die als waarde een getal hebben. De belangrijkste typen variabelen vind je hieronder. String Een variabele van het type String bevat tekst. Deze tekst kan bestaan uit praktisch alle mogelijke karakters. Als je de inhoud van een tekstvak van je applicatie in een variabele wilt plaatsen, gebruik je over het algemeen een variabele van het type String, omdat je niet zeker weet of een gebruiker letters of cijfers in het tekstvak heeft ingevoerd. Integer Gehele getallen worden opgeslagen in een variabele van het type Integer, spreek uit intudjur, bijvoorbeeld 1, 300 of -291. De waarde van een variabele van het type Integer kan zowel positief als negatief zijn. Een variabele van het type Integer wordt vaak gebruikt om iets mee te tellen of om een aantal van iets op te slaan. Number Als je een kommagetal als een variabele wilt opslaan, gebruik je een variabele van het type Number, bijvoorbeeld voor de getallen 3.14159 of -287.10. Let op dat je geen komma (,) gebruikt voor de decimalen, maar een punt (.). Een variabele van het type Number kun je onder andere gebruiken als je met geldbedragen werkt. Boolean Een variabele van het type Boolean kan maar twee waarden bevatten: true en false. Een dergelijke variabele is goed te gebruiken als er een situatie is waarbij er twee mogelijkheden zijn, wel/niet of waar/niet-waar. 6.92 Ontwikkelen van Apps
Ontwikkelen van Apps voor ios en Android 6.3 Declaratie en waardetoekenning Om een variabele te gebruiken, moet hij eerst gedeclareerd worden. Hiermee wordt bedoeld dat de variabele wordt aangemaakt in het geheugen van de computer of van de telefoon. Hiernaast zie je een applicatie met een tekstvak en een button. Met een variabele wordt bijgehouden hoeveel keer er op de button is geklikt, wat vervolgens wordt weergegeven in het tekstvak. De code die je voor deze applicatie gebruikt is: var aantalklikken:int = 0; btnklik.addeventlistener(mouseevent.click, handlebtnklik); function handlebtnklik(event:mouseevent):void { aantalklikken = aantalklikken + 1; txtresult.text = "Je hebt " + aantalklikken + " keer geklikt."; Om het aantal keren dat er op de button wordt geklikt goed te kunnen bijhouden, is er een variabele nodig die als waarde het aantal klikken heeft. Deze variabele wordt op de eerste regel aangemaakt. Ook krijgt de variabele op deze regel een waarde, namelijk het getal 0. var aantalklikken:int = 0; Een variabele declareren, aanmaken, in ActionScript gebeurt met het keyword var. Na dit keyword kun je een zelfgekozen naam voor de variabele opgeven, gevolgd door een dubbele punt (:). Daarna geef je het type van de variabele op. Het type Integer wordt door de programmeertaal ActionScript afgekort tot int. Nadat je de naam en het type hebt opgegeven kun je de waarde opgeven. Het isteken (=) betekent hier niet hetzelfde als in de wiskunde, namelijk dat wat er voor het is-teken staat gelijk is aan wat er na het is-teken staat. Hier betekent het is-teken dat de variabele die voor het is-teken is genoemd, als waarde krijgt wat na het is-teken staat. In dit geval krijgt de variabele met de naam aantalklikken, van het type Integer, de waarde 0. Ontwikkelen van Apps 6.93
Variabelen en statements in ActionScript Als er op de button wordt geklikt, moet de waarde van de variabele worden verhoogd met het getal 1, dat staat voor één klik. Het verhogen van de waarde van een variabele gebeurt ook met het is-teken. Als een variabele eenmaal is gedeclareerd, hoeft het keyword var en het type niet meer weergegeven te worden om de variabele te kunnen gebruiken. De coderegel: aantalklikken = aantalklikken + 1; betekent dat de variabele met de naam aantalklikken als waarde krijgt: dat wat na het is-teken staat. Na het is-teken staat een sommetje, namelijk de waarde van de variabele aantalklikken + 1. Deze som heeft een uitkomst, en deze uitkomst wordt de nieuwe waarde van de variabele aantalklikken. Met de laatste coderegel wordt de waarde van de variabele in het tekstvak weergegeven. txtresult.text = "Je hebt " + aantalklikken + " keer geklikt."; De eigenschap text van een tekstvak is van het type String, omdat er zowel letters als cijfers in het tekstvak kunnen staan. Daarom moet je de tekst die je in het tekstvak plaatst met ActionScript-code, tussen dubbele aanhalingstekens zetten. Als de waarde van een variabele in een stuk tekst weergegeven moet worden, dan moeten de dubbele aanhalingstekens worden onderbroken, en moet er vóór en achter de naam van de variabele een plus (+) staan. Na de tweede plus kun je weer tekst plaatsen. Die moet tussen dubbele aanhalingstekens. 6.94 Ontwikkelen van Apps
Ontwikkelen van Apps voor ios en Android 6.4 Type-conversie In de informatica is een type-conversie (in het Engels: type cast) een operatie die een variabele van een bepaald type omzet naar een ander type. Hierbij kun je onder andere denken aan het omzetten van tekst naar getal: het casten van een String naar een Number of Integer. Soms moet er worden gerekend met de invoer die een gebruiker in een tekstvak plaatst. Bijvoorbeeld bij een rekenmachine of een btwcalculator. Standaard is de inhoud van een tekstvak van het datatype String. Met een variabele van het datatype String is het niet mogelijk om berekeningen uit te voeren; deze variabele moet eerst worden omgezet naar Integer of Number. Hiernaast is een afbeelding van een btwcalculator opgenomen. In het tekstvak kan de gebruiker een bedrag invoeren, en als hij/zij op de button Bereken klikt, wordt er aan het bedrag in het tekstvak 6% van het bedrag toegevoegd. Dit is de code van deze applicatie: btnklik.addeventlistener(mouseevent.click, fl_mouseclickhandler); function fl_mouseclickhandler(event:mouseevent):void { var bedrag:number = Number(txtBedrag.text); txtinclusief.text = "Inclusief 6 % BTW: " + (bedrag * 1.06); Op de derde regel maak je de variabele bedrag aan. Deze heeft het type Number. Deze variabele kan dus zowel een geheel getal als een kommagetal als waarde hebben. In dit geval moet de variabele zijn waarde krijgen van de invoer van het tekstvak. Omdat de inhoud van een tekstvak van het datatype String is, moet je dit naar Number omzetten. Dit kan door de functie Number() te gebruiken. Ontwikkelen van Apps 6.95
Variabelen en statements in ActionScript Tussen de haakjes komt dan de waarde te staan die moet worden omgezet naar een Number; in dit geval is dit de inhoud van het tekstvak. Als laatste moet het bedrag vermenigvuldigd worden met 1.06 om de 6% btw er bij op te tellen. Dit gebeurt op de vierde regel. Naast de functie Number() is er ook de functie int(). Bij deze functie wordt dat wat tussen de haakjes staat omgezet naar een geheel getal. Eventuele kommagetallen worden dan altijd naar beneden afgerond. Zo zal 10,9 worden afgerond naar 10. Is dat wat tussen de haakjes staat bij de functies Number() en int() niet om te zetten naar een getal, bijvoorbeeld omdat er letters in staan, dan krijgt de variabele de waarde NaN. Dat betekent not a number. 6.5 Selectiestatements De ActionScript-code die tot nu toe gebruikt is, wordt van boven naar beneden uitgevoerd. Met selectiestatements kun je zelf bepalen in welke volgorde de code moet worden uitgevoerd. if Bij een if -statement hoort een vergelijking. Is deze vergelijk waar, dan wordt de bij de vergelijking behorende code uitgevoerd. Als de vergelijking niet waar is, wordt er geen code uitgevoerd. var getal:int = 10; if(getal > 15) { // Doe iets In de bovenstaande code is er de variabele getal. Dit is een geheel getal, met als waarde 10. De regel erna bevat een if -statement. Hiermee wordt gecontroleerd of de waarde van de variabele getal groter is dan 15. Als dat zo is, wordt de code die tussen de begin-accolade ({) en de sluit-accolade () staat, uitgevoerd. 6.96 Ontwikkelen van Apps
Ontwikkelen van Apps voor ios en Android if else Als bij een if -statement de voorwaarde niet waar is, wordt er geen code uitgevoerd. In veel gevallen is het handig om dan juist wel code uit te voeren, namelijk de code voor als de vergelijking niet waar is. Dat kan met een if else - statement: var getal:int = 10; if(getal > 15) { // Doe iets else { // Doe iets anders Bovenstaande code komt in het begin overeen met de code die bij het if - statement is besproken. Alleen, na de sluit-accolade van het if -statement staat het else -statement. Als de vergelijking van het if -statement niet waar is, wordt de code van het bijbehorende else -statement uitgevoerd. else if Naast de if else -vergelijking, is er ook nog een else if -vergelijking. Bij deze vergelijkingsstructuur zijn er twee of meer vergelijkingen, afgesloten met een else -vergelijking. Zie de volgende code. var getal:int = 10; if(getal > 50) { // Doe iets else if(getal > 25) { // Doe iets anders else { // Doe nog iets anders In plaats van na de sluit-accolade van het if -statement met een else -statement te beginnen, plaats je nu een else if -statement. Als de eerste vergelijking niet waar is, wordt er gecontroleerd of de tweede vergelijking misschien waar is. Als dat zo is, wordt de bijbehorende code van de tweede vergelijking uitgevoerd. Als deze tweede vergelijking ook niet waar is, dan wordt pas de bij else horende code uitgevoerd. Let wel, er is geen limiet aan het aantal else if -vergelijkingen. Ontwikkelen van Apps 6.97
Variabelen en statements in ActionScript switch Een script waar heel veel else if -vergelijkingen onder elkaar staan, is niet overzichtelijk. Daarom is er een switch. In een switch is het mogelijk om op een eenvoudige, gestructureerde manier een aantal else if -vergelijkingen te plaatsen. Met een switch beperk je het aantal coderegels bij een uitgebreide else if -vergelijking aanzienlijk. Bekijk de volgende code. var getal:int = 3; switch (getal) { case 0: case 1: case 2: case 3: case 4: case 5: // doe iets als het getal 0 is // doe iets als het getal 1 is // doe iets als het getal 2 is // doe iets als het getal 3 is // doe iets als het getal 4 is // doe iets als het getal 5 is default: // doe iets in alle andere gevallen De variabele getal heeft de waarde 3. Met de switch wordt er een aantal cases, casussen bekeken. De eerste casus is: wat moet er gebeuren ALS de variabele getal de waarde 0 heeft. De tweede casus is: wat moet er gebeuren ALS de variabele getal de waarde 1 heeft enzovoort. Als een casus waar is, dan kan er code worden uitgevoerd. Aan het einde van deze code moet het keyword komen te staan. Staat dit keyword er niet, dan wordt er gecontroleerd of de volgende casussen misschien ook waar zijn. In het geval van bovenstaande code zal dit niet zo zijn, maar er zijn gevallen denkbaar waarbij er dan meerdere casussen waar kunnen zijn. Als laatste voeg je een default toe. De code die bij de default staat, wordt uitgevoerd als er geen enkele casus waar is. Bij default hoef je geen break te gebruiken. Ook het toevoegen van een defaultcasus is niet verplicht, maar deze is wel aan te raden! 6.98 Ontwikkelen van Apps
Ontwikkelen van Apps voor ios en Android Vergelijkingsoperatoren Bij een vergelijking horen twee of meer getallen (of variabelen) en minimaal één vergelijkingsoperator. In de eerder gegeven voorbeeld-code werd er steeds gebruikgemaakt van de vergelijkingsoperator groter dan (>). Er zijn in totaal zes verschillende vergelijkingsoperatoren: Operator Naam Voorbeeld Uitkomst < Kleiner dan 10 < 10 False <= Kleiner dan of gelijk aan 10 <= 10 True > Groter dan 10 > 15 False >= Groter dan of gelijk aan 10 > 15 False == Gelijk aan 10 == 10 True!= Niet gelijk aan 10!= 10 False 6.6 Loop-statements Met een loop ( lus ) kun je een stuk code herhalen. Als een stuk code twee of meer keer achter elkaar moet worden uitgevoerd, kun je deze code twee of meer keer onder elkaar plaatsen. Maar als een stuk code honderd, of zelfs duizend keer herhaald moet worden, is het niet handig, en zeker niet overzichtelijk. Je kunt dan een loop-statement gebruiken. Er zijn twee verschillende typen loops, namelijk een for-loop en een while-loop. for-loop Hieronder de code van een for-loop. for(var i:int = 0; i < 100; i++) { // Deze code wordt honderd keer uitgevoerd Bij een for-loop behoort een variabele, de zogenoemde loop-variabele. Wereldwijd geven programmeurs deze variabele de naam i. Deze variabele is van het type Integer, en heeft aan het begin van de loop meestal de waarde 0. Vervolgens moet je opgeven onder welke voorwaarde de code in de loop moet worden uitgevoerd. In dit geval wordt de code in de loop net zo lang uitgevoerd als de waarde van de variabele i kleiner is dan 100. Ontwikkelen van Apps 6.99
Variabelen en statements in ActionScript Als laatste moet je opgeven wat er met de waarde van de loop-variabele moet gebeuren als alle codes in de loop zijn uitgevoerd. In geval van bovenstaande code wordt de waarde van de loop-variabele met 1 verhoogd. De code in de loop wordt dus 100 keer uitgevoerd. while-loop Hieronder de code van een while-loop. var bedrag:int = 25; while(bedrag < 50) { // Doe iets als het bedrag kleiner is dan 50 bedrag = bedrag + 5; Bij een while-loop staat er alleen een vergelijking tussen de haakjes, in tegenstelling tot een for-loop met loop-variabele. In het bovenstaande voorbeeld wordt de code in de while-loop alleen uitgevoerd als de waarde van de variabele bedrag kleiner is dan 50. In eerste instantie heeft de variabele bedrag de waarde 25. Als je de code in de loop uitvoert, wordt de waarde van de variabele bedrag met 5 verhoogd. In totaal zal de code in de loop dus 4 keer worden uitgevoerd. Immers, na 5 keer is de waarde van de variabele bedrag 50, en de vergelijk 50 < 50 levert false op. Het is mogelijk om een while-loop nooit meer te laten eindigen. In sommige gevallen kan dat handig zijn. Aangezien de voorwaarde van de while-loop true of false oplevert, is het ook mogelijk om direct true of false tussen de haakjes van de while-loop te plaatsen. Zie de volgende code: while(true) { // Deze loop blijft altijd bezig Doordat de voorwaarde van de loop nu vervangen is door het woord true is de voorwaarde altijd waar, en zal de loop zichzelf altijd blijven herhalen. 6.100 Ontwikkelen van Apps