Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Et prosedyreorientert program består av setninger som utføres i sekvens, så uten noen spesielle konstrollstrukturer vil all koden bli utført én og bare én gang. Koden under illustrerer poenget:

 

 

Illustrasjon av koden med et flytskjema. Kontrollflyten går nedover fra boks til boks.

 

PlantUML Macro
start
:skriv ut 'Hvor gammel er du?';
:les inn alder (som et tall);
:skriv ut 'Neste år blir du ' + (alder + 1) + ' år!';
stop


 

 

Først skrives spørsmålet ut, venter programmet på input (som bør være et tall) fra brukeren og til slutt skrives en ny melding utIllustrasjon av koden med et flytskjema. Kontrollflyten går nedover fra boks til boks.

 

 

 

 

Code Block
languagepython
titlePython
print('Hvor gammel er du?')
age = int(input())
print('Neste år blir du ' + str(age + 1) + ' år!')

Først skrives spørsmålet ut, venter programmet på input (som bør være et tall) fra brukeren og til slutt skrives en ny melding ut.

Code Block
languagejava
titleJava
Scanner scanner = new Scanner(System.in);
System.out.println("Hvor gammel er du?");
int age = scanner.nextInt();
System.out.println("Neste år blir du " + (age + 1) + " år!");


 

Betingelser med if-then-else

...

Her brukes if-nøkkelordet for å angi at print-setningen kun skal utføres hvis betingelsen ageInput.isdigit() er sann. Her ser vi også at en må

 

 

 

PlantUML Macro
start
:skriv ut 'Hvor gammel er du?';
:les inn alder (som en tekst);
if (alder er et tall) then (sann)
	:skriv ut 'Neste år blir du ' + (alder + 1) + ' år!';
else (false)
	:skriv ut alder + ' er ikke et tall!';
endif
stop

Kontrollflyten har en forgreining, hvor verdien av betingelsen (true eller false) avgjør hvilken grein som tas.

 

 

  

Her brukes if-nøkkelordet for å angi at print-setningen kun skal utføres hvis betingelsen ageInput.isdigit() er sann.

 

Code Block
languagepython
titlePython
print('Hvor gammel er du?')
ageString = input()
if (ageString.isdigit()):
    print('Neste år blir du ' + str(int(ageString) + 1) + ' år!')
else:
    print(ageString + ' er ikke et tall!')

Her brukes if-nøkkelordet for å angi at print-setningen kun skal utføres hvis betingelsen ageInput.isdigit() er sann. 

 

 

Code Block
languagejava
titleJava
Scanner scanner = new Scanner(System.in);
System.out.println("Hvor gammel er du?");
String ageString = scanner.nextLine();
if (ageString.matches("[0-9]+")) {
	int age = Integer.valueOf(ageString);
	System.out.println("Neste år blir du " + (age + 1) + " år!");
}
else
	System.out.println(ageString + " er ikke et tall!");

 

I Java må en

gruppere setninger med { og } for å kunne ha flere av dem.

 

 

Dette kalles gjerne betinget utførelse, siden setningene i de to greinene utføres bare hvis en bestemt betingelse er true/sann eller false/usann. Det finnes flere varianter, f.eks. kan en utelate else-delen eller ha en ny if i else-delen for å håndtere flere tilfeller.

...

PlantUML Macro
start
:skriv ut 'Hvor gammel er du?';
:les inn alder (som en tekst);
while (alder er et tall) is (usann)
	:skriv ut alder + ' er ikke et tall, skriv det inn på nytt!';
	:les inn alder (som en tekst);
endwhile (sann)
:skriv ut 'Neste år blir du ' + (alder + 1) + ' år!';
stop
Code Block
languagepython
titlePython
print('Hvor gammel er du?')
ageString = input()
while (! ageString.isdigit()):
	print(ageString + ' er ikke et tall, skriv det inn på nytt!')
	ageString = input()
print('Neste år blir du ' + str(int(ageString) + 1) + ' år!')   

 

 

 

Code Block
languagejava
titleJava
Scanner scanner = new Scanner(System.in);
System.out.println("Hvor gammel er du?");
String ageString = scanner.nextLine();
while (! ageString.matches("[0-9]+")) {
	System.out.println(ageString + " er ikke et tall!");
	ageString = scanner.nextLine();
}
int age = Integer.valueOf(ageString);
System.out.println("Neste år blir du " + (age + 1) + " år!");

 

 

 

En for-løkke er et spesialtilfelle av en while-løkke, og brukes dersom man vet hvor mange ganger løkkekroppen skal utføres. Man har en tellevariabel som endres hver gang løkken har kjørt, og til slutt er tellevariabelen så stor eller liten at løkken er ferdig. Det er også mulig å få for-løkker til å kjøre uendelig, så vær forsiktig med bruken av denne også. For å implementere en for-løkke trenger man (1) en startverdi for tellevariabelen, (2) en sluttverdi for tellevariabelen, og (3) hvor mye man ønsker å endre tellevariabelen etter hver løkke. En standard bruk av slike løkker er å bla gjennom en liste, og gjøre noe med hvert element i listen. 

Det finnes varianter hvor man ikke tester løkke-betingelsen på forhånd, men etterpå, og hvor betingelsen snus på. Noen språk har også muligheten til å hoppe ut av løkka fra innsiden.

Les mer om dette her:

 To sentrale stikkord når man arbeider med løkker er break og continue. Break betyr at man avbryter løkken, og fortsetter å kjøre koden som står under løkkekroppen. Continue betyr at man starter løkken på nytt uten å utføre resten av koden innenfor løkkekroppen. I for-løkker vil tellevariabelen oppdateres når man bruker conti

Unntakshåndtering

Unntak er hendelser i et program som helst ikke skal skje. Dersom man har en liste med 4 elementer,  og man spør om hva som er det 5. elementet vil det i de fleste programmeringsspråk oppstå et unntak. Det er god programmering å skrive kode slik at man i høyest mulig grad unngår unntak. I eksempelet over betyr det å sjekke om listen inneholder 5 elementer før man spør etter det 5. elementet.

...