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...}

Operátoři zahušťují pokrytí Česka signálem 5G. Máte ho doma? Podívejte se

20. dubna 2024

Premium V červenci to budou již čtyři roky, co byla v Česku spuštěna první komerční 5G síť. Zatímco v...

Operátoři zahušťují pokrytí Česka signálem 5G. Máte ho doma? Podívejte se

20. dubna 2024

Premium V červenci to budou již čtyři roky, co byla v Česku spuštěna první komerční 5G síť. Zatímco v...

Nudný telefon bojuje proti závislosti na smartphonech pitím piva

20. dubna 2024

The Boring Phone, tedy Nudný telefon, má uživatele oprostit od všech online služeb a přimět k přímé...

Mobily začínají vadit. Obec u Paříže je zakázala, v Nizozemsku nesmějí do škol

19. dubna 2024

Premium Ačkoliv žijeme v době, kdy mnoho lidí téměř nedá mobil z ruky, někde už úřadům a dalším institucím...

I velké značky mají laciné smartphony. Ale počítejte s kompromisy

19. dubna 2024

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

Kdy dát dětem první kapesné a kolik?
Kdy dát dětem první kapesné a kolik?

Kdy je vhodný čas dávat dětem kapesné a v jaké výši? To jsou otázky, které řeší snad každý rodič. Univerzální odpověď však neexistuje. Je ale...

Manželé Babišovi se rozcházejí, přejí si zachovat rodinnou harmonii

Podnikatel, předseda ANO a bývalý premiér Andrej Babiš (69) s manželkou Monikou (49) v pátek oznámili, že se...

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...

Ve StarDance zatančí Vondráčková, Paulová, hvězda Kukaček i mistryně světa

Tuzemská verze celosvětově mimořádně úspěšné soutěže StarDance britské veřejnoprávní televizní společnosti BBC se už na...