|
|
pl:dydaktyka:asd:cwiczenia:pseudokod [2010/02/27 18:19] kinio |
pl:dydaktyka:asd:cwiczenia:pseudokod [2019/06/27 15:50] |
====== Opis pseudokodu ====== | |
| |
===== Informacje podstawowe ===== | |
* Stosujemy wcięcia zgodnie z poziomami zagnieżdżania się kodu. | |
* Wszystkie zmienne typów prymitywnych piszemy małą literą. | |
* Wszystkie zmienne będące strukturami złożonymi (tablice, obiekty) piszemy dużą literą. | |
| |
==== Zmienne ==== | |
* Nie deklarujemy/definiujemy zmiennych lokalnych funkcji. | |
* Jeżeli zachodzi potrzeba wprowadzenia nowej zmiennej po prostu to robimy. | |
* Każda zmienna jest widzialna w zakresie całej funkcji, wyjątkiem są: | |
* Zmienne globalne, które definiujemy w następujący sposób<code>global j</code> | |
* Zmienne liczące w [[#petle|pętlach]]. | |
* Przypisanie wartości do zmiennej wykonujemy operatorem **:=**:<code> | |
j := 2 | |
j := j+1 | |
a := j | |
</code> | |
| |
==== Komentarze ==== | |
* Symbolem **#** rozpoczynamy komentarz który trwa do końca linii. | |
* Brak jest komentarzy wielolinijkowych. | |
* W przypadku kiedy należy wykonać instrukcje nie związane bezpośrednio z kontekstem rozważanego problemu, można je zastąpić opisem słownym (komentarzem) nie poprzedzonym znakiem komentarza:<code> | |
... | |
i := i*2 | |
wczytaj a z klawiatury | |
i := i*a | |
wypisz i na ekran | |
... | |
</code> | |
| |
===== Tablice ===== | |
* Nazwy tablic piszemy dużymi literami. | |
* Numerowanie elementów tablic rozpoczynamy od **1**. | |
* Do danego elementu tablicy odnosimy się podając jego indeks w nawiasach kwadratowych po nazwie tablicy:<code> | |
A[0] # pierwszy element tablicy | |
A[i] # i-ty element tablicy | |
A[i-1] # i-1 element tablicy | |
</code> | |
* Długość tablicy jest zwracana przez funkcję //length//:<code> | |
n := length(A) # teraz n przechowuje długość tablicy, jest to jednocześnie indeks jej ostatniego elementu. | |
</code> | |
* Nie alokujemy/dealokujemy pamięci dla tablic. Zakładamy że jest to robione automatycznie. | |
* Wyznaczanie podtablicy jest możliwe przy pomocy trzykropka:<code> | |
Wypełnij A ciągiem kolejnych liczb pierwszych od 2 do 17 | |
B := A[3...length(A)-1] # Teraz B zwiera następujące wartości: 5,7,11,13 | |
</code> | |
===== Funkcje ===== | |
* Nazwy funkcji nie będącymi metodami piszemy dużymi literami. | |
* 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**. | |
* Szkielet przykładowej definicji funkcji (o nazwie search) wygląda następująco:<code> | |
SEARCH(A, a, b) | |
... | |
instrukcje wewnątrz funkcji wraz z wcięciami | |
... | |
endfunc | |
</code> | |
* Funkcja może zwrócić dowolną wartość w dowolnym momencie. | |
* Zwrócenie wartości przez funkcję następuję przy pomocy słowa **return** po którym musi wystąpić wartość zwracana. | |
* 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) | |
</code> | |
===== Instrukcje warunkowe ===== | |
* Będziemy stosować głównie instrukcję **if-elseif-else-endif**. | |
* Instrukcje **elseif** oraz **else** są opcjonalne. | |
* Dostępne są następujące operatory relacji: **=, !=, >, >=, <, < =**. | |
* Przykładowe zastosowanie instrukcji warunkowej do określenia maksymalnej z pośród trzech wartości:<code> | |
MAX(a,b,c) | |
if a > b | |
if a > c | |
return a | |
else | |
return c | |
endif | |
else | |
if b > c | |
return b | |
else | |
return c | |
endif | |
endif | |
endfunc | |
</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) | |
if (a > b) i (a > c) | |
return a | |
elseif (a <= b) i (a > c) | |
return b | |
endif | |
return c | |
endfunc | |
</code> | |
| |
===== Pętle ===== | |
==== for ==== | |
==== while ==== | |
| |
===== Obiekty i metody ===== | |