1. Sløjfer i vores liv
Meget ofte kræver vores liv, at vi udfører de samme handlinger mange gange. Antag for eksempel, at jeg skal scanne et dokument, der består af mange sider. At vi gentager den samme procedure igen og igen:
- Læg den første side på scanneren
- Tryk på scanningsknappen
- Læg den næste side på scanneren
Dette er svært at gøre manuelt. Det ville være rart, hvis denne proces på en eller anden måde kunne automatiseres.
Eller overvej et andet eksempel: lad os sige, at jeg vil markere alle ulæste e-mails i min indbakke som spam. Engang skulle jeg vælge hver e-mail en ad gangen og markere den som spam.
Men programmører er dovne, så de automatiserede denne proces for længe siden: nu vælger du blot en hvilken som helst liste med bogstaver og klikker på "markér som spam", og så kører din e-mail-klient gennem listen og flytter hver e-mail til spam-mappen.
Hvad kan vi sige her? Det er super praktisk, når en computer eller et program kan udføre hundredvis eller tusindvis af monotone operationer med et enkelt klik. Og nu vil du også lære, hvordan du gør dette.
2. while
sløjfe
If-else-sætningen udvidede vores programmeringsmuligheder markant, hvilket gjorde det muligt at skrive programmer, der udfører forskellige handlinger i forskellige situationer. Men der er endnu en ting, der vil gøre vores programmer til en størrelsesorden mere kraftfulde - loops .
Java har 4 slags loops: while
, for
, for-each
og do-while
. Vi vil nu grave i den allerførste af disse.
En while
løkke er meget enkel. Den består kun af to dele: en tilstand og en løkkekrop . Løkkelegemet udføres igen og igen, så længe betingelsen er true
. Generelt while
ser en løkke sådan ud:
while (condition)
statement;
while (condition)
{
block of statements
}
Det er meget enkelt. Sætningen eller blokken af sætninger udføres igen og igen , så længe loop-betingelsen er lig .true
Sådan fungerer det: Først kontrolleres tilstanden . Hvis det er sandt, udføres loop-legemet ( sætningen eller blokken af sætninger ). Derefter kontrolleres tilstanden igen, og løkkelegemet udføres igen. Og så videre, indtil tilstanden bliver falsk.
Hvis betingelsen altid er sand , stopper programmet aldrig med at køre. Det vil blive permanent fast i løkken.
Hvis betingelsen er falsk den allerførste gang, den kontrolleres , vil løkkens krop ikke blive udført en gang.
3. Eksempler på sløjfer
Her er nogle praktiske eksempler på sløjfer i aktion.
Kode | Forklaring |
---|---|
|
5 linjer vil blive vist på skærmen:
|
Kode | Forklaring |
---|---|
|
10 linjer vil blive vist på skærmen:
|
Kode | Forklaring |
---|---|
|
Programmet læser tal fra tastaturet, så længe der indtastes tal. |
Kode | Forklaring |
---|---|
|
Programmet vil uendeligt udskrive bogstavet C på skærmen. |
Kode | Forklaring |
---|---|
|
Programmet vil læse linjer fra tastaturet
indtil |
I det foregående eksempel equals()
bruges metoden til at sammenligne strenge. Hvis strengene er ens, vil funktionen returnere true
. Hvis strengene ikke er ens, så vender den tilbage false
.
4. Løkke i en løkke
Efterhånden som du lærte om betingede udsagn, så du, at du kan bruge dem til at implementere kompleks logik ved at kombinere flere betingede udsagn. Med andre ord, ved at bruge et if
udsagn inde i et if
udsagn.
Du kan gøre det samme med løkker. For at skrive en løkke i en løkke, skal du skrive den anden løkke inde i kroppen af den første løkke. Det kommer til at se sådan ud:
while (condition for outer loop)
{
while (condition for inner loop)
{
block of statements
}
}
Lad os se på tre opgaver.
Opgave 1 . Lad os sige, at vi vil skrive et program, der viser ordet Mom
på skærmen 4 gange. En løkke er præcis, hvad vi har brug for. Og vores kode vil se sådan ud:
Kode | Forklaring |
---|---|
|
4 linjer vil blive vist på skærmen:
|
Opgave 2 . Vi vil skrive et program, der viser 5 bogstaver A
s på en enkelt linje. For at gøre dette har vi brug for en løkke igen. Sådan kommer koden til at se ud:
Kode | Forklaring |
---|---|
|
I stedet for println() vil vi bruge print() . Ellers ville hvert bogstav A ende på en separat linje. Skærmoutput vil være:
|
Opgave 3 . Vi ønsker at vise et rektangel bestående af bogstavet A
s. Rektangelet skal bestå af 4 rækker gange 5 kolonner. For at opnå dette har vi nu brug for en indlejret løkke. Vi tager blot vores første eksempel (det, hvor vi udsender 4 linjer) og erstatter koden til at udskrive en linje med koden fra det andet eksempel.
Kode | Forklaring |
---|---|
|
Den ydre løkke er lilla. Den bruger n variablen til at tælle antallet af iterationer af løkken. Den indre løkke er grøn. Den bruger m variablen til at tælle antallet af loop-iterationer. Vi skal eksplicit flytte markøren til næste linje, efter at den indre løkke er færdig. Ellers ender alle de bogstaver, som programmet udskriver, på én linje. Skærmoutput vil være:
|
De ydre og indre sløjfer skal bruge forskellige variable til at tælle antallet af sløjfe-iterationer. Vi var også nødt til at tilføje System.out.println()
kommandoen efter den indre løkke, da den løkke viser bogstavet A
s på samme linje. Når bogstaverne på en linje vises, skal nogen flytte markøren til en ny linje.
5. Sammenligning af loops Java vs Pascal
Mange af jer studerede Pascal i gymnasiet. For at gøre det nemmere for dig at forstå materialet her, tag et kig på denne sammenligning af while
loops skrevet i Pascal og Java. Hvis du ikke kender Pascal, så spring bare denne del over.
Pascal | Java |
---|---|
|
|
|
|
|
|
|
|
|
|
GO TO FULL VERSION