Język programowania
I N S T Y T U T M A S Z Y N M A T E M A T Y C Z N Y C H B O I T E
J ę z y k p ro g ra m o w a n ia A L G O L
dla Z A M 41
O P I S
W Y D A W N I C T W A P R Z E M Y S Ł U M A S Z Y N O W E G O „ W E H A "
W arszawa 1971
Autorzyi
mgr Jowita Konoewioz, Bgr Maria Łąoka
Komitet Redakcyjny i
J , Barowieo /r e d , n a o t . / , W. Kossakowski, X. M azurkiew icz, J . Wierzbowski,
A . W iśn iew ski, W . tu d e l / s e k r . r e d , /
Opraoowaaie redakoyjnai Eotaana Witkowska
Adres Redakcji»
Warszawa, u l , Krzywioklego 34 t e l , 21-84—41 w . 431 lub 28-37-29
Waroiawa "1971. I.Hakloa 150t*-*b « 8 * . A rk.w jd .6 , 0 . A rk.druk.B,O .Fapi«r offs«t I I I k l . 80 g.
Foraat 10^x197 urn. Zaa&lłnl» 41V71-5-?/3---
■BiwwaU'"Zakład Poligraflo*aj w B-atoku.Zaa.161, 0-97
ALG 0-3
Spis rzeozy
ROZDZIAŁ 1 . . W S T ? P ... . . • ... 1-1 1 . 1 . Formalizm opisu składni . . 1-2 1 . 2 . Translator języka ALGOL . . 1-4
ROZDZIAŁ 2 . SYMBOLE PODSTAWOWE, IDENTY
FIKATORY, LICZBY, TEKSTY I SŁOWA ZASTRZEŻONE. POJĘCIA ' P O D S T A W O W E ... 2-1 2 . 1 . L i t e r y ... 2-1 ' 2 . J . O g r a n i c z n i k i ... . 2-2 2 . 4 . I d e n t y f i k a t o r y ... 2-5 2 . 5 . Liczby ... 2-6 2 . 6 . Teksty » . * « / > . « . . * 2—7 2 . 7 . W ielk o ś c i, klasy i obszary
d zia ła n ia . . . i ...
2-8
2 . 8 . Wartości i t y p y ...2-8ROZDZIAŁ 3 . W YRAŻENIA... 3-1 3 . 1 . Z m ie n n e ...3-1 3 .2 . Odwołanie funkcyjne . . . .
5-3
3 .3 " Wyrażenia arytmetyczne . .3-6
3 . 4 . Wyrażenia boolowskie . . . 3-13 3.5- Wyrażenia sterujące . . . .3 -15
ROZDZIAŁ 4 . I N S T R U K C J E ... 4-14 . 1 . Instrukcje złożone i bloki 4-1 4 . 2 . Instrukcje przypisania . . 4-5 4 .3 * Instrukcje skoku . . . 4-7 4 . 4 . Instrukoje puste ... 4-8
4
.5
. Instrukcje warunkowe . . . 4-8 4 . 6 . Instrukcje c y k l u ...4-114
.7
. Instrukcje procedury . . . 4-15 ROZDZIAŁ5
. D E K L A R A C J E ... 5-15 . 1 . Deklaracje zmiennych prostych.5-2 5 . 2 . Deklaraoje tablic ... 5-3
5
.3
. Deklaracje przełączników . 5-6 5 . 4 . Deklaracje procedur . . . . 5-SALG 0-4
ROZDZIAŁ 6 .
6
.
1.
6 . 2 .
ROZDZIAŁ 7 . 7 . 1 . 7 . 2 .
ROZDZIAŁ 8 .
8
.
1.
STANDARDOWE PROCEDUKf w e jSc i a-wyj ś c i a . . . . Instrukcje w yjścia . . Instrukcje w ejścia . .
URUCHAMIANIE PROGRAMĆW Język operacyjny ALGOLu Sygnalizaoja błędów . .
6-1
6-1 6-167-1 7-1 7-4
8 . 2 .
8
.3
. 8 . 4 .ROZDZIAŁ 9 .
JEŻYK ALGOL JAKO CZĘŚĆ SYS
TEMU OPROGRAMOWANIA SO 141 8-1 Ogólne informaoja o Trans
latorze i Interpreterze A L G O L u ... 8-1 Uwagi o formułowaniu pro
gramów w ALGOLu ...8-9 Praca w systemie SO 141 . . 8-9 Edytor ALGOLu ... 8-18
ZESTAWIENIE RÓŻNIC REPREZEN
TACJI KONKRETNEJ ALGOLU W STOSUNKU DO JĘZYKA WZORCO
WEGO . ... 9-1
•Rozdział 1 0 . PRZYKŁADY PROGRAMÓW W ALGOLU 10-1 1 0 . 1 . Przykład 1 ... 10-2 1 0 . 2 . Przykład 2 ... 10-8 1 0 .3 « Przykład 3 ... .... 10-12 . 1 0 . 4 . Przykład 4 ... 10-17
1 0 .5 < Przykład 5 ... 10-34
DODATEK A. s SŁOWA ZASTRZEŻONE I ICH ZNA
CZENIE W JĘZYKU POLSKIM . . A-1
DODATEK B . INTERPRETACJA SYMBOLI PRZEZ FUNKCJĘ INCHAR . . . B-1
DODATEK C. BŁĘDY I PRZEPEŁNIENIA SYGNA
LIZOWANE W PIER.YSZYM PRZE
BIEGU ... C-1
DODATEK D . BŁĘDY X PRZEPEŁNIENIA SYGNA
LIZOWANE W DRUGIM PRZEBIEGU . • D-1
DODATEK E . BŁ$BT I PRZEPEŁNIENIA SYGNALI
ZOWANE w TRAKCIE WYKONYWANIA
• PROGRAMU WINIKO.TEGO . . . E-1
SCHEMAT SKŁADNI JĘZYKA ALGOL 60
•$•*0
nAKîtïa ■
. ooaiaasffi hîwIîïrî, % z k í m x u.
♦a ztâÀg
' .-r~¡z i ...', 0í«r¡5ÍM :v;
•; . -. -■ -. ! í
■■ . ' Oí I D O & ' Ä s i i ' 17áf--sj¡&'tiéM
* Ȥ ,. I
Ala i-i
1» WST^P
Opisany n iż e j ję zyk ALGOL je s t reprezenta
cją konkretną ję iy k a ALGOL 6 0 d l a maszyny cy
frowej ZAM 4 1 . W ro zdzia ła o h 2-5 podano ;de- fin io je jednostek akładnlowyoh języka AI/ioL, reguły tworzenia struktur poprawnych w tys\
Języku, o b ja ś n ie n ia znao zen ia poszozagólnyoh konstrukoji językowyoh ora» informacje o spe- oyfioznyoh o graniozeniach przyjętyoh. w t e j r«- prezentao ji Języ k a. R o zdziały te są tłumacze
niem odpowiednioh rozdziałów ofio ja ln e g o doku
mentu "R ev ised Report on the Algorithm ic la n guage ALGOL 6 0 " 1 ^ aaohowijąoym jego uk ła d , leoz zawierająoym w ie le uzupełnień oraz uwzględniającym wszystkie zmiany wynikłe B p rzy ję t e j r e p r e z e n t a c ji. W tłumaozeniu wzoro
wano s ię na tłumaozeniu powyższego dokumentu przez 8 . Paszkowskiego2 ^ , starano s i ę też ea- chowaó p r z y ję t ą w nim term inologię, wprowadza
jąc r_.Iany tylko w niektóryoh' przypadkaoh.
Część z n io u , to zmiany satwierdsone p rzez
H a u r. P . (e d.) , Revised Report on the A l
gorithm ic LangUŁc" i ‘ ALGOL 6 0 , E P IP , Copen
hagen 1 9 6 2 .
^ Paszk ow ski, S . , Język ALGOL 6 0 , I T O , Warsła
wa 1 9 6 8 , Dodatek i , s t r . 213- 253.
ALO 1-2
zespół C Korniej i <1/b 8ystemów Oprogramowania Maszyn Cyfrowyoh1 \ pozostałe wynikły z ko- nleoznośol zastosowania jed n o lit e j terminolo
g i i w opisaoh wszystkloh elementów oprogramo
wania maszyny oyfrowej ZAM 4 1 .
Rozdział 6 zawiera opis atandardowyoh pro- oedur wejścia-wyjśoia ALOOLu uzupełniony przy
kładami danych wejśolowyoh i wyjśolowyoh na oryginalnyoh fórmularzaoh. W ro zdzia le 7 poda
no wiadomości niezbędne do uruchamiania pro
gramów w ALOOLu dla maszyny oyfrono j ZAM 41, a w rozdziale 8 - b a r d zie j azozegółowe informa- oje na temat Translatora ALOOLu i praoy w Sys
temie Oprogramowania 141 - tzw . 3 0 1 4 1 .
Rozdział 9 jest przezneozony dla tych Czy
telników , którzy chcieliby poznać jedynie róż- nloe między językiem wzoroowym, a opisywaną reprezentacją konkretną ALGOLu. Wymieniono w nim wszystkie zmiany w porządku numeraajl punk
tów opisu języka wzoroowego.
W rozdziale 10 zamieszczono k ilk a przykła
dów programowania problemów w języku ALGOL.
Przy doborze przykładów kierowano s ię przede wszystkim możliwośolami p rze jr zy st e j i l u s t r a o ji poszczególnych zagadnień związanyoh z użytkowa-' niem opisywanego ję zy k a , a n ie loh wartośoią numeryozną,
1 . 1 . Formalizm opisu składni
Składnia języka ( t j . obiekty określone » ję zy k u ) została opisana w n o ta o ji zaproponowa-
vf~ 1
' Protokół b p osie dze nia zespołu C Kom isji d /a Systemów Oprogramowania Maszyn Cyfrowy oh od
bytego dn . 8 majn 1958 w Zakopanem podozas K o n feren cji OAMS G AJAF3I.
ALQ 1-3
nej przez J .W . Backusa ' - za pomooą formuł me
tajęzykowych. Formuły-metajęzykowe składają aię ze .zmiennych metajęzykowych, stałyoh metajęzy
kowych 1 łączników metajęzykowych.
Łączniki metajęzykowe oznaoza się symbolami
««= oraz I i czyta odpowiednio Jako "równe z d e f i n i c j i " i " l u b " . Symbol : : = d z i e l i formułę na dwie czę ś o i. Z jego lew ej stajany umieszcza się obiekt d e f i n i o w a n y z prawej - obiekty de
fin i u ją c e . W wyniku każdy z obiektów Jest zde
finiowany przez tak zwane symbole podstawowe Języka (l i t e r y , oyfry, nawiasy, znaki in t e r punkcji i t p .) . Symbole podstawowe w formułach metajęzykowyoh reprezentują same s ie b i e , pod- ozas gdy inne oznaczenia reprezentują zawsze oałą klasę obiektów. Z tego względu symbole - podstawowe zwane są stałymi metajęzykowymi, a pozostałe obiekty - zmiennymi metajęzykowymi.
Zmienne metajęzykowe w formułach metajęzyko
wy oh umieszoza s ię w nawiasaoh kątowyoh, nie umieszcza s i ę w nloh natomiast symboli podsta
wowych.
Na przykład formuła
<ab> t * = / 1« I < ab > / | < a b > < d >
podaje rekurencyjną regułę tworzenia wartośoi zmiennej < ab > . Wynika z n i e j , że zmienna <ab>
może mieć wartość /
lub
i
1 }
1}1 Baokus, J . W . , The Syntax and Semantics of the Proposed Intern atio n al Algebraio Language of the Zurich ACM - GAUM Conference, I C I P . P a r is , June 1 9 5 9 .
ALQ 1-4
lub
j e ż e l i jest dana pewna dopuszozalna wai^- tość zmiennej < ab> , to nową jej wartość można otrzymać dopioująo do n ie j znak /
lub
je ż e l i jes t dana pewna dopuszozalna war
tość zmiennej < a b > , to nową jej wartość można otrzymać dopioująo do n ie j pewną wartość zmiennej < d > .
Nieoh wartośoiami zmiennej < d > b ę d ą oyfiy dziesiętne
< d > ti= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
wówozas niektórymi wartośoiami zmiennej metaję
zykowej < a b > będą«
1 / / / / ■
» / / / 1 I / / / 1 / x / / / 1 /3 7 /1 2 J4 5
»86
D e fln io ja i< puste > : «=
oznaoza pusty oiąg symboli.
1 . 2 . Translator Języka ALGOL
Translator Języka ALGOL opraoowar^ dla maszy
ny oyfrowej ZAU 41 jes t adaptaoją translatora Whatstone Compiler dla maszyny oyfrowej KDF 9 ' ,
zrealizowaną z wieloma modyfikaojami wynikają-
R andell, B . and R u ss e ll, L . J . , ALGOL 60 Inple- mentation, AP, London and New Yoik 1 9 6 4 .
- ALU 1-5
cymi ze specy fiki maszyny ZAU 4 1 . Tłumaczenie programu źródłowego na program wynikowy odby
wa się w dwu etapach, zwany oh odpowiednio prze
biegiem pierwszym i drugim.
Program wynikowy otrzymuje s ię w sp e cja l
nym języku makrorozkazów wykonywanyoh za pomo
oą programu zwanego Interpreterem . Rozmieszoze- nie danyoh w pamięoi operaoyjnej, dokonuje się dynamioznie za pomooą programowanego stosu pod
czas wykonywania programu wynikowego. Zarówno program wynikowy, Jak i stos są automatycznie segmentowane i umieszczane w pamięoi bębnowej, skąd Interpreter sprowadza Je do pamięoi opera- o y jnej•
Translator ALGOLu dla maszyny cyfrowej ZAM 41 opraoował zespół pod kierowniotwem Ma
r i i Łąokiej w składzie i Stanisław Choromąńal^i, Jowita Konoewioz, Janina Kozłowska-Pawlikowska, Waldemar Romaniuk i Zbigniew Ż o rsk i.
-*•5 6 :
• ■ - ■ ' A . — - ■■ ■
'
'
'
■ ■ - • ■ V.- Ł ...
iliiß, iV-S*
; .Î8VÆ;ï.:t- «Sf'SÍeiaíííS' -
“ÄÜ -:■•; SÉ-',;.;--/: 3 , i :óí:-;t ■ -:
• ■ :- v-,: :îm ■
....-
.
, L-i.;.'.r;'-íc’;‘ s Äfefex.:»;
AL<J 2-1
2 . SYMBOLE PODSTAWOWE, IDENTYFIKATORA , LICZBY, TEKSTY I SŁOWA ZASTRZEŻONE. POJĘCIA PODSTA
WOWE
Programy w języku ALGOL tworzy s ię z następu- jąoyoh symboli podstawowyaht
(symbol podstawowy» i ! = < lit e r a > | *o y fra >|
<wertośó lo g ic z n a » I <o g r a n ic zn ik >
2 . 1 . Litery
< lit e r a > 1t= A |B |C |D |E |F |G |H |I|J|K |L |U |N |0 |P Q |R |S|T|U |V|’.V|X|Y|Z
Litery n ie mają indywidualnej w arto ści. Uży
wa się ich do tworzenia identyfikatorów , teks
tów i słów zastrzeżonych (patrz punkty 2 .3 »
"O g r a n ic z n ik i", 2 . 4 , "Id e n t y fik a t o zy " oraz 2 . 6 ,
"T e k s t y ").
2 . 2 . 1 , Cyfry
t oyfra > ««= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Cyfry służą do tworzenia li o z b , identyfikato
rów i tekstów.
ALO 2-2
2 , 2 . 2 . Wartości logiczne
< wartość lo g ic z n a ) ::=• TRUE | FALSE
Sens wartośoi logioznyoh Jest oczywisty (patrz Dodatek A ) .
2 ,3 « Ograniczniki
< o g r a n ic zn ik > :t= <operator >|<separator>|<nawias > |
< deklaxa tor >|< spe oy fik ato r >
< operator > »
1
= < operator arytmetyczny> |< operator logiozny >|<operator następstwa>< operator aiy tmetyozny > : «= +|-| * | / |DXV| POWER
< operator r e l a c j i > it= LESSInOTGREATER|=|EQUAL|
NOTLESSI GREATERl NOTEQUAL
< operator logiczny > i : = EQUIV|IMPL|0R|aND|N0T
< operator następstwa» l *= GOTOlGO TO|lF|THEN|
e l s e If o rId o
< separator > : := , | .| E |t | j | : = | STEP|UNTIL|WHILE | COtlMENT|< spać Ja>|< nowa l i n i a >
< nawias > u = ( | ) | [ | ] r| BEGIN|i!ND
<deklarator>: := OJ/H |BOOLEAN| INTEGER|REAL|
ARRAY|SWITCH|PROCEDURE
•Cspecyfikator? : : = STRING|LABEL|VALUE
Ograniczniki mają ustalone znaczenie, które w większości przypadków jest oczywiste, w pozo
stałych przypadkaoh będzie wyjaśnione w odpowied
nim m iejscu (patrz również Dodatek A ) .
2 . 3 . 1 . Słowa zastrzeżone
Ograniczniki będące słowami utworzonymi z l i ter, a także wartości lo g iczn e, są słowami za
strzeżonymi, tzn . nie można ich używać jako iden
tyfikatorów1 \ Wewnątrz słowa zastrzeżonego nie 1 ) Zastrzeżenie to nie dotyczy separatora E i po
szczególnych składowych operatora GO TO - moż
na używać identyfikatorów: GO, TO i E .
ALO 2-3
moie występować ^paoja ani nowa l i n i a . Między słowami GO 1 TO może pojawić s ię dokładnie jedna s p a c ja , ale n ie moie występować nowa l i n i a . J e ż e li bezpośrednio po słowie zastrze
żonym nie następuje żaden ogranioznlk spośród ograniozników różnych od słów z a s tr ze żo n y o h ,■
to należy po nim umleśoló spaoję lub nową l i n ię . Spis słów zastrzeżonych i ioh znaozenle w Języku polskim umieszozono w Dodatku A .
Przyjmuje s i ę , że następująoe o graniczn ik i są równoważne!
Ogranioznlk Jego równoważnik
GOTO GO TO
EQUAL S
W o graniczniku " « » " między symbolami ''« "
i " a " nie może występować a n i spao ja,~ a n i no
wa l i n i a .
2 . 3 . 2 . Komentarze
Następująoe reguły pozwalają na wstawienie komentarza między symbole programu«
Ciąg symboli podstawowych Jego równoważnik
ł COMUENT < oiąg dowolnyoh
symboli nie zawierający t> t t BEGIN COMMENT < oiąg dowolnyoh
symboli n ie zawleiająoy t > t BEGIN END < oiąg dowolnyoh symboli
n i e ■zawierająoy \ ani END,
ani ELSE » END
Równoważność oznaoza t u , ża translator za
stąpi każdą z trze oh struktur1 ^ podany oh w 'le- 1 ^Nle dotyczy to struktur zawartyoh w teks-
taoh - patrz p . 2 . 6 . "T e k s t y ".
ALG 2-4
wej kolumnie odpowiednim synbolem z prawej ko
lumny; zastąpienie to nie będzie miało ja k ie gokolwiek wpływu na program. Przyjmuje się też, że pierwszy komentarz (przy czytaniu symboli programu od lewej strony w iersza do praw ej) ma pierwszeństwo w zastępowaniu go równoważni
kiem przed strukturami znajdującymi się w d a l
szym ciągu programu. Szczególna postać komen
ta rza , a mianowicie komentarz rozpoozynająoy się od słowa COMMENT, po którym następuje b e z
pośrednio symbol * , może służyć do warunkowe
go włączenia instrukoji lub de k lara cji do pro
gramu (p atrz punkty 7 . 1 . "Języ k operacyjny ALGOLu" i 7 . 1 . 2 . "Zdanie KONTROLA.").
2 . 5 . 2 . 1 . P r z y k ł a d
BEGIN COMMEŃT PROGRAM ILUSTRUJĄC!
STOSOWANIE KOMENTARZ* j INTEGER Ij REAL X;
COMMENT POCZĄTEK PROGRAMU BEGIN POR I j= 1 STEP 1 UNTIL 10 DO OBLICZENIA END KONIEC PROGRAMU{
FOS I i= 1 STEP 1 UHTIL 10 DO BEGIN 13? I = 5
THEN BEGIN X s= I * (i + 1 ) ; X != X PO.YER X END PRZTPADEK 1 ELSE BEGIN X «= I * (I - 1 ) ;
X ł= X POiVER(X + 1) END PRZYPADEK 2
END
END KONIEC PROGRAMU *
Program powyższy jest równoważny następują
cemu t
ALG 2-5
BEGIN INTEGER I ; HEAL Xj
FOR I != 1 STEP 1 UNTIL 10 DO BEGIN IP I = 5
THEN BEGIN X := I * (I + 1 )j X «= X PO.VER X END
ELSE BEGIN X t= I *■ ( I - 1 )j X := X POKER (X + 1) END
END END *
2 . 4 . Identyfikatory
2 . 4 . 1 . Składnia
< id e n t y f ik a t o r > : : = <litera> |< iden tyfik ator>
< l it e r a >(<iden tyfik ator >
< cyfra >
2 . 4 . 2 . Przykłady
Identyfikatory zbudowane poprawnie i A
BETA ALFA5
PIEHWI ASTKIWIELOHIANU D12MP52F
Identyfikatory zbudowane niepoprawnie«
ALFA 5 1B
PIERWIASTKI WIELOMIANU 2 . 4 . ^ . Znaczenie
Identyfikatory nie mają samoistnego sensu, lecz służą jedynie do nazywania zmiennych pros
tych, t a b l i c , ety k ie t, przełąozników i prooe- dur. Można Je wybierać dowolnie, Jednak z uwzględnieniem ograniozeń wymienionych w punk—
ALG 2-6
taoh 2 . 3 . 1 . "Słowa zastrzeżone" oraz 3.2.4-.
"Funkcje standardowe". Wewnątrz identyfikatora nie może występować ani spaoja, ani nowa l i n ia . J e ż e li po identyfikatorze nie następuje żaden z ograniczników różnyoh od słów zastrze
żonych, to należy po nim umieśoić spaoję lub nową l i n i ę .
Różne wielkości można oznaozaó tym samym identyfikatorem tylko wtedy, gdy mają rozłą- ozne obszary d z ia ł a n ia , określone w programie deklaracjami (p a trz punkt 2 .7 » "W ie lkośoi, klasy i obszary d z ia ł a n ia " oraz rozdział 5»
"D e k l a r a c j e ").
2 . 4 . 4 . Ograniczenie
W jednym programie można deklarować najwy- ' żej 511 różnych identyfikatorów. Maksymalna długość identyfikatora nie może przekraozaó 68 l i t e r i (lub) cy fr.
2,5.» Liczby
2 . 5 . 1 . Składnia
< liczb a całkowita bez znaku > :
1
= < cyfra > |< liczb a całkowita bez znaku > <ayfra>
< lio zb a całkowita >
1
:= < lic zb a oałkowita bez znaku>|+ < liczb a całkowita bez znaku »|-< lic zb a całkowita bez znaku >
< ułamek dziesiętny > : . < lio zb a oałkowita bez znaku »
< o echa> s:= E < liczba całkow ita>
< lic zb a d z ie s ię t n a »!i= <liczb a całkowita bez zn a k u > | < ułamek d z ie s i ę t n y > I < liczb a oałko
wita bez zn aku » < ułamek d z ie s ię t n y »
ALG 2-7
< liozba bez z n a k u ) : : = < lic zb a d z ie się tn a >1
<liozba d z i e s i ę t n a > < oeoh a>
< lic zb a > 1 1= < lic zb a bez znaku > I + < lio zb a bez znaku > I - < lio zb a bez .znaku >
2 . 5 . 2 . Przykłady
O - 200.084 v -.083E-02
1777 + 0 7 .4 3 .53 84
+ 0 .7 3 0 0 9 .3 4 E + 1 0 2E-4
2
.5
.3
. ZnaozenieLiczby dzie się tn e mają swe zwykle znaoze
n i e . Ceoha jes t czynnikiem skalującym, riwnym potędze liczby 10 o wykładniku całkowitym.
Wewnątrz lio zby nie może występować ani spa
c ja , ani nowa l i n i a . J e ż e li po lic zb ie nie następuje żaden o granicznik spośród-ogranicz
ników różnyoh od słów zastrzeżonych, to n a le ży po n ie j umieśoić spaoję lub nową l i n i ę . Ograniozonia nałożone na liozby podano w punk- oie 3«3>6 "Arytmetyka w ielkości typu KEAL i INTEGER".
2 . 5 . 4 . Typy
Liczby oałkowito są typu INTEGER. Wszyst
kie inno liozby są typu REAL (p atrz punkt
"D eklaracje zmiennyoh p ro s t y o h ").
2 . 6 . Tokaty 2 . 6 . 1 . Składnia
< tekst > » ia '< dowolny oiąg symboli nio za
wierający ' > '
ALG 2-8
2 . 6 . 2 . Przykłady ' i '
'+ K ,- ] = + (C l 7 T ) 1 2 5 '
'PIERW IASTKIt 2BWIEL0UIAHU *
2 .6 .5 « Znaozenie
Teksty stosuje się jako parametry standardo
wych procedur w yjśoia (punkt 6 . 1 . "Instrukoje w y j ś c i a ").
Tekst może zawierać najwyżej 584 symbole (wraz z obydwoma symbolami " ' " ) . •
Symbole spaoji i nowej l i n i i są pomijane pod- ozas czytania tekstu, nie mają one bowiem żad
nego znaozenia w obrębie tekstu.
2 . 7 . W lelkośol, klasy 1 obszary d ziałania
Rozróżnia się następująoe klasy wlelkościi zmienne proste, ta blioe, etykiety, przełąozniki i procedury.
Obszarem dzia ła n ia w ielkości jest zbiór in s truk cji i wyrażeń, w którym obowiązuje dekla- raoja identyfikatora tej w ielk o śo i. Etykiety omówiono w punkcie 4 . 1 . 5 ,
2 . 8 . Wartości i typy
Wartością nazywamy uporządkowany zbiór l ic zb (w ezczególnośoi jedną l i c z b ę ), uporządkowany zbiór wartości logicznyoh (w szozególnośoi Jed
ną wartość lo giazn ą) lub etykietę.
ALG 2-9
Niektóre jednostki składniowe mogą p rzyb ie
rać w artośai, które na' ogół zm ieniają się w czasie wykonywania programu. Wartośoi wyrażeń i ich składowych zdefiniowano w. rozdziale 3«
Wartośoią identyfikatora tablioy jes t upo
rządkowany zb ió r wartości odpowiedniej tablioy zmiennyoh indeksowany oh (punkt 3 .1 . 4 . 1 ).
Poszczególnie typy (INTEGER, REAL, BOOTiKAN) oznaozają ogólne cechy w arto śoi. Typy związane z jednostkami składniowymi odnoszą s ię 'd o war
tośoi tyoh jednostek.
ALQ 3-1
3 . WYRAŻENIA
Podstawowymi ozęśoiąmi składowymi progra
mów w języku ALGOL są wyrażenia arytmetyczne, boolowskie i s teru jąoe. Elementami tych wyra
żeń, opróoz odpowiednich ograniozników war
tośoi lo g io zn e, lio zb y , zmienne, odwołania funkcyjne oraz operatory elementarne: arytme
tyczne, r e l a c j i , logiozne i następstwa. Ponie
waż w d e fin ic ja o h składni zmiennej i odwołania funkoyjnego występuje w yrażenie, d e fin lo ja wy
rażenia i jego elementów jes t z konieoznośoi rekurenoy jn a .
< wyrażenie >- «in <wyrażenie aiytmetyozne > I
<wyrażanie boolowskie>l
«wyrażenie sterująoe>
3 . 1 . Zmienne 3 . 1 . 1 . Składnia
< iden tyfikator zm iennej) i s= < identyf ikator >
< zmienna prosta > n = < iden tyfikator zmiennej J
< wyrażenie indeksowe >: s= < wyrażenie arytme
tyczne >
< l i s t a indekeów>i!= < wyrażenia indeksowe vl
<l i s t a Indeksów > , <wyrażenle indeksowe)
ALG 3-2
< identyfikator tablicy > : : = < iden tyfikator >
< zmienna indeksowana» < identyfikator ta
blicy > [<iiota indeksów>]
< zmienna> :s= <zmienna p ro s t a >l<zmienna indek
sowana >
3 . 1 . 2 . Przykłady
DELTA A17 Q [ 7 ,2 3
X[SIN (N * PI/2), q O , N ,
4
] , a ]3 . 1 . 3 . Znaczenie
Zmienna jest nazwą nadaną pojedynozej wai>- to śc i. Z wartości tej można korzystać w wyraże
niach w oelu tworzenia innych wartośoi i można ją zmienić za pomocą instrukojl p rzypisania (patrz punkt 4 . 2 ) . Typ wartośoi zmiennej okreś
lany jest deklaracją tej zmiennej (p atrz punkt 5 . 1 . "Deklaracje zmiennyoh p ro s ty c h ") lub odpo
wiednią deklaracją Identyfikatora tablioy (patrz punkt 5 « 2 . "Deklaracje t a b lic "').
3 . 1 . 4 . Indeksy
3 . 1 . 4 . 1 . Zmienne Indeksowane są nazwami wartoś
ci elementów tablic (p atrz punkt 5 * 2 . "Db^la- racje t a b l i c " ) . Każde wyrażenie indeksowe, znajdujące się na liś c ie indeksów, zajmuje jed
ną pozycję indeksu w zmiennej Indeksowanej i nazywa się indeksem. Pełną lis t ę indeksów u j
muje się w nawiasy kwadratowe "C " i " 3 " . E l e ment t a b licy , odpowiadający zmiennej lndekso-
ALO 3-3
w anej, o k re ślają aktualne wartośol liczbowe In deksów (p a trz punkt 3 .3 » "W yrażenia arytmetycz
n e " ) .
3 . 1 . 4 . 2 . Każdy indeks interp re tuje a ię Jako zmienną typu IMTEGER, a p rzez o b lic ze n ie indek
su rozumie s ię p rzyp isan ie wartośol tBj fikoyj- nej zmiennej (punkt 4 .2 .4 - ^
Wartość zmiennej Indeksowanej Jest określona tylko wtedy, gdy wartość w yrażenia Indeksowego zawiera się w granicach indeksu tablioy (p a t r z punkt 5 . 2 . "D e k la ra cjo t a b l i c "').
3
. 1 . 4 .3
. O g r a n i o z e n l eWartość bezwzględna Indeksu nlo może prze- kraozać llo zby 32767«
3 . 2 . Odwołanie funkoy.jne 3 . 2 . 1 . Składnia
< Id e n t y fik a t o r prooedury) ««a < id e n t y fik a t o r )
< parametr a k t u a ln y )
11
» < tekat)|<wyrażenie> |<id e n t y fik a t o r tablioy )l< id en ty fik a to r p rzełąoznlka > |< id e n t y fik a t o r procedury)
< tekst l it e r o w y ) tt* < litera> |< tek st l i t e r o w y ) < l i t e r a >
< ograni o zn ik p aram etru ) tt» ,l)< tekst literow y >
1
(< l i s t a parametrów a k tu a ln y o h ) i«» <parametr ak tu alny ) l< lista parametrów a k tu a ln y o h )
< ograniczn ik p aram etru) < parametr a k tu a ln y )
< zb ió r parametrów a k t u a ln y o h )
11
=» < puste > l(< l i s t a parametrów aktualnyoh-))
< odwołanie fu n k o y jn e ) : ła < Id e n ty fik a to r procedury >< zb ió r parametrów ak tu alny oh >
ALG 3-4
3 . 2 . 2 . Przykłady
SIN(A+B) P (A , B-C) R
S (X-Y) TEMPERATURAl (T) CIŚNIENIE: (C) INCHAR (O)
SIGN(B POWER 2 - 4 * A * C )
3 .2 .3 » Znaczenie
Odwołanie funkcyjne określa pojedynczą w a r tość liczbową lub lo giczn ą, która jes t wyni
kiem zastosowania odpowiedniego oiągu reguł zadanych deklaracją procedury (punkt 5 * 4 . "D e k laracje p ro o e d u r ") do ustalonego zbioru para
metrów aktualnych. Reguły rządzące określaniem parametrów aktualnych podano w punkcie 4 . 7 , ("In s tr u k c je p ro c edu ry "). Nie każda deklaracja procedury określa wartość odwołania funkcyjne
go.
3 * 2 , 3 . 1 . O g r a n i e z e n i e
W ograniczniku parameti-u poutacii ) < tekst literowy > : (
nie może występować symbol nowej l i n i i .
3 . 2 , 4 , Funkcjo standartowe
J e ż e li yr programie nie. występują deklara
cjo (patrz rozdział 5 , "D e k la ra o je " ) odnoszą- oe się do wymienionych poniżej iden tyfik ato
rów, to wówczas te identyfikatory są nazwami funkcji standartowych ALGOiiu.
A M 3-5
ABS AJRCTAN COS ENTIER EXP ■ INCHAR LN SIGN SIN SQHT
W przypadku, gdy program ista n ie ohoe korzys
tać w programie lub Jego ozęśoi c ja k ie jś funk- a j i standardowej, może wtedy używać je j na^wy jako iden tyfik a to ra zadeklarowanaj w danym pro
gramie w ie lk o ś o i.
3 . 2 . 4 . 1 . Z n a o z e n l e
Poniższe odwołania do fu n k o jl standardowyoh cznaozają odpowiednio*
ABS(w) wartość bezwzględną wartośoi wyraże
n i a Wt
ARCIAN(.W) wartość główną fu n k o jl arpuo tan
go ns Wj
COS (W) wartość fu n k o jl ’ oosinus Wł
ENSIER(W) wartość n ajw ię ksze j llozby. całkowi
tej nie w ięk szej oęl wartośoi W;
EXP (W) wartość fu n k c ji wykładniczej wartoś
oi W;
INCHAR(W) wartość symbolu wprowadzanego z urzą
d z e n ia wejściowego związanego z nu
merem symbolloznej operaoji wejA- o la Sj
L N W wartość logaiytmii naturalnego wyra- . żenla Wj
kto > 6
SION(W) znak algebralozny wartości W ( + 1 d la W > O , O d la WnO, -1 d la W < 0 ) ł
S IN (W) wartość fu n k c ji ainus Wj
SQRT(W) wartość dodatniego p ierw iastka kwa
dratowego z W .
Funkcje te są określone zarówno d la argumen
tów typu REAL, jak i typu INTEGER. Funkcje i EN TIER (W ), SIGN (W) i IN CHAR (W) przyjmują war- tośoi typu INTEGER, a pozostałe funkoje otan- dardowe - wartośoi typu REAL. Funkojei
ARCTAN (W) , COS (W) , ETP(W) , M(.W) i SQRT (W) są obliczane za pomooą algorytmów dająoyoh wyniki a błędem bezwzględnym mniejszym od 2 ‘*^0 .
' Wywołanie fu n k c ji standardowej ŁN(W) dla W < 0 ora* fu n k o ji standardowej SQIB?(W) d la W < 0 powoduje przerwanie wykonywania programu.
Arginaenty fanko j i RIH(W) i COS (W) oraz wartośoi fu n k cji ARCTAN(W) ją podawane w radian aoh .
3 .3 « Wyrażenia arytmetyczne 3 . 3 , 1 . Składnie
<operator typu dodawania> u = + l~
< operator- typu mnożenia > :«= * l/l D IY
< wyrażenie pierw otn e> i !a < lic zb a be z znaku >|
' < «sienna >| < odwołanie funkcyjne > |(< wy rażenia arytmetyozne >)
<ozynnik> «»a «w yrażenie pieiwotne> l<osynnik>
K W K B < wyrażania pierwotne >
< a k ła ć n ik > < oeynrdk>|< składnik> «op erator typu mnożenia > <
0
£ynniJk><prosto wyrażenie arytmetyczne > «»= < składnik >l
< operator typu dodawania > < składnik > |
< proste wyrażenie arytmetyczne > < operator typu dodawania > < składnik >
ALO 3-7
< warunek>
11
= XP < wyrażenie boolowskie >THEN
< wyrażenie arytmetyozne > n * < proste wyraże
n ie aiy tmetyozne>|<warunek> < proste wyra
żenie ary tmetyozne > EI£E < wyrażenie aryt
metyczne >
3«3»2. Przykłady
Wyrażenia pierwotnet 7.394E- SBUM
W [j+ 2 ,8 ]c o s ( r + z * 3 ) (A-3A+7U POWER e)
Czynniki«
OMEGA
SUM POWER COS('/■«■ Z * 3 )
7.394B- 8 P083R wjT.+2,8] POWER (A-3A+VTJ PCWER 8)
Skład nik ii U
CUBGA* SłJM POSKR C08(X+Z * 3 ) /7i394E - 3 POSBR W [J + 2 ,8 ] POWER (A- 3A+VU POWER 8)
Pro a te wyrażenie arytBetyoznst U-TO + CMBOAŁSUM POSBR COS(T+Z.*3)
/7.394E-8 POWER W £ + 2 ,0 PCWER (A-3/i+VU POKER 8)
Wyrażania aiyteetycsnei W * U - 0 .& + O T ] POSSR 2
I ? ą GREf.TBR O THĘH 8 +3 * Q A E13E 2 * 8 + 3 * *
IP
k LESS O TEEN U+VEL3E TB A»B GREĄTER Vf THEH C /Y
SLSB I i Z HOTEQUitL T THHS Y /O ELSĘ O
ALG 5-8
A*SIN(OMEGA*T)
O .S T E ^
aL
n* (N -iy/ 2 ,o ]
(A*ARCTAN(I) + Z ) POfflBR(7+Q) A+ ( I F Q THEN N-1'EL3E N )IF A LESS O THEN A /B ElfiE IF B
3
0 THEN B A SLSE ZWyrażenie arytmetyozne zbudowane niepopraw
nie*
A + IF Q THEN N - 1 ELSE N S IN (A + X )B '
IF A LESS O THEN U + V 3 S IN (X )
5 .3 .5 « Znaozenie
Wyrażenie arytmetyozne jes t regułą na o b l i
czanie wartośoi lic zb o w e j. W przypadku proste
go w yrażenia arytmetycznego wartość tę otrzy
mujemy wykonując wskazane operaoje aiy tmatyoz- ne na aktualnych wartośoiaoh liozbowyoh wyrażeń pierwotnyoh ( szozegćły podano w punkcie
5
«5
.^»)»Aktualna wartość liczbowa wyrażenia pierwotne
go jest oozyv?iata, j e ż e l i wyrażeniem tym jes t lt o zb a . D la zmiennych je s t to wartość bieżą c a nadana ostatnim przypisaniem , a dla odwołań funkcyjnych je s t to wartość otrzymana w wyniku wykonania o bliczeń według reguł określająoyoh procedurę, zastosowanyoh do bieżąoych wartoś
oi parametrów procedury, danyoh w yyrażeniu (p atrz punkt 5 . 4 . 4 . "W artośoi f u n k o j l " ) . W a r tość wyrażenia arytmetyoznego ujętego w nawia
sy należy wyrazić rekurenoyjnie p rzez wartoś
oi pozostałyoh trzeoh typów wyrażeń piorwot- nych.
W b a r d z ie j ogólnym wyrażeniu arytmetycznym, zawierającym warunki, wybiera s ię jedno z
ALG 3-9
prostych wyrażeń arytmetyaznyoh, zgodnie z ak
tualnymi wartośoiami wyrażeń boolowskioh (p a trz punkt 3*4-. "W yrażenia boolowskle"'). Wy
boru dokonuje się w aposób następująoyi war- tośol wyrażeń boolowskioh występujących w wa
runkach obliczamy kolejno dopóty, dopóki nie znajdziemy wyrażenia o wartości THUE. Wówozas wartością wyrażenia arytmetycznego będzie war
tość pierwszego wyrażenia aiytmetycznego, nas
tępującego po tym wyrażeniu boolowskim. Kons
trukcja
EISE < proste wyrażenie arytmetyczne>
jeat równoważna konstrukcji
EI£E IF ' TRtJE THEH < proste wyrażenie arytme
tyczne >
3
«3
.4
. Operatory i typyPoza wyrażeniami boolowskimi występującymi w warunkaoh, ozęśoi składowe prostych wyrażeń aiytmetycznych muszą być typu REAL lub INTEGER (p a trz punkt
5
.1
. "D ek laracje zmiennych prostych"'). Znaczenie podstawowyoh operatorów i typy wyrażeń, do któryoh ono prowadzą, określa
ją następujące reguły:
3 . 3 . 4 . 1 . Operatory .+ , - i * mają zwykły sens (dodawanie, odejmowanie i m nożenie).
Wyrażenie bę dzie typu INTEGER, j e ż e l i oba jego argumenty są typu IiJTEGBR, w przypadku przeciwnym będzie ono typu REAL.
3 . 3 . 4 .
2
. Operacje < s k ł a d n i k i/ < czynnik >oraz < składnik > DIV < czynnik > o zna o za ją
A10 3-10
d z i e l e n i e , rozumiana Jako mnożenie składnika przez odwrotność czynnika, z uwzględnieniem odpowiednich reguł pierwszeństwa (p a t r z punkt 3 . 3 . 5 . ) .
Tak więc na przykład wyrażenie»
A / B * 7 / ( P ~ Q ) « V / S oznacza w za p isie konwencjonalnym
( ( ( (a-(b-1 ) ) - ? ) . ( ( p - q r 1 ) > v)- (s~ 1)
Operator " / " jes t określony dla w szystkiah czterech kom binacji typów REAL i IHTEGER skład
n ik a oraz czynnika i w każdym przypadku daj a wynik REAL. Operator D IV je s t określony tylko dla obu argumentów typu INTEGEl? i daje wynik typu INTEGER, określony matematycznie wzoremi
A D IT B si S IG N (A /B )*E N T IE R (A B S (a/ B ) ) (p a t r z punkty 3»2- 4. oraz 3 . 2 . 5 . ) .
3 . 3 . 4 .
3
. Operacja < czynnik > POKER < wyrażanie p ie r w o tn e ) oznacza potęgowanie, przy czymozynnik jeat podstawą, a wyrażenie pierwotne wykładnikiem. Tak >vięo na przykład»
u K 2 POSER N POWER K oznacza (2** ) natomiast
f 2 POWER (N POTER M ) ozn>3. 'z a 2'-** '
Oznaczmy lit e r ą I lio zby typu INIEGER, l it e r ą R - liczby typu HłAL, l i t e r ą A - liczby typu HEAL lub INTEGER. Wtady wynik o p er a cji potęgowania ok reślają następująoe reguły»
A POWER I * j e ż e l i I > 0 , to wynik rówue. się A » A * • . . . * A ( I r a z y ) i j e s t te
go aasego typu, ao At
ALO 3-11
ijeżoli X
3
O i j e ż e l i A J O , to wynik równa s i ę 1 i jest tego sa- Jmego typu oo A;j e ż e l i A a 0 # to wynik jest nleokreś-
! _ _ l o n y t ____
¡jeżeli I c O i jeżal l A 4 O , to wy
n ik równa aię l/^ A a - A * . . . * A ) (-1 razy) 1 jes t typu REA1»
j e ż e l i A a O , to wynik jest n ie określony}
A POWER R :j e ż e l i A > 0., to wynik równa się EXP ( R * L N ( A ) ) i jes t typu HEALj
j e ż e l i A = O 1 j e ż e l i R > O , to wynik równa s ię
0 .0
i jes t typuREAL}
je ż e l i R <
0
, to wynik jes t n ie określony;[jeżeli A <
0
, to wynik jes t n ie określony.3 . 3 . 5 . Pierwszeństwo operatorów
Operacje w wyrażeniu wykonuje się na ogół kolejno od jego strony lewej do p raw ej,jedn ak z uwzględnieniem dodatkowyoh reguł.
3 . 3 . 5 . 1 . Zgodnie ze składnią opisaną w punk- oie
3
.3
.1
. pierwszeństwo operatorów je s t nastę- pująoe:pierw szy: POWER d r u g i: *•/ D IV t r z e c i: + -
ALG 3-12
3 » 3 » 5 » 2 . Wyrażenie ujęte w nawiasy - otwiera
jący i odpowiadający mu zamykająoy - jes t ob
liczan e n iesależn ie od innych, a jego wartoś
ci używa się w dalszyoh oblicze n ia c h . Dlatego w wyrażeniu można zawsze osiągnąć dowolny po
rządek wykonywania operacji przez odpowiednie rozmieszczenie nawiasów.
3 . 3>&. Arytmetyka w ielkośoi typu REAL i INTE
GER
Zarówno zmienne typu REAL jak i typu INTE
GER mają w maszynie cyfrowej ¿AM 41 tę samą reprezentację zmiennoprzecinkową. W związku z tym wartości zmiennych muszą zawierać się odpovdednio w przedziałach :
- 2 - 2 7 4 8 7 7 9 0 6 9 4 4 < wartość zmiennej typu IilTEGER < 274877906944 = 2 58
0 . 8 6 5 6E - 7 7~ 2 < ABS( wartość zmiennej typu REAL) < 2255 sł 0 .5 7 8 9 E 7 7
J e ż e li wartość funkoji AES(wartość zmien
nej typu REAL) jest m niejsza od 0.8 63 6 E - 7 7, to tej zmiennej przypisuje się wartość 0 .
J e ż e l i wartość fun k cji ABS(wartość zmien
nej typu REAL) jest większa od 0 .5 7 8 9 E 7 7 , to maszyna przezywa r e a liza c ję px’
0
gramu i sygnaliz u je błą d.
J e ż e li wartość w yrażenia, które zgodnie z regułami podanymi w punkcie 3 . 3 . 4 . jest typu IIITEGKR, nie mieści się w podanym powyżej p r z e d z ia l e , to wynik o blicze nia będzie n iedo
kładny.
ALO 3-13
3 . 4 . Wyrażenia t>oolowskle 3 . 4 . 1 . Składnia
<relaoja> s s= < proste wyrażenie arytmety ozne>
< operator relaoji> < proste wyrażenie aryt
metyczne >
< pierwotne wyrażenie boolowskie>:s= < wartość lo giczn a >|< zmienna> | < odwołanie funkoy jne> |
<relac;)a>|(< wyrażenie boolow sk ie»)
< wtórne wyrażenie boolowskie> s :< pierwotne wyrażenie boolowskie» lNOT< pierwotno wyra
żenie boolow skie»
< czynnik boolowski> 5:-a < wtórne wyrażenie I boolowskie»| <ozynnik boolowski > AND
< wtórne wyrażenie boolowskie >
< składnik bo o lo w sk i> is= < czynnik boolowski >l .< składnik boolowski > OR < czynnik boolow ski>
< im plikaoja > : : = < składnik boolowski > |
< im plikaoja> IMEL < składnik b o o lo w s k i>
< proste wyrażenie b o o lo w sk ie> s: = < implika-
!c;ja>|< proste wyrażenie boolowskie > EQUIV
< im plikaoja >
< wyrażenie boolowskie > ! ! = < proste wyrażenie boolowskie>|<warunek> <proste wyrażenie
¡boolowskie > EISE < wyrażenie boolowskie >
3 . 4 . 2 . Przykłady
X =
-2
X EQUAL -2I GREATER V OR Z LESS Q
A + B GREATER
-5
AND Z - D GREATER Q POWER 2 P AND Q OR X NOTEQUAL 1Q EQUIV NOT A AND B AND NOT C OR D OR E IMPL NOT F
IP K LESS I THEN S GREATER W ELSE H NOTGHEATER C IP IP IF A THEN B ELSE C THEN D ELSE F THEN G
ELSE H LESS K '
ALQ 3-14
3 . 4 . 3« Znaczenie
Wyrażenie boołowskie jest regułą na obli - ozanie wartości lo g io zn e j. Zasady obliczeń są tu analogiozne do zasad dotyoząoyoh wyrażeń arytmetyoznyoh, podanych w punkole 3 . 3 . 3 .
3 . 4 . 4 . Typy
Zmiennym i odwołaniom funkcyjnym, użytym jako pierwotne wyrażenia boolowskie, należy przypisać typ BOOLEAN (p a trz punkty 5 *1 » "D e k laracje zmiennych prosty oh" oraz 5 . 4 . 4 .
"Wartości f u n k c j i " ) .
3 . 4 . 5 . Operatory
Helaoja m aw artość TRUE, j e ż e l i jest speł
niona d la wyrażeń wohodzących w jej skład, W przypadku przeoiwnym r e la c ja ma wartość FA1SE.
W poniższej tabeli podano interpretaaję opera
torów logicznych» NOT ( n i e ) , AND ( i ) , OR (lu b ), IŁIPL (im p lik u je ) oraz EQUIV (równoważne)«
B
1
FALSE FALSE TRUE ÎRUEB2 FALSE TRUE FALSE TRUE-
NOT B1 TRUE TRUE FALSE FALSE
B1 AND B2 FALSE. FALSE FALSE TRUE B1 OR B2 FALSE TRUE TRUE TRUE B1 IMPL B2 TRUE TRUE FAI5E TRUE B1 EQUIV B2 TRUE FALSE FALSE TRUE
3 . 4 . 6 . Pierwszeństwo operatorów
Operacje w wyrażeniu są wykonywane na ogół od lewej do prawej, z uwzględnieniem następu- jąoyoh dodatkowyoh reguł«
ALQ > 1 5
3 . 4 . 6 . 1 . Zgodnie ze składnią opisaną w punkoie 3 . 4 . 1 . operacje są wykonywane w następującej k olejn o ści:
pierwsze« wyrażenia arytmetyozne, zgodnie z punktem 3 *3 *5 *
drugie: LESS, NOTGREATER, = , EQUAL, HOTLESS, GREATER, NOTEQUAL
trzecia: NOT ozwarta: AND piąta: OR szósta: IMFL siódma: EQUIV
3 . 4 .
6
. 2 . Zastosowanie nawiasów interpretuje się w sensie podanym w punkcie3
*3
*5
*2
.3*5* Wyrażenia sterująoe 3 .5 * 1 . Składnia
< etykieta» : : = <id e n t y f ik a t o r >
< iden tyfik ato r przełąoznika > : := « id e n t y f i
kator >
< p r z e ł ą c z e n ie > : «=<identyfikator p rzełącznika>
| | [< wyrażenie indeksowe
>3
«proste wyrażenie s t e r u ją c e > :«= <etykieta>l
« przełąozenie>|(< wyrażenie steru jąoe >)
«wyrażenie s te r u ją c e * : : = < proste wyrażenie sterująoe>|<warunekxproste wyrażenie sterująoe> ELSE < wyrażenie sterujące»
3 * 5 * 2 . Przykłady
E3 P9
ALG 3-16
WARIANT [N-1]
DROGA U F Y LESS O THEN N ELSE N+1]
IF AB LESS C THEN E3 ELSE Q [iF W NOTGREATER O THEN 9 EISE N]
3
.5
.3
. ZnaczenieWyrażenie sterujące jes t regułą na określa
nie etykiety instru kc ji (p a t r z ro zdział 4 .
"I n s t r u k c j e " ). Reguły o b licza n ia wartości wy
rażenia sterującego są w p ełn i analogiczne do reguł podanych d la wyrażenia arytmetyoznego (p a trz punkt 3 « 3 * 3 * )* Wyrażenia boołowskie za
warte w warunkach wyznaczają jedno z prostych wyrażeń sterujących. J e ż e li jest ono etykietą, to żądany wynik już otrzymano. Przełąozenle odsyła do deklaraoji odpowiedniego p rzełączni
ka (p a t rz punkt 5*3« "D e k la ra cja p rzełączni
ków" ) i według aktualnej wartośoi liczbowej jego wyrażenia indeksowego wybiera jedno
2
wyrażeń sterująoych umieszczonych na l i ś o i e w de k lara c ji p rzełącznika, liczą c te wyrażenia od lewego do prawego. W związku z tym, że wy
brane w ten sposób wyrażenie sterujące może znów okazać się przełączeniem, proces o b lic za n ia wartości jest na ogół rekurencyjny.
3 . 5 . 4 . Wyrażenie Indeksowe
Obliczanio wartości wyrażenia indeksowego przebiega tak samo, jak w przypadku zmiennej indeksowanej (p a trz punkt
3
. , . 4 . 2 . ) . Wartość p rzełączenia je s t określona tylko wtedy, gdy wyrażenie Indeksowe ma jedną z wartości dodatnich: 1 , 2 , . . . N , gdzie N jest l ic z b ą po
zy c ji na l i ś c ie w de k lara cji p rzełąoznika.
ALG 4-1
4 . INSTRUKCJE
Jednostki operaoyjne języka nazwano instruk
cjami. Instrukcje wykonuje się zwykle w takim porządku, w jakim są n ap isa n e. Porządek ten mo
gą zmienić jedynie instrukcje skoku, jawnie określające swój następnik oraz instrukcje wa
runkowe, które mogą spowodować pominięcie pew- nyoh in s t r u k c ji.
Instru kcje można opatrywać etykietam i, co pozwala określić szozególne dynamiczne następ
stwo i n s t r u k c ji.
W związku z tym, że ciągi in s tru k c ji można grupować w instrukcje złożone i b l o k i , z ko
nieczności d e f in l o ja in s t r u k c ji Jest rekuren- oyjna. W składniowej d e f i n i o j i in s tru k o ji za
kłada się t e ż , że dek laracje (p a trz r o zd zia ł 5 ) są Już określone, stanowią one bowiem istotną część struktury składniow ej.
4 . 1 . Instrukcjo złożone i Tploki 4 . 1 . 1 . Składnia
< instru kcja podstawowa be z etykiety > ::=»
instru kc ja przypisania>| < instrukcja skoku>|<instrukcja pusta>| < instrukcja pro- ceduiy>
ALd 4-2
<instrukcja podstawowa) : : n < instrukcja pod- I stawowa baz e t y k ie ty * | < etykieta > :
* instrukoja podatawowa >
< instrukc ja bezwarunkowa) : : = < instrukoja podstawowa) |< instrukcja złożona) |< b l o k )
<instrukoja> i := < instrukcja bezwarunkowa) i
< instrukcja warunkowa) l< instrukcja cyklu>
<koniec instru kcji zł o ż o n e j> s:= < in s t r u k c ja ) I END I < ins trukoja > j <konieo in s tr u k c ji
’ złożonej >
< początek b l o k u ) »
1
= BEGIN < deklaracja > I< początek b l o k u ) j < d e k la r a o ja )
< instrukcja złożona bez e t y k ie t y ) : : = BEGIN
•ikonieo in stru kc ji zło ż o n e j)
< blok bez etykiety >
1 1
= < poozątek bloku > j< koniec instru kc ji z ł o ż o n e j )
< instrukcja złożona > ! : = < instrukcja złożona bez etykiety )|<etykieta> t < instrukcja złożo na)
< b lo k ') s := < blok bez ety k ie ty ) |< etykieta > «
< blok >
< program ) : : = < b l o k ) j<instrukcja z ło ż o n a )
W celu o bjaśnienia tej składni oznaczmy dowolne instru kc je, deklaracje i etykiety od
powiednio literam i
1
I , D i E . Wtedy podstawowe jednostki składniowe będą miały następują
cą postać:
Instrukcja złożona:
E : E : . . . BEGIN I j I j . . . I j I END Blok:
E : E : . . . BEGIN D } Di . . . Dj I ; I , . . . I , I END
■Należy przy tym pamiętać, że każda z in struk cji I sama może być instrukcją złożoną lub blokiem.
ALO 4-3
4 . 1 . 2 . Przykłady
Instrukoje podstawowe*
A := P + Q GO TO KONIEC
START i DALSZYCIAG. l Wio 7 .9 9 3
Instru k cja złożona:
BEGIN X := Oj
FOR Y := 1 STEP 1 UNTIL N DO X := X + A[Y]ł
IF X GREATER Q THEN GO TO STOP ELSE IF X GREATER W - 2
THEN GO TO St AW: ST: W:= X + BOB END
Blok:
Q : BEGIN INTEGER I , Kj .REAL W
5
L : FOR I :=1 • STEP 1 UNTIL 1.1 DOFOR K := 1+1 STEP 1 UNTIL U DO BEGIN W := a[ I , K ] }
L : aCi,K ]i= a[k,i] { a( K ,I ] : = W END DLA I ORAZ K END KONIEC BLOKU Q
Przykład bloku zbudowanego niepoprawnie:
BEGIN INTEGER N; REAL W,Vj L : I N P (
0
,N ,v ) jSWITCH P := E , E 1 , E2j IF N LESS V THEN GO TO P[n]
ELSE GOTO L|
E l ‘ Wiś N + GO TO L 1 ; E 1 : W := 2 * N + V;
GO TO L 1 ;
ALG 4-4
!021 W: i; U * V |
L1:E1ID BLOKU Z i.liKLA.RACJA W HIJJWŁASCIWtM KONTEKŚCIE
4 . 1 , 3 . Znaczenie
Każdy blok wprowadza automatycznie nowy po
ziom oznaczeń. Realizuje się to w ton sposób, że dowolny identyfikator występujący wewnątrz bloku może być przez odpowiednią deklai’aoję (r o zd ział 5« "D e k la r a o je ") zlokalizowany do tego bloku. Oznaoza to, że« (a ) obiekt, repre
zentowany przez ten identyfikator wewnątrz da
nego bloku, nie is t n ie je poza tym blokiem oraz (b) dowolny obiekt, repi’ezentowany przez ten san identyfikator poza danym blokiem, jest całkowicie niedostępny w tym bloku.
Identyfikatory (z wyjątkiem tyoh, które o zn a cza j! etykiety) spotykane wewnątrz bloku i w nim nie zadeklarowane, nie są w nim lo k a l
ne, t j . reprszentują te same obiekty wewnątrz danego blok u, co i w blrku bezpośrednio obej- mująoym dany blo k . Etykietę oddzieloną dwukrop
kiem od in s t r u k c ji, a więc przyporządkowaną tej in s t r u k c ji, traktuje ię tak. jak gdyby była ona zadeklarowana na początku obejmują
cego blo k u, t j . w najmniejszym bloku, którego nawiasy BEGIN i END zawierają wspomnianą in struk cję. .7 tym kontekście treść procedury, a także instrukcję występującą po warunku cyklu (punkt 4 . 6 ; "In str u k c je oyklu" ) należy trakto
wać tak, jak edyby były one ujęte w nawiasy BEGIN i END i stanowiły b l o k i .
VI związku z tym, że instrukcja w bloku sa
ma może być blokiem, p ojęcia "lo k a ln y " lub
ALO 4-5
"n ie lo k a ln y " należy rozumieć rekurenoyjnie.
Tak więc id en ty fik a to r nielokalny w bloku A może być lokalny lub nielokalny w bloku B , w którym A jes t jedną z in s t r u k o ji.
4 . 1 . 4 . Ograniozenie
L iozba poziomów bloków, które mogą być de
klarowane jeden wewnątrz drugiego, została ograniczona do 63«
4 . 2 . Instrukcje p rzyp isan ia 4 . 2 . 1 . Składnia
<lewa strona> 1
1
= <zmienna> «=» |<identyf ikator procedury> »=< li8 ta lewyoh stron> : t= < lewa strona>|
< l i s t a lewyoh Btron> < lewa strona>
< instru k o ja p rzyp isan ia > : : = < l i s t a lewych stron> < wyrażenie aiytmetyczn9>|<lisT;a lewyoh stron><wyrażenie boolowskie>
' ‘ ■■ ' . r . : V i? '
4 . 2 . 2 . Przykłady
Si= P[0]x= Nj= N + 1 + S Ni= N + 1
At= B /C - V - Q * S
S [ V ,K + 2 ] := 3 - ARCTAN ( S » Z E Ta) V «= q GRKA.TER i AND Z
4 . 2 . 3 . Znaozenie
Instru kcje p rzyp isan ia służą do p rzyp isan ia wartośoi wyrażenia jednej lub w ielu zmiennym lub identyfikatorom prooedury. Przypisanie
ALG 4—6
wartości identyfikatorom procedury może mieć miejsce jedynie w treści procedury określają
cej wartość funkcji (punkt 5 * it '.4 .) . Prooes p rzypisania wartości przebiega w trzeoh nastę
puj ąoy oh krokaohi
4 .2 .3 * 1 » Wszystkie wyrażenia indeksowe wystę
pujące w zmiennyoh lewyoh stron oblioza się kolejno, poczynając od lewego wyrażenia, aż do prawego.
4 . 2 . 3 . 2 . O blicza się wartość wyrażenia.
4 .2 .3 * 3 « Wartość wyrażenia przypisuje się wszystkim zmiennym lewych stron z wyrażeniami indeksowymi o wartościach obliozonych w kroku 4 . 2 . 3 . 1 .
4 . 2 . 4 . Typy
Wszystkie zmienne i identyfikatory proce
dury na l i ś c i e lewych stron powinny tyć jedna
kowego typu. J e ż e li jes t to typ BOOLEAK, to wy
rażenie także musi być typu BOOLEAH. J e ż e li jes t to typ REAL lub INTEGER, to vyrażenie musi być arytmetyczne. J e ż e li typ wyrażenia arytmetycznego różni s ię od typu związanych z nim zmiennych i identyfikatorów procedury, to odpowiednie przekształcenie jest wykonywane autoratycznie. Przy przekształceniu wartośoi wyrażenia W z typu REAL na typ IHTEGER otrzy
muje s ię wyniki
ENTIER (W + 0 . 5 )
Typ związany z identyfikatorom procedury jes t określony przez deklarator, będący pierw
szym symbolem w deklaraojl tej prooedury (punkt 5 . 4 . 4 . ) .
Aia 4-?
4 . 3 . Instrukcje skoku 4 . 3 . 1 . Składnia
< instru kcja s k o k u >
11
= GO T O < wyrażenie ste- rująoe>| GOTO < wyrażenie sterujące >4 . 3 . 2 . Przykłady
GO TO E3
GOTO WARIANT [,N-l]
GOTO DROGA [iF T LESS O THEN N ELSE N+l]
GO TO IF AB LESS C THEN E3 ELSE
Q [IF W NOTGHEATER O THEN 9 ELS3 N]
4
.3
.3
. ZnaozenieInstru k cja skoku przezywa naturalny porzą
dek wykonywania in s t r u k c ji, zgodny z porząd
kiem, w jakim je nap isan o. Instru k oja skoku wyznacza swój następnik przez wartość wyraże
nia sterującego. Tak więo następną wykonywaną » instrukoją będzie t a , d la której wspomniana wartość je s t etykietą.
4
.3
.4
. OgraniczenieW związku z tym, że etykiety są. z natury lokalne, żadna instrukoja skoku nie może pro
wadzić z zewnątrz bloku do jego wnętrza. I n strukcja skoku może jednak prowadzić z zew
nątrz do in 3 tru k o ji zło ż o n e j.
4
.3
.5
. Skok przy nieokreślonym przełączeniu J e ż e li wyrażenie sterujące jes t przełączeniem o nieokreślonej w artości, to instru kcja skoku jest równoważna in s t ru k c ji p u s te j.
ALO 4-8
4 . 4 . Instrukcje puste 4 . 4 . 1 . Składnia
< instrukcja p u s ta > tta < p u s te >
4 . 4 . 2 . Przykład
Łi B E G I N ...j AIiFAl END
4 . 4 . 3 . Znaczenie
Instrukoja pusta n ie powoduje wykonania żadnej czynnośoi. Uożna się n ią posłużyć w oe- lu umieszozenia dodatkowej etykiety w progra
mie .
4 . 5 . Instrukcje'warunkowe 4 . 5 . 1 . Składnia
< instrukoja warunkowa niepełna> t
1
= < warunek >< instrukoja bezwarunkowa>
< instrukcja warunkowa)
11
= < instrukcja warunkowa niepełna>|< instrukoja warunkowa niepeł
n a ) ELSE < instx’ukcja>|< warunek) <insti\iko ja cyklu>|<etykieta> ! < instrukoja warunkowa)
4 v 5 .2 . Przykłady
IF X GHEATER 0 THEN Ni= N+1 IF V GEEATEH U THEN Et Qt= N+M
ELSE GO TO R
IF S LESS O OR P NOTGHEATER Q THEN AA! BEGIN
IF Q LESS V THEN Al* V /S ELSE Y t= 2 * A
ALG 4-9
END
ELSE IF V GREATER S THEN A := V - Q ELSE IF T GREATER S - 1 THEN
GO TO SA1
4 .5 .3 « Znaczenie
Instru kcje warunkowe powodują pominięcie lub wykonanie pewnyoh in s tru k c ji zależnie od aktualnych wartośoi określonyoh wyrażeń boo- lowaklch.
4 .
5
.3
.1
. I n s t r u k c j a w a r u n k o w a n i e p e ł n aInatrukoja bezwarunkowa występująoa w in strukcji warunkowej niepełnej będzie wykona
na, j e ż e l i wyrażenie boolowskle stanowiące część warunku ma wartość TRUEj w przypadku przeciwnym instru kcja ta zostanie pominięta i dalsze d z ia ła n ie rozpooznle się od następ- - nej in s t r u k c ji.
4 . 5 . 3 . 2 . I n s t r u k o j e w a r u n k o - w e
Zgodnie ze składnią możliwe są dwa różne rodzaje ina tru k cji warunkowych. Można je z i l u strować następującymi przykładami!
IF B1 THEN 11 ELSE IF B2 THEN 12 ELSE I3t Il
oraz
IF B1 THEN I I ELSE I ? B2 THEN 12
ELSE IF B3 THEN I3ł 14
ALG 4-10
B 1, B2 i BJ są tu wyrażeniami boolowskimi, 1 1 , 12 i 15 są instrukcjami bezwarunkowymi, a 1 4 - instrukoją następującą po instrukoji warunko
w e j.
Wykonanie instruko ji warunkowej opiszemy następująco« wartośoi wyrażeń boolowskioh wys
tępu jąoyoh w warunkaoh oblicza się kolejno od lewego do prawego, aż do zn alezienia wartości THUE; następnie wykonuje s ię instrukoję bezwa
runkową napisaną bezpośrednio po tym wyraże
n iu ; je ż e l i ta instrukcja nie określa sama swo
jego następnika, to będzie nim 1 4 , t j . instruk
cja następująoa po pełnej instru koji warunko
w ej; tak więc działanie ogranicznika ELSE pole
ga na tym, że na następnik in s t ru k o ji, po któ
rej stoi ELSE, wyznaoza on instrukcję napisaną po pełnej instruko ji warunkowej.
Konstrukcja
ELSE < instrukcja bezwarunkowa»
jest równoważna konstrukcji
ELSE IF TRUE THEN < instrukoja bezwarun
kowa >
W przypadku instru koji warunkowej drugiego ro dzaju, gdy żadne z wyrażeń boolowskioh wys- tępująoyoh w warunkaoh nie ma wartośoi THUE, wówczas wynik wykonania takiej instru ko ji wa
runkowej sprowadza się jedynie do efektów, spowodowanyoh obliczaniem wyrażeń boolcw- skich,
Do dalszych wyjaśnień m oi. być pożyteczny schemat«
IF B1 THEH 11 ELSE I J B2 THEN 12 ELSE 1 3 ; 14
B1 ma wartość FALSE B2 ma wartość FALSE
ALG 4-11
4 . 5 . 4 . Skok do wnętrza in s t ru k c ji warunkowej
Wynik wykonania in s t ru k c ji skoku, prowadzą
cej do wnętrza in s tru k o ji warunkowej, wypływa z wyjaśnionego wyżej d z ia ł a n ia ogranicznika ELSE.
4 . 6 . Instru kcje cyklu 4 . 6 . 1 . Składnia
< element l is t y oyklu >-j i= <wyrażenie arytme
tyczne)!« wy rażenie arytmetyozne> STEP
< wyrażenie arytmetyozne > UHTIL < wyrażenie arytmetyczne» | «wyrażenie arytmetyczne) WHILE < wyrażenie boolowskie)
< l i s t a c y k lu ) n = < element l i s t y cyklu >|
< l is t a qyklu>, < element list y cyklti»
< warunek cykluł!t= FOR < zm ienna) ¡=< lista oyklu > DO
< instrukoja cyklu■> s »= < warunek oy klu )
< in s t r u k c ja ) k e t y k i e t a ) t < instrukoja cyklu >
4 . 6 . 2 . Przykłady
FOR Qs=» 1 STEP S UHTIL N DO A [q] := B [q] FOR Ki= 1 , V 1 * 2 WHILE V1 LESS N DO
FOR J*=» I+ G , L , 1 STEP 1 UNTIL N , C+D DO A [K , j] t= B [K , j]
4 . 6 . 3 . Znaczenie
Warunek oyklu powoduje kolejne wykonanie naatępująoej po nim in s t ru k o ji I (p a t r z punkt 4 , 1 , 3 ) zero lub więoej r a z y . Ponadto warunek
oyklu przypisuje sterowanej przez siebie zmiennej kolejne w a rto ś ci.
ALG 4-12
Proces ten można wyjaśnić za pomocą nastę
pującego schematu:
in i c j a l i z a c j a ;
sprawdzenia; Instruk cja I ; przesun ięcia; nastgpnlk l is t a cyklu wyczarpana
W powyższym echomacie słowo " i n i c j a l i z a c j a "
oznacza wykonanie pierwszego przypisania zgod
n ie z warunkiem cyklu. "P rze s u n ię cie" oznacza następne przypisanie według tego warunku.
"Sprawdzenie’ oznacza badan ie, czy wykonano os
tatnie przypisanie« je ż e li tak, to będzie wy
konany następnik in stru kc ji cykluj w przypad
ku przeciwnym wykonuje s ię instrukcję napisa
ną po warunku oyklu.
4 . 6 . 4 . Elementy list y cyklu
Lista cyklu jest regułą, według której otrzymuje się w artości, przypisywane kolejno zmiennej sterowanej przez warunek cyklu. War
tości te otrzymuje się z kolejnych: elementów listy cyklu. Ciąg wartości generowany przez każdy z trzech- składniowo możliwych rodzajów elementów list y cyklu oraz odpowiadające mu wykonania in stru kc ji cyklu - określają nastę
pujące reguły«
4 . 6 . 4 . 1 . W y r a ż e n i e a r y t m e t y c z n e
Element tego rodzaju daje tylko jedną war
tość, mianowicie Wartość wyrażenia arytmetycz
nego, obliczoną bezpośrednio przed odpowiada
jącym temu elementowi wykonaniem in stru kc ji I .
ALG 4-13
4 . 6 . 4 . 2 , E l e m e n t p o e t a o l p o b - t ę p u a r y t m e t y o z n e g o
Element postaci A STEP B UNTIL C, gdzie
A,
B i C są wyrażeniami aiytmetyoznymi, określa . taki porządek wykonywania, któiy można za pomooą innych in s tru k o ji ALGOLu opisać w sposób następująoy:
V1»= V := Aj V 2 := B{
L 1 : IF (V 1 - C )* SIG N(V2) GREATER O THEN GOTO ELEUENTWTCZERPANOj instru kc ja 1}
V2»= Bj V1»= Vs= V+V2;
GO TO L1j
gdzie V jes t zmienną sterowaną przez waru
nek cyklu, a etykieta ELEMENTWXCZERPANO prowa
d zi do o b lic ze n ia następnego elementu l is t y cyklu lub - j e ż e l i rozważany element jes t os
tatni na l i ś c i e - do następnej in s t r u k c ji pro-'- gramuj V1 i V2 są dodatkowymi zmiennymi robo
czymi.
4 . 6 . 4 . 3 . E l e m e n t " p o d o z a s g d y "
Wykonanie sterowane przez element list y cyklu postaci E WHIŁE P , gdzie E jest wyraże
niem arytmetycznym, a P - boolowskim, można ' za pomooą innych in s t ru k o ji ALGOLu opisać w sposób następujący»
L3i V»=E|
IP NOT P THEN GO TO ELEMSNTWYOZERPANO;
ALG 4-14
instrukcja 1}
GO TO L3t
Oznaczenia - jak w punkcie 4 . 6 . 2 .
4 . 6 . 5 « Końcowa wartość zmiennej sterowanej przez warunek cyklu
Tożsamość zmiennej sterowanej przez warunek oyklu nie jes t ustalana raz na zawsze na po
czątku każdej aktyw izacji p ę t l i i może zależeć od wyniku obliczenia wyrażeń zmieniająoyeh war
tość zmiennej indeksowanej, zawartych w in s trukcji sterowanej. Po wyjściu z in s tru k c ji I (j e ż e l i jest ona instrukcją złożoną) za pomooą in stru k c ji skoku, wartość zmiennej sterowanej przez warunek oyklu będzie taka sama, jaka by
ła bezpośrednio przed wykonaniem in stru kc ji skoku. J e ż e li natomiast wyjście z in s t ru k c ji X było spowodowane wyozerpaniem list y Oyklu, to w przypadku, gdy ostatni element list y cyklu był
(a ) wyrażeniem arytmetycznym, wówczas zmien
na sterowana ma jego wartość;
(b) elementem postaoi postępu arytmetycznego bądź elementem "podozas g d y ", wówczas
zmienna sterowana ma wartość równą pierw
s zej wartośoi tej zmiennej powodująoej p rzejś cie do następnej in stru k c ji progra
mu.
4 . 6 . 6 . Skok do wnętrza in s tru k c ji cyklu
Wynik wykonania in stru kc ji skoku znajdują
cej się na zewnątrz in s tru k o ji oyklu, a odno-