Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:asd:cwiczenia:pseudokod [2010/02/27 18:19] kinio |
pl:dydaktyka:asd:cwiczenia:pseudokod [2019/06/27 15:50] (aktualna) |
* Stosujemy wcięcia zgodnie z poziomami zagnieżdżania się kodu. | * Stosujemy wcięcia zgodnie z poziomami zagnieżdżania się kodu. |
* Wszystkie zmienne typów prymitywnych piszemy małą literą. | * Wszystkie zmienne typów prymitywnych piszemy małą literą. |
* Wszystkie zmienne będące strukturami złożonymi (tablice, obiekty) piszemy dużą literą. | * Wszystkie zmienne będące strukturami złożonymi piszemy dużą literą. |
| * Wprowadzamy symbol nieoznaczony **nil**. |
| |
==== Zmienne ==== | ==== Zmienne ==== |
... | ... |
</code> | </code> |
| ==== Operatory ==== |
| * Dostępne są podstawowe operatory arytmetyczne + - / * |
| * Dostępne są również następujące operatory: % (modulo), ^ (potęgowanie), | (dzielenie całkowite) |
| |
===== Tablice ===== | ===== Tablice ===== |
* Numerowanie elementów tablic rozpoczynamy od **1**. | * Numerowanie elementów tablic rozpoczynamy od **1**. |
* Do danego elementu tablicy odnosimy się podając jego indeks w nawiasach kwadratowych po nazwie tablicy:<code> | * Do danego elementu tablicy odnosimy się podając jego indeks w nawiasach kwadratowych po nazwie tablicy:<code> |
A[0] # pierwszy element tablicy | A[1] # pierwszy element tablicy |
A[i] # i-ty element tablicy | A[i] # i-ty element tablicy |
A[i-1] # i-1 element tablicy | A[i-1] # i-1 element tablicy |
</code> | </code> |
===== Funkcje ===== | ===== Funkcje ===== |
* Nazwy funkcji nie będącymi metodami piszemy dużymi literami. | * Definicję funkcji rozpoczynamy słowem **func**. |
* Definiując funkcję specyfikujemy jedynie listę argumentów jakie przyjmuje. Nie specyfikujemy typu wartości jaką funkcja zwraca. | |
* Koniec definicji funkcji oznaczamy przy pomocy **endfunc**. | * Koniec definicji funkcji oznaczamy przy pomocy **endfunc**. |
| * Definiując funkcję specyfikujemy jedynie listę argumentów jakie przyjmuje. Nie specyfikujemy typu wartości jaką funkcja zwraca oraz typów argumentów. |
| * Argumenty do funkcji są przekazywane przez wartość. |
* Szkielet przykładowej definicji funkcji (o nazwie search) wygląda następująco:<code> | * Szkielet przykładowej definicji funkcji (o nazwie search) wygląda następująco:<code> |
SEARCH(A, a, b) | func SEARCH(A, a, b) |
... | ... |
instrukcje wewnątrz funkcji wraz z wcięciami | instrukcje wewnątrz funkcji wraz z wcięciami |
* Funkcje wywołujemy pisząc jej nazwę a następnie w okrągłych nawiasach listę argumentów rozdzielonych przecinkami:<code> | * Funkcje wywołujemy pisząc jej nazwę a następnie w okrągłych nawiasach listę argumentów rozdzielonych przecinkami:<code> |
a := SEARCH(A,i,j) | a := SEARCH(A,i,j) |
| </code> |
| * Zakładamy że funkcja zwracająca wartość zwraca ją w postaci **niestałej referencji**, wtedy możliwy staje się zapis:<code> |
| c := funkcja(A) |
| funkcja(B) := c |
| </code>lub po prostu:<code> |
| funkcja(B) := funkcja(A) |
</code> | </code> |
===== Instrukcje warunkowe ===== | ===== Instrukcje warunkowe ===== |
* Będziemy stosować głównie instrukcję **if-elseif-else-endif**. | * Będziemy stosować głównie instrukcję **if-elseif-else-endif**. |
* Instrukcje **elseif** oraz **else** są opcjonalne. | * Instrukcje **elseif** oraz **else** są opcjonalne. |
* Dostępne są następujące operatory relacji: **=, !=, >, >=, <, < =**. | * Dostępne są następujące operatory relacji: =, !=, >, >=, <, < =. |
| * Warunki możemy łączyć przy pomocy następujących operatorów: |
| * **and** - binarny - zwraca prawdę jeżeli oba warunki są prawdziwe |
| * **or** - binarny - zwraca prawdę jeżeli przynajmniej jeden warunek jest prawdziwy. |
| * **xor** - binarny - zwraca prawdę jeżeli jeden z warunków jest prawdą a drugi fałszem. |
| * **not** - unarny - zwraca prawdę jeżeli warunek jest niespełniony. |
* Przykładowe zastosowanie instrukcji warunkowej do określenia maksymalnej z pośród trzech wartości:<code> | * Przykładowe zastosowanie instrukcji warunkowej do określenia maksymalnej z pośród trzech wartości:<code> |
MAX(a,b,c) | func MAX(a,b,c) |
if a > b | if a > b |
if a > c | if a > c |
endfunc | endfunc |
</code> | </code> |
* Przy pomocy nawiasów okrągłych możemy grupować wyrażenia relacji, definiując równocześnie kolejności ich sprawdzania.\\Powyższy kod może zostać przepisany także w następującej postaci:<code> | * Przy pomocy nawiasów okrągłych możemy grupować wyrażenia relacji, definiując równocześnie kolejności ich sprawdzania.\\ Powyższy kod może zostać przepisany także w następującej postaci:<code> |
MAX(a,b,c) | func MAX(a,b,c) |
if (a > b) i (a > c) | if (a > b) and (a > c) |
return a | return a |
elseif (a <= b) i (a > c) | elseif (a <= b) and (a > c) |
return b | return b |
endif | endif |
| |
===== Pętle ===== | ===== Pętle ===== |
| * Działanie każdej pętli może zostać przerwane w dowolnym momencie przy pomocy instrukcji **break**. |
| * Działanie każdej pętli może zostać przerwane i natychmiast wznowione przy pomocy instrukcji **continue**. |
| * Instrukcje **break** i **continue** odnoszą się tylko do najbardziej zagnieżdżonej pętli. |
==== for ==== | ==== for ==== |
| * Poprawna konstrukcja pętli **for** wymaga podania: |
| * nazwy zmiennej która będzie licznikiem w danej pętli, |
| * krańcowych wartości licznika. |
| * Podanie kroku jest opcjonalne. Domyślną wartością kroku jest **1**. |
| * Przykładowa pętla **for**:<code> |
| for zmienna in 7...17 step 2 |
| wypisz zmienna na ekran |
| endfor |
| </code> |
| * Powyższa pętla wypisze na ekran liczby: 7,9,11,13,15,17 |
==== while ==== | ==== while ==== |
| * Pętla **while** wykonuje kod tak długo jak długo jest spełniony warunek działania pętli. |
===== Obiekty i metody ===== | * Przykład pętli **while** odpowiadający powyższej pętli **for**:<code> |
| zmienna := 7 |
| while zmienna <= 17 |
| wypisz zmienna na ekran |
| zmienna := zmienna + 2 |
| endwhile |
| </code> |