Hmmm...
Za gornji primer begin-end za for petlje nije potreban ;). Zasto? Zato sto je unutar petlji samo JEDNA naredba. A kad MORA begin, i sta uopste znaci ta rec? Znaci "pocetak sekvence" a end oznacava "kraj sekvence". Sta je sad pa sekvenca - to je slozena naredba, odnosno naredba koja se sastoji od vise naredbi. Filozofija pascala je "sve je jedna naredba, odnosno sekvenca"; zato i program(body) pocinje i zavrsava sa begin...end; i on je nista drugo nego slozena naredba :).
Znam da je malo komplikovano za pocetnika, medjutim ovo je vazno razumeti, u pitanju je bitan koncept na kojem pociva struktuirano programiranje. Evo primer koda sa detaljnim tumacenjem:
Code:
for i:=1 to 10 do
for j:=1 to 10 do
writeln('i*j=' , i*j);
Posmatrajmo prvo donju for petlju (po j), unutar nje se nalazi samo jedna komanda - writeln(). Zato unutar te petlje nije potreban begin-end par. Posmatrajmo sada gornju for petlju (po i), unutar nje je takodje samo jedna naredba, unutrasnja for petlja koju smo upravo gledali; zato ni za nju ne treba begin-end par. Obratiti paznju da je za spoljasnju petlju naredba writeln potpuno nevidljiva ;).
A pogledajmo sad ovako nesto:
Code:
for i:=1 to 10 do
for j:=1 to 10 do
begin
writeln(j=', j);
writeln('i*j=' , i*j);
end;
Sada u unutrasnjoj petlji imamo DVE naredbe radvojene semicolonom (;); jasno je da ih moramo staviti unutar begin-end para, jer to je upravo sekvenca. Ali za spoljasnju petlju, i dalje se vidi samo unutrasnja for petlja, dakle i dalje samo jedna naredba.
I, finale:
Code:
for i:=1 to 10 do
begin
writeln(i=', i);
for j:=1 to 10 do
begin
writeln(j=', j);
writeln('i*j=' , i*j);
end;
end;
Za ovo (verujem) vec ni ne treba komentar :).
Pozz
P.S. Lakse je pratiti diskusiju ako se koristi tag code za source, pogledati s leve strane editora za poruke.