Avatar billede Morten Professor
28. oktober 2017 - 09:16 Der er 4 kommentarer og
3 løsninger

Loop hvordan så jeg forstår det

Hej Eksperter

Er der nogen der kan forklare hvordan et loop i javascipt fungere, man kan finde en masse loop på nettet men ikke en ordenlig forklaring jeg forstår.

Her er der en opgave som skal laves i codecademy
Er kommet frem til noget med at lave et loop, men med hjælp fra google.
Vil så gerne forstå det, så jeg kan forstå hvert enkelt ting der sker og hvorfor.
Så jeg kan huske hvordan man gør.

//You have 500 good strawberries, indexed from 1 to 500
var goodStrawberries = 500;

//For every strawberry whose index is divisible
//by 5, decrement the value of goodStrawberries by 1
for(i = 0; i < 500; i++){
    if(i % 5 === 0) {
    goodStrawberries--;
    }
}

console.log(goodStrawberries);
Resultat = 400

Håber der er en der vil tage sig lidt tid til at forklare mig det.

Med venlig hilsen
Morten
Avatar billede elefant Juniormester
28. oktober 2017 - 11:08 #1
Ja jeg kan starte med at forklare for løkken:

Først tildeles i værdien 0
Efter ; står en betingelse og så længe den er opfyldt skal løkken køres igen
Efter næste ; står der hvad der skal ske næste gang løkken udføres

Derefter har du en if-sætning i for-løkken

(i % 5 === 0) vil sige at der divideres med 5 og undersøges om resultatet er et heltal. Det vil sige det er "sandt" eller true ved 0, 5, 10, 15 osv.

Det er dermed hver 5. der bliver valgt fra, hvor der bliver trukket 1 fra variablen goodStrawberries og det er grunden til resultatet 400.
Avatar billede Morten Professor
28. oktober 2017 - 11:22 #2
Super men hvorfor skal "i" være mindre end 500 "< 500;" og så skal der pluses 1 op
"i++"
Tak for din forklaring er lige ved at være med :o)
Avatar billede Morten Professor
28. oktober 2017 - 11:25 #3
Lidt for hurtig ud er jo rigtig godt forklaret:
Efter ; står en betingelse og så længe den er opfyldt skal løkken køres igen
Efter næste ; står der hvad der skal ske næste gang løkken udføres

:o)
Avatar billede Morten Professor
28. oktober 2017 - 11:28 #4
hov lige en sidste ting hvorfor if(i % 5 === 0) {
    "goodStrawberries--;" <----- hvorfor goodStrawberries"--" altså minus minus
    }
Avatar billede olsensweb.dk Ekspert
28. oktober 2017 - 12:48 #5
#4
kig på disse operatore
%    Modulus
++    Increment
--    Decrement

-- tæller variablen 1 ned,
goodStrawberries-- er en forkortet vertion af
goodStrawberries = goodStrawberries -1;

-- og ++ udføres hurtigere af systemet, da der er færrer beregninger


1 lighedstegn (=)  = tildeling
2 lighedstegn (==)  = sammenligning på værdi
3 lighedstegn (===) = sammenligning på værdi og datatype


a=5; // int
b="5"; // string
a og b tildeles værdien 5

a==b;  // true, da værdierne af de 2 variabler er ens
a===b; // false, da værdierne af de 2 variabler er ens, men det er forskellige datatyper



links
https://www.w3schools.com/js/js_arithmetic.asp
https://www.w3schools.com/js/js_operators.asp

https://www.w3schools.com/js/js_loop_for.asp
https://www.w3schools.com/jsref/jsref_forEach.asp
https://www.w3schools.com/js/js_loop_while.asp

https://www.w3schools.com/js/js_comparisons.asp
Avatar billede Morten Professor
28. oktober 2017 - 13:30 #6
Mange tak det gav det sidste mening :o)
Avatar billede elefant Juniormester
29. oktober 2017 - 07:50 #7
Faktisk så tæller den for-løkke fra 0 til 499, men det giver jo også 500 gange den bliver løbet igennem.

Fordi der står:
i < 500
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester