Avatar billede vandspand Nybegynder
05. september 2005 - 11:26 Der er 11 kommentarer og
1 løsning

hvad betyder det

hej jeg sad og lurede på noget sourcekode og der var den her for løkke...

            for(;;){
                while(a[++i] < v);
                while(a[--j] > v);
                if (j < i) break;
                swap(i, j);

det virker. Men hvad betyder den for løkke med to semikolon i?
og hvorfor har while'en et semikolon bagved? er det ligesom at lave en for eller en if uden klammer?
Avatar billede kalp Novice
05. september 2005 - 11:28 #1
for(int i = 0; i < 10; i++)

giver det mening når man udfylder for løkken?
Avatar billede kalp Novice
05. september 2005 - 11:29 #2
int i = 0; vi erklære en attribut i og initialisere den værdien 0
i < 10; det antal gange vi vil have løkken skal køre
i++ . så længe i er mindre en 10 (vores betingelse) skal der lægges 1 til i
Avatar billede medions Nybegynder
05. september 2005 - 11:33 #3
Vandspand> Det begyder at din løkke er uendelig, så den vil blive ved med og kører de andre løkker så snart de er færdige.

//>Rune
Avatar billede vandspand Nybegynder
05. september 2005 - 11:38 #4
Hvad betyder dette så:

while(a[--j] > v);

Når jeg vil lave en while, så vil jeg skrive:

while(condition){
    doStuff();
}
Avatar billede kalp Novice
05. september 2005 - 11:42 #5
Det er en uendelige løkke
Avatar billede kalp Novice
05. september 2005 - 11:42 #6
jeg ville også lave min while løkke som dig hehe

den er ikke uendelige hvis nu at betingelsen skulle kunne ændre sig.. men ellers kan man sige man laver sådan en til at få tiden til at gå hehe
Avatar billede kalp Novice
05. september 2005 - 11:45 #7
eller en mulighed man kan bruge det til..

eftersom det er en uendelig løkke.. så vil din app gå i stå der og køre den løkke indtil betingelsen bliver opfyldt.. du kan evt. et andet sted fra ændre i værdien i en af attributterne i betingelsen så den bliver opfyldt og så gå programmet videre..

ved ikke om du forstod det.. men altså sætte en slags pause i sit program
Avatar billede vandspand Nybegynder
05. september 2005 - 11:57 #8
forstod det fint og der er også det der er gjort... men når jeg koder, koder jeg altså ordentligt og ikke laver sådan noget kryprisk noget... men hvis det kan gøre ens dag at kode sådan så skal man også gøre det :-)
Avatar billede arne_v Ekspert
05. september 2005 - 11:59 #9
for(;;) {
  ...
}

svarer til

while(true) {
    ...
}

og det er:

if (j < i) break;

som får den til at hoppe ud af løkken

while(...) {
  ...
}

tester i toppen

do {
  ...
} while(...);

tester i bundern

for(;;) {
  ...
  if(...) break;
  ...
}

tester i midten
Avatar billede vandspand Nybegynder
05. september 2005 - 12:04 #10
Ok ArneV du har gjort min dag (igen)

svar??
Avatar billede arne_v Ekspert
05. september 2005 - 12:22 #11
ok
Avatar billede jakoba Nybegynder
06. september 2005 - 08:20 #12
linien
    while(a[--j] > v);
er igen *smart* kode (og smarte kodere bør skydes på human vis)
det svarer til:
    while(a[--j] > v) {
        ;    // ingenting her, men i betingelsen blev j een mindre
    }
det er også derfor i efterhånden går hen og bliver større end j.
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
Kurser inden for grundlæggende programmering

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