maszyny
% <5/
zastosowania
w gospodarce
technice
i nauce
9
1 9 7 0
S P IS TREŚCI
S tr.
Janina Stępow ska — A LGO L 68 — p ró b a p re z e n ta c ji” ... 1 Jan M atuszyński — „O pis sk ła d n i języków p ro g ra m o w a n ia '’ . . . . 7 W itold Cichom ski i Eugeniusz Dudek — „ K a lk u la to ry e lek tro n ic zn e — b u dow a, działan ie i za sto so w a n ie” ... 12 S. K ableszkow — „P ew ien p ro g ra m do ro zw iązy w an ia problem ów b ry d żo w y c h ” ... 15 ZE ŚWIATA
„T e led a cja w przem y śle ob u w n iczy m ” — oprać. S t. K w ia te k . . . . 17 ..R epro d u k o w an ie w y d ru k ó w k o m p u te ro w y c h ” — oprać. Ew a Z aw isza . . 19
„Czy przyszłość należy do m in ik o m p u te ró w ” — oprać. K .P ... 21
„Jcszcze o Ja p o n ii...” — oprać. K .P. . . . . 22
PRETO INFORMUJE... 23
„E fekty sto so w an ia k o m p u te ró w ”
„S praw ozdaw czość”
WIADOMOŚCI P K A P I... 24 Z KRAJU
„K o n feren c ja w G ru d z ią d z u ” ...24
„S to w arzy szen ie E le k try k ó w P o lsk ich ro zw ija w sp ó łp rac ą z p rze m y słe m ” IV okł.
PRZEGLĄD WYDAWNICTW
„C om puter D ecisions” ... . 24
B ib lio g rafia k siążek polskich . . . 24
{w )
W YDAWNICTWA CZASO PISM T E C H N IC Z N Y C H
NOT Warizawa Czackiego 3/5
K O L E G IU M R E D A K C Y J N E
R e d a k t o r n a c z e l n y p r o f . d r L e o n Ł U K A S Z E W IC Z
D o c . dr h a b . in ż . K o n r a d F IA Ł K O W S K I (z a st. r e d a k t o r a n a c z e l n e g o ) , W ła d y s ła w K L E P A C Z , dr A n t o n i M A Z U R K IE W IC Z , In ż D o r o ta P R A W D Z IC (z a s t. r e d a k t o r a n a c z e l n e g o ) , dr in ż .
A n d r z e j T A R G O W S K I
S e k r e t a r z R e d a k c j i m g r W a n d a K A C E R R e d a k to r t e c h n ic z n y B o g d a n D R O Z D O W S K I R A D A P R O G R A M O W A
M g r in ż . J a n B u r s c h e , m g r in ż . H e n r y k C h y r e k , ( w ic e p r z e w o d n ic z ą c y ) m g r in ż . R y s z a r d D ą b r ó w k a , m g r in ż . B o le s ła w G lik s m a n , m g r in ż . J ó z e f K n y s z , p r o f. d r L e o n Ł u k a s z e w ic z , m g r in ż . J a n M a t e j a k , p r o f . d r T a d e u s z P e c h e (p r z e w o d n ic z ą c y ) , m g r in ż . J e r z y T r y b u ls k i ( w ic e p r z e w o d n ic z ą c y ) , d r T a d e u s z W a lc z a k , m g r T a d e u s z W a s ile w s k i, m g r W a ld e m a r W iś n ie w s k i (s e k r e t a r z ) , m g r S t e f a n W o j c ie c h o w s k i, d r in ż . H e n r y k W o ż n ia c k i, m g r in ż . J a n
Z d z is ła w Ż y d o w o
R e d a k c j a : W a r s z a w a , u l. E m ilii P l a t e r 20 m . 15, t e l . 21-13-91. Z a s t ę p c a r e d a k t o r a n a c z e l n e g o t e l . 28-37-29 Z a k ła d K o lp o r t a ż u W C T N O T , W a r s z a w a , u l. M a z o w ie c k a 12
Z a k l. G r a f. , T a m k a ” . Z. 2. Z a m . 552 P a p ie r p o w le k a n y V k l. 80 g . O b j. 3 a r k . d r u k . N a k ła d 2800. K-43
C en a e g z e m p la r z a z l 8.— I N D E K S 367 0 7 P ren u m era ta ro czn a zl 96-—
maszyny
matematyczne
zastosow ania w gospodarce, iechnice i nauce
_______________________
H r 9
M I E S I Ę C Z N I K 1 9 7 0
R O K VI
W r z e s i e ń
Rzailu do Spraw Elektronicznej Techniki Obliczeniowej i Polskiego Komitetu Automatycznego Przetwarzania Informacji Naczelnej Organizacji Technicznej
JA NINA STĘPOWSKA
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 W a r sz a w a
681.322.06
J a n in a S t ę p o w s k a u r. w 1945 r. u k o ń c z y ła s tu d i a m a t e m a t y c z n e na W y d z ia le M a t e m a t y k i i F i z y k i U n i w e r s y t e t u W a r s z a w s k ie g o w 1968 r. W t y m s a m y m r o k u p o d j ę ła p r a c ę w I n s t y t u c ie M a sz y n M a t e m a t y c z n y c h w W a r s z a w ie , w Z a k ła d z ie M e to d P r o g r a m o w a n ia , g d ż ie p r a c u j e o b e c n ie . Z a j m o w a ła s i ę g łó w n ie b a d a n ie m s k ła d n i A L G O L u 68 i j ę z y k a m i d o p r z e tw a r z a n ia s t r u k t u r li s t o w y c h .
A L G O L 6 8 — p r ó b a p r e z e n t a c j i
W a r ty k u l e dokonano próby przed sta w ien ia najis to tn ie jszy ch cech A L G O L u 68.
O m ów iono p o d sta w o w e t y p y obie któw , dekla racje w ielkości stałyc h i z m ie n n y c h , m e t o d y tw orzenia n o w y c h ty p ó w , operacje, zd ania i procedury. P rzedstaw iono także z a le ty A L G O L u 68, ja k uniw ersalność i elastyczność, czynią ce go p r z y d a t n y m do w ie lu zastosowań.
W krótce p o u k a z a n iu się R a p o rtu o A LG O Lu 68 [1], w czasopiśm ie A L G O L -B u lletin u k a z a ł >się a rty k u ł C. H. L in d se y ’a [3] b ęd ący p ierw szy m .nieform alnym opisem te g o języka. O 'tym , ja k b ard z o ta k i opis był p o trzeb n y , św iadczy ty tu ł a rty k u łu : „A LG O L 68 z m n iejszą ilością łe z ”. P óźniej w ślad za now ym i w e rs ja m i R a p o rtu p o w sta w a ły now e, zm odyfikow ane w e rs je a rty k u łu L in d ‘Sey’a.
N iniejszy a r ty k u ł je s t p ró b ą p rz e d sta w ie n ia p o lsk ie m u c z y te ln ik o w i, n a jisto tn ie jsz y c h cech A LG O Lu 68.
O p a rty je s t on n a o sta tn ie j p rac y L in d se y ’a w y d a n e j w ro k u 1969.
G łów ną cechą A LGO Lu 68 je s t jego rozszerzalność.
Języki takie, ja k A L G O L 60, FO R TR A N , P L / I itd.
m a ją ograniczoną i ściśle określo n ą g ra m a ty k ą ję zyka liczbę typów i o p e ra c ji na tych ty p a c h ; do o k reśle n ia now ych d ziała ń .program ista m a do d y s
pozycji je d y n ie p ro ce d u ry . N ato m iast A LGO L 68 d aje n ieograniczone w ręcz m ożliw ości w te j dziedzinie.
O prócz p ro c e d u r w daw.nym ro zu m ien iu język d o puszcza d e k la ro w a n ie zarów no now ych s tr u k tu r d a nych, ja k i o p era cji na ty c h s tru k tu ra c h . To w łaśn ie m am y na m yśli m ów iąc o ro zszerzalności A LG O Lu 68. A LGO L 68 je st języ k iem u n iw e rsa ln y m , k tó ry w ró w n y m 'stopniu m oże służyć obliczeniom n u m e ry c z nym , p rz e tw a rz a n iu dan y ch i list, ja k te ż i innym działaniom .
N owa je s t rów n ież m e to d a opisu A LGO Lu 68, z a p ew n ia ją ca opis zarów no sk ła d n i, ja k i sem an ty k i.
Na m a rg in e sie trz e b a stw ierd zić, że m e to d a ta ze w zględu na jej złożoność bu d zi w ie le k o n tro w e rsji.
A utorzy ję zy k a — w celu uproszczenia p isan ia i od c z y ty w an ia p ro g ra m ó w — w p ro w a d zili ¡pewną liczbę now ych sym boli p odstaw ow ych. W tym sam ym celu n ie u sta lili oni k o n k re tn e j re p re z e n ta c ji A LG O Lu 68.
K ażda re p re z e n ta c ja , k tó ra p rzy p o rzą d k o w u je w z a je m n ie jed n o zn aczn ie k ażd em u sy m b o lo w i języ k a do
w o ln y znak je s t dopuszczalna. D la n a p isa n ia R a p o rtu au to rz y u sta lili k ilk a ró w now ażnych re p re z e n ta c ji.
Na p rzy k ła d sy m b o le bcgin i end m ożna w k aż d y m k o n te k ście za stą p ić odpow iednio sy m b o la m i n a w ia só w ( i ) ; podobnie sy m b o le if i fi (sym bol z a m y k a jąc y zdanie w a ru n k o w e if) -można odpow iednio za stą p ić przez sym bole (i), n a to m ia st thcn i clse sym bolem P odstaw ow e typy obiektów
W A LG O Lu 68 ro zró żn ia m y 5 p o d sta w o w y c h ty p ó w obiektów . Są to : rcal, int, bool, char, format.
D alej om ów im y cz te ry pierw sze ty p y . W arto ści ty p u f o rm a t uży w an e są tylko w p ro b lem ach zw iązanych z w ejście m —w yjściem i w dalszym ciąg u a rty k u łu
n ie będziem y się nim i zajm ow ać.
Z m ien n e ty p u int i rcal m ogą p rz y jm o w a ć w z a sa dzie n ieskończenie w iele w arto śc i odpow ied n io n a tu ra ln y c h lu b rzeczyw istych. W p ra k ty c e liczba ty c h w arto śc i je st ograniczona k o n k re tn ą re a liz a c ją ; za p o śred n ic tw em w y ró ż n io n y c h zm iennych m a x in t, m a x re a l (odpow iednio ty p u int i real) p o d a n a je st in fo rm ac ja o zbiorze tych w a rto śc i. Z m ien n e te r e p re z e n tu ją n a jw ię k sz e liczby danego ty p u w k aż d ej k o n k re tn e j rea liza cji. F o rm a liczb ty p u int i rcal je st p o dobna do fo rm y sto so w an ej w A LGO Lu 60.
Z m ienne ty p u bool m ogą p rzy jm o w a ć ty lk o d w ie w arto śc i: true i false. T yp char je s t p rze w id zia n y dla d an y ch te k sto w y ch . R odzaj i liczba zm iennych ty p u char zależy od zestaw u znaków d o stę p n y ch n a d an e j m aszynie. K ażdej zm iennej ty p u char o d pow iada w sposób w z a je m n ie jednoznaczny liczba ty p u int. Od- pow iedniość t a m oże być różna dla różnych re a li-
1
żacji. L iczbę n a tu ra ln ą o d p o w iad a ją cą d an em u z n a
k ow i o trz y m u je m y z a pom ocą je d n o arg u m en to w eg o o p e ra to ra abs, zastosow anego do tego zn a k u . N a p rz y k ła d d la p e w n e j re p re z e n ta c ji m oże być abs a = 33.
S tale i zm ienne
A LGOL 68, p o d o b n ie ja k A LG O L 60, dopuszcza dw a ro d z a je w ielkości: s t a ł e .i z m i e n n e .
Inaczej .natom iast w y g lą d a ją d e k la ra c je ty c h w ie l
kości w obu językach. W A LG O Lu 60 w y stą p ie n ie s ta łe j w dow olnym m ie jsc u p ro g ra m u je s t jej d e k la
ra c ją ; n a to m ia st A LG O L 68 p o zw a la na d e k la ro w a nie stały ch , p o d o b n ie ja k zm iennych, itzn. n a d a w a n ie im nazw , za reze rw o w an y c h ty lk o d la ty c h stałych, np.:
r e a l p i = 3.1415;
Id e n ty fik a to r p i n i e r e p r e z e n t u j e z m i e n n e j ; r e p r e z e n t u j e w i e l k o ś ć t y p u ’rea l, k t ó r e j s t a ł ą w a r t o ś c i ą j e s t l i c z b a 3.1415.
P<-
i nazwa typureal
3 . MI5
t
wartość typu real
W tr a k c ie w y k o n y w an ia p ro g ra m u , w arto śc i pi nie m ożna zm ienić za pom ocą in s tru k c ji p o d sta w ien ia, p oniew aż p ra w ą stro n ą in s tru k c ji p o d sta w ien ia m oże być tylk o zm ienna.
In n y m p rz y k ła d e m d e k la ra c ji sta łe j jest:
r e a l x y = x + y,
W w y n ik u w y stą p ie n ia w p ro g ra m ie ta k ie j d e k la ra cji, w p am ięci m a szy n y zostanie -zarezerw ow ane m ie j
sce o nazw ie x y , w k tó ry m to m ie jsc u będzie p rz e ch o w y w an a a k tu a ln a w a rto ść x + y.
nazwa typu
t ,
real
wartość
tuou real + wartość typu real
y ••
W artości id e n ty fik a to ra x y rów n ież nie m ożna zm ie
nić przez p odstaw ienie.
R ozpatrzm y te ra z n a s tę p u ją c ą d ek larac ję:
re a l pi zm ienna: = 3.1415;
Różni się ona od p o p rze d n iej użyciem zn a k u : = za
m ia st = . J e s t to d e k la ra c ja z m i e n n e j pi z m i e n na o początkow ej w arto śc i 3.1415.
pi zmienna : * - 3 . W/5
f
wartość typu real
W artość jej może być zm ien ian a za pom ocą in s tru k cji p o d sta w ien ia, np. pi z m ie n n a := xy .
OL zm ienne + wartość
typu real
N ow ą w arto śc ią zm ien n e j p i z m ie n n a je st w artość sta łe j xy .
Z astan ó w m y się, ja k ie k o n se k w e n cje m a użycie w p ro g ra m ie d e k la ra c ji r e a l a;. U tw orzony id e n ty fik a to r a- p o sia d a sw o ją n az w ę — x. N azw a id e n ty fik a to ra z a d ek laro w a n eg o ja k o r e a l x p o sia d a !tzw. r e f e r e n c i ę (na ry su n k u p rz e d sta w io n ą jako p ro sto k ąt) do w a r t o ś c i ty p u r e a l; n a to m ia st w a r t o ś c i ą z m i e n n e j o id e n ty fik a to rz e z a d e k la ro w a n y m jako r e a l może być dow olna l i c z b a typu real.
t H
wartość
~typu real
nazwa typu re f rea l
referencja
R ozróżnienie, ja k ie czynim y m ów iąc o nazw ie id e n ty fik a to ra , zm iennej, jego re fe re n c ji i w arto śc i zm iennej je st an alogiczne do ro zró żn ie n ia pom iędzy n azw ą (sym boliczną) kom órki, je j a d re sem i z a w a r
tością.
W m om encie d e k la ra c ji ta k ie j ja k re a l a: tw orzone są w ięc dw ie w arto ści: s t a ł a i z m i e n n a
— s ta ła (nazw a id e n ty fik a to ra ) ty p u re f re a l p o s ia dając a re fe re n c ję do
— zm iennej w a rto śc i ty p u rea l.
A LG O L 68 p o zw a la rów nież na d e k la ro w a n ie id e n ty fik a to ró w , k tó ry c h w a rto śc ia m i m ogą być n a z w y , tzn. obiekity ty p u r e f re a l np. re f re a l x x .
X X wartość
'typ u real
nazwa typu re f re f re a l
referencja referencja
\
.
wartość typu re f real
W ty m p rz y p a d k u u tw o rzo n ą w p am ięc i w arto śc ią zm ien n ą je s t n az w a; je s t .to n a z w a w arto śc i ty p u rea l. W w y n ik u p o d sta w ie n ia x x : = x a k tu a ln ą w a r tością id e n ty fik a to ra a:a: je s t n a z w a x.
T w o rz en ie now ych typów
J e d n ą z ciek aw szy ch w łasn o ści A LG O Lu 63 je s t m oż
liw ość tw o rz e n ia n i e o g r a n i c z o n e j l i c z b y n o w y c h t y p ó w . P o p rz ed n io n p . po zn aliśm y ty p re f re a l. A nalogicznie m ożna utw o rzy ć zm ienne ty p u re f re f re a l; będą one m ogły p rz y jm o w a ć w arto śc i, k tó re są n az w am i nazw zm iennych ty p u re a l, tzn, są ty p u r e f re a l. K o n ty n u u ją c to p o stę p o w an ie o trzy - . m a m y nieskończoną liczbę 'typów : re f re f r e f rea l, re f re f re f re f re a l itd. N a itej sa m e j zasadzie m o że
m y o trzy m ać nieskończoną liczbę ty p ó w z ty p u in t lu b dow olnego innego ty p u .
W sto s u n k u do zm iennych o w a rto śc ia c h liczbow ych m ożliw a je s t d e k la ra c ja p rec y zji. W k a ż d e j k o n k re t
nej re a liz a c ji istn ie ją o g ran ic ze n ia dotyczące n a j
w iększej liczby n a tu ra ln e j i rzeczyw istej. Za pom ocą sy m b o lu long d e k la ru je m y zm ien n ą o p o dw ójnej p rec y zji, np. long re a l, p o tró jn e j p re c y z ji, np. lonę long r e a l itd. W yróżnione zm ien n e ty p u in t: in tle n g th s i reallength s o k re śla ją m a k sy m a ln ą precy zję, ja k ą dopuszcza d a n a re a liz a c ja dla liczb ty p u in t i rea l.
. In n ą nieo g ran iczo n ą g ru p ę ty p ó w m ożna o trzy m ać za pom ocą sy m b o li [ ], np. p rz e z d o p isan ie [ ] do in t lu b re a l o trzy m am y ty p [ ] in t lu b [ ] rea l. Typy te o d p o w iad a ją zn an y m n am ju ż z in n y c h języków tablicom , .np. [1 : 7i]real x je s t d e k la ra c ją w e k to ra n liczb rzeczy w isty ch : #[1],..., x[n].
M ożem y też za d ek laro w a ć tró jw y m ia ro w ą itd .
ta b lic ę d w u w y m iaro w ą,
2
N a p rzy k ła d 01 : n, 1 : ?n] in t y, [1 : a: + t, m : n , 0 : 5 ] re a l z.
Będą one odpow iednio ty p ó w : [, ] in t d [ , , ] real.
W A LGO Lu 60 ta b lic a za d ek laro w a n a w danym blo
ku m ia ła w nim u sta lo n e p rze z a k tu a ln ą w artość g ran ic e i na tej p o d sta w ie tra n s la to r rezerw ow ał dla niej odpow iednią liczbę m iejsc w pam ięci. Podobnie było w w yżej cy to w a n y ch przy k ład ach .
T ym czasem A L G O L 68 stw a rz a now ą m ożliwość de
k la ro w a n ia ta b lic rów nież o zm iennych g ranicach.
G ra n ic e ta k ie oznaczam y sym bolem flex. Szczególnie pożyteczne są one w p rz y p a d k u tekstów .
Rozw ażm y np. d ek larac ję:
[1: flex] c h a r s;
W pow yższej d e k la ra c ji ty lk o dolna g ra n ic a je st s ta ła. P rz y k ażdym p o d sta w ie n iu w arto śc i na zm ienną s g ó rn a g ra n ic a p rz y jm u je now ą w artość:
s : = ’’g ó rn a g ra n ic a sta je się 26” ; s : = ’’g ó rn a g ra n ic a sta je się te ra z 32” ;
In n y m sym bolem o k reśla ją cy m g ran ic e ta b lic y jest e ith er.
D ek la racja:
[h : eith er] re a l x ;
oznacza, że g ó rn a g ra n ic a je s t albo zm ienna (flex) albo stała. Z każdej tablicy, sk ła d a ją c e j się z w ięcej niż jednego elem e n tu , m ożna w y o d rę b n ić jej p o d zbiory. Rozw ażm y np. d ek larac ję:
[h : fc]ref in t w ek;
wek[i] je s t zm ien n ą ty p u re f in t w e k [ i : j ] je st zm ien n ą ty p u [] re f int.
In n y p rzy k ła d : [m : n, h : fc]real m a t ;
mat[i, j] je st zm ien n ą ty p u re a l mat[i, ] je s t zm ienną ty p u [ ]re al
mat[i : j, p : q] je s t zm ien n ą ty p u [ , ]real.
W zw iązku z p o przednio om ów ionym i m ożliw ościa
m i tw o rze n ia now ych typów w A LG O Lu 68 istn ieje też m o ż l i w o ś ć n a d a w a n i a i m n a z w . Służy do tego sym bol mode. T ak w pro w ad zo n e now e typy m ożna używ ać na ró w n i ze zdefin io w an y m i w ję zyku, np.
m ode n ap is = [1 : flex] c h a r;
i analogicznie:
m ode ta b lic a = £1 : n, 1 : n] re a l;
M ożna te ra z d ek laro w ać zm ienne ty p u napis i ta b lica:
n ap is s; (d ek la ra c ja rów n o w ażn a: [1 : n ]ch a r s) ta b lic a A; (d ek la ra c ja ró w n o w ażn a: [1 : n ]re a l A).
P o zn an e dotychczas sym bole: ref, long i [ ] służyły do tw o rze n ia dow olnej liczby now ych typów z u p rzednio zdefiniow anych. N ieco innym celom służy sym bol stru c t. O biekty ty p u s tr u c t p o w sta ją ze zło
żenia w cześniej określo n y ch s tr u k tu r danych. Za p rzy k ła d s tru k tu r y niech posłuży nam d efin icja typu com pl:
m ode com pl = stru c t(rc a l re, im);
Typ com pl je s t s tr u k tu rą sk ła d a ją c ą się z dw óch p ó l o nazw ach re i im , re p re z e n tu ją c y c h liczby rzeczyw iste. O d tego m om entu m ożem y używ ać de
k la ra c ji zm iennych ty p u com pl na ró w n i z innym i.
M ożem y np. za d ek laro w a ć s tr u k tu r ę z pisząc com pl z.
P ola dow olnej s tr u k tu ry m ożna otrzy m ać za pom ocą o p e ra to ra of. Z arów no r e of z, ja k i im of z mogą p rzy jm o w a ć dow olne w a rto śc i rzeczyw iste. N ależy zw rócić uw agę, że re i im n i e s ą i d e n t y f i k a - t o r a m i . N apis re a l re, i m ¡nie g e n e ru je żadnych
w arto śc i; sp e łn ia on podobną rolę, ja k zbiór p a r a m e t
rów fo rm a ln y c h w d e k la ra c ji p ro ce d u ry . Sym bole re i im są n azw am i pól s tr u k tu r y z.
R ozw ażm y te ra z dw ie stru k tu ry : (1) stru c t(re a l re, im);
(2) s tru c t(re a l r e i , i m 1);
N apisy (1) oraz (2) opisu ją dw ie różne stru k tu ry . I lu s tr u je to poniższy p rzy k ład :
stru c t(re a l re, im) z 1 s tru c t(re a l r e i, ¿mil) z2, z3;
r e i ot z2 := 3.14;
¿m l of z2 0.0;
I n s tr u k c ja z3 := z2 p o w oduje p rzy p isa n ie polom s tr u k tu r y z3 w arto śc i odpow iednich pól s tru k tu r y z2; n a to m ia st p rzy p isa n ie z l : = z2 je s t n ie p ra w id ło w e, p oniew aż id e n ty fik a to ry po obu stro n a c h sy m bolu : = są różn y ch typów . P o la w e w n ą trz s tr u k tu r y m ogą b y ć dow olnego ty p u z w y ją tk ie m s tr u k tu ry w łaśn ie zdefin io w an ej. W szystkie in n e typ y , z in n y m i s tru k tu r a m i w łącznie, a ta k że z re fe re n c ja m i do a k tu a ln ie defin io w an ej s tr u k tu r y są dopuszczalne, np.:
m ode p rz y k ła d = s tru c t(re f [1 : n] re f bool p, stru c t (real i, in t j, re f c h a r k) q, re f p rz y k ła d r);
S tru k tu ry m ogą być utw o rzo n e z pól o różnych t y p ac h :
m ode k sią ż k a = s tr u c t (napis te kst, in t indeks)', k sią ż k a K u b u ś Puchatek;
W artością pola „tekst of K u b u ś P u c h a t e k ” m oże być dow olny o b ie k t ty p u n ap is i podobnie — w arto śc ią pola „indeks of K u b u ś P u c h a te k" może być dow olna liczba n a tu ra ln a .
P oza spo so b am i dotychczas w y m ienionym i m ożna o k reśla ć n o w e ty p y za p o śre d n ic tw e m sy m b o lu unłon;
łączy on ¡kilka 'typów w jeden.
Na przyikład zm ienne ty p u n a p in t określonego w n a s tę p u ją c y sposób:
m ode n a p in t = unio n (n ap is, int);
m ogą p rzy jm o w ać w arto śc i zarów no ty p u napis, ja k i int.
Z astan ó w m y się , co w p ra k ty c e oznacza z a d e k la ro w a n ie zm iennej ty p u n a p in t:
n a p in t r o k ;
Id e n ty fik a to r ro k je s t nazw ą w a rto śc i ty p u n ap is lu b int.
W zw iązku z tym p o p ra w n e są p rz y p isa n ia : rok : = ” 1970” ; (przypisany je st napis)
rok : = ’’tysiąc d ziew ięćset sie d em d zie sią t” (p rz y p i
sany je s t napis)
ro k ; = 1970; (p rzy p isan a je s t liczba całkow ita).
P rz y p isa n ie w a rto śc i zm iennym , za d ek la ro w a n y m za pom ocą sy m b o lu unio n , odbyw a się p o u p rze d n im sp ra w d z e n iu zgodności ty p ó w zm iennych po obu stro n a c h sy m b o lu p rz y p isa n ia . S łuży do tego sym bol : : = np.:
n ap is tekst;
t e k s t : : = rok;
In s tru k c ja ta je s t w y k o n y w a n a w n a s tę p u ją c y spo
sób:
1. Je że li p r a w a s tro n a sy m b o lu ::= je s t ty p u napis, to w a rto ść tego p o d sta w ie n ia je s t tru e , a p o n a d to na zm ien n ą te k s t zostanie p o d sta w io n a w arto ść zm ien nej rok.
2. Je że li p ra w a s tro n a sy m b o lu ::f= je s t ty p u in t, to w arto ść tego p o d sta w ien ia je s t false , zaś w a rto ść zm iennej te k s t nie ulega zm ianie.
O peracje, o p e ra to ry i fo rm u ły
W ażną w łasn o ścią A LG O Lu 68 je s t m ożliw ość d e k la ro w a n ia n ow ych o p era to ró w za pom ocą o p era to ró w ju ż znanych lu b p rz e d e fin io w a n ia op erato ró w . Ja k o p rz y k ła d posłużą n am d efin icje o p era to ró w logicz
nych:
op | = (bool a) b o o l: if a th e n false else tru e fi;
op V = (bool a, b) b o o l: if a th e n tru e else b fi;
op A = (bool a, b) b o o l: if a th e n b else false fi;
op = = (bool a, b) b o o l: (a A b) V (—1 a V —] b).
op ^ = (bool a, b) b o o l: —| (a = b);
op abs = (bool a) i n t : if a th e n 1 else 0 fi;
Z asadnicza d efin icja o p e ra to ra (napis m iędzy d w u k ro p k ie m a śred n ik iem ) a k ty w iz u je się w m om encie w y stą p ie n ia tego o p e ra to ra w e w n ą trz fo rm u ły . D la tego sa m eg o o p e ra to ra m ożna używ ać ‘różnych s y m boli; w szystkie one będą m iały to sa m o znaczenie, np.:
op V = (bool a, b) bool : if a th e n tru e else b fi;
op or = (bool a, b) bool : if a th e n tr u e else b fi;
O czyw iście fo rm u ły (a V b) i (a o r b) m a ją tę sam ą w arto ść .
I s tn ie je su b te ln a , ale b ard z o w ażn a różnica m iędzy w y stęp o w an iem o p era to ró w w fo rm u ła c h i w ołaniem p ro ce d u r. W ołanie p ro c e d u ry odbyw a się za pom ocą id e n ty fik a to ra p ro ce d u ry niezależnego od p a ra m e tró w a k tu a ln y c h ; n a to m ia st in te rp re ta c ja o p e ra to ra w fo r
m u le je s t uzależn io n a od ty p u a rg u m e n tó w . W zw iąz
ku z ty m te n sa m sy m b o l m oże być uży ty w innej d e k la ra c ji tego sam ego bloku, a n a w e t w tym sam ym w y ra że n iu , np.:
op = = (bool a, b) b o o l: (a A b) V C~]1 a A H b);
op = = (com pl a, b) bool re: of a = re of b A irn of a =
— im of b ; K ażdy o p e ra to r posiada .swój p r io ry te t, w y ra ż a ją c y się liczbą n a tu ra ln ą od 1 do 10 i o k re śla ją c y k o le j
ność w y k o n y w a n ia o p e ra c ji w .trakcie w y lic za n ia w arto śc i fo rm u ły . O p e ra to ry je d n o a rg u m e n to w e p o sia d a ją zaw sze /wyższy p r io ry te t niż w szy stk ie ope
r a to ry d w u arg u m e n to w e. Za p om ocą .symbolu priority m ożna o kreślić p rio ry te t ¡każdego zdefiniow anego ope
ra to ra , np. priority A — 3.
Z d an ia
W A LGO Lu 68 in s tru k c je w p ro g ra m a c h m o ż n a .w y kon y w ać se k w e n c y jn ie i rów nolegle. P ro g ra m ista m oże .rów nież :— w zależności od p o trz e b y — k ie ro w ać k olejnością rozpoczęcia w y k o n y w an ia poszcze
gólnych in s tru k c ji rów noległych. S p ra w ę tę p o zo sta
w iam y tu ta j bez dalszych w y ja śn ie ń , a zajm iem y się je d y n ie in s tru k c ja m i w y k o n y w an y m i sekw encyjnie.
A LGO L 68 -wprow adza za m ia st in stru k c ji, w y ra że ń i bloków now ą je d n o stk ę sy n ta k ty c z n ą — zdanie.
W dalszym ciągu a rty k u łu będziem y się n ad a l p o słu giw ać o k reśle n ie m in s tru k c ji i w y ra ż e n ia ze w zględu na tr a d y c ję i naw yki.
Z daniem je s t w ięc .zarówno in s tru k c ja x : — a + b, ja:k i w y ra ż e n ie a + b. W a r t o ś c i ą i n s t r u k c j i p o d s t a w i e n i a j e s t w a r t o ś ć w y r a ż e n i a s t o j ą c e g o p o p r a w e j s t r o n i e s y m b o l u p r z y p i s a n i a , w ty m w y p a d k u będzie to w arto ść w y ra ż e n ia a + b; w a rto śc ią w y ra ż e n ia a + b je s t s u m a w a rto śc i id e n ty fik a to ró w a i b. W zw iązku z p rz y p isa n ie m w a rto śc i in s tru k c ji p o d sta w ien ia w A L G O
Lu 68 p o p ra w n e je st np. ta k ie zdanie: a := x + + (t : = y X z);
Z daniem je s t ró w n ie ż ciąg in s tru k c ji i w y ra ż e ń od dzielony śre d n ik a m i i u ję ty w n aw ia sy begin i end lu b ( i ) zdanie ta k ie będziem y nazyw ać złożonym . W artością z d a n ia złożonego je s t w arto ść ostatniego zd a n ia p o przedniego end lu b ).
R ozw ażm y p rz y k ła d y : (1) begin
x a + b;
• t
X
end (2) begin
a : = 5;
b : = 7;
x a + b end
W artością zdan ia (1) je s t w a rto ś ć w y ra że n ia x; w a r to ścią zd a n ia (2) — w arto ść in s tru k c ji x : = a + b.
Spośród w szy stk ich in s tru k c ji w arto ść po siad a tylk o in s tru k c ja p o d sta w ien ia. W y n ik a stą d , że je d y n ie ta k ie zdanie p o sia d a w arto ść , któ reg o o sta tn im z d a
niem sk ład o w y m je s t w y ra ż e n ie lub in s tru k c ja p o d staw ien ia.
O prócz in s tru k c ji i w y ra ż e ń zd a n ie złożone m oże za
w ie ra ć rów n ież d e k la ra c je . Z d an ie ta k ie , o ile p o sia d a w arto ść , m oże w y stę p o w a ć w w y ra ż e n iu po p ra w e j stro n ie in s tru k c ji p o d staw ien ia, np.
a : = a: + (real a, b, y;
a : = 5; b: = 7;
y a + b);
lub
a : = ( x + y ) / begin real x ; x : = a + b; x end;
P rzez z a stą p ie n ie w y ra ż e n ia x sta n d a rd o w ą in s tr u k cją w y jścia — print(x) o trzy m u jem y zdanie złożone nie p o sia d a ją c e w arto ści:
begin real a:;
x a + b;
;p rin t(x ) end
gdyż in s tru k c ja print (a:), k tó ra je s t o sta tn im zdaniem pow yższego zdania złożonego, nie posiad a w artości.
Z dań złożonych używ a się głów nie w celu u tw o rz e nia zm iennych lo k aln y ch d la danego zdan ia, zdefinio
w a n ia pew nego d ziała n ia lu b w celu o k re śle n ia j a k ie jś pom ocniczej w arto śc i. M oże ono być rów nież użyte w celu w sk a z a n ia kolejności w y k o n y w a n ia ope
ra c ji w fo rm u łach .
O prócz zdań złożonych w p ro g ra m a c h m ogą rów nież w y stę p o w a ć zdan ia w a ru n k o w e i zdania w yboru.
Z d an ia w a ru n k o w e m a ją postać:
if b then z l else z2 fi
Z am iast sy m b o li if, then, else, fi m ożna używ ać sy m boli (, |. , | ,). Na p rz y k ła d p rzy to c zo n e zdanie m ożna p rz e p isa ć w p o staci (b | z l | z2).
Z danie w a ru n k o w e w y k o n u je się w n a stę p u ją c y spo
sób:
Jeżeli .zdania boolow skie b m a w a rto ść true, to n a le ży w y k o n ać i podać w a rto ść (o ile ją posiada) zdania złożonego z l , w p rzeciw n y m p rzy p ad k u — w y k o n ać i podać w arto ść (o ile ją p o sia d a) z d a n ia złożone
go z2. Jeżeli z l i z 2 są zd an iam i p o sia d a ją c y m i w a r tość, to zdan ie w a ru n k o w e m oże w y stę p o w a ć po p r a w ej stro n ie in stru k c ji p o d sta w ie n ia , np.:
x ;,= ( i < j | a + b ] a — b)
Jeżeli p o n a d to w arto śc i zdań z l i z2 m ogą być in te r p re to w a n e ja k o p o sia d ające ty p ref, to zdanie w a r u n 4
kow e m oże w y stę p o w a ć rów n ież po lew ej stro n ie in s tru k c ji p o d sta w ie n ia , np.:
begin re a l x , y;
(j < i I V I x) : = 3,1415 end
J e s t to rów n o w ażn e zd an iu ( j < i | x : = 3,1415 | y : = 3,1415). O prócz zn a n y ch ju ż sym boli th e n i else, w zd an iu w a ru n k o w y m m ogą w ystęp o w ać sym bole th e f i elsf, będ ące sk ró ta m i p a ry sym boli th e n if i else if.
U sp raw n ien iem p rze łą c z n ik a (sw itch) A LGO Lu 60 je s t w A LG O Lu 68 z d a n ie w y b o ru :
case n in ¿i, u ..., ik o u t z esac
Liczba n a tu r a ln a n o k reśla , czy m a być w y k o n an a in s tru k c ja p ie rw sz a i1; d ru g a i2, ... czy te ż Jc-ta ik.
Je że li n je s t w ięk sza od liczby in stru k c ji, to w y k o n y w an e je s t zd a n ie z.
Skoki i p o w tó rze n ia
I n s tr u k c ja sk o k u w A LG O Lu 68 je s t bodajże jed y n ą, k tó re j znaczenie nie uległo żadnej zm ian ie w p o ró w n an iu z A LG O Lem 60. Ja k o p rz y k ła d m oże n am p o służyć poniższe zdan ie:
begin re a l x 0; in t n : = 1;
E: x :■= x + x n ; n 7i + l;
if 7i ^ 100 th e n goto E fi end
Z a m ia st goto E m o żn a ró w n ież p isa ć E. Z d an ie to w y k o n u je się ta k sam o ja k w A LG O Lu 6.
W k a ż d y m zd a n iu w dow olnym m ie jsc u -może w y stą p ić in s tru k c ja goto e x it (lub p ro ściej exit). P o w o d u je ona opuszczenie a k tu a ln ie czynnego zdania zło
żonego. T ak i sk o k w d a n y m zd a n iu złożonym m oże być ty lk o jed en , np.:
b egin r e a l a: := 0; in t n : = 1;
if j> 0 th e n goto E fi;
0.1; ex it;
E: x : = a: + x n ;
7i : = 7i + l ;
if ?i<100 th e n goto E fi end
W tym p rz y p a d k u w a rto śc ią zd a n ia złożonego gdy 3 ^ 0 je s t 1.0, p o n iew aż je s t ono o sta tn im zdaniem p o p rze d zając y m end.
W ielokrotnego w y k o n a n ia jak ieg o ś ciągu in s tru k c ji m ożna d okonać sto s u ją c zd a n ie p o w tó rze n io w e (pętlę):
beg in re a l x : = 0; in t n : = 100;
to 7i do x := x + x ” end
Z w ro t to ii do je s t szczególnym p rz y p a d k ie m pełnego zdania pow tórzeniow ego:
for 71 fro m u>l by w2 to w 3 w h ile b do 5 gdzie:
— 7i je st dow olnym id e n ty fik a to re m ty p u in t; w y s tą p ie n ie tego id e n ty fik a to ra je s t jego d e k la ra c ją , k tó re j za k rese m je s t zdanie for,
— to l, w2, w3 isą w y ra ż e n ia m i o w a rto śc i ty p u in t,
— b je s t w y ra ż e n ie m o w a rto śc i ty p u bool,
—■ S je s t zd an iem .
W poszczególnych p rz y p a d k a c h k ażd a z części z d a
n ia p o w tórzeniow ego z w y ją tk ie m zd a n ia S m oże być opuszczona. Sposób in te rp re to w a n ia ta k ic h sk ró tó w je s t o k reślo n y n a s tę p u ją c y m i re g u ła m i:
Je że li 7i n ie je s t uży w an e w zd an iu for, to for n m oż
n a opuścić. Je że li fro m w 1 je st opuszczone, to w y k o n y w an e je s t fro m 1.
Je że li by w2 je s t opuszczone, to w y k o n y w a n e je s t by 1.
Je że li to w 3 je s t opuszczone, to w y k o n y w an e je st
tO 0 3 .
Je że li w h ile b je st opuszczone, to w y k o n y w an e je s t w h ile tru e .
Z danie do S w y k o n u je się n ieskończenie w iele razy, S w y k o n u je się raz.
P ro c e d u ry
T ra d y c y jn ą ju ż m eto d ą d efin io w an ia now ych działań są p ro c e d u ry . R ów nież A LG O L 68 d y sp o n u je w sz y st
kim i dotychczas znan y m i ro d za jam i p ro ced u r. O k re ś
la je p o sta ć d e k l a r a to r a l) p ro ce d u ry . P rz y k ła d a m i d e k la ra to ró w są :
proc p roc re a l
p ro c(re al, in t, re f char) p ro c(rcal, in t, r e f char)bool
— p ro c e d u ra bez p a r a m e tró w
— p ro c e d u ra fu n k c y jn a bez p a ra m e tró w , d a j ą ca w a rto ść ty p u r e a l
— p ro c e d u ra 3 -p a ra - m e tro w a
— p ro c e d u ra 3 -p a ra - m e tro w a d a ją c a w a r tość ty p u bool.
Dobrze znane z A LG O Lu 60 p ro c e d u ry bez p a r a m e t
rów w zbogaciły się o m ożliw ości, k tó re d aje A LGOL 68. R ozw ażm y n a s tę p u ją c e dw a p rz y k ła d y :
proc E — : begin re a l x := 7, y ■:= 15.2, z;
p rin t(z := (x + y)/2 — sqrt ( i X j)) end
p roc E l : : begin goto END;
END: en d ;
W p ierw szym p rzy k ła d zie id e n ty fik a to r E je st nazw ą stałej (procedury); treść p ro ce d u ry E n ie m oże być zm ieniona. N ato m iast w dru g im p rzy k ła d zie treść może być zm ieniona przez podstaw ienie np. E l : = E. Z d a
nie begin goto END; END : e n d ; je s t początkow ą w a r
tością zm iennej E l. Zauw ażm y, że podobnie ja k o b ie k ty ty p u re a l czy in t, ob iek t ty p u proc m oże być stalą lub zm ien n ą ; jego w arto śc ią je s t treść procedury.
Z ad e k laro w an ą p ro ce d u rę m ożna użyć w z d a n iu : begin if j > 0 th e n E clsc 0 fi e n d ;
C iekaw ą w łasnością A LG O Lu 68 je s t m ożliw ość n a d aw a n ia ty p u proc dow olnym zdaniom :
proc p;
p : = x : = 3.1415;
Z a d e k laro w an a pow yżej p ro ce d u ra p je s t p ro ce d u rą b e z p aram etro w ą; zm ien n a p je s t ty p u proc. O znacza to, że n a p m ożna p odstaw ić tylko w arto śc i ty p u proc.
W zd an iu p : = x : = 3.1415 an i x , an i 3.1415 nie je st typu proc, a pom im o to p o d staw ien ie je st p raw idłow e.
W ykonuje się ono w n a stę p u ją c y sposób : in stru k c ja x : = 3.1415 nie je s t w ykonyw ana, tzn. w arto ść x nie zm ienia się, ale in s tru k c ja ta będzie p o tra k to w a n a jako ciało p ro ce d u ry i zostanie p o d sta w io n a n a p. Inaczej m ów iąc, zdanie x :=■ 3.1415 o trzy m a ty p proc i z o sta nie p rzy p isa n e zm iennej p.
T reścią p ro ce d u ry m oże być nie tylko zdanie o k re ś
la ją c e czynność, lecz ró w n ież zdanie o k re śla ją c e w a r
tość. W ty m dru g im p rz y p a d k u p ro c e d u ra nosi n az
wę fu n k c y jn e j. W d e k la ra c ji ta k ie j p ro c e d u ry w y stę p u je ta k ż e o k reśle n ie ty p u w arto śc i treśc i p ro ced u ry , np.:
p roc re a l Ez — r e a l : b egin re a l x : = 7, y : — 15.2, z;
z : = ( x + j/)/2 — sqrt (x X y) end;
') C z ę ść d e k la r a c j i o k r e ś la j ą c a t y p d e k la r o w a n e j z m ie n n e j .
5
N apis rc a l u sta la , że w y m ag a n y m ty p em w arto śc i ciała p ro c e d u ry je st rca l; ty p e m id e n ty fik a to ra Ez je st p ro c re a l — now y ty p o trzy m an y z rca l.
P rz y k ład e m d e k la ra c ji p ro c e d u ry z p a ra m e tra m i jest:
p ro c(real, rc a l)rc a l D =
(real a, b)real: ((a + b)/2 — sqrt(a X b ) );
T ypem id e n ty fik a to ra D je s t p ro c(re al, re a l)re a l.
P o zn ajm y bliżej poszczególne części d e k la ra c ji p ro cedury:
1. Część re a l a, b o k reśla p a ra m e tr y fo rm a ln e a i b ty p u rc a l. P a r a m e try a k tu a ln e p o d sta w ia n e w m iej- sc e 'fo rm a ln y c h m uszą być rów nież ty p u rca l. S ą je d n ak m ożliw e o d stęp stw a od te j reguły, np. jeśli zostanie p o d sta w io n y p a r a m e tr ty p u in t, to będzie on au to m aty cz n ie zam ieniony >na ty p rcal.
2. Część re a l: u sta la , że w y m ag a n y m ty p em w arto śc i treści p ro c e d u ry je s t real.
3. P odczas w y w o łan ia p ro c e d u ry zd an iem a + D (x ,]/)/3 tre ść p rz y jm ie n a s tę p u ją c ą p o stać:
b egin re a l a, b;
a := a-; b := y;
(a + b)/2 — sqrt(a X b) end
a cale z a d a n ie s ta n ie się rów n o w ażn e zdaniu:
a + b egin r c a l a, b; a := a’; b y; (a + b)/2 — sqrt (a X b) cnd/3
Może się rów n ież zdarzyć, że ty p p a ra m e tru a k tu a l
nego n ie je s t u sta lo n y w m om encie d e k la ra c ji p ro cedury:
p ro c intreal = (union(int, rcal) inre) : begin r e a l x : = 0, p;
if p : := inre
th e n (to p do x : = x + x p) clsc inre
end;
P a ra m e tre m a k tu a ln y m p ro c e d u ry intreal m oże być zarów no w a rto ść ty p u int, ja k i rc a l. W ykonanie cia
ła p ro ce d u ry w tra k c ie jej w y w o ła n ia będzie uzależ
nio n e od ty p u p a r a m e tr u ak tu aln e g o . P a ra m e tra m i p ro ce d u ry m ogą być ob iek ty dow olnego typu.
W szczególności m ogą być p ro c e d u ra m i, np.:
p ro c p = (int k, p roc (in t)rc al p a r)rc a l:
beg in r c a l su m : = 0;
for j to ic do s u m : = s u m + p a r (i);
s u m end
W tra k c ie w y w o łan ia p ro c e d u ry p a r a m e tr a k tu a ln y p o d sta w io n y w m iejsce p a r a m e tr u fo rm aln eg o m usi być ty p u proc (int) rca l, np. x := p (100, (int i) rc a l:
i / i ) ;
Jeżeli p a ra m e tre m fo rm a ln y m je st p ro ce d u ra bez- p a ra m e tro w a , to p a r a m e tr e m a k tu a ln y m m oże być zdanie, k tó re w tra k c ie re a liz a c ji o trzym a ty p proc.
N a zakończenie p o d a m y jeszcze p rz y k ła d e le m e n ta r
nej p ro c e d u ry p o zw a lając ej dw ie s tr u k tu r y lis to w e 2) połączyć w je d n ą.
°k nú
bn nit
« i (In
U żyty tu sym bol oznacza o p e ra to r B oole’ow ski, k tó ry d a je w arto ść tr u e w te d y i ty lk o w ted y , gdy w iąże on bąd ź ró żn e nazw y, bąd ź nazw y o różnych typach. Sym bol n il je s t sta ły m sym bolem d la n az w y nie p o sia d a ją c e j re fe re n c ji do żadnej w arto śc i. P o d an a p ro c e d u ra je st o k reślo n a w sposób rek u rsy w n y . begin
m ode atom = [1 : flcx ]c h a r;
m odę lis ta = stru c t(a to m car, re f lis ta cdr);
p ro c(lista, lis ta )lis ta połącz =
(lista x, lis ta g l i s t a : (cdr of x n il |
( ( cdr of x, pożqc2(cdr of x ,y ) ) | ( (car of x, y ) );
end
U w agi końcow e
A LGO L 68 w p o ró w n a n iu z in n y m i ję zy k a m i p ro g ram o w a n ia je s t znacznie w szechstronniejszy. Ś w ia d czy o ty m m. in. to , że jego poszczególne p odzbiory m ogą służyć m . in. do obliczeń n um erycznych, p rz e tw a rz a n ia list lu b innych b ard z iej złożonych s tr u k t u r danych oraz do p rz e tw a rz a n ia napisów . Je śli is t
n iejące ty p y i o p era cje o każą się n ie w y starcz ające , is tn ie ją rów nież m ożliw ości d efin io w an ia now ych.
P ro g ra m ista m a w ięc do sw ojej dyspozycji śro d k i um o żliw iające m u tw orzenie ję zy k a w ed łu g w łasn y ch p otrzeb. P o n ad to m oże on opisyw ać o g raniczenia w y n ik a ją c e z u ży c ia k o ń k re tn e j m aszyny.
W śród innych cech, k tó re św iadczą n a jle p ie j o now o
czesności A LG O Lu 68, w y m ie n ić trz e b a rów n ież te w łasności języka, k tó re p o z w a la ją n a znaczne s k r a canie i u p rasz cz an ie p ro g ra m ó w . W arto ró w n ież zw rócić uw agę na je d n ak o w e p o tra k to w a n ie w sz y st
k ic h ty p ó w , przez co u zyskano m ożliw ość lepszego w y k o rz y sta n ia tw o rz o n y c h p rz e z p ro g ra m istę o b ie k tów , ta k ic h ja k np. ta b lic a nazw p ro ce d u r, k tó ra m oże być w tr a k c ie p ro g ra m u „ z a p e łn ia n a ” zgodnie z p o trz e b a m i. D odać jeszcze trz e b a , że A LG O L 68 p o sia d a ro zb u d o w an y m ech a n izm w e jśc ia —w y jścia, czym nie .dysponow ał w cześn iejszy A LG O L 60.
O pisu jąc A LGO L 68 n ie w y cz erp aliśm y w szy stk ich zagadnień. O sobnego w y ja ś n ie n ia w y m a g a ją m . in.
p ro b le m y zw iązan e z w ejście m i w y jśc iem , ró w n o leg łym w y k o n y w an ie m zad ań i d ziała n ia m i n a p lik a c h danych. Z a in tereso w a n y ch odsy łam y do poszczegól
nych pozycji przy to czo n ej b ib lio g ra fii.
A L G O L 68 n ie z o sta ł jeszcze w p ra w d z ie z re a liz o w a n y d la żad n ej m aszy n y , co u tr u d n ia ocenę jego p ełn ej p rzy d atn o ści, nie ulega je d n a k w ątp liw o ści, że w a r tości, k tó re re p re z e n tu je w s e n s ie te o re ty cz n y m , a zw łaszcza ta k ie , ja k u n iw e rsa ln o ść i elastyczność, s ta w ia ją go w rzędzie języków przyszłości.
2) P o r . n p . J o w it a K o n c e w ic z — J ę z y k i d o p r z e t w a r z a n ia s t r u k t u r l i s t o w y c h , M a s z y n y M a t e m a t y c z n e , n r 5/1970.
B IB L IO G R A F IA
[11 A . v a n W ij n g a r d e n , B . J . M a illa u x , I. E. L. P e c k , C. H.
K o s t e r , R e p o r t o n T h e A lg o r it h m ic L a n g u a g e A L G O L 68.
M a t h e m a t ic C e n t r u m , A m s t e r d a m 1969
[2] S . G. v a n d e r M e u le n , O. H. L in d s e y , I n f o r m a l I n t r o d u c t io n t o A L G O L 68, M a t h e m a t is c h e C e n tr u m , A m s te r d a m 1969
[3] C. H . L in s e y , A L G O L 08 w i t h F e w e r T e a r s , A L G O L B u l l e t i n
nii
6
JAN M AŁUSZYŃSKI 681.32206:801.56
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 W a r sz a w a
M gr in ż . J a n M a t u s z y ń s k i j e s t a b s o lw e n t e m W y d z ia łu A u t o m a t y k i i M a sz y n M a t e m a t y c z n y c h M o s k ie w s k ie g o I n s t y t u t u E n e r g e t y c z n e g o . W 1968 r o k u u k o ń c z y ł S t u d iu m Z a o c z n e M a t e m a t y k i U n iw e r s y t e t u W a r s z a w s k ie g o . O d 1967 r o k u p r a c u j e w Z a k ła d z ie M e to d P r o g r a m o w a n ia i n s t y t u t u M a sz y n M a t e m a t y c z n y c h , g d z ie z a j m u j e s i ę z a g a d n ie n i a m i s k ła d n i j ę z y k ó w p r o g r a m o w a n ia .
Opis składni języków program ow ania
N a jbardziej rozpow szechnioną fo rm alizację opisu skła d n i j ę z y k ó w program ow ania je st notacja B a cku sa (BNF). N otacja B N F jest p e w n y m sposobem zapis u g r a m a ty k b e z k o n te k s t o w y c h , z d e fin io w a n y c h p rze z C h o m s k y ’ego. A p a ra t g r a m a ty k bezko n - t e k s t o w y c h je st na ogół z b y t słaby dla w y ra że n ia n ie k tó r y ch cech j e ż y k a pro gra
m ow ania. W a r ty k u l e opisano n ie któ r e p ró b y u tw o rzen ia no w e g o aparatu do s y n tetycznego opisu sk ła d n i ję z y k ó w programowania, w szczególności A L G O L u 68.
Tw órcy ję zy k a p ro g ra m o w a n ia sto ją zaw sze p rzed tru d n y m za d an iem , ja k im je s t u d o stę p n ie n ie tego ję zyka szerszem u ogółowi.
P rz ed e w szy stk im m uszą oni określić, ja k ie napisy uw aża się za dozw olone k o n stru k c je językow e. N a stęp n y p ro b lem polega n a ścisłym sprecyzow aniu znaczenia ty c h k o n s tru k c ji; chodzi tu o o k reśle n ie efe k tó w w y k o n a n ia p ro g ra m u zapisanego w ty m ję zyku. W ym aga to n a ogół dokładnego o k reśle n ia a b s tra k c y jn e j m aszyny u ży w a n ej do w y k o n y w a n ia p ro g ram u . A utorzy ję zy k a m uszą p o n ad to dać u ży tk o w nikow i p ew n e p ra k ty c z n e w skazów ki, dotyczące sto so w an ia zw rotów języka. Te trz y a sp e k ty opisu języ k a n azy w an e są składnią, s e m a n t y k ą i p ragm aty ką.
S ą one ściśle ze so b ą p o w iąz an e i tru d n o w yznaczyć d o k ład n ie g ra n ic e pom iędzy nim i.
W tym a rty k u le poru szy m y n ie k tó re za gadnienia zw iązane z m eto d am i opisu sk ła d n i języków p ro g ra m ow ania.
P ro g ra m ista k o rzy sta ją cy z danego języka p ro g ra m o w a n ia oczekuje ro zstrz y g a ją c e j w szystkie w ątp liw o ś
ci fo rm a ln e j rec ep ty , k tó ra m ów iłaby, ja k tw orzyć dozw olone zw ro ty i ja k z tych zw rotów budow ać p ro g ra m . M uszą tu je d n a k istnieć dość szerokie m oż
liw ości w yboru, gdyż zw roty d o b iera się w zależności od k o n k retn e g o rozw iązyw anego zadania. W czasie tłu m ac ze n ia p ro g ra m u , m aszyna sp raw d za, czy użyto dozw olonych zw rotów i czy s tr u k tu r a p ro g ra m u je st p o p raw n a. W tym celu k o rz y sta ona z alg o ry tm u rozbioru, określonego w czasie tw o rze n ia tra n s la to ra na p o d sta w ie opisu składni. Z ad a n ia p ro g ra m isty i m aszyny są w ięc w tym p rz y p a d k u odw rotne. Nic dziw nego, że opis sk ła d n i przeznaczony dla m aszyny różni się zazw yczaj od opisu sk ła d n i przeznaczonego dla człow ieka. O pis sk ła d n i, k tó ry o k reśla, ja k uzys
kiw ać dozw olone zw roty i ja k budow ać z nich p ro gram y , nazw iem y opisem sy n tety czn y m , opis algo
ry tm u ro zb io ru — a n a lity cz n y m opisem składni.
T en a rty k u ł om aw ia n ie k tó re m etody syntetycznego opisu składni.
P ro b le m form alnego opisu sk ła d n i języków p ro g ra m o w an ia nie został jeszcze w pełni rozw iązan y m. in.
dlatego, że n ie k tó re cechy p ro g ra m u zw iązane w y łącznie z jego p o stacią nie d ają się opisać w is tn ie jących form alizm ach.
N a p rz y k ła d w y stę p u ją c y w A LG O Lu 60 pro b lem d e k la r a c ji— p o s tu la t jednoznacznego i niesprzecznego d e k la ro w a n ia uży w an y ch zm ien n y ch — nie je st ob
ję ty fo rm a ln y m opisem sk ła d n i tego języka. K o rzy s ta ją c ty lk o z fo rm aln eg o opisu sk ła d n i m ożna w ięc n ap isać dozw olony fo rm a ln ie p ro g ra m , k tó ry będzie n iep o p ra w n y z pow odu n a ru sz en ia p ew n y ch reguł, nie d ając y ch się w y razić za pom ocą p rz y ję ty c h m e
tod.
W zw iązku z szybkim rozw ojem języków p ro g ra m o w ania, koniecznością sta je się a u to m a ty z a c ja k o n stru k c ji tra n sla to ró w . P o d staw ą w szelkich b ad a ń w te j dziedzinie je st w łaśn ie fo rm a liz a c ja opisu sk ła d ni. D uża liczba p u b lik a c ji na te n te m a t św iadczy o jego ak tu aln o ści. M ożna przypuszczać, że now e m e tody opisu sk ła d n i języków p ro g ra m o w a n ia pozw olą zm niejszyć liczbę cech p ro g ra m u nie o b ję ty ch fo r
m alnym opisem .
Notacja BNF i klasyfikacja Chomsky'ego
N ajb a rd zie j rozpow szechnionym , stosow anym od d aw n a form alizm em opisu składni języków p ro g ra m ow ania, je s t n o ta cja B a ck u sa (BNF), zastosow ana m. in. do opisu sk ła d n i A LGO Lu 60 [1],
Skończony zbiór reg u ł określa, w ja k i sposób m ożna tw orzyć dozw olone zw roty. K ażda re g u ła je s t n a p i
sem , w k tó ry m w y stę p u je sym bol : : = oddzielający lew ą i p ra w ą stro n ę reguły. L ew a stro n a k aż d ej r e g uły nazyw a się z m ie n n ą m e ta j ę z y k o w ą . Z biór w szystkich lew ych stro n tw orzy alfabet zm ie n n yc h . K ażd a zm ien n a m e ta ję z y k o w a m a postać n ap isu u ję tego w sp e cja ln e n aw ia sy ( ). P o p ra w e j stro n ie r e guły oprócz zm ien n y ch m etajęz y k o w y c h m oże w ielo k ro tn ie w y stę p o w a ć sym bol pom ocniczy | o raz inne sym bole nie z a w a rte w n aw iasach . T e o sta tn ie o k re ś
la ją alfabet term in a ln y . W eźm y ja k o p rzy k ład : {cyfra) : : = 0 | l | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
(liczba c a łko w ita ) : : = (cyfra) | (liczba całkowita) (cyfra)
Pow yższe reg u ły o k re ś la ją a lfa b e t zm iennych m e ta językow ych V = ((cy fra), (liczba całkow ita)} oraz alfa b e t te rm in a ln y T = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
O gólnie, p ra w a stro n a re g u ły m a po stać ciągu s k ła d n ik ó w oddzielonych sy m b o lam i |. K ażdy z tych sk ła d n ik ó w m oże zaw ierać zarów no sym bole z a lfa b e tu zm ien n y ch , ja k i z a lfa b e tu term in aln e g o . Do
zw olone w y ra że n ie opisanego w te n sposób ję zy k a — to każde słow o z a w ie ra ją c e w yłącznie sym bole z a l
fa b e tu te rm in aln e g o , k tó re m ożna o trzy m ać z je d n ej w y ró ż n io n e j zm iennej m e tajęz y k o w e j p rzez k o le jn e z a stęp o w an ie p o ja w ia ją c y c h się zm iennych m e ta ję zykow ych dow olnym i sk ła d n ik a m i z o dpow iadających im reg u ł. P rz y p u śćm y , że w pow yższym p rzy k ła d zie zm ien n ą w yró żn io n ą je st {liczba c a łko w ita ). W ów czas słowo 10 je st dozw olonym w y ra że n iem o kreślo
nego p rze z p o d an e reg u ły języ k a, p oniew aż zm ien n ą {liczba c a łko w ita ) m ożem y za pom ocą re g u ł p rz e k ształcić w n a s tę p u ją c y sposób:
(liczba ca łko w ita ) = > (liczba c a łk o w ita ) (cyfra) = >
(cyfra) (cyfra) = > 1 (cyfra) = > 10
Ł atw o zauw ażyć, że k o lejność zastę p o w an ia zm ien n ych nie w p ły w a n a o sta te czn ie u zy sk iw an e słowo języka. Słow o to zależy od w y b o ru sk ła d n ik ó w re g u ł p rzy za stę p o w an iu zm iennych m e tajęz y k o w y c h w y
stę p u ją c y c h w p o śred n ic h słow ach.
W celu zm n iejszen ia liczby re g u ł i u p roszczenia z a p isu B N F sto su je się czasem p ew n e k o n w e n c je sk ró tow e, np. reg u ły B N F w postaci:
1. V : : = Sj T , S 2 | S , T 2 S2 | . . . . | S , T„ S2 1 | 2. V : : = Si S 2 | S x Tj S2 | Si T 2 S2 1 . . . . | S, T„ S2 3. V ; : = U | VU
gdzie Tj, T 2, T n o znaczają dow olne n ie p u s te ') słow a, a S], S2 oraz U — dow olne słow a, m ożna za
pisyw ać w postaci:
1. V : : = s , fT , | T 2 | . . . . | Tn} S2 2. V : : = Sj [T, | . . . . j T„] S2 3. V : := U : : :
Z apis p o staci
V : : = Sj |T 2 ; T j| : : : S2 oznacza
V : := S, T , [(T2 T,} ; • : S 2
S tosując k o n w en c ję 3 m ożem y d ru g ą re g u łę z p o przed n ieg o p rz y k ła d u zapisać w n a stę p u ją c y sposób:
(liczba całkowita) : : = ( c y f r a ) : ::
T eo rety czn ą p o d sta w ą do b ad a ń opisów , podobnych do n o ta cji BN F, sta n o w i p ra c a C hom sky’ego [2]. W e
dług defin icji p o d an e j w te j p rac y , g ra m a ty k ę o k reśla się, p o d ając a lfa b e t zm iennych z w y ró żn io n y m sy m bolem początkow ym , a lfa b e t te rm in a ln y oraz zbiór p ro d u k c ji. P ro d u k c je o k reśla ją , w ja k i sposób m ożna p rze k szta łc ać w y ró ż n io n y sym bol n ie te rm in a ln y i o trzy m an e z niego słow a. K ażd ą p ro d u k c ję sta n o w ią dw a słow a połączone sym bolem ->, k tó ry ozn a
cza „m ożna p rzep isać ja k o ”. O gólna po stać p ro d u k c ji je s t n a stę p u ją c a :
a A /? -> a /? co;
gdzie a ,/? ,co są słow am i zbu d o w an y m i z dow olnych sym boli n ależ ąc y ch do a lfa b e tu zm iennych lu b a lfa b etu te rm in aln e g o , A je st sym bolem z alfa b e tu zm iennych.
C hom sky sk la sy fik o w ał g ra m a ty k i w edług d o d atk o w ych o g raniczeń sp e łn ia n y ch p rzez postać p ro d u k cji.
O k re ślił on w te n sposób cztery k la sy g ra m a ty k i o d pow iednio języków , p o n u m e ro w a n e k o le jn o od 0 do 3.
>) T z n . z a w ie r a j ą c e c o n a j m n ie j j e d e n s y m b o l z a lf a b e t u t e r m in a l n e g o lu b a lf a b e t u z m ie n n y c h m e t a j ę z y k o w y c h .
T ak w ięc fo rm u łu je się n a s tę p u ją c e ograniczenia:
• dla g ra m a ty k ty p u 0 nie w p ro w a d za się d o d a tk o w ych o g raniczeń n a postać p ro d u k cji,
® dla g ra m a ty k ty p u 1, zw an y ch g r a m a ty k a m i k o n t e k s t o w y m i, słow o co w żadnej p ro d u k c ji n ie m oże być słow em p ustym ,
• dla g ra m a ty k ty p u 2, zw anych g r a m a ty k a m i bez- lcontekstow ym i, w szystkie p ro d u k c je są postaci A —> co,
® d la g ra m a ty k ty p u 3, zw anych g r a m a ty k a m i r e g u la rn ym i, p ro d u k c je są p o sta c i A - > a B lub A -> a, gdzie A, B są sym bolam i z a lfa b e tu zm ien
nych a — sym bolem z a lfa b e tu term in aln e g o . K lasa języków , k tó re m ożna opisać w n o ta cji BNF, je s t k la s ą języków b ezkontekstow ych. K ażda re g u ła n o ta c ji B N F o k re śla ty le p ro d u k c ji g ra m a ty k i bez- k o n te k sto w ej, ile sk ła d n ik ó w z a w ie ra je j p r a w a s tr o na. L ew e stro n y ty c h p ro d u k c ji są id en ty cz n e z lew ą stro n ą reg u ły BN F, p ra w ą stro n ę k aż d ej p ro d u k c ji stan o w i je d en ze składników .
Jeżeli w alfa b ec ie zm iennych, o k reślo n y m p rzez zbiór reg u ł z poprzed n ieg o p rz y k ła d u , sym bolem w y ró żn io nym je s t (liczba całkowita), to ró w n o w a żn a g ra m a ty k a b ez k o n te k sto w a sk ła d a się z n a stę p u ją c y c h e le m entów :
• a lfa b e t zm iennych: (liczba całkowita), (cyfra) 9 alfa b e t te rm in a ln y : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
® zbiór p ro d u k c ji:
(liczba całkow ita) —> (cyfra)
(liczba całkow ita) -» (liczba ca łkow ita) (cyfra) (cyfra) -> 0
(cyfra) —> 1 (cyfra) -> 2 (cyfra) ->- 3 (cyfra) -> 4 (cyfra) -> 5 (cyfra) -> 6 (cyfra) -> 7 (cyfra) -> 8 (cyfra) -> 9
C echą is to tn ą g ra m a ty k i b ezk o n te k sto w ej je s t to, że zm ien n ą m e tajęz y k o w ą w p rz e k sz ta łc a n y m słow ie m ożna zaw sze za stą p ić p ra w ą s tro n ą o d pow iedniej p ro d u k c ji b ez w zględu n a to, ja k ie in n e sym bole w y stę p u ją w tym słow ie. N ie m a w ięc k o n tro li n ad ca
łością słow a, w szystkie p rz e k sz ta łc e n ia d o konyw ane są lo k a ln ie i niezależnie. W idać stąd, że form alizm te n nie n a d a je się do o p isy w a n ia in te g ra ln y c h cech, ta k ic h np. ja k żąd an ie, by u ży w a n e w p ro g ra m ie zm ienne były uprzed n io zad ek laro w an e.
Próby utw orzenia nowego aparatu syntetycznego opisu składni
A p a ra t g ra m a ty k b ezk o n te k sto w y ch je s t zb y t m ało p rec y z y jn y dla w y ra ż e n ia n ie k tó ry c h cech języka.
Z kolei zarów no ję zy k i ty p u ' 1 bez d odatkow ych ograniczeń, ja k i ję zy k i ty p u 0 w y m a g a ją dość zło
żonych alg o ry tm ó w ro zb io ru , p rzy czym dla języków ty p u 0 w ogólnym p rz y p a d k u nie istn ie ją alg o ry tm y w y k ry w a n ia błędów sy n ta k ty c z n y c h [2], Z te g o p o w odu now e fo rm a liz m y p o ja w ia ją c e się w lite ra tu rz e służą zazw yczaj do o p isy w an ia p e w n y c h szczególnych k las języków ty p u 1. O m ów im y te ra z n ie k tó re z tych propozycji.
J a k ju ż w spom inaliśm y, tru d n o ść w zastosow aniu g ra m a ty k b e z k o n te k sto w y ch polega zw ykle nie na tym , że nie m ożem y za pom ocą g r a m a ty k i bezk o n te k sto w ej o trzy m ać nap isó w o żąd an y c h w łasnościach, lecz n a tym , że nie da się sfom ułow ać ograniczeń, k tó re pozw oliłyby tw o rzy ć w yłączn ie n ap isy o ż ą d a n ych cechach. Is tn ie ją p ró b y fo rm aln eg o sfo rm u ło w a
n ia ta k ic h ograniczeń. W tra k c ie p rz e k sz ta łc a n ia słów