Strona o programowaniu w języku LOGO

Procedury sterujące i warunkowe

Polecenia służące do zatrzymywania procedur i funkcji

polecenie skrót wyjaśnienie typ
wynik
 cokolwiek
wy Deklaruje, że dane cokolwiek ma być wynikiem aktualnie obliczanej funkcji.
Polecenia wynik można użyć tylko w treści funkcji użytkownika, nie można jej używać w definicji polecenia.
Polecenie wynik zatrzymuje wykonywanie procedury, w której treści wystąpiło.

oto sumaKwadratów :a :b
 wynik :a * :a + :b * :b
już

? pokaż sumaKwadratów 5 6
61
P
stop   Zatrzymuje aktualnie wykonywaną procedurę i przekazuje sterowanie do procedury, która ją wywołała.
Jeśli takiej procedury nie ma – zostaje zatrzymany cały proces. Polecenia stop można użyć tylko w treści procedury użytkownika.

oto piszListę :z
 jeśli puste? :z [stop]
 pisz pierw :z
 piszListę bp :z
już
P

Przypomnienie: Jeżeli z jakis powodów (najczęściej błąd w samej procedurze) nie mozna zatrzymać działania procedury, mozna to zrobić rącznie naciskając klawisz F12, co spowoduje zatrzymanie wszystkich uruchomionych procedur.

Warunki używane w procedurach i funkcjach

polecenie skrót wyjaśnienie typ
jeśli
wartość logiczna
lista-P
  Jeśli dana jest wartość logiczna prawda, wykonywana jest dana lista poleceń.
W przeciwnym przypadku, nie robi się nic i koniec – polecenie nie ma żadnego skutku.

oto silnia :n
 jeśli :n < 2 [wynik 1]
 wynik :n * silnia :n - 1
już

? pisz silnia 12
479001600
P
jeżeli Procedura jeżeli jest poleceniem albo funkcją zależnie od typu drugiej i trzeciej danej. Jeśli są to listy poleceń, procedura jeżeli jest poleceniem. Jeśli są to ujęte w nawiasy kwadratowe wyrażenia, procedura jeżeli daje określony wynik i jest funkcją.
jeżeli
wartość logiczna
lista-P1
lista-P1
  W przypadku, gdy pierwsza dana ma wartość prawda, wykonywana jest lista1,
a w przeciwnym przypadku – lista2.
P
jeżeli
wartość logiczna
[wyrażenie1]
[wyrażenie2]
  W przypadku, gdy pierwsza dana ma wartość prawda, wykonywana jest wartość wyrażenia1, a
w przeciwnym przypadku – wartość wyrażenia2.

Żadna z danych nie może być pustą listą.

oto silnia :n
wynik jeżeli :n < 2
  [1]
  [:n * silnia :n - 1]
już
F
test
wartość Logiczna
  Powoduje zapamiętanie danej wartości logicznej prawda lub fałsz (zwykle określonej w postaci odpowiedniego warunku) – na użytek poleceń jeśliTak oraz jeśliNie. Polecenie test musi być wywołane przez tę samą procedurę, w której zamierzamy użyć odpowiednich jeśliTak lub jeśliNie:

oto parzysta? :n
 test reszta :n 2 = 0
 jeśliTak [wynik "prawda]
 jeśliNie [wynik "fałsz]
już

oto silnia :n
 test :n < 2
 jeśliTak [wynik 1]
 jeśliNie [wynik :n * silnia :n - 1]
już
F
wybierz
słowo
przypadek1
przypadek2

  Procedura wybierz oblicza wartość pierwszej danej i porównuje tę wartość – dane słowo – ze słowami selektorami w każdym kolejnym przypadku.
Jeśli w wybranym przypadku jest lista poleceń, procedura wybierz jest poleceniem. Jeśli wybrany przypadek zawiera [wyrażenie], procedura wybierz jest funkcją i jej wynikiem jest wartość tego wyrażenia.

? przyp "k 100
? wybierz :k * 3 [
 200 400 [pisz "nie]
 300 [pisz "tak]]
tak

? wybierz :k [
 10 20 30 [przyp "k :k * 3]
 [przyp "k :k/10]]
? pokaż :k
10

? przyp "k wybierz reszta :k 2 [
 0 [:k * 2 + 1]
 1 [:k * 2]]
? pokaż :k
21
F

Pamiętaj, że:
Polecenia test, jeśliNie i jeśliTak muszą występować w tej samej procedurze, test musi poprzedzać jeśliNie i jeśliTak.

  • Nie jest konieczne użycie obu poleceń jeśliTak i jeśliNie.
  • Zarówno jeśliTak jak i jeśliNie może wystąpić wiele razy po odpowiednim poleceniu test.
  • dzięki test, jeśliTak i jeśliNie, można uniknąć długich i nieczytelnych poleceń jeśli oraz jeżeli.

Konstrukcje sterujące

polecenie skrót wyjaśnienie typ
czekaj
 liczba
  Powoduje zatrzymanie procesu, w którym czekaj wystąpiło na daną liczbę milisekund.
czekaj 1000 zatrzymuje proces na 1 sekundę.
P
powtórz
liczba
lista poleceń
  Powtarza daną listę poleceń daną liczbę razy.
Polecenie powtórz może być użyte w innym powtórz.
W poleceniach listy-P można używać funkcji numpow (w skrócie npw), której wynikiem jest numer aktualnie wykonywanego powtórzenia.

? powtórz 36 [np 10 pw 10]
P
dla
słowo [n1 n2 n3]
lista poleceń
  Gdy n1 < n2, zmiennej (sterującej), której nazwą jest dane słowo nadaje się wartość początkową n1 i wykonywana jest lista poleceń. Następnie zwiększa się wartość zmiennej o 1 (albo o n3, jeśli jest określone) i ponownie wykonuje się listę poleceń. Powtarza się to dopóki wartość zmiennej sterującej nie przekroczy n2.

Jeśli krok n3 nie jest określony i n1 > n2 wartość zmiennej sterującej jest za każdym razem zmniejszana o 1. Podobnie, gdy n3 jest ujemne, wartość zmiennej sterującej jest zmniejszana. Jeśli n3 ma wartość 0 lub n1 = n2, lista poleceń jest wykonywana jeden raz. W poleceniach listy, można używać funkcji numpow, której wynikiem jest numer aktualnie wykonywanego powtórzenia.

? dla "j [1 3] [pokaż :j]
1
2
3

? dla "j [1 5 2] [pokaż :j]
1
3
5
P
dopóki
wyrażenie
lista poleceń
  Oblicza wartość wyrażenia. Jeśli to prawda, wykonuje daną listę-P. Ponownie oblicza wartość wyrażenia i jeśli to prawda, wykonuje listę poleceń.
Powtarza to tak długo, dopóki wyrażenie ma wartość prawda. W poleceniach listy-P można używać funkcji numpow, której wynikiem jest numer aktualnie wykonywanego powtórzenia.

? dopóki [kierunek < 359]
[np kierunek ws kierunek pw 1]
P
pętla
lista poleceń
  Cyklicznie wykonuje daną listę poleceń w pętli bez końca. Równoważnym poleceniem jest dopóki ["prawda] lista-P.

? pętla [pw losowa 360 np 5 jeśli abs poz > 80 [ws 5]]
P
dlakażdego
słowo cokolwiek
lista poleceń
  Zmiennej (sterującej), której nazwą jest dane słowo nadaje się jako wartość początkową pierwszy element drugiej danej cokolwiek (znak, jeśli jest to słowo; element, jeśli to lista; fazę, jeśli to postać etc.) i wykonuje się daną listę poleceń. Następnie zmiennej sterującej przypisuje się nową wartość - kolejny element danej cokolwiek i ponownie wykonuje listę poleceń i tak dalej aż do wyczerpania cokolwiek.

? dlaKażdego "s [krokodyl żyrafa osioł]
  [(pisz słowo npw ". "słowo "ma długość :s "liter)]
1. słowo ma 8 liter
2. słowo ma 6 liter
3. słowo ma 5 liter
P

Proces to niezależny wątek obliczeń, skończony lub nie, który ma własne aktywne obiekty, adresata, lokalne zmienne itd.

Valid XHTML 1.0 StrictPoprawny CSS!
Copyright (c) 2009-2019. Szkoła Podstawowa nr 3 im. Mikołaja Kopernika. All rights reserved.