Bookmark and Share

Svårighetsgrad
Svårighetsgrad
Betyg (15 röster)
BetygBetygBetygBetygBetyg
 

Nästlade loop'ar

Inledning

Okej, vad är en nästlad loop?

Det är en loop innuti en annan loop. Nästlade loop'ar är inte direkt ovanliga speciellt vid algoritmer som behandlar data. Exempel kan vara vid uppritning av kartor i grafiska spel eller sortering av data. En nästlad loop kan se ut som:

I den första loop'en (rad 1), även kallad den yttre loop'en, finns det en inre loop (rad 5). Kan du se hur många gånger texten "Hej" skrivs ut?

Rätt svar på den frågan är 100 gånger. Båda loop'arna kontrolleras av variabel och villkor som gör att de görs exakt 10 gånger. Den yttre loop'en körs 10 gånger. I den yttre loop'en ligger den inre loop'en som också den körs 10 gånger. Totalt sett körs den inre loop'en 10 gånger vilket ger svaret 10 x 10 utskrifter på "Hej".

Ändrar vi lite i koden så kan vi få med variablerna x och y i utskriften:

bild

Multiplikationstabell

Det underlättar om vi tänker 2-dimensionellt när vi konstruerar nästlade loop'ar. I exemplet nu ska vi konstruera ett program som skriver ut multiplikationstabellen, 1:ans till 10:ans, med lite snygga utskrifter. Studerar vi exemplet ovan så är vi nästan där, vi behöver bara göra beräkningen samt snygga till utskrifterna lite. Förslag:

bild

Ytterloop'en reglerar aktuell tabell och varibeln tal loop'as för att kunna ge multiplikationstabellen, tabell*tal. Beräkningen görs i utskriften. Före och efter innerloop'en görs nödvändig textformatering.

Spelplan

Nästlade loop'ar är ofta användbara i spelsammanhang. Ett typiskt exempel kan vara att generera ett mönster, hämta data från en spelplan eller just rita ut en spelplan. För att göra det lite roligare så ska vi i programmet kunna ange spelplanens höjd och bredd. Varje tänkt ruta i spelplanen ritas ut som ett #.

bild

Övningar

Utifrån exemplen ovan så kan du testa och se om du kan lösa följande uppgifter. En del av dem kan vara lite knepiga.

Övning 1

Efterlikna följande spelplan (10x10) där rutor i varannan kolumn ska ritas ut som ett o.

bild

Övning 2

Efterlikna följande spelplan (11x11) där varannan ruta, i den ordning som den ritas, ska ritas ut som ett o.

bild

Övning 3

Efterlikna följande mönster. Tips är att innerloop'ens villkor måste bygga på ytterloop'ens variabel.

bild

Viktiga begrepp

  • nästlad loop/ (eng. nested loop)

Kommentarer

5 inlägg