Jesper F. Jørgensen <Fontain@email.dk> skrev i en
nyhedsmeddelelse:9a7uu7$1la7$1@news.cybercity.dk...
>
> Hvorfor ganges de sammen (Sekunder = sek * min * timer) og hvordan bliver
de
> ganget sammen? Jeg føler jeg har løsningen lige på tungen, men den vil
ikke
> komme ud. Er der en venlig sjæl (eller flere) der pædagogisk kan forklare
> hvad der sker?
>
Hej Jesper.
Ja, hvordan skal jeg forklare det. Efter at have programmeret længe, er
løkker nu så indlysende, at jeg næsten har glemt, hvor svært det kunne være
at forstå.
for (int i = 0; i < 10; i++) {
<dette sker 10 gange>
for (int j = 0; j < 10; j++) {
<dette sker 10 gange, for hver gang den ydre løkke køres 1 gang>
}
}
I denne løkke udføres den yderste løkke 10 gange, mens i tælles op fra 0 til
og med 9. Men for hver gang i udføres en gang, udføres den inderste løkke jo
10 gange. Dvs. at ved endt kørsel er den inderste løkke udført 100 gange -
eller 10 * 10 gange.
> En opgave lyder at jeg så skal lave et program (hedder de applets?) der
> laver det samme blot med en while-løkke og en do...while-løkke - er der
> nogle der kan komme med små hints til hvordan dette gøres (det kan være
jeg
> selv indser det når jeg forstår ovenstående), men kom ikke med løsningen,
> jeg vil gerne selv lege med det.
>
Jamen, det er også den bedste måde at lære det på. Så vil jeg prøve at nøjes
med at forklare dig teknikken i de 3 typer løkker. Jeg må lige sige, at i
det følgende udelader jeg det faktum, at der findes metoder til at bryde ud
af løkker, der endnu ikke er fuldført.
FOR:
for (int i = START; i < SLUT; i++) {
}
Denne løkke udføres *altid* SLUT - START antal gange. Er SLUT - START <= 0
køres løkken aldrig. For-løkken bruges derfor typisk til de opgaver, hvor
man på forhånd kender antallet af kørsler (samt skal bruge støt
stigende/faldende værdier i løkken).
WHILE:
while (UDTRYK) {
}
UDTRYK er et boolsk udtryk - f.eks. (tal < 10) - dvs. et hvor man kan svare
sandt eller falsk. Denne løkke udføres indtil UDTRYK er falsk. Det betyder
følgende:
- løkken bliver måske aldrig kørt (hvis UDTRYK allerede er falsk.
- i løkken skal der ske noget, der på et eller andet tidspunkt vil gøre
UDTRYK til et falsk udsagn. Ellers kører den for evigt.
DO:
do {
} while (UDTRYK)
do-while løkken er nøjagtig som while-løkken, bortset fra, at UDTRYK først
testes efter kørsel af løkken. Dvs. at en do-while løkke *altid* køres
mindst 1 gang.
> PS.
> Hvilket program programmerer I i? Jeg bruger notepad, men er der ikke et
> smart program, således at man ikke skal sidde og tælle antal tryk på space
> for at få { } osv. til at sidde lige under hinanden (det er nu pænest).
>
Du mener altså hvilken editor, vi programmerer i!
Jeg har i længere tid brugt Notepad, men jeg savnede nogle bedre
facilliteter rettet mod programmering - som f.eks. automatisk indrykning af
{ og }. Bedre debugging-tools mm.
En her fra gruppen pegede på et produkt fra Sun, som hedder Forte. Det er et
grafisk udviklingsmiljø, som foretager automatisk indrykninger efter bedste
evne, med gode debugging-tools, og bedst af alt... det er fuldstændig gratis
(for privatpersoner). Det kan downloades her:
http://jsecom11b.sun.com/servlet/EComActionServlet?StoreId=8&PartDetailId=Fo
rteFJCE-2.0-All-G-F&TransactionId=Try&LMLoadBalanced=&LMLoadBalanced=
Jeg er allerede blevet utroligt glad for dette værktøj, men det skal lige
siges, at selv om der er delte meninger om dette, så mener jeg, at det er en
god ide at starte med et simpelt værktøj - som f.eks. Notepad. Der er
rigeligt til at forvirre dig i starten.
Med venlig hilsen
Jan Uhre