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: