Lidt mere om løkker.
I lektion 2 og 3 beskæftigede vi os blandt andet med kontrolstrukturer.
Løkker er et eksempel på en kontrolstruktur.
Da løkker er en vigtig del af langt de fleste computerprogrammer, så bruger vi lige lidt mere tid på emnet i denne lektion.
Løkker er vigtige:
I skal nemlig også bruge løkker i de kommende opgaver, I skal løse.
En løkke er en kontrolstruktur til at gentage en række instruktioner.
Løkken gentages indtil en given betingelse er opfyldt.
Løkker bruges til mange formål. Her er en række eksempler på anvendelsesområder:
Indlæsning (og bearbejdning) af linjerne i en fil med data for en app
Beregning af summen af en række værdier i en liste
Sortering af en liste af fødselsdatoer
Afspilning af et musiknummers data
Finde mellemrum i et digt
En løkke har ligheder med en forgrening. I begge bliver en betingelse evalueret som sand eller falsk. I en forgrening afvikles en række instruktioner én gang, hvis betingelsen er sand. I en løkke afvikles en række instruktioner alle de gange, hvor betingelsen er opfyldt.
Uendelig løkke
Hvis betingelsen i en løkke altid er sand, vil løkken aldrig stoppe. Det kan eksempelvis ske, hvis man glemmer at ændre en variabels værdi, og denne bruges i betingelsen.
I så fald vil fortolkeren aldrig stoppe, og man er nødt til at afbryde den.
Det er dog også i nogle tilfælde ønskeligt, at en løkke fortsætter i det uendelige. F.eks. findes der i Scratch en blok til dette.
I Scratch kan en løkke fortsætte for evigt ved at bruge denne kontrolstruktur:
Vilkårligt antal gennemløb
Det er ikke altid muligt at forudsige antallet af gentagelser i en løkke. Hvis betingelsen for at fortsætte gentagelserne ikke afhænger af optælling af en variabel, kan det ikke forudsiges, hvornår løkken stopper.
Eksempelvis kan løkkens betingelse afhænge af et brugerinput. Der kan være behov for at fortsætte en løkke, så længe en bruger ikke taster et bestemt input.
Du kan f.eks. i Scratch bruge 'gentag-indtil', hvis du vil fortsætte til en bruger taster 'Nej' eller på anden måde tilkendegiver, at hun vil stoppe.
Løkken gentages derfor så længe brugeren f.eks. ikke taster 'Nej' til et givent spørgsmål.
Husk at bruge løkkerne med omtanke,
så I kun får det antal gentagelser I ønsker at opnå.
Nedenfor er et program, der gennemløber 7-tabellen.
Programmet anvender en 'gentag-10-gange'-løkke.
Vi vil nu udvide vores 7-tabel program, så vi kan gemme alle værdierne i en liste (et andet udtryk for en liste er en Array).
Programkoden kan se nedenfor til venstre. På videoen til højre gennemgås, hvordan programmet er lavet og hvad lister er.
Se videoen igennem, så I selv kan lave lister i jeres næste program!
Programkode til 7-tabel med liste.
I videoen gennemgås brugen af lister (Arrays).
Lav et tabelprogram.
I kan lade jer inspirere af programmet ovenfor.
Der er følgende krav til jeres program:
Brugeren skal selv bestemme, hvilken tabel programmet gennemløber
Brugeren skal selv bestemme, hvor mange beregninger programmet skal lave
(Brugeren kan f.eks. vælge 6-tabellen og at programmet skal lave 20 beregninger - dvs. op til 6x20)
Alle de beregnede værdier skal gemmes i en liste (array)
Når programmet er færdigt skal summen af alle beregningerne beregnes.
Hvis brugeren vælger 6-tabellen og der skal foretages 10 beregninger fås resultatet 330 (6+12+18+24+30+36+42+48+54+60)
Hvis brugeren vælger 8-tabellen og der skal foretages 20 beregninger fås resultatet 1.680
Jeres opgave:
Lav et rutediagram over jeres program
Lav herefter programmet i Scratch.
Tag et billede af det færdige program og sæt billedet ind i din logbog.
Beskriv hvad der sker i hvert trin/linje i programmet. Dette skriver du også i din logbog.
Lav et program, hvor brugeren skal indtaste tal.
Brugeren skal selv kunne stoppe indtastningen af tal (evt. ved at taste 'n' eller '0').
Når brugeren er færdig med indtastningen skal programmet vise følgende:
Alle de indtastede tal (programmet skal derfor gemme de indtastede værdier i et array)
Antallet af indtastede tal
Summen af de indtastede tal
Det største tal
Det mindste tal
Gennemsnittet af de indtastede tal
Jeres opgave:
Lav et rutediagram over jeres program
Lav herefter programmet i Scratch.
Tag et billede af det færdige program og sæt billedet ind i din logbog.
Beskriv hvad der sker i hvert trin/linje i programmet. Dette skriver du også i din logbog.
Husk at skrive et refleksionsskriv i din logbog, hvor du forklarer, hvad du har arbejdet med i lektion 4, hvad du har lært og hvilket udfordringer, du er stødt på.
Gå til Lektion 5