• Kurs języka E - część 4

20.02.2005 13:33, autor artykułu: Wojciech Zatoski (Amiga Computer Studio)
odsłon: 2838, powiększ obrazki, wersja do wydruku,

Instrukcje iteracyjne i ograniczenia w E

I. PĘTLE

Instrukcje iteracyjne służą do organizowania cykli programowych, tj. wielokrotnego wykonywania pewnych instrukcji. Oprócz opisanej w poprzednim odcinku pętli FOR istnieją również:

Dopóki - WHILE

WHILE <wyrażenie> DO <instrukcja>

lub

WHILE <wyrażenie>
<instrukcje>
ENDWHILE

Pętla FOR używana jest do powtarzania zmiennej (np. x - rosnącej lub malejącej) i sprawdzaniu czy zmienna nie przekroczyła wymaganej wielkości. Natomiast dzięki pętli WHILE możesz stworzyć swoją własną pętlę (np. podobną do FOR). Pętla jest powtarzana dopóki spełnia warunek, np.

PROC main()
 DEF x
 x:=1
	WHILE x<=100
	 WriteF('d ',x)
	 x:=x+1
	ENDWHILE
ENDPROC


Program robi to samo co program przykładowy FOR w poprzednim odcinku. W tym przykładzie wymieniliśmy polecenie FOR na przypisaną do x wartość 1 oraz polecenie WHILE z dodatkowym wyrażeniem do zwiększania wartości x (x:=x+1). Właśnie w podobny sposób "pracuje" pętla FOR. Jest ważne, aby pamiętać, że sprawdzanie zmiennej x odbywa się przed instrukcjami w pętli WHILE. To znaczy, że pętla może nie zostać w ogóle wykonana, np. jeśli zamienimy z "x=<100" na "x>=100" to pętla będzie fałszywa (x ma przypisaną wartość 1, czyli x nie spełnia warunku). W takiej sytuacji pętla zostanie natychmiast przerwana i program zacznie dalsze działania po poleceniu ENDWHILE.

Teraz troche bardziej skomplikowany przykład:

     PROC main()
       DEF x,y
       x:=1
       y:=2
       WHILE (x<10) AND (y>10)
         WriteF('x is d and y is dn', x, y)
         x:=x+2
         y:=y+2
       ENDWHILE
     ENDPROC


W tym przykładzie użyliśmy 2 zmiennych. Jak tylko x lub y jest równe 10 lub więcej to pętla zostanie przerwana. Ustalamy na początku, że x ma wartość 1, a y ma wartość 2 oraz że x i y będzie rosło o tę samą wartość (czyli o 2). Z tego wynika, że po wykonaniu pętli WHILE x będzie się równało 7, a y będzie się równał 8.

Kurs E

Powtarzaj - REPEAT

REPEAT
<instrukcje>
UNTIL <wyrażenie>

Pętla REPEAT jest bardzo podobna do pętli WHILE z tą różnicą, że sprawdzanie warunków odbywa się po wykonaniu pętli, czyli powtarzaj coś dopóki coś innego nie spełnia warunku. Pętla jest powtarzana dopóki warunek nie jest spełniony, np.

PROC main()
 DEF x
 x:=1
 REPEAT
   WriteF('d ', x)
   x:=x+1
 UNTIL x>100
ENDPROC


Kurs E

Niekończąca się pętla - LOOP

Pętla jest podobna do pętli WHILE z tą różnicą, że nie jest sprawdzany żaden warunek. Tak więc ta pętla w normalnych warunkach nigdy się nie skończy. Chociaż jak wiemy pętlę możemy przerwać używając polecenia JUMP (skocz - tak jak na przykładzie).

LOOP
<instrukcje>
ENDLOOP


np.

PROC main()
 DEF x
 x:=0
 LOOP
  IF x<100
    WriteF('x is dn', x++)
  ELSE
    JUMP end
  ENDIF
 ENDLOOP
end:
ENDPROC


Kurs E

Ja chce wyjść... - EXIT

EXIT <wyrazenie>

Każdą pętle możesz przerwać dzięki poleceniu EXIT (lub poprzez użycie polecenia JUMP). Pętla zostanie przerwana gdy wyrażenie spełnia warunek, np.

      FOR x:=1 TO 10
         y:=f[x]
       EXIT y=-1
         WriteF('x=d, f(x)=dn', x, y)
       ENDFOR


to bez użycia EXIT wyglądałoby tak:

       FOR x:=1 TO 10
         y:=f[x]
         IF y=-1 THEN JUMP end
         WriteF('x=d, f(x)=dn', x, y)
       ENDFOR
     end:


Wyjście z pętli nastąpi w obu przypadkach gdy y będzie się równało -1.

II. OGRANICZENIA W E

Tak jak inne języki również E ma pewne ograniczenia

CHAR [rozmiar]: 0 .. 255
INT [rozmiar]: -32k .. +32k
LONG/PTR [rozmiar]: -2gig .. +2gig

Długość jednej lini w źródle: 2000 znaków
Długość pliku źródłowego: 2 giga (teoretycznie)
Długość identyfikatorów (np. zmienne): 100 bajtów
Maksymalna głębokość pętli (FOR, IF, etc.): 500 głębokości
Rozmiar jednej procedury: 32k
Rozmiar pliku wykonywalnego: 32k (typ SMALL), 2 giga (typ LARGE)
Dane lokalne dla jednej procedury: 250 mega
Dane globalne: 250 mega
Ilość lokalnych zmiennych dla jednej procedury: 8000
Ilość globalnych zmiennych: 7500

 głosów: 1   
dodaj komentarz
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem