Skocz do zawartości

[Delphi] Jak dobrze znasz sie na petlach ?


Toster

Polecane posty

10 razy. A czemu? Bo kod z kompilatora ma postać (idąc od góry):

Kod wyrażenia inicjującego

Kod wyrażenia końcowego

przypisanie to iteracyjnej wyrażenie początkowe

y:przepisanie wartości wyrażenia końcowego do drugiego rejestru

Porównianie rejestru ze zmienną

Skok do komendy będącej na pozycji x jeśli zmienna jest większa/mniejsza

Wykonanie instrukcji z fora

Zwiekszenie/Zmniejszenie zmiennej iteracyjnej

skok do y

x: to co po forze

 

Edit: Ech ubiegł

Edit2: Swoją drogą FSL tak samo robi np. z

KODprogram kod0c;

var

t : integer;

begin

t:=10;

for t:=1 To t Do

Writeln(t);

 

end.

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

xevil: 0 razy w C++ kod wygląda tak:

Kod instrukcji inicjującej

y:Kod instrukcji finalizaującej

jesli na stosie fałsz skocz do x

skok do z

m:kod instrukcji t++

skok do y

z:Kod instrukcji iterowanej

Skok do m

x: nowa komenda po forze

Edit: Ech i znowu ubiegli, same chamy

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

Tak, też byłem pewien że 10. Swego czasu kłóciłem się z nauczycielką, bo kazała mi robić:

int s = w.size();
for (int i = 0; i < s; i++) {}
%Ś-nh&'ŚŚjYr$)ĄąŹŹ

Na co oczywiście odpowiedziałem, że Delphi bym tak nie musiał. Na co ona odpowiedziała, że bym musiał - więc się z nią założyłem. No i oczywiście wyszło na moje :D W C++ "for" to po prostu inny zapis "while"...

Link do komentarza
Udostępnij na innych stronach

Nvm: nie for i while to nie to samo.

While ma kod:

y:kod warunku

jak fałsz to skocz do x

kod instrukcji

skok do y

x: bla bla

 

W sumie najmniej skoków ma repeat..until i do.. while

I się nie kłócić, miałem w środę z tego kolokwium :P

Edit: Nvm, na pewno nieoptymalne (no chyba, że użyłeś ironii :D). w C++ warunek końcowy jest sprawdzany co przejście, dlatego też gdy masz napis na którym np. usuwasz znaki a warunek jest i

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

  • 2 weeks later...

Pytanie jak w temacie :) czyli Kto wie ile razy wykona sie ponizsza petla bez uruchamiania Delphi.

 

var
  t: integer;
begin
   t := 10;
   for t := 1 to t do begin

   end;
end;

 

 

Obstawiam, że wykona się 0 razy. Pod warunkiem, że włączona jest optymalizacja. Z tego względu, że w ciele pętli nie ma nic.

Link do komentarza
Udostępnij na innych stronach

  • 2 weeks later...

IMO 1 raz. Ewentualnie 0, ale wydaje mi się, że warunek jest sprawdzany po wykonaniu przebiegu, a nie przed.

A ponieważ porównujemy zmienną z nią samą, to warunek zakończenia musi być prawdziwy, czyli na tym etapie przerywamy

 

jak by co to nie bijcie, dawno nie bawiłem się delphi ;)

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...