VÝUKOVÝ MATERIÁL Identifikační údaje školy
Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vytvořeno Určeno pro Přílohy
Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 CZ.1.07/1.5.00/34.1076 Pro vzdělanější Šluknovsko 32 – Inovace a zkvalitnění výuky prostřednictvím ICT 0207 Mgr. Bc. Jan Škoda Programování VY_32_INOVACE_0207_0111 Moduly a knihovny Žák si upevní učivo o modulech a knihovnách 15. 7. 2013 3. ročník oboru Informační technologie Bez příloh
Metodický list • Učitel: • Výklad s projekcí elektronického učebního materiálu. • Ukázka obecného postupu činností. • Monitorování činnosti žáků.
• Žák: • Sleduje výkladovou projekci a demonstraci učitele.
Moduly a knihovny
Knihovny • • • •
Soubor funkcí, procedur, objektů a zdrojů. Knihovny mohou být sdíleny více programy. Usnadňuje práci programátorovi. Umožňují použít již vytvořený kód v dalších programech.
Knihovny • Poskytují své služby pomocí API • API: Application Programming Interface označuje v informatice rozhraní pro programování aplikací. • Jde o sbírku procedur, funkcí či tříd.
• Z hlediska práce s kódem knihovny v operační paměti je dělíme na sdílené a nesdílené. • Knihovny se dělí se na statické a dynamické.
Statické knihovny • Statická knihovna tvoří s přeloženým programem kompaktní celek. • Jsou spojovány linkerem v době stavění programu. • Je archivem jednoho nebo více objektových souborů. • Statické knihovna je nezbytná pro chod daného programu. • Typickou příponou souboru statické knihovny je .lib nebo .a.
Dynamické knihovny • Do spustitelného souboru se ukládají pouze tabulky odkazů na symboly definované v dynamické knihovně. • Pro chod programu je pak potřeba mít na počítači nainstalovánu i příslušnou dynamickou knihovnu. • Dynamicky se dají linkovat i dynamické knihovny. • Výsledkem je pak dynamická knihovna závislá na jiné dynamické knihovně. • Při spouštění programu pak OS provádí dynamické linkování. • Typickou příponou souboru obsahujících dynamickou knihovnu je .dll a .so.
Vkládání knihoven v různých jazycích • C/C++ • #include
• #include
• C# • using knihovna/class; • using System.Windows.Forms;
• Java • import Knihovna; • Import java.awt.Frame;
• Pascal • uses knihovna; • uses crt;
Historie knihoven • V roce 1959 byly do jazyku COBOL zahrnuty „primitivní funkce knihovního systému“. • Jean Sammet je ve zpětném pohledu popsal jako „nedostatečná knihovní zařízení“. • Další přispění k moderní formě knihovny přispěl jazyk FORTRAN. • S významným konceptem přišla též Simula 67 • Simula – první OOP s „modernímy“ knihovnami.
Moduly • Modulární programování je prostředek pro strukturování programů. • Je založeno na myšlence rozděl a panuj. • Program se rozdělí do částí (modulů), které řeší jednotlivé problémy. • Modul vytváří kolem sebe určité hranice, přes které dochází k předávání programových entit.
Výhody • • • • •
Zvyšují přehlednost rozsáhlejších programů. Dobře navržené moduly zvyšují znovupoužitelnost kódu. Moduly lze samostatně ladit. Moduly usnadňují dělbu práce při týmové práci. Zvýšení rychlosti kompilace programu.
Moduly • Nedává pravidla pro samotný hierarchický rozklad. • Určuje jak má vypadat výsledek. • Předpokládá, že výsledkem rozkladu je systém modulů, které jsou rozčleněny do podsystémů. • Systém modulů: Podsystém 1 R
Zdroj: Autor
Podsystém 2
P
A
D
Q
B
C
Moduly - pojmy • Soudržnost • Intensita vazeb mezi moduly v rámci jednoho podsystému. • Na obrázku na předešlém snímku je to například vazby A-D nebo R-P.
• Spřaženost • Intenzita vazeb mezi moduly různých podsystémů. • Na obrázku na předešlém snímku je to například vazby P-A nebo Q-B.
Moduly • Chceme-li používat modul, musíme do zdrojového kódu vložit jeho rozhraní. • Modul je tvořen minimálně dvěma soubory. • Prvním je hlavičkový soubor. • Koncovka .h. • Obsahuje deklarace všech veřejných datových typů, konstant, případně globálních proměnných.
• Druhým je zdrojový soubor. • Koncovka .c • Obsahuje deklarace všech skrytých datových typů a konstant, definice a inicializace veřejných globálních proměnných a konstantních proměnných a implementace všech, skrytých i veřejných funkcí modulu
Příklad modulů v C • Soubor vypocty.h • • • • •
#ifndef _VYPOCTY_H #define _VYPOCTY_H int soucet(int a, int b); int rozdil(int a, int b); #endif.
• Soubor vypocty.c • #include "vypocty.h" • int soucet(int a, int b) • { • return a+b;
• } • int rozdil(int a, int b) • { • return a-b;
• }
Zásady modulárního programování • • • • •
Málo používat globální proměnné. Podprogramům předávat všechny údaje pomocí parametrů. Moduly lze samostatně ladit. Moduly usnadňují dělbu práce při týmové práci. Dobře navržené moduly zvyšují znovupoužitelnost kódu.
Zdroje • Historie - jazyky. Objektová analýza, návrh a programování [online]. 2013 [cit. 2013-07-15]. Dostupné z: http://objekty.vse.cz/Programovani/Historiejazyky#obr3. • Knihovna (programování). In: Referáty-seminárky.cz [online]. 2008 [cit. 2013-0715]. Dostupné z: http://referaty-seminarky.cz/knihovna-programovani/. • Knihovna (programování). In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2013 [cit. 2013-07-15]. Dostupné z: http://cs.wikipedia.org/wiki/Knihovna_%28programov%C3%A1n%C3%AD%29. • Modulární programování. Moje škola [online]. © 2001-2006 [cit. 2013-07-15]. Dostupné z: http://www.mojeskola.cz/Vyuka/Php/Kurzy/kurz_pascal30.php. • MARTINEK, David. Moduly a knihovny. Jak na projekty v jazyce C [online]. 2009 [cit. 2013-07-15]. Dostupné z: http://www.mojeskola.cz/Vyuka/Php/Kurzy/ kurz_pascal30.php. • Moduly. KLIMÁNEK, Petr. Krokodyylovy stránky [online]. 2010 [cit. 2013-07-15]. Dostupné z: http://www.krokodyyl.wz.cz/programovani/moduly.php.