Avatar billede Far Nybegynder
04. november 2010 - 11:02 Der er 4 kommentarer

Simpelt while - do-while løkke

Har en opgave som jeg bøvler lidt med. Den lyder følgende:

a) lav en variabel der hedder $maks og sæt den lig 10
b) lav en variabel der hedder $i og sæt den lig 1
c) lav en variabel der hedder $sum og sæt den lig 0
d) lav en while-løkke der kører så længe at $i er mindre end $maks
e) i kroppen på while-løkken skal $sum sættes lig $sum+$i
f) i kroppen på while-løkken, læg en til $i
g) når while-løkken er kørt til ende, udskrives $sum på skærmen


$maks = 10;
$i = 1;
$sum = 0;
while ($i <= $maks)
{
$sum++;
$i++;
}
echo $sum . '<br>';


Hvordan laver jeg den her som en while løkke?
Hvordan ville den se ud hvis det var en do-while løkke og hvad er forskellen?
Avatar billede repox Seniormester
04. november 2010 - 11:19 #1
Dit kriterie for opgavespecificeringen i d) er ikke opfyldt. Som du har sat din while løkke op, så vil din loope så længe at $i er mindre og lig $maks.

e) er heller ikke løst korrekt. Lige nu lægger du bare en til $sum, og ikke $i til sim.

En mere korrekt løsning ville være:
<?php
    $maks = 10;
    $i = 1;
    $sum = 0;
    while ($i < $maks)
        $sum = $sum + $i++;
   
    echo $sum;
?>


Forskellen på en do-while og en while er at i en do-while løkke vil din evaluering først ske efter et loop gennemløb (en iterering) hvorimod i en almindelig while løkke, evalueres dit udtryk inden løkken gennemløbes.
Avatar billede Far Nybegynder
04. november 2010 - 12:53 #2
okey. Foreløbig tak.
Hvordan ville opgaven så se ud som en do-while løkke?
Avatar billede wanze Nybegynder
04. november 2010 - 13:02 #3
<?php
    $maks = 10;
    $i = 1;
    $sum = 0;
    do
        $sum += $i++;
    while ($i < $maks);
    echo $sum;
?>


Problemet med do-while-løkken er dog, at hvis $i > $maks, så ville løkken alligevel blive gennemløbet én gang.
Avatar billede repox Seniormester
18. november 2010 - 09:54 #4
G85 - er du kommet videre?
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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