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 piszemy dużą literą.
  • Wprowadzamy symbol nieoznaczony nil.

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
      global j
    • Zmienne liczące w pętlach.
  • Przypisanie wartości do zmiennej wykonujemy operatorem :=:
    j := 2
    j := j+1
    a := j

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:
    ...
    i := i*2
    wczytaj a z klawiatury
    i := i*a
    wypisz i na ekran
    ...

Operatory

  • Dostępne są podstawowe operatory arytmetyczne + - / *
  • Dostępne są również następujące operatory: % (modulo), ^ (potęgowanie), | (dzielenie całkowite)

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:
    A[1]      # pierwszy element tablicy
    A[i]      # i-ty element tablicy
    A[i-1]    # i-1 element tablicy
  • Długość tablicy jest zwracana przez funkcję length:
    n := length(A)    # teraz n przechowuje długość tablicy, jest to jednocześnie indeks jej ostatniego elementu.
  • Nie alokujemy/dealokujemy pamięci dla tablic. Zakładamy że jest to robione automatycznie.
  • Wyznaczanie podtablicy jest możliwe przy pomocy trzykropka:
    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

Funkcje

  • Definicję funkcji rozpoczynamy słowem func.
  • 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:
    func SEARCH(A, a, b)
      ...
      instrukcje wewnątrz funkcji wraz z wcięciami
      ...
    endfunc
  • 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:
    a := SEARCH(A,i,j)
  • Zakładamy że funkcja zwracająca wartość zwraca ją w postaci niestałej referencji, wtedy możliwy staje się zapis:
    c := funkcja(A)
    funkcja(B) := c

    lub po prostu:

    funkcja(B) := funkcja(A)

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: =, !=, >, >=, <, < =.
  • 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:
    func 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
  • 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:
    func MAX(a,b,c)
      if (a > b) and (a > c)
        return a
      elseif (a <= b) and (a > c)
        return b
      endif
      return c
    endfunc

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

  • 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:
    for zmienna in 7...17 step 2
      wypisz zmienna na ekran
    endfor
  • Powyższa pętla wypisze na ekran liczby: 7,9,11,13,15,17

while

  • Pętla while wykonuje kod tak długo jak długo jest spełniony warunek działania pętli.
  • Przykład pętli while odpowiadający powyższej pętli for:
    zmienna := 7
    while zmienna <= 17
      wypisz zmienna na ekran
      zmienna := zmienna + 2
    endwhile
pl/dydaktyka/asd/cwiczenia/pseudokod.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0