Vývojové diagramy – 17. díl – datové typy
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vývojové diagramy – 17. díl – datové typyVývojové diagramy – 17. díl – datové typy

 
Hledat
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Pergoly a střechy Brno

Vývojové diagramy – 17. díl – datové typy

Google       Google       19. 10. 2011       13 426×

V dnešním dílu se opět vrátíme k vývojovým diagramům s tím, že začneme uvádět datové typy proměnných. Nejprve si ovšem uvedeme několik příkladů, kde si ukážeme, proč zvolit daný typ a co nám to přinese. A díl zakončíme dvěma vývojovými diagramy a ukázkou podprogramu.

Reklama
Reklama

Řekněme, že máme v programu proměnnou na uložení aktuálního roku. Jaký datový typ je pro ní nejvhodnější? Aktuální rok při psaní tohoto dílu je 2011, příští rok bude 2012 atd. Jedná se tedy o celé číslo, které není a nebude záporné. Nyní ještě určíme, která z nabízených variant se nám hodí rozsahově. Datový typ byte je malý, neboť i letošní rok je větší než jeho maximum (255). Dále se tedy nabízí word. Jeho maximum již bude dostatečné, protože než nastane rok 65535, tak náš program, i kdyby byl sebegeniálnější, bude dávno semletý kolem dějin. Nejvhodnější datový typ pro uložení aktuálního roku je tedy word.

V jiném programu bude zpracovávat pokojovou teplotu. Taková teplota může být např. 21.4. Jedná se tedy o racionální číslo, takže použijeme jeden z typů pro jejich uložení. Nepotřebujeme žádnou velkou přesnost i rozsah není nikterak velký, a proto nám bude stačit datový typ single.

V jednom z dílů jsme načítali známky a počítali jejich průměr. Jaký datový typ použijeme na uložení načtené známky, celkového součtu a počtu známek a výsledného průměru? U známky je to jednoduché. Ta může být v rozsahu 1 až 5, takže se pohodlně vejdeme do datového typu byte. Počet známek není zadáním nijak omezen, takže budeme předpokládat, že jich může být opravdu hodně (v tomto případě, kdy počítáme průměrnou známku za celou republiku). Tady nevystačíme s typem byte a ani s typem word, ale pro jistotu použijeme dword. A stejný typ použijeme i pro součet (ten může být teoreticky 5x větší než počet). Výsledný průměr je desetinné číslo, takže použijeme opět single.

Možná si říkáte, když jsme si v tomto příkladě dali pro jistotu rezervu a zvolili rozsahově větší typ, tak jestli by nebylo nakonec lepší všude volil datové typy long long integer nebo extend. Odpověď zní nebylo, ale některé vysokoúrovňové jazyky se vydaly touto cestou.

Vezměme si například výše uvedené školní známky. Řekněme, že všechny známky před zpracováním uložíme. Máme známky z celé republiky, kde je (počty jsou uvedeny pouze jako příklad) 5000 škol, na každé studuje v průměru 500 studentů, každý z nich má 8 předmětů a z každého dostane v průměru 10 známek za školní rok. Celkem budeme ukládat 5000x500x8x10 známek nebo-li 200 miliónů známek. Pokud bychom místo datového typu byte, který jsme určili jako nejvhodnější, použili "univerzální" long long integer, tak bychom na každé známce "prodělali" 7 bajtů. Celkem na všech známkách by to tedy dělalo 1.4 miliardy bajtů, a to téměř odpovídá 1.4GB, což rozhodně není nezanedbatelné množství.

Samozřejmě je ten příklad hodně vyumělkovaný, ale je na něm vidět jedna z oblastí, kde se vyplatí přemýšlet nad použitým typem - zpracování většího množství dat. Druhou oblast, kterou zvolený datový typ ovlivňuje, je rychlost zpracování. Čím "univerzálnější" typ, tak tím větší časové nároky na zpracování. Stejně jako v případě množství dat i zde platí, že pro jednoduché příklady to není kritická věc. Na druhou stranu, pokud by jste se chtěli udělat např. program na stříhání videa, tak by jste naháněli každou mikrosekundu, protože ve výsledku to může na dlouhém videu ušetřit i hodiny. A vhodně zvolený datový typ je pak základ.

Nic se ovšem nesmí přehánět a někdy nám mohou datové typy pěkně zatopit. Řekněme, že máme cyklus od 1 do 250 na zpracování nějakých dat. Vhodný datový typ je byte (rozsah se do něj vejde). Po čase se k programu vrátíme, protože potřebujeme přidat zpracování další dat - rozsah se změní na 1 až 300. A chyba je na světe. Co že se to stane? Index cyklu bude v proměnné (např. A), která se bude měnit od 1. Chybou je to, že nikdy nedosáhne hodnoty 300, která by cyklus zastavila, protože byte má rozsah jen do 255. Ve chvíli kdy by měla být další hodnota 256 se hodnota změní na 0 (pro byte platí, že 255 + 1 = 0, 255 + 2 = 1, 1 - 2 = 255 atd.). Dostaneme nechtěně nekonečný cyklus.

Stejně to platí pro vícebajtové, ale i znaménkové typy. Například pro word platí podobně, že 65535 + 1 = 0, 1 - 2 = 65535 atd. Pro znaménkové typy je přechod velmi podobný, tj. například pro short platí, že 127 + 1 = -128, 1 - 2 = -1, -128 - 1 = 127 apod. Někdy se této vlastnosti s výhodou i využije.

Dost bylo teoretizování, nyní si ukážeme jednoduché příklady, ve kterých definuje datové typu u všech použitých proměnných. Nebudeme vymýšlet nic nového, ale vezmeme některé příklady z minula.

Sčítání 2 čísel

Jako první vezmeme tento jednoduchý příklad, protože si chceme ukázat definici datových typů, tak není potřeba na začátek nic složitého. Abychom mohli definovat jaký datový typ by byl nejvhodnější pro tento příklad, tak si musíme trochu zpřesnit zadání. Pokud by byl příklad zadán obecně, tj. sčítání 2 čísel, tak bychom museli použít racionální datové typy (desetinná čísla). My si proto zpřesníme zadání, a to tak, že budeme tvořit algoritmus pro sčítání 2 celých čísel (tj. i záporných). Budeme proto volit z celočíselných znaménkových datových typů. Typy short integer a integer mají malé rozsahy (rozhodně budeme chtít, abychom uměli sečíst čísla větší než 32767). Typ long integer by již mohl vyhovět, protože má dostatečný rozsah na většinu běžných výpočtů.

Definice datových typů u vývojového diagramu se provádí zápisem mimo vývojový diagram. My si ho budeme zapisovat do barevně odlišeného obdélníčku. K vývojovému diagramu pro sčítání 2 celých čísel si můžeme připsat, že všechny použité proměnné (A, B, C) budou datového typu long integer.

Výpočet průměru známek

Tento algoritmus jsme vytvořili v 12. díle. Nyní k němu opět pouze přidáme definici datových typů jednotlivých použitých proměnných. Cyklus od 1 do 20 se úplně bezpečně vejde do nejmenšího typu byte (s rozsahem 0 - 255). Stejně tak zadávaná známka musí být v rozsahu 1 - 5, takže se také vejde do datového typu byte. Součet známek a počet známek, protože nevíme kolik jich bude, musíme dimenzovat na větší rozsah. Typ word (rozsah 0 - 65535) by mě stačit, protože by to znamenalo (minimálně) něco málo přes 13 tisíc známek (samé 5) na jednoho žáka. To je hodnota, které se nejspíše nedosáhne ani u dlouholetých studentů za celou dobu jejich studia, takže tento typ použijeme. Poslední je průměr. Průměr může být např. 1.2, takže se jedná o desetinné číslo, nebo-li musíme použít nějaký racionální datový typ (např. single, protože nám jeho přesnost pro výpočet průměru známek postačuje).

Podprogramy

A jak je to u podprogramů? U podprogramů je to stejné jako u hlavního programu. Každý podprogram doplní definice datových typů, které jsou v něm použité. Ukážeme si to na podprogramu pro výpočet faktoriálu. Výsledný vypočtený faktoriál je kladné celé číslo. Použijeme proto neznaménkový celočíselný datový typ s největším rozsahem, tj. qword. A nyní určíme nejvhodnější datový typ pro předávaný parametr do podprogramu (T) a potažmo pro index cyklu. Pro jak velké číslo nám qword umožní výpočet faktoriálu? Maximálně pro číslo 20 (21! = 51090942171709440000, což už je skoro 3 větší než maximální číslo dané typem qword). Takže proměnné T a B mohou být byte. Vše opět zapíšeme vedle vývojového diagramu.

Určit správný je typ je jen otázkou cviku, takže příště postoupíme dál a začneme pole.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
2 hlasy
Google
Autor se věnuje programování za peníze :)

Nové články

Obrázek ke článku Konference: Moderní informační systémy podporují automatizaci

Konference: Moderní informační systémy podporují automatizaci

Současná situace v šíření onemocnění Covid-19 klade na řadu firem nové nároky a mnohé z nich jsou nyní více než kdy jindy závislé na nejmodernějších informačních technologiích. Proto i v oblasti podnikových informačních systémů vidíme rostoucí důraz na automatizaci nebo na důslednou integraci. Také o těchto trendech se bude mluvit na konferenci Firemní informační systémy, která se koná 24.9.2020 v pražském Kongresovém centru Vavruška na Karlově náměstí.

Reklama
Reklama
Obrázek ke článku Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

Za cenu šesti dolarů lze celkem bez obtíží koupit nový, líbivě vyhlížející flash disk. Přidaná hodnota, které se vám spolu s ním dostane, už tak moc líbivá není. To, co se před pár sekundami tvářilo jako externí disk, se po připojení k počítači změní v důmyslné elektrické křeslo, které vaše zařízení v onen příslovečný škvarek promění za pár sekund. Cílovou skupinou pro koupi takových zařízení by mohli být záškodníci, kteří by tímto způsobem osnovali pomstu třeba vůči záletnému partnerovi. 

Obrázek ke článku Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

Snad nikdy není špatná příležitost na investici do hodnotného vzdělání. Obzvlášť v případě, že absolvent dovede teoretické poznatky přetavit v praktické dovednosti, využitelné při řešení problémů i v komunikaci. Právě na to se specializuje studijní program MBA Řízení informačních technologií, vyučovaný na Business Institutu.

Obrázek ke článku Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

Pandemie Covid-19 otřásla trhem práce v základech. Dopady krize pocítilo celkově až 45 % zaměstnanců. Není divu, že čím dál větší jistotu přináší obor IT. Ten zůstal krizí téměř nepoznamenán a při nutnosti začít dělat věci na dálku se ještě více ukázalo, jak moc mnohé firmy kvalitní IT potřebují. Do IT nyní přicházejí začátečníci, kteří v něm vidí lukrativní budoucnost a jistotu, ale i freelanceři a zaměstnanci z oborů zasažených krizí

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý