CSL-CROOK - Instrukcje arytmetyczne

Z MERA 400 wiki
Przejdź do nawigacji Przejdź do wyszukiwania

Instrukcja podstawiania

Postać ogólna instrukcji:

<nazwa zmiennej> = wyrażenie

Wyrażenie i nazwa zmiennej nie muszą być tego samego typu. W przypadku niezgodności typów liczba będąca wynikiem obliczenia wartości wyrażenia zostanie przekształcona na typ nazwy zmiennej występującej po lewej stronie znaku równości. Lewa strona instrukcji podstawienia napisana w postaci ogólnej może być zmienną, atrybutem czasu, atrybutem obiektu lub elementem tablicy.

Instrukcja przyrostowa

Postać ogólna instrukcji:

nazwa zmiennej <operator> wyrażenie

gdzie:

  • operator - operator arytmetyczny "+" lub "-"

W zależności od znaku "+" lub "-" wartość wyrażenia ulega zwiększeniu albo zmniejszeniu o wartość wyrażenia.

Instrukcje skoku GO TO

Instrukcja GO TO przekazuje sterowanie do innej instrukcji w tym samym segmencie. Rozróżniamy trzy typy instrukcji skoku:

  • instrukcja skoku bezwarunkowego;
  • instrukcja skoku z przełącznikiem;
  • instrukcja skoku wyznaczonego;

Dozwolone jest użycie słowa kluczowego GO TO bez spacji w postaci GOTO.

Instrukcja skoku bezwarunkowego

Instrukcja skoku bezwarunkowego ma następującą postać:

GO TO e

gdzie:

  • e - etykieta instrukcji, do której ma być przekazane sterowanie.

Po każdorazowym napotkaniu instrukcji skoku sterowanie zostanie przekazane do instrukcji opatrzonej etykietą e. Instrukcja ta musi być w tym samym segmencie co instrukcja skoku.

Instrukcja skoku z przełącznikiem

Instrukcja skoku z przełącznikiem przekazuje sterowanie do jednej z etykiet wymienionych w liście, w zależności od wartości podanej zmiennej. Instrukcja ta ma następującą postać:

GO TO (k1, k2, ..., kn), i

gdzie:

  • i - zmienna typu INTEGER
  • k1, ...., kn - etykiety instrukcji występujących w tym samym segmencie co instrukcja GO TO

Jeżeli wartość zmiennej i jest poza parametrem od 1 do n to sterowanie przechodzi do instrukcji następnej po GOTO. Dowolna z etykiet w liście może być zerem. Jeżeli etykieta kj jest równa zeru a zmienna i ma wartość j to instrukcja skoku przekaże sterowanie do instrukcji następnej po GOTO.

Instrukcja ASSIGN

Instrukcja skoku wyznaczonego przekazuje sterowanie do jednej z etykiet wymienionych w liście, w zależności od wartości zmiennej nadanej przez instrukcję ASSIGN. Instrukcja ta ma następującą postać:

GO TO i, (k1, k2, ..., kn)

gdzie:

  • i - zmienna typu INTEGER
  • k1, ..., kn - etykiety instrukcji występujące w tym samym segmencie co instrukcja GOTO

Instrukcja ASSIGN ma postać:

ASSIGN k TO i

gdzie:

  • i - zmienna typu INTEGER
  • k - etykieta

Instrukcja ta przyporządkowuje zmiennej i etykietę k, nie nadając przy tym zmiennej i wartości całkowitej. Zmienna i, po nadaniu jej wartości przez instrukcję ASSIGN, może być użyta tylko w instrukcji skoku wyznaczonego. Dopiero ponowne nadanie wartości całkowitej zmiennej i przez instrukcję podstawiania udostępnia ją do użycia w wyrażeniach arytmetycznych. Lista etykiet w instrukcji skoku wyznaczonego musi zawierać wszystkie etykiety, które mogą być przyporządkowane zmiennej. Jeżeli zmienna i nie posiada odpowiedniej wartości, wówczas nastąpi nieokreślone działanie.

Przykłady:

GOTO 10
GO TO 9999
IWA=2
. ......
GOTO (14,10,12,100), IWA
. ......
10 K=1
ASSIGN 19 TO KAYA
GOTO KAYA, (3,5,19,100)
. ......
19 L=K*J

Arytmetyczna instrukcja IF

Arytmetyczna instrukcja warunkowa przekazuje sterowanie do jednej z trzech etykiet w zależności od wartości wyrażenia arytmetycznego. Ma ona następującą postać:

IF (w) k1, k2, k3

gdzie:

  • w - wyrażenie arytmetyczne
  • k1, k2, k3 - etykiety instrukcji występujących w tym samym segmencie co instrukcja IF

Instrukcja przekazuje sterowanie do jednej z instrukcji z etykietą k1, k2 lub k3 w zależności od tego czy wartość wyrażenia w jest odpowiednio mniejsza, równa lub większa od zera. Dowolna etykieta występująca w instrukcji IF może być zerem. Etykieta zerowa spowoduje przekazanie sterowania do instrukcji występującej bezpośrednio po instrukcji IF.

Instrukcja wielokrotnego wykonania

Instrukcja FOR z indeksowaniem przyrostowym ma następującą postać:

FOR <nazwa zmiennej> = p1, p2 [, p3]
FOR <nazwa zmiennej> = A

Gdzie:

  • p1 - wartość początkowa
  • p2 - wartość końcowa
  • p3 - przyrost
  • A - nazwa zbioru
  • nazwa zmiennej - typu INTEGER
  • "=" - znak może być opuszczany w instrukcji

Instrukcja FOR umożliwia wielokrotne wykonanie grupy instrukcji o wspólnym stopniu wcięcia. Istnieje możliwość budowy złożonych instrukcji FOR poprzez pogrążenie instrukcji FOR w już istniejącej. Wewnętrzna instrukcja tytułowa FOR ma w tym przypadku wspólny stopień wcięcia z instrukcjami z zakresu zewnętrznej instrukcji FOR.

FOR I = A
:
FOR K = 1,10
:
FOR L = 1,2
:

Instrukcje puste

Instrukcje:

DUMMY
REPEAT

Mogą one występować w dowolnym miejscu programu, mogą być etykietowane lub nie, a ich wykonanie nie powoduje żadnych zmian w programie. Stosuje się je często w instrukcjach FOR jako zakończenie ciągu instrukcji objętych wielokrotnym wykonaniem.

Ź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