Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Geneste Lussen | Lussen
JavaScript Ninja

book
Geneste Lussen

In dit hoofdstuk zullen we het concept van geneste lussen verkennen. Geneste lussen zijn lussen binnen lussen, en ze zijn een krachtig hulpmiddel in programmeren dat ons in staat stelt om herhaalde acties op een gestructureerde manier uit te voeren. Door geneste lussen te gebruiken, kunnen we efficiënt complexe structuren navigeren en manipuleren, zoals rasters, wat precies is wat onze Ninja in dit hoofdstuk zal doen.

Stel je voor dat onze Ninja door een raster beweegt en sushi verzamelt. Het raster bestaat uit rijen en kolommen, en ons doel is om alle sushi te verzamelen die over dit raster verspreid is. Om dit te bereiken, kunnen we geneste lussen gebruiken: één lus om over de rijen te bewegen en een andere lus om door elke kolom te bewegen.

Laten we eens kijken naar een voorbeeld om te begrijpen hoe geneste lussen werken in de context van ons Ninja-spel:

js

ninja.js

copy
function ninjaController(ninja) {
ninja.goLeft();
while (ninja.objectRight() !== "wall") {
lootColumn(ninja);
ninja.goRight();
}
lootColumn(ninja);
}

function lootColumn(ninja) {
let steps = 0;
while (ninja.objectUp() === "sushi") {
ninja.pickSushi();
ninja.goUp();
steps++;
}
ninja.pickSushi();
for (let i = 0; i < steps; i++) {
ninja.goDown();
}
}

In het bovenstaande voorbeeld hebben we twee functies: ninjaController en lootColumn. De functie ninjaController gebruikt een while-lus om de Ninja van links naar rechts over het raster te verplaatsen. Voor elke kolom roept het de functie lootColumn aan, die een andere while-lus bevat om de Ninja omhoog te bewegen en sushi te verzamelen terwijl hij gaat. Zodra de Ninja de bovenkant van de kolom bereikt, gebruikt hij een for-lus om terug naar zijn oorspronkelijke positie te gaan.

Door de while-lus binnen de functie lootColumn te nesten binnen de while-lus van de functie ninjaController, kunnen we efficiënt alle sushi in elke kolom verzamelen voordat we naar de volgende gaan.

Taak

Swipe to start coding

Oplossing

function ninjaController(ninja) {
lootRow(ninja);
while (ninja.objectUp() === "sushi") {
ninja.goUp();
lootRow(ninja);
}
}
function lootRow(ninja) {
let movedRight = 0;

ninja.pickSushi();
while (ninja.objectRight() === "sushi") {
ninja.pickSushi();
ninja.goRight();
movedRight++;
}
ninja.pickSushi();

for (let i = 0; i < movedRight; i++) {
ninja.goLeft();
}
}

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 4
js

ninja.js

function ninjaController(ninja) {
// Write your code below
}

Vraag AI

expand
ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

We use cookies to make your experience better!
some-alt