Klávesové zkratky na tomto webu - základní
Přeskočit hlavičku portálu

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

aktualizováno 
Dnes otevíráme pátou kapitolu - povíme si v ní jednak o seznamech, které jsou velmi silným nástrojem pro uživatelský vstup, a jednak se naučíme ovládat černobílý grafický výstup na displej Palm Pilotu. Ke kreslení se pak vrátíme ještě v sedmé kapitole, kdy si povíme o pokročilých prvcích grafiky a barvách. Zatím budeme postupně vytvářet jednoduchý černobílý kreslicí program.

Programování pro Palm Piloty krok za krokem - kapitola 5

V této kapitole se naučíme dvě důležité věci, které spolu na první pohled zdánlivě nesouvisejí. Nejprve se naučíme používat seznamy a tlačítka výběru ze seznamu. Důležitější však bude, že součástí kapitoly bude úvod do principu kreslení na displeji počítačů Palm Pilot a kompatibilních - čáry, rámečky, text a obrázky. První pohled často bývá zatížen chybou - uvidíte, jak se vám znalosti z obou nesouvisejících částí této kapitoly propojí.

5.1. Styly psaní programů; ochranné a agresivní programování

Podobně jako u jakékoli tvůrčí činnosti, i při psaní programů můžeme používat odlišné styly. Neexistuje správný způsob, jak daný program nebo určitou funkci vytvořit: nejvíc záleží stejně na fantazii programátora.

Nebudeme si tu uvádět konvence pro zápis zdrojového textu, jména proměnných ani pozice otevíracích závorek. Soustředíme se na funkce programu, který píšete. Prohlédněte si funkci v následujícím rámečku, kterou jsme vybrali z předchozí kapitoly a trochu ji zjednodušili:

void KopirujTextPolicka(UInt16 idPolicka, Char* kam)
{
    MemHandle ovladacTextu = FldGetTextHandle((FieldPtr)Objekt(idPolicka));
    Char* textPolicka = (Char*)MemHandleLock(ovladacTextu);
    StrCopy(kam, textPolicka);
    MemHandleUnlock(ovladacTextu);
}

Příklad v předchozím rámečku je příkladem agresivně napsané funkce. Tato funkce vychází z celé řady předpokladů - například pokud programátor omylem uvede nesprávnou identifikaci políčka, dojde ke kritické chybě operačního systému PalmOS (první řádek funkce). K jiné, neméně kritické chybě (druhý řádek) dojde, i pokud nebyl v políčku při volání této funkce žádný text. I třetí řádek může být zdrojem fatální chyby: stačí, aby byl text v políčku delší, než je rozměr proměnné kam. Zkusíme teď funkci upravit tak, aby počítala s co nejvíce situacemi, ke kterým může dojít.

Jaké komplikace si můžeme vymyslet?

  • kterýkoliv parametr může být programátorem zadán nesprávně
  • řetězcové proměnné nemusí mít postačující délku k uložení kopírovaného textu
  • při volání systémové funkce PalmOS může dojít k chybě
  • kterákoliv funkce našeho programu může obsahovat chybu, kterou jsme ještě neobjevili
  • globální proměnné nemusí nutně být správně inicializovány
  • program může být spuštěn na modelu, který nepodporuje hardwarové funkce, které využíváme
  • musíme informovat uživatele i programátora o chybách

Teď přepíšeme uvedenou funkci tak, aby byla psána v obranném stylu - tj. aby počítala s co nejvíce možnostmi, které mohou nastat (možná bychom mohli zavést termín paranoidní styl - to se mi však moc nelíbí). Zdrojový text se nám trochu prodlouží:

// Přidáme nový parametr - pocet - který udává maximální počet 
// zkopírovaných znaků

void KopirujTextPolicka(UInt16 idPolicka, Char* kam, UInt16 pocet)
{
    FieldPtr policko;
    MemHandle ovladacTextu;
    Char* textPolicka;
    Char prazdnyRetezec[2] = '\0\0';

    policko = (FieldPtr)Objekt(idPolicka);

    if(!policko)
    {
        // chyba programátora: objekt číslo idPolicka třeba neexistuje
        // zde je třeba na chybu upozornit programátora

        return;
    }

    ovladacTextu = FldGetTextHandle(policko);

    if(!ovladacTextu)
    {
        // políčko ještě nebylo inicializováno - vrátíme prázdný řetězec

        textPolicka = prazdnyRetezec;
    }
    else
    {
        textPolicka = (Char*)MemHandleLock(ovladacTextu);
    }

    // parametr kam může být zadán špatně
	
    if(kam)
    {
        StrNCopy(kam, textPolicka, pocet);
    }

    if(ovladacTextu)
    {
        MemHandleUnlock(ovladacTextu);
    }
}

Už z předchozího příkladu vidíme, že obranný styl programování vede k psaní funkcí, které obsahují více řádků a jsou vykonávány o něco pomaleji. Oba dva popisované přístupy mají své výhody i nevýhody, které přehledně shrneme v následující tabulce:

Agresivní styl Obranný styl
  • Funkce jsou jednodušší, kód programu je kratší
  • Rychlejší vývoj programu
  • Více srozumitelný, "elegantnější" kód
  • Rychlejší aplikace
  • Menší výsledný *.prc soubor
  • Bezpečnější
  • Menší pravděpodobnost havárie systému
  • Tolerantní k chybám programátora i uživatele
  • Rychlejší ladění aplikace
  • Není-li důkladně testován, může vést k neočekávanému chování programu, až ke kritické chybě PalmOS
  • Netoleruje chyby programátora
  • Pomalejší ladění aplikace
  • Často ztrpčuje život uživateli
  • Funkce jsou delší, méně přehledné
  • Pomalejší vykonávání programu
  • Soubor *.prc je větší
  • Více zdrojového textu vede k často delší době vývoje

Není jednoznačně dané, který z uvedených stylů je lepší. Hlavní výhodou obranného stylu je větší bezpečnost programů; agresivní styl vede k nutnosti lépe si uvědomit strukturu programu a výsledná aplikace je rychlejší. V naší knize se budeme vždy držet kompromisu mezi oběma styly. Pro vlastní programy vám doporučuji začínat se stylem obranným a teprve postupně, jak budete získávat zkušenosti s operačním systémem PalmOS, jej případně opouštět.


Po tomto krátkém úvodu si povíme, co jsou to výzvy, jak je definujeme a využíváme v našich programech.



Nejčtenější

Nové iPhony XS budou stát až 43 500 korun. Do Česka dorazí 29. září

Matura Jan: Online #7043

Apple na akci Apple Keynote 2018 představil tři nové iPhony. Nástupce modelu X se jmenuje XS, zvětšená varianta pak XS...

To si ještě nikdo nedovolil, nejlepší iPhone je za neuvěřitelnou sumu

iPhone XS/XS Max

S nadsázkou, na nejlepší provedení nových iPhonů X bude potřeba hypotéka. Apple nový top model XS Max s 512 GB paměti ...



Apple má tři nové iPhony. Podporují dvě SIM, ale v Česku to nefunguje

iPhone XS/XS Max

Apple letos představil tři nové iPhony, které navazují na loňský model X. Úplně nových smartphonů od Applu se ovšem...

Takto vypadá boj o zákazníky: pětkrát více dat a úhrada smluvní pokuty

Slovenský operátor O2 navýšil základní data u vybraných tarifů

Od revoluce v roce 2013 zažívá český mobilní trh spíše menší otřesy, zákazníci operátorů toužící po neomezeném tarifu s...

T-Mobile přidává k tarifům data navíc. Na prodejně ovšem nepochodíte

T- Mobile.

Není pochyb, že se boj o zákazníky z hlasových služeb přesunul do oblasti mobilních dat. Potvrzuje to i aktuální akční...

Další z rubriky

Sem chodí smartphony umřít. Aplikaci lze použít jen s vybitou baterií

Die With Me

Aplikace s názvem Umři se mnou má velmi neobvyklé omezení. Nemůžete ji zapnout, pokud máte telefon nabitý víc než na...

Záchranku volejte přes aplikaci. Pomoc je rychlejší než při volání na 155

Simulovaná dopravní nehoda jako praktická ukázka fungování mobilní aplikace...

„Záchranná služba, tísňová linka, dobrý den,“ ohlašuje se operátorka volajícímu, který se stal svědkem dopravní nehody....

Bez reklamy ani ránu. Bude už i na Facebook Messengeru v mobilu

Mobilní Messenger projde změnou, k nelibosti uživatelů v něm budou cílené...

Oblíbený mobilní kecálek se brzy promění. Facebook totiž do Messengeru po úspěšném testování implementuje cílené...

Najdete na iDNES.cz