Premium

Získejte všechny články
jen za 89 Kč/měsíc

Programování pro PalmOS počítače krok za krokem (24)

Dnes začneme návrhem aplikace, kterou budeme popisovat v této kapitole: Půjde o program počítající výšku dítěte z výšky jeho rodičů. Tento program bude využívat jen tlačítka, přepínače a políčka k zaškrtnutí.

3.2. Návrh programu pro výpočet výšky dítěte

Nyní zkusíme navrhnout první program, který bude dělat něco užitečného. Program, který napíšeme v této kapitole, bude na základě známé výšky rodičů v centimetrech počítat očekávanou výšku jejich dítěte v dospělosti. Tento program bude navíc používat jen tyto ovládací prvky: tlačítka, přepínače, políčka k zaškrtnutí a text.

Algoritmus, kterým se cílová výška počítá, je popisován jako metoda midparenta - od součtu výšek obou rodičů se (podle toho, zda dítě bude chlapec nebo dívka) přičte nebo odečte 13cm a výsledek se vydělí dvěma. Výška dítěte v dospělosti bude s pravděpodobností 95% ležet v pásmu plus minus 10cm od této hodnoty. Tento algoritmus byl získán empiricky a přes svoji jednoduchost patří stále k nejpřesnějším odhadům výšky dítěte v dospělosti (zájemce odkazuji na Krásničanová Lesný: Kompendium pediatrické auxologie, Galén 2000 nebo úvodní kapitolu Lebl, Krásničanová: Růst a jeho poruchy u dětí, Galen 1996).

Prvním vstupem tohoto algoritmu je výška matky v centimetrech, která má smysl pouze v rozmezí normální ženské výšky. Průměrná výška 18-leté dívky v roce 1991 byla přibližně 166 centimetrů a směrodatná odchylka byla asi 6 cm. Druhým vstupem je výška otce - průměrný 18-letý muž měřil obdobně v roce 1991 přibližně 179 centimetrů a směrodatná odchylka byla 7 cm a algoritmus je spolehlivý pro normálně vysoké otce (viz V. Celostátní antropometrický výzkum 1991). (Za pásmo normy je považováno rozmezí plus minus dvě směrodatné odchylky od normální výšky.) V následující tabulce jsou tyto hodnoty shrnuty:

Průměrná hodnota Směrodatná odchylka Spodní povolená hodnota Horní povolená hodnota
Matka 166 cm 6 cm 166 - 2*6 = 154 cm 166 + 2*6 = 178 cm
Otec 179 cm 7 cm 179 - 2*7 = 165 cm 179 + 2*7 = 193 cm
V. celostátní antropometrický výzkum dětí a mládeže 1991

Dále budeme potřebovat pohlaví dítěte, jehož výšku odhadujeme. Výstupem budou dvě čísla: nejnižší pravděpodobná výška dítěte a nejvyšší pravděpodobná výška dítěte. To bude pro uživatele pohodlnější, než kdybychom uvedli jako výsledek jen střední hodnotu a pásmo plus mínus deset cm.

Ve své první verzi nebude tento program ukládat žádná data, bude používat pouze globální a lokální proměnné jazyka C/C++. Návrh datových struktur tedy přeskočíme a vrhneme se po hlavě do návrhu uživatelského rozhraní.

Uživatelské rozhraní

Jednoduchým programům, jako je například ten, který navrhujeme, stačí jediný formulář, ve kterém uživatel zadá hodnoty výšky matky a otce a pohlaví dítěte. V tomto formuláři také bude zobrazen výsledek. Potřebujeme tedy jeden základní formulář. K formuláři nebude přiřazena žádná uživatelská nabídka (menu). Prázdný formulář bude vypadat takto:

Formulář si pojmenujeme FormularHlavni a jeho definice je v následujícím rámečku:

FORM ID FormularHlavni AT (0 0 160 160)
BEGIN
    TITLE "Cilová vyska"
	
END

Formulář bude organizován odshora dolů - zadávané údaje budou nahoře a výsledek bude zobrazen dole, tak jak je uživatel zvyklý číst. Opačný postup by byl zobrazit výslednou hodnotu nahoře, aby ji uživatel nestínil rukou při zadávání dat (podobně jako u kalkulačky).

Cílem této kapitoly bude naučit se používat tlačítka, zaškrtávátka a přepínače na formulářích. Proto bude celý tento program používat pouze tyto prvky pro vstup i zobrazení údajů. Pro vstup výšky matky a otce použijeme, podobně jako v dialogu pro nastavení času, který je na obrázku vespod, kombinaci přepínačů (použijeme tři - pro každou číslici výšky jeden) a opakovacích tlačítek tvaru trojúhelníčků. Přepínače budou sdruženy do skupiny, aby byl vždy aktivní (inverzně zobrazený) jen jeden z nich.

Vstup výšky matky a otce bude na řádcích pod sebou. Na začátku řádku bude tučný text označující o jakou hodnotu se jedná, za ním budou tři přepínače, každý s jednou číslicí, a za nimi bude jednotka (centimetry). Na konci řádku budou nad sebou dvě opakovací tlačítka. Při zmáčknutí opakovacích tlačítek se číslice ve zvýrazněném přepínači o jedničku zvětší nebo zmenší. Teď to zapíšeme do definice formuláře:


FORM ID FormularHlavni AT (0 0 160 160)
BEGIN
    TITLE "Cilová vyska"
	LABEL "Vyska matky:" AUTOID AT (5 30) FONT 1
	PUSHBUTTON "1" ID TlacitkoMatka100cm AT (PREVRIGHT+4 PREVTOP-2 12 15) FONT 2 GROUP SkupinaMatka
	PUSHBUTTON "6" ID TlacitkoMatka10cm AT (PREVRIGHT+1 PREVTOP PREVWIDTH PREVHEIGHT) FONT 2 GROUP SkupinaMatka
	PUSHBUTTON "0" ID TlacitkoMatka1cm AT (PREVRIGHT+1 PREVTOP PREVWIDTH PREVHEIGHT) FONT 2 GROUP SkupinaMatka
	LABEL "cm" AUTOID AT (PREVRIGHT+4 PREVTOP+2) FONT 1
	REPEATBUTTON "\001" ID OpakujMatkaPlus AT (PREVRIGHT+2 PREVTOP-3 AUTO AUTO) NOFRAME FONT 5
	REPEATBUTTON "\002" ID OpakujMatkaMinus AT (PREVLEFT PREVBOTTOM AUTO AUTO) USABLE LEFTANCHOR NOFRAME FONT 5
END

Všimněmě si, že kromě umístění prvního textu na řádku (5 30) a šířky a výšky jednotlivých přepínačů s číslicemi jsou všechny souřadnice relativní. Pokud bychom chtěli velikost všech tlačítek zvětšit nebo zmenšit, stačí nám to udělat na jediném místě. Nesmíme zapomenout vytvářet hlavičkový soubor, ve kterém definujeme použité konstanty. Abychom viděli, jak budou čísla zobrazená, vložíme již teď jako texty tlačítek nějaké číslice. Popsaný formulář je na následujícím obrázku:

Výšku otce zpracujeme obdobně. Pro zadání pohlaví dítěte použijeme - pro odlišení - dvě políčka k zaškrtnutí umístěná pod sebou. U prvního z nich (Chlapec) nastavíme atribut CHECKED, aby byl na začátku vybrán. Také tyto dva přepínače budou tvořit skupinu.

Jsou-li prvky uživatelského rozhraní definovány s atributem DISABLED, tak jsou zobrazeny, ale nereagují na vstup uživatele. Pro zobrazení výsledného pásma výšky (od - do) umístíme na formulář dva přepínače, které nebudou reagovat na vstup uživatele (a budou se tedy chovat jen jako text v rámečku). Toto zobrazení výsledků však použijeme pouze proto, abychom se naučili nastavovat text zobrazený v tlačítku. Pro zobrazení výsledků nabízí jinak PalmOS velmi komfortní políčka pro zobrazení textu - ta se však naučíme obsluhovat až v další kapitole.

Z popisovaných prvků uživatelského rozhraní chybí už jenom tlačítka. Kam je dát? Každý správný program (a pro "lékařské programy" to platí dvojnásobně) by měl obsahovat alespoň základní nápovědu a informace o autorech. Toto tlačítko umístíme někam do volného místa ve formuláři, třeba vedle políček k zaškrtnutí pohlaví, a místo textu umístíme do tlačítka otazník. Pro zobrazení textu nápovědy a informací o autorovi použijeme později standardní formulář nápovědy PalmOS.

Celý formulář se všemi prvky, které obsahuje, je na následujícím obrázku. V definici tlačítek pro zobrazení výsledku uvedeme nějaká čísla dávající smysl, abychom viděli při prvním zobrazení formuláře, zda se tato čísla do tlačítek vejdou.

Kompletní definice formuláře je v následujícím rámečku:


FORM ID FormularHlavni AT (0 0 160 160)
BEGIN
    
    TITLE "Cilová vyska"
    
    LABEL "Vyska matky:" AUTOID AT (5 30) FONT 1
    PUSHBUTTON "1" ID TlacitkoMatka100cm AT (PREVRIGHT+4 PREVTOP-2 12 15) FONT 2 GROUP SkupinaMatka
    PUSHBUTTON "6" ID TlacitkoMatka10cm AT (PREVRIGHT+1 PREVTOP PREVWIDTH PREVHEIGHT) FONT 2 GROUP SkupinaMatka
    PUSHBUTTON "0" ID TlacitkoMatka1cm AT (PREVRIGHT+1 PREVTOP PREVWIDTH PREVHEIGHT) FONT 2 GROUP SkupinaMatka
    LABEL "cm" AUTOID AT (PREVRIGHT+4 PREVTOP+2) FONT 1
    REPEATBUTTON "\001" ID OpakujMatkaPlus AT (PREVRIGHT+2 PREVTOP-3 AUTO AUTO) NOFRAME FONT 5
    REPEATBUTTON "\002" ID OpakujMatkaMinus AT (PREVLEFT PREVBOTTOM AUTO AUTO) USABLE LEFTANCHOR NOFRAME FONT 5

    LABEL "Vyska otce:" AUTOID AT (5 60) FONT 1
    PUSHBUTTON "1" ID TlacitkoOtec100cm AT (PREVRIGHT+4 PREVTOP-2 12 15) FONT 2 GROUP SkupinaOtec
    PUSHBUTTON "8" ID TlacitkoOtec10cm AT (PREVRIGHT+1 PREVTOP PREVWIDTH PREVHEIGHT) FONT 2 GROUP SkupinaOtec
    PUSHBUTTON "0" ID TlacitkoOtec1cm AT (PREVRIGHT+1 PREVTOP PREVWIDTH PREVHEIGHT) FONT 2 GROUP SkupinaOtec
    LABEL "cm" AUTOID AT (PREVRIGHT+4 PREVTOP+2) FONT 1
    REPEATBUTTON "\001" ID OpakujOtecPlus AT (PREVRIGHT+2 PREVTOP-3 AUTO AUTO) NOFRAME FONT 5
    REPEATBUTTON "\002" ID OpakujOtecMinus AT (PREVLEFT PREVBOTTOM AUTO AUTO) NOFRAME FONT 5

    CHECKBOX "Chlapec" ID ZaskrtniChlapec AT (5 85 AUTO AUTO) GROUP SkupinaPohlavi
    CHECKBOX "Divka" ID ZaskrtniDivka AT (PREVLEFT PREVBOTTOM+1 AUTO AUTO) GROUP SkupinaPohlavi

    LABEL "Bude pravdepodobne vysoky/a" AUTOID AT (5 120) FONT 1
    LABEL "od" AUTOID AT (5 140) FONT 1
    PUSHBUTTON "155" ID TlacitkoVyskaOd AT (PREVRIGHT+4 PREVTOP-2 30 AUTO) DISABLED FONT 2 GROUP 0
    LABEL "do" AUTOID AT (PREVRIGHT+4 PREVTOP+2) USABLE FONT 1
    PUSHBUTTON "200" ID TlacitkoVyskaDo AT (PREVRIGHT+4 PREVTOP-2 30 AUTO) DISABLED FONT 2 GROUP 0
    LABEL "cm" AUTOID AT (PREVRIGHT+4 PREVTOP+2) FONT 1
	
    BUTTON "?" ID TlacitkoOProgramu AT (140 90 AUTO AUTO) FRAME
		
END

Program se bude chovat následujícím způsobem: pokud změníme libovolný údaj ve formuláři, tak budou výsledné hodnoty okamžitě přepočítány a zobrazeny. Pokud nebudou vyhovovat vstupní data (výška matky nebo otce), bude místo cílové výšky zobrazen otazník.

Nyní jsme program navrhli a nezbývá, než jej realizovat.


V příštím díle zkusíme dát podle vzoru z druhé kapitoly dohromady první program, který jen zobrazí tento formulář na obrazovce (to byste ale měli už zvládnout za domácí úkol). Pak se pustíme do trochu odtažitého popisu paměti Palm Pilotu, který je nutný pro pochopení základních funkcí operačního systému.

Témata: aplikace, počítač
  • Nejčtenější

Neomezená data dává O2 ještě levněji než dříve. S odměnou jsou za hubičku

15. dubna 2024  7:02

Základní datově neomezený tarif za cenu nižší, než standardně stojí tarif s 12 GB dat? U O2 na...

Doma si natáhnete neviditelné kabely k internetu. Huawei ukázal inovace

17. dubna 2024

Huawei na každoroční roadshow ukázal v Praze své inovace pro letošní rok. Vedle průmyslových...

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

K mobilu teď dostanete televizi zdarma a levnější jsou také iPhony

16. dubna 2024,  aktualizováno  10:12

Výrobci mobilních telefonů se už zase začínají předhánět ve výhodných nabídkách. Přímé slevy jsou...

Čínský smartphonový standard dorazil do Česka. Není co vytknout, ani cenu

17. dubna 2024  7:02

Motorola představila hned tři modely z top řady Edge. První se začne prodávat model Edge 50 Pro,...

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

Pošlete sportovní fotku a vyhrajte smartphone nebo dres Patrika Schicka

8. dubna 2024,  aktualizováno  18.4 13:04

Zachyťte na fotografii sportovní moment a vyhrajte úplnou novinku, smartphone vivo V40 SE s bohatou...

Mají dost kompromisů, sem tam něco navíc. Nejlevnější mobily známých značek

19. dubna 2024

Výrobci telefonů mají zpravidla řešení i pro ty zákazníky, kteří potřebují co možná nejlevnější...

Pošlete sportovní fotku a vyhrajte smartphone nebo dres Patrika Schicka

8. dubna 2024,  aktualizováno  18.4 13:04

Zachyťte na fotografii sportovní moment a vyhrajte úplnou novinku, smartphone vivo V40 SE s bohatou...

Tento podnik budou milovníci vína zbožňovat. Musí se ovšem vzdát mobilu

18. dubna 2024  12:33

Se zajímavým způsobem, jak strávníky přimět ke vzájemné komunikaci, přišel majitel restaurace v...

Ultra smartphone i odlehčená novinka. Motorola zahustila nabídku

18. dubna 2024

Společně s modelem Pro se na český trh chystají ještě další dvě novinky od Motoroly. Jednou je...

Pylová sezóna: Jak poznat alergii u svých dětí?
Pylová sezóna: Jak poznat alergii u svých dětí?

Alergie je nepřiměřená reakce imunitního systému na běžné, obecně neškodné látky v okolním prostředí. Taková látka, která vyvolává alergickou...

Náhle zemřel zpěvák Maxim Turbulenc Daniel Vali, bylo mu 53 let

Ve věku 53 let zemřel zpěvák skupiny Maxim Turbulenc Daniel Vali. Letos by se svou kapelou oslavil 30 let na scéně....

Sexy Sandra Nováková pózovala pro Playboy. Focení schválil manžel

Herečka Sandra Nováková už několikrát při natáčení dokázala, že s odhalováním nemá problém. V minulosti přitom tvrdila,...

Charlotte spí na Hlaváku mezi feťáky, dluží spoustě lidí, říká matka Štikové

Charlotte Štiková (27) před rokem oznámila, že zhubla šedesát kilo. Na aktuálních fotkách, které sdílela na Instagramu...

Vykrojené trikoty budí emoce. Olympijská kolekce Nike je prý sexistická

Velkou kritiku vyvolala kolekce, kterou pro olympijský tým amerických atletek navrhla značka Nike. Pozornost vzbudily...

Rohlík pro dítě, nákup do kočárku. Co v obchodě projde a kdy už hrozí právník?

V obchodech platí pravidla, která občas zákazník nedodržuje. Někdy se navoní parfémem, aniž by použil tester, nebo...