Gå til innhold

Forskjell på diverse løkker..


Anbefalte innlegg

Jeg har nettopp begynt med Java programmering, og er en ting jeg lurer på angående det. Jeg ser at det finnes diverse løkker, og lurer på hva funksjonen til disse er, og når de eventuelt bør brukes. Løkkene jeg ser mest på:

- If-else-setninger (ikke en løkke)

- While-løkker

- For-løkker

- Do-while-løkker

- Switch/case statement

 

Jeg har litt problemer med å skjønne hva disse forskjellige løkkene gjør, eventuelle forskjeller som f.eks forskjell på for- og while-løkke og når jeg bør bruke disse løkkene..

Lenke til kommentar
Videoannonse
Annonse

I en for løkke er du avhengig av at du veit hvor mange iterasjoner løkken skal kjøre. Dette er ikke nødvendig i en while løkke.

 

Se for deg følgende scenario:

 

Du har en database du skal lese fra, men du vet ikke hvor mange tupler/rader som finnes i tabellen. Da er det yppelig med en while løkke.

 

Psuedo kode:

 

while(det finnes flere rader i tabellen) {
   Gjør ting her();
}

 

While loop kan fort bli en infinite loop hvis man ikke holder hodet på plass i enkelte tilfeller. while(true == true).

 

Do-while løkker fungerer på samme måte, bare at her kjører løkken minst èn gang før tilstanden testes, altså motsatt av while-do løkker.

 

do {
   Gjør ting her();
} while(det finnes flere rader i tabellen);

 

For loops derimot krever at du vet hvor mange iterasjoner som skal løpe i løkken, og kan ikke bli infinite. (regner med at du har sett syntax for den).

 

If/else og switch/case brukes avhengig av hvor mange conditions du tester. Det vil være lite poeng å bruke switch case på kun èn test. Samtidig vil det fort bli rotete med if/elseif med la oss si 20 tester. Jeg bruker gjerne denne konvensjonen (ikke nødvendigvis i Java, men også andre språk):

 

Kun èn test (kort if/else):

var resultat = condition ? "verdi hvis true" : "verdi hvis false";

 

To til fire tester (if/else):

if(condition1) {
   var resultat = "1";
} elseif(condition2) {
   var resultat = "2";
} else {
   var resultat = "ikke 1 eller 2";
}

 

fire eller fler (switch/case):

switch (month) {
    case 1:  monthString = "Januar";        break;
    case 2:  monthString = "Februar";       break;
    case 3:  monthString = "Mars";          break;
    case 4:  monthString = "April";         break;
    case 5:  monthString = "Mai";           break;
    case 6:  monthString = "Juni";          break;
    case 7:  monthString = "Juli";          break;
    case 8:  monthString = "August";        break;
    case 9:  monthString = "September";     break;
    case 10: monthString = "Oktober";       break;
    case 11: monthString = "November";      break;
    case 12: monthString = "Desember";      break;
    default: monthString = "Ikke gyldig";   break;
}

 

Håper dette hjelper :)

 

EDIT: Glemte do-while løkken.

Endret av emilkje
  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...