CSL-CROOK - Instrukcje arytmetyczne
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