učebné texty k maturitnej skúšky z informatiky texty...algoritmizácia a programovanie –...
TRANSCRIPT
Učebné texty k maturitnej skúšky z Informatiky
(časť – Algoritmy a programovanie)
Algoritmizácia a programovanie – učebné texty 1
Učebné texty – Algoritmizácia a programovanie ............................................................ 7
1.1. Základné pojmy ....................................................................................................... 7
1.2. Premenná ................................................................................................................. 8
1.3. Priraďovací príkaz ................................................................................................... 9
1.4. Príkaz vstupu .......................................................................................................... 11
1.5. Príkaz výstupu ........................................................................................................ 12
1.6. Údajový typ ............................................................................................................ 13
1.6.1. Typ INTEGER .................................................................................................... 13
1.6.2. Typ REAL ........................................................................................................... 14
1.7. Deklarácia premenných ......................................................................................... 14
1.8. Aritmetické operácie .............................................................................................. 14
1.9. Číselné funkcie ...................................................................................................... 16
1.10. Stavba programu .................................................................................................... 16
1.10.1. Formáty zápisu reálnych čísiel ........................................................................... 18
1.11. Podmienený príkaz ................................................................................................ 19
1.12. Zložená podmienka ............................................................................................... 21
1.13. Cyklus FOR ........................................................................................................... 22
1.14. Spracovanie postupnosti ........................................................................................ 24
1.15. Hľadanie maxima (minima) postupnosti ............................................................... 26
1.16. Cyklus WHILE ...................................................................................................... 27
1.16.1. Zacyklenie ........................................................................................................... 28
1.17. Typ CHAR ............................................................................................................ 29
1.18. Cyklus REPEAT ................................................................................................... 30
1.18.1. Rozdiely medzi cyklom REPEAT a WHILE ..................................................... 31
1.19. Typ BOOLEAN .................................................................................................... 32
1.19.1. Zisťovanie vlastnosti postupností ....................................................................... 33
1.20. Príkaz CASE ......................................................................................................... 34
1.21. Vnorené cykly ....................................................................................................... 35
1.22. Výstup na textovú obrazovku ................................................................................ 37
1.23. Unit CRT ............................................................................................................... 38
1.24. Vstup z klávesnice ................................................................................................. 39
1.25. Knižnica CRT – vstup z klávesnice ...................................................................... 41
1.26. Kontrolovaný vstup ............................................................................................... 44
1.27. Podprogram ........................................................................................................... 45
Algoritmizácia a programovanie – učebné texty 2
1.27.1. Lokálne a globálne premenné ............................................................................. 47
1.27.2. Používanie premenných a podprogramov ........................................................... 48
1.28. Ponukový program ................................................................................................ 48
1.29. Typ pole................................................................................................................. 50
1.30. Deklarácia konštánt ............................................................................................... 54
1.31. Deklarácia typu ..................................................................................................... 56
1.32. Vymenovaný typ ................................................................................................... 57
1.33. Typ interval ........................................................................................................... 58
1.34. Typ reťazec ........................................................................................................... 61
1.35. Vyhľadávanie ........................................................................................................ 63
1.36. Textový súbor ........................................................................................................ 65
1.36.1. Chybové hlásenia pri práci s textovým súborom ................................................ 69
1.37. Generovanie náhodných údajov ............................................................................ 71
1.38. Štandardné procedúry a funkcie pre typ STRING ................................................ 73
1.38.1. Príklady ............................................................................................................... 75
1.39. Procedúry s parametrami ....................................................................................... 76
1.39.1. Parameter ............................................................................................................ 78
1.40. Funkcia .................................................................................................................. 81
1.41. Triedenie................................................................................................................ 82
1.41.1. Triedenie cez maximum – MAXSORT .............................................................. 83
1.41.2. Triedenie prebublávaním – BUBBLESORT ...................................................... 84
Algoritmizácia a programovanie – učebné texty 3
Učebné texty – Algoritmizácia a programovanie
1 .1 . Základné pojm y
A l go r i t mus j e po s t up r i e š en i a n e j ak éh o p ro b l ém u ( po s t up nosť
p r ík azo v , k to r é p r oce s o r do k áže z r ea l i zo v ať a k t o r é v edú k v yr i e š en iu
d an éh o p ro b l ém u) .
A l go r i t mus j e p os tu p t r an s fo rm ác i e v s t up n ých d á t na v ýs t u pn é
( v s t up né d á t a s ú t i e , k t o r é p r o ces o r u n a z ač i a t ku z adáv am e , v ýs t up né
s ú v ýs l ed k y, k t o r é v yp o č í t a . )
V l as tno s t i a l go r i tmu :
1 . h ro madn os ť - a l go r i tm us r i e š i n i e j ed en ko nk r é t n y p r o b l ém ,
a l e c e lú sk up i nu ú lo h po do bn ého ch a r ak te r u . N apr . nem á
v ýz n am v yr áb ať a lgo r i t mu s p r e r i e š en i e ko nk r é t n e j kv ad ra t i cke j
r o vn ice x2+5x +6=0 , a l e môž em e v yr o b i ť a l go r i tmu s p re r i e š en ie
k v ad r a t i ck e j ro vn i ce s ľu bo voľ n ým i ko e f i c i en t ami ax2+bx +c=0 ,
k d e ko e f i c i en t y a , b , c s a z ad a j ú ako v s t up n é d á t a .
2 . d e t ermin i s t i cko sť ( p od mi en eno sť ) - v k až dom ok am ih u výp o č tu
j e p re sn e u rčen á o p e r ác i a , k to r á s a m á v yk o n ať (n i č n i e j e
p o nech an é n a náho d u , v a l go r i tm e s a n ev ys k yt u j ú n áho dné
o p e r ác i e ) .
3 . rezu l ta t í vn os ť (ko n ečn osť ) - v ýp o če t p odľ a a l go r i tm u s a
s ko n č í p o ko n ečnom p o č t e k ro ko v .
P ro gr am j e a l go r i t mu s z ap í s an ý v p r o gr am ov acom j az yk u . J e t o
p os tu pn osť d ek l a r ác i í a p r ík az ov v yj ad r u jú ca p os t up t r an s fo rm ác ie
v s t up n ých d á t n a výs t u p n é .
P ro gr amo v ac í j az yk - j az yk , k to r ému p o č í t a č r oz um i e ( t . j . j az yk ,
k to r ém u r ozu mi e sám p r o ceso r , a l ebo k t o r ému roz umi e p o č í t a č l en
v t ed y, ak m á k d i sp oz í c i i p r í s lu šn é p r o gr am ov é v yb av en i e -
p r ek l ad ač ) .
Algoritmizácia a programovanie – učebné texty 4
P r o g r a m o v a c í j a z y k , k t o r é m u r o z u m i e p r i a m o p r o c e s o r s a n a z ý v a s t r o j o v ý k ó d .
P r o g r a m v t o m t o j a z y k u t v o r í p o s t u p n o s ť e l e k t r i c k ý c h s i g n á l o v k ó d o v a n ý c h
p o m o c o u j e d n o t i e k a n ú l . Z á p i s p r o g r a m u j e n e p r e h ľ a d n ý a r o z s i a h l y . V y š š i e
p r o g r a m o v a c i e j a z y k y s ú b l i ž š i e j a z y k u č l o v e k a , z r o z u m i t e ľ n e j š i e a z á p i s
p r o g r a m u j e s t r u č n e j š í . P r o c e s o r a l e t o m u t o j a z y k u n e r o z u m i e , p r e t o j e
p o t r e b n ý p r e k l a d a č , p r o g r a m , k t o r ý p r e l o ž í p r o g r a m z v y š š i e h o
p r o g r a m o v a c i e h o j a z y k a d o s t r o j o v é h o .
Gra ma t ik a p rog ramo v a c i eho j a zyk a : t v o r í j u
1 . m n ož i na s ym bo lo v p r í pu s t n ých p r e z áp i s p r o gr am u ( nap r . v
P as ca l e s ú p r íp us tné s ym b o l y: b eg i n , * , : = , A , B , C , . . . )
2 . m n ož i na pr a v id i e l s p á j an i a t ých t o s ym b o lo v do j az yk o v ých
k o nš t r uk c i í , t zv . s yn ta x pr ogr a mo va c i eh o j az yka . ( N apr .
k o nš t r uk c i a A:=begin j e z lož ená z p r í pu s tn ých s ym bo lov ,
a l e n i e j e v yt v o r ená po dľ a s yn t ak t i ckých p r av i d i e l . )
S éman t ika p rog ramo v a c i eho ja zyka j e l o g i ck ý v ýz n am j az yk o v e j
k o nš t r uk c i e v yt vo r en e j p odľ a s yn t ak t i ck éh o p r av i d l a .
N ap r . s yn t ak t i ck é p r av id lo <premenná>:=<výraz> m á lo g i ck ý
v ýz n am ( s ém an t i ku ) : v ýr az n a p r av e j s t r an e s a v yh o d n o t í a v ýs l ed ok
s a p r i r ad í p r em en ne j n a ľ av e j s t r an e .
1 .2 . Prem enná
P o č í t a č sp r acov áv a d á t a (n apr . č í s l a , zn ak y, . . . ) , k to r é sú u lož en é v
p am ät i v t zv . p r emen n ých .
Premen n á j e ob j ek t ozn ačen ý m en om ( id en t i f i k á t o rom) , k to r ý m á
u r č i tú h od no tu . Ho d no t a p r em enn e j s a môž e v p r i eb ehu v ýp o č t u
m en iť .
I dent i f iká t o r ( m eno , náz ov ) j e r eť az ec ( p os t up no sť z nako v ) z l ožen ý
z p í sm en , č í s l i c a po d č i a rk ov n í k a ( _ ) . P r v ý z n ak n e smi e b yť č í s l i c a .
M a lé a v eľk é p í sm en á s a n e roz l i š u j ú .
Algoritmizácia a programovanie – učebné texty 5
I d e n t i f i k á t o r o m s a o z n a č u j ú n i e l e n p r e m e n n é , a l e a j o s t a t n é o b j e k t y v
p r o g r a m e , o k t o r ý c h s a b u d e m e u č i ť n e s k ô r : k o n š t a n t y , t y p y , p o d p r o g r a m y i
s a m o t n ý p r o g r a m .
P r í k l ad y p r í p us tn ých i d en t i f i k á to r ov : A , S UMA , C IS LO 3 ,
N O V Y_ C LE N
P r í k l ad y n ep r í pu s t n ých i d en t i f i k á to r ov : 3 C IS LO , A - BO D , C*
D o p o r u č e n i e : N á z o v p r e m e n n e j v o l í m e t a k , a b y n a p o v e d a l , č o d a n á p r e m e n n á
o b s a h u j e . A k c h c e m m a t v p r e m e n n e j u l o ž e n é n a p r . č í s l o p o s c h o d i a , n a z v e m j u
C I S L O _ P O S C H , a l e b o C _ P O S C H , a l e b o C P .
1 .3 . Priraďovací pr íkaz
Sl úž i n a p r i r ad en i e h od no t y p r em en n e j .
S yn ta x: <p remenná > : = <v ý ra z>
Z á t v o r k y < > s ú l e n p o m o c n é z n a k y o z n a č u j ú c e , ž e m i e s t o s y m b o l u v t ý c h t o
z á t v o r k á c h b u d e m e p í s a ť t o , č o d a n ý s y m b o l v y j a d r u j e . N a p r . m i e s t o s y m b o l u
< p r e m e n n á > n a p í š e m e k o n k r é t n u p r e m e n n ú , n a p r . X . V š e t k o , č o j e m i m o t ý c h t o
o s t r ý c h z á t v o r i e k m u s í b y ť v p r í k a z e n a p í s a n é p r e s n e t a k , a k o v s y n t a k t i c k o m
p r a v i d l e .
<v ýr az > m ôž e b yť a r i tm e t i ck ý v ýr az , t ak ako h o p ozn áme z
m at em at i k y z l ož en ý z k on š t án t a p r em enn ých , o p e r á to rov :
+ ( s č í t an i e ) , - ( odč í t an i e ) , * (n á so ben i e ) , / ( de l en i e ) , o k rú h l ych
z á t vo r i ek , . . . .
<v ýr az > t eda m ôž e b yť :
k o nš t an t a ( 3 , - 25 , 4 . 51 )
p r em enn á ( I , C IS LO 5 )
z l ož i t e j š í a r i tm et i ck ý v ýr az ( I+1 , A*B+5 )
S éman t ika : ho dn o ta v ýr az u n a p rav e j s t r an e sa u l ož í do p r em enn e j n a
ľ ave j s t r an e .
Algoritmizácia a programovanie – učebné texty 6
Z a t i a ľ b u d e m e d o p r e m e n n ý c h p r i r a ď o v a ť l e n č í s e l n é h o d n o t y , n e s k ô r b u d e m e
p r a c o v a ť a j s i n ý m i t y p m i ú d a j o v .
P r í k l ad y p r i r aďo v ac í ch p r ík azo v :
A : = 5 d o p r em en n e j A s a u lož í h od no t a 5
A : = B + 3 d o p r em en n e j A sa u l ož í ho dn o t a o 3 v äč š i a n ež j e v
p r em enn e j B
A : = A + 1 h o dn o t a p rem en ne j A s a zv ýš i o 1
A : = A * 2 h o dn o t a p rem en ne j A s a zd vo jn á so b í
Pr í k l ady :
1 . V p r em enn e j A j e u lož ená d ĺ ž k a s t r an y š t v o rca . D o p r em enn e j
O BV ch ceme p r i rad i ť č í s e l nú h od no tu o bv od u š t vo r ca a d o
p r em enn e j O BS č í s e ln ú h od no t u o bs ahu š tv o rca . Po už i j eme
p r ík az y:
O BV : = 4 * A;
O BS : = A * A ;
A k m á m e v i a c p r í k a z o v v p o s t u p n o s t i , o d d e ľ u j e m e i c h b o d k o č i a r k o u .
D o z l o ž e n ý c h z á t v o r i e k z a p í š e m e z a č i a t o č n ý a k o n e č n ý s t a v p r e m e n n ý c h .
2 . { A , B s ú r ozm er y o b d ĺž n ik ov e j z áh r ady}
P : = A * B ;
{ P j e p lo ch a z áh r ady}
Ú l ohy p re vás - dop lň t e p r i r aď ov ac i e p r ík az y:
1 . { R . . p o l om er k r uhu }
? ? ? ? ?
{ O BV . . ob vo d k ruh u , O BS . . ob sah k r u hu }
Algoritmizácia a programovanie – učebné texty 7
2 . { T 1 , T2 , T 3 . . t r i t ep lo t y n am er an é r án o , n a o b ed a v eče r}
? ? ? ? ?
{ PR IE M _ TEP L . . p r i em ern á d enn á t ep l o t a}
3 . { A = }
T e n t o z á p i s z n a m e n á , ž e v p r e m e n n e j A j e n e j a k á č í s e l n á h o d n o t a , v o
v š e o b e c n o s t i s m e j u o z n a č i l i }
? ? ? ? ?
? ? ? ? ?
{ A = 3 * , B = 1 2 * }
4 . M iš ko m á M j ab ĺk a J an ko J j ab ĺk . Zap í š t e po mo cou
p r i r aď ov ac ích p r í kazo v :
o J ank o do s t a l o 5 j ab ĺk v i ac ak o Miš ko
o M iš ko z j ed o l vš e tky j ab lk á
o J ank o d a l 3 j ab l k á M iš ko v i
o J ank o d a l Mi šk ov i t oľk o j ab ĺ k , ab y m al i ro vn ako
5 . * {A = , B = }
? ? ? ? ?
{ A = , B = }
1 .4 . Príkaz vs tupu
s lúž i n a p r i r ad en i e h o dn o t y p r em en n e j zo vs tu pn ého z a r i ad en i a (n ap r .
z k l ávesn i ce ) .
S yn ta x: r ead ln ( <zo zn a m p remenn ých> )
<zoz n am p r em en n ých > j e po s t up no sť p r em enn ých o dd e l en ých
č i a rk ami .
S éman t ika : d o pr em en n ých u v ed ených v p r ík az e u lož í ho dn o t y
z ad an é z k l áv es n i ce . ( Ak sú to č í s e l né h od no t y, m ôž u byť z ad an é v
j edn om vs tu pn om r i adk u od d e l en é m edz e r am i . )
Algoritmizácia a programovanie – učebné texty 8
N ap r í k l ad : p r í kaz r e ad ln ( A, B , X3 ) zn a m en á , ž e po č í t a č ča ká na
z ad an i e t ro ch h od nô t z k lá ve sn i ce . P rvú u l ož í d o pr em enn e j A , d r uhú
d o pr em en n e j B a t r e t iu d o pr em en n e j X 3 .
1 .5 . Príkaz výs tupu
s lúž i n a v yp í s an i e h o dn ô t n a ob r azo vku .
S yn ta x: w r i te ln ( < zo zna m pa ra met ro v> )
<zoz n am p a r am et r ov > j e po s t up nos ť pa r am et ro v o dd e l en ých č i a r k ami .
P a r am et ro m môž e byť :
1 . č í s lo (5 , 4 . 3 )
2 . p r em enn á (A , B4 )
3 . a r i t me t i ck ý v ýr az (A +4 , B+C *7 )
4 . t ex t v apo s t ro f ách ( 'M A M A MA E M U ')
S éman t ika : po č í t ač v yp í š e do j ed n ého r i ad k u na o b r azov k e :
1 . d an é č í s l o
2 . h o dn o tu d an e j p r em enn e j
3 . v ýs l ed nú h od no t u dan ého v ýr az u
4 . d an ý t ex t b ez apos t r o f
N ap r í k l ad p r í ka z :
w r i t e l n ( 'K r uh s po lo mer om ' , R , ' m a p lo chu ' , 3 . 14 *R *R ) m á 4
p ar a m et r e : t e x t , p rem en nú , t e x t a v ýra z . Za pr edp o k la du ž e p r em enn á
P má h od no tu 1 0 vyp í š e n a obr az o vku n as l edo vné :
K r u h s p o l om ero m 1 0 m a p lo chu 3 14
Algoritmizácia a programovanie – učebné texty 9
Pr í k l ad :
Č o v yp í šu n a o br azo vk u n a s l ed ov n é p r ík az y, ak j e v p r em en n e j M
h o dn o t a 5?
{ M =5 }
w r i t e l n ( 'Mis ko m a M j ab lk . ' ) ;
w r i t e l n ( 'Mis ko m a ' , M, ' j ab lk . ' ) ;
w r i t e l n ( 'Mis ko m a M ' , j ab lk . )
1 .6 . Údajový t yp
Ú d aj ov ý t yp u r ču j e :
m nož i nu p r íp us t n ýc h ho dn ô t
m nož i nu p r íp us t n ýc h op e r ác i í
K a ž d á p r e m e n n á p o u ž i t á v p r o g r a m e m u s í m a ť u r č e n ý t y p . T y p u r č u j e , a k é
h o d n o t y m ô ž e m e d o p r e m e n n e j p r i r a ď o v a ť a a k é o p e r á c i e s ň o u m ô ž e m e
v y k o n á v a ť . P r e z a č i a t o k s a z o z n á m i m e s d v o m a č í s e l n ý m i t y p m i - i n t e g e r a r e a l .
1.6.1. Typ INTEGER
Mn ož ina ho dnô t : ce l é č í s l a z i n t e r va lu -3 2 76 8 . . +3 2 767
Pr í pus tn é op erá c ie : a r i tm et i ck é ( + - * / div mod ) a r e l ačné
( < > = <> <= >= )
D i v a mo d s ú op er á to r y ce l o č í se ln éh o d e l en i a . Op e r ác i a d i v v r á t i
c e l oč í s e l n ý p o d i e l a o p er ác i a mo d v r á t i zv yš o k p o ce l oč í s e l nom
d e l en í .
V ma t em at i k e z ap í šem e o pe r ác i u ce l o č í s e ln ého d e l en i a t ak to :
2 7 : 6 = 4 zv yš o k 3
A v P as ca l e t ak t o :
2 7 d i v 6 = 4
Algoritmizácia a programovanie – učebné texty 10
2 7 mo d 6 = 3
1.6.2. Typ REAL
Mn ož ina ho dnô t : re á l ne č í s l a
Pr í pus tn é op erá c ie : a r i t me t i ck é ( + - * / ) a r e l ačn é ( < >
= <> <= >= )
1 .7 . Deklarácia preme nných
D ekl a r ov ať p r em enn ú zn am en á u r č i ť j e j t yp .
S yn ta x d ek l a rá c ie : v ar < premenn é> : < typ >
N ap r í k l ad :
var A:integer;
B,C,D:real;
E:integer
Prípustné
priradenia:
A:=-10;
E:=20000;
B:=7;
C:=4.345
Neprípustné
priradenia:
A:=1000000;
E:=2.5
1 .8 . Ar i tm etické operácie
V o v ýr az e A + B naz ýv am e j ed no t l i v é p rv k y t ak to : A , B s ú o pe r and y
a + j e o p er á to r . A k sú ob a o p e ran d y t yp u i n t ege r ( c e l é č í s lo ) ,
v ýs l ed ok v ýr az u j e t i ež t yp u i n t ege r ( c e l é č í s l o ) . A k ého t yp u b ude
v ýs l ed ok p r e o s t a tn é op e r ác i e a t yp y o p e rand ov uk az u je n a s l ed u jú ca
t abuľ k a :
Algoritmizácia a programovanie – učebné texty 11
V ýr az : T yp o p e r an du A : T yp o p e r an du B: T yp v ýs l ed ku :
A + B
A – B
A * B
i n t ege r
i n t ege r
r e a l
r e a l
i n t ege r
r e a l
i n t ege r
r e a l
i n t ege r
r e a l
r e a l
r e a l
A / B i n t ege r , r e a l i n t ege r , r e a l r e a l ( vžd y)
A d i v B
A mo d B i n t ege r i n t ege r i n t ege r
Zl ož i t e j š í v ýr az o b s ah u j ú c i v i ac op er á to r ov s a v yh o d no cu j e t ak , ž e
o p e r ác i e * / d i v mo d m aj ú v yš š iu p r io r i t u ak o + - . P r io r i t u
ľ ub ov oľn e j o p e r ác i e z v ýš i m e p omo cou o kr úh l ych z á t vo r i ek .
Pr í k l ad č . 1 :
M áme z ad ek l a ro v an é p r em enn é :
var A,B,C:integer;
D,E:real
U r č t e t yp y t ých t o výr az o v :
a) A + D
b) (A + B) * C
c) (A + B) / C
d) (A - C) * (C + E)
e) B div 5 + E
f) B div (5 + E)
g) A / B div C
Pr í k l ad č . 2 : M áme z ad ek l a r ov an é p rem enn é :
var A,B,C:integer;
D,E:real
U r č t e , k t o r é p r i r aďo v ac i e p r í kaz y s ú nep r í pu s t n é :
a) D := A / B
b) D := A div B
c) A := C / D
d) A := C div D
e) E := C / D
Algoritmizácia a programovanie – učebné texty 12
1 .9 . Číselné funkcie
A k ch cem e č í s l o A u m o cn i ť na d r uh ú , v m a t em at i k e to z ap í š em e: A2.
V P asca l e t o z ap í š em e pom o co u fu n kc i e SQ R ( A) . A s a n az ýv a
p a r am e t r om fu nk c i e . A k j e p a r ame t ro m t e j t o f un kc i e č í s lo 4 ,
d os t an em e ako v ýs l edo k 1 6 . Ak j e p a r am et e r t yp u in t ege r , v ýs l ed ok
j e t i ež t yp u i n t ege r . P ouž i t i e n i ek to rých f u n ck i í , t yp i ch a r gu mentov
a v ýs l ed k ov p op i su j e t á t o t abuľ k a :
Po p i s : Fu nk ci a : T yp
p a ra met ra :
T yp
v ýs l edku : Pr í k l ad :
ce l á č a sť č í s l a T R UNC ( A ) r ea l , i n t ege r i n t ege r T R UNC ( 2 . 7 )=2
z ao k rú h l en ie R O UN D ( A) r ea l , i n t ege r i n t ege r R O UN D (2 .7 ) =3
ab so lú t n a
h o dn o t a A BS ( A) r ea l , i n t ege r
r e a l ,
i n t ege r A BS ( -7 .1 ) =7 .1
d r uh á m ocn i n a S QR ( A) r ea l , i n t ege r r e a l ,
i n t ege r S QR (4 ) =16
d r uh á
o dm o cn i n a S QR T( A ) r ea l , i n t ege r r e a l S QR T( 16 ) =4
s ín us S IN ( A ) r ea l , i n t ege r r e a l S IN ( 0 ) =0
co s í nu s C OS ( A) r ea l , i n t ege r r e a l C OS (0 ) =1
a r cu s t an gen s A RC TA N ( A ) r ea l , i n t ege r r e a l A RC TA N (0 ) =0
1 .10. Stavba program u
program <meno> h l a v i č k a p r o g r a m u
<deklarácie>; d e k l a r a č n á č a s ť
begin
<príkaz>;
<príkaz>;
...
<príkaz>
end.
p r í k a z o v á č a s ť
Algoritmizácia a programovanie – učebné texty 13
M eno p r o gr am u j e i den t i f i k á t o r , ak o s me s i h o o p í s a l i v č as t i
"P r em enn á" . N ázov p ro gr amu v o l ím e po dľ a t oh o , ak ý p r o b l ém
p r o gr am r i e š i . P ro gr am n a v ýp o če t mi ez d môž em e n ap r . naz v ať
M ZD Y , a l eb o VY PO C ET _M IE ZD
T e n i s t ý i d e n t i f i k á t o r n e m ô ž e m e p o u ž i ť n a o z n a č e n i e d v o c h r ô z n y c h o b j e k t o v ,
n a p r . p r o g r a m u i p r e m e n n e j . V o p a č n o m p r í p a d e z a h l á s i p o č í t a č c h y b u :
„Duplicate identifier“ ( d u p l i k o v a n ý i d e n t i f i k á t o r ) .
V d ek l a r ačn e j č a s t i z ap i su j em e d ek l a r ác i e p r emenn ýc h ( n es kô r i
i n ých o b j ek to v ) , k to r é bu dú po už i t é v p r ík azo v e j č as t i . A k b y s m e v
p r ík azo v e j č as t i po už i l i p r em e nn ú , k t o rú s m e zabu d l i z ad ek l a ro v ať ,
p o č í t a č b ud e h l ás i ť ch yb u : „Unknown identifier“ ( n ezn ám y
i d en t i f i k á to r ) .
Pr í k l ad : Mi šk o k r áča l do šk o l y r o v n om ern ou r ých l os ťo u V m e t r ov za
s eku nd u . Ak o d lh o m u t r v a l a c e s t a , ak j e šk o l a vzd i a l en á S m e t ro v?
Ú l o h o u p r o g r a m u j e p r e d a n é v s t u p n é h o d n o t y V a S v y p o č í t a ť v ý s t u p n ú h o d n o t u
T - č a s t r v a n i a c e s t y d o š k o l y . V s t u p n é a v ý s t u p n é h o d n o t y j e d o b r é z a p í s a ť s i
u ž n a z a č i a t k u r i e š e n i a p r o b l é m u . V s t u p n é h o d n o t y p r o g r a m n a č í t a , v ý s t u p n é
v y p í š e a k o v ý s l e d o k .
{ VS T: V . . r ých l o s ť p o h yb u ( r eá l ne č í s lo ) , S . . d r áh a ( r eá l n e č í s lo )}
{ V ÝS: T . . č a s t r v an i a p oh yb u ( r eá ln e č í s lo ) }
program CESTA_DO_SKOLY;
var V,S,T:real;
begin
readln(V,S);
T:=S/V;
writeln('Miskovi trvala cesta ',T,' sekund.')
end.
T ak t o z ap í s an ý p r o gr am j e sp r ávn y. K eď s i h o vš ak s pu s t í m e n a
p o č í t a č i , z i s t ím e , ž e m á u r č i t é ch yb i čk y k rás y :
1 . K eď p ro gr am s pu s t í m e , po č í t a č n a j s kô r č ak á n a z ad an ie
v s t up n ých h o d n ô t V a S . N ez a i n t e r eso v an ý u ž í va t eľ vš ak n e tu š í ,
Algoritmizácia a programovanie – učebné texty 14
p r ečo s a p r o gr am h n eď na z ač i a tk u "z as eko l " . P r e t o j e v h od né
p r ed k ažd ým p r í k azo m r ead ln v yp í s ať na ob r azo vk u v ýzv u p re
už ív a t eľ a , čo m á z ad ať , n apr . :
writeln('Zadaj rychlost a drahu!');
readln(V,S);
a l ebo k r a j š i e :
writeln('Zadaj rychlost!');
readln(V);
writeln('Zadaj drahu!');
readln(S);
2 . K eď v ýp o če t s ko nč í , po č í t a č v yp í š e v ýs l ed o k n a o b r azo vku ,
n e s t i hn eme s i ho an i p reč í t ať a h n eď s a o b r azo vk a p r ep n e do
ed i to v ac i eh o r ež im u . Ak ch cem e, ab y p o v yp í s an í v ýs l edku
p o č í t a č p o čk a l , mu s í me ho k t om u p r i nú t i ť . A ko po s l edn ý
p r ík az p ro gr amu dám e "p r áz dn y" r ead ln . T en to p r ík az n e bu de
n i č n ač í t av ať , l en po čk á , až už ív a t eľ s t l a č í En te r .
3 . P o s pu s t en í p ro gr am u z i s t í m e , ž e n ám p o č í t a č v yp í s a l v ýs l ed ok
a s i v t ak om to tv a r e : 2 . 12 34 56 000 0 E +0 2 . P r e bežn ého
p o už ív a t eľ a j e možn o t ak ýt o tv a r n ez roz umi t eľn ý, p r e t o b y s m e
h o m al i p r e f o r m áto v ať . O f o rm át ov an om v ýs t u p e sa do č í t a t e
ď a l e j .
1.10 .1 . Formáty záp isu reá lnych č íse l
R eál n e č í s l o m ôž em e zap í s ať dv om a s pô so bmi :
b ež n ý t v a r ( ako h o p ozn áme z m at em at i k y) , n ap r . : 0 . 00 123
s emi l o ga r i t mi ck ý t v a r ( ak o ho p ozn ám e z k a l ku l ačk y) , n ap r . :
1 . 23 E- 3
Algoritmizácia a programovanie – učebné texty 15
H o dn o t a t a k t o z ap í s an éh o č í s l a j e : 1 . 23 E - 3 = 1 , 23 . 1 0- 3
=
0 , 00 12 3
A k p ouž ív am e v p ro gr am e p r em en nú typ u r ea l a nech áme ju v yp í s ať
n a o b raz ov ku , po č í t a č j u v yp í š e v semi lo ga r i tm ick om t v ar e . Ak ju
n ech ám e v yp í s ať v p r ed p í s ano m f o r má t e , v yp í š e j u v bežn om tv a re .
Fo rmá t o v aný vý s tup : v p r í k az e wr i t e l n z ap í š em e z a p r í s lu šn ý v ýr az
d v o jb od ku a c e l kov ý p o če t m i es t p r e v ýp i s , r e sp . ď a l š iu d vo j bo dk u a
p o če t d es a t in n ých m ie s t .
var A:integer;
B:real;
begin
A:=-25;
B:=8.4E-2;
writeln('Cisla su', A:7 , B:10:4)
end.
P ro gr am v yp í š e č í s l o -2 5 n a s ed em mi e s t , t . z n . do p ln í š t yr i m edze r y
z ľ av a a č í s lo 0 .0 84 n a d e sať m i es t , z t o ho b ud ú 4 d e sa t i nn é , t . zn .
d o p ln í j edn u nu lu sp r av a a š t yr i medz er y z ľ av a :
Cisla su -25 0.0840
1 .11. Podmienený pr íkaz
- p r ík az , k to r ého vyk o n an i e j e v i az ané n a sp ln en i e u r č i t e j p odm i en k y.
P odm i en en ý p r í k az j e š t ru k t ú ro van ý p r í kaz , t o zn am en á ž e j e z l ož en ý
z i n ých j ed no du chš í ch p r ík az ov .
S yn ta x:
if <logický výraz>
then <príkaz>
else <príkaz>
<l o gi ck ý v ýr az > j e v ýr az , k t o r éh o v ýs l ed n á ho dn o t a j e ' p rav d a ' a l eb o
' n ep r avd a ' . Môž e t o b yť po dmi enk a zap í s aná v t v a r e : A < B alebo
C*10 <= D a pod.
Algoritmizácia a programovanie – učebné texty 16
<p r í k az > j e ľu b ov oľ n ý p r í k az (p r i r aď ov ac í , p r í k az v s t up u , v ýs t u pu ,
p o dmi en en ý p r í k az , . . . )
S éman t ika : A k j e l o g i ck ý v ýr az (p odm ienk a ) p r av d i v ý, v yk o n á
p r ík az n a v e tv e ' t hen ' , ak j e n ep r avd iv ý, v yk o n á p r ík az n a v e tv e
' e l s e ' .
Pr í k l ad :
if A mod 2 = 0
then writeln('Cislo ',A,' je parne.')
else writeln('Cislo ',A,' je neparne.')
T e n t o p r í k a z p o d ľ a h o d n o t y z v y š k u p o d e l e n í č í s l a A d v o m a v y p í š e , ž e č í s l o A j e
p á r n e , r e s p . n e p á r n e .
N eúpln ý p od mi en en ý p r í ka z - b ez v e tv y e l s e :
if <logický výraz>
then <príkaz>
A k p o d m i e n k a p l a t í , v y k o n á s a u v e d e n ý p r í k a z , a k p o d m i e n k a n e p l a t í , p r í k a z s a
n e v y k o n á .
M ôž e s a s t ať , ž e ak po dm ienk a p l a t í , ch cem e ab y s a v yk o n a l n i e
j ed en , a l e v i ac p r ík az ov . Al e n a v e tv u t h en ( t o i s t é p l a t í p r e e l s e )
m ôž em e dať l en j ed en p r ík az . V t omt o p r íp ad e m us ím e vš e t k y
p r ík az y, k t o r é ch cem e m ať n a j edn e j v e t v e , z j ed no t i ť d o j ed n ého
z l ožen éh o p r ík az u - s ekv en c i e - ozn ačen e j s ym b o lmi b eg in a end :
begin
<príkaz>;
<príkaz>;
...
<príkaz>
end
Pr í k l ad :
{A=20, B=10}
if A<=B
then begin A:=A+1;
B:=B-A
end
else begin B:=B+1;
Algoritmizácia a programovanie – učebné texty 17
A:=A-B
end
{A=?, B=?}
R i e š e n i e : p o d m i e n k a A < = B s a v y h o d n o t í a k o n e p r a v d i v á , p r e t o ž e 2 0 n i e j e
m e n š i e a n i r o v n é a k o 1 0 , p r e t o s a v y k o n a j ú p r í k a z y n a v e t v e e l s e . K o n e č n é
h o d n o t y p r e m e n n ý c h b u d ú A = 9 , B = 1 1 .
Pr í k l ady p re vá s :
1 . J ank o m á z áh r ad u s r ozm er mi A x B m et r ov , Mi šk o m á z áh r adu
s r ozm ermi C x D m et r ov . P ro gr am n ač í t a A , B,C , D a v yp í š e , k to
m á v äčš iu záh r ad u ( s v äčš ou p lo cho u) .
2 . P ro gr am n ač í t a č í s l o a v yp í š e n a o b razo vk u j eh o v l as t no s t i : č i
j e c e l é /m á d es a t in n ú časť , k l ad n é /z áp o rn é / nu la . N apr . č í s l o
2 5 .3 1 j e k l adn é s de s a t in no u čas ťo u , -8 j e z ápo r n é ce l é , a p od .
3 . M iš ko s J an ko m s úť až i l i v ho d e guľou . K ažd ý m a l dv a p o kus y,
z k to r ých s a p o č í t a l t en l epš í . V yt v or t e p ro gr am, k t o r ý n ač í t a
h o dn o t y p o k us ov o b och p r e t ek á r ov a v yp í š e , k t o r ý z n i ch
v yh r a l .
1 .12. Zložená podmienka
j e z l ož en á z j ed n od uchš í ch po dm ieno k s po už i t ím lo g i ck ých
o p e r á to r ov A N D (k o n ju nk c i a ) , OR (d i s j u nk c i a , a l t e rn a t ív a ) , N OT
( n egác i a ) . S pôs ob v yh o d no cov an i a z l ožen ých p o d mi en o k uk az u jú
n a s l ed o vn é t ab uľk y:
Po d mi enk a1 Po d mi enk a2 Po d mi enk a1 AN D Po d mi enk a2
p r avd a p r avd a p r avd a
p r avd a n ep r av da n ep r av da
n ep r av da p r avd a n ep r av da
n ep r av da n e p r av da n ep r av da
Po d mi enk a1 N OT Pod mi enk a1
p r avd a n ep r av da
n ep r av da p r avd a
Algoritmizácia a programovanie – učebné texty 18
Po d mi enk a1 Po d mi enk a2 Po d mi enk a1 O R Po d mi enka 2
p r avd a p r avd a p r avd a
p r avd a n ep r av da p r avd a
n ep r av da p r avd a p r avd a
n ep r av da n ep r av da n ep r av da
P r i z l ož en ých p odm ienk ach s i mus íme d ať poz o r n a p r io r i t u op e r ác i í .
A k ch cem e z ap í s ať p o dmi enk u , ž e č í s lo A j e z i n t e r v a lu <1 0 ; 10 0 >,
m us ím e po už i ť o k rú h l e z á tv o rk y:
(C>=10)AND(C<=100)
p r e t ož e p r io r i t a ope r ác i í j e n as l edo vná :
1 . N O T
2 . A N D
3 . O R
4 . < > =
Pr í k l ady p re vá s :
1 . P ro gr am n ač í t a r ok R a v yp í š e , č i v ňo m bo l a l e t ná o l ym pi ád a ,
z im n á o l ym p i ád a a l ebo n i č . Le t ná o l ym p i ád a j e v r o ku
d e l i t eľ no m š t yr m i , z im n á j e dv a r ok y p o l e tn e j .
2 . P ro gr am n ač í t a t r i p r i r odz en é č í s l a A , B , C a z i s t í , č i môžu b yť
s t r an ami t r o j uh o ln ík a . A k án o , v yp í š e v l as t no s t i t oh to
t r o ju ho ln í k a - r ov no r am enn ý, r o vn os t ran n ý, p r av ou h l ý.
1 .13. Cyklus FOR
- c yk l us s o z n ám ym p o č to m op ako v an í .
C yk l us j e p r ík az , k t o r ý s a v yk o n á op ak o van e , n i ek oľk ok rá t . A k s a d á
p o če t o p ak ov an í p r e s n e u r č i ť , po už i j em e p r ík az FOR. A k p r e sn ý
Algoritmizácia a programovanie – učebné texty 19
p o če t ne v i em e , a l e v i em e , do k ed y s a m á op ako vať , po už i j em e p r í kaz
WHILE a l eb o REPEAT.
S yn ta x:
for <premenná> := <výraz> to <výraz>
do <príkaz>
O b a v ýr az y i p r emen n á mu s i a b yť t yp u i n t ege r . P r í k az v c yk l e m ôž e
b yť l en j ed en , ak p o t r eb u j em e z op ak o vať v i ac p r ík azo v , mu s ím e z
n i ch v yt v o r i ť s ek ven c iu p om o co u ' b eg i n ' a ' en d ' . P r em en n á s a naz ýv a
r i ad i aca p r em enn á c yk l u f o r - z j edn odu š en e p o č í t ad lo .
N e s k ô r , k e ď s a z o z n á m i m e a j s i n ý m i t y p m i , b u d e m e i c h m ô c ť p o u ž i ť p r e
p r e m e n n ú v c y k l e f o r , a l e l e n o r d i n á l n e t y p y ( c e l o č í s e l n é , c h a r , v y m e n o v a n ý
t y p ) .
S éman t ika : N a zač i a t ku s a d o p r em enn e j p r i r ad í h od n o t a p rv ého
v ýr az u ( š t a r t ov ac i a h od no t a ) a po každ om p r ech od e cyk l o m s a j e j
h o dn o t a z v ýš i o 1 . K eď dos i ah n e hod n o tu d r uh ého v ýr azu (k on ečnú
h o dn o tu ) , c yk l us k o nč í . P r ík az v cyk l e s a v yk o n á op ako v an e p re
v š e t k y ce l o č í s e ln é h o dn o t y p r em enn e j z i n t e rv a l u u r čen éh o v ýr azm i .
Pr í k l ad :
{ N=5 }
for i:=1 to N+5
do writeln(I)
P r í k az w r i t e ln ( I ) s a v yk o n á p r e v še t k y h o d n o t y p r e m enn e j I z
i n t e rv a l u <1 ; 10 > , t . z n . v ýs l ed ok bu de t en i s t ý , ak o k eb y sm e 10 -k r á t
z ap í s a l i p r ík az w r i t e l n :
writeln(1);
writeln(2);
writeln(3);
writeln(4);
writeln(5);
writeln(6);
writeln(7);
writeln(8);
writeln(9);
writeln(10);
Algoritmizácia a programovanie – učebné texty 20
A k v cyk l e FO R po už i j em e m i es t o s ym bo lu to s ym b ol dow n t o , b ud e
s a r i ad i aca p r em enn á p o k ažd om p r ech o de cyk l o m z menšo v ať o 1 :
for I:=5 downto 1
do writeln(I)
T en t o p r ík az v yp í še po d s eb a č í s l a 5 ,4 , 3 , 2 , 1 .
Po če t opak ov an í cy k lu :
for I:=D to H
do ...
P o če t o p ak ov an í z áv i s í o d h r an i čn ých h o dn ô t D a H a dá s a v yj ad r i ť
v ýr az om : H - D +1 . A k sú h ran i čné h od n o t y D a H r o v n ak é , p r ík az sa
zo p ak u j e l en r az . A k j e d o ln á h r an i ca D v äč š i a ako h o rn á h r an i ca H ,
p r ík az v c yk l e s a nev yk o n á an i r az .
Pr í k l ady :
1 . P ro gr am n ač í t a p r i ro dz en é č í s lo C a v yp í š e j eh o ma lú n á so b i lk u
v t v a r e :
1 x C = ...
2 x C = ...
...
10 x C = ...
2 . P ro gr am n ač í t a p r i ro dz en é č í s lo C a v yp í š e v še tk y j eho d e l i t e l e .
3 . P ro gr am n ač í t a p r i ro dz en é č í s l a A , N a v yp o č í t a h o dn o tu
m o cni n y AN
.
4 . P ro gr am n ač í t a p r i r odz en é č í s l o N a v yp í š e vš e t k y m o cn i n y
č í s l a 2 od n u l t e j po N - t ú .
1 .14. Spracovanie pos tupnost i
Po s tu pno sť j e sk up in a p rv ko v us po r i ad an ých v r ad e z a s ebo u . K až d ý
p r vo k , ok r em pr v éh o , m á sv o j ho p r ed cho d cu a k až d ý p r vo k , ok r em
p os l ed n éh o , m á sv o j ho n a s l ed ov n í ka . M ô ž em e m ať n ap r . :
p os tu pn osť č í s e l : 5 , -8 , 2 , 0 , 20
Algoritmizácia a programovanie – učebné texty 21
p os tu pn osť mi en : J an o , J ožo , Miš o , Ku b o
p os tu pn osť f a r i eb : m od r á , z e l en á , č e rven á
P o če t p rv ko v pos tup n os t i naz ýv am e dĺžk ou p os tupn os t i . K ažd ý
p r vo k m á s vo j e po rad ov é č í s lo a po s tup n osť s ym b ol i ck y z ap í š em e
t ak to :
a 1 , a 2 , a 3 , . . . , a N
k d e N j e d ĺ žk a p os tu p nos t i .
M y b u d eme z a t i aľ p r acov ať s č í s e l ným i p os tu pn osť ami . V p r ax i s a
č a s t o s t r e tn em e s p r ob l émom z i s t i ť sú če t a l ebo p r i em er p r vkov
p os tu pn os t i , z i s t i ť p oče t p r vk ov d an e j v l as tn os t i , n á j s ť n a j v äč š í
p r vo k a p od .
N a v yr i e š en i e t ých t o ú lo h po t r ebu jem e p ozn ať :
- po če t p r vk ov p os tu p nos t i ( u l ož ím e ho do j ed n e j p r em enn e j , n ap r . N )
- h o dn o t y j ed n o t l i vých p r v k o v ( t ých j e v i ac , p o t r eb ov a l i b y s m e n a t o
v i ac p r emenn ých , a l e n ev i em e vo p r ed , k oľk o) .
M y v š ak n epo t r ebu j em e poz nať n a raz vš e t k y p r v k y p os tu pn os t i .
M ôž em e s i i ch n ač í t av ať p os t up n e po j edn om d o j ed n e j p r em enn e j ,
n ap r . A , a p r i eb ežne i ch s p r acov áv ať .
S ch éma a l go r i t mu , k to r ý p r acu j e s N - p rv ko vo u p os tu pn osť ou
r eá ln ych č í s e l :
var N:integer;
A:real;
begin
writeln('Zadaj dlzku postupnosti:');
readln(N);
for I:=1 to N
do begin
writeln('Zadaj ',I,'. cislo postupnosti:');
readln(A);
<spracuj cislo A>
end;
<vypis vysledok>
end.
Pr í k l ady :
Algoritmizácia a programovanie – učebné texty 22
1 . P ro gr am n ač í t a p o če t d e t í N a N - p r vk ov ú pos tu p nosť
n ez ápo rn ých č í s e l a 1 , a 2 , a 3 , . . . , a N , k d e a i s ú ús po r y I - t eh o
d i eť ať a . Z i s t i t e :
a . ce l ko vú h od no t u úsp o r d e t í
b . p r i em er nú h od n o tu ú sp o r n a d i eť a
c . p o če t " ch ud ob n ých " d e t í ( k to r é m aj ú n u l ov é ú sp or y)
2 . M iš ko p racov a l n a b r i gáde N dn í . P r v ý d eň z a r ob i l K k o rú n .
K ažd ý ď a l š í d eň z a r o b i l dv akr á t t oľ ko ak o v p r ed ch ádza jú c i d eň
a e š t e 1 ko r un u n avyš e .
a . K oľ ko z a r ob i l v p os l ed n ý d eň?
b . K oľ ko s i z a ro b i l c e l ko vo?
1 .15. Hľadanie maxima (minima) pos tupnost i
M ax im um (mi n im um ) p os t up no s t i j e ho dn o t a n a jv äčš i eho
( n a j m en š i eh o ) p r vku v pos tu pn os t i .
N ap r . p os tu pn osť 5 , 10 , 1 , 1 0 , 2 , 7 m á m ax imu m 10 a m in i mum 1 .
Po s tu p h ľad an i a ma x i ma : P os tu pn e p r e j d em e po s tu p nos ťo u od
p r v éh o po p os l ed n ý p rv ok a b ud em e s i p am ät ať v po mo cne j p r em enne j
M A X za t i aľ n á jd en ý n a j v äčš í p rv ok . T . zn . z ob e r i eme p r v ý p r v o k a
p r eh l ás im e h o za do časn é m ax im um . U l ož ím e h o d o p r em enn e j MAX
a s ko n t ro lu j eme os t a t n é p r vk y p o s t upn os t i , č i n i e s ú n áho d no u v äčš i e
ak o na š e M A X. Ak t ak ý p r v o k n á jd em e , m us í me h o u lož i ť do MAX
ak o no v é max i mum.
Pr í k l ady :
1 . D an ý j e p oče t p ok us ov p r e t ek á r a vo v rh u guľo u a ho d no t y
j edn o t l i v ých h o dov . P ro gr am v yp í š e ho dn o t u n a j l ep š i eho
p o kus u .
Algoritmizácia a programovanie – učebné texty 23
2 . D an ý j e p oče t p rvk o v N a j ed no t l i v é p r vk y p o s t up no s t i a 1 , a 2 ,
a 3 , . . . , a N . N á jd i t e h od no t u na jväč š i eho p rv ku a z i s t i t e ,
k oľ ko kr á t s a v p os tu p nos t i n ac h ádza .
3 . O p r av t e p r ed ch ádz a j úc i p ro gr am t ak , ab y h ľ ad a l na jm enš í
p r vo k .
1 .16. Cyklus WHILE
- c yk l us s p od mi enk o u na z ač i a t ku
S yn ta x:
while <logický výraz>
do <príkaz>
S éman t ika : k ým j e l o g i ck ý v ýr az (po dm ienk a ) p r avd i vý , o p ak ov ane
v yk o n áv a d an ý p r í k az . A k po dm i enk a n ep l a t í , c yk l us k o n č í . Ak
ch cem e mať v cyk l e v i ac p r ík az ov , mu s í me z n i ch v yr o b i ť s ek v en c iu
p om o co u ' b eg in ' a ' en d ' .
Pr í k l ad :
{A=13, B=4}
while A>=B
do A:=A-B
A k ý b u d e s t av p r em enn ých p o sk on čen í c yk l u?
Z a č i a t o č n ý s t a v p r e m e n n ý c h j e : A = 1 3 , B = 4 .
P r e d v s t u p o m d o c y k l u s a p o d m i e n k a v y h o d n o t í a k o p r a v d i v á ( 1 3 > = 4 ) . V o j d e d o
c y k l u a v y k o n á p r í k a z , z n í ž i h o d n o t u p r e m e n n e j A o 4 . S t a v p r e m e n n ý c h p o 1 .
p r e c h o d e c y k l o m : A = 9 , B = 4 .
P o d m i e n k a s t á l e p l a t í ( 9 > = 4 ) , p r e t o z n o v a z o p a k u j e p r í k a z , z n í ž i h o d n o t u
p r e m e n n e j A o 4 . S t a v p r e m e n n ý c h p o 2 . p r e c h o d e c y k l o m : A = 5 , B = 4 .
P o d m i e n k a e š t e s t á l e p l a t í ( 5 > = 4 ) , z n o v a z o p a k u j e p r í k a z , z n í ž i h o d n o t u
p r e m e n n e j A o 4 . S t a v p r e m e n n ý c h p o 3 . p r e c h o d e c y k l o m : A = 1 , B = 4 .
P o d m i e n k a ( 1 > = 4 ) j e n e p r a v d i v á , c y k l u s s a k o n č í . K o n e č n ý s t a v p r e m e n n ý c h j e :
A = 1 , B = 4 .
Algoritmizácia a programovanie – učebné texty 24
N a čo s l úž i u v ed en ý a l go r i tm us a ak á b ud e k on ečn á ho dn o ta
p r em enn e j A , ak n a z ač i a tk u p l a t í A =10 3 , B=5?
Pr í k l ady :
1 . D an é j e p r i ro dzen é č í s lo C . Z i s t i t e p o če t c i f i e r v t om to č í s l e .
2 . D an é j e p r i ro dzen é č í s lo C . Z i s t i t e j eho c i f e rn ý s ú če t .
3 . M iš ko v ho d i l do po k l adn i čk y 1 k o r unu . D r uh ý d eň t am vh o d i l 2
k o ru n y, t r e t í d eň 3 k o ru n y, a t ď . Za k o ľk o dn í s i na sp o r í na
au t í čk o , k to r é s t o j í K k o rú n?
4 . D an á j e po s tu pno sť ce l ých č í s e l p r ed s t av u j úc i ch p l a t y
z am es tn ancov ( i ch p o če t n ep ozn áme) . A k o p os l edn ý j e z ad an ý
p l a t r i ad i t eľ a , k to r ý j ed in ý j e v äč š í n ež 5 00 00 , - S k . Z i s t i t e
k oľ ko zam es t n an cov m á p od n i k a ak ý j e i ch p r i em er n ý p l a t .
5 . V b an k e j e K ko r ún . P os tu pn e p r i ch ádz a j ú pož i ad av k y na
p os k yt n u t i e ú ve r u - t . zn . po s tu pn e s a z adáv a j ú s um y, k t o ré s i
ch cú k l i en t i od b ank y p o ž i čať . P o n ač í t an í kaž d e j sum y p r o gr am
v yp í š e , č i j e ž i ados ť o p ôž i čku v yb a v en á k l ad n e , a l eb o s a j e j
n ed á v yh o v i eť z d ôv o du nedo s t a t ku p eň az í v b an ko vom t rezo r e .
P ro gr am ko n č í , ak v bank e n ez os t an e an i ko r un a .
1.16 .1 . Zacyklenie
- op a ko v an i e p r í k azu d on eko n ečn a .
A k j e p odm i en ka cyk l u W H ILE s t á l e p r avd i v á , cyk l u s n ik d y n e sk on č í .
S t áv a s a t o v t ed y, ak p r o gr am át o r ch yb n e z ap í š e p od mi enk u , nap r . :
{A=10}
while A>=0
do A:=A+1
T ak t o z ap í s an ý c yk l us n i kd y n e s k on č í , p r e t ože p r em enn á A b u d e m ať
s t á l e ho dn o tu v äčš i u ak o nu la . Ak s a n ám v p r o gr am e p o da r í n i ečo
p o do bn é , m us í m e sp us t en ý p r o gr am nás i ln e u ko n č i ť p om o co u k l áv es
C t r l+Br eak . Ni ek ed y v š ak sú s t ým p r o b l ém y a m u s ím e u k on č i ť c e l ý
Algoritmizácia a programovanie – učebné texty 25
P as ca l (C t r l +A l t +D e l ) a l eb o re š t a r to v ať po č í t a č . P r e t en to p r íp ad
t r eb a m ať p os l edn ú ve rz i u p r o gr am u u lož en ú n a d i s ku . PR ED
K A ŽD Ý M S PUS T EN ÍM P RO GR AM U S I T R E BA PR O GRA M U LO Ž IŤ
N A D IS K ! ! !
1 .17. Typ CHAR
Mn ož ina hodn ô t : zn ak y ( z ap i s u j em e i ch v ap os t r o f ách , n ap r . 'A ' , ' 5 ' ,
'@ ' , ' ! ' , ' ' a tď . )
Pr í pus tn é op erá c ie : po r ov náv an ie ( < > = )
V š et k ých z n ak ov j e 25 6 , u sp o r i ad an é sú v t zv . ASCI I t ab u ľk e a
k až d ému j e p r i r aden é p o r ad ov é č í s lo od 0 p o 2 55 . To to č í s lo sa
n az ýv a k ód z n aku , r e sp . o rd in á l ne č í s lo . J ed no t l i v é z nak y s a
p o ro vn áv a jú p od ľa i ch kó du .
P r í k l ad y k ó do v :
'A' má kód 65
'B' 66
'C' 67
...
'Z' 90
'a' má kód 97
'b' 98
'c' 99
...
'z' 122
'0' má kód 48
'1' 49
'2' 50
...
'9' 57
P r e t o p l a t í , ž e :
'A '< ' a '
'A '< 'B '
' 9 '< 'A '
Štandardné funkcie
Popis: Funkcia: Typ parametra: Typ výsledku: Príklad:
ordinálne číslo znaku ORD(C) znak celé číslo ORD('A')=65
znak prislúchajúci kódu CHR(I) celé číslo znak CHR(65)='A'
predchodca znaku PRED(C) znak znak PRED('B')='A'
nasledovník znaku SUCC(C) znak znak SUCC('A')='B'
Algoritmizácia a programovanie – učebné texty 26
Pr í k l ad y :
1 . P ro gr am v yp í š e na o b r azo vk u v eľk ú ab ecedu : A , B ,C , . . . , Z
2 . P ro gr am n ač í t av a po j ed no m zn ak u a v yp i s u j e j eho kó d , p o k iaľ
n ebu d e z adan á bo dk a .
3 . P ro gr am v yp í š e v še t k y z n ak y A S C II t abuľ k y o d 0 - t éh o p o 25 5 -
t y .
4 . P ro gr am n ač í t a v eľ k é p í s meno ab eced y a v yp í š e t o i s t é m a lé
p í s meno .
P o z n . : T y p c h a r m o ž n o p o u ž i ť p r e r i a d i a c u p r e m e n n ú c y k l u F O R . A k c h c e t e
v y p i s o v a ť n a o b r a z o v k u ú d a j e d o r i a d k u z a s e b o u , p o ž i t e m i e s t o p r í k a z u
W R I T E L N l e n W R I T E .
1 .18. Cyklus REPEAT
- c yk l us s p od mi enk o u na k on c i
S yn ta x:
repeat
<príkazy>
until <logický výraz>
P r í k azo v v cyk l e m ôž e b yť v i ac a n emus ím e p ouž i ť ko nš t r uk c iu
' b eg i n . . end ' .
S éman t ika : p r í k azy v c yk l e s a v yk o n áv a jú o p ak ov an e , po k i aľ nebu de
l o g ick ý v ýr az p rav d i v ý. A k j e n ep r avd i v ý, c yk l u s p o k r aču j e .
Pr í k l ad :
S:=0;
repeat
readln(A);
S:=S+A
until A=0;
writeln(S)
Algoritmizácia a programovanie – učebné texty 27
Č o s a v yp í š e n a ob r az ov ku , ak už í va t eľ po s t up n e z adáv a n a vs t up
t i e to č í s l a : 2 , 5 , 3 , 0 ,7 , 0 ?
P r i k a ž d o m p r e c h o d e c y k l o m s a n a č í t a j e d n o č í s l o z o v s t u p u ( r e a d l n ( A ) ) a
p r i p o č í t a s a k c e l k o v é m u s ú č t u ( S : = S + A ) . T i e t o d v e o p e r á c i e s a o p a k u j ú
d o v t e d y , k ý m č í s l o z a d a n é n a v s t u p e n e b u d e r o v n é n u l e ( A = 0 ) . V t e d y c y k l u s
k o n č í . P r e h o r e u v e d e n ú v s t u p n ú p o s t u p n o s ť n á m p r o g r a m v y p o č í t a 2 + 5 + 3 , č i ž e
1 0 .
Pr í k l ady :
1 . D an á j e pos tu pn os ť k l adn ých a z áp o rn ých č í s e l (p r í jm y a
v ýd a j e ) u ko n čen á n u l ou . Z i s t i t e c e lko v ý p r í j em , c e l ko vý v ýd a j
a ko n ečn ú b i l an c iu ( z i s k a l ebo s t r a t a ) .
2 . D an á j e p os tu pn osť zn ám ok ž i ak a (1 . . 5 ) uk on čená nu lo u . Z i s t i t e
p o č t y j ed n o t l i v ých zn ámo k (p o če t j edn o t i ek , p o če t dv o j ok , . . . ) a
p r i em er nú zn ámk u .
3 . D an é j e p r i r odz en é č í s l o A . V yt v o r t e a v yp í š t e č í s lo B , k t o r é
m á t i e i s t é c i f r y ak o A, a l e v op ačnom p or ad í .
1.18.1. Rozdiely medzi cyklom WHILE a REPEAT
o v yh odno t en i e p odmi enk y - ak po dm ienk a p l a t í , cyk l us
w h i l e p ok r aču j e , r ep ea t ko n č í . Ak p od mi en k a n ep l a t í
c yk l u s w h i l e k on č í , a l e r ep ea t p ok r aču j e .
o u mi es tn en i e pod mi enk y - v c yk l e w h i l e j e p od mi en k a na
z ač i a t ku , v yh o d nocu j e s a s kô r , n ež s a v yk o n á p r í kaz v
c yk l e , p r e t o s a m ôž e s t ať , ž e s a p r í kaz v cyk l e n ev yk o ná
an i r az , ak j e p odm ienk a h n eď n a zač i a t ku n ep r av d iv á . V
c yk l e r ep ea t j e p o dm ienk a n a k on c i , t . z n . n a j sk ô r s a
v yk o n a jú p r ík az y v cyk l e , až po to m s a v yh o d no cu j e
Algoritmizácia a programovanie – učebné texty 28
p o dmi en k a . P r í k azy v c yk l e r ep ea t s as t ed a v yk o n a jú
a s po ň r az .
o p o če t p r ík a zo v v cyk le - v cyk l e w h i l e môž e b yť l en
j ed in ý p r í kaz , v c yk l e r ep ea t i ch m ôž e b yť v i ac .
Ú l oha : P r ep í š t e h o r eu v ed en ý p r í k l ad ( s úče t p os tu pn os t i č í s e l
u k on čen e j n u lo u ) p om o co u cyk l u w h i l e , t ak ab y d áv a l ro vn aké
v ýs l ed k y.
1 .19. Typ BOOLEAN
Mn ož ina h odnô t : l o g i ck é ho dn o t y FA LS E ( n ep r av da ) a TRUE
( p r avd a )
T i e t o h o d n o t y m a j ú t i e ž s v o j e k ó d y , k t o r é s a d a j ú z i s t i ť f u n c i o u O R D . F a l s e m á
k ó d 0 a t r u e 1 .
Pr í pus tn é o perá c ie : po r ov n áv an i e ( <>= ) a l o g i ck é ope r ác i e ( N OT,
A N D , OR ) op í s ané v čas t i po dmi en en ý p r í kaz
L og ický vý ra z - v ýr az , k t o rého v ýs l edn á ho dn o t a j e p r avd a a l ebo
n ep r av da . N apr .
A > B
(A<3) and (B <>0)
Premen n á t ypu b oo l ean a j e j po už i t i e :
D ekl a r ác i a :
var B:boolean
P ouž i t i e v p r ík az o ch :
B:=true;
B:= 4<7;
B:= (4<7) and B;
if B then ...;
while not B do ...
Algoritmizácia a programovanie – učebné texty 29
1.19.1. Zisťovanie vlastností postupnosti
V p r ax i n i ek ed y p o t r eb u j em e z i s t i ť v l a s t nos ť po s t upn os t i ( č i j e
p os tu pn osť k l ad n á , r a s t úca , . . . ) . Ab y s m e v yr i e š i l i ú l oh u , p o t r eb u j em e
s ko n t r o lo v ať k aždý p r v o k p os t up no s t i , č i s p ĺň a u r č i t ú p o dmi enku .
N ap r . p os tu pn osť j e k l adn á v t ed y, ak j e k ažd ý j e j p r v ok k l adn ý.
Ú l oh y t o h to t yp u r i e š im e t ak , ž e p r edp o k l ad ám e , ž e po s tu p nos ť d anú
v l as t no sť m á . Po tom p os t up n e p reko n t r o lu j em e j edn o t l i vé p r v k y a ak
n á jd em e čo l en j ed in ý, k t o r ý p ožad ov anú v l a s tn os ť n em á, n áš
"p r ed po k l ad " o pr av ím e . A k s ú vš e tk y p r v k y v p o r i ad k u , n i č s a
n em en í .
P r i ú l oh ách to h to typ u j e v ho dn é po už i ť s i g n a l i z ačnú p rem enn ú t yp u
b o o l ean , k to r á n ám s i gn a l i zu j e , ak á j e p o s tu pn os ť . Nap r . p rem en ná
J E K LA D N A :b oo l ean bu d e o bs aho v ať t r ue , ak j e po s t upn os ť k l adn á ,
ak n i e j e k l adn á , bu d e ob s ah ov ať f a l se .
N a z ač i a t ku p r edp ok l ad ám e , ž e p os t upn os ť j e k l ad ná , t . zn . p r em en nú
i n i c i a l i zu j eme n as l edo vn e : J E K LA D N A : =t ru e . P o t om v c yk l e
p os tu pn e n ač í t av ame j ed no t l i vé p r vk y p os tu pn os t i a k on t ro lu j em e i ch .
A k b ud e z ad an ý p r v o k n ek l adn ý, n á š p r edp ok lad s a n a ruš i l a môž em e
h o zm en i ť : J EK LA D N A: =f a l s e . N a k on c i p r o gr am u p o dľ a ob sahu
p r em enn e j J E K LA D N A v yp í š em e v ýs l edo k .
Pr í k l ady :
1 . D an ý j e p o če t p r vk o v N a N -p r vk ová p o s tu pn os ť ce l ých č í s e l .
Z i s t i t e , č i j e p os tu p nos ť k l adn á , t . zn . č i s ú v š e tk y j e j p r v k y
k l ad n é .
2 . D an ý j e p o če t p r vk o v N a N -p r vk ová p o s tu pn os ť ce l ých č í s e l .
Z i s t i t e , č i j e po s tu p nos ť r as t ú ca , t . zn . č i j e k ažd ý j e j p rv ok
v äč š í n ež p red ch ádz a j úc i ( s v ýn i m ko u p rv ého ) .
3 . D an é j e p r i ro dzen é č í s lo C . Z i s t i t e , č i j e t o p r vo č í s l o .
Algoritmizácia a programovanie – učebné texty 30
1 .20. Príkaz CASE
- v i acn áso bn é v e t ven i e
S yn ta x:
case <výraz> of
<hodnoty>:<príkaz>;
<hodnoty>:<príkaz>;
...
<hodnoty>:<príkaz>;
else <príkaz>
end
<v ýr az > j e v ýr az o r d in á l n eh o t yp u ( in t ege r , ch ar , bo o l ean , . . . ) .
<p r í k az > j e ľ ub ov oľ n ý p r í k az , ak po t reb u j em e uv ie sť j a j edn e j v e t ve
v i ac p r ík azo v , p ouž i j em e ko nš t r uk c i u ' b eg i n . . . end ' .
< h od no t y> j e z ozn am h od nô t t ak ého i s t ého t yp u , ako j e <v ýr az > .
H o dn o t y s ú o dd e len é č i a r k ami a môž u b yť z ap í s an é ak o i n t e rv a l
' o d . . d o ' .
V etv a ' e l s e ' j e n ep ov in n á .
S éman t ika : V yp o č í t a s a h od no t a d an ého v ýr az u a po r o vn á s a s
h o dn o t ami n a j ed no t l i v ých v e t v ách . A k j e v ýr az r o v n ý h o dn o t e na
n i ek t o r e j v e t v e , vyk o n á s a p r í k az n a t e j t o v e tv e . Ak j e r ov n ý
h o dn o t ám n a v i ace r ých v e tv ách , v yk o ná s a t en p r íkaz , k to r ý j e
u v ed en ý s k ô r .
Pr í k l ad : Mám e p r em enn ú A t yp u i n t ege r . Č o s a v yp í š e n a o b r azo vku
p o v yk o n an í n as l edo v né ho p r ík azu?
case A of
3:writeln(4);
5,10,15,20:writeln(A div 5);
16..22:writeln(A+2);
-2..2,4,6..9:writeln(A -1)
else writeln(A)
end
A k j e A =3 , v yk o n á s a p r v ý p r í k az a v yp í š e : 4
Algoritmizácia a programovanie – učebné texty 31
A k j e A =1 7 , v yk o n á s a t r e t í p r í k az ( 1 7 j e z i n t e rv a lu <16 ,2 2 >) a
v yp í š e : 1 9
A k j e A=20 , t eo r e t i ck y b y v yh o v o v a l a a j d r uh á a j t r e t i a v e tv a , a l e
v yk o n á s a l en d r uhý p r í k az a v yp í š e : 4
A k j e A =9 , v yk o n á s a š tv r t ý p r ík az a vyp í š e : 8
A k j e A =14 , v yk o n á s a po s l ed n ý p r í k az n a v e tv e e l s e a vyp í š e : 14
A k o s a zm en í v ýs tu p v h o r eu ved ených p r í p ad o ch , ak v ýr az A v
p r ík az e ' c a s e ' zm en í me n a v ýr az A +1 ?
Pr í k l ady :
1 . D an é j e p r i r odz en é č í s l o z i n t e rva l u <1 , 5 > p r ed s t av u j ú ce
zn ámk u ž i ak a . P r o gr am n ač í t a č í s lo znám k y a v yp í š e j u s lo v ne .
2 . P ro gr am n ač í t a vek o so b y, j e j v ýš k u v cen t im e t r o ch a vyp o č í t a
i d eá ln u hm otn os ť po dľ a t ab uľk y:
V ek H m otn osť
0 - 1 5
1 6 - 3 0
3 1 - 5 0
5 1 -
v ek* 3 . 5
v ýš k a - 1 10
v ýš k a - 1 00
v ýš k a - 9 0
3 . D o pl ň t e p ro gr am t ak , ab y s a zo p ak ov a l p r e N o sô b ( N j e d an é ) .
4 . P ro gr am n ač í t a znak a v yp í š e , č i j e t o v eľ k é p í sm en o , m alé
p í s meno , č í s l i c a , i n t e rp un k čn é zn am i en k o ( . ? ! , ) a l eb o n i ečo i n é .
1 .21. Vnorené cykly
Príkaz v tele cyklu môže byť ľubovoľný (priraďovací príkaz, príkaz vstupu, príkaz
výstupu, príkaz vetvenia, príkaz cyklu, ...). To znamená, že príkaz, ktorý necháme
vykonávať opakovane, môže byť opäť cyklus. Vznikne nám príkazová konštrukcia, ktorú
nazývame vnorené cykly.
Algoritmizácia a programovanie – učebné texty 32
for I:=1 to 10
do for J:=1 to 20
do writeln('*')
P rv ý c yk l u s s a n azýv a v o nk a j š í , v yp í s an ý t u čn ým j e v nú to r n ý.
S am ot n ý p r í k az . . .
for J:=1 to 20
do writeln('*')
. . . v yp í š e n a ob r azov k u 20 h v i ezd i č i ek . Ak h o n ech ám e zo p ak ov ať 10 -
k r á t , v yp í š e 10 -k r á t v i ac h v i ezd i č i ek , č i ž e 20 0 .
Ú l ohy :
1 . K oľ ko h v i ezd i č i ek s a v yp í š e n a ob r azov k u?
for I:=1 to 5
do for J:=I to 10
do writeln('*')
2 . K oľ ko h v i ezd i č i ek s a v yp í š e n a ob r azov k u?
for I:=5 downto 1
do for J:=3 to I
do writeln('*')
3 . Č o s a v yp í š e n a o b r azo vk u?
for I:=1 to 5
do for J:=1 to 5
do writeln(I,J)
4 . Č o s a v yp í š e n a o b r azo vk u?
for I:=1 to 3
do for J:=1 to 3
do for K:=1 to 3
do writeln(I,J,K)
Pr í k l ady :
1 . V yp í š t e n a ob r azo vk u v še tk y m ož né usp o r i ad an é dv o j i c e zn akov
z mn ož in y { A , B , C , D , E } .
Algoritmizácia a programovanie – učebné texty 33
2 . V yp í š t e n a ob r azo v ku vš e t k y m ožn é k omb in ác i e z nak ov z
m nož i n y { A , B , C , D , E } .
3 . D an ý j e p o če t ž i ako v N a p o če t zn ám ok n a v ys v ed čen í P . P re
k až d éh o ž i ak a p rogr am n ač í t a P z n ám ok , v yp o č í t a p r i em ernú
zn ámk u a v yp í š e , č i b o l v yz n am en an ý ( p r i em er do 1 . 50 ) ,
p r os p e l ve ľmi dob r e ( p r i em er d o 2 . 00 ) a l ebo p ros p e l (v
o s t a t n ých p r íp ado ch ) .
4 . N ájd i t e vš e t k y t r o j i c e p r i r odz en ých č í s e l A , B, C z i n t e r v a l u
<1 ,1 00 > , k t o r é s ú s t r an ami p r av ou h l ého t r o ju ho ln í k a .
5 . N ájd i t e v š e tk y r i e š en i a k r yp t o gr amu (z i s t i t e , k to r é č í s l i c e
r ep r ez en t u j ú z n ak y A , B, C) : BA * A B = AC A
1 .22. Výstup na textovú obrazovku
T ex t ov á o b r azov k a m á 2 5 r i ad ko v a 8 0 s t ĺ p cov . J e r ozd e l en é n a 80x 25
p o l í čok , v k až d om p o l í čku môž e b yť n ap í san ý p r áv e 1 zn ak . A k t í vn e
p o l í čko ozn aču je k u rzo r ( b l ik a j ú c i p o dč i a r ko vn ík ) , k to r ý s a p r i
v ýp i s e na ob r az ovk u p os úv a ď a le j . ( K u rzo r oz n aču j e m ie s t o , kd e
z ačn e v yp i s ov ať na j b l i ž š í p r í k az w r i t e / w r i t e ln . Po z áp i s e zn aku n a
ak t ív n e p o l í čko s a k u rzo r p os un ie o 1 p o l í čko vp r av o , ak j e n a k on c i
r i ad ku , po su n i e s a n a p r vé p o l í čko v n as l ed u jú com r i ad ku . Ak j e
k u rzo r v p os l edn om p o l í čku p os l ed néh o r i adk u , ob sah o b r azo vk y sa
r o lu j e o 1 r i ad ok v yš š i e a k u rzo r s a n a s t av í n a p r v é p o l í čko
p os l ed n éh o r i adk u .
Pr í ka zy n a vý p i s :
w ri t e ( <p ara met re> )
- v yp í š e ú d a j e a n as t av í k u rzo r z a p os l edn ý v yp í s an ý z n ak
w ri t e ln (<p a ra met re> )
- v yp í š e úd a je a n a s t av í ku rzo r na z ač i a t ok n as l edu jú ceho
r i ad ku
w ri t e ln
- n ev yp í š e n i č , ku rzo r n a s t av í n a z ač i a t ok n a s l ed u jú ceho r i adk u
Algoritmizácia a programovanie – učebné texty 34
Pr í k l ady :
1 . D an é j e p r i r odz en é č í s lo N . Zap í š t e d o r i adk u z a s ebou
f ak t o r i á l y: 1 ! , 2 ! , 3 ! , . . . N ! o dd e l en é č i a rk ami . K - fak to r i á l j e
s ú č i n p r i ro dzen ých č í s e l o d 1 po K: K! =1 .2 .3 . . . . K
2 . D an é j e p r i ro dzené č í s l o N . P r o gr am v yp í š e N r i ad ko v s N
h v i ez d i čk am i . ( "Nak r e s l í " hv i ez d i čk ový š t v o rec . )
3 . P ro gr am v yp í š e do r i ad ko v 1 . .2 4 , t oľk o hv iez d i č i ek , k oľ ko
u r ču j e f un k c i a f ( i )= ( i -1 2 )2/ 2 p o z aok rú h l en í ( i j e č í s lo r i ad ku ) .
P r i v ýs t up e n a o b razo vk u môž em e v yuž ív ať p r í k az y z un i t u CR T. V
t akom to p r í p ad e mu s í me z a h l av i čk u p r o gr am u do p l n i ť : uses Crt;
1 .23. Unit CRT
g o to xy ( x , y )
- p r e su n i e ku rzo r d o x - t éh o s t ĺ pca a y - t éh o r i adk u . S t ĺp ce sú
č í s lo v an é 1 . . 80 , r i ad k y 1 . .2 5 .
t ex t co lo r ( F)
- n as t av í f a r bu p í s m a F . F j e c e l é č í s lo z i n t e r v a l u <0 ,1 5 > .
Č í s l a v äčš i e ak o 15 p r ed s t av u j ú b l i k a jú ce fa r b y.
t ex tb a ckg round ( F)
- n as t av í f a r bu p ozad i a F . F j e c e l é č í s lo z i n t e rv a lu <0 , 7> .
w ind ow ( x l ,yh ,xp ,yd )
- o tv or í o kn o s o sú r adn i cami [ x l , yh ] v ľ av om h o rn om r o hu a
[ x p , yd ] v p r av om do ln om r oh u . O kn o j e ak t ív na ča sť o b razo vk y
v k to r om p l a t i a r e l a t í v n e s ú r ad n i ce vzh ľado m n a j eho ľ av ý
h o rn ý r o h [ 0 , 0 ] . M im o ok n a s a n ed a jú ro b i ť ž i adn e zm en y
( p í s ať , z o t i e r ať ) .
c l rs cr
- z o t r i e ob r az ov ku , r e sp . ok no , f a rb ou p ozad i a .
w h erex , w h erey
- f u nk c ie , k t o r é v rá t i a p r i r odz en é č í s l o - č í s l o s t ĺ p ca , r i ad ku , v
k to r om s a n ach ádz a k urz o r .
d el ay ( t )
Algoritmizácia a programovanie – učebné texty 35
- p r o ces o r "čak á" t mi l i s ekú nd ( keď po t r ebu jem e sp om al i ť
p r o gr am ) .
Pr í k l ady :
1 . V yb e r t e s i z o s vo j i ch od l ad en ých p r o gr amo v j ed en a do p lň t e ho
o f a r b y: n a z ač i a t ku p r o gr am u bu d e p r ázd na o b r azo vk a z e l en e j
f a r b y. P r i n ač í t av an í v s tu pn ých d á t bu d ú ozn am y v yp i s o v an é n a
o b r azo vk u b i e l ou f a r b ou , v ýs l ed k y s a bu dú v yp i s ov ať ž l t ou
f a r b ou . (P r i na s t av o van í f a r i eb m ôže t e po už ív ať a j an g l i cké
oz n ačen i a : g r een , w h i t e , ye l l o w ) .
2 . "N ak r e s l i t e " n a b i e l e j o b r az ov k e u p ro s t r ed če r v en ý o b d ĺž n ik a
r ozm erm i 40x 1 5 po l í čok .
3 . P r es úv a j t e pom a l y p o h or no m ok r a j i ob r az ov k y n áp i s "AH OJ " .
4 . V yt v o r t e n a ce l e j ob r az ov ke f a r eb nú rek l amu na ne j ak ý p r o duk t .
( S t ač í s t a t i ck á , môž e b yť a j p oh yb l iv á . )
1 .24. Vstup z k lávesnice
U žív a te ľ z ad áv a vs tu pn é úd a j e v n i ek oľ k ých r i ad ko ch u k on čen ých
en t e r om . V j edno m r i ad ku m ôže b yť z ap í s an ých v i ac ú d a j ov ( ak s ú
t o č í s l a , od deľu j eme i ch m edz e r ami ) . M ys l en ý u k azo v a t eľ ( n i ečo ako
k u rzo r ) oz naču j e zn ak zo vs t up n éh o r i adk u , k to r ý s a b ud e n a jb l i ž š i e
č í t a ť . P r i č í t an í s a p os úv a ď a l e j .
Pr í ka zy n a č í t an i e :
r ead ( <p remenn é> )
- p r eč í t a úd a j e zo v s t up ného r i adk u d o d an ých p r em en n ých a
p os un i e uk azo v a t eľ z a p os l edn ý p r eč í t an ý z n ak
read ln (<p remenn é> )
- p r eč í t a úd a j e zo v s t up ného r i adk u d o d an ých p r em en n ých a
p os un i e uk az o v a t eľ n a ďa l š í v s t up n ý r i ado k ( ak h o už í v a t e ľ e š t e
n ez ad a l , t ak čak á )
read ln
Algoritmizácia a programovanie – učebné texty 36
- p os u n i e u k azo v a te ľ n a ď a l š í v s t up ný r i ad ok ( ak h o už í v a t eľ
e š t e n ez ad a l , t ak čak á ) . V s tu pn ý r i ad o k môž e b yť a j p r áz dn y
( už í v a t eľ s t l ač í l en en t e r ) .
Pr í k l ad :
U žív a te ľ z ad a l na k l áv esn i c i t i e t o vs t up n é r i adk y:
1 2 3 4
5
A k ý b u d e ob sah p rem enn ých v a r A , B : i n t ege r ; C : ch a r po v yk o n an í
t ých t o p r í kaz ov?
read(A);
readln(C);
read(B)
{ A= , B= , C= }
Fu nk ci a EO LN : j e t o l o g i ck á f un k c ia , k to r á nám s i gn a l i z u j e poz í c iu
m ys l en éh o uk azo va t eľ a p r i č í t an í zo v s tu pn ého r i ad k u . A k j e
u k azo v a t eľ n a ko nc i vs t up n éh o r i ad ku ( p reč í t a l s a po s l ed n ý z n ak) ,
f u nk c i a v r á t i TR UE, i n ak v r á t i FA LS E.
T út o f un k c iu m ôžem e v yu ž i ť p r i č í t an í po s t up nos t i ú da j ov , k t o r á j e
d an á v j edn om v s t up no m r i adk u , p r i čom p o če t p r v ko v v op r ed
n epoz n ám e. Po už i j em e tú to s ch ému p ro gr amu :
while not eoln
do begin read(prvok);
<spracuj prvok>;
end
Pr í k l ad : D an á j e p os tu pn osť zn ako v v j edn om v s tu pn om r i ad ku . P r i
z ad áv an í s ú n a ob r azo vk e š t and a rd né f a rb y - č i e rn e poz ad i e , b i e l e
p í s mo . V yp í š t e t ú i s tú p os t up no sť d o d r uh ého r i ad ku ž l t ou f a rb ou .
uses crt;
var znak:char;
begin
textbackground(black);
textcolor(white);
writeln('Zadaj postupnost znakov:');
while not eoln
do begin read(znak);
Algoritmizácia a programovanie – učebné texty 37
textcolor(yellow);
write(znak)
end
end.
Pr í k l ady :
1 . D an á j e p os t up no sť zn ako v v j ed no m v s t up no m r i adk u . P r o gr am
v yp í š e , koľ ko j e v p os tu pn os t i
a ) p í s m en b ) č í s l i c c ) a r i t m et i ck ých znami eno k
2 . D an á j e pos tu pn osť zn ako v v j edn om v s t up no m r i adk u . V yp í š t e
t ú i s t ú po s t up nos ť d o d ru h éh o r i adk u t ak , ž e :
a ) k ažd é ' y ' z men í t e n a ' i b ) z a k ažd é ' x ' v l ož í t e ' y '
3 . D an é j e p r i ro dzen é č í s lo A . Bez po už i t i a č í s e l n e j p r em enne j
a ) z i s t i t e , č i j e d e l i t eľ n é 5 b ) z i s t i t e , č i j e d e l i t eľn é 1 00
c ) v yp í š t e j eho d e sať n áso bo k .
4 . D an á j e po s tu pn os ť z n ak ov . Z i s t i t e , č i j e t o i d en t i f i k á t o r .
1 .25. Knižnica CRT - vs tup z k lávesnice
read key
- zn ako v á fu nk c ia , k t o r á č ak á na s t l ačen ie k l áv es y a v r á t i zn ak
t e j t o k l áves y. P o s t l a čen í k l áv es y s a z n ak n ev yp i su j e na
o b r azo vk u .
k eyp ress ed
- l o g i ck á f un k c i a , k to r á v r á t i TR U E, ak bo la s t l a čená k l áv es a ,
i n ak v r á t i FA LS E
Algoritmizácia a programovanie – učebné texty 38
Pr í k l ady :
1 . D o s t redu ob r azov k y v yp í š t e t ex t A H OJ a op ak ovan e ho
p r ek re sľu j t e f a r b am i od 1 d o 15 po k ia ľ už ív a t eľ ne s t l a č í ne j akú
k l áv es u .
2 . D o s t r ed u o b r azo vk y v yp í š t e t ex t AH OJ . P r o g r am o p ak o vane
n ač í t av a zn ak s t l a čen e j k l áv es y. A k už í v a t eľ s t l a č í 'C ' , náp i s s a
p r ep í š e č e r veno u fa r b ou , ak s t l a č í 'M ' - m o d ro u , 'Z ' - z e l enou ,
. . . 'K ' - p ro gr am kon č í .
Kl á vesy mô žeme ro zde l i ť n a :
zn ako v é ( A , @ , + , 3 , m edz er a , . . . ) - i ch s t l a čen í m už í v a t eľ
z ad áv a zo b r az i t eľ ný z n ak
f unk čn é ( En t e r , Es c , š íp k y, F1 , In s e r t , . . . ) - i ch s t l a čen ím sa
v yv o l áv a n e j ak á f un k c i a (n ap r . Es c má v äč š in ou f un k c i u s to r no ,
F1 - h e l p , . . . )
p rep ín a c i e ( Al t , Sh i f t , C t r l ) - p ouž íva j ú sa v k om bin ác i i s i n ou
k l áv es o u a m en i a j e j f un k c i u , r e sp . z nak
I né ro zd e len i e k láv es :
j edno ba j to v é - i ch s t l a čen ím s a z ad áv a j ed en zn ak ( A , 3 , + ,
E nt e r , Es c , . . . )
d vo jb aj t ov é - i ch s t l a čen í m s a z ad áva j ú dv a zn ak y, z k t o r ých
p r v ý j e z n ak s k ód om 0 ( š í pk y, F1 , . . . )
Zn ak y m ô ž em e z ap i s ov ať ( o k r em b ežn ého s pô so bu s ap os t r o f ami ,
n ap r . 'A ' ) a j p o moco u i ch k ód ov : # <k ód> ( n ap r . #6 5 ) . T en t o sp ôs ob
s a p ouž í v a h l av ne p r e n ezo b r az i t eľ n é zn ak y ( n ap r . k l áv es a E sc
z ad áv a zn ak #2 7 ) .
Algoritmizácia a programovanie – učebné texty 39
Preh ľad zn ako v n iek to rý ch k lá v es :
E s c j edn ob a j to v á # 2 7
E n t e r j edn ob a j to v á # 1 3
š íp k a ho r e d v o jb a j to v á # 0 # 72
š íp k a vľ av o d v o jb a j to v á # 0 # 75
š íp k a vp r av o
š íp k a do l e
H o me
E n d
P gU p
P gD n
In s e r t
D e l e t e
F1
C t r l F1
Pr í k l ad : P ro gr am o p ak ov an e n ač í t av a s t l a čen ú k l áv es u a v yp i s u j e , č i
j e j ed no b a j t ov á a l eb o dv o j ba j t ov á a v yp í š e j e j k ód , r e s p . k ód y. S
p om o co u to h t o p ro gr amu do p l ň t e ho r euv eden ú t ab uľku . P ro gr am
k o nč í po s t l ačen í Es c . D op l ň t e ch ýb a j ú ce čas t i ozn ačen é " . . . . . "
uses Crt;
var ZN1, ZN2:char;
begin
repeat
ZN1:=readkey;
if ZN1=.....
then begin ZN2:=readkey;
writeln('Klavesa je dvojbajtova, jej kody
su: 0 a ',.....)
end
else writeln('Klavesa je jednobajtova, jej kod je:
',.....)
until ZN1=.....
end.
Algoritmizácia a programovanie – učebné texty 40
Pr í k l ady :
1 . V yp í š t e d o s t r edu o b r azo vk y t ex t AH OJ . P r o gr am o p ak o vane
n ač í t av a s t l a čen é k l áv es y a p o dľ a š íp o k po sú v a t ex t o r i ad ok
v yš š i e / n i ž š i e , o s t ĺ p ec doľ av a /d op r av a . Po s t l a čen í Es c p r o gr am
k o nč í .
1 .26. Kontrolovaný vs tup
V st up n á p odm i en ka a l go r i tm u u r ču j e , ak é v l as tn os t i ma j ú mať
ú d a j e , k to r é do s t ane a l go r i tm us n a v s tu p e . N ap r : " D an é j e p r i ro dz ené
č í s lo N vä čš i e a ko 1 . " , " D an á j e p os t up no s ť k l ad n ých reá ln ych č í se l
u kon čená n u l ou . " P r e už í v a t eľ a to zn amen á , ž e ak ch ce , ab y m u
a l go r i tmu s da l n a z áv e r sp r áv n e v ýs l ed k y, m u s í m u n a v s t u p e z adať
ú d a j e v yh o v u j ú ce vs tu pn e j po dmi enk e . Zad an i e n es p r áv neh o úd a j u n a
v s t up e môž e sp ôso b i ť , ž e p ro gr am s k on č í p r edčasn e s ch yb o v ým
h l ás en ím ( p ro gr am " s p ad ne" ) a l eb o nám d á n a v ýs t u p e z l é v ýs l ed k y.
D o b r ý p r o gr am b y m al b yť z ab ezp ečen ý p r o t i ch yb ám už í v a t eľ a a
k o n t ro l ov ať k ažd ý ú d a j z adan ý n a v s t up e . V p r í pad e z ad an ia
n e sp r ávn eh o úd a ju s a m us í v s t up zop ak o vať .
C hyb a vs tup ného úd a ju mô že by ť :
- v t yp e ( n ap r . už í va t eľ m al z ad ať ce l é č í s l o a z ad a l zn ak)
- v h od no te ( n ap r . už ív a t eľ m al z adať č í s lo z i n t e r v a l u <1 , 10 > a
z ad a l 2 0 )
S chém a ko n t ro l ov an ého v s t up u :
repeat
writeln('Zadaj...');
readln(U);
if <údaj U je zlý>)
then writeln('Zle - zadaj znova')
until <údaj U je je dobrý>
Z a t i a ľ b u d e m e k o n t r o l o v a ť l e n s p r á v n o s ť h o d n o t y .
Algoritmizácia a programovanie – učebné texty 41
Pr í k l ad :
N ap ro gr a mu j t e ko n t r o lo v an ý v s tu p ce l éh o č í s l a z i n t e rv a lu < -1 0 , 10 > .
1 .27. Podprogram
P od pr o gr am j e l o gick y u ce l en á časť p r o gr amu - po s t up no sť p r í k azo v ,
k to r á r i e š i n e j aký p o d p r o b l ém a j e ozn ačen á v l a s tn ým m en om
( i den t i f i k á t o rom ) .
N ap r . : N aš ou ú lo h ou j e v yt v o r i ť p ro gr am, k to r ý n ak r e s l í na
o b r azo vk u ob d ĺžn ik o vú d úh u , v h o rne j č as t i v s t r ed e vyp í š e "PRŠ Í
PRŠ Í" a v s t r ed n e j č a s t i n ech á r o l ov ať r i adk y, v k t o r ých s ú s t r i edavo
v yp í s an é b odk y a m edz e r y p o dľ a v zo r u :
T út o ú lo hu môž em e r ozd e l i ť n a č i a s tk ov é ú l oh y ( p o d pr ob l ém y) :
n ak r es l i ť dú hu , u r o b i ť n áp i s a u r o b i ť d ážď ( r o l u j úce r i adk y s
b o dk ami a m edzer ami ) . K ažd ý p o d p ro b l ém bu de r i e š i ť n e j ak ý
p o dp ro gr am, n az v im e i ch : D U HA , N A P IS , D A ZD . A k b y t i e t o
"p r ík az y" p o č í t a č poz n a l , ná š p ro gr am b y b o l v eľ mi j ed no d uch ý:
begin
DUHA;
NAPIS;
DAZD;
end.
P r í k az y, k to r é s m e v p ro gr ame
p o už i l i , n i e sú s ú čas ťo u j az yk a
P as ca l , p r e t o i ch m us í me po č í t aču
p r e sn e "v ys ve t l i ť " , m us íme i ch zad ek l a ro v ať .
D ekl ará c i a p odp rog ra mu (p ro cedú ry) :
procedure <identifikátor>;
<deklaračná časť>;
begin
<príkazy>;
end
Algoritmizácia a programovanie – učebné texty 42
P od pr o gr am m á ro v nakú s t avb u ako p r o gr am , roz d ie l j e l en v
h l av i čk e (m ie s t o ' p r o gr am ' p í šem e ' p r o ced ur e ' ) . Za s ym bo lom ' en d '
n ed áv am e bo dk u , a l e b od ko č ia r ku , k to r á s lúž i ak o od d eľ ov ač od
ď a l š e j č a s t i .
U mi es tn en i e d ek lará c ie podp rog ra mu : v d ek l a r ačne j ča s t i h l av ného
p r o gr am u ( t am , kd e j e u mi es t n en á d ek la r ác i a p r em enn ých ) . Zau ž ív ané
p o r ad i e j e , ž e n a j sk ô r d ek l a r u j em e p rem enn é a p o n i ch p o dp ro gr am y,
a l e môž e to b yť a j n aop ak .
V o lan i e podp rog ra mu : v h l av nom pr o gr am e, t am, kd e ch ceme , ab y
s a v yk o n a l i p r ík azy p o d p r o gr amu , n ap í š em e l en j eh o men o . T ak ýt o
z áp i s s a b e r i e ako j ed en p r ík az .
N áš p ro gr am bu d e n ako n i ec v yz e r ať t ak to :
program APRIL;
procedure DUHA;
begin
...
end;
procedure NAPIS;
begin
...
end;
procedure DAZD;
begin
window(20,7,60,19); {súradnice okna treba prispôsobiť}
textbackground(lightgray);
textcolor(black);
clrscr;
repeat
write('. ');
until keypressed
end;
Algoritmizácia a programovanie – učebné texty 43
Begin
DUHA;
NAPIS;
DAZD
end.
Ú l oha p re v ás : Do pl ň t e ch ýb a j ú ce p r ík azo v é čas t i p od p ro gr amov .
V ýh ody p ou ž i t ia po dp ro g ra mo v :
p r ehľ ad n e j š í p r o gram
m ožn osť l ad i ť p ro gr am po s t up n e po čas t i a ch
s t ru čn e j š í z áp i s p ro gr amu ( ak sa n e j ak á p os t up no sť p r í k azo v
o p ak u j e n a v i ace r ých mi e s t ach p ro gr a m u, s t a č í j u z ap í s ať l en
r a z - z ad ek l a r ov ať p o dp ro gr am - a vo lať p o t r eb n ý p o če t k r á t )
1.27.1. Lokálne a globálne premenné
A j p od p ro gr am môž e m ať s vo j e v l a s tn é p r em en n é d ek l a r o v an é v j eho
d ek l a r ačn e j č a s t i . T i e t o p r em enn é s a n az ýv a j ú l o ká ln e a m ôž e i ch
p o už ív ať l e n t en to po dp r o gr am . Ok r em n i ch môž e p o už ív ať a j
p r em enn é z h l avn éh o p r o gr amu - g l ob á ln e . Ak ex i s t u j e l o k á l n a a j
g l o b á ln a p r em enn á s t ým i s t ým m en om, s ú to dv e r ôzn e p r em en n é a v
p o dp ro gr am e j e po už i t eľ n á l en lo ká l n a ( g l ob á l n a j e za t i enená ) .
N ap r ík la d:
program HLAVNY;
var A,B:integer;
procedure PROC;
var B,C:integer;
begin
A:=1; B:=2; C:=3
end;
begin
A:=4; B:=5;
PROC;
writeln(A,B)
end.
Algoritmizácia a programovanie – učebné texty 44
A k é ho dn o t y v yp í š e t en to p ro gr am? Č o v yp í š e , ak p os l edn ý p r í kaz
zm en ím e n a writeln(A,B,C) ?
Pr í k l ady :
1 . D an é j e p r i r odz ené č í s lo N . "V yk r e s l i t e " n a o b r az ov ku š t vo r ec
s o s t r an ou N, p o o bv od e k t o r éh o b u dú h v i ezd i čk y a v nú t r i
m edze r y. V yt v o r t e p od p ro gr am, k to r ý v yp í š e d o r i ad k u N
h v i ez d i č i ek a d ru h ý p o d pr o gr am , k to r ý v yp í š e d o r i adku
h v i ez d i čk u , z a ňou ( N - 2) m edz i e r a n a k on iec hv i ezd i čku . S
p om o co u t ých t o p od p ro gr amo v v yt v o r t e h l avn ý p r o gr am.
1.27.2. Používanie premenných a podprogramov
P r e k ažd ý o b j ek t v p r o gr am e ( p r emen n é i p od p ro gr am y) p l a t í , ž e
mu s í by ť dek la rov an ý skô r , ak o je pou ž i t ý . T . z n . ak ch c em e
p r em enn ú z h l avn éh o p ro gr amu po už i ť v n e j ak om po d pro gr am e, mu s í
b yť d ek l a ro van á sk ô r n ež t en to p odp r o gr am . Ak ch cem e , ab y j ed en
p o dp ro gr am m oh o l v o l ať i n ý p o d p ro gr am, mu s í b yť v o l an ý
d ek l a ro v an ý s k ô r ak o v o l a jú c i .
1 .28. Ponukový program
J e t o p r o gr am , k t o r ý v yp í š e p o nu ku n i ek oľk ých s l už i eb , už ív a t eľ s i
n i ek t o rú z n i ch v yb e r i e a p ro gr am ju z r ea l i z u j e . To t o v š e t ko op aku j e ,
k ým u ž í v a t eľ n ezad á p o k yn n a u k on čen i e .
S ch éma po nuko v éh o p rog ra mu :
repeat
writeln('1. sluzba');
writeln('2. sluzba');
...
writeln('N. sluzba');
writeln('0. koniec');
writeln('Zadaj cislo sluzby, ktoru si si
vybral:');
readln(VYBER);
Algoritmizácia a programovanie – učebné texty 45
case VYBER of
1:<volaj procedúru 1>;
2:<volaj procedúru 2>;
...
N:<volaj procedúru N>
end;
until VYBER=0
K v ôl i p r ehľ adn os t i p ro gr amu j e do b r é k až dú s l užbu r ea l i zo v ať
zv l áš t n ym p o dp ro gr amo m.
Po s tu p l ad en i a p onuk ov éh o prog ra mu :
P on uk ov ý p r o gr am j e r oz s i ah l e j š í a j e d o br é l ad i ť ho p o ča s t i a ch - po
j edn o t l i v ých p r o ced ú r ach . T .zn . n a j sk ô r v yr o b ím e h l avn ý p r o gr am s
p r áz dn ou po nu ko u s l už i eb . Do p ln íme d o ň p r vú s l užb u a p r o cedú ru ,
k to r á j u r ea l i zu j e . P ro gr am sp us t ím e , o ds kú š am e, č i p r acu j e t ak , ako
t r eb a , p r í p . o p r av ím e ch yb y. D o p ln ím e ď a l š i u s l užb u a j e j p ro cedú ru
a tď .
Pr í k l ady :
1 . V yt v o r t e po nu ko vý p r o gr am , k to r ý o p a k ov ane n ač í t av a ce l é
č í s lo . Ak už ív a t eľ z ad á 1 , "v yk r e s l í " s l ov ens kú z á s t avu , 2 -
f r an cúz sk u , 3 - maď ars kú , a tď . , ak z ad á 0 - s ko nč í . (Zás t av y
k r e s l i t e ak o f a r eb né p ru h y - o b d ĺžn iky . )
2 . P on uk ov ý p r o gr am n ač í t a p r i r odzen é č í s lo N a p o nú kn e
už ív a t eľ ov i n ak r es l en i e t ých t o geo m et r i ck ých ú t v ar o v z
h v i ez d i č i ek : 1 . š t vo r ec s o s t r ano u N , 2 . p r avo uh l ý t r o ju ho ln ík s
o d vesn ami d ĺ ž k y N , 3 . r ov no r am enn ý t r o ju ho ln í k s v ýš k ou N, 4 .
k os oš tv or ec s o s t r an o u N.
***** * * *****
***** ** *** *****
***** *** ***** *****
***** **** ******** *****
***** ***** ********** *****
Algoritmizácia a programovanie – učebné texty 46
1 .29. Typ pole
P ol e j e d á t ov á š t ru k t ú ra - o bs ahu j e v i ace r o d á t n e j ak ým s pô so bom
u sp o r i ad an ých . P o le p ozo s t áv a z n i eko ľk ých p r vk ov r ovn ak éh o t yp u
u sp o r i ad an ých v r ad e z a s e b ou . I ch p oče t j e p ev ne u r čen ý v
d ek l a r ác i i . Z u veden ého v yp l ýv a , ž e p o l e ako d á to v á š t ru k tú r a má
t i e to v l a s t no s t i :
- l in eá rn a ( p rv k y s ú usp o r i ad an é v r ade z a s eb ou )
- h o mo g énna (v š e tk y p r v k y s ú r ov nakéh o t yp u )
- s ta t i ck á (p o če t p r v ko v j e s t á l y, n emen n ý)
P o l e s i môž em e g r a f i ck y z n ázo rn i ť t ak t o :
1 2 34 1 2 40 1 2 65 1 2 20 1 2 70 1 3 01 1 4 00 1 3 50 1 3 60 1 3 86 1 4 20 1 4 21
V t ak e j t o d á to v e j š t ru k tú r e môž em e m ať u lož en ú i n fo rm ác i u o s t av e
ú č tu v bank e p očas 1 2 m es i acov r ok a . ( V p r vo m p r vk u j e s t av ú č t u v
j anu á r i , v d ru hom p r vk u s t av ú č tu vo f eb r uá r i a tď . ) To to b y b o l o p o l e
č í se l .
O k r em p oľ a č í s e l s i m ôžem e v yt v o r i ť n ap r . p o l e mi en d e t í :
M i ch a l Zu zk a A n d re j V i l ma
A l eb o po l e z n ak ov , v k to ro m m ôžu b yť z ap í s an é s p r ávn e o d po ved e n a
t e s to v é o t ázk y ( A , B , C , D ) :
A C B A D A
P rv ý p r v o k p oľ a ob s ah u j e s p r áv nu od p ov eď na p rv ú t es to vú o t ázk u ,
d r uh ý p r v ok - n a d ru h ú . . . a tď .
C el é po l e j e j edna premenn á o zn ačená j edn ý m id ent i f ik á to ro m.
J edno t l iv é p rvk y po ľa sú roz l í š en é ind exa mi . In d ex s i môž em e
p r eds t av i ť ak o po r ad o vé č í s lo .
1 2 3 4 5 6
A C B A D A
Algoritmizácia a programovanie – učebné texty 47
D ekl ará c i a p remenn e j t ypu po l e :
var <premenná>:array [<typ indexu>] of <typ prvkov>
T y p i n d e x u j e o r d i n á l n y ( c e l o č í s e l n ý , c h a r , b o o l e a n , . . . ) a z v y č a j n e s a z a p i s u j e
a k o i n t e r v a l o d . . d o . T y p p r v k o v j e ľ u b o v o ľ n ý .
N azv i me p o l i a , k to r é s m e s i g r a f i ck y zn áz or n i l i v yš š i e , U C ET , D E T I,
T ES T. Ich d ek l a r ác i a b ud e v yz e r ať n a s l edo vn e :
var UCET:array[1..12]of real;
DETI:array[1..4]of string;
TEST:array[1..6]of char
T y p s t r i n g s a n a u č í m e n e s k ô r . V p r e m e n n e j t y p u s t r i n g m ô ž e b y ť u l o ž e n é c e l é
m e n o ( p o s t u p n o s ť z n a k o v ) .
In d ex y n em us i a b yť vžd y l en ce l é č í s l a a n emu s i a vž dy z ač í n ať od
č í s l a 1 . Nap r . :
var A:array[-5..5] of integer;
B:array['a'..'z'] of boolean
Sp rí s tupn en i e p rvku po ľa : <premenná>[<index>]
N ap r . : UC ET[ 1] j e p r v ý p r v o k p oľa U C ET , DE T I[ 4 ] j e p os l edn ý
p r vo k poľ a DE T I.
A k b y s m e ak o i nd ex po už i l i h od no t u m imo i n t e rv a l u u r čen éh o v
d ek l a r ác i i , n ap r . UC ET[ 0] a l eb o DE TI[ 5 ] , p oč í t a č b y v yh l ás i l ch yb u :
„R an ge ch eck e r r o r“ .
A k v á m a j n a p r i e k c h y b e v p r o g r a m e p o č í t a č n e v y p í s a l c h y b o v é h l á s e n i e , t r e b a
s i h l a v n o m m e n u P a s c a l u , v p o l o ž k e O p t i o n s - C o m p i l e r z a p n ú ť v o ľ b u " R u n t i m e
e r r o r s : [ X ] R a n g e c h e c k i n g . "
Prá ca s p rvka mi p oľ a: s j edn o t l i v ým i p r vk am i p r acu j em e ak o s
p r em enn ým i p r í s luš n éh o t yp u . (S p r vk om UC ET[ 1] p r acu j em e ak o s
p r em enn ou t yp u r ea l , s p r vk om T ES T[2] ak o s p r em en no u t yp u ch a r . )
UCET[1]:=123.50;
UCET[2]:=UCET[1]*2;
I:=3;
writeln(DETI[I]);
if TEST[1]='A' then P:=P+1
PO ZO R : p r em ennú t yp u p o l e nemôž em e n ač í t av ať an i v yp i s ov ať :
r e ad l n (U CE T ) ; w r i t e l n ( UC E T)
Algoritmizácia a programovanie – učebné texty 48
P ol e n ač í t avam e a j v yp i s u j em e p o j edno t l i v ých p r v ko ch :
readln(UCET[1]);
readln(UCET[2]);
readln(UCET[3]);
...
readln(UCET[12])
a l ebo j ed no du chš i e :
for I:=1 to 12
do readln(UCET[I])
Pr í k l ad :
1 . D an á j e po s tu pn os ť d es i a t i ch ce l ých č í s e l . V yp í š t e t ú i s t ú
p os tu pn osť :
a ) odz ad u ( p rv k y v o p ačn om p or ad í )
b ) b ez n u lo v ých p r v k ov
c ) n a j s kô r z ápo r n é a po tom n ez ápo rn é p r vk y
V p r ax i v äč š in ou d o pr edu n ev i em e, ak é v eľ k é p o l e b u deme
p o t r eb o vať . Ú lo ha m ôž e b yť z ad an á t ak to : Da n é j e p r i r odz en é č í s l o N
a N - pr vko vá po s t up n os ť r eá ln y ch č í se l . . . . H od no t a N sa n ač í t a až po
z ah á j en í p ro gr amu , a l e p o l e mu s í b yť d ek l a r ov an é s kô r . A k b y s me
p o l e d ek l a ro v a l i t ak to : var A:array[1..N]of real ; p o č í t a č b y n ám
p r i p r em enn e j N vyh l á s i l ch yb u : „C an n o t ev a lu a t e t h i s ex p r es s io n “ .
( N emôž em v yh o d no t i ť t en t o v ýr az - n epoz n ám j eh o h odn o t u . ) R ozs ah
i nd ex o v m us í b yť v d ek l a r ác i i u rčen ý k o nš t an to u .
Ri eš im e t o t ak , ž e o dh adn em e m ax im ál nu ho dn o tu N a d ĺ ž ku
p oľ a u r č ím e p odľ a t oh to o dh adu . N ap r . : D an ý j e po če t ž ia ko v v t r i ede
N a N - pr vko vá p os tu pn os ť r eá ln ych č í s e l , p r ed s t avu jú ca i ch
p r i em er n é z ná m ky . . . O dh ad n em e , ž e v t r i ed e n eb ud e v i ac ak o 40
ž i ako v a po l e z ad ek l a r u j em e n a s l ed ovn e :
var A:array[1..40]of real
A l eb o j e h o rn á h ran i ca v s t up n ých h o d nô t u r čen á p r i am o v z ad an í :
D a n é j e pr i r odz en é č í s l o N (N <=1 0 0 ) a N - pr vko vá p os tu pn os ť
r eá l nych č í s e l . . . . Dek l a r ác i a t eda b ud e :
var A:array[1..100]of real .
A k b y s m e to s d ĺ žk o u poľ a p r eh n a l i , n ap r . :
var A:array[1..20000]of real ;
Algoritmizácia a programovanie – učebné texty 49
p o č í t a č v yh l á s i chyb u : „S t r u c tu r e t oo l a r ge“ . (P r í l i š ve ľ ká d á t ová
š t ru k tú r a - n ezm es t í s a d o v yh r ad en e j č a s t i p am ät e . )
Pr í k l ady :
1 . D an ý j e p o če t z am es tn ancov N ( N <=1 00 ) a N - p r vk ov á
p os tu pn osť p r i rodz en ých č í s e l , p r eds t avu jú c i ch p l a t y
z am es tn ancov . Zi s t i t e i ch p r i em ern ý p l a t a p o če t z am es t nan cov ,
k to r í m aj ú po dp r i em ern ý p l a t .
2 . D an ý j e p o če t dn í v m es i ac i N a N - pr v ko v á p os tu pn osť ce l ých
č í se l p r ed s t avu j ú ca t ep lo t y n am er ané v j ed no t l i v ých d ň och o
1 2 ,0 0 ho d . N á jd i t e h od no tu n a j n i ž še j t ep lo t y v d an om ob d ob í a
v yp í š t e č í s l a dn í , v k t o r ých b o l a n am er an á ( môž e i ch b yť v i ac ) .
3 . D an á j e v e t a - po s tu p nos ť zn ako v - v j edn om r i adk u . Z i s t i t e , č i
j e t o p a l i nd r óm ( p o v yn ech an í medz ie r a i n t e r pu nk čn ých
zn ami en ok , s i gnor o v an í m r ozd i e l u m edz i m al ým i a veľ k ým i
p í s men ami , j e s ym e t r i ck á , t . zn . od pr edu i odz ad u zn i e ro vn ako ) .
N ap r . "Ko b yl a m a m al y b o k . " j e pa l ind r óm .
4 . D an ý j e p o če t d e t í N ( N <=50 ) a p os t up no sť N r eá l n ych č í s e l
p r eds t avu jú c i ch ús po r y j ed n o t l i v ýc h d e t í . P r o gr am n ač í t a
v s t up n é d á t a a r e a l i zu j e n as l ed o vn ú p on uk u s luž i eb :
a ) v ýp i s s t av u úsp or v t v a r e :
1. dieťa: 12,50 Sk
2. dieťa: 8,10 Sk
...
N. dieťa: 222,00 Sk
--------------------
Spolu: xxx,xx Sk
b ) zv ýš i ť k ažd ém u d i eť ať u ho dn o tu ú sp o r o K k or ún (K j e d an é )
c ) us ku to čn i ť zb i e r k u p o K k o rú n ( K j e d an é) : k ažd é d i eť a dá
d o zb i e r k y K k o r ún , ak m á m en e j , t ak d á vš e tk o , čo m á . V yp í š e
s a h od no t a v yz b i e ran e j s um y.
Algoritmizácia a programovanie – učebné texty 50
d ) zú r o č i ť ú sp o r y - pr ip o č í t ať kaž dém u d i eť ať u k j eho sum e
ú r ok y, k to r ých p e r cen to j e u r čen é t ab uľ ko u :
suma do 10,- Sk: 1%
suma do 50,- Sk: 2%
suma nad 50,-Sk: 3%
e ) z aev i do v ať n ov é d i eť a (n ač í t a s a j eh o s um a , k to rú vk lad á do
b ank y a z a r ad í s a na ko n i ec po ľ a)
f ) v yl ú č i ť I - t e d i eťa z ev i d en c ie ( I j e d an é )
g) z aev id ov ať p ro t ek čn é d i eť a ( n ač í t a s a j eh o s um a, k to rú
v k l ad á do b an k y a z a rad í s a n a z ač i a to k p oľ a)
1 .30. Deklarácia konštánt
K o nš t an t a j e ko nk r é t n a ho dn o t a u r č i t ého t yp u , k t o r á s a m ôže
v ys k yt o v ať v p r ogr am e n a r ôzn ych mi e s t ach . N ap r . c e lo č í s e l ná
k o nš t an t a 2 0 s a môž e v ys k yt o v ať v d ek l a r ác i i poľ a , v p r i r aď ov acom
p r ík az e , v p od mi enk e a po d . :
var A:array[1..20]of integer;
begin
...
I:=I+20;
...
if N>20 then writeln('POZOR!' );
...
end.
P od ob n e zn ak ' . ' ako ko nš t an t a t yp u cha r :
begin
...
repeat
read(znak);
if znak<>'.' then ...;
until znak='.';
...
end.
Algoritmizácia a programovanie – učebné texty 51
A k s a r ozh od n em n ap r . v p r ve j u k ážk e z v äčš i ť r oz s ah p oľ a na 100 ,
m us ím o p rav i ť v p ro gr am e v š e tk y k o n š t an t y s h o dn o t ou 2 0 , sú v i s i a ce
s r oz s ah om poľ a , n a 10 0 . V roz s i ah l e j šo m p ro gr am e to môž e b yť
p r ob lém. P r e t o j e v ýh o d n e j š i e t ú to k o nš t an tu po m eno v ať , n apr .
R O ZSA H a v p r o gr am e po už ív ať l en t en t o ind en t i f i k á t o r .
S am oz r e jm e , s kô r n ež h o p ouž i j em e , m us ím e ho z ad ek l a r o v ať : con s t
R O ZSA H =2 0 . D ek la r ác iu u mi es tn i m e d o d ek l a račn e j č as t i p ro gr amu,
zv yča j n e p r ed dek l a r ác i u p r emenn ýc h , a l e n i e j e t o p o dmi en ko u .
P od ob n e s i môž em e z adek l a ro v ať k o nš t an tu t yp u ch a r : con s t
K O NC O V Y_ ZN A K= ' . ' . N aš e uk áž k y p r o gr am ov bu dú po to m v yz e r ať
t ak to :
const ROZSAH=20;
var A:array[1..ROZSAH]of integer;
begin
...
I:=I+ROZSAH;
...
if N>ROZSAH then writeln('POZOR!');
...
end.
P od ob n e zn ak ' . ' ako ko nš t an t a t yp u cha r :
const KONCOVY_ZNAK='.'
begin
...
repeat
read(znak);
if znak<>KONCOVY_ZNAK then ...;
until znak=KONCOVY_ZNAK;
...
end.
A k sa t e r az roz hod n em e zv äčš i ť roz s ah p oľ a n a 10 0 , zm enu s t a č í
u r ob i ť l en n a j ed no m mi es t e p r o gr amu , v d ek l a rác i i ko nš t an t y: co ns t
R O ZSA H =1 0 0 .
S yn ta x d ek l a rá c ie k onš ta nt y :
const <identifikátor>=<konštanta>
Algoritmizácia a programovanie – učebné texty 52
T ak t o d ek l a r u j em e k o nš t an t y j ed n od u ch ých t yp o v ( i n t ege r , r e a l , ch ar ,
b o o l ean , . . . ) .
N i ek to r é ko nš t an t y s ú sú ča sťo u P as ca l u , n em us í m e i ch d ek l a r ovať ,
m ôž em e i ch l en použ ív ať . J ed no u z n i ch j e ko nš t an t a P I ( Lu d o l fovo
č í s lo 3 ,1 4 . . . ) .
1 .31. Deklarácia typu
A k p ouž ív am e v p ro gr am e š t ru k t u ro van ý t yp ( z a t i aľ poz nám e l en t yp
p o l e ) , z v yk n em e h o po m en ov ať a v p ro gr am e p r i dek l a r ác i i
p r em enn ých p ouž í vať l en j eh o id en t i f i k á to r .
S yn ta x d ek l a rá c ie t yp u :
t yp e < id en t i f i k á t o r>=<d e f i n í c i a t yp u >
N ap r í k l ad :
type TPOLE=array[1..100]of real
Takýto typ môžeme použiť pri deklarácii
premennej typu pole:
var A:TPOLE
Je to to isté ako keby sme priamo
deklarovali:
var A:array[1..100]of real
V ýh o d o u d ek l a r ov an i a t yp u j e , ž e ho z ad ek l a ru j em e l en r az a môž me
h o po už i ť n a r ôzn ych mi e s t ach p ro gr am u p r i d ek l a r ác i i p r em en n ých -
g l o b á ln ych i l ok á ln ych . K eď sa n e sk ô r n au č ím e po už í vať
p o dp ro gr am y s p a r am e t r ami , d ek l a r ác i a t yp o v bud e d ok on ca
n ev yh n u t n á .
D op o ru čen i e :
T ak ako n ázv y p r e m enn ých v o l ím e p od ľ a t oh o , čo ob s ahu j ú , a j n áz v y
t yp o v b y m a l i ko re š po nd ov ať s p r emen n ým i , p r i dek l a rác i i k t o r ých
b u dú p ouž i t é . Zv yč a j n e s a n ázov t yp u z ač ín a p í sm eno m T . N ap r í k l ad ,
v p r o gr am e z ad ek l a r u j em e p r emenn ú typ u p o l e , v k to r e j b u dú u l ož ené
p o č t y b o do v , k to r é z í sk a l ž i ak v p í s omk e z a j edn o t l i v e o t ázk y:
Algoritmizácia a programovanie – učebné texty 53
co ns t P OC ET _ OT AZO K =2 0;
t yp e T BO D Y =ar r ay[ 1 . .P OC E T_ OT A ZO K] o f i n t ege r ;
v a r BOD Y: T BO DY
Ú l oha na p r em ýš ľan i e :
A k m ám e v p ro gr am e dv e p r em en né r o vn ak éh o t yp u ( n ap r . A , B) ,
m ôž em e p r i r ad i ť ob s ah j edn e j p rem enn e j do d ru he j ( n ap r . A: =B) . T yp
p r em enn ých m ôže byť ľ ub ov oľ n ý ( a j po l e ) . N apr . :
v a r A , B: a r r ay[ 1 . .1 00] o f r e a l ;
b eg i n A : =B en d .
A k p ouž i j em e i n ý s pô so b d ek l a r ác i e p r em enn ých , môž e n ám po č í t ač
p r i p r ík az e A :=B h l á s i ť ch yb u "T yp e m ism at ch " (N ez hod a t yp o v ) . V
k to r e j z t ých t o u k ážo k k tom u d ô jd e a p r ečo?
a ) v a r A: a r r a y[ 1 . . 10 0] o f r e a l ;
B : a r ra y[ 1 . . 10 0] o f r e a l ;
b eg in A: =B end .
b ) t yp e p o l e=a r r ay[ 1 . .1 00] o f r e a l ;
v a r A: po le ;
B : po l e ;
b eg in A: =B end .
c ) t yp e p o l e=a r r a y[ 1 . .1 00] o f r e a l ;
v a r A , B :p o l e ;
b eg in A: =B end .
d ) t yp e p o l e=a r r ay[ 1 . .1 00] o f r e a l ;
v a r A: po le ;
B : a r ra y[ 1 . . 10 0] o f r e a l ;
b eg in A: =B end .
1 .32. Vym enovaný typ
N i ek ed y p o t r ebu j em e p r acov ať v p rogr am e s i n ým i h o dn o t am i n ež sú
č í s l a , zn ak y, l o g i ck é h od no t y a p o d . S kr á tk a , ž i aden z o š t an da r dn ý ch
Algoritmizácia a programovanie – učebné texty 54
t yp o v sa n ám n eho d í . M ôžem e s i vy t v o r i ť v l as t n ý t yp s v l a s tn ou
m nož i no u ho dn ô t . K ažd ú h od no tu označ ím e n e j ak ým i d en t i f i k á to r om
a v ym en u j em e i ch v dek l a r ác i i t yp u .
S yn ta x d ek l a rá c ie v y meno van éh o t ypu :
type <identifikátor typu>=(<zoznam identifikátorov hodnôt
oddelených čiarkami>)
N ap r í k l ad p o t r ebu j em e v p ro gr am e p r aco v ať s h od no t ami
p r eds t avu jú c i mi d n i v t ýž d n i . Ozn ač ím e i ch P O N DE LO K , UT OR O K,
S TR ED A, S TV RTO K , P IA T O K , S OBO T A a NE D E LA . T yp s t ou to
m nož i no u h od nô t nazv em e T D EN a z ad ek l a ru j em e ho :
type TDEN=(PONDELOK, UTOROK, STREDA, STVRTOK, PIATOK,
SOBOTA, NEDELA);
var DEN:TDEN
Zár o v eň sm e z adek l a r ov a l i p r em enn ú DE N , do k t o r e j m ôž eme
p r i r aď ov ať h od no ty z o s ed emp rv ko ve j mn ož i n y h o d n ô t t yp u T D E N,
n ap r . DEN:=STREDA .
K ažd á ho dn o t a v m nož i n e m á p r i de l en ý k ó d ( ce l é č í s lo ) p očnú c od
n u l y. N ap r . kó d h o dn o t y S T RE D A j e 2 . P r e ho dn o t y t o h to t yp u
m ôž em e p ouž í v ať f u nk c ie OR D , SU C C , PRE D , t ak ak o s m e i ch
p o už ív a l i p re t yp ch a r . Ho dn o t y v ym en o v an éh o t yp u n e môž em e
n ač í t ať an i v yp í s ať : r e ad l n ( D EN ) ; w r i t e l n (D E N ) P ouž í v am e i ch k vô l i
l epš e j č i t a t eľ no s t i p r o gr am u.
1 .33. Typ interval
M nož in a ho dn ô t t oh to t yp u j e p od množ in ou in ého o rd i ná l n eh o t yp u
( ch a r , b oo l ean , c e lo č í s e l n ý a v ym en o v an ý t yp ) a j e u r čen á d o ln ou a
h o rn ou h r an i co u .
S yn ta x d ek l a rá c ie t yp u in t erva l :
type <identifikátor typu>=<dolná hranica>..<horná hranica>
P r í k l ad y d ek l a rác i í i n t e r v a lo v a i ch po už i t i e p r i d ek l a r ác i i
p r em enn ých :
Algoritmizácia a programovanie – učebné texty 55
type TDEN=(PONDELOK, UTOROK, STREDA, STVRTOK, PIATOK,
SOBOTA, NEDELA);
TZNAMKY=1..5;
TABECEDA='a'..'z';
TPRAC_DNI=PONDELOK..PIATOK;
var Z:TZNAMKY;
ZNAK:TABECEDA;
DEN:TPRAC_DNI
T yp T ZN A M K Y je p odm nož in ou t yp u IN T E G ER . S p r em enn ou Z
p r acu j em e ako s p r em en no u t yp u IN T E GE R, a l e p r i r aď ov ať d o n e j
m ôž em e l en ho dn o ty o d 1 d o 5 . P o do bn e T A BEC ED A j e p o dmn ož in ou
t yp u CH AR a TPRA C_ D N I j e p od mn ož i no u t yp u T DE N .
In t e r v a l s a po už ív a h l avn e p r i d ek l a rác i i p oľ a :
const MAX=100;
type TINDEX=1..MAX;
TPOLE=array[TINDEX] of integer;
var A:TPOLE
Pr í k l ad :
1 . N ap ro gr amu j t e obeh h v i ezd i čk y o k o lo o b raz ov k y v s m er e
h o d in ov ých r u č i č i ek , p ok i aľ už ív a t eľ n e s t l a č í ľ ubo v oľnú
k l áv es u . (P r acu j t e s r i adk am i 1 . . 25 a s t ĺ p cam i 1 . . 79 , po s l edn ý
s t ĺ p ec i gn or u j t e . )
R i eš en i e :
V c yk l e bu dem e op ako v an e v yp i s ov ať a z o t i e r ať h v i ezd i čku , p r i čom
j e j s ú r ad n i ce s a b u dú po k až dom k r ok u men iť . A k tu á ln u poz í c iu
h v i ez d i čk y s i b ud em e p am ät ať v p r em enn ých X , Y , p red s t av u j ú c i ch
s ú r ad n i ce hv iez d ičk y. H r ub á s ch ém a p r o gr am u bud e v yz e r ať
n as l ed o vn e :
repeat
<vypíš hviezdičku>;
<počkaj>;
<zotri hviezdičku>;
<zmeň súradnice>
until keypressed
Algoritmizácia a programovanie – učebné texty 56
A k o s a bu dú m en iť sú r adn i ce? R az sa b u d e m en iť x - ová , r az y - o v á
s ú r ad n i ca - r az s a b u de z v äčš ov ať o 1 a r az zm enš ov ať , p o dľ a t oho ,
ak ý m á h v i ezd i čk a p r áv e s mer ( v ých o d , j u h , z áp ad , s eve r ) . Ab y s me
v ed e l i , k to r ú s ú r adn i cu t r eb a zm en iť a ak o , b ud em e s i e š t e p am ät ať
ak tu á l n y s m er v p rem enn e j t yp u TSME R:
type TSMER = (VYCHOD,JUH,ZAPAD,SEVER);
var S:TSMER;
X,Y:integer;
P ro gr am bu d e v yz e r ať n as l edo vn e - dop lň t e ch ýb a j ú ce ča s t i :
begin
{inicializácia premenných - doplňte ďalšie}
X:=1; Y:=1;
repeat
{vypíšeme hviezdičku na pozíciu [X,Y] - doplňte
príkazy}
delay(50);
{zotrieme hviezdičku}
gotoxy(X,Y);
write(' ');
{zmeníme súradnice}
if S=VYCHOD then if X<79 then X:=X+1 el se S:=JUH;
if S=JUH then {doplňte}
until keypressed
end.
Algoritmizácia a programovanie – učebné texty 57
1 .34. Typ reťazec
R eť az ec j e po s t upn os ť z n ak ov , k t o rú z ap i s u j em e m edz i ap os t r o f y.
P o če t z nako v u r ču je d ĺ ž ku r e ťaz ca .
N ap r . : ' FE RO ' j e r e ť az ec d ĺ žk y 4
' PD 12 3A B' j e r eť az ec d ĺ žk y 8 ( po č í t a s a a j m edze r a )
' @' j e r eť az ec d ĺ žky 1
' ' j e r e ť azec d ĺ žk y 0 - p r ázdn y r e ť az ec
D ekl ará c i a p remenn e j t ypu reťa zec :
var <premenná>:string[<maximálna dĺžka reťazca>]
M ax im á ln a d ĺ ž k a re ť az ca u r ču j e , ak ý n a j d l hš í r eť az ec m ôž e b yť v
p r em enn e j u l ož en ý. J e t o c e l é č í s lo z i n t e rv a l u <0 ,2 55> . T á t o časť
d ek l a r ác i e j e n epov in n á , ak ju v yn ech áme , po č í t a č j u au t om at i ck y
d o p ln í na 2 5 5 :
var <premenná>:string
N ap r . :
var R:string[10];
S:string[2];
T:string;
Op erá c i e s r eťa zca mi :
a . p ri rad en i e
R:='ABCD';
S:=R {ak sa priraďovaný reťazec nezmestí do
premennej, skracuje sa sprava}
b . p o ro vnan ie po moco u o p e rá to r ov < > = < > < = > =
D v a re ť azce s a p o ro vn áv a jú po dľa p rv ých zn ako v , n ap r . :
'A BD F '< ' B BC ' , p r e t ož e 'A '< 'B ' .
c . A k s ú p rv é zn ak y z h o dn é , po ro vn áv a sa p odľ a n a jb l i ž š e j d v o j i ce
zn ako v , k to r é s ú r ôzn e , n apr . : 'A BC DE '< 'A BC E ' , p r e t ože
'D '< 'E ' .
d . A k j e j ed en z r eť az co v k ra t š í a ch ýb a m u ď a l š í zn ak na
p o ro vn an i e , po v ažu j e s a ž i adn y z n ak z a m enš í n ež ľu bo v oľn ý
Algoritmizácia a programovanie – učebné texty 58
i n ý z n ak , n apr . : 'A BC '< 'A BC D ' , p r e t ož e ľ av ý r e ť az ec n emá
š tv r t ý z n ak .
e . zreť a zen i e p om o cou o pe r á t o r a + . Zr eť az en i e j e s po jen i e d v och
r e ť az co v do j edn éh o . N ap r . : 'S K ODA ' + 'FA B IA ' = ' S K OD A
FA B IA '
f . n a č í tan ie - r e ť az ce m ôž em e n ač í t av ať p om ocou p r í k azov r ead ,
r ead ln , a l e z a t i aľ bu d em e p ouž í v ať l en read ln .
g . v ýp i s - r eť az ce m ôž em e v yp i so v ať n a ob r azo vk u po mo cou
p r ík azo v w ri t e , w r i t e ln .
Pr í k l ady :
var R,S,T:string[6];
begin R:='MYŠ';
S:='LIENKA';
if S<R
then T:=R+S
else T:=S+R;
writeln(T)
end.
Č o v yp í še t en to p ro g ra m na ob ra zo vku ?
1 . D an é j e p r i r odz ené č í s l o N a N -p rv k ov á po s t up nos ť m i en .
N ač í t a j t e v s tu pn é ú d a j e a v yp í š t e n a o b r azo vk u m en á , k to r é sa
z ač ín a jú n a 'A ' .
2 . D an ý j e r eť az ec Z p r eds t avu jú c i s lo vný z ák l ad , p r i ro dz ené č í s lo
N a N- p rv ko v á po s t up no sť r e ťaz cov , p r eds t avu jú c i ch p red po n y.
V yp í š t e v š e tk y m o žn é s l ov á , k to r é vzn i kn ú z p r edp ôn a z ák l ad u .
D o pl no k : Napo č í t a j t e a j p r i ro dz ené č í s lo M a M -p r vk ovú
p os tu pn osť r eť az co v - pr íp on . V yp í š t e vš e t k y m o ž né s lo v á ,
k to r é vz n ik n ú z o zák l ad u , p r edp ôn a p r íp on .N ap r . : 3 p r ed p on y:
'O ' , 'ZÁ ' , 'V Ý ' , 2 p r í po n y: 'A ' , 'N ÍK ' , z ák l ad : 'H RA D ' vzn i kn u t é
s lo v á : 'O HR A D A ' , 'ZÁ H R A D A ' , 'V Ý H RA D A ' , 'O HR AD N ÍK ' ,
'ZÁ H R A D N ÍK ' , 'V Ý H RA D N ÍK '
Algoritmizácia a programovanie – učebné texty 59
3 . D an é j e p r i ro dz ené č í s lo N . Ulož t e d o p rem en ne j S : s t r i n g
r e ť az ec z l ožen ý z N v ýk r i čn ík ov .
4 . D an ý j e r eť az ec p red s t av u j ú c i č í s lo v s em i l o ga r i t mi ck om t v a re ,
k to r éh o f o rm át j e < ce l é č í s l o> E<p ri r . č í s lo > (n ap r . : -1 2 3E 5) .
P ro gr am v yp í š e t o to č í s lo v b ež nom t va r e (n ap r . : -1 23 00 00 0 ) .
1 .35. Vyhľadávanie
P r i p r ác i s d á to vým i š t r uk t ú rami sa č a s to s t r e t n em e s p o t r ebou
v yh ľ ad ať j ed en a l ebo v i ac p rv kov d an e j v l as tn os t i . N ap r . z
p os tu pn os t i ž i ak ov ch cem e v yp í s ať vš e t k ých v yz n am en an ých , v
p os tu pn os t i ev i d enčn ých z ázn am ov ch ceme n á j s ť z ázn am o os ob e s
m enom 'C yr i l ' , v ro d okm eni k r áľ ovs kéh o r od u ch cem e ná j sť vš e tk ých
s ú ro d en cov Ľ ud ov í t a X IV . , v p o l i c a jno m r eg i s t r i ch cem e n á j sť os ob u
s o t l a čk ami p r s t ov zh od n ým i s o t l a čk ami z m ie s t a č i nu , v s l ov n í ku
ch cem e n á j sť p r ek lad s lo v a .
A l go r i t mu s , k t o r ý p o už i j em e p r i v yh ľ adáv an í z áv i s í h l av n e od t yp u
d á to v e j š t ru k t ú r u , v k to r e j m ám u r čený p r v o k v yh ľ ad ať .
P r i v yh ľ ad áv an í p r v ko v s d an ou v l a s tn osť ou v l i n eá r n e j dá to ve j
š t ru k tú r e ( po s t up nos t i ) môž em p ouž i ť t i e to z ák l adn é a l go r i t m y:
1 . l in eá rn y v ýb er - po s t up n e s ko n t ro lu j em vš e t k y p r v k y o d p r v éh o
p o p os l edn ý, s ko nč í m p r i po s l ed no m p r vk u , a l eb o a j skô r , k eď
n á jd em p r vo k s požad ov ano u v l as tn osťo u :
<nastav sa na prvý prvok>;
while <nie si na konci postupnosti>and<nie je to
hľadaný prvok>
do <posuň sa na ďalší prvok>
K oľ ko z ák l ad n ých o p e r ác i í (p o ro vnan í ) mu s ím e p r i t omto
p os tu p e v yk o n ať v n a j ho r šom p r íp ad e ( t . z n . k eď m us í m e p r e j s ť
c e l ú po s t up nos ť )? S kú s t e t en t o p os t up n ap ro gr amo v ať po mo cou
c yk l u r ep ea t .
Algoritmizácia a programovanie – učebné texty 60
2 . bi ná rn y v ýb er - p r i t o mto po s t up e v yuž i j em e , ž e p os t upn os ť j e
u sp o r i ad an á vzo s tu p ne (o d n a jm enš i eho p o n a jv äč š í ) p o dľa
d an e j v l as t no s t i . V žd y s i v yb e r i eme n a j sk ô r s t r ed n ý p r vo k z
ú s ek u , v k t o r om h ľ a d ám e . Z i s t ím e , č i t o n i e j e t en , k to r ý
h ľ ad ám e . Ak n i e j e a n á š h ľ ad an ý p r v o k j e od s t r ed n éh o m enš í ,
v yb e r i em e s i z p oľa l en j eh o ľ avú p o lo v i cu ( t . j . p r vk y v ľav o od
s t redn ého ) a o p ak u j em e r o vn ak ý p os tu p , k ým n ená j d eme
h ľ ad an ý p r v o k . A k bo l n á š p r vo k v äčš í od s t r ed n ého
p os tu pu jem e ď a l e j v p r av e j po lo v i c i . A k s a hľ ad an ý p r v ok v
p os tu pn os t i v ôb ec n en ach ádza , b ud e sa ú s ek , v k to r om hľ adáme
s t á l e zm en šo v ať n a p o lo v i cu , až zo s t an e p r ázd n y ( n u l ov e j
d ĺ žk y) :
<úsek, v ktorom hľadám je najskôr celá postupnosť>;
repeat
<vyber stredný prvok úseku>;
if <hľadaný prvok> < <stredný prvok>
then <vezmi ľavý úsek>
else if <hľadaný prvok> > <stredný prvok>
then <vezmi pravý úsek>
until (<hľadaný prvok>=<stredný prvok>) or <zostal
prázdny úsek>
K oľ ko p o ro vn an í mu s í me v yk o n ať v na j ho r šom p r í p ad e?
Pr í k l ad :
D an é j e p r i ro dzené č í s lo N a N - p rv k ov á p os tu pn osť ce l ých č í se l
u sp o r i ad an á vz os t up n e . Z i s t i t e poz í c iu d ane j h od n o t y H v
p os tu pn os t i , p r í p . v yp í š t e ozn am, ž e ho dn o t a s a v p os t up no s t i
n en ach ádza . Po už i t e l i n eá rn y a j b i ná r n y v ýb e r a p r e o b a p os t u p y
v yp í š t e , ko ľk o po ro v nan í s a mu s e lo vyk o n ať p r i v yh ľ ad áv an í .
<načítaj N>;
<načítaj usporiadanú postupnosť>;
<načítaj hodnotu H>;
<vyhľadaj pozíciu hodnoty H v postupnosti lineárne>;
writeln(H,'sa nachádza na ',I,' pozícii. ');
Algoritmizácia a programovanie – učebné texty 61
writeln('Pri lineárnom postupe som vykonal ',POCL,'
porovnaní.');
<vyhľadaj pozíciu hodnoty H v postupnosti binárne>;
writeln(H,'sa nachádza na ',J,' pozícii.');
writeln('Pri binárnom postupe som vykonal ',POCB,'
porovnaní.');
R ozš í r t e p r o gr am t ak , ž e s a n ebu d e z ad áv ať j ed n a ho d no t a H na
v yh ľ ad an i e , a l e v i ac z a s eb ou , p r i čo m p os l ed n á bu de n u l a .
1 .36. Textový súbor
Súb o r j e p os t up no sť dá t u l ož en á na d i s ku p od v l as tn ým m enom,
n ap r . : l i s t . t x t . Ú p lné m eno sú bo r u o bsah u j e a j n ázo v d i s ku , na k t o rom
j e u l ož en ý, a j s ad re s á r ov ou ce s t ou , nap r . :
c : \ do ku men t y \ po s ta \ l i s t . t x t .
T ext ov ý súb o r o bs ahu j e d á t a vo f o r m e t ex tu , t . zn . zn ak y,
u sp o r i ad an é v r i adk o ch r ôzn e j d ĺ žk y. V eľk osť sú bo ru j e t i ež rôz n a ,
z áv i s í o d p o č tu z nak ov , k t o ré
o bs ahu j e . T ex to vý s ú b o r s i
m ôž em e p r eds t a v i ť ako l i s t
p ap i e r a , k t o r ý j e o h r an i čen ý
l en z ľ av a a zh o ra . M ôž em e n aň
p í s ať r i ad k y ľ u bov oľ n e j d ĺ žk y, p o če t r i ad ko v j e t i ež ľ u bo voľ n ý,
o bm edzen ý l en k apac i t ou d i s ku .
T ak ýt o t ex to v ý s ú bo r s i m ôž em e p reze r ať a ed i to v ať v ne j akom
t ex to vo m ed i to r e , n ap r . Po zn ám kový b l o k (No tep ad ) , Wi n dows
C om m an d er a l ebo V o l kov C o mm an der ( s lu žb a F3 V i ew , F 4 Ed i t ) ,
t e x t o vý ed i to r v n e ja kom pr og ra mova co m ja z yku (n ap r . B or l an d
P a sca l ) , . .
N a k on c i k až d éh o r i adk u j e v sú bo re n ev i d i t eľ n ý z n ak k o n ca
r i ad ku . M ôž em e h o zn áz o rn i ť ak o . Tex t ov ý ed i t o r n ám ho
Milý Jožko!
Úvodom môjho listu Ťa čo najsrdečnejšie
pozdravujem.
Máš niečo nové?
Ja mám veľkú novinku, konečne som
sa naučil programovať.
Algoritmizácia a programovanie – učebné texty 62
n ez ob r azu j e , a l e v s úb o r e j e z ap í s an ý ak o dv a zn ak y ( # 1 3 # 10 ) , k t o ré
oz n aču j ú ko n i ec r i ad ku . N a ko n c i c e l ého s úb or u j e t i ež n ev i d i t e ľn ý
zn ak ko n ca sú bo ru ( # 26 ) .
S t ex to v ým s ú bo rom m ôž em e p r acov ať a j v p r o gr am e . Výs l ed k y
p r o gr am u (v ýs t up ) n emu s ím e v yp i so v ať l en n a ob razo vk u , a l e
m ôž em e i ch z ap í s ať d o sú bo r u , k d e zo s t anú t rv a lo u chov an é . P od ob ne
v s t up p r o gr am u n em us ím e r ea l i zo vať l en z k l áv es n i ce , a l e v s tu pné
d á t a m ôžem e n ač í t ať z t ex to v éh o sú b or u . V yu ž i j em e t o n ap r í k l ad
v t ed y, k eď j e v s tu p n ých d á t v äč š i e m nož s tv o . P r i l ad en í p r o gram
s pú šť am e n i ekoľ kok r á t z a s eb ou a j e d os ť p r acn é o pakov an e z ad áv ať
m nož s tv o vs tu pn ýc h dá t .
A k chcem e v p r o gram e p r acov ať s t ex t ov ým s úb o ro m, m us ím e s i
z ad ek l a ro v ať p remen nú , k t o rá h o bu de r ep r ez en to v ať .
D ek l ará c i a p remenn e j t ypu t ex t o vý s úbo r :
var <premenná>:text napr.: var T:text
Pr í ka zy p re p rá cu s t ex t ov ý m súbo ro m:
Assign(<premenná typu textový súbor>,<meno súboru>)
napr.: assign(T, 'c: \dokumenty\posta\list.txt')
- t ým t o p r í kaz om p r i de l ím e p r em en n e j t yp u t ex to v ý s ú bo r
k o nk r é t n y s ú b o r z d i s ku . Meno s úb o ru j e r eť az ec . Ten to s úb or
b u de p r em enn á r ep r ezen t ov ať v o vš e tk ých o s t a t n ých p r ík az o ch .
Rewrite(<premenná typu textový súbor>) napr.: Rewrite(T)
- o tv or en i e s úb o ru p r e z áp i s . T en to p r í k az v y t v o r í n ov ý p r ázd n y
s úb o r n a d i sk u , do k t o r éh o m ôžem e n ás l edn e z ap i s ovať . Ak
d an ý s ú b o r p r ed t ým ex i s t ov a l , j eh o ob s ah s a zm aže .
Append(<premenná typu textový súbor>) napr.: Append(T)
- o t vo r en i e sú bo ru p r e z áp i s . T en to p r ík az môž em e p ouž i ť l en
p r e ex i s tu j ú c i sú b or , d o k to r éh o m ôž em e n ás l edn e z ap i sov ať na
k o n i ec . A k d an ý s ú b or p r ed t ým n eex i s to v a l , ob j av í s a ch yb o v é
h l ás en i e .
Reset(<premenná typu textový súbor>) napr.: Reset(T)
- o tv or en i e sú bo ru p r e č í t an i e . T en t o p r ík az m ôž em e p ouž i ť l en
p r e ex i s t u j ú c i s úb or , z k to r éh o m ôžeme n ás l ed n e č í t ať . Ak d an ý
s úb o r p red t ým n eex i s to v a l , ob j av í s a ch yb o v é h l ás en i e .
Algoritmizácia a programovanie – učebné texty 63
write/writeln(<premenná typu textový súbor>,<zoznam
zapisovaných údajov>)
napr.: write(T,'Pocet deti je ', CH+D,'.')
- z áp i s úd a j ov d o t ex to v éh o sú bo ru . Úd a j e m ôžu b yť t yp u z nak ,
r e ť az ec , č í s lo a od d eľ u j em e i ch č i a r k am i . P r ík az y p o už ív am e
r o vn ako ak o p r i v ýp i s e n a ob r azo vk u s t ým r oz d i e l om , že p r v ý
p a r am e te r p r í k azu j e p r em en n á t yp u t ex to v ý s ú b o r .
read/readln(<premenná typu textový súbor>,<zoznam
premenných>)
napr.: readln(T,A,B,C)
- č í t an i e ú d a jo v z t ex to v éh o s úb o ru . P r em en n é m ôžu b yť t yp u
zn ak , r e ťaz ec , č í s lo a o dd eľ u j em e i ch č i a r k ami . P r í kaz y
p o už ív am e r ov n ak o ak o p r i č í t an í z k l áv esn i ce s t ým r o zd i e lo m,
ž e p rv ý p a r am e t e r p r ík azu j e p r em en ná t yp u t ex t o v ý s ú bo r .
close(<premenná typu textový súbor> napr.: close(T)
- z a t vo r en i e t ex tov ého s úb o ru . N a k o nc i p ráce s o súb o ro m,
m us ím e s úb or z a tvo r i ť . A k d o s úb or u z ap i s u j em e a z abu d neme
h o n a k on c i p r o gram u z a t vo r i ť , p r avd epo do bn e v s úb o re bu dú
ch ýb ať pos l e d n é úd a j e , k t o r é s m e doň z ap i s ov a l i . J e t o z t oho
d ô vo du , ž e p r ík az w ri t e / wr i t e ln n ez ap i su j e d á t a do s úb o ru
o k amž i t e , d á t a s a d o sú bo r u p r en áš a jú p o v äčš í ch b l ok o ch .
P r í k azom c lo s e s a p r en es i e n a d i sk a j p os l ed n ý b l ok d á t .
Fu nk ci e p re p rá cu s t ex t ov ý m súb o ro m:
eoln(<premenná typu textový súbor>) napr.: eoln(T)
- l o g i ck á f un ck i a . V r á t i TR U E/ FA LSE , ak sm ern ík p r e č í t an i e
j e / n i e j e n a ko n c i ak tu á l n eh o r i adk u sú b or u .
eof(<premenná typu textový súbor>) napr.: eof(T)
- l o g i ck á f un ck i a . V r á t i TR U E/ FA LSE , ak sm ern ík p r e č í t an i e
j e / n i e j e n a ko n c i sú b or u .
O BE FU NK C IE SA PO U ŽÍV A J Ú LE N PR I Č ÍT A N Í.
Pr í k l ad :
D an ý j e po če t p r vko v N a N - p rv ko v á p os tu pn osť p r i ro dzen ých č í s e l .
Z i s t i t e a v yp í š t e p oče t v ýs k yt o v j ed no t l i v ých č í s e l v p os tu p nos t i .
Algoritmizácia a programovanie – učebné texty 64
N as l edu jú ce d va pr og r a m y r i eš i a d an ú ú lo hu , p r i čo m p r vý r ea l i zu j e
v s tu p z k l áve sn ice a v ý s t up n a ob ra zovku , d r uh ý pr og ram č í ta v s t up né
d á t a zo s úb or u DAT A. IN a výs l ed ky za p i su j e d o sú bo ru D AT A .O UT .
t y p e T P O L E = a r r a y [ 1 . . 1 0 0 ] o f i n t e g e r ;
v a r A : T P O L E ;
N , P O C E T , I , J : i n t e g e r ;
b e g i n
w r i t e ( ' Z a d a j p o c e t p r v k o v : ' ) ;
r e a d l n ( N ) ;
w r i t e l n ( ' Z a d a j h o d n o t y p r v k o v : ' ) ;
f o r I : = 1 t o N
d o r e a d ( A [ I ] ) ;
f o r I : = 1 t o N
d o i f A [ I ] > 0
t h e n b e g i n
P O C E T : = 0 ;
f o r J : = I t o N
d o i f . . . . .
t h e n P O C E T : = P O C E T + 1 ;
w r i t e l n ( A [ I ] , ' s a
v y s k y t u j e ' , P O C E T , ' - k r a t . ' ) ;
A [ I ] : = . . . . .
e n d
e n d .
t y p e T P O L E = a r r a y [ 1 . . 1 0 0 ] o f i n t e g e r ;
v a r A : T P O L E ;
N , P O C E T , I , J : i n t e g e r ;
V S T , V Y S : t e x t ;
b e g i n
a s s i g n ( V S T , ' D A T A . I N ' ) ;
a s s i g n ( V Y S , ' D A T A . O U T ' ) ;
r e s e t ( V S T ) ; r e w r i t e ( V Y S ) ;
r e a d l n ( V S T , N ) ;
f o r I : = 1 t o N
d o r e a d ( V S T , A [ I ] ) ;
f o r I : = 1 t o N
d o i f A [ I ] > 0
t h e n b e g i n
P O C E T : = 0 ;
f o r J : = I t o N
d o i f . . . . .
t h e n P O C E T : = P O C E T + 1 ;
w r i t e l n ( V Y S , A [ I ] , ' s a
v y s k y t u j e ' , P O C E T , ' - k r a t . ' ) ;
A [ I ] : = . . . . .
e n d ;
c l o s e ( V S T ) ; c l o s e ( V Y S )
e n d .
D o pl ň t e v p ro gr ame ch ýb a j ú ce čas t i . K oľ ko p o ro vn an í s a v yk o n á p re
N - p rv ko vú p os tu pno sť v n a j ho r šom p r í p ad e?
V st up n ý s ú b or b y m oh ol v yz e r ať
t ak to :
1 0
1 7 1 1 10 7 1 0 7 7 3 3
V ýs t u pn ý s ú bo r p o to m bu d e :
1 s a v ys k yt u j e 3 -k r a t .
7 s a v ys k yt u j e 4 -k r a t .
1 0 s a v ys k yt u j e 2 -k r a t .
3 s a v ys k yt u j e 1 - k ra t .
P r ečo s a h od no t a 3 v ys k yt u j e v d an e j po s t up no s t l en 1 -k r a t ?
Algoritmizácia a programovanie – učebné texty 65
1.36 .1 . Chybové h lásen ia pr i p rác i s t ex tovým súborom
Fi l e no t fo un d
P r i o tv á r an í (R es e t , A pp en d ) n en aš i e l d an ý s ú b or . Buď sú bo r
n eex i s tu j e , a l eb o j e z l e z ad an á ad r e s á ro v á ce s t a k sú bo r u .
P a t h no t fo un d
P r i o t v á r an í sú bo ru b o l a z l e z ad an á ad r e s á r ov á ce s t a , d an ý
ad r e sá r n eex i s t u j e .
F i l e no t o p en fo r i np u t
S úb or n i e j e o tv o ren ý p r e č í t an i e . S úb o r sm e o t vo r i l i p r í kazom
r ew r i t e / ap p en d a ch ceme z n eh o č í t ať .
F i l e no t o p en fo r ou tp u t
S úb or n i e o tv o r en ý p r e z áp i s . Sú bo r sm e o tv o r i l i p r í k azom r es e t
a ch cem e do ň z ap i so v ať , a l ebo p ouž i ť f u nk c i u eo l n / eo f .
Pr í k l ady :
1 . D an ý j e t ex to v ý s ú b or T E XT . IN . Z i s t i t e , koľ ko o bs ahu j e a )
zn ako v , b ) r i adko v , c ) v i e t (v e t a j e u ko n čen á b o dk ou ,
v ýk r i čn í ko m, a l eb o o t áz n ik om ) .
2 . D an ý j e t ex t ov ý s úb o r M AJ ET O K. IN , o bs ahu jú c i m aj e t ko v é
p r i zn an i e ob s ah u jú ce n i ek oľk o p o lož i ek . K ažd á p o lož k a j e
z ap í s an á v j ed nom r i ad ku v t va r e : n ázo v ma j e tk u , m edze r a ,
h o dn o t a v S k . Z i s t i t e ce lk ov ú ho dn o t u m aj e t ku .
3 . D an ý j e t ex to v ý s ú b or C IS LA . IN o b s ahu jú c i po s tu pn osť č í s e l .
V yt v o r t e t ex tov ý s úb o r H V IE ZD Y . O U T , d o k to r éh o zap í š e t e
p os tu pn osť "h v i ezd i čk ov ých " r i ad kov , kd e d ĺ ž k y r i ad k o v sú
u r čené č í s l ami z d an e j po s tu pn os t i .
auto 500000
dom 1500000
zahrada 50000
Algoritmizácia a programovanie – učebné texty 66
C IS LA . IN H V IE ZD Y . O U T
5
1
2
8
* * ** *
*
* *
* * ** ** **
4 . M il i on á r : V t ex to vo m s úb or e OT A ZKY . IN s ú z ap í s an é zn en i a
o t ázo k o dd e l en é p rázd n ym i r i adk a mi . Za t ex to m k ažd e j o t ázk y
n a s l ed u j ú 4 m ožn os t i o dp ov ed í (A , B ,C ,D ) . V t ex t ov om s úb ore
O D PO V ED E. IN j e z ap í s an á p os tu pn osť zn ako v , p r ed s t avu jú c i ch
s p r áv n e od po v ed e k o t ázk am v p r vo m s úb or e . V yt v o r t e p r o gr am,
k to r ý b u d e po s tup n e p o j edn e j o t áz ke č í t ať z o sú b or u ,
v yp i s ov ať j u n a ob r az ov ku a č í t ať z k l áv es n i ce už í va t eľ ove
o d po ved e . Za s p rávn u o dp ov eď z í s k a už í v a t eľ bo d .
D o pl no k : už í v a t eľ m ôž e p r i k až d e j o t ázk e po už i ť žo l ík a ' 5 0 :5 0 ' ,
p r i o dp ov ed i b ez žo l í ka s a m u zapo č í t a j ú 2 b od y, s o žo l í ko m 1
b o d .
OTAZKY.IN ODPOVEDE.IN
Ako sa volá hlavné mesto Talianska?
A. Talian B. Rím
C. Vatikán D. Pelikán
Čo je to tritical?
A. chemická zlúčenina B. hmyz
C. praveký jašter D. obilnina
B
D
Algoritmizácia a programovanie – učebné texty 67
1 .37. Generovanie náhodných údajov
V ygen e r o v ať n áh od n ý ú d a j z n e j ake j mn ož i n y z n amen á n áho dn e
v yb r ať j ed n u h od no tu z d an e j mn ož in y. V j a z yk u P as ca l m ám e t i e to
n á s t ro j e na gen e ro van i e náho dn ých č í se l :
ra ndo m( < ce l é č í s lo > )
- f u nk c ia , k to r á v rá t i n áho dn é ce l é č í s lo z i n t e rv a l u <0 , <ce l é
č í s lo > - 1> . N apr . r an d om (1 0) v r á t i c e l é č í s l o z i n t e r v a lu <0 ,9 > .
C e l é č í s l o , k t o r é j e p a r ame t rom f unk c i e r and om , p r eds t av u j e
"d ĺ ž ku " in t e r v a lu ( p o če t c e l ých č í se l ) , z k t o r ého v yb e r á
n áho dn é č í s lo , p r i čo m do ln á h r an i ca in t e r v a l u j e vž d y 0 .
ra ndo mi ze
- p ro ced ú r a , k t o rú s t a č í p ouž i ť l en raz n a z ač i a t ku p r ogr am u,
a l ebo p r ed p r v ým p o už i t í m f un k c i e r an do m. J e t o v l as t n e
"n a š t a r t ov an i e " gen e r á t o r a náho dn ýc h č í se l a sp ôs ob í , ž e p r i
k až do m ď al šo m sp us t en í p r o gr am u bu de gen e ro v ať in é č í s l a .
ra ndo m
- f u nk c i a po už i t á b ez p a ram et r a v r á t i n áh od n é r eá ln e č í s lo z
i n t e rv a l u <0 , 1 )
Pr í k l ad p ou ž i t i a :
U žív a te ľ z adá p r i r odz en é č í s lo N p r ed s t av u j ú ce po če t p rv kov
p os tu pn os t i n áh od ných č í s e l , k to r é m á p o č í t a č v ygen e r o vať . P r o gr am
s a sp ýt a už ív a t eľ a , č i chce po s t up no sť ce l ých a l ebo r eá ln ych č í s e l a
v ygen e r u j e j u .
uses Crt;
var N:integer;
VYBER:char;
procedure CELE;
var I:integer;
begin
for I:=1 to N
do write(random(100),' ')
end;
Algoritmizácia a programovanie – učebné texty 68
procedure REALNE;
var I:integer;
begin
for I:=1 to N
do writeln(random:0:10)
end;
BEGIN
write('Zadaj, kolko cisel chces: '); readln(N);
writeln('Zadaj, ake chces cisla:');
writeln('a) cele z intervalu <0,99>');
writeln('b) realne z intervalu <0,1)');
VYBER:=upcase(readkey);
case VYBER of
'A':CELE;
'B':REALNE;
end;
readln
END.
Ú l oha p re vás : roz š í r t e po nu ku p r o gr am u o možn os t i gene r o v ať
- ce l é č í s l a z i n t e r va l u <10 0 , 15 0 >
- r e á l n e č í s l a z i n t e r v a l u <0 , 10 )
- r e á l n e č í s l a z i n t e r v a l u <5 , 15 )
- z n ak y z i n t e r v a lu ' a ' . . ' z '
- l o g i ck é h od no t y
- f a rb y z m nož i n y { b i e l a , ž l t á , o r anž ov á , č e rv en á , z e l en á , m od r á ,
f i a l ov á}
A k ch cem e v ygen e r o v ať n áh od né ce l é č í s l o z i n t e rva l u <A, B> a
u lož i ť ho d o p rem en n e j C : i n t ege r , po už i j em e p r ík az
C: = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (d op l ň t e ) .
A k ch ceme v ygen e r o v ať n áho dn é r eá l n e č í s l o z i n t e r va l u <A , B ) a
u lož i ť ho d o p rem en n e j C : r ea l , po už i j em e p r í k az
C: = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (d op l ň t e ) .
Algoritmizácia a programovanie – učebné texty 69
A k ch cem e v ygen e r o v ať n áh od n ý n eč í s e ln ý ú d a j , s p r av ím e to t ak , ž e
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pr í k l ady :
1 . V yt v o r t e p ro gr am, k t o r ý n áh o dn e " r oz h adz u j e " fa r eb né
o b d ĺžn i čk y p o o br azo vk e , t . j . op ako v an e gen e r u j e náh od né
s ú r ad n i ce X , Y a n áho dn ú f a r bu a v yk r e s ľu je po l í čko s
u r čen ým i s ú radn i cami u r čen ou f a rbo u . P ro gr am k onč í , ak
už ív a t eľ s t l a č í ľu bo v oľn ú k l áv esu .
2 . D o s t r ed u ob r azo vk y v yp i s u j t e v u r č i t ý ch ča s o v ých i n t e r v a l o ch
n áho dn é č í s l a z i n t e r v a l u <0 , 9 > ( s t á l e n a r o vn ak é p o l í čko ) ,
p o k i aľ už í v a t eľ n es t l a č í ľu bo vo ľn ú k l áv esu . ( N a o b r azov k e sa
t o č i a č í s l a p od ob n e , ak o k eď s a ž r eb u je . )
3 . D o pl no k : Úl oh ou už í v a t eľ a j e z as t av i ť gen er ov an i e , k eď j e n a
o b r azo vk e č í s lo 0 . A k b o l ús p eš n ý, z ap o č í t a s a m u bo d . Po 1 0
p o kus o ch s a v yh o dn o t í j eho ú sp ešn osť .
4. P ro gr am v ygen e r u je d v e ce l é č í s l a - o p e r an d y a a r i tme t i ckú
o p e r ác iu ( + - * / ) . V yp í š e n a o b r azov k u v ygen e r o v an ý v ýr az v
t v a r e <o p er and ><op e r á t o r ><op e r and >= a o d už í v a t eľ a n ač í t a
č í s lo p r eds t av u jú ce v ýs l ed ok v ýr az u . A k j e už ív a t eľo v výs l ed ok
s p r áv n y, z apo č í t a s a m u bo d . P o 1 0 p r í k l ad o ch p r o gram
v yh o d n o t í ú sp eš no sť už í v a t eľ a a oz n ám ku je h o .
1 .38. Štandardné procedúry a funkcie pre typ STRING
l en g th (< reť a zec> )
- f un k c i a , k t o r á v r á t i c e l é č í s l o p r ed s t av u j ú ce d ĺ žk u r eť az ca
p os (<p od reť a zec> ,< reťa zec>)
- f un k c i a v r á t i poz í c i u p rv ého v ýs k yt u p o dr eť az ca v r e ť az c i ,
p r íp . nu l u , ak s a p od r eť az ec v r eť az c i n en ach ádza
co py (< reťa zec> ,<po z í c ia > , <po če t znak ov >)
- f un k c i a v r á t i p odr eť a z ec , k to r ý v z n ik n e v ýb e r o m d aného po č tu
zn ako v z d aného r eť az ca od d an e j poz íc i e
in s ert ( <pod reťa zec> ,< reťa zec> ,< po z í c i a> )
Algoritmizácia a programovanie – učebné texty 70
- v l ož í do re ť azca d an ý p o d r eť az ec n a d an ú poz íc iu
d el e t e (< reťa zec> ,< po z í c i a> ,< po če t zn ako v> )
- v d an om r eť az c i zm až e od d an e j p oz íc i e d an ý p o če t zn ak o v
s t r (< č í s l o> ,< reťa zec> )
- p ro ced ú r a zm en í č í s lo n a re ť azec
v a l ( <reťa zec> , < č í s l o> ,<k ód chyb y> )
- p r o ced úr a zm en í r e ť az ec n a č í s lo a v k ód e ch yb y v r á t i n u l u ; v
p r íp ad e že r e ťaz ec n ep r ed s t av u j e z áp i s č í s l a , b ud e výs l ed n é
č í s lo nu l a a v k ó de ch yb y b u d e u lož ená poz íc i a p r vého
ch yb n éh o z n ak u v re ť az c i
Pr í k l ady po už i t ia :
var I,K:integer;
C:real;
S,R:string
Stav premenných pred Príkaz Stav premenných po Poznámka
S='dva' I:=length(S) I=3 length(S) je to isté ako
ord(S[0])
S='vodovod' I:=pos('od',S) I=2
S='BYSTROZRAKÝ' I:=pos('rak',S) I=0
podreťazec nenašiel
kvôli rozdielu medzi
malými a veľkými
písmenami
S='straka' R:=copy(S,2,4) R='trak'
S='konár' insert('mi',S,3) S='kominár'
S='slovák' delete(S,3,2) S='slák'
I=72 str(I,S) S='72'
C=2.34 str(C:6:3,S) S=' 2.340'
čísla premieňané na
reťazec môžeme
formátovať ako pri
výpise na obrazovku
S='-45.6' val(S,C,K) C=-45.6, K=0 reťazec sa podarilo
premeniť na číslo
S='-45.6' val(S,I,K) I=0, K=4
reťazec nemožno
premeniť na celé číslo
kvôli 4. znaku
S='-45' val(S,I,K) I=-45, K=0 reťazec sa podarilo
premeniť na číslo
Algoritmizácia a programovanie – učebné texty 71
1.38 .1 . Pr ík lady
( v z á tv o rk ách s ú uv ed en é f un k c i e a p r o cedú r y, k t o r é b y s t e mo h l i v
p r ík l ad e v yu ž i ť )
1 . V yt v o r t e p ro gr am, k t o r ý n ač í t a r e ť az ec , v yk o n á s n ím
n as l ed o vn é úp r av y a po k až d e j ho v yp í š e :
- k ažd ú č i a rk u z m en í n a bo dk o č i a rk u
- k ažd ú z a s eb ou i dú cu dv o j i cu z n ak ov ' x x ' zm en í n a ' 2x '
- k ažd ý z ač i a t ok s lo v a ( s lo v á sú o dd e len é m edz e r am i , t . zn . p r ed
k až d ým s lo vo m s výn i m k ou p rv ého j e m edze r a ) z m en í n a v eľk é
p í s meno .
( l en g t h )
2 . Z d an ého r eť azca S o ds t r áň t e vš e tk y m edz e r y a v yp í š t e h o .
( l en g t h , d e l e t e )
3 . D o d aného r e ť azca v l ož t e z a k ažd ý z n ak medz e ru a v yp í š t e ho .
( l en g t h , i n s e r t )
4 . V d ano m r eť az c i S j e u lož en é m eno a p r i ezv i sk o o dd e l en é
m edze r ou . D o r eť az ca M u lož t e zv l áš ť m eno a do r eťaz ca P
p r i ez v i sk o . N apr . z r eť az ca S = 'K u bo Za j ac ' v yt v o r t e r e ť az ce
M ='K u bo ' a P = 'Za jac ' . ( po s , cop y, l eng t h )
5 . V yr i e š t e b ez pož i t i a t yp u r ea l : N ač í t a j t e r e á ln e č í s lo ( do
r e ť az co ve j p r em enn e j ) , z i s t i t e a v yp í š t e , koľ ko m á d e s a t in n ých
m ies t . ( p os , l en gt h )
V yp í š t e j eho d e s aťn áso bo k . (d e l e t e , i n s e r t )
6 . V ygen e r u j t e n áhod n ý r e ť az ec z l ožen ý z p í sm en ab eced y
n áho dn e j d ĺ žk y m ax . 8 0 .
7 . V ygen e r u j t e n áh odn ý t ex t a z ap í š t e h o do sú bo ru - p o če t
r i ad ko v bu d e n áhod n é č í s l o z i n t e rva l u 1 . . 20 , d ĺ žk a každ ého
r i ad ku bu d e n áho dn é č í s l o z i n t e r v a lu 1 . . 5 0 , v r i ad ko ch bu dú
n áho dn é ab eced n é zn ak y.
Algoritmizácia a programovanie – učebné texty 72
8 . Bez po už i t i a po č í t ača u rč t e v ýs t u p p rogr am u:
var S,R:string;
begin
S:='REKLAMA';
R:=copy(S,3,5);
S:=S+R;
insert(' ',S,8);
S[13]:='E';
S[14]:='!';
writeln(S)
end.
9 . V p rem en n e j S : s t r i n g j e u lož en ý r e ť azec . Zap í š t e p r ík az y ,
k to r ým i :
- zm až e t e p os l edn é 3 zn ak y
- p rv ý z nak p r es un ie t e n a ko n i ec
– do s t r ed u v l ož í t e zn ak ' - '
1 .39. Procedúry s parametrami
Pr í k l ad č . 1 : D an ý j e po če t p rv ko v N a N - p rv ko v á p os tup n osť ce l ých
č í se l A[ 1 . . N] . V yt v o r t e no vé p o l e B, u lož t e d oň ho vš e tk y h o d n o t y z
p oľ a A t ak , ab y s a k až d á v ys k yt o v a l a l en r az a i ch p o če t u l ož t e do
p r em enn e j P . Ob e po l i a v yp í š t e .
N ap r . : ak N =7 a A=( 2 ,1 ,5 ,1 ,5 ,5 ,4 ) , po t om P =4 a B=(2 ,1 ,5 , 4 ) .
R i eš en i e : Ú lo hu s i r ozd e l ím e n a p od ú l o h y, k t o r é b udú r i eš i ť t i e to
p o dp ro gr am y: C IT AJ _A ( n ač í t a N a p o l e A ) , V YR O B_B ( n ap l n í po le
B a p r em enn ú P ) , V Y P IS _ A ( v yp í š e N - p rv ko v é p o l e A) a V YP IS _ A
( v yp í š e P - p rv ko vé p o l e B) . H l av n ý p r o gr am po t om b u de v yz e r ať
t ak to :
Algoritmizácia a programovanie – učebné texty 73
begin
CITAJ_A;
VYROB_B;
VYPIS_A;
VYPIS_B
end.
P os l edn é d v e p r o ced ú r y b u d ú v yz e r ať t ak to :
procedure VYPIS_A;
var I:integer;
begin for I:=1 to N
do write(A[I]:5);
writeln
end
procedure VYPIS_B;
var I:integer;
begin for I:=1 to P
do write(B[I]:5);
writeln
end
K eď o b e p ro cedú ry p o r o v n ám e, z i s t í me , ž e s a l í š i a l en n ázv ami
p r em enn ých . O b e v yj ad r u j ú t en i s t ý p o s t up sp r aco v an i a , a l e k aždá
p r acu j e s i n ým i h od no t ami . V t omt o p r í pad e j e v ýh o d n e j š i e
z ad ek l a ro v ať m i es t o t ých t o d vo ch p r o ced úr j ed nu "u n i v erz á ln u " ,
k to r á b ud e p r aco v ať s "n ezn ám ym " p o ľom X a nez n ám ou p r em ennou
Y v yj ad r u j ú co u p oče t p rv ko v . Za "n ezn áme" X , Y do s ad ím e p r i vo lan í
p r o ced úr y p r em en né A ,N a po tom B ,P .
D ekl ará c i a bud e vy zerať tak t o :
procedure VYPIS(X:POLE;Y:integer);
var I:integer;
begin for I:=1 to Y
do write(X[I]:5);
writeln
end
V o lan i a pro cedú ry v h la vn o m p ro g rame bu dú vy zera ť ta kt o :
begin
CITAJ_A;
VYROB_B;
VYPIS(A,N);
VYPIS(B,P)
end.
Ú l oha p re vás : V yp r acu j t e os t a tn é d ek l a r ác i e .
Algoritmizácia a programovanie – učebné texty 74
1.39 .1 . Parameter
j e p r em enn á cez k t o rú s a o do vzd áva j ú vs tu pn é a v ýs t u p n é h od no t y
p o dp ro gr amu .
Pa ra met re ro zd eľu j eme n a:
f o rmá ln e - u v ed ené sú v h l av ičk e d ek l a r ov an éh o po dp ro gr amu.
P ouž í v a jú s a ako l ok á l n e p r em en né - vzn ik a j ú p r i v o l an í
p o dp ro gr amu , z an ik a jú po j eh o s ko n čen í , mim o p od p ro gr amu sú
n epo už i t eľ n é . S l úž i a n a u lož en i e h o dn ô t , s k to r ým i b ud e
p o dp ro gr am p r acovať .
s kut o čn é - uv ed ené s ú p r i vo l an í p od p ro gr amu , sú to sk u t o čné
h o dn o t y, s k t o r ým i b u de p od p ro gr am pr aco vať .
D ekl ará c i a p odp rog ra mu s p a ra met ra mi :
procedure <meno> (<zoznam parame trov a ich typov
oddelených bodkočiarkami>);
<lokálne deklarácie>;
begin
<príkazy>
end
V o lan i e po dp ro gramu s p a ra met ra mi :
<meno>(<zoznam parametrov oddelených čiarkami>)
P O ZOR !
t yp p a r am e t r a v h l av i čke po dp ro gr amu m us í b yť j eden
i d en t i f i k á to r . Nap r . n es mi em e z ap í s ať procedure
XYZ(A:array[1..10]of char) , a l e m u s ím e to z ap í s ať :
procedure XYZ(A:POLE) , k d e type POLE=array[1..10]of
char
s ku to čn é a fo rm áln e pa r am e t r e s a m us ia zh od o vať v p o č t e ,
p o r ad í a t yp e .
Pr í k l ad č .2 : Zad ek l a ru j t e p r o ced ú ru s p a r am et ram i
P IS _ ZN A K Y (C: ch ar ;P : in t ege r ) , k to r á v yp í š e z a s ebo u d o r i ad ku P
Algoritmizácia a programovanie – učebné texty 75
zn ako v C a k u rzo r n ech á z a po s l ed n ým v yp í s an ým zn ako m. V yt v o r t e
n a j s kô r s kú šo bn ý h l av n ý p r o gr am , k to r ým o d sk úš a t e j e j f u nk čno sť s
v o l an i ami n ap r . P IS _ ZN AK Y ( '@ ' , 5 ) ; P IS _ ZN A K Y ( ' . ' , 1 0 ) .
P o to m v y t v o r t e n ov ý h l av n ý p r o gr am , k to r ý n ač í t a p r i r odz en é č í s l o N
a s p om o co u t e j t o p r o cedú r y v yp í še n a o b r azo vk u t i e t o ú tv a r y s
r ozm er om N (n ep ouž í v a j t e go tox y! ) :
****! **** *******
***!! **** *****
**!!! **** ***
*!!!! **** *
Pa ra met re ro zd eľu j eme n a:
v s tupn é (v o l an é ho dno t ou) - d o p odp r o gr am u s a od o vzd áv a l en
h o dn o t a p rem en ne j , s k to r ou s a p r acu j e . P o sk o nčen í
p o dp ro gr amu h od no t a p r em en ne j z os t áv a n ezm en en á .
v s tupn o - vý s tupn é ( v o l an é ad reso u , r e f erenc iou ) - do
p o dp ro g r amu s a od o vzd áv a ce l á p r em enn á , p od p ro gr am s ňou
p r acu j e a m ôž e j u zm en iť . V h l av i čke p o dp r o gr am u s ú od l í š en é
s lo vk om v ar . N apr ík l ad :
var X,Y:integer;
procedure SKUSKA(A:integer; var B:integer);
begin A:=A+2;
B:=B+A
end;
BEGIN X:=5; Y:=8;
SKUSKA(X,Y);
writeln(X,' ',Y)
END.
P r i vo lan í po dp r o gr amu s a h od no t a sk u t o čn ého pa r am e t r a X v l ož í do
f o rm á ln eh o p a r ame t r a A . K eďž e j e t o l en v s tu pn ý p a r am e te r , po
s ko n čen í po dp ro gr am u s a j eho n ov á h o dn o t a n ep os i e l a n a sp äť . A le ,
p a r am e te r B d os t ane n a z ač i a tk u v s t upn ú ho dn o tu Y a n a k o nc i p oš l e
n a sp äť p rem en n e j Y no vú ( v ýs t u pn ú ) h od no t u . Č o ná m t ento
p rog ra m v yp í še? Č o vyp í š e t en to p ro g ra m, a k vo l an i e
Algoritmizácia a programovanie – učebné texty 76
S KUS KA ( X, Y ) na h rad í me v o lan ím a ) S KU S KA( 3 , Y) b )
S KUS KA ( X+ 3, Y ) c ) S KUS KA (X , 3 ) d ) S KUS KA ( X, Y+ 3)?
V yu ž i t i e p a ra met ro v :
ak s a v p r o gr am e op aku j e t á i s t á po s tu p nos ť p r ík azo v s r ôz n ym i
p r em enn ým i
ak p r i d ek l a r ác i i po d pr o gr am u e š t e nev i em n ázo v p r emen n e j s
k to r ou b ud e p ro gr am p r aco v ať
Pr í k l ady :
1 . P ro gr am n ač í t a p r i r o dz en é č í s l a M ,N , p o t om M zn ám ok ž i aka A
a N zn ám ok ž i ak a B . V yp í š e , k t o r ý z n i ch m á l epš í p r i em er .
2 . Zad ek l a r u j t e p ro ced ú ru NS D ( A, B: i n t ege r ; v a r C : i n t ege r ) , k to rá
p r e dan é č í s l a A , B n á jd e i ch n a j v äč š i eh o s po lo čn ého d e l i t e ľa C
p om o co u Eu k l i do vh o a l go r i tm u .
3 . D o pr ed ch ádz a júc eh o p ro gr amu z ad ek l a r u j t e p r o ced úr u
N S N( A , B: i n t ege r ; v a r C : in t ege r ) , k to r á p r e d an é č í s l a A , B
n á jd e i ch n a jm enš í s po lo čn ý n á s ob ok C , t ak , ž e i ch s ú č in v yd e l í
i ch n a jv äč š ím s po lo čn ým d e l i t eľ om .
4 . P ro gr am n ač í t a z lom ok - 2 ce l é č í s l a p r ed s t av u j úce č i t a t eľ a a
m eno v a t eľ a . Z lo mok up r av í n a z ák l adn ý t v a r a v ýs l ed o k v yp í š e .
V yu ž i t e v yš š i e uv ed en é p ro ced ú r y.
Algoritmizácia a programovanie – učebné texty 77
1 .40. Funkcia
Fu n k c i a j e p od p ro gr am, k to r ý v r á t i j ed n u v ýs t u pn ú ho dno tu cez s vo je
m eno . Môž e b yť s p a r am e t r ami a j bez p a r am et ro v .
D ekl ará c i a :
function <meno> (<parametre>):<typ výstupnej hodnoty>;
<lokálne deklarácie>;
begin
<príkazy>
end
P a r am et r e fu nk c i e s a d ek la r u jú a j p o už ív a j ú ro vn ak o ak o p r i
p r o ced úr e . T yp v ýs tu pn e j ho dn o t y m ôž e b yť j ed no duch ý ( č í s e l n ý,
zn ako v ý, l o g i ck ý, v ym en o v an ý, i n t e rv a l ) a l ebo s t r i n g . N esm ie to b yť
š t ru k tú r ov an ý t yp . V p r í k azo v e j č as t i s a do m en a fun k c i e p r i rad í
v ýs t u pn á h od no t a .
Pr í k l ad :
function VACSI(A,B:integer):integer;
begin
if A>B
then VACSI:=A
else VACSI:=B
end
V o lan i e f unk c i e :
<meno>(<parametre>)
M eno fu n kc i e j e n o s i t eľ om h od no t y , p r e to f un kc iu použ ív am e ako
h o dn o tu p r í s l uš néh o t yp u ( m ôž em e j u n i ek am p r i r ad i ť , v yp í s ať ,
p o už i ť vo v ýr az e ) n ap r . :
X:=VACSI(3,5); Y:=VACSI(X-4,4); Z:=VACSI(Y,VACSI(X,2));
writeln(Z)
Pr í k l ady .
1 . Zad ek l a ru j t e p ro ced ú ru s v ho dn ým i pa r am et r ami n a v ýp o če t N -
f ak t o r i á l u N ! =1 . 2 .3 . . . .N . V yt v o r t e h l av n ý p r o gr am , k to r ý s
p om o co u po dp r o gram u v yp o č í t a p r e dan é p r i r odz en é č í s l a N , K
Algoritmizácia a programovanie – učebné texty 78
v ýr az : N ! / K! / (N - K) ! V yr i e š t e t en to i s t ý p r í k l ad s po už i t ím
f u nk c i e a ob a p ro gr am y p o r ov na j t e . Č o v yp í š e po s l ed n ý p r í k az?
2 . Zad ek l a r u j t e f un kc i u s vh od n ým i p a r am et r am i , k to r á z i s t í , č i s a
d an é dv a r e ť azce rým u j ú (z ho du jú d vo jzn ako vo u ko n co vk o u) .
3 . Zad ek l a r u j t e fu nkc i u , k to r á p r em en í t ep lo tu d anú v °C na
j edn o tk y Fah r en h e i t a p odľ a vzť ahu F=9 /5 *C +3 2 . V yt v o r t e
h l av n ý p r o gr am , k t o r ý n a č í t a p r i ro dzen é č í s lo D a v yp í š e 20 -
r i ad ko v ú t abuľ ku , v k to r e j p r vom s t ĺpc i s ú t ep l o t y v ° C p o čn ú c
o d n u l y s k r ok om D a v d ru ho m s t ĺp c i p r í s l uš né t ep l o t y v
s tu pň o ch Fah r en he i t a . (A k bu de D =5 , v p r vom s t ĺ p c i bu dú č í s l a
0 , 5 , 10 ,1 5 , . . . )
4 . Zad ek l a r u j t e fu nk c i u , k to r á v d an ých d v och r eť az co ch n á j d e i ch
n a jd l hš í sp o l o čn ý z ač i a t očn ý p od r eť az ec , n ap r .
SP _ ZAC ( 'p e ro ' , ' p e r i n a ' ) = 'p e r '
5 . D an ý j e r eť az ec D A TU M p r ed s t av u j ú c i d á t um v tv a re
' d eň .m es i ac . ro k ' . D eň i m es i ac m ôžu b yť j edn o - i d v o jc i f e rn é .
V yt v o r t e f un kc i e : * D EN ( D AT UM :s t r i n g ) : in t ege r . . . z d an ého
d á tum u v r á t i č í s lo d ň a * M ES IA C ( DA T UM :s t r in g ) : in t ege r . . . z
d an éh o d á tum u v r á t i č í s l o m es i aca*
R O K( D AT U M:s t r ing ) : in t ege r . . . z d an ého d á t umu v r á t i č í s lo
r o k a
1 .41. Triedenie
A k p o t r eb u j em e čas to v yh ľ ad áv ať p rvk y v s k u p in e d á t po dľ a n e j ake j
v l as t no s t i , j e d obr é m ať s ku p i nu d á t u s po r i ad an ú p o dľ a d an e j
v l as t no s t i . N apr . ak č i t a t eľ v k n ižn i c i ch ce n á j s ť k n iž ku o d n e j ak ého
s p i so v a t eľ a , v yu ž i j e n a v yh ľ ad an i e m enn ý k a t a l óg , k d e sú
u sp o r i ad an é z ázn am y o k n i h ách po dľ a mi en au t o ro v . A k c h ce n á j s ť
k n iž ku po dľ a n ázv u , v yu ž i j e n ázvo v ý k a t a l ó g , k d e s ú z ázn am y
u sp o r i ad an é p odľa n áz vo v k n í h . V yh ľ ad áv an i e v u sp o r i ad an e j
p os tu pn os t i j e n epor o vn a t e ľn e r ých l e j š i e ak o v neus po r i adan e j .
Algoritmizácia a programovanie – učebné texty 79
P os t up no sť a 1 , a 2 , a 3 , . . . , a n môž e b yť us po r i ad an á :
v zos tupn e ( od n a jm enš i eho po na jv äč š í p rv ok ) : a 1 <= a 2 <= a 3
<= . . . <= a n
zo s tupn e ( od n a jv äč š i eho po n a j m en š í p rv ok ) : a 1 >= a 2 >= a 3 >=
. . . >= a n
N ap r . p os t up no sť č í se l 2 ,8 ,5 ,2 ,9 ,1 ,8 m ôž em us po r i adať vzo s tu pn e :
1 , 2 , 2 , 5 , 8 , 8 , 9 a l eb o zo s tu pn e : 9 , 8 , 8 , 5 , 2 , 2 , 1 . Us po r i a dan í m
p os tupn os t i po če t p rvk ov zos t áv a n ezmen en ý , t ak i s t o h odn oty
p rvko v sa n emen ia , l en ma jú in é p o ra d i e .
Ú l oha : V yt v o r t e p r o gr am , k to r ý d an ú po s tu pn os ť č í se l u s po r i ada
vz os tu pn e . Po s tup n osť j e d an á p o č t om p r vk ov a h od no t ami
j edn o t l i v ých p r v ko v . S fo rm ul u j em e n a j s kô r vs tu pn ú a v ýs t u pnú
p o dmi en ku , t . z n . p re s n e u rč ím e , čo j e d an é a čo ch cem e do s t ať :
{ VS T: D an é j e p r i r odz en é č í s l o N a N - p rv ko v á p os t up n osť ce l ých
č í se l a 1 , a 2 , a 3 , . . . , a n }
{ V ÝS: U sp or i ad aná p o s tu pn osť t ých i s t ých č í s e l , k de p l a t í : a 1 <= a 2
< = a 3 <= . . . <= a n }
K eďž e h od no t y p r v k o v p os t up no s t i s a n e sm ú zm en iť , j ed in é o pe r ác i e ,
k to r é s n imi bu d em e mô cť r ob i ť s ú p o ro v nan i e (m enš í , v äčš í ) a
vz á jom n é v ým en y. Zo p ak u jm e s i a l go r i tm us v ým en y o b s ah u d v och
p r em enn ých X a Y . P ouž i j em e t r e t i u po mo cnú p r em e n nú Z , r o v nak ého
t yp u ako p r em enn é X , Y. V ým en u u sk u to čn ím e t ro mi p r i r ad en i am i :
Z:=X; X:=Y; Y:=Z
Ex i s t u jú v i ace r é t yp y a l go r i tm ov n a v yr i e š en i e t e j t o ú lo h y, m y s a
zoz n ámi me s d vo ma n a j j edn od u ch š ími .
1.41 .1 . Tr iedenie cez max imum - MAXSORT
P os t up : N á j d em na j v äčš í p rv ok v po s t up no s t i A[ 1 . . N] . T en p a t r í n a
p os l ed n é mi es to , p re t o h o v ym en ím s po s l edn ým p r vk om. T en t o p r vok
j e už t am , k d e m á b yť , p r e to s i h o už ď a l e j n ebu d em vš ím ať .
Zo p aku j em t en t o po s t up p r e " s k r á t enú" p o s t up no sť A[ 1 . .N - 1] . Ď a l š ím
Algoritmizácia a programovanie – učebné texty 80
o p ak ov an ím nakon i ec d o s t an em us po r i ad an ú po s t upn os ť . Hr ub á
s ch ém a a l gor i tm u:
for I:=N downto .....
do begin <nájdi maximum v úseku postupnosti A[1.. ]>;
<vymeň ho s prvkom A[ ]>
end
D o pl ň t e ch ýb a j ú ce ča s t i . P r i t r i ed en í n ám v š ak n es t ač í n á j s ť l en
h o dn o tu m ax ima , a l e kv ô l i n ás l edn e j v ým en e p r vk ov v p os t up no s t i
p o t r eb u j em e p ozn ať a j j eho poz í c iu - i nd ex . P r e to p r i j eho n á j den í
m us ím e od l ož i ť d o n e j ak e j p om ocn e j p r em en n e j a j j eho i nd ex .
1.41 .2 . Tr iedenie prebublávaním - BUBBLESORT
K eďž e ch cem e p os tu pn osť č í s e l vzo s t up n e us po r i ad ať , b ud em e sa
s n až i ť d os t ať men š i e p rv k y v ľ av o a v äčš i e v p rav o . P r i nc íp
p r ebu b l áv an i a sp o č í v a v p o ro vn ávan í d v o j í c su s ed n ých p r v ko v a i ch
n á s l ed n e j v ým en e :
if A[I] > A[I+1]
then <vymeň prvky A[I], A[I+1]>
S am ozr e jm e , t ak ých to po r ov nan í a p r í p ad n ých v ým en m u s í me u ro b i ť
v i ac . J edn ozn ačn e m us ím e po r ov n ať vš e tk y d v o j i c e s us edn ých p r vk ov
- n a j l epš i e s ys t emat i ck y z ľ av a d op r ava :
for I:=1 to .....
do if A[I] > A[I+1]
then <vymeň prvky A[I], A[I+1]>
Ú l oha : D opl ň t e h o rn ú h r an icu c yk l u f o r .
N apí š , ako b ud e v yz e r ať po s tu pno sť 2 , 8 , 5 , 2 , 9 , 1 , 8 p o ap l i k ác i i
h o r eu v ed eného a l go r i tm u: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Čo t r eb a d o a l go r i tmu
d o p ln i ť , ab y t r i ed i l c e l ú N - p rv ko vú p os tu pn osť? N av r hn i v yl ep š en ia
a l go r i tmu , ab y s a p o č í t a č p r i t r i ed en í p os tu pn os t i čo na j m en e j
"n a r o b i l " .
P or ov n a j o b e m et ód y t r i ed en i a .
Pr í k l ad :
V yt v o r t e p on uk ov ý p r o gr am, k t o r ý n a z ač i a t ku v ygen e r u j e n áho dnú
Algoritmizácia a programovanie – učebné texty 81
p os tu pn osť č í s e l z i n t e rv a lu <1 , 20> . ( P r ed gen e ro v an ím s i vžd y
v yp ýt a p o če t p rvk o v p os tu pn os t i . ) P o t om o p ak ov an e r ea l i zu j e
n a s l ed o vn ú po nu ku :
1 . V ýp i s ak tu á l n e j pos tu pn os t i
2 . V ygen e r o v an ie n ove j p os t up no s t i
3 . V zo s tu pn é u t r i ed en i e p os t up no s t i M AX S ORT om
4 . V zo s tu pn é u t r i ed en i e p os t up no s t i BU BB LE S OR T om
5 . V zo s tu pn é u t r i ed en i e p os t up no s t i M IN S OR Tom
6 . Zo s tu pn é u t r i ed en ie po s t up no s t i ľu bov oľ n ým s pô so b o m
7 . K o ni ec
M IN S O R T j e t r i ed en i e c ez mi n im um, k to r é j e v p r in c íp e r o vn ak é , ako
t r i ed en i e c ez m ax im um . O p ak ov an e v yh ľ ad áv am e n a jmen š í p r vo k v
ú s ek u a v ym i eňam e h o s o z ač i a to čn ým p r vk om . Po čas b eh u p r o gramu
n ez o t i e r a j t e ob r azo vk u , ab y b o lo možn é po ro vn ať pô v o dnú
p os tu pn osť s u s po r i ad an ou . S kú s t e v ym ys l i e ť v l a s tný a l go r i t mus
t r i ed en i a .
Algoritmizácia a programovanie – učebné texty 82
Literatúra
1. Andrejková, G. – Kucka, M.: Zbierka úloh z programovania, Prírodovedecká fakulta
UPJŠ, Košice 1991
2. Blaho, A. – Kalaš, I.: Comenius Logo: tvorivá informatika, Bratislava CL Group 1998
3. Drlík, P. – Hvorecký, J.: Informatika – náčrt didaktiky, PF v Nitre 1992
4. Dvořák, S.: Dekompozice a rekursívne programy, Grada, Praha 1992
5. Dvořák, S.: Turbo Pascal 6 v príkladech, Grada, Praha 1991
6. Fabián, P. a kol.: Počítače a programovanie, VŠDS v Žiline 1990
7. Fikár, I a kol.: Programátorský Babylon, Grada, Praha 1992
8. Grošek, O. – Porubský, Š.: Šifrovanie – algoritmy, metódy, prax, Grada, Praha 1992
9. Gvozdjak, L a kol.: Počítače a programovanie, Alfa, Bratislava 1985
10. Hruška, T. : Pascal pro začátečniky, SNTL, Praha 1989
11. Hvorecký,J. – Kelemen,L.: Algoritmizácia, Alfa, Bratislava 1983
12. Hvorecký, J – Gabčo, P.: Informatika a výpočtová technika pre I. ročník gymnázia,
SPN, Bratislava 1988
13. Jinoch, J. a kol.: Programovaní v jazyku Pascal, SNTL, Praha 1985
14. Kryl, R. – Drózd, J.: Začínáme s programovaním, Grada,Praha 1992
15. Kukal, J: Myšlením k algoritmům, Grada, Praha 1992
16. Kulacs, D. – Petlák, E.: Didaktika. PF v Nitre 1985
17. Mikula, P. a kol.: Turbo Pascal 7.0 – kompletní pruvodce, Grada, Praha 1993
18. Wirth,N: Algoritmy a štruktúry údajov, Alfa, Bratislava 1987