1. Slingor i vårt liv
Mycket ofta kräver våra liv att vi utför samma handlingar många gånger. Anta till exempel att jag behöver skanna ett dokument som består av många sidor. Att vi upprepar samma procedur om och om igen:
- Lägg den första sidan på skannern
- Tryck på skanningsknappen
- Lägg nästa sida på skannern
Detta är svårt att göra manuellt. Det skulle vara trevligt om denna process på något sätt kunde automatiseras.
Eller överväg ett annat exempel: låt oss säga att jag vill markera alla olästa e-postmeddelanden i min inkorg som skräppost. En gång i tiden måste jag välja varje e-postmeddelande ett i taget och markera det som skräppost.
Men programmerare är lata, så de automatiserade den här processen för länge sedan: nu väljer du helt enkelt valfri lista med bokstäver och klickar på "markera som skräppost", och sedan kör din e-postklient genom listan och flyttar varje e-postmeddelande till skräppostmappen.
Vad kan vi säga här? Det är superbekvämt när en dator eller ett program kan utföra hundratals eller tusentals monotona operationer med ett klick. Och nu kommer du att lära dig hur du gör detta också.
2. while
slinga
If-else-satsen utökade avsevärt våra programmeringsmöjligheter, vilket gjorde det möjligt att skriva program som utför olika åtgärder i olika situationer. Men det finns en sak till som kommer att göra våra program till en storleksordning mer kraftfulla — loopar .
Java har 4 typer av loopar: while
, for
, for-each
och do-while
. Vi ska nu gräva i den allra första av dessa.
En while
slinga är väldigt enkel. Den består av endast två delar: ett tillstånd och en loopkropp . Slingkroppen exekveras om och om igen så länge villkoret är true
. I allmänhet while
ser en slinga ut så här:
while (condition)
statement;
while (condition)
{
block of statements
}
Det är väldigt enkelt. Satsen eller blocket av satser exekveras om och om igen så länge som loopvillkoret är lika .true
Så här fungerar det: först kontrolleras tillståndet . Om det är sant exekveras loopkroppen ( satsen eller blocket av satser ). Sedan kontrolleras villkoret igen och loopkroppen exekveras igen. Och så vidare tills tillståndet blir falskt.
Om villkoret alltid är sant kommer programmet aldrig att sluta köras. Det kommer att vara permanent fast i slingan.
Om villkoret är falskt första gången det kontrolleras , kommer slingans kropp inte att exekveras ens en gång.
3. Exempel på slingor
Här är några praktiska exempel på loopar i aktion.
Koda | Förklaring |
---|---|
|
5 rader kommer att visas på skärmen:
|
Koda | Förklaring |
---|---|
|
10 rader kommer att visas på skärmen:
|
Koda | Förklaring |
---|---|
|
Programmet läser siffror från tangentbordet så länge siffror skrivs in. |
Koda | Förklaring |
---|---|
|
Programmet kommer att skriva ut bokstaven på skärmen i oändlighet .C |
Koda | Förklaring |
---|---|
|
Programmet kommer att läsa rader från tangentbordet
tills |
I föregående exempel equals()
används metoden för att jämföra strängar. Om strängarna är lika, kommer funktionen att returnera true
. Om strängarna inte är lika, kommer den att returnera false
.
4. Slinga i en slinga
När du lärde dig om villkorliga satser, såg du att du kan använda dem för att implementera komplex logik genom att kombinera flera villkorliga satser. Med andra ord, genom att använda ett if
uttalande i ett if
uttalande.
Du kan göra samma sak med slingor. För att skriva en slinga i en slinga måste du skriva den andra slingan inuti kroppen av den första slingan. Det kommer att se ut ungefär så här:
while (condition for outer loop)
{
while (condition for inner loop)
{
block of statements
}
}
Låt oss titta på tre uppgifter.
Uppgift 1 . Låt oss säga att vi vill skriva ett program som visar ordet Mom
på skärmen 4 gånger. En slinga är precis vad vi behöver. Och vår kod kommer att se ut ungefär så här:
Koda | Förklaring |
---|---|
|
4 rader kommer att visas på skärmen:
|
Uppgift 2 . Vi vill skriva ett program som visar 5 bokstäver A
s på en enda rad. För att göra detta behöver vi en slinga igen. Så här kommer koden att se ut:
Koda | Förklaring |
---|---|
|
Istället för println() kommer vi att använda print() . Annars skulle varje bokstav A hamna på en separat rad. Skärmutgången blir:
|
Uppgift 3 . Vi vill visa en rektangel som består av bokstaven A
s. Rektangeln ska bestå av 4 rader gånger 5 kolumner. För att åstadkomma detta behöver vi nu en kapslad loop. Vi tar helt enkelt vårt första exempel (det där vi matar ut 4 rader) och ersätter koden för att mata ut en rad med koden från det andra exemplet.
Koda | Förklaring |
---|---|
|
Den yttre öglan är lila. Den använder n variabeln för att räkna antalet iterationer av slingan. Den inre slingan är grön. Den använder m variabeln för att räkna antalet loopiterationer. Vi måste explicit flytta markören till nästa rad efter att den inre slingan är klar. Annars hamnar alla bokstäver som programmet skriver ut på en rad. Skärmutgången blir:
|
De yttre och inre slingorna måste använda olika variabler för att räkna antalet loopiterationer. Vi var också tvungna att lägga till System.out.println()
kommandot efter den inre slingan, eftersom den slingan visar bokstaven A
s på samma rad. När bokstäverna på en rad visas måste någon flytta markören till en ny rad.
5. Jämföra loopar Java vs Pascal
Många av er studerade Pascal på gymnasiet. För att göra det lättare för dig att förstå materialet här, ta en titt på denna jämförelse av while
loopar skrivna i Pascal och Java. Om du inte känner Pascal, hoppa över den här delen.
Pascal | Java |
---|---|
|
|
|
|
|
|
|
|
|
|
GO TO FULL VERSION