THE APPLICATION OF INFORMATION TECHNOLOGY IN TUITION OF PHYSICS Josef MATĚJUS, Karol RADOCHA Abstract: The article discusses the creation of software boundaries which can communicate by means of provisional USB card with school measuring set Gamabeta. It is created with help of objective orientation language Microsoft Visual C# and platform .NET. It offers more functions and visualization of information in real time which helps clarity. Key words: Electronic teaching aids, programming. APLIKOVÁNÍ INFORMAČNÍCH TECHNOLOGIÍ VE VÝUCE FYZIKY Resumé: Příspěvek pojednává o tvorbě softwarového rozhraní komunikujícího prostřednictvím experimentální USB karty se školní měřicí soupravou Gamabeta. Aplikace je tvořena s využitím moderního objektově orientovaného jazyka Microsoft Visual C# a platformy .NET. Po stránce uživatelského rozhraní nabízí více funkcí a vizuální zprostředkování informací v reálném čase, které napomáhá názornosti. Klíčová slova: Elektronické učební pomůcky, programování. 1 Měřicí souprava Gamabeta Od devadesátých let minulého století je na mnohých středních i základních školách v rámci výuky fyziky využívána souprava Gamabeta. Jedná se o didaktickou pomůcku pro měření a studium vlastností záření β a γ, umožňuje demonstrovat způsoby ochrany před působením ionizujícího záření. Obsahuje detektor záření (Geiger-Müllerovu trubici, typ SBM-20), zdroj záření, čítač elektrických impulzů, stativ, absorpční destičky z různých materiálů a další pomůcky pro realizování různých experimentů a dobře zpracovaný návod pro měření. Původním předpokladem je „ruční“ měření pouze prostřednictvím čítače impulzů. Bezpečný zdroj záření je nízké aktivity, jeho používání je schváleno Ministerstvem zdravotnictví ČR, Státním zdravotním ústavem ČR a hlavním hygienikem. Je tvořen kovovým pouzdrem s otočnou clonou, která umožňuje výstup záření. Vlastním zdrojem záření β je izotop 90Sr, zdrojem záření γ je 241Am, výstupu záření α je uvnitř tělesa zamezeno ochrannou fólií. Výhodou inovované soupravy s názvem Gamabeta 2007 dle Halouska [2009] je možnost zobrazení průběhu měření prostřednictvím projektoru, případně uložení dat. Souprava Gamabeta byla dodávána společně se softwarovým rozhraním Gabeset kompatibilním pouze s operačním systémem MSDOS. Zařízení mohla být propojena jen prostřednictvím standardního sériového rozhraní.
Počítače používané v současné době však tímto rozhraním zpravidla nedisponují. Gamabeta 2007 je kompatibilní s novějšími operačními systémy, zastaralý způsob komunikace prostřednictvím rozhraní RS 232 byl nahrazen rozšířeným rozhraním USB (Universal Serial Bus). Komunikace realizovaná prostřednictvím stavebnice experimentální USB karty K8055 belgické společnosti Velleman pak umožňuje tvorbu vlastního uživatelského rozhraní, které poskytuje více funkcí než pouhý čítač impulzů. (Podrobné technické informace o této kartě lze nalézt prostřednictvím internetových stránek uvedeného výrobce.) Taková aplikace umožňuje snadno monitorovat vlastní měření včetně vyhodnocení jeho výsledků. Uživatel má zároveň plnou kontrolu nad měřicím zařízením, které lze kdykoliv během chodu operačního systému připojit či odpojit. Pazdera [2008] popisuje takovou vlastní aplikaci, která je kompatibilní i s operačními systémy Windows 98SE, 2000, Me a XP. Aplikaci lze dle autora programovat s využitím jazyků Delphi, Visual Basic a C++ Builder. 2 Tvorba měřicí aplikace Na Střední škole aplikované kybernetiky v Hradci Králové je realizována výuka programování také v prostředí Microsoft Visual Studio. Zjistili jsme, že s podporou knihovny K8055D.dll dodávané výrobcem experimentální USB karty lze programovat komunikační
rozhraní i prostřednictvím objektového jazyka Microsoft Visual C#, proto jsme se rozhodli jej pro tvorbu měřicí aplikace využít. Pro analýzu signálu je dle Šťastného [2009] nezbytné, aby impulzy byly TTL úrovně. Proto byl v rámci elektrotechnických cvičení společně se studenty vytvořen dle obrázku 1 převodník signálu. Experimentální USB karty lze dále využít ve výuce programování, což napomáhá upevňování mezipředmětových vztahů. V obrázku 2 je zachycena fyzická podoba uvedených zařízení včetně konektorů.
Obr 1: Převodník signálu [6]
Obr 2: USB karta a převodník signálu Visual C# je v podstatě hybridním jazykem, který je založen na syntaktických konstrukcích jazyků C++, Java a Visual Basic. Výsledkem je programovací jazyk, který je syntakticky jednoduchý a flexibilní, např. nevyžaduje práci s ukazateli a zajišťuje automatickou správu paměti. Byl vyvinutý za účelem zjednodušení procesu programování a realizování platformy .NET. Tu lze zjednodušeně chápat jako tzv. běhové prostředí a velmi obsáhlou knihovnu základních tříd. Její popis lze nalézt např. v literatuře [5, 7]. Koncepce .NET směřuje k záměru budoucího zvýšení interakce mezi operačními systémy a Internetem. Objektově orientovaný program je přehledný a lze jej snadno spravovat. První možností, kterou
jazyk C# pro strukturování aplikace nabízí, je zapouzdření její funkčnosti do tříd. Třída (class) je datový typ, který plní určitou konkrétní funkci, třídy pak vzájemně spolupracují, tím vzniká aplikace s rozšířenou funkčností. Třídy tvoří ještě větší celky nazývané jmennými prostory, jejich užití je v aplikaci deklarováno klíčovým slovem using. Jmenný prostor (namespace) obsahuje tematicky uspořádané třídy, může být uložen i ve více datových souborech. V kódu aplikace jsou uvedeným způsobem tvořeny vazby na více jmenných prostorů. Deklarace třídy obsahuje konstruktor, vlastnosti (proměnné a konstanty třídy) a metody (funkce třídy). Konstruktor třídy je speciální metodou pro inicializování jejich vlastností a uvedení každé její instance do počátečního stavu. Opakem konstruktoru třídy je destruktor, který zajišťuje uvolnění každé její instance z operační paměti. Vlastnosti a metody bývají také někdy společně nazývány atributy třídy. V některých programovacích jazycích musejí být metody před vlastní implementací ohlášeny prostřednictvím předřazené deklarace v nějakém hlavičkovém prostoru či souboru. Vlastnosti a metody třídy v jazyku C# nemusejí být deklarovány odděleně, pořadí jejich deklarací je nezávislé. Vlastnost třídy je definována prostřednictvím datového typu a identifikátoru, její chování a viditelnost mohou být případně ovlivněny prostřednictvím modifikátorů, které jsou součástí deklarace. Popis hodnotových i odkazových datových typů lze nalézt např. v literatuře [7] nebo na internetových stránkách společnosti Microsoft. Při volbě identifikátoru atributu třídy (i třídy samotné) je nutné rozlišovat malé a velké znaky, protože jazyk C# je tzv. case senzitivní. Identifikátor musí být jednoznačný, dále by měl být krátký, výstižný a smysluplný. Na rozdíl od jiných programovacích jazyků není v jazyku C# omezena délka identifikátoru. Identifikátor může být i shodný s rezervovaným slovem, pokud je na jeho počátek umístěn znak „@“ (např. @class). Součástí identifikátoru nemohou být některé obslužné znaky (např. <, >, +, -, =, #, $, %, &, *, ?) nebo mezery, identifikátor ani nesmí začínat číslicí. V současné době jsou používány dvě konvence zápisu, tzv. PascalCasing a camelCasing. Vlastnost třídy může být inicializována přímo v její deklaraci nebo až uvnitř metody, musí však být inicializována vždy před prvním použitím metodou (musí být známa její hodnota). Pouze v případě konstanty musí být přidělena její hodnota již v rámci deklarace a následně ji
logicky již nelze měnit. V jazyku C# je třída abstraktní formou, kterou nelze aplikovat přímo. Pracovat lze pouze s objektem, který je tzv. instancí třídy. Objekt je vytvořen prostřednictvím klíčového slova new, kterým je volán konstruktor třídy, kompilátor pak v operační paměti alokuje prostor pro instanci dané třídy. Takový objekt disponuje metodami deklarovanými ve své třídě, ale je samostatný, jeho vlastnosti lze řídit nezávisle na třídě. Před datovým typem se mohou v deklaraci nacházet již zmíněné modifikátory, které ovlivňují chování a viditelnost atributů i tříd. Modifikátory lze i kombinovat, nesmějí si však vzájemně odporovat. Nikdy nelze aplikovat hromadně jeden modifikátor pro deklaraci více atributů. Modifikátor public zajistí, že atribut je dostupný i vně příslušné třídy. Pokud je atribut modifikovaný prostřednictvím private, lze k němu přistupovat pouze uvnitř dané třídy. Tím dochází ke skrytí implementačních detailů (např. práce s datovými soubory), které uživatel pro práci s daným objektem nepotřebuje. Při absenci uvedených modifikátorů jsou třídy veřejné a jejich atributy jsou soukromé. Každá třída je tvořena oblastí statickou a oblastí děděnou. Atribut modifikovaný prostřednictvím static je součástí samotné třídy (její statické oblasti) a pro jeho využití již není třeba vytvářet její instanci. Modifikátor sealed zapečetí třídu proti dalšímu odvozování jejich potomků. Společně s modifikátory override a virtual souvisí s dědičností a polymorfizmem. Hlavní metoda programu musí být vždy modifikována public static (void) Main(). Podrobný popis uvedených i dalších modifikátorů lze nalézt v literatuře [7] nebo na internetových stránkách společnosti Microsoft. Metody zajišťují funkčnost třídy, obsahují různé příkazy, přiřazení hodnot vlastnostem, volání jiných metod, deklarace, větvení a cykly. Metody mohou prostřednictvím tzv. parametrů získávat vstupní hodnoty nebo je naopak vracet jako výsledek. Pokud metoda nevrací žádnou výslednou hodnotu, např. pouze řídí vlastnosti, musí se před jejím identifikátorem nacházet klíčové slovo void. Vlastnost a jí přidělená hodnota musejí vždy být shodného datového typu, v opačném případě generuje kompilátor chybu, proto je jazyk C# tzv. typově bezpečným. Návratová metoda vrací výstupní hodnotu prostřednictvím příkazu return, který provádí přiřazení výstupní hodnoty a zároveň metodu ukončí, má tedy dvě funkce. Datový typ výstupní hodnoty metody musí být shodný s datovým
typem uvedeným v deklaraci metody. V případě potřeby lze za různých podmínek vlastnosti přetypovat nebo konvertovat. Vstupním bodem celého programu je hlavní metoda Main(), která může být beznávratová (void) nebo může vracet výslednou hodnotu celočíselného typu (int). Popis klíčových a rezervovaných slov se nachází v literatuře [7] nebo na internetových stránkách společnosti Microsoft. Proměnné instancí jsou vlastnosti třídy, které náležejí její děděné oblasti, jsou dostupné až prostřednictvím instance dané třídy (objektu). Statické proměnné jsou součástí definice třídy a její statické oblasti, bývají také nazývány proměnnými třídy nebo globálními proměnnými. Při práci se statickým atributem v rámci více instancí (objektů) téže třídy se vždy jedná o přístup k identické vlastnosti či metodě jako součásti dané třídy. Kód programu lze strukturovat prostřednictvím složených závorek do tzv. bloků. Proměnné lze deklarovat nejen jako vlastnosti třídy, ale také jako součásti metod či jejich bloků, pak jsou nazývány lokálními proměnnými. Lokální proměnné jsou platné pouze uvnitř bloku, po opuštění bloku programem jsou automaticky uvolněny z operační paměti. Lokální proměnná může případně disponovat identifikátorem shodným s identifikátorem vlastnosti téže třídy, kompilátor je bez problémů rozliší. Uvnitř metody či jejího bloku lze přistupovat zároveň bez kolize k lokální proměnné i k vlastnosti třídy se shodnými identifikátory, přístup k vlastnosti třídy je v takovém případě realizován prostřednictvím odkazu rezervovaným slovem this. Hodnota parametru předávaného metodě může být uvnitř této libovolně zpracována, aniž by ovlivnila hodnotu původní předávající proměnné, parametr metody je v podstatě lokální proměnnou dané metody. Prostřednictvím rezervovaného slova ref lze definovat parametr metody jako odkaz na proměnnou předávající hodnotu metodě, jakákoliv změna parametru metody je pak příčinou shodné změny původní proměnné. Technika tzv. přetěžování metod umožňuje deklarovat v rámci jedné třídy více metod se shodným identifikátorem, které se mohou odlišovat počtem, datovými typy a identifikátory svých parametrů i svou funkcí. K základním rysům objektového programování dále náleží dědičnost a polymorfizmus. Mechanizmus dědění je realizován odvozením nové třídy, prostřednictvím dvojtečky a názvu původní třídy v jejím identifikátoru. V platformě .NET byla
zavedena hlavní třída Object, která náleží jmennému prostoru System. Od této jsou postupně odvozovány všechny ostatní třídy. Nová třída obsahuje (dědí) atributy původní (základní) třídy. Od takové třídy mohou být odvozeny další potomci, zároveň je však tato oddělena od svých potomků i od svého předka. Třída tedy může mít více potomků, ale pouze jednoho předka, tj. základní třídu. Princip polymorfizmu je opačný, instance odvozené třídy může být aplikována i v základní třídě. Zděděnou metodu odvozené třídy lze i přepsat či deklarovat novou metodu se stejným identifikátorem, ale s odlišnou funkcí. Pro možnost přepsání metody odvozené třídy je nezbytné modifikovat v deklaraci její identifikátor prostřednictvím override. Přepsání metody však musí nejdříve být povoleno v základní třídě prostřednictvím modifikátoru virtual. V rámci odvozené třídy lze kromě zděděné metody přistupovat i přímo k téže metodě třídy základní prostřednictvím rezervovaného slova base. 3 Práce s programem a jeho uživatelské rozhraní V obrázku 3 je patrné, že okno aplikace obsahuje čtyři panely (tzv. tabPages), které reprezentují jednotlivé úlohy dle návodu dodávaného společně se soupravou Gamabeta. Jedná se o stanovení úrovně ionizujícího záření v pozadí, důkaz statistické povahy děje radioaktivní přeměny, stanovení účinku vzdalování detektoru od zdroje ionizujícího záření a stanovení rozdílů v absorbování ionizujícího záření různými materiály. Počet měření a doba jejich trvání jsou přednastaveny, lze je však dle potřeby bezprostředně měnit resp. zvýšit, aby výsledky měření byly statisticky významné. Každý panel obsahuje textové instrukce pro realizování konkrétní úlohy včetně popisu stěžejních ovládacích prvků a parametrů, dále pak tabulku hodnot a histogram. Pole měřených hodnot, tabulky i histogramy jsou aktualizovány v reálném čase, reagují odpovídajícím způsobem okamžitě s každým načteným impulzem. Červený či zelený indikátor
signalizuje okamžitý stav připojení počítače k měřicímu zařízení. Při selhání konektivity jsou resetovány pouze parametry konkrétní probíhající úlohy. Probíhající měření lze zastavit, opakovat nebo resetovat jeho hodnoty. Mezi dílčími úlohami (pokud aktuálně neprobíhá nějaké měření) lze měřící zařízení během chodu operačního systému libovolně odpojit či připojit. Pokud student použije vlastní notebook, může jej po realizovaném měření od zařízení odpojit a pracovat s naměřenými hodnotami nezávisle na měřicím zařízení. Dokončení dílčí úlohy je signalizováno odpovídajícím indikátorem. Pokud jsou všechna dílčí měření úspěšně dokončena, lze je jako celek libovolně uložit do binárního souboru včetně data a času realizování měření. Pátý panel obsahuje textová pole pro identifikování žáka, který měření provedl. Prostřednictvím instance třídy (objektu) openFileDialog lze otevřít a načíst dříve uložené měření. Pokud aplikace obsahuje hodnoty načtené ze souboru, nikoliv aktuálně naměřené, nelze editovat textové identifikační údaje v pátém panelu, žák tedy nemůže hodnoty naměřené někým jiným prezentovat jako vlastní. Hodnoty měření lze prostřednictvím standardního tiskového dialogu (třída printDialog) vytisknout do sestavy navrhnuté v souladu s návodem, který je součástí soupravy Gamabeta. S ohledem na připomínky uživatelů připravujeme modifikaci softwarové aplikace s možností editovat combobox čtvrté úlohy, aby bylo možno měnit počet i materiál destiček pro stínění měřeného ionizujícího záření. 4 Závěr Vytvořené softwarové rozhraní je kompatibilní s operačními systémy Windows XP, Windows Vista a Windows 7. Umožňuje zobrazit průběh měření v reálném čase včetně vyhodnocení a uložení nebo vytisknutí jeho výsledků, tím dochází k efektivnímu zrychlení práce. Nápověda vlastní aplikace je vytvořena i s využitím literatury [1, 3, 8, 9], obsahuje text psaný formou srozumitelnou žákovi střední školy.
Obr 3: Okno vytvořené měřicí aplikace 5 Literatura [1] HÁLA, Jiří. Radioaktivita, ionizující záření, jaderná energie. Brno: Konvoj, 1998. 311 s. ISBN 80-85615-56-8. [2] HALOUSEK, Jiří. Záření kolem nás [online]. 1999 [cit. 2010-12-12]. Dostupný z WWW: < http://www.zdravarodina.cz/zr/02_99/zr299_17.h tm >. [3] MAŠLÁŇ, Miroslav; MACHALA, Libor; TUČEK; Jiří. Praktikum z atomové a jaderné fyziky [online]. 2005 [cit. 2010-12-18]. Dostupný z WWW: < http://apfyz.upol.cz/ucebnice/down/ jaderka.pdf >. [4] PAZDERA, Václav. USB Interface KV8055 a jeho použití ve fyzice. Matematika - fyzika informatika, 2007/2008, č. 17, s. 596-602. ISSN 1210-1761. [5] SHARP, John. Microsoft Visual C# 2005 krok za krokem. Brno: Computer Press, 2006. 528 s. ISBN 80-251-1156-3. [6] ŠŤASTNÝ, František; ONDRÁČEK, Zdeněk. Možnosti demonstrace vlastností ionizujícího záření [online]. 2009 [cit. 2010-1205]. Dostupný z WWW: < http://sf.zcu.cz/ rocnik04/ cislo03/cislo3.967/w_zadem.html >. [7] TROELSEN, Andrew. C# a .NET 2.0 profesionálně. Brno: Zoner Press, 2006. 1197 s. ISBN 80-86815-42-0.
[8] ULLMANN, Vojtěch. Detekce a spektrometrie ionizujícího záření [online]. 2006 [cit. 2011-01-03]. Dostupný z WWW:
. [9] ULLMANN, Vojtěch. Jaderná a radiační fyzika [online]. 2006 [cit. 2011-01-03]. Dostupný z WWW:. Mgr. Josef Matějus Univerzita Hradec Králové Pedagogická fakulta Katedra informatiky Rokitanského 62 500 03 Hradec Králové, ČR Tel: +420 493 331 171 E-mail: [email protected] Www pracoviště: www.uhk.cz Ing. Karol Radocha, Ph.D. Univerzita Hradec Králové Přírodovědecká fakulta Katedra fyziky Rokitanského 62 500 03 Hradec Králové, ČR Tel: +420 493 331 120 E-mail: [email protected] Www pracoviště: www.uhk.cz