Obsah
P řed m lu va O bsah
3 \
6
1 F iltr S O R T (leh k é op ak ován í) 12 1.1 M inimální im p le m e n ta c e ..................................................................................................... 12 1.1.1 Podrobnější p o p i s ..................................................................................................... 12 1.1.2 K ontejner a t ř í d ě n í .................................................................................................. 12 1.1.3 Im p le m e n ta c e ............................................................................................................ 13 1.1.4 N ad prvním p r o g r a m e m ........................................................................................ 13 1.2 Rafinovanější im p le m e n ta c e .............................................................................................. 14 1.3 N á s t r o j e ................................................................................................................................... 15 1.3.1 Hlavní p r o g r a m ......................................................................................................... 15 1.3.2 Porovnání řádek podle č í s e l .................................................................................. 16 1.3.3 A nalýza param etrů příkazové ř á d k y .................................................................... 17 1.3.4 Převod znakového řetězce do kódové stránky 852 18 1.3.5 N ad druhou v e r z í ...................................................................................................... 20 1.4 Refaktorujem e program S O R T .......................................................................................... 20 1.4.1 Návrhové vzory a re fa k to ro v á n í........................................................................... 20 1.4.2 P ráce se znaky ......................................................................................................... 21 1.4.3 K o m p a r á to r y ............................................................................................................ 22 1.4.4 Hlavní program a t ř í d ě n í ........................................................................................ 23 1.4.5 Hlavní p r o g r a m ......................................................................................................... 27 1.5 N ám ěty pro sam ostatnou p r á c i.......................................................................................... 27 2
H o d in y (ú v o d d o p rogram ován í G U I) 28 2.1 Jednoduché digitální h o d i n y .............................................................................................. 28 2.1.1 N ávrh grafického uživatelské r o z h r a n í................................................................. 28 2.1.2 O bsluha u d á l o s t í ...................................................................................................... 31 2.2 Hodiny s r u č ič k a m i............................................................................................................... 34 2.2.1 Kreslicí plocha a k re s le n í........................................................................................ 34 2.2.2 Kreslení v o k n ě ......................................................................................................... 35 2.2.3 První verze analogových h o d in .............................................................................. 36 2.2.4 V ylepšená v e r z e ......................................................................................................... 42 2.2.5 Další drobná v y le p š e n í............................................................................................ 44 2.3 N ám ěty pro sam ostatnou p r á c i.......................................................................................... 47
3
O š e tř o v á n í c h y b z a b ě h u 48 3.1 Když nastane chyba ........................................................................................................... 48 3.2 V ý jim k a .................................................................................................................................. 50 3.2.1 První p ř ib líž e n í....................................................................................................... 50 3.2.2 Vyvolání v ý jim k y .................................................................................................... 55 3.2.3 Zachycení v ý j i m k y ................................................................................................. 57 3.2.4 Běh program u s vý jim k am i................................................................................... 58 3.2.5 T řídy v ý jim e k ........................................................................................................... 60 3.3 Koncovka: operace, které musí p r o b ě h n o u t................................................................... 61 3.4 Náměty pro sam ostatnou p r á c i.......................................................................................... 63
4
U k a z a te le a p rá c e s p a m ě tí 64 4.1 A dresa a u k a z a te l.................................................................................................................. 64 4.1.1 D atový typ u k a z a t e l .............................................................................................. 64 4.1.2 P řístup к proměnným pomocí u k a z a t e l ů ......................................................... 66 4.1.3 Pořadí d e k la ra c í........................................................................................................ 69 4.2 Dynamické přidělování p a m ě t i .......................................................................................... 69 4.2.1 Paměť p r o g r a m u .................................................................................................... 69 4.2.2 V ytváření dynamických p r o m ě n n ý c h ................................................................ 70 4.2.3 Uvolňování dynamických prom ěn n ý ch ................................................................ 73 4.3 Náměty pro sam ostatnou p r á c i........................................................................................... 75
5
P r o c e d u r y a fu n k c e 5.1 Přetěžování procedur a f u n k c í ........................................................................................... 5.1.1 Pravidla p ř e tě ž o v á n í.............................................................................................. 5.1.2 Kdy použít p ře tě žo v á n í........................................................................................... 5.1.3 Pohled pod p o k l i č k u .............................................................................................. 5.2 Volací k o n v e n c e ..................................................................................................................... 5.2.1 Volání p o d p r o g r a m u .............................................................................................. 5.2.2 Podporované volací konvence ............................................................................. 5.3 Implicitní hodnoty p a r a m e t r ů ........................................................................................... 5.3.1 O co jde? .................................................................................................................. 5.3.2 Deklarace im plicitní hodnoty p a r a m e t r u ......................................................... 5.4 Dynamická k n ih o v n a ........................................................................................................... 5.4.1 V ytvoření dynamické knihovny ve Free Pascalu . . \ ..................................... 5.4.2 Použití dynamické k n ih o v n y ........................................... ' ................................... 5.4.3 Im port DLL pomocí nástro jů z Win32 A PI (dynamický i m p o r t ) 5.4.4 Použití DLL napsané v jiném jazyce ................................................................ 5.5 Náměty pro sam ostatnou p r á c i...........................................................................................
6
V la s tn o s ti a o p e r á to r y 97 6.1 V lastnost ............................................................................................................................... 97 6.1.1 Jednoduchá v la s tn o s t.............................................................................................. 97 6.1.2 Indexovaná v la s t n o s t ................................................................................................ 100 6.2 Co je přetěžování o p e r á t o r ů .................................................................................................103 6.3 Přetěžování operátorů ve Free Pascalu ............................................................................ 104 6.3.1 Základní p r a v id la ....................................................................................................... 104
76 76 76 78 79 80 80 81 81 81 82 83 83 87 89 92 96
6.4
6.5
6.3.2 Příklad: komplexní č í s l a ............................................................................................105 Přetěžování operátorů v D e l p h i .......................................................................................... 109 6.4.1 Přetěžovatelné o p e r á to r y .......................................................................................... 109 6.4.2 Obecná pravidla .........................................................................................................111 6.4.3 Příklad: komplexní č í s l a ........................................................................................... 111 Náměty pro sam ostatnou p r á c i............................................................................................. 114
7
S e z n a m a z a p o u z d ře n í 115 7.1 Co je s e z n a m ........................................................................................................................... 115 7.2 Naivní implementace seznamu................................................................................................. 116 7.2.1 Pomocné t y p y ............................................................................................................... 116 7.2.2 T říd a S e z n a m ...............................................................................................................118 7.2.3 Vložení nového prvku za určený prvek ................................................................. 121 7.3 Problém y naivní implementace spojového se z n a m u ........................................................124 7.3.1 Chybějící m e to d y ....................................................................................................... 124 7.3.2 Seznam není u n iv e r z á ln í...........................................................................................124 7.3.3 Porušené zap o u z d ře n í................................................................................................. 125 7.3.4 Lepší im plem entace s e z n a m u .................................................................................... 125 7.3.5 Seznam, který nezveřejňuje typ p r v k u ................................................................... 126 7.4 Další vylepšení ........................................................................................................................130 7.4.1 Oddělíme rozhraní od im plem en tace.......................................................................131 7.4.2 Návrhový vzor M o s t ..................................................................................................134 7.5 Nám ěty pro sam ostatnou p r á c i.............................................................................................134
8
Ite rá to r 136 8.1 К čemu je dobrý i t e r á t o r .......................................................................................................136 8.2 T řídy i t e r á t o r ů ........................................................................................................................137 8.2.1 A bstraktní i t e r á t o r .....................................................................................................137 8.2.2 T říd a seznam u ............................................................................................................143 8.3 Použití iterátorů ...................................................................................................................145 8.4 Poznám ky na z á v ě r ................................................................................................................. 148 8.5 N ám ěty pro sam ostatnou p r á c i.............................................................................................150
9
Š a b lo n y n e b o li g e n e ric k é ty p y 151 9.1 К čemu jsou generické t y p y ? ................................................................................................ 151 9.2 Syntaktická p r a v i d l a ..............................................................................................................151 9.2.1 Generická t ř í d a ............................................................................................................152 9.2.2 Použití generické t ř í d y .............................................................................................. 153 9.3 Generický s e z n a m .....................................................................................................................154 9.3.1 Prvek s e z n a m u ............................................................................................................154 9.3.2 Seznam ......................................................................................................................... 155 9.4 N ám ěty pro sam ostatnou p r á c i.............................................................................................157
10 P o k u s y s 10.1 Verze 10.1.1 10.1.2 10.1.3
f r a k tá ly I (p o k r o č ilé G U I) 158 1 .0 ..................................................................................................................................... 158 F r a k tá l............................................................................................................................158 Hlavní o k n o ..................................................................................................................160 V ý sled ek ........................................................................................................................ 171
10.2 Verze 2.0: O dstraňujem e náp ad n á n e d o p a tř e n í...............................................................171 10.2.1 Komunikace s běžícím p ro g ram e m ......................................................................... 172 10.2.2 Chybný v s t u p .............................................................................................................. 175 10.2.3 Nad verzí 2 . 0 ........................................ 178 10.3 Verze 2.1: D robná v y le p š e n í.................................................................................................178 10.3.1 Informace o p ro d u k tu .................................................................................................178 10.3.2 Stavová ř á d k a .............................................................................................................. 181 10.3.3 Rozměry a barvy bitové m a p y ................................................................................ 182 10.3.4 P o s u v n ík y ..................................................................................................................... 185 10.3.5 Pořadí kom ponent .................................................................................................... 187 10.3.6 Výběr m y š í ..................................................................................................................187 10.3.7 Panel n ástrojů ...........................................................................................................191 10.4 Náměty pro sam ostatnou p r á c i............................................................................................. 193 11 P o k u s y s f r a k tá ly I I (X M L , n á p o v ě d a ) 194 11.1 Verze 3.0: Dynamické knihovny a konfigurační s o u b o r ..................................................194 11.1.1 Úvodní ú v a h y .............................................................................................................. 194 11.1.2 Značkovací jazyk X M L ............................................................................................. 197 11.1.3 Zpracování XML v Pascalu ................................................................................... 199 11.1.4 Načtení konfiguračního s o u b o r u ............................................................................ 200 11.1.5 Im port výpočetní funkce z dynamické k n ih o v n y .............................................. 205 11.1.6 Dialogové okno N astavení ...................................................................................... 206 11.1.7 Instalace dynamické k n ih o v n y ................................................................................207 11.1.8 Vizuální návrh okna N astavení ............................................................................ 207 11.2 Verze 3.0.1: Použití registru W in d o w s ................................................................................209 11.2.1 Proč přistupovat к re g is tru ...................................................................................... 210 11.2.2 Registr W in d o w s ....................................................................................................... 210 11.2.3 Ú prava program u pro výpočet f r a k t á l ů ...............................................................212 11.3 Verze 3.1: N á p o v ě d a .............................................................................................................. 213 11.3.1 N á s tr o je ........................................................................................................................ 213 11.3.2 Soubory s n á p o v ě d o u .................................................................................................214 11.3.3 Ú prava p ro g r a m u ....................................................................................................... 215 11.4 Náměty pro sam ostatnou p r á c i............................................................................................. 216 12 I n s ta la č n í p r o g r a m \ 217 12.1 N S I S .................................................................................................. > ..................................... 217 12.1.1 Co je NSIS ................................................................................................................. 217 12.2 Jednoduchý instalační p r o g r a m ..........................................................................................222 12.2.1 První v e r z e ................................................................................................................. 222 12.2.2 Vylepšujeme první instalační program ...............................................................225 12.3 Průvodce instalací ................................................................................................................. 227 12.3.1 Stránky p rů v o d c e ....................................................................................................... 227 12.3.2 Jednoduchý průvodce instalací Fraktálu ........................................................... 229 12.3.3 A tr ib u t y ........................................................................................................................229 12.3.4 Upravujeme okna průvodce ...................................................................................234 12.3.5 Další ú p ra v y .................................................................................................................235 12.4 Náměty pro sam ostatnou p r á c i.............................................................................................243
13 S o u b ě ž n é p o d p r o c e s y n e b o li v lá k n a 244 13.1 Základy práce s p o d p r o c e s y ................................................................................................ 244 13.1.1 Co je to p o d p r o c e s ....................................................................................................244 13.1.2 Pokročilejší nástroje ................................................................................................ 248 13.2 Synchronizace p o d p r o c e s ů ....................................................................................................252 13.2.1 Souběh, synchronizace a u v á z n u tí.........................................................................252 13.2.2 Zámek ve Free P a s c a l u ............................................................................................. 257 13.2.3 Zámek v D e lp h i...........................................................................................................259 13.2.4 M etoda Synchronize .................................................................................................259 13.2.5 Čekání na u d á lo s t....................................................................................................... 261 13.3 Paralelní procedury a fond p o d p r o c e s ů ............................................................................ 264 13.3.1 Fond p o d p r o c e s ů ....................................................................................................... 264 13.3.2 Paralelní procedury . . \ ............................................................................................. 265 13.3.3 Paralelní procedury a fond podprocesů ve Free P a s c a l u .................................265 13.4 Podprocesy a fra k tá ly ..............................................................................................................269 13.4.1 Verze 4.0: V ýpočet barvy v sam ostatném p o d p r o c e s ů .................................... 269 13.5 N ám ěty pro sam ostatnou p r á c i............................................................................................. 274 14 Z a č ín á m e s d a ta b á z e m i 275 14.1 Co je co v d a ta b á z íc h ..............................................................................................................275 14.1.1 Tabulka, databáze a další pojm y .........................................................................275 14.1.2 Kom ponenty pro práci s d a t a b á z í .........................................................................277 14.1.3 Další důležité p o j m y ................................................................................................ 278 14.1.4 S tru k tu ra databázové a p lik a c e ................................................................................279 14.2 Prohlížím e si d a ta v t a b u l c e ................................................................................................ 280 14.2.1 P ř íp r a v a ........................................................................................................................ 280 14.2.2 V lastní p ro g ra m ...........................................................................................................281 14.3 Používáme m řížku ................................................................................................................. 282 14.3.1 Upravujeme d a ta v d a ta b á z i................................................................................... 283 14.3.2 Jm éna sloupců .......................................................................................................... 284 14.3.3 Počítané s l o u p c e ....................................................................................................... 284 14.4 D atabáze v konzolové a p lik a c i............................................................................................. 287 14.4.1 P o s t u p ........................................................................................................................... 287 14.4.2 Im p le m e n ta c e ..............................................................................................................288 14.4.3 Jednotky a p ro m ě n n é ................................................................................................ 288 14.4.4 V lastní v ý p i s ..............................................................................................................289 14.5 Dotazovací jazyk SQL .......................................................................................................... 290 14.5.1 D otaz (příkaz S E L E C T ) ..........................................................................................290 14.5.2 V kládání záznam ů do tabulky (příkaz I N S E R T ) ..............................................292 14.5.3 Aktualizace (příkaz U P D A T E )............................................................................... 292 14.5.4 M azání záznam ů (příkaz D E L E T E ) ..................................................................... 293 14.5.5 Vytvoření a zrušení t a b u l k y ...................................................................................293 14.5.6 V ytváření a rušení i n d e x ů ...................................................................................... 293 14.6 Jednoduché p ř í k l a d y ..............................................................................................................294 14.6.1 Vložení nového záznam u do ta b u lk y ..................................................................... 294 14.6.2 O dstranění záznam u z ta b u lk y ............................................................................... 295 14.6.3 A g reg ace........................................................................................................................ 295
14.6.4 Příkaz s p a r a m e tr y ...................................................................................................296 14.7 N ám ěty pro sam ostatnou p r á c i............................................................................................297 15 D o d a te k 298 15.1 Kódová s t r á n k a ........................................................................................................................298 15.1.1 Změna kódové stránky konzolového okna W indows .......................................298 15.1.2 Uložení souboru v daném k ó d o v á n í.....................................................................298 15.2 Knihovny Free P a s c a l u ...........................................................................................................299 15.2.1 Když IDE nezná j e d n o t k u ......................................................................................299 15.2.2 Instalace balíčku ...................................................................................................... 299 15.3 Program a projekt ................................................................................................................. 299 15.3.1 Nastavení la d ič e ..........................................................................................................299 15.3.2 Velikost spustitelného s o u b o r u ............................................................................... 300 15.3.3 Jen nutné soubory ................................................................................................... 300 15.4 Lazarus a výjimky ................................................................................................................. 301 L iteratura
302
R ejstřík
304