Ĺadny brzuch
Pare twierdzeń:
-Jak napisze pętlę FOR..TO..DO to cały program sie zatrzymuje dopuki nie wykona całej pętli.
-Jak napisze pętlę WHILE..DO to program ją wykonuje lecz wykonuje w między czasie inne funkcję.
Pytanie:
-Jaką funkcją moge zastosować, aby działała identycznie jak WHILE..DO lecz, aby program się zatrzymywał:?
//NEURON
//mariuszlorenc@wp.pl
//P4 3Ghz; 512Mb; GF FX 5200; 120Gb HDD
Nie wiem czy skumałem dobrze, ale myśle że pomoże Ci Application.ProcessMessages;
www.lewbar.republika.pl
for wartość początkowa to wartość końcowa do
begin
wykonywane polecenia np dodajesz do wartości początkowej
end;
Asdef www.kanalia.toya.net.pl
konkurs: FL_Studio jesteś kompozytorem amatorem? weź udział w konkursie więcej info pod adresem www.kanalia.toya.net.pl
szukam redaktorów kanalia@poprostu.net
zapraszam na http://www.kanalia.l...dfree.com/forum
for wartość początkowa to wartość końcowa do
begin
wykonywane polecenia np dodajesz do wartości początkowej
end;
Ekhm z tego co sie znam to nie mozna modyfikowac zmiennej uzywanej w petli w czasie jej wykonywania, tzn nie przejdzie
for i:=0 to 100 do
begin
i:=i+i*i;
end;
...
Właśnie masz rację bo to w pętli while trzeba dodawać, a co do Mariusza to trochę zamotałeś, może troszkę jaśniej napisz o co biega ?
pętla FOR
Stosujemy ją jeżeli wiemy ile razy ma się wykonać. Podawan jest wartość początkowa i końcowa. Pętla wykona się co najmniej raz.
var i: Integer; begin for i:=0 to 100 do begin { treść pętli , jeżeli dodasz: Application.Processmesages; to będzesz mógł wykonać jakąś czynność pomiędzy wykonaniami pętli} end; end;
pętla WHILE
Możemy stosować ją w przypadkach kiedy nie znamy ilości operacji jakie mamy wykonać. W treści pętli modyfikowany jest licznik pętli (i). Pętla może się nie wykonać jeżeli podany warunek jest nieprawdziwy.
var i: integer; begin i := 0; while i<100 do begin i := i + 1; { można zwiększać o więcej } { treść pętli } end; end;
pętla REPEAT
Podaobnie jak przy pętli while z tą tylko różnicą że warunek pętli jest sprawdzany na końcu, dzięki czemu pętla wykona się przynjmniej raz.
var i: integer; begin i := 0; repeat i := i+1; { treść pętli ... } until i>100; end;
Na koniec:
Działanie pętli możemy przerwać instrukcją BREAK co spowoduje opuszczenie pętli. Jeżeli w cele pętli jest zagnieżdżona inna pętla i to w niej używamy break to przerwana zostanie ta pętla zagnieżdżona a nie pętla główna.
Wewnątrz każdej pętli możemy modyfikować argument wywołania pętli.
Wewnątrz każdej pętli możemy modyfikować argument wywołania pętli.
pętla FOR
Stosujemy ją jeżeli wiemy ile razy ma się wykonać.
nie zgodzę się :D jeśli chcesz zrobić coś np. dla wszystkich Itemów w LoistBox`ie to nie wiesz ile jest pozycji, a możesz zastosować pętle FOR :)
Nieprawda. W pętli for nie zmienisz wartości zmiennej początkowej !
var  i: integer; begin  for i := 1 to 100 do    begin     Caption := inttostr(i);     i := i + 1;    end; end;
Coś takiego nie przejdzie!
pętla WHILE
Możemy stosować ją w przypadkach kiedy nie znamy ilości operacji jakie mamy wykonać. W treści pętli modyfikowany jest licznik pętli (i). Pętla może się nie wykonać jeżeli podany warunek jest nieprawdziwy.
var i: integer; begin  i := 0;  while i<100 do begin   i := i + 1; { można zwiększać o więcej }   { treść pętli }  end; end;
Tutej też się nie zgodzę, ponieważ pętlę While można użyć kiedy nie wiemy ile razy chcemy wykonać daną czynność: http://forum.ks-eksp...&hl=delphi+html tam masz przykład takiego zastosowanie pętli while(nie wiadomo ile powtórzeń)
Asdef nie chodziło mi o Ciebie, ale o Eddek'a
Użytkownik LewB ar edytował ten post 08 luty 2005, 16:20
No moze ty nie wiesz. Podpowiedź : użyj ListBox1.Items.Count -1 (to działa!!!)
:lol: ;)
No moze ty nie wiesz. Podpowiedź : użyj ListBox1.Items.Count -1 (to działa!!!)
:lol: ;)
Więc powiedzmy jasno, że każdą pętlę można wykonywać niezależnie od tego czy wiemy ile razy bedzie musiała się przekręcić.
Widzę że nikt nie próbował żadnej modyfikacji.A niby dlaczego nie można,gdzie są takie zakazy?Napiszcie np w Pascalu
for i:=1 to 10 do begin
writeln(i);
i:=i+2;
if i>10 then break; end;
Zmieniamy wewnątrz pętli "i" i wszystko OK!To samo w innych pętlach.Jednak musimy się zabezpieczyć słowem break przed przekroczeniem pętli.
No dobra edeek, ale sam napisałęś, że to w pascalu można tak zrobić - a temat dotyczy Delphi!
No dobra edeek, ale sam napisałęś, że to w pascalu można tak zrobić - a temat dotyczy Delphi!
Więc może jest jakaś dyrektywa pozwalająca zmieniać tą zmienną w pętli FOR?
Licznika w pętli FOR na pewno nie można modyfikować - TO JEST PEWNE - i zalecane przez zdrowy rozsądek a jeżeli chcecie modyfikować licznik pętli to użujcie REPEAT albo WHILE
Chyba się troche offtopic robi
a czy ktoś potrafi w pętli FOR zrobić licznik aby odliczał tylko paryzste liczby czy zwiękrzał o 2 nie o jeden ?
ps. pytam z czystej cikawości
"Modyfikacja zmiennej sterującej pętlą for, dozwolona jest w Delphi 1 i poprzednich wersjach Pascala, poczawszy od Delphi 2 jest wyraźnie zabroniona, bez tego ograniczenia możliwości optymalizacji pętli przez kompilator byłybby mocno uszczuplone" Xavier Pacheco :)
Użytkownik NeVeS edytował ten post 09 luty 2005, 15:43
Asdef - zawsze możesz użyć pętli while.
a czy ktoś potrafi w pętli FOR zrobić licznik aby odliczał tylko paryzste liczby czy zwiękrzał o 2 nie o jeden ?
ps. pytam z czystej cikawości
Zawsze można zrobić coś takiego:for i:=1 to 100 do begin if i mod 2=0 then {cośtam} end;
Zawsze można zrobić coś takiego:for i:=1 to 100 do begin if i mod 2=0 then {cośtam} end;
KOŃCZYĆ TEMET
Nie ma już o czym pisać :D
Warunkiem pętli nie miała być liczba lecz argument typu BOOLEAN, więc pętla FOR wykluczona. WHILE miało sprawdzać stan BOOLEAN. Podczas tego sprawdzania kod wykonywał dalsze polecenia, a miał wykonać następne polecenia wuwczas gdy BOOLEAN będzie miał odpowiednią wartość. Nie moge zamknąć resztę kodu w pętli WHILE :excl:
Troszkę zamotałeś. Wytłumacz dokładnie o co Ci chodzi i może zarzuć kodem?
A może w ten sposób?var warunek:boolean; begin repeat if {cośtam} then warunek:=true; until warunek; end;
...
Zastosuje.
Zamknij temat :excl:
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
-Jak napisze pętlę FOR..TO..DO to cały program sie zatrzymuje dopuki nie wykona całej pętli.
-Jak napisze pętlę WHILE..DO to program ją wykonuje lecz wykonuje w między czasie inne funkcję.
Pytanie:
-Jaką funkcją moge zastosować, aby działała identycznie jak WHILE..DO lecz, aby program się zatrzymywał:?
//NEURON
//mariuszlorenc@wp.pl
//P4 3Ghz; 512Mb; GF FX 5200; 120Gb HDD
Nie wiem czy skumałem dobrze, ale myśle że pomoże Ci Application.ProcessMessages;
www.lewbar.republika.pl
for wartość początkowa to wartość końcowa do
begin
wykonywane polecenia np dodajesz do wartości początkowej
end;
Asdef www.kanalia.toya.net.pl
konkurs: FL_Studio jesteś kompozytorem amatorem? weź udział w konkursie więcej info pod adresem www.kanalia.toya.net.pl
szukam redaktorów kanalia@poprostu.net
zapraszam na http://www.kanalia.l...dfree.com/forum
for wartość początkowa to wartość końcowa do
begin
wykonywane polecenia np dodajesz do wartości początkowej
end;
Ekhm z tego co sie znam to nie mozna modyfikowac zmiennej uzywanej w petli w czasie jej wykonywania, tzn nie przejdzie
for i:=0 to 100 do
begin
i:=i+i*i;
end;
...
Właśnie masz rację bo to w pętli while trzeba dodawać, a co do Mariusza to trochę zamotałeś, może troszkę jaśniej napisz o co biega ?
pętla FOR
Stosujemy ją jeżeli wiemy ile razy ma się wykonać. Podawan jest wartość początkowa i końcowa. Pętla wykona się co najmniej raz.
var i: Integer; begin for i:=0 to 100 do begin { treść pętli , jeżeli dodasz: Application.Processmesages; to będzesz mógł wykonać jakąś czynność pomiędzy wykonaniami pętli} end; end;
pętla WHILE
Możemy stosować ją w przypadkach kiedy nie znamy ilości operacji jakie mamy wykonać. W treści pętli modyfikowany jest licznik pętli (i). Pętla może się nie wykonać jeżeli podany warunek jest nieprawdziwy.
var i: integer; begin i := 0; while i<100 do begin i := i + 1; { można zwiększać o więcej } { treść pętli } end; end;
pętla REPEAT
Podaobnie jak przy pętli while z tą tylko różnicą że warunek pętli jest sprawdzany na końcu, dzięki czemu pętla wykona się przynjmniej raz.
var i: integer; begin i := 0; repeat i := i+1; { treść pętli ... } until i>100; end;
Na koniec:
Działanie pętli możemy przerwać instrukcją BREAK co spowoduje opuszczenie pętli. Jeżeli w cele pętli jest zagnieżdżona inna pętla i to w niej używamy break to przerwana zostanie ta pętla zagnieżdżona a nie pętla główna.
Wewnątrz każdej pętli możemy modyfikować argument wywołania pętli.
Wewnątrz każdej pętli możemy modyfikować argument wywołania pętli.

pętla FOR
Stosujemy ją jeżeli wiemy ile razy ma się wykonać.
nie zgodzę się :D jeśli chcesz zrobić coś np. dla wszystkich Itemów w LoistBox`ie to nie wiesz ile jest pozycji, a możesz zastosować pętle FOR :)
Nieprawda. W pętli for nie zmienisz wartości zmiennej początkowej !
var  i: integer; begin  for i := 1 to 100 do    begin     Caption := inttostr(i);     i := i + 1;    end; end;
Coś takiego nie przejdzie!

pętla WHILE
Możemy stosować ją w przypadkach kiedy nie znamy ilości operacji jakie mamy wykonać. W treści pętli modyfikowany jest licznik pętli (i). Pętla może się nie wykonać jeżeli podany warunek jest nieprawdziwy.
var i: integer; begin  i := 0;  while i<100 do begin   i := i + 1; { można zwiększać o więcej }   { treść pętli }  end; end;
Tutej też się nie zgodzę, ponieważ pętlę While można użyć kiedy nie wiemy ile razy chcemy wykonać daną czynność: http://forum.ks-eksp...&hl=delphi+html tam masz przykład takiego zastosowanie pętli while(nie wiadomo ile powtórzeń)
Asdef nie chodziło mi o Ciebie, ale o Eddek'a
Użytkownik LewB ar edytował ten post 08 luty 2005, 16:20
No moze ty nie wiesz. Podpowiedź : użyj ListBox1.Items.Count -1 (to działa!!!)
:lol: ;)
No moze ty nie wiesz. Podpowiedź : użyj ListBox1.Items.Count -1 (to działa!!!)
:lol: ;)

Więc powiedzmy jasno, że każdą pętlę można wykonywać niezależnie od tego czy wiemy ile razy bedzie musiała się przekręcić.
Widzę że nikt nie próbował żadnej modyfikacji.A niby dlaczego nie można,gdzie są takie zakazy?Napiszcie np w Pascalu
for i:=1 to 10 do begin
writeln(i);
i:=i+2;
if i>10 then break; end;
Zmieniamy wewnątrz pętli "i" i wszystko OK!To samo w innych pętlach.Jednak musimy się zabezpieczyć słowem break przed przekroczeniem pętli.
No dobra edeek, ale sam napisałęś, że to w pascalu można tak zrobić - a temat dotyczy Delphi!
No dobra edeek, ale sam napisałęś, że to w pascalu można tak zrobić - a temat dotyczy Delphi!

Więc może jest jakaś dyrektywa pozwalająca zmieniać tą zmienną w pętli FOR?
Licznika w pętli FOR na pewno nie można modyfikować - TO JEST PEWNE - i zalecane przez zdrowy rozsądek a jeżeli chcecie modyfikować licznik pętli to użujcie REPEAT albo WHILE
Chyba się troche offtopic robi
a czy ktoś potrafi w pętli FOR zrobić licznik aby odliczał tylko paryzste liczby czy zwiękrzał o 2 nie o jeden ?
ps. pytam z czystej cikawości
"Modyfikacja zmiennej sterującej pętlą for, dozwolona jest w Delphi 1 i poprzednich wersjach Pascala, poczawszy od Delphi 2 jest wyraźnie zabroniona, bez tego ograniczenia możliwości optymalizacji pętli przez kompilator byłybby mocno uszczuplone" Xavier Pacheco :)
Użytkownik NeVeS edytował ten post 09 luty 2005, 15:43
Asdef - zawsze możesz użyć pętli while.
a czy ktoś potrafi w pętli FOR zrobić licznik aby odliczał tylko paryzste liczby czy zwiękrzał o 2 nie o jeden ?
ps. pytam z czystej cikawości

Zawsze można zrobić coś takiego:for i:=1 to 100 do begin if i mod 2=0 then {cośtam} end;
Zawsze można zrobić coś takiego:for i:=1 to 100 do begin if i mod 2=0 then {cośtam} end;

KOŃCZYĆ TEMET
Nie ma już o czym pisać :D
Warunkiem pętli nie miała być liczba lecz argument typu BOOLEAN, więc pętla FOR wykluczona. WHILE miało sprawdzać stan BOOLEAN. Podczas tego sprawdzania kod wykonywał dalsze polecenia, a miał wykonać następne polecenia wuwczas gdy BOOLEAN będzie miał odpowiednią wartość. Nie moge zamknąć resztę kodu w pętli WHILE :excl:
Troszkę zamotałeś. Wytłumacz dokładnie o co Ci chodzi i może zarzuć kodem?
A może w ten sposób?var warunek:boolean; begin repeat if {cośtam} then warunek:=true; until warunek; end;
...
Zastosuje.
Zamknij temat :excl: