CSL-CROOK - Instrukcje badania zbiorów: Różnice pomiędzy wersjami

Z MERA 400 wiki
Przejdź do nawigacji Przejdź do wyszukiwania
(Utworzono nową stronę "Instrukcje badania zbiorów mogą być stosowane zarówno do zbiorów obu typów (uporządkowanego lub boolowskiego). Efektem badania jest stwierdzenie czy fakt o któ...")
 
(Brak różnic)

Aktualna wersja na dzień 14:30, 31 sie 2013

Instrukcje badania zbiorów mogą być stosowane zarówno do zbiorów obu typów (uporządkowanego lub boolowskiego). Efektem badania jest stwierdzenie czy fakt o którym jest mowa w treści instrukcji, ma miejsce czy nie. Jeżeli fakt taki zachodzi, to wynikiem pierwszej części instrukcji jest prawda (TRUE), w przeciwnym przypadku (FALSE). Jeżeli stwierdzono prawdę (TRUE) to odbywa się skok do instrukcji oznaczonej etykietą, która występuje jako pierwsza w części adresowej instrukcji badania. W wyniku fałszu (FALSE) następuje skok do instrukcji oznaczonej etykietą, która występuje jako druga w części adresowej.

Postać adresowa:

E1 @
E1 @ E2
@ E2

Gdzie:

  • E1, E2 - etykiety instrukcji należących do tego samego segmentu programu.

Pierwsza i trzecia postać instrukcji adresowej są skróconymi postaciami instrukcji. Jeżeli opuszczona jest etykieta E1 (E2), to w wypadku wystąpienia TRUE (FALSE) następuje skok do kolejnej instrukcji w programie za instrukcją, która zawiera postać adresową.

Arytmetyczne instrukcje badające

Arytmetyczne instrukcje badające mają następującą ogólną postać:

w1 <operator relacji> w2 e1 @ e2

Gdzie:

  • w1, w2 - dowolny wyrażenie tego samego typu
  • e1, e2 - etykiety części adresowej.
  • Operatory relacji:
    • GT większy niż (>)
    • GE większy lub równy (>=)
    • EQ równy (=)
    • NE różny (^/=)
    • LE mniejszy lub równy (<=)
    • LT mniejszy (<)

Jeżeli wyspecyfikowana zależność sprawdza się dla bieżących wartości dwóch wyrażeń arytmetycznych wówczas wyrażenie badające jest prawdą i następuje skok do instrukcji z etykietą e1, w przeciwnym przypadku wyrażenie badające jest fałszem i następuje skok do instrukcji z etykietą e2.

Instrukcja IN

Postać instrukcji jest następująca:

O IN Z1 e1 @ e2

Gdzie:

  • O - obiekt
  • Z1 - zbiór
  • e1, e2 - etykiety części adresowej

Jeżeli obiekt <o> należy do zbioru Z1 to następuje skok do etykiety e1, w przeciwnym przypadku nastąpi skok do etykiety e2.

Instrukcja NOTIN

Postać instrukcji:

O NOTIN Z1 e1 @ e2

Jeżeli obiekt <o> nie jest elementem zbioru Z1 wówczas następuje skok do etykiety e1. Jeżeli obiekt <o> jest elementem zbioru Z2 wówczas następuje skok do etykiety e2.

Instrukcja EMPTY

Postać instrukcji:

Z1, Z2, Z3,... EMPTY e1 @ e2

Jeżeli zbiory Z1, Z2, Z3, ... nie zawierają żadnych elementów, to nastąpi skok do instrukcji o etykiecie e1. W przeciwnym wypadku nastąpi skok do instrukcji o etykiecie e2.

Instrukcja EQUALS

Postać instrukcji:

Z1 EQUALS Z2 e1 @ e2

Jeżeli zbiory Z1, Z2 są sobie równe w sensie Z1=Z2, to wynik badania jest TRUE. Jeżeli co najmniej jeden obiekt należy do zbioru Z1 i nie należy do zbioru Z2 lub odwrotnie to wynik badania jest FALSE. Nastąpi wtedy skok według omówionej wcześniej zasady.

Instrukcja WITHIN

Postać instrukcji:

Z1 WITHIN Z2 e1 @ e2

Jeżeli zbiór Z2 jest podzbiorem zbioru Z1 to wynik badania jest TRUE. Natomiast jeżeli choć jeden obiekt należy do zbioru Z2 i nie należy do Z1, to wynik badania jest FALSE. Żaden ze zbiorów, niezależnie od wyniku badania, nie ulegnie zmianie. Skok następuje według ogólnych zasad.

Źródło: Translator języka CSL-CROOK dla minikomputera MERA-400 w systemie operacyjnym CROOK-4, Instrukcja Programisty (wersja-17/2), Janusz Gocałek, Jacek Klauziński, Poznań, 1985