Obsah Předm luva 3 Obsah \ 6 1 Filtr SO R T (lehké opakování) 12 1.1 Minimální im p lem en tace... 12 1.1.1 Podrobnější p o p is... 12 1.1.2 Kontejner a t ř í d ě n í... 12 1.1.3 Im p lem entace... 13 1.1.4 Nad prvním p ro g ra m e m... 13 1.2 Rafinovanější im p le m e n ta c e... 14 1.3 N á s tr o je... 15 1.3.1 Hlavní p ro g ra m... 15 1.3.2 Porovnání řádek podle č í s e l... 16 1.3.3 Analý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 Nad druhou v e r z í... 20 1.4 Refaktorujeme program S O R T... 20 1.4.1 Návrhové vzory a re fa k to ro v á n í... 20 1.4.2 Práce se znaky... 21 1.4.3 K o m p a rá to ry... 22 1.4.4 Hlavní program a tř íd ě n í... 23 1.4.5 Hlavní p ro g r a m... 27 1.5 Náměty pro sam ostatnou p rá c i... 27 2 H od iny (ú vod d o program ování G U I) 28 2.1 Jednoduché digitální h o d in y... 28 2.1.1 Návrh grafického uživatelské ro z h ra n í... 28 2.1.2 Obsluha u d á l o s t í... 31 2.2 Hodiny s ru č ič k a m i... 34 2.2.1 Kreslicí plocha a k re slen í... 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 Vylepšená v e rz 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 í chyb za 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 ý jim k y... 57 3.2.4 Běh programu s výjim kam i... 58 3.2.5 Třídy v ý jim ek... 60 3.3 Koncovka: operace, které musí p ro b ě h n o u t... 61 3.4 Náměty pro sam ostatnou p rá c i... 63 4 U k azatele a p rá c e s p a m ě tí 64 4.1 Adresa a u k a z a te l... 64 4.1.1 Datový typ u k a z a t e l... 64 4.1.2 Přístup к proměnným pomocí u k a z a te lů... 66 4.1.3 Pořadí deklarací... 69 4.2 Dynamické přidělování p a m ě ti... 69 4.2.1 Paměť p r o g r a m u... 69 4.2.2 Vytváření dynamických p ro m ě n n ý c h... 70 4.2.3 Uvolňování dynamických prom ěnných... 73 4.3 Náměty pro samostatnou p rá c i... 75 5 P ro c e d u ry a funkce 76 5.1 Přetěžování procedur a f u n k c í... 76 5.1.1 Pravidla p ře tě ž o v á n í... 76 5.1.2 Kdy použít přetěžování... 78 5.1.3 Pohled pod p o k lič k u... 79 5.2 Volací konven ce... 80 5.2.1 Volání p o d p ro g ra m u... 80 5.2.2 Podporované volací konvence... 81 5.3 Implicitní hodnoty p a r a m e tr ů... 81 5.3.1 O co jde?... 81 5.3.2 Deklarace implicitní hodnoty p a r a m e tr u... 82 5.4 Dynamická k n ih o v n a... 83 5.4.1 Vytvoření dynamické knihovny ve Free Pascalu.. \... 83 5.4.2 Použití dynamické k n ih o v n y... '... 87 5.4.3 Im port DLL pomocí nástrojů z Win32 API (dynamický im p o r t) 89 5.4.4 Použití DLL napsané v jiném jazyce... 92 5.5 Náměty pro sam ostatnou p rá c i... 96 6 V la stn o sti a o p e rá to ry 97 6.1 Vlastnost... 97 6.1.1 Jednoduchá v la stn o st... 97 6.1.2 Indexovaná v la s tn o s t... 100 6.2 Co je přetěžování o p e r á to r ů...103 6.3 Přetěžování operátorů ve Free Pascalu... 104 6.3.1 Základní p ra v id la... 104
6.3.2 Příklad: komplexní č í s l a...105 6.4 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 ry...109 6.4.2 Obecná pravidla...111 6.4.3 Příklad: komplexní č í s l a... 111 6.5 Náměty pro sam ostatnou p rá c i... 114 7 S eznam 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 řída S e z n a m...118 7.2.3 Vložení nového prvku za určený prvek... 121 7.3 Problémy naivní implementace spojového seznam u...124 7.3.1 Chybějící m e to d y... 124 7.3.2 Seznam není u n iv e rz á ln í...124 7.3.3 Porušené zapouzdření... 125 7.3.4 Lepší implementace seznam u...125 7.3.5 Seznam, který nezveřejňuje typ p rv k u... 126 7.4 Další vylepšení...130 7.4.1 Oddělíme rozhraní od im plem entace...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 I te r á to r 136 8.1 К čemu je dobrý ite r á to r...136 8.2 Třídy i t e r á t o r ů...137 8.2.1 Abstraktní i t e r á t o r...137 8.2.2 T řída seznamu...143 8.3 Použití iterátorů...145 8.4 Poznámky na z á v ě r...148 8.5 Náměty pro sam ostatnou p rá c i...150 9 Š ablo n y n e b o li g en erick é ty p y 151 9.1 К čemu jsou generické ty p y?... 151 9.2 Syntaktická p r a v id la...151 9.2.1 Generická t ř í d a...152 9.2.2 Použití generické t ř í d y... 153 9.3 Generický sezn am...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 sy s fra k tá ly I (p o k ro č ilé G U I) 158 10.1 Verze 1.0... 158 10.1.1 F ra k tá l...158 10.1.2 Hlavní o k n o...160 10.1.3 V ýsledek... 171
10.2 Verze 2.0: Odstraňujeme nápadná n e d o p a tře n í...171 10.2.1 Komunikace s běžícím program em...172 10.2.2 Chybný v s t u p... 175 10.2.3 Nad verzí 2. 0... 178 10.3 Verze 2.1: Drobná 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 su v n ík y...185 10.3.5 Pořadí komponent... 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 sy s fra 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 Nastavení... 206 11.1.7 Instalace dynamické k n ih o v n y...207 11.1.8 Vizuální návrh okna Nastavení... 207 11.2 Verze 3.0.1: Použití registru W in d o w s...209 11.2.1 Proč přistupovat к reg istru... 210 11.2.2 Registr W in d o w s... 210 11.2.3 Úprava programu 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 tro je...213 11.3.2 Soubory s náp o v ěd o u...214 11.3.3 Úprava p ro g ra m u... 215 11.4 Náměty pro sam ostatnou p rá c i... 216 12 In sta la č n í p ro g ra m \ 217 12.1 N S IS... >... 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 trib u ty...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 ro c e sy n e b o li v lá k n a 244 13.1 Základy práce s p o d p ro c e s y... 244 13.1.1 Co je to p o d p ro c e s...244 13.1.2 Pokročilejší nástroje... 248 13.2 Synchronizace p o d p ro 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 lu... 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 st... 261 13.3 Paralelní procedury a fond p o d p ro c e s ů... 264 13.3.1 Fond p o d p ro 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 lu...265 13.4 Podprocesy a frak tály...269 13.4.1 Verze 4.0: Výpočet barvy v sam ostatném p o d p ro 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 atab á z ích...275 14.1.1 Tabulka, databáze a další pojm y...275 14.1.2 Komponenty pro práci s d a ta b á z í...277 14.1.3 Další důležité p o j m y... 278 14.1.4 Struktura databázové a p lik a ce...279 14.2 Prohlížíme si d a ta v t a b u lc e... 280 14.2.1 P říp ra v a... 280 14.2.2 Vlastní p ro g ram...281 14.3 Používáme mřížku... 282 14.3.1 Upravujeme d ata 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 Databáze v konzolové a p lik a c i... 287 14.4.1 P o s tu p... 287 14.4.2 Im p lem entace...288 14.4.3 Jednotky a prom ěnné... 288 14.4.4 Vlastní v ý p i s...289 14.5 Dotazovací jazyk SQL... 290 14.5.1 Dotaz (příkaz S E L E C T )...290 14.5.2 Vkládání záznamů do tabulky (příkaz IN S E R T )...292 14.5.3 Aktualizace (příkaz U P D A T E )... 292 14.5.4 Mazá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 Vytváření a rušení i n d e x ů... 293 14.6 Jednoduché p ř ík la d y...294 14.6.1 Vložení nového záznamu do ta b u lk y... 294 14.6.2 Odstranění záznamu z ta b u lk y... 295 14.6.3 A gregace...295
14.6.4 Příkaz s p a ra m e tr y...296 14.7 Náměty pro samostatnou p rá c i...297 15 D odatek 298 15.1 Kódová s tr á n k a...298 15.1.1 Změna kódové stránky konzolového okna Windows...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 lu...299 15.2.1 Když IDE nezná j e d n o tk u...299 15.2.2 Instalace balíčku... 299 15.3 Program a projekt... 299 15.3.1 Nastavení lad iče...299 15.3.2 Velikost spustitelného s o u b o ru...300 15.3.3 Jen nutné soubory... 300 15.4 Lazarus a výjimky... 301 L iteratura 302 R ejstřík 304