Kontrollstrukturar del I (if, while, do-while, for)

Kontrollstrukturar del I (if, while, do-while, for)

Thu 31 December 2009

Del 3 : Kontrollstrukturar del I.

Dei fleste som har brukt ei datamaskin har vel merka at stort sett alle program ein brukar gir deg eit eller fleire valg.
Eit klassisk eksempel er "er du sikker" bekreftelsen som dei fleste sikkert har stifta bekjentskap med mang ein gang.
Her får en eit spørsmål med to valg alternativ, ja eller nei og dette er en situasjon som vi kjem til å sjå atskillige ganger.
Korleis oversett vi så dette til java? Du hugsar kanskje if kode biten frå eksempel 1, den fine kalkulatoren vår?


IF SETNING

Her kjem ein definisjon på ei if setning:

if "boolsk-uttrykk" then "statement_1" else "statement_2"

- Eit boolsk uttrykk er eit uttrykk som returnerar en boolsk verdi. Det finst to (2) boolske verdiar, true og false (sann og usann).
- Så eit boolsk uttrykk er eit uttrykk som er sant eller ikkje sant. Det er enten eller, aldri sann og usann samtidig.
- x == y er eksempel på eit boolsk uttrykk som returnerar true (er sant) berre dersom x og y er like.

Vi skriv opp at if setninga vår:

if boolsk-uttrykk er sant then/så utfør "statement_1", else/ellers utfør "statement_2"

- Eit statement er ikkje noko meir skummelt enn ein kodebit

Her kjem ei if setning i java kode:

{codecitation class="brush: java; gutter: true;"}
// If setning eksempel
if (x == y)
{
System.out.println ("x og y er like");
}
else
{
System.out.println ("x og y er ikkje like");
}


Som du ser er det ikkje noke hokus pokus. Koda skriv ut "x og y er like" kun om dei er det.
I alle andre tilfeller, dvs om x og y ikkje er like skriv den ut "x og y er ikkje like".

Som vi ser er if kontrollstrukturen en enkel struktur å lære seg, og det er bra for som vi skal sjå er den veldig viktig.


WHILE LØKKE

Vi vil no sjå nærmare på kontrollstrukturen while.
Denne er en repetisjonssruktur, dvs at den bestemmer om en viss kodebit skal reperetast

Her kjem en definisjon på ei while løkke

while condition er sann utfør statement

Allereide her får vi bruk for datatypen boolean som vi såg i forbindelse med if setningane.

Her kjem ei while løkke i java kode:

{codecitation class="brush: java; gutter: true;"}
// While løkke eksempel 1
while (x == y)
{
//Dette blir utført så lenge x og y er like
x ++
}


Så lenge x og y har samme verdi, dvs at condition er sann, så utfører vi koda imellom { og }, også kalt løkke kroppen.
I dette tilfellet øker vi x med en (1) for kvar iterasjon/kjøring av while løkka.

Det som er viktig å passe på i while løkker er at vi i løkke kroppen har noke kode som endrar betingelsen vi brukar.

{codecitation class="brush: java; gutter: true;"}
// While løkke eksempel 2
while (x == y)
{
System.out.println ("Dette er ei uendelig løkke, og vil ikkje avslutte før maskina di går tom for minne");
}


Sidan vi ikkje har noke kode som endrar tilstanden på x eller y vil desse alltid ha samme verdi og løkka vil berre
skrive ut heilt til JVM kræsjar, eller dersom du avbryt med CTRL + C.



DO WHILE LØKKE
Når vi brukar ei while løkke er vi aldri sikker på om det som står i løkke kroppen (mellom { og }) vert utført.
Om vi vil vere sikre på dette kan vi bruke ei do-while løkke som fungerar akkurat som ei while løkke bortsett frå at testen
vert utført etter løkke kroppen


{codecitation class="brush: java; gutter: true;"}
// Do while løkke eksempel
do
{
System.out.println ("Vi er sikker på at løkke kroppen vert utfør minst en gang");
System.out.println ("Vi veit og at loekke kroppen vert utfoert fleire gonger dersom x og y er like");
x ++
} while (x == y);


Legg merke til at i vi har brukt dobbel er lik (==) i alle sammenligningane våre. Dette er ein såkalt boolsk sammenlignings operator.
Dersom ein skriv x = y set vi variabelen x lik variablen y, (tilordning), mens x == y sjekkar om variablen x er lik variabelen y, (boolsk test).


FOR LØKKE

Tilslutt vil vi sjå litt på en annen populaer repetisjons struktur, nemlig for løkka.
Denne lar oss spesifisere et vist antall ganger vi skal utføre en kodebit.

{codecitation class="brush: java; gutter: true;"}
// For loekke eksempel 1
for (int i = 0; i <= 100; i ++)
{
System.out.println ("Denne kodebiten vert utfoert 100 gangar");
System.out.println (i);
}


Her kjem ei forklaring på dei forskjellige delane av loekka, linje for linje.

for : Er eit nøkkelord i java og indikerar at vi skal til å definere ei for løkke.
int i = 0 : Definerar det heiltalet (int) vi skal starte å telle frå.
i <= 100 : Definerar kor langt vi skal telle, i dette tilfellet tell vi til variabelen i vert lik 100.
i ++ : Vi oppdaterar tellar variabelen i med 1 for kvar gang vi kjører for løkka vår.
{kode inne i her} : Dette er løkke kroppen og inneheld all koda som skal repeterast.

Som du kansje har lagt merke vil for løkke eksempel 1 telle frå 0 til 100, altså oppover. Men kva om vi vil telle baklengs/nedover?

{codecitation class="brush: java; gutter: true;"}
// For loekke eksempel 2
for (int i = 100; i >=0; i --)
{
System.out.println ("Denne kodebiten vert utfoert 100 gangar");
System.out.println ("Og som du kanskje har forstått startar den på 100 og tell ned til 0");
System.out.println (i);
}

Tagged as : java