Valg og logiske uttrykk


Programutførelse og kontrollstrukturerer:

Programmer består av instruksjoner (variabeldeklarasjoner, tilordning, osv.) som utføres sekvensielt i den rekkefølgen de er skrevet.

Hvis vi ønsker å gjøre ting flere ganger (gjentagelser, løkker) og slippe å skrive det samme om og om igjen, bruker vi løkker eller lager en funksjon/prosedyre av det vi ønsker å gjenta.
Se kapittel 5: Løkker/iterasjoner (kontrollstrukturene for, while, do) og funksjoner.

Hvis vi ønsker å gjøre noe bare hvis en betingelse er oppfylt, bruker vi valg; kontrollstrukturene if og switch.

IF:

Alle programmerignsspråk har en "hvis"- kontrollstruktur..

if(tall>10) {
   trace("Tallet "+tall+" er større enn 10");
} else {
   trace("Tallet "+tall+" er mindre eller lik 10");
}//if

Betingelsen inne i parentesen til if, tall>10, er et logisk uttrykk som enten er sant eller usant. (true eller false).

Her er variabelen tall Number eller int, mens hele uttrykket tall>10 er Boolean! (Boolean: Logisk datatype: true eller false)

Logiske uttrykk kan kombineres med operasjonene og, eller: og ikke, eksempelvis:

Eksempel på OG og IKKE:
if( godtsiktet && vapenladd && !bevegelse) {		// && betyr logisk og, ! betyr logisk ikke (motsatt)
    trace("Treff!");
}else{
    trace("Bom!");
}

Det logiske uttrykket i betingelsen uttrykker da at vi bare treffer hvis
vi siktet godt og hadde ladd våpen og målet ikke var i bevegelse.

Eksempel på ELLER:
if( (terningkast==2) || (terningkast==4) || (terningkast==6) ) {
    trace("Terningen viste et partall!");
}else{
    trace("Terningen viste et oddetall!");
}

Her uttrykker det logiske uttrykket i betingelsen at et terningkast viser et partall, bare hvis
terningkastet ga 2 eller terningkastet ga 4 eller terningkastet ga 6.

Regler for AND (&&) og OR (||) kan beskrives slik: slik:

AND false true
false false false
true false true
 
OR false true
false false true
true true true

For at a && b skal være true må både a og b være true!

For at a || b skal være true må enten a eller b (eller både a og b) være true

 

Eksempel på styring av ball i en animasjon:

if(ball.x>500) {	// Hvis ball utenfor området til høyre,
   stepx=-stepx;        // skift bevegelsesretning
}
if(ball.y<0) {          // Hvis ball utenfor toppen av området
   stepy=-stepy;        // skift bevegelsesretning
}

 

Oppgave

Innled et program med tilordningen:

var terningkast:int  =Math.floor(Math.random()*6)+1;  

Deretter lager du kode som skriver ut følgende informasjon:

-Om tallet var et partall
-Om tallet var 6
-Om tallet var delelig med 3
-Om tallet var et av tallene 2,3,4 eller 5

Løsningsskisser

SWITCH:

Når det blir mange if, for eksempel hvis vi skal sjekke om en piltast er en av fire muligheter,
fortrekker mange å bruke en switch-konstruksjon:

   switch (event.keyCode) {		// Switch krever i de fleste programmeringsspråk
      case Keyboard.UP: {		// at variabelen som testes er et heltall, men
         ball.y -= 5;			// ActionScript tillater også andre datatyper.
         break;
      }
      case Keyboard.DOWN: {
         ball.y += 5;
         break;
      }
      case Keyboard.LEFT: {
         ball.x -= 5;
         break;
      }
      case Keyboard.RIGHT: {
         ball.x += 5;
         break;
      }
   } //switch
} //function

som et alternativ til:

if( event.keyCode==Keyboard.UP) {
    ball.y-=5;
}else if (event.keyCode==Keyboard.DOWN) {
    ball.y+=5;
}else if (event.keyCode==Keyboard.LEFT) {
    ball.x-=5;
}else if (event.keyCode==Keyboard.RIGHT) {
    ball.x+=5;
}else {
    //ingen av dem...
}//if

Dokumentasjon av kontrollstrukturen IF:

Hvis vi skal planlegge eller dokumentere logikken i et program, brukes ofte enten Pseudokode eller flytskjemaer:

Kode:

if(tall>10) {
 trace("Tallet "+tall+" er større enn 10");
} else {
 trace("Tallet "+tall+" er mindre eller lik 10");
}//if

Som pseudokode:

Hvis tallet er større enn 10
   Skriv ut tallet <verdi> er større enn 10
ellers
   Skriv ut tallet <verdi> er mindre eller lik 10

Som flytskjema: