D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
-1-
Evropský polytechnický institut, s.r.o. 1. soukromá vysoká škola na Moravě Kunovice
Teoretické základy informatiky pro ekonomy (pracovní materiál)
Oldřich Kratochvíl Jindřich Petrucha Robert Jurča Dan Slováček
2012
Naposledy vytištěno 5.3.2013 8:55:00
1
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
-2-
Obsah OBSAH .................................................................................................................................................................. 2 ÚVOD..................................................................................................................................................................... 5 1
ÚVOD DO PROBLEMATIKY .................................................................................................................. 7 1.1 1.2 1.3 1.3.1 1.3.2 1.3.3 1.4 1.5 1.6
2
JAK PRACUJE MOZEK ČLOVĚKA............................................................................................................. 7 HISTORIE STROJŮ NA ZPRACOVÁNÍ DAT ................................................................................................ 9 ARCHITEKTURA POČÍTAČŮ ................................................................................................................. 15 Harwardská koncepce ................................................................................................................... 15 Von Neumannovo schéma počítače............................................................................................... 15 Sběrnicová struktura – současné pojetí PC................................................................................... 16 UMĚLÁ INTELIGENCE .......................................................................................................................... 17 SHRNUTÍ ............................................................................................................................................. 18 OTÁZKY ............................................................................................................................................. 19
ALGORITMIZACE EKONOMICKÝCH ÚLOH ................................................................................. 21 2.1 ALGORITMUS A VÝVOJOVÝ DIAGRAM ................................................................................................ 21 Algoritmus, který má řešit nějakou úlohu je třeba ověřit (verifikovat jeho správnou funkci). .................... 21 2.2 VYBRANÉ ÚLOHY NA PROCVIČENÍ ZÁKLADŮ ALGORITMŮ .................................................................. 23 2.3 UKÁZKA VYUŽITÍ TECHNOLOGIÍ ALGORITMŮ V PRÁCI MANAŽERA A ÚČETNÍHO ................................. 26 2.4 CYKLUS ........................................................................................................................................... 34 2.4.1 Cyklus s podmínkou na začátku cyklu ........................................................................................... 34 2.4.2 Cyklus s podmínkou na konci cyklu............................................................................................... 36 2.4.3 Cyklus s předem známým počtem opakování ................................................................................ 37 2.5 HARDWARE A SOFTWAROVÉ VYBAVENÍ PC........................................................................................ 38 2.6 OCHRANNÝ SYSTÉM PROTI VIRŮM ...................................................................................................... 41 2.7 SHRNUTÍ ............................................................................................................................................. 41 2.8 OTÁZKY .............................................................................................................................................. 42
3
PŘEPIS VÝVOJOVÉHO DIAGRAMU DO PROGRAMOVACÍHO JAZYKA „C“ ........................ 43 3.1 STRUKTURA PROGRAMU V JAZYCE „C“ .............................................................................................. 43 3.2 JAK NAPSAT PROGRAM V PROSTŘEDÍ DEV-C++.................................................................................. 44 3.3 ÚVOD DO SYNTAXE JAZYKA „C“ ........................................................................................................ 47 3.4 VĚTVENÍ PROGRAMU .......................................................................................................................... 64 3.4.1 if (výraz) příkaz; je příkaz pro větvení programu (tzv. podmíněný příkaz). .................................. 64 3.4.2 if (výraz) příkaz 1 else příkaz 2;.................................................................................................... 64 3.4.3 Blok příkazů .................................................................................................................................. 65 3.4.4 Aritmetické operátory.................................................................................................................... 65 3.4.5 Relační operátory, které můžeme v jazyce „C“ použít: ................................................................ 67 3.4.6 Relační operátory mají nižší prioritu než aritmetické operátory. ................................................. 67 3.4.7 Aplikace algoritmů větvení............................................................................................................ 67 3.4.8 Verifikace vývojového diagramu ................................................................................................... 76 3.4.9 Přehled struktury programu s využitím podprogramů:................................................................. 79 3.4.10 Pole........................................................................................................................................... 81 3.4.11 Cyklus ....................................................................................................................................... 82 3.4.12 Aplikace programu C do práce ekonoma ............................................................................... 100 3.5 SHRNUTÍ .......................................................................................................................................... 105 3.6 SLOVNÍ ZÁSOBA V JAZYCE ANGLICKÉM:........................................................................................... 108 3.7 OTÁZKY ............................................................................................................................................ 111
4
KÓDOVÁNÍ INFORMACE V POČÍTAČI .......................................................................................... 115 4.1 4.2 4.3 4.4 4.5
5
PRINCIPY ASCII KÓDU ..................................................................................................................... 115 ASCII TABULKA A JEJÍ POUŽITÍ......................................................................................................... 116 ČESKÝ JAZYK A JEHO KÓDOVÁNÍ NA POČÍTAČI ................................................................................. 120 PRINCIPY ŠIFROVÁNÍ DAT NA POČÍTAČI............................................................................................. 124 PRINCIPY ZABEZPEČENÍ PŘENOSU DAT NA INTERNETU...................................................................... 126
INTERNET A PRÁCE S INFORMACEMI ......................................................................................... 129 5.1 5.2 5.3 5.4
CÍLOVÉ ZNALOSTI A DOVEDNOSTI..................................................................................................... 129 KLÍČOVÁ SLOVA ............................................................................................................................... 129 VYMEZENÍ ZÁKLADNÍCH POJMŮ ....................................................................................................... 129 ZÍSKÁVÁNÍ INFORMACÍ V PROSTŘEDÍ INTERNETU, INTERNETOVÉ VYHLEDÁVAČE ............................ 131
Naposledy vytištěno 5.3.2013 8:55:00 2
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
5.4.1 5.5 5.5.1 5.6 5.7 5.8
-3-
INTERNETOVÉ VYHLEDÁVAČE .......................................................................................................... 131 DIGITÁLNÍ SPOLEČNOST, ORGANIZACE VĚDOMOSTÍ A JEJICH ZÍSKÁVÁNÍ .......................................... 136 ZÍSKÁVÁNÍ INFORMACÍ ..................................................................................................................... 138 KONTROLNÍ OTÁZKY ........................................................................................................................ 140 NÁMĚTY K ZAMYŠLENÍ ..................................................................................................................... 140 LITERATURA ..................................................................................................................................... 140
LITERATURA .................................................................................................................................................. 142
Naposledy vytištěno 5.3.2013 8:55:00
3
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
Naposledy vytištěno 5.3.2013 8:55:00 4
-4-
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
-5-
Úvod Úkolem tohoto studijního textu je vybudovat u posluchačů teoretické základy informatiky ve specializaci pro správce informačních systémů, podnikové ekonomiky a manažery. Předmět vytváří základ pro studium dalších předmětů. Jeho obsahem je teoretický základ k problematice realizace informačních systémů. Vymezuje pojem algoritmus a způsob popisu algoritmů. Studenti jsou seznámeni s datovými strukturami a metodou návrhu algoritmů. Jsou jim vysvětleny základní pojmy z teorie množin a s metodami využití teorie grafů při řešení problémů. Dále se studenti seznámí s algoritmizací na bázi strukturovaného jazyka nebo jiného objektového jazyka, s jednotlivými základními a strukturovanými typy jejich implementací a využití při vědeckotechnických výpočtech. Jsou jim vysvětleny úlohy hromadného zpracování dat a práce se soubory na bázi tohoto jazyka. Pochopí význam a použití rekurzivních algoritmů. Praktické využití dovedností vyústí v aplikaci programu na bázi objektového jazyka pro zpracování dat na disku v oblasti jednoduché databáze nebo zpracování výpočtů měření s jejich grafickým znázorněním. Jako informační zdroje budou sloužit ukázkové programy na disku a sbírky úloh z programování se zdrojovými texty v objektovém jazyce. Předmět bude sloužit jako základ pro další nadstavbu v oblasti složitějších algoritmů, které mohou být implementovány v odlišném jazyce. Součástí práce studenta je vypracování semestrálního projektu ve spolupráci se specialistou z oboru. Studijní text je profesně orientovaný a člení se do 7 kapitol:
Naposledy vytištěno 5.3.2013 8:55:00
5
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
Naposledy vytištěno 5.3.2013 8:55:00 6
-6-
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
1
-7-
Úvod do problematiky
Co bude posluchač po prostudování kapitoly znát: 1. 2. 3. 4. 5.
Vývoj technologií pro automatizaci výpočtů. Způsob práce mozku a paměti při zpracování informací. Definovat počítač, příkaz a program Popsat hardwarské a von Neumannovo schéma počítače a jejich rozdíl v pojetí. Popsat sběrnicové pojetí PC.
1.1
Jak pracuje mozek člověka
Mozek člověka se skládá ze dvou částí – tzv. levé a pravé hemisféry. Každá z nich má svoji specifickou funkci: Výzkumy ukazují, že levá hemisféra ovládá pravou polovinu těla, je sídlem logiky, řeči a vůle jedince. Zabezpečuje naše schopnosti práce s daty, fakty, schopnost posuzovat váhy a míry, provádět matematické operace. Je sídlem analytického myšlení, přístupů k systematickému myšlení, sídlem citu pro řád. Hlavní funkcí levé hemisféry je lineární zpracování informací, logika, postupný analytický proces a nepřetržité spojení s našimi minulými zkušenostmi uloženými v paměti. Je určená pro vnímání a plánování času. Levá hemisféra se specializuje na vědu, matematiku a zpracování řeči. [1] Obr. č. 1: Struktura mozku Zdroj: [1]
Pravá hemisféra ovládá levou polovinu těla, zapojuje fantazii a tvořivost, vnímání obrázků, schémat, barev, grafických prvků, emocí (pocity úzkosti, radosti, vegetativní nervový systém), chutí, vůní, hudby a rytmu. Pravá hemisféra se pak, jak uvádí, podílí převážně na zpracování vizuálních a prostorových informací, vytváří analogie. Chce dospět k syntéze a mít přehled. Umělecké, hudební a tvořivé schopnosti jsou na pravé hemisféře silně závislé. Pravá hemisféra je sídlem intuice, spontánnosti, hravosti, nadšení, představivosti a podvědomí. Pravá hemisféra se specializuje na vnímání melodie, tónů, barvy zvuku a harmonie, zatímco levé hemisféře náleží vnímání rytmu, vysvětluje dále. Pravá hemisféra dokáže pojmout všechny informace najednou, levá hemisféra informace analyzuje postupně, po malých částech. Právě proto má pravá hemisféra přístup k neviditelnému moři informací, je s touto inteligentní energií v kontaktu převážně podvědomě. Vědomě se s ní můžeme spojit pouze tehdy, když jsou obě hemisféry harmonicky synchronizované. [3] Lidé se liší právě tím, jak jsou schopní využívat obě poloviny mozku. Je třeba naučit se využívat obou částí mozku.
Naposledy vytištěno 5.3.2013 8:55:00
7
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
-8-
Člověk, který zatěžuje levou hemisféru, myslí ve slovech, analyzuje věci, dostává se od velkých celků k detailům. Ale vždy musí postupovat krok za krokem, musí se tedy na svou činnost hodně soustředit, stojí ho to hodně síly. Vypracovává pravidla a má zájem je dodržovat. Je tedy zaměřen konzervativně. Znejistí, když něco neodpovídá jeho představě na základě dřívějších zkušeností. Někdy může bezohledně prosazovat své myšlenky a přiklání se k autoritářskému způsobu vedení. Pracuje přesně, soustředěně, detailně, ale může se takto stát „malým dříčem“. Nemá rád pokusy, u nichž není zaručený předem očekávaný výsledek, nenávidí rizika a nejistotu, tím ale může blokovat kreativitu ostatních a využití všech schopností jeho spolupracovníků. Stále hledá odpovědi, ne vždy však hledá důležité otázky. Vůbec nemá rád otázky, které nemůže zodpovědět. Jeho potřeba jistoty vyvolává také přehnaný pocit sebehodnocení a neustálé kontroly, což vyvolává nervózní napětí v okolí, v komunikaci a vede ke stresu. Naopak člověk, který využívá více pravou hemisféru, myslí v obrazech. Má rád přehled, pravidla, zákonitosti ho nezajímají. Může tedy neustále inovovat a tvořit nová pravidla. V týmu je otevřený pro příjem nových informací a je vždy připravený své stanovisko znovu zvážit. Dovede pochopit osobité vlastnosti různých lidí a k tomu je třeba mít pozorovací nadání a schopnost empatie. Jedná spontánně, intuitivně, rád experimentuje. [4] Všichni bychom měli vědět, jak náš mozek pracuje s daty, která snímají jeho „čidla“ – oči, uši, sluch, hmat atd. Je zcela jisté, že mozek musí mít možnost odfiltrovat informace, které mají podprahový význam pro naše chování v daný okamžik a naopak musí uchovat a následně vystavit podle potřeby ty informace, které pro nás v následujícím čase mají smysl. Tyto funkce zabezpečují tři typy paměti: 1. senzorická, 2. krátkodobá a 3. dlouhodobá.
P
Senzorická (ultrakrátká) paměť je vědomá část paměti, která uchovává informace přicházející ze smyslů. Ty jsou podrženy po dobu nezbytně nutnou ke zpracování a rozhodnutí, zda jsou informace důležité, tedy vhodné k dalšímu zpracování či nikoliv. Pokud ano, postupují dále do krátkodobé či dlouhodobé paměti. Krátkodobá paměť, (nebo také paměť pracovní, operativní) je vědomá aktivní část paměti, ve které se odehrává většina psychických procesů (např. řešení aktuálních problémů). Zpracovávají se v ní informace dodané senzorickou pamětí a informace vyvolané z paměti dlouhodobé, která není dostupná vědomě. Krátkodobá paměť dokáže uchovat vjemy smyslových orgánů a emoce pomocí přeměny (kódování) v mentální reprezentace. Ty může paměť dále zpracovávat a uchovávat. Krátkodobá paměť je omezena na 5 - 9 prvků (tzv. magické číslo 7±2), které při zamezení opakování, uchová na 15 - 20 sekund. Kapacitu lze zvýšit spojováním prvků do logických celků. Pro zachování informace v krátkodobé paměti, je třeba si informaci opakovat, jinak je paměťová stopa nenávratně ztracena.
P
Dlouhodobá paměť je relativně pasivní část paměti uchovávaná v nevědomí. Její kapacita je hypoteticky neomezená. Ukládá významné zkušenosti, např. poznatky nutné k vykonávání nějaké činnosti či poznatky životně důležité. Vštěpování informace do dlouhodobé paměti trvá přibližně 30 minut, a může probíhat buďto záměrně (např. mechanickým opakováním - memorováním), nebo bezděčně. Lépe zapamatovatelné jsou smysluplné obsahy a logické celky což může vést ke zkreslování vzpomínek. Při začleňování nových informací se totiž proměňují i stávající znalosti. Lépe se také pamatují poznatky, které mají citový nádech a které jsou často vybavovány. Takové informace paměť považuje za důležité a tudíž i nutné k dlouhodobému uchování. Biologicky staví dlouhodobá paměť na strukturální nebo molekulární změně dendritů (části neuronu). Počítač je externí zařízení mozku. Chcete-li komunikovat s Angličanem, potřebujete mluvit anglicky. Chcete-li komunikovat s počítačem, potřebujete znát jeho jazyk. Moderní manažer, ekonom nebo účetní používá počítače ve své práci on-line.
Naposledy vytištěno 5.3.2013 8:55:00 8
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
-9-
Jak řeší mozek problém - sekvenčně krok po kroku, algoritmem. Např.: Vypočítej si odvody ze své hrubé mzdy 1
2
3
Z Načti hrubou mzdu
MC
Hrubá mzda
Vypočítej odvod Odvod
4
Vypiš hodnotu na papír 5
K
Obr. č. …: Příklad restrukturalizace problému
Mozek si problém restrukturizuje – rozloží do posloupnosti kroků tak, aby jej postupně vyřešil. Takovému postupu říkáme algoritmizace a lze jej popsat algoritmem. K řešení problému mozek potřebuje: Vstupní zařízení: oko, ucho, … Výstupní zařízení: hlasivky, ruka ke psaní, atd. Řadič – který řídí posloupnost kroků V našem případě …….podle výše uvedeného algoritmu v krocích 1
Zahájení programu
2
Načtení hrubé mzdy očima z papíru a uložení do paměti
3
Výpočet výše odvodů a hrubé mzdy a uložení do paměti
4
Vypsání hodnoty odvodů na papír
5
Ukončení práce
1
až
5
.
Mimo algoritmované úlohy řeší mozek i problémy, které nelze algoritmovat – lásku, cit, úctu, atd. I když je kapacita mozku veliká, nelze do ní vložit všechny poznatky lidstva. Proto mozek mimo „interní knihovny“ znalostí využívá i knihovny externí – vědecké knihovny, informace na internetu, informace z databází, atd. Podobně je na tom i počítač.
1.2
Historie strojů na zpracování dat
Cílem lidí bylo postavit stroj, který by měl vlastnosti lidského mozku. Mluvíme o počítači. První zařízení, která se později vyvinula v dnešní počítače, byla velmi jednoduchá a byla založena na mechanických principech.
Naposledy vytištěno 5.3.2013 8:55:00
9
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 10 -
Abakus vznikl přibližně před 5000 lety. Je prvním známým nástrojem, který usnadňoval počítání s čísly. Původně šlo jen o zaprášený kámen (starohebrejské slovo abaq znamená „prach“), který se používal v Babylonii již od poloviny třetího tisíciletí př. n. l. Nejstarším dochovaným exemplářem je salamiská tabulka, která pochází zhruba z roku 300 př. n. l., avšak historik Hérodotos popsal příklady pro tabulku tohoto typu již o více než století dříve. Ve starověkém Řecku a Římě se používala dřevěná nebo hliněná destička, do které se vkládaly kamínky („calculli“) – odtud název kalkulačka.
Obr. č. 2: Abakus Zdroj: [5]
První mechanický kalkulátor vznikl někdy mezi roky 150 až 100 před Kristem se objevil první stroj, označovaný jako mechanický počítač, pojmenovaný Mechanismus z Antikythéry (podle řeckého ostrova Antikythera, kde byl objeven vrak lodi). Podle dnešních poznatků sloužil k výpočtu polohy vesmírných těles. Mechanizmus se skládal se z více než třiceti ozubených koleček seřazených v rovnostranných trojúhelnících a na svou dobu byl skutečně miniaturní. Zajímavé je, že mechanizmus je nejspíš založen na heliocentrickém principu (tedy Země obíhá kolem Slunce), kterému se v Evropě začalo dařit až o osmnáct století později. Roku 1614 objevil John Napier novou matematickou metodu, umožňující násobení a dělení pomocí sčítání a odčítání s využitím logaritmů. Následně byly v Anglii sestaveny první logaritmické tabulky. Po nich následovalo logaritmické pravítko, kde byla reálná čísla reprezentována vzdáleností na ose. Logaritmické pravítko bylo prakticky beze změny používáno dalších 200 let, dokonce bylo používáno i k provádění výpočtů Obr. č. 3:Logaritmické pravítko Zdroj: [6] v rámci programu Apollo.
realizovat
Další známý mechanický kalkulátor sestavil roku 1623 Wilhelm Schickard. Byl sestaven z ozubených koleček z hodinových strojků (proto bývá nazýván „počítací hodiny“), uměl sčítat a odčítat šesticiferná čísla a měl být prakticky použit Johannem Keplerem při astronomických výpočtech. Známý francouzský matematik, fyzik a teolog Blaise Pascal vyrobil ve svých 19 letech v roce 1642 počítací stroj, který uměl sčítat a odčítat (Pascaline). Obr. č. 4: Mechanický kalkulátor z ozubených koleček Zdroj: [7]
Obr. č. 5: Mechanický kalkulátor Zdroj: [8]
Naposledy vytištěno 5.3.2013 8:55:00 10
V roce 1725 použil Basile Bouchon děrovaný papír pro řízení tkalcovského stavu. O rok později v roce 1726 vylepšil Jean-Baptiste Falcon funkci spojením jednotlivých papírových karet, čím zjednodušil úpravy a změny programu. V roce1801 použil francouzský vynálezce Joseph Marie Jacquard v tkalcovském stavu děrné štítky, které bylo možné vyměnit beze změny v mechanice samotného stavu. Tento okamžik je považován za milník v programovatelnosti strojů.
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 11 -
Roku 1820 si dal patentovat francouzs Thomas de Colman mechanický potíačová stroj – tzv. Arithmometr. Ten pracoval na principu Lebnizova ozubeného válce a sady ozubených kol. Posun kol byl realizován kličkou. Měl sečítat, odečíta, násobit a dělit.
Obr. č. 6: Thomasův Arithmometr Zdroj: [8]
Nápad použít děrné štítky k programování mechanického kalkulátoru uplatnil v roce 1835 Charles Babbage. Děrný štítek obsahoval znaky ve formě kombinace dírek a umožňoval obsah opakovaně použít.
Obr. č. 7: Řídící jednotka Ch. Babbage Zdroj: [8]
Obr. č. 8: Děrný štítek Zdroj: [10]
K uchovávání dat a jejich pozdějšímu dalšímu využití použil poprvé děrné štítky Herman Hollerith, který se svou metodou vyhrál v roce 1890 v USA konkurz na sčítání lidu (to předchozí totiž trvalo plných 7 let). Jeho firma se později stala základem slavné počítačové společnosti IBM a tento charakter zpracování dat se udržel dalších 100 let. Pro analýzu a další zpracování dat na děrných štítcích byly vyvíjeny specializované stroje – děrovače, tabelátory a třídiče. Technologie děrných štítků o něco později umožnila návrhy prvních programovatelných strojů. Programování spočívalo v tom, že programátor předal své děrné štítky ke zpracování do výpočetního střediska a čekal, jestli získá výsledky nebo výpis chybových hlášení. Pokud došlo k chybě, musel zpětně zapracovat opravu do svého programu, který mezi tím již dále vylepšil. Poté znovu odeslal štítky do výpočetního střediska a celý cyklus se opakoval. Za počítače nulté generace jsou považovány elektromechanické počítače využívající většinou relé. Pracovaly většinou na kmitočtu okolo 100 Hz. Hybnou silou vývoje nulté generace se stala druhá světová válka, kdy došlo paralelně k velkému pokroku v různých částech světa. První, komu se podařilo sestrojit fungující počítací stroj, byl německý inženýr Konrad Zuse. V roce 1934 začal pracovat na konstrukci mechanické výpočetní pomůcky a po řadě různých zdokonalení dokončil v roce 1936 základní návrh stroje pracujícího v dvojkové soustavě s aritmetikou v plovoucí čárce a programem na děrné pásce (jako nosič byl použit kinofilm). Neznalost prací Babbageho a jeho následovníků však měla za následek, že Zuse do svého projektu nezahrnul podmíněné skoky. Přes tento nedostatek však můžeme tvrdit, že roku 1938 spatřil světlo světa první počítač nazvaný Z1. Byl ještě elektromechanický s kolíčkovou pamětí na 16 čísel a byl velmi poruchový, pro praktické použití nevhodný.
Naposledy vytištěno 5.3.2013 8:55:00
11
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 12 -
Zuse proto přistoupil ke stavbě počítače Z2, který již obsahoval asi 200 relé. Paměť však byla stále ještě mechanická, převzatá ze Z1. Potom se Konrád Zuse spojil s Helmutem Schreyrem a společně se pustili do vývoje ještě výkonnějšího počítače Z3, který dokončil v roce 1941. Tento první prakticky použitelný počítač na světě obsahoval 2600 elektromagnetických relé a byl užíván též k výpočtům charakteristik balistických raket V2. Pracoval ve dvojkové soustavě a Obr. č. 9: Počítač Z1 prováděl až 50 aritmetických operací s Zdroj: [11] čísly v pohyblivé řádové čárce za minutu (ani ne jedna za sekundu). Paměť byla na tehdejší dobu velká, 64 čísel po 22 bitech. Údaje se ručně zadávaly pomocí klávesnice. Počítač byl v roce 1944 zničen při náletu.
Obr. č. 10: Relé Zdroj: [13]
Obr. č. 11: Relé Zdroj: [12]
oku 1943 zkonstruoval v Bletchley Park anglický inženýr Tomáš H. Flowers (1905 -1998) prototyp počítače určeného k lámání německých šifer, vytvářených šifrovacími stroji Enigma a armádními dálnopisy (Schlüsselzusatz 40; SZ 40, pak T52; ve spojeneckém kódu FISH Sturgeon a Tunny), který se nazýval Colossus Mark I. Používal vakuové elektronky a v následujícím roce byl zprovozněn vylepšený Colossus Mark 2. [38]
Obr. č. 13: Elektronka Zdroj: [15] Obr. č. 12: Počítač Z2 Zdroj: [14]
Obr. č. 14: MARK1 Zdroj: [16] Naposledy vytištěno 5.3.2013 8:55:00 12
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
Obr. č. 15: Kódovací stroj Enigma Zdroj: [17]
- 13 -
Obr. č. 16: Mark 2 Zdroj: [18]
Prvním počítačem vyrobeným v Československu byl SAPO (SAmočinný POčítač), který byl uveden do provozu v roce 1957. Obsahoval 7000 relé a 400 elektronek. Měl magnetickou bubnovou paměť o kapacitě 1024 dvaatřicetibitových slov. Pracoval ve dvojkové soustavě s pohyblivou řádovou čárkou. Tento počítač měl dvě zvláštnosti: první bylo, že byl pětiadresový neboli součástí každé instrukce bylo 5 adres (2 operandy, výsledek a adresy skoků v případě kladného a záporného výsledku) a druhou bylo, že se vlastně jednalo o tři shodné procesory, které pracovaly paralelně. Výsledek každé operace z jednotlivých procesorů se mezi sebou porovnal a o výsledku se rozhodovalo hlasováním. Pokud byl shodný alespoň ve dvou případech, byl považován Obr. č . 17: SAPO za správný. Pokud se ve všech třech případech lišil, Zdroj: [19] operace se opakovala. Počítač SAPO byl zkonstruován prof. A. Svobodou, Dr. Oblonským a jejich spolupracovníky v Ústavu matematických strojů (pozdější Výzkumný ústav matematických strojů) a byl instalován v budově ústavu na Loretánském náměstí. Tři roky po jeho spuštění, v roce 1960, počítač SAPO shořel. Z jiskřících releových kontaktů se vzňala loužička oleje, kterým se relé promazávala. První generace je charakteristická použitím elektronek a v menší míře též ještě relé (elektromechanika). Počítače byly poměrně neefektivní, velmi drahé, měly vysoký příkon, velkou poruchovost a velmi nízkou výpočetní rychlost. Zpočátku byl program vytvářen na propojovacích deskách, později byly využity děrné štítky a děrné pásky, které též sloužily spolu s řádkovými tiskárnami k uchování výsledků. V té době neexistovaly ani operační systémy ani programovací jazyky ani assemblery. Počítač se ovládal ze systémové konzole. Jeden tým lidí pracoval jako konstruktéři, operátoři i technici, jejichž úspěchem bylo ukončit výpočet bez poruchy počítače. V roce 1944 byl na univerzitě v Pensylvánii uveden do provozu elektronkový počítač ENIAC, který byl prvním počítačem, který pracoval podobně jako dnešní počítače. Na rozdíl od Z3 umožňoval vytvoření smyčky i podmíněné skoky. Prováděl až 5000 součtů za sekundu, ale byl energeticky velmi náročný, poruchový a jeho provoz byl drahý. Jeho provoz byl ukončen v roce 1955. ENIAC byl přímou inspirací pro počítač MANIAC (Mathematical Analyser Numerical Integrator And Computer), který byl sestaven roku 1945 a uveden do provozu John von Neumannem. V laboratořích Los Alamos National Laboratory byl použit k matematickým výpočtům popisujícím fyzikální děje a byl využit i k vývoji jaderné bomby. Počítače druhé generace charakterizuje použití tranzistorů, které dovolily zlepšit všechny parametry počítačů (zmenšení rozměrů, zvýšení rychlosti a spolehlivosti, snížení energetických nároků). Díky počátku obchodu s počítači byla snaha o co nejlepší využití počítače, proto vznikají první dávkové systémy, které byly zaváděny do počítače pomocí děrné pásky, štítků nebo magnetické pásky a které Naposledy vytištěno 5.3.2013 8:55:00
13
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 14 -
se využívaly při prodeji strojového času počítače (pronájem počítače po dobu vykonání programu). Počátek využívání operačních systémů, jazyka symbolických adres, první programovací jazyky (COBOL, FORTRAN, ALGOL). Roku 1960 byl ve Výzkumném ústavu matematických strojů (VÚMS) spuštěn elektronický počítač EPOS 1, zkonstruovaný pod vedením prof. A. Svobody, ale už v roce 1962 upravený typ EPOS 2, osazený tranzistory. Počítač pracoval v desítkové aritmetice, v kódu, který umožňoval automatickou opravu jedné chyby (délka slova 12 číslic), vykonával přes 30 tisíc operací za sec. a měl feritovou paměť s kapacitou 40 tisíc slov. Zvláštností počítače bylo hardwarové zařízení pro sdílení času mezi až pěti nezávislými programy. V 60. a 70. letech se vyráběl jako ZPA 600 a ZPA 601 i v mobilní verzi a byl vybaven poměrně bohatým software (operační systém, assembler, překladače). Třetí generace je charakteristická použitím integrovaných obvodů. S postupem času roste počet tranzistorů v integrovaném obvodu (zvyšuje se integrace). V této době byl výkon počítače úměrný druhé mocnině jeho ceny, takže se vyplatilo koupit co nejvýkonnější počítač a poté prodávat jeho strojový čas. Majitelé požadovali maximalizaci využití počítače, proto se objevilo multiprogramování – zatímco jeden program čeká na dokončení I/O operace, je procesorem zpracovávána druhá úloha. S tím úzce souvisí zavedení pojmu proces, který označuje prováděný program a zahrnuje kromě něj i dynamicky se měnící data. Objevuje se první podpora multitaskingu, kdy se programy vykonávané procesorem střídají, takže jsou zdánlivě zpracovávány najednou. Tento pokrok umožňuje zavedení interaktivních systémů (počítač v reálném čase reaguje na požadavky uživatele). Kromě velkých střediskových počítačů (mainframe, tzv. sálový počítač) se objevují i první minipočítače a mikropočítače.
Obr. č . 18: EPOS1 Zdroj: [20] Obr. č. 19: Tranzistor Zdroj: [21]
Obr. č. 20: Tranzistory Zdroj: [22]
Čtvrtá generace je charakteristická mikroprocesory a osobními počítači. Mikroprocesory v jednom pouzdře obsahují celý procesor (dřívější procesory se skládaly z více obvodů) a jsou to integrované obvody s vysokou integrací, které umožnily snížit počet obvodů na základní desce počítače, zvýšila se spolehlivost, zmenšily rozměry, zvýšila rychlost a kapacita pamětí. Nastává ústup střediskových počítačů (mainframe) ve prospěch pracovních stanic a v roce 1981uvedeného osobního počítače IBM PC. Počítač shodné konstrukce vyrábějí i jiní výrobci jako tzv. IBM PC kompatibilní počítače. Přichází éra systémů DOS a vznikají grafická uživatelská rozhraní. Poměr cena/výkon je nejlepší u nejvíce prodávaných počítačů, vyšší výkon je vykoupen exponenciálním růstem ceny, proto se již nevyplatí koupit nejvýkonnější počítač na trhu a z mnoha běžných a laciných počítačů vznikají clustery. S rozvojem počítačových sítí vzniká Internet, distribuované systémy. Výkon počítačů se zvyšuje použitím několika procesorů (multiprocesory).
Naposledy vytištěno 5.3.2013 8:55:00 14
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
Obr. č. 21: Mikroprocesor Zdroj: [23]
1.3
- 15 -
Obr. č. 22.: Mikroprocesory Zdroj: [24]
Architektura počítačů
Pro vývoj moderních počítačů byly významné tři následující koncepce:
1 .3 .1
Harwardská koncepce
Harvardská koncepce předpokládá existenci dvou oddělených pamětí. V první paměti jsou uloženy instrukce (programy) a ve druhé jsou uložena proměnná data. Tato koncepce se využívá např. v jednoúčelových programovatelných automatech nebo kapesních kalkulátorech. Hlavním rysem harvardské architektury je fyzické oddělení dat a instrukcí. Proto Harvardská architektura umožňuje, aby data i instrukce měly různou reprezentaci a implementaci. Paměť obsahující instrukce se často realizuje jako ROM1, tedy paměť určená pouze pro čtení. Data a uživatelské programy se ukládají do paměti typu RAM2, do níž lze zapisovat a číst. Výhodou této architektury je možnost přistupovat do obou paměti současně. Harvardská architektura se používá hlavně tam, kde se program téměř nikdy nemění (např. malá vestavěná zařízení). Obr. č. 23: Harvardská architektura Zdroj:
1.3.2 Von Neumannovo schéma počítače Von Neumannovská (někdy také Stanfordská) architektura je pojmenovaná podle slavného Američana maďarského původu Johna von Neumanna. V této architektuře jsou instrukce i data uloženy v téže paměti a nejsou nijak explicitně rozlišeny. Paměť je organizována lineárně na buňky stejné velikosti, které jsou adresovatelné celými čísly. Data jsou reprezentována binárně a jejich datové typy se implicitně nerozlišují. Instrukce se 1
ROM - Read-Only Memory
2
RAM - Random-Access Memory
Naposledy vytištěno 5.3.2013 8:55:00
Obr. č. 24: Von Neumannovo schéma počítače Zdroj:
15
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 16 -
provádí jednotlivě a to postupně tak, jak jsou zapsány v paměti, dokud není toto pořadí ovlivněno speciální instrukcí (např. skoky). Von Neumannovská architektura najde využití všude tam, kde je požadována univerzálnost a jednoduchost. Von Neumannova architektura je model architektury počítače využívající společnou paměť pro data i instrukce. Počítač má obsahovat procesor, řadič, ALU, operační paměť, vstupní a výstupní zařízení. Je základem současných počítačů. Aritmetickologická jednotka: jednotka provádějící veškeré aritmetické výpočty a logické operace. Obsahuje sčítačky, násobičky (pro aritmetické výpočty) a komparátory (pro porovnávání). Řadič: řídící jednotka, která řídí činnost všech částí počítače. Toto řízení je prováděno pomocí řídících signálů, které jsou zasílány jednotlivým modulům. Reakce na řídící signály, stavy jednotlivých modulů jsou naopak zasílány zpět řadiči pomocí stavových hlášení. Operační paměť: Slouží k uchování zpracovávaného programu, zpracovávaných dat a výsledku výpočtu. Vstupní zařízení: zařízení určená pro vstup programu a dat. Výstupní zařízení: zařízení určená pro výstup výsledku, které program zpracoval. Základním rozdílem mezi von Neumannovou a Harvardskou architekturou je, že Harvardská architektura má oddělenou paměť pro data a instrukce (každá zvlášť), kdežto u von Neumannovy architektury jsou instrukce a data v jedné paměti a mezi nimi se vybírá pomocí různé adresy.
1.3.3 Sběrnicová struktura – současné pojetí PC procesor
hodiny
paměti
adresová datová
Počítače typu PC jsou konstruovány na bázi sběrnic (adresová, datová, řídící), které propojují procesor, paměti (interní a externí) a přidaná zařízení.
řídící sběrnice
přídavná zařízení Obr. č. 25: Sběrnicové pojetí PC Zdroj: vlastní
procesor
napájení základní desky
Obr. č. 26: Základní deska PC Zdroj: vlastní Naposledy vytištěno 5.3.2013 8:55:00 16
paměť RAM
připojení HDD a CD ROM
sběrnice
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 17 -
5000 př. n. l.
Abakus
150 – 100 př. n.l.
Mechanický kalkulátor - Mechanismus z Antikythéry
1623
Mechanický kalkulátor z ozubených kol (Wilhelm Schickard)
1801
Využití stroje na děrné štítky v tkalcovském stavu - Joseph Marie Jacquard
1820
G. W. Lebniz
1890
Herman Hollerith – sčítání lidu v USA
1938
Z1 K. Zuse – počítač nulté generace (relé)
1944
ENIAC – počítač první generace (elektronka)
1960
VÚMS – EPOS 1 – počítač druhé generace (tranzistor)
1970
IBM 370 – počítač třetí generace (integrované obvody) – sálové počítače
1981
PC – čtvrtá generace počítačů (mikroprocesory), IBM 5157, INTEL x 86, osobní počítače
Tabulka č. 1: Vývoj strojů na zpracování dat Zdroj: vlastní
1.4
Umělá inteligence
Viděli jsme, že mozek člověka má úžasné schopnosti paměti, řešení situací, vnímání krásna, citu atd. Po staletí se člověk snaží vytvořit stroj, který by měl schopnosti našeho mozku. Potřebuje k tomu vytvořit technické řešení – hardware3 a tomuto technickému řešení „vdechnout“ život příslušným software4. Lidé vyvíjí mocné systémy paralelně pracujících procesorů, nové technologie pamětí. Zkoumají procesy rozhodování člověka, způsob jeho komunikace se svým okolím, reakce na své okolí. Snaží se vytvořit stroje, které by řídily výrobní linky identicky s jednáním člověka. Snaží se vytvořit umělou bytost, která by měla stejné rozhodovací postupy jako člověk, stejný pohyb, mimiku, komunikaci. Přirozenou inteligenci mozku se snaží vědci „imitovat“ tzv. umělou inteligencí, která je založena na matematickém popisu inteligence člověka. Umělá inteligence (artificial intelligence) je člověkem vytvořený model inteligence vrozené. Nazývá se tak i vědecká disciplína spojující psychologii, matematiku a informatiku, která přirozenou inteligenci studuje a snaží se jí napodobovat pomocí formálních modelů a algoritmů. Je celkem obtížné definovat, co to vlastně inteligence je. Můžeme o ní hovořit jako o souboru těchto dovedností: 1. plánování následujících akcí s ohledem na maximální možný prospěch jednotlivce či skupiny 2. řešení neznámých problémů na základě podobných situací v minulosti 3. schopnost indukce, dedukce, abstrakce a klasifikace 4. rozpoznávání opakujících se vzorů 5. hledání podobností mezi věcmi a událostmi vzdálenými v čase i prostoru 6. schopnost vyjadřování a komunikace 7. schopnost učení a třídění nových poznatků Disciplíny umělé inteligence 1. řešení problémů (např. vyhledávání cesty ve stavovém prostoru) 2. reprezentace znalostí (např. inferenční stroje) 3. plánování 4. komunikace (např. multiagentní systémy) 5. učení se (např. neuronové sítě) 6. pohyb (např. robotika) 3
Hardware - veškeré fyzicky existující technické vybavenípočítače Software – programové vybavení, sada počítačových programů používaných v počítači, které provádějí nějakou činnost 4
Naposledy vytištěno 5.3.2013 8:55:00
17
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 18 -
7. vnímání (např. rozpoznávání vzorů), atd. I když se zatím nepodařilo sestrojit plně samostatnou a univerzální umělou inteligenci, s jakou se setkáváme ve sci-fi filmech, pronikla už spousta praktických aplikací i do našeho každodenního života. Algoritmy umělé inteligence jsou všude kolem nás – digitální fotoaparáty, které rozpoznávají obličeje a úsměvy, lékařské expertní systémy, řízení dopravních prostředků, optimalizace návrhu a výrobních procesů, automatické varovné systémy, dopravní regulační systémy… Spolu s rychlým vývojem tohoto oboru vyvstávají filozofické a etické otázky: 1. Bude etické inteligentní stroj zničit? 2. Může někomu patřit? 3. Neovládnou inteligentní stroje planetu, jak to známe z katastrofických filmů? Jde o stejně složité otázky, jako tomu je v případě problematiky klonování lidské bytosti. Touha lidstva po poznání náš žene k novým výzkumům. Nedostalo však lidstvo do rukou nástroje, na které ještě nedozrálo? Odpovědi na tyto otázky můžeme hledat už dnes, ale na skutečnou potřebu tyto problémy řešit si (naštěstí) ještě počkáme.
1.5
Shrnutí
Od starověku se lidé snaží automatizovat výpočty. Vývoj technologií na zpracování dat a informací, které byly schopné plnit tento úkol ve své době odpovídal úrovni technologického poznání své doby: zařízení na mechanických principech (Abakus – 5000 př. n. l., logaritmické pravítko) mechanický kalkulátor (Blaice Pascal - 1942, Lebniz - 1820) děrnoštítková zařízení (1835 Charles Babbage) releové technologie (Z1, Z2, Z3 – 1938 - 1941) první generace počítačů - počítače na bázi elektronek (1944 ENIAC) druhá generace počítačů – počítače na bázi tranzistorů (1960 EPOS1) třetí generace počítačů – počítače na bázi integrovaných obvodů (1970) čtvrtá generace počítačů – počítače na bázi mikroprocesorů (1980) Při řešení tohoto problému se lidé snaží vycházet z toho, jak funguje lidský mozek v takových případech. Mozek člověka využívá pro zpracování informací ze svého okolí tři paměti: 1. Senzorickou (ultrakrátká) - uchovává informace přicházející ze smyslů jen do okamžiku rozhodnutí o užitečnosti informace. 2. Krátkodobá (pracovní, operativní) – srovnává informace ze senzorické paměti s vybavenými informacemi z dlouhodobé paměti. Informace udržuje 15 – 20 s. 3. Dlouhodobou – implikace informace do dlouhodobé paměti trvá přibližně 30 s. a může probíhat buď záměrně, nebo bezděčně. Mozek člověka se skládá z levé a pravé hemisféry. Levá hemisféra je sídlem logiky, řeči a vůle jedince, zpracovává informace lineárně a úzce spolupracuje s informacemi v dlouhodobé paměti. Pravá hemisféra vytváří analogie, realizuje syntézy, je sídlem intuice, představivosti, atd. Paměť člověka má své algoritmy na uložení dat a na jejich vybavení a zpracování. Vývoj techniky v této oblasti prošel od jednoúčelových mechanismů ve starověku a středověku k víceúčelovým programovatelným zařízením v současnosti, k počítačům. Činnost současných počítačů je řízena posloupností příkazů – instrukcí. Posloupnost příkazů, která umí vyřešit určitý Naposledy vytištěno 5.3.2013 8:55:00 18
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 19 -
problém, nazýváme „program“. Program je umístěn v paměti počítače MC (Memory Centrále) ve formě nul a jedniček. Uživatel jej píše v tzv. vyšších jazycích, například http, PHP atd., které jsou blízké myšlení a logice člověka. Moderní pojetí počítačů nabídl von Neumann, který umístil data i program do centrální paměti. S rozvojem technologií byly vyvinuty mocné technologie pro vstup a výstup dat z počítače, a pro jejich uchování (různé druhy pamětí), vybavení a zpracování.
1.6 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Otázky Jaké funkce plní pravá hemisféra lidského mozku? Jaké funkce plní levá hemisféra lidského mozku? Jaké znáte druhy paměti? Jak lze charakterizovat dlouhodobou paměť? Kdy byly vyrobeny první číslicové počítače? Čím je charakteristická první generace počítačů? Čím je charakteristická druhá generace počítačů? Čím je charakteristická třetí generace počítačů? Čím je charakteristická čtvrtá generace počítačů? Jaký je rozdíl mezi von Neumannovou a Harvardskou architekturou? Charakterizujte sběrnicovou strukturu PC.
Naposledy vytištěno 5.3.2013 8:55:00
19
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
Naposledy vytištěno 5.3.2013 8:55:00 20
- 20 -
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
2
- 21 -
Algoritmizace ekonomických úloh
Co bude posluchač po prostudování kapitoly znát: 1. 2. 3. 4.
Definovat vývojový diagram, jeho značky a nakreslit jej pro jednoduché matematické a ekonomické aplikace. Popsat vstup, zpracování a výstup dat z počítače. Na praktických příkladech popsat vstup, zpracování a výstup dat z počítače, práci MC, funkci proměnné v tomto případě. 5. Použít VD pro organizaci práce manažera a jeho útvaru.
2.1 Algoritmus a vývojový diagram Konstatovali jsme již, že při řešení jakéhokoliv problému mozek snaží se jeho řešení rozčlenit do sekvence navazujících jednoduchých dílčích kroků. Mluvíme o algoritmizaci a algoritmech. Algoritmy vznikaly už dávno před zkonstruováním prvních počítačů. Samotné slovo "algoritmus" vzniklo ze jména perského matematika, který žil v 9. století a jmenoval se Mohammed al-Khowarizmí (v latinském přepise Algoritmus). Zabýval se především pravidly pro aritmetické operace s čísly. Například Eukleidův algoritmus pro výpočet největšího společného dělitele dvou přirozených čísel pochází už ze 4. až 3. století před naším letopočtem. [25] Vhodně sestavené algoritmy lze převedením do programovacího jazyka řešit na počítačích, např. na tzv. Turingově stroji. Turingův stroj je jednoduché abstraktní výpočetní zařízení, které se používá ke studiu vypočitatelnosti – tedy ke zjištění, které problémy s jeho použitím vyřešit lze a které ne. V roce 1937 jej definoval původem anglický filozof, matematik a kryptograf Alan Mathison Turing. [25]
Algoritmus můžeme definovat jako jednoznačně určenou posloupnost konečného počtu elementárních kroků vedoucí k řešení daného problému, přičemž musí být splněny základní vlastnosti každého algoritmu: 1. Hromadnost a univerzálnost - algoritmus musí vést k řešení celé třídy úloh, vzájemně se lišících pouze vstupními údaji. Musí řešit úlohu pro libovolnou přípustnou kombinaci vstupních dat a musí pokrývat všechny situace, které mohou při výpočtu nastat. 2. Determinovanost (jednoznačnost) - v každém kroku algoritmem popsaného postupu musí být jednoznačně určeno, co je výsledkem tohoto kroku a jak má algoritmus dále pokračovat. Pro stejná vstupní data vydá algoritmus vždy stejný výsledek. 3. Konečnost - algoritmus v konečné době skončí. 4. Rezultativnost - algoritmus při zadání vstupních dat vždy vrátí nějaký výsledek. 5. Správnost - výsledek vydaný algoritmem musí být správný. 6. Výsledek - lze při provádění algoritmu získat zcela mechanicky. Algoritmus, který má řešit nějakou úlohu je třeba ověřit (verifikovat jeho správnou funkci).
Vývojové diagramy [26] Vývojový diagram je druh diagramu, který slouží ke grafickému znázornění jednotlivých kroků algoritmu nebo obecného procesu. Vývojový diagram používá pro znázornění jednotlivých kroků algoritmu pomocí symbolů, které jsou navzájem propojeny pomocí orientovaných šipek. Naposledy vytištěno 5.3.2013 8:55:00
21
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 22 -
Symboly reprezentují jednotlivé procesy, šipky tok řízení. Vývojové diagramy jsou často využívány v informatice během programování pro analýzu, návrh, dokumentaci nebo řízení procesu. Klasický vývojový diagram se skládá s následujících druhů symbolů: Úsečka (spojnice) či množina navazujících úseček končící šipkou — určuje směr zpracování algoritmu Svislé nebo vodorovné čáry - mohou se křížit nebo spojovat. - směr dolů a doprava je prioritní. Startovací a ukončovací symboly - jsou znázorněny pomocí kruhů, oválů či zaoblených obdélníků, obvykle obsahují nápis „Start“ nebo „Konec“, či podobnou frázi určující začátek a konec procesu (např. „Zaslání požadavku“ nebo „Odebrání produktu“). Začátek Konec
Šipky - zobrazují „řídící tok“. Šipka směřující z jednoho symbolu a končící u druhého naznačuje, že řídící tok přechází z jednoho symbolu na druhý.
Obdélník s popisem — definuje dílčí krok zpracování algoritmu Výpočet faktury
Kosočtverec — větvení postupu v algoritmu v závislosti na splnění podmínky, viz skok
A=B
ne
ano
Podprogramy - jsou zobrazovány pomocí obdélníku se svislými čarami po stranách. Používají se k zobrazení skupiny kroků procesu pomocí jednoho symbolu. Podprogramy jsou takové části algoritmu, které se mohou opakovat a mohly by být tvořeny samostatným vývojovým diagramem.
Kontrola
Vstup/Výstup - k jejich zobrazení se používá rovnoběžníku, v případě uživatelského vstupu se zobrazuje pomocí lichoběžníku. Příklad: „Získej proměnnou X od uživatele; zobraz proměnnou X“. Čti A Naposledy vytištěno 5.3.2013 8:55:00 22
Tisk A
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 23 -
Podmíněný cyklus - zobrazen pomocí šestiúhelníku. Cyklus probíhá, dokud vyhovuje podmínce, poté přejde k dalšímu kroku algoritmu. I = 1 .. N
Spojovací značka - pro její značení se obvykle používá kruh. Používá se tam, kde je třeba spojit více toků procesu do jednoho toku.
2.2
Vybrané úlohy na procvičení základů algoritmů
V následujícím textu se naučíme používat značky v reálných vývojových diagramech pro řešení úloh z praxe k využití na počítači. Je dobré si udělat analogii mezi řešením takových úloh v našem mozku a množství řešení na hardware a software současných počítačů. Analyzujeme, jak by náš mozek řešil následující úlohu (Úloha č. 1): Máš načíst pět čísel, která jsou napsána na listu papíru a součet napsat zpět na tento papír.
1 + 3 + 12 + 4 + 7 = 27
Mozek v takovém případě vyvolá aktivitu, která sejme první číslo očima, v oku jej převede na elektrické signály a tyto odešle do té oblasti paměti, v níž má místo pro uložení takového čísla. Počítač získá první číslo z klávesnice, vyvolá tzv. knihovnu input/output (dále jen I/O), spustí v ní program na přenos čísla a jeho uložení do paměti do místa, které nazýváme proměnná. Tuto oblast paměti (proměnnou) musíme pojmenovat, abychom s jejím obsahem mohli dále pracovat. Počítač však potřebuje vědět, co bude do dané proměnné uloženo (celé číslo, číslo s desetinným místem, znak, řetězec), jak velký prostor si má vyhradit a jaké operace budeme pomoci ALU s těmito proměnnými realizovat. Mluvíme o deklaraci proměnných. Když mozek načte všechna čísla, sečte je a výsledek uloží opět do paměti, spustí procesy k přenosu součtu na ovládání ruky, která výsledek napíše na papír. Počítač postupuje při výstupu dat stejně. Nejprve sečte hodnoty čísel, které jsme uložili do proměnných a, b, c, d, e, a výsledek uloží do proměnné "f". Následně spustí knihovnu I/O a v ní program, který vystaví hodnotu proměnné "f" na obrazovku. V úkolu č.1napíšeme vývojový diagram a popisujeme vytvoření proměnných v paměti. Plnění jednotlivých bloků (příkazů, které v programu C zapíšeme pomocí tzv. klíčových slov) postupně řadí tzv. řadič, viz von Neumannovo schéma v kapitole 1.3.2. Naposledy vytištěno 5.3.2013 8:55:00
23
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 24 -
Úkol č. 1: Zadání:
2
1
Nakreslete vývojový diagram pro řešení následující úlohy: Načtěte pět čísel z klávesnice, sečtěte je a vytiskněte výsledek. Číslo se musí zadat. 4
3
Metodický pokyn: Nejprve si promyslíme, jaké činnosti musíme udělat, abychom problém vyřešili. Mluvíme o algoritmizaci úlohy. Potřebujeme vědět, jakého typu budou proměnné, abychom jim mohli přidělit rozsah paměti na jejich uložení. Data čteme z klávesnice. Dále budeme muset sečíst proměnné a uložit do proměnné , v níž bude součet (f); nakonec potřebujete tentýž součet vytisknout na obrazovku počítače. Řešení: Nyní můžeme nakreslit vývojový diagram a práci proměnných v paměti. Realizaci kroků 1 2 3 4 provádí řadič. Nejprve se naučíme číst zadání. V textu je uloženo, abychom realizovali kroky 1. 2 3 4 Vývojový diagram:
Paměť - MC
Z
řadič
Deklarace proměnných
2
Do proměnné a, b, c, d, e, a f budeme vkládat celá čísla.
Vstup dat z klávesnice a, b, c, d, e
Proměnné v paměti a, b, c, d, e, f
a
ALU
b Načtení dat z klávesnice do proměnných
c 1
d
e 3
Realizace f=a+b+c+d+e
f= +
+
+
+
+
f
Uložení součtu všech proměnných do proměnné f
4
Tisk “f =“ ; f (obrazovka)
Tento příkaz vytiskne na obrazovku vše, co je v uvozovkách “f =“,
v našem případě f = a dále vytiskne obsah proměnné, která stojí za středníkem
K
Pozn.:
Místa v paměti označená jako a, b, c, d, e, f nazýváme proměnná.
Naposledy vytištěno 5.3.2013 8:55:00 24
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 25 -
Test umístěný mezi apostrofy v příkazu Tisk se zobrazí na obrazovce počítače. Při popisu počítače von Neumannovy koncepce (viz kapitola kapitole 1.3.2.) jsme konstatovali, že má tzv. aritmeticko logickou jednotku. V úkolech č. 2 a 3 vidíme její využití pro řešení úkolu. V úkolu č. 1 pracovala ALU v bloku „Realizace f = a + b + c + d + e. Jejím úkolkem je sečíst hodnoty v proměnných a, b, c, d, e, a součet uložit do f.
Úkol č. 2 1
3
2
Vytvořte algoritmus, který načte dvě čísla z klávesnice, určí, které ze dvou zadaných čísel je větší a toto zobrazí na obrazovce. Čísla se nesmí rovnat. Proveďte verifikaci algoritmu. 4
Řešení:
Z
Z
Deklarace a, b
Deklarace a, b
2
knihovna I/O
PAMĚŤ
a a
Načtení dvou čísel
1
b
ALU
3
Najdi větší z obou čísel
knihovna I/O
4
Vytiskni větší číslo
K
b
a>b
Načtěte hodnotu do proměnné a (pracuje knihovna I/O). Načtěte hodnotu do proměnné a (pracuje knihovna I/O).
NE
Porovnej obsah proměnné a a proměnné b.
ANO
Větší číslo je „b“
Větší číslo je „a“
Vytiskni větší číslo. (pracuje knihovna I/O)
K
Úkol č. 3 Najděte největší číslo ze tří čísel, které vstupují z klávesnice a proveďte verifikaci vývojového diagramu. Čísla se nesmí rovnat. Řešení: Při řešení této úlohy si musíme uvědomit, že budeme potřebovat v paměti tři místa na uložení zadávaných čísel z klávesnice – tři proměnné. Pojmenujeme je a, b, c. Viděli jsme již, že již v počátcích řešení algoritmu musíme vědět, co budeme do daných proměnných vkládat. V tomto případě to bude celé číslo, číslo s desetinným místem, znak nebo řetězec znaků. Jejich načtení realizujeme s využitím knihovny I/O. Znamená to, že potřebujeme při řešení úkolu vyvolat specializované programy, které jsou schopny převést data z klávesnice do proměnných a z proměnných na obrazovku. Do vývojového diagramu potřebujeme doplnit příkaz vyvolání knihovny I/O:
Vyvolání knihovny I/O
Naposledy vytištěno 5.3.2013 8:55:00
25
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 26 -
Verifikace programu znamená prověření správnosti jeho činnosti pro vstupní data. Nejjednodušší verifikace tedy znamená, že vytvoříme takové soustavy vstupních dat, abychom pokud možno prověřili všechny větve a varianty činnosti vývojového diagramu. Posloupnost řešení příkazů od
Z
po
realizuje řadič.
K
Po jejich načtení se spustí aritmeticko logická jednotka (ALU ve von Neumannově schématu) tak, že postupně porovnává obsah dvojic proměnných a, b, c a v každé větvi, uloží jejich největší hodnotu pro vstupní kombinaci čísel do proměnné max, a nakonec obsah této proměnné vytiskne na obrazovku.
PAMĚŤ
Z
Z
Vyvolání knihovny i/0
Budeme tedy potřebovat čtyři proměnné!
Deklarace proměnných
max
b
a Deklarace proměnných
a
c b
Načtení tří čísel c ALU …
ALU …
ANO
Najdi z těchto tří čísel největší ANO
… MAX = a
Vytiskni maximum
a>c
a>b
NE
NE
NE
MAX = c
MAX = c
b>c
ANO
MAX = b
Vytiskni maximum
Verifikujte pro data: K K
2.3
a = 4, b = 3, c = 5 a = 5, b = 3, c = 2 a = 3, b = 5, c = 2
Ukázka využití technologií algoritmů v práci manažera a účetního
Následující úkol presentuje možnosti použití počítače mzdovou účetní při hrubém odhadu objemu hrubých mezd a odvodů v příslušném měsíci. Před zahájením řešení této úlohy je třeba si ujasnit, jak má vypadat výstupní sestava, které proměnné budeme potřebovat a co do nich budeme zapisovat (čísla, texty – příjmení, měsíc, atd.) a zda budeme potřebovat zapojit do činnosti knihovnu I/O. Označme si vstupní proměnné ty, do nichž načítáme data z klávesnice a výstupní proměnné ty, jejichž obsah vystavíme na obrazovku počítače.
Naposledy vytištěno 5.3.2013 8:55:00 26
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 27 -
Úkol č. 4 V podniku Eskaliber, s.r.o. pracují následující pracovníci: p. Koníček Aleš p. Tománek Petr p. Šula Jan p. Prát Antonín p. Koubek Karel p. Čujan Petr p. Forman Jiří Vaším úkolem je vytvořit vývojový diagram pro řešení, které dovolí v daném měsíci pro jednotlivé pracovníky zadat hrubé mzdy, vypočítat z hrubých mezd odvody a vytisknout níže uvedenou sestavu. Výstupní sestava Hrubé mzdy a odvody za měsíc: 1
K1
a1
a2
a3
a4
2
3
4
5
Pořadí
Příjmení 1
1
Jméno
Koníček
Aleš 10
Součet odvodů:
11 7
9
Odvody
23000
Součet hrubé mzdy:
6
Hrubá mzda
a5
8
V Kunovicích, dne K2
K3
K4
Před zahájením řešení úkolu je třeba definovat, které proměnné budeme potřebovat a zda budeme potřebovat knihovnu I/O.
vstupní proměnné 1 - 8 výstupní proměnné 9 - 11
Naposledy vytištěno 5.3.2013 8:55:00
27
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 28 -
Nyní již můžeme nakreslit vývojový diagram pro řešení tohoto problému: Typy proměnných:
Cyklus se opakuje, dokud nejsou načtena data pro všechny pracovníky
Z
Zadání
1
6
7
8 3
Zadání 2
3
4
10 11 10 11 Výpočet a tisk výstupní sestavy
Naposledy vytištěno 5.3.2013 8:55:00 28
řetězec znaků
2
celé čísla
4
řetězec znaků
5
celé číslo
6
celé číslo – den
7
celé číslo nebo řetězec znaků (leden)
8
celé číslo – rok
9
číslo s desetinným místem
10
celé číslo
11
číslo s desetinným místem
5
Výpočet 9
K
1
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 29 A
Z
Mezera
měsíc
den měsíc
K1
1
K2
6
K3
7
P2(a) Tisk a1 a2 a3 a4
a5
P2 (b) P2 (c)
rok
K4
8
P1(a)
Podprogramy pořadí
1
P2 (d)
2
P2 (e)
a1 Koníček
3
P2 (f)
a2 jméno
Aleš
4
P2 (g)
a3 hrubá mzda
23000 a4 Výpočet odvodů a5
5
H = a4 + b4 + c4 + d4 + e4 + f4 + g4
10
Tisk výstupní sestavy
příjmení Načtení vstupních dat
viz 1
„Hrubé mzdy a odvody za měsíc:“ K1
Deklarace proměnných
9
P1 (b)
„Součet hrubé mzdy“; H
12
o = a5 + b5 + c5 + d5 + e5 + f5 + g5
11
„Součet odvodů“; o
13
P1 (c) P1 (d) Mezera P1 (e)
Načtení vstupních dat (Z – A),
„V Kunovicích, dne“, K2, K3, K4
P1 (f) NE
P1 (g)
Konec ANO
A Vymaž obrazovku
K
Nejprve tedy zadáme měsíc, za který chceme sestavu vypracovat. V položce reálné sestavy a ten se uloží v paměti do proměnné K1.
1
zadáme měsíc do
Data načtená v 6 7 8 načtou den (př. 15), měsíc (př. 1, nebo řetězec znaků „leden“) a rok (př. 2013). Den vypracování sestavy se uloží do proměnné K2, měsíc do proměnné K3 a rok do proměnné K4. Výstupem je: V Kunovicích dne K2, K3, K4 Nyní je třeba zadat údaje o jednotlivých pracovnících. V sestavě vidíme, že u každého pracovníka chceme zadat pořadí (pro prvního pracovníka je pořadí 1, uložená v proměnné a1), příjmení které
Naposledy vytištěno 5.3.2013 8:55:00
29
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 30 -
uložíme po načtení do proměnné a2, jméno uložíme do proměnné a3, hrubou mzdu uložíme do proměnné a4 a dále ihned vypočítáme výši odvodů (a4 x 0,35) a uložíme do proměnné a5. Pro druhého pracovníka celý postup opakujeme s tím, že data ukládáme do proměnných označených b1, b2, b3, b4, b5. Další proměnné označujeme c, d, e, f, g. Podrobnou část vývojového diagramu, která naplní a1, a2, a3, a4, a5, označujeme podprogram P1(a), jeho opakování jen s jinak označenými proměnnými zakreslíme: P1 (b)
Po dokončení realizace vývojového diagramu v rozmezí Z až A jsme načetli vstupní data, vypočítali odvody pro jednotlivé pracovníky a v paměti jsme vytvořili z proměnných jednoduchou databázi. Útvar v paměti, který obsahuje data, která mají navzájem souvislost, jako i v tomto případě, nazýváme databáze. Následující obrázek ukazuje jednoduchou databázi, kterou jsme výše uvedeným programem v paměti naplnili. Naše databáze má tedy strukturu: a1 b1 c1 d1 e1 f1 g1
a2 b2 c2 d2 e2 f2 g2
a3 b3 c3 d3 e3 f3 g3
a4 b4 c4 d4 e4 f4 g4
MC 1 2 3 4 5 6 7
a5 b5 c5 d5 e5 f5 g5
Koníček Tománek Šula Prát Koubek Čujan Forman
Aleš Petr Jan Antonín Karel Petr Jiří
23000 11000 9700 17000 16800 7600 13000
8050 3850 3395 5950 5880 2660 4550
V praxi bývá databáze pojmenovaná a jednotlivé prvky databáze přímo přístupně (lze je zapisovat, číst, nebo přepisovat). Vývojové diagramy lze úspěšně využít také pro operativní plánování rozsáhlých činností manažera. Takové strukturované řešení rozsáhlých akcí zprůhledňuje harmonogram a koordinuje práci řešitelů. V následujícím textu uvádíme dvě ukázky využití této technologie. Tisk výstupní sestavy
až
A
K
.
V následující části řešení naší úlohy potřebujeme ze získaných a v paměti uložených vstupních dat vypracovat a vytisknout výstupní sestavu. Nejprve tedy použijeme příkaz pro tisk nadpisu sestavy s tím, že jsme v měsíc, za který je sestava zpracována.
1
do K1 proměnné načetli
V P2(a) a dalších podprogramech P2(b), P2(c), P2(d), P2(e), P2(f), P2(g) přenášíme obsah proměnných pro jednotlivé pracovníky, které jsme naplnili v 2 3 4 5 9 na obrazovku. Například P2 (a) vytiskne na obrazovku 1
Koníček
Aleš
23000
8050
11000
3850
P2(b) vytiskne na obrazovku: 2
Tománek
Petr
atd. V 10 uložíme do proměnné H součet hrubých mezd všech pracovníků (obsahy proměnných a4, b4, c4, d4, e4, f4, g4) a v 12 vytiskneme na obrazovku Součet hrubé mzdy
H
Totéž máme pro odvody v a11 a
13
.
Nakonec zobrazíme s využitím K1, K2, K3 na obrazovce text: V Kunovicích, dne 15. 1. 2013 Naposledy vytištěno 5.3.2013 8:55:00 30
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 31 -
Následující příklad ukazuje aplikaci vývojových diagramů do práce manažera. Úkol č. 1 Student Petr Nedbálek studuje na EPI, s.r.o. třetí semestr studijního oboru Management a marketing zahraničního obchodu. Protože dostal v Praze nabídku pracovní pozice v oblasti daňového poradenství, požádal rektora dne 1. 9. 2012 o možnost přestoupení ze studijního oboru Management a marketing zahraničního obchodu na studijní obor Finance a daně. Rektor předal žádost k vyřízení prorektorovi pro pedagogickou činnost. Ten si zpracoval řešení problému formou vývojového diagramu: Z
Zahájit správní řízení
Pozvat studenta k projednání k prorektorovi pro ped. činnost vedoucí studijního oddělení
Termín: 2. 9. 2012
Založení složky
Rozhodnutí
Termín: Zodp:
1. 9. 2012 prorektor pro ped. činnost vedoucí studijního oddělení
Termín: Kde: Kdo:
7. 9. 2012 ředitelna (e-mail) prorektor
prorektor pro ped.
Termín: Kdo:
2. 9. 2012 ředitel ústavu vedoucí katedry
Stanovení termínů, komisí a obsahu
Termín: Kdo:
2. 9. 2012 ředitel ústavu
Projednat se členy komisí
Termín: Kdo: činnost
3. 9. 2012 prorektor pro ped.
Termín: Kdo:
3. 9. 2012 prorektor pro ped. činnost
Uznání zkoušek + stanovení rozdílových zkoušek
Termín: 3. 9. 2012 Vystavit jmenovací dekrety
Převedení studenta do kruhu 2FHi
Co: 1. přidělit přístupová práva
Termín: 31. 10. 2012
Po uplynutí času na složení zkoušek kontrola
uspěl
student
Plné zařazení Termín: 1. 11. 2012 Zodp.: vedoucí studijního studenta + založení indexu oddělení
neuspěl
Rozhodnutí o ukončení
Ukončení studia
Termín: 1. 11. 2012 Zodp.: prorektor pro ped. činnost
student
K K
Naposledy vytištěno 5.3.2013 8:55:00
31
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 32 -
Úkol č. 2 Obchodní ředitel firmy EKOSERVIS, s.r.o. si připravuje plán úkolů na týden od 17. 12. 2012 do 23. 12. 2012. V podniku je zvykem, že vedoucí útvarů (zásobování, odbyt, obchodní) dodají sekretariátu v pátek do 10.00 hodin hlavní úkoly svých útvarů tak, aby mohl sekretariát tyto úkoly zapracovat do plánu práce úseku obchodního ředitele a aby plnění úkolů mohlo být kontrolováno. V pátek ve 12.00 hodin předává sekretariát obchodnímu řediteli vypracovaný harmonogram týdne ke schválení. V průběhu týdne kontroluje sekretariát obchodního ředitele plnění harmonogramu úkolů jednotlivých útvarů. Úkoly na období od 17. 2. 2012 do 20. 12. 2012 Pondělí Z
Obchodní ředitel
7.00
Provozní porada
Sekretariát Rozbor pošty 1. …. 2. …. 3. …. 4. …. 5. …. 6. ….
Odbyt
Zásobování
Obchodní útvar
1. …. 2. …. 3. …. 4. …. 5. …. 6. ….
1. …. 2. …. 3. …. 4. …. 5. …. 6. ….
Obchodní ředitel
1. …. 2. …. 3. …. 4. …. 5. …. 6. ….
10.00 zápis
Porada u GŘ
Obchodní ředitel JUDr. Šimek
13.00
Porada s vedoucím právního oddělení příprava služební cesty - EKOSTAL Obchodní ředitel
14.00
Kontrola úkolů útvarů příprava na služební cestu EKOSTAL
Konec
Naposledy vytištěno 5.3.2013 8:55:00 32
zápis
dokumenty
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 33 -
Úterý Z
Obchodní ředitel
6.00 – 17. 00
Sekretariát
Služební cesta
1. 2. 3. 4. 5.
EKOSTAL
Pošta …. …. …. ….
Informovat obchodního ředitele o průběhu dne
Zásobování 1. …. 2. …. 3. …. 4. …. 5. ….
Odbyt 1. …. 2. …. 3. …. 4. …. 5. ….
Obchodní útvar 1. …. 2. …. 3. …. 4. …. 5. ….
Hodnocení dne
Hodnocení dne
Hodnocení dne
Úkoly na středu
Úkoly na středu
Úkoly na středu
K
Středa
Samostatná práce studenta Nakreslete vývojový diagram pro řešení některé Vaší pracovní úlohy.
V dalším textu se seznámíme se strukturou vývojových diagramů, které nám usnadní (zjednoduší) celou strukturu programu. V úkolu č. 4 jsme viděli použití cyklu při načtení údajů o pracovních a cyklus, pomocí něhož jsme tiskli data o pracovních na obrazovku.
Naposledy vytištěno 5.3.2013 8:55:00
33
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
2.4
- 34 -
CYKLUS
V praxi se často vyskytují úlohy, v nichž se část algoritmu opakuje, jen s jinými parametry. Takové struktury vývojových diagramů významně zjednoduší struktura, kterou nazýváme cyklus. Cyklus obsahuje podmínku a výkonnou část – tělo cyklu. Počet průchodů cyklem registruje tzv. počitadlo cyklu. Definice cyklu Cyklus zajišťuje opakování činnosti programu (viz blok A) tak dlouho, dokud je splněna zadávací podmínka B. Tato podmínka může stát na začátku nebo na koci cyklu – viz a), b). Základní typy cyklů jsou cyklus s podmínkou na začátku cyklu, cyklus s podmínkou na konci cyklu a cyklus s předem známým počtem opakování.
2 .4 .1
Cyklus s podmínkou na začátku cyklu Pokud platí podmínka B vykonej A
A může být řetězec příkazů, navzájem oddělených středníkem a uložených mezi závorkami:
-
B
{
}
C
+ A
Opakování s podmínkou před prvním vykonáním činnosti „A“
Úkol č. 4 Vypracujte vývojový diagram, který načte pro 5 pracovníků - Karel Botek, Jan Fila, Milan Staněk, Jan Šebek, Petr Malý do proměnných v paměti hrubé mzdy. Popište činnost paměti a potřebné proměnné. Využijte cyklus s podmínkou na začátku cyklu. Řešení: Nejprve si musíme rozmyslet, jaké proměnné budeme potřebovat a co do nich budeme ukládat: V paměti se má vytvořit pro každého pracovníka následující záznam:
n
příjmení
jméno
hrubá mzda
an
bn
cn
1 n=1
Botek
Karel
25000
a1
b1
c1
n ……………. pořadí pracovníků (celé číslo) a1 až a5 ……… příjmení pracovníků (řetězec znaků) b1 až b5 ……… jméno pracovníků (řetězec znaků) c1 až c5 ……… hrubé mzdy pracovníků (celé číslo) Tělo cyklu by mělo naplnit údaje postupně pro všechny pracovníky. Cyklus se bude tedy opakovat tolikrát, kolika pracovníkům potřebujeme data do proměnných naplnit. Obecně n krát. V našem případě 5 x pro 5 prvků. n je tedy počítadlo počtu průchodů cyklem, které se po každém průchodu cyklu zmenší o 1. Jakmile naplníme data posledního pracovníka, n nabude hodnoty 0, podmínka n ≥ 1 není splněna a
proto odejdeme z cyklu na Naposledy vytištěno 5.3.2013 8:55:00 34
C
.
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 35 -
V tomto případě máme opakovat 5 krát (zajistí počitadlo cyklu) naplnění dat do proměnných jednotlivých pracovníků.
paměť Z
Deklarace proměnných
počítadlo cyklu
5
Počet pracovníků n=5
n ≥ 1?
1
A
ANO
Pracovník příjmení 2
an
n
NE 5>1
Botek a5
Pracovník jméno 3
bn
4
Karel
cn
Staněk a3
b3
3=4-1
4=5-1
n 4>1
3>1
b1
c1
1=2-1
0=1-1
0<1
0<1
Konec cyklu
n
n
A
9600
10000
2=3-1
2>1
Petr
Jan
c2
n
n
a1
b2
c3
Malý
Šebek a2
17000
8400 c4
1=1
2>1
Milan
Jan
25000
do n ulož n – 1
Fila
b4
c5 5
3>1
a4
b5 Hrubá mzda
4>1
1=1
A
Metodický pokyn:
Podrobný popis činnosti vývojového diagramu a paměti: Po spuštění programu nastavíme do proměnné n počet pracovníků (n=5), tj. počet opakování cyklu. V podmínce 1 se ptáme, zda obsah počitadla cyklů n je větší, nebo rovné jedné. Protože n=5, což je větší než 1, postupně naplníme údaje o pracovníkovi č. 5 a5 2 Botek , b5 3 Karel , c5 4 25000 a v 5 nížíme hodnotu počitadla cyklů o 1. V n tedy bude hodnota 4. Budeme tedy plnit údaje o pracovníkovi č. 4. Vstupujeme opět do 1 a ptáme se, zda je počitadlo cyklu n větší, nebo rovné 1. Protože n = 4, je podmínka 1 splněna a projdeme opět tělo cyklu, nyní naplníme a4, b4, c4, snížíme n na 3 a jdeme na vyhodnocení podmínky 1, atd. V tomto případě počítač mění podle toho, kolik pracovníků máme ještě zpracovat. Jakmile jsme naplnili do počitadla cyklu n =1, data do proměnné a1, b1, c1 a snížili n o 1, máme v proměnné n zápornou hodnotu – 1, takže nás podmínka 1 vyvede z cyklu na A . Naposledy vytištěno 5.3.2013 8:55:00
35
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 36 -
Otázka: Co se stane, když zadáme n = 0? Stejným způsobem si můžete popsat činnost cyklu s podmínkou na konci cyklu v kapitole 2.4.2.
2 .4 .2
Cyklus s podmínkou na konci cyklu Vykonej příkaz (nebo blok příkazů) a pokud platí podmínka B, opakuj vykonání příkazu. Pokud podmínka B neplatí, odejdi z cyklu.
Opakuj A, dokud platí B
Tělo cyklu (A) se tedy v tomto případě. realizuje alespoň jedenkrát.
A -
B +
Opakování s podmínkou po skončení činnosti „A“
Úkol č. 5 Vypracujte vývojový diagram, který načte pro 5 pracovníků - Karel Botek, Jan Fila, Milan Staněk, Jan Šebek, Petr Malý hrubé mzdy. Popište činnost paměti a potřebné proměnné. Využijte cyklus s podmínkou na konci cyklu. Řešení: Z n, cn ….. celé číslo an, bn ….. řetězec znaků
Deklarace proměnných
Počet pracovníků n=5
5 n
A Pracovník příjmení
an
Pracovník jméno
bn
Hrubá mzda
cn
Fila a4
Karel b5
Jan b4
25000 c5
8400 c4
Staněk a3
Šebek a2
Milan b3
Jan b2
17000 c3
Malý a1 b1
10000 c2
Petr 9600
c1
do n ulož n - 1
n=4
n=3
n=2
n=1
n=0
n>0
4>0
3>0
2>0
1>0
n=0
ANO ALU
Botek a5
NE 1
Naposledy vytištěno 5.3.2013 8:55:00 36
1
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 37 -
Samostatná práce studenta: 1. Vypracujte metodický popis – podrobný popis činnosti vývojového diagramu a paměti – viz předešlý příklad. 2. Modifikujte rozhodovací blok tak, aby byli načteni jen tři pracovníci n > 3? 3. K čemu nám slouží počítadlo cyklů?
2 .4 .3
Cyklus s předem známým počtem opakování
V některých případech víme, kolikrát se bude cyklus opakovat. V takové situaci lze využít cyklus s předem známým počtem opakování. V tomto případě zadáváme na počátku cyklu počáteční hodnotu počitadla cyklu (v našem případě 1, horní mez, kterou když počitadlo dosáhne, cyklus skončí a krok, s nímž se počitadlo cyklu po průchodu cyklu změní. Pokud počítadlo cyklu nepřekročí horní mez (N), vykonávají se příkazy z těla cyklu (A) a připočítává se „krok“ k počítadlu průchodů cyklů.
počáteční hodnota počítadla cyklu
Pro i := 1 až po N s krokem ( ) opakuj A Začátek cyklu [1]
Podmínka na horní mez
i := 1, N, Činnost A
Tělo cyklu
Jakmile i překročí hodnotu horní meze N, cyklus končí a vývojový diagram pokračuje prvním příkazem za cyklem.
i := i + [2] krok Konec cyklu
Předešlé dva typy cyklů (s podmínkou na začátku a s podmínku na konci cyklu, začaly plnit od n=5, cyklus s podmínkou se známým počtem opakování plní počítadlo cyklů od n=1.
Cyklus s předem známým počtem opakování
Příklad: Vypracujte vývojový diagram, který načte pro 5 pracovníků - Karel Botek, Jan Fila, Milan Staněk, Jan Šebek, Petr Malý hrubé mzdy. Popište činnost paměti a potřebné proměnné. Vytvořte cyklus s využitím cyklu s předem známým počtem opakování. Řešení:
paměť Z n, cn , i….. celé číslo an, bn ….. řetězec znaků
Deklarace proměnných počítadlo cyklu
Počet pracovníků
n
krok je +1
i=1
1 i
horní mez počítadla cyklů i dolní mez počítadla
Nastavení dolní mez počítadla (1)
5 n
i 1
i = 1, n, 1
i 3
i 2
i 4
i 5
tělo cyklu
ANO Pracovník příjmení
ai
Pracovník jméno
bi
Botek a1 Karel b1
Hrubá mzda
ci i=i+1
Staněk a3
Fila a2
Milan
Jan b3
b2 25000 c2
2 i (= i + 1)
i
c3
Jan
i
b5
10000 c4
4
3
Malý a5
b4 17000
8400
c1
Šebek a4
9600 c5
5 i
Petr
6 i A
A
Co by se stalo, kdybychom dali krok = 2. Naposledy vytištěno 5.3.2013 8:55:00
37
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 38 -
Samostatná práce studenta 1. Vypracujte metodický popis – podrobný popis činnosti vývojového diagramu a paměti – viz předešlý příkaz.
2.5
Hardware a softwarové vybavení PC
Údaje (data) můžeme tedy ukládat do proměnné, která je ve vnitřní paměti počítače. Na následujícím obrázku je ukázka elektronického prvku, paměti:
Obr. č. …: Operační paměť Zdroj: [27]
Protože dnešní doba si žádá uložení ohromného množství dat (mluvíme o kapacitě paměti), můžeme k počítači připojit externí, výměnnou paměť. Ty se vyrábí ve formě a) harddisků
Obr. č. …: Hard disk Zdroj: [28]
Obr. č. …: Hard disk Zdroj: [29]
b) Flesh disku
Obr. č. …: Flesh disk Zdroj: [30] Obr. č. …: Flesh disk Zdroj: [31]
Kapacitu těchto pamětí klasifikujeme podle počtu bytů v: Kilobitech Naposledy vytištěno 5.3.2013 8:55:00 38
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 39 -
Megabytech Gigabytech Terabaytech Paměti členíme na paměti typu ROM a RAM. Paměti ROM:
Obr. č. …: Paměť ROM Zdroj: [32]
Obr. č. …: Paměť ROM Zdroj: [33]
Paměti RAM:
Obr. č. …: Paměť RAM Zdroj: [34]
Obr. č. …: Paměť RAM Zdroj: [35]
Ukázka U von Neumannovo schématu jsme si ukázali, že vnitřní paměť slouží k ukládání jak programů (posloupnost příkazů, které řeší náš vývojový diagram a zpracovává naše data), tak i dat. Kapacita vnitřní paměti je ovšem omezená. Moderní počítače jsou elektronické, digitální (jejich práce je určována tzv. hodinami) a jsou řízeny jedním, nebo více procesory. Procesor a hodiny jsou elektronické obvody, vyráběné ve formě elektronického prvku. Připojíme li elektronický prvek vnitřní paměť, vnější paměť ve formě CD disku, flopy disku, atd., mluvíme o „hardware“.
Obr. č. …: Procesor Zdroj: [36]
Naposledy vytištěno 5.3.2013 8:55:00
39
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 40 -
zdroj
chladič s procesorem
operační paměť RAM
grafická karta
základní deska
hard disk Obr. č. …: Odkrytované PC (case) Zdroj: [37] http://zh.wikipedia.org/wiki/File: PC_case_modified.jpg
Externí, výměnné paměti používáme na tzv. zálohování dat a programů. Zálohováním data chráníme svá data proti ztrátě. Je to vytvořená kopie našich dat, která je uložena na jiném datovém nosiči (CD, DVD, externí hard disk) nebo i jiném místě. Záložní data využijeme v případě ztráty nebo poškození originálních dat. Hardware je nefunkční bez „software“. K software patří především: • • • •
Operační systém Uživatelské programy Ochranný systém proti virům atd.
Operační systém
Operační systém zahájí činnost v okamžiku, kdy stlačíme tlačítko ON. Operační systém zahájí činnost všech částí počítače: procesoru, klávesnice, paměti, display. •
Uživatelské programy
V další fázi si uživatel zvolí aplikaci, se kterou chce zpracovat. Toto může učinit dvěma způsoby: 1) Zvolením programu na ploše obrazovky. 2) Zvolením programu pomocí nabídky start.
Obr. č. …: Zvolení aplikace na ploše
Naposledy vytištěno 5.3.2013 8:55:00 40
Obr. č. …: Výběr aplikace pomocí nabídky start
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 41 -
Tyto aplikace mají standardní obsah. Pokud si potřebujete zpracovat na počítači svůj problém a svůj vývojový diagram, můžete si zakoupit programy, které mohou plnit Vaše individuální programy (Pascal, C++, PHP atd.). Po jejich instalaci můžete váš vývojový diagram do programu převést do programu. Ten přeložíte do řeči počítače (jedničky a nuly) pomocí překladače a následně jej můžete opakovaně spouštět a využívat. O tom až později.
2.6
Ochranný systém proti virům
Počítač je třeba chránit proti tzv. virům Počítačový virus je malý softwarový program, který se šíří z jednoho počítače do druhého a překáží provozu počítače. Počítačový virus může poškodit nebo odstranit data v počítači, pomocí e-mailového programu se rozšířit do dalších počítačů, nebo dokonce odstranit celý obsah pevného disku. Počítačové viry se nejsnáze šíří prostřednictvím rychlých zpráv nebo příloh e-mailových zpráv. Proto nikdy neotevírejte přílohu e-mailu, pokud nevíte, kdo vám zprávu odeslal, nebo pokud přílohu e-mailu nečekáte. Počítačové viry mohou být maskovány jako přílohy obsahující vtipné obrázky, pohlednice nebo zvukové soubory či soubory videa. Počítačové viry se také šíří při stahování z Internetu. Počítačové viry se mohou skrývat v nelegálním softwaru či v jiných souborech nebo programech, které stáhnete. [39] Druhým způsobem, jak se viry dostanou do počítače z e-mailu je, že se spustí samy. Ano, něco podobného je za určitých okolností opravdu možné! Viry totiž mohou využívat (a využívají) různé bezpečnostní chyby v operačním systému, poštovním klientovi či dalších aplikacích k tomu, aby mohly provádět úkony, které za normálních okolností nemohou vykonat. Elektronická zpráva s virem pak přijde do počítače, a pokud tento obsahuje některou bezpečnostní chybu, dojde k samočinnému spuštění souboru uloženého na příloze (tedy viru). Záplaty vám boj usnadní Obrana proti bezpečnostním chybám je velmi jednoduchá, přesto ji bohužel většina uživatelů zanedbává. Většina výrobců programů totiž pravidelně uvolňuje „AKTUALIZACE“, s jejichž pomocí je možné tyto nedostatky průběžně odstraňovat. Tyto jsou k dispozici zpravidla zdarma na internetu – v případě nejrozšířenějšího operačního systému na stránce windowsupdate.microsoft.com „Aktualizace Windows“. Používejte antivirový program, a co nejčastěji k němu stahujte aktuální virovou databázi. Přitom si ale uvědomte, že antivirový program není všelékem, který vyřeší všechny problémy a který Vám umožní dělat ve světě počítačů beztrestně naprosto vše. Rozhodně klaďte důraz na výše popsanou prevenci a s antivirovým programem počítejte spíše jako se „záchrannou brzdou“ v nouzi nejvyšší. Věta na závěr, všeho moc škodí, je vhodné mít nainstalovaný pouze jeden Antivirový program, nikoliv 2 nebo více, PC by byl velmi zpomalený (veškeré kontroly by se prováděly dvakrát či vícekrát). [40]
2.7
Shrnutí
Počítače používáme nejen na řešení matematických problémů, ale také na řízení výroby, procesů, zpracování ekonomických dat, analytické rozbory atd. Řešení těchto problémů zpracovává manažer, nebo ekonom tak, že si nejprve definuje, co od řešení očekává (jaké výstupy), analyzuje vstupy a vstupní a výstupní podmínky a nakonec si nakreslí postup řešení, tzv. vývojový diagram. Vstupní data jsou uchovávána v paměti v tzv. proměnných. Operace s těmito daty provádíme jako operace s proměnnými. Pojem „proměnná“ proto, že do takto označeného místa v paměti můžeme vkládat různá data. Vývojový diagram tedy člověku přirozeným způsobem popisuje jednotlivé kroky řešení problému. Ve vývojových diagramech je třeba používat standardizované značky tak, aby byly zřejmé každému specialistovi z oboru. Při řešení úkolů z oblasti zpracování dat převádíme vývojové diagramy Naposledy vytištěno 5.3.2013 8:55:00
41
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 42 -
do některého programovacího jazyka. Data můžeme v paměti ukládat do vymezené oblasti, kterou nazýváme „databáze“.
2.8 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Otázky K čemu nám slouží počítače? Popište vývoj technologií na zpracování informací. Co to je program? Popište von Neumannovo schéma počítače a jeho jednotlivé části Jak spolupracuje řadič instrukcí a paměť? Kde se ukládají vstupní data – co to jsou V – V operace? Co to je paměť? Co to je proměnná? Co to je vývojový diagram? Jaké značky užíváme ve vývojových diagramech Co to je cyklus a jaké druhy vývojových diagramů pro cyklus znáte? Popište postup řešení problému (zadání, vývojový diagram, řešení). Vysvětlete, jak použijete vývojový diagram pro řešení úkolů manažera. Vysvětlete, jak použijete vývojový diagram ve své práci. Co to je uměla inteligence? Nakreslete vývojový diagram pro výpočet průměru tří čísel. Výsledek vytiskněte. Nakreslete vývojový diagram pro Váš jeden den. Co to je a k čemu slouží vnitřní paměť? Proč musíme používat vnější (externí) paměť? Jaké typy externí paměti dnes používáte? Co to je kapacita paměti? V čem měříme velikost (kapacitu) paměti? Jakou funkci má paměť ROM a jakou RAM? Co to je procesor? Co to jsou hodiny Jaký typ externí paměti je vhodný na zálohování dat?
Jakým způsobem si zálohujete data Vašeho počítače? 28. Jak si zálohují data vaši spolupracovníci?
Naposledy vytištěno 5.3.2013 8:55:00 42
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
3
- 43 -
Přepis vývojového diagramu do programovacího jazyka „C“
Jakmile se rozhodneme řešit nějakou úlohu s využitím programovacího jazyka „C“, postupujeme v následujících krocích: Zadání
Vývojový diagram
Přepis do jazyka „C“
Překlad programu
Editor .c (zdrojový soubor)
Překladač (kompilátor .obj) (cílový soubor)
Připojení externích knihoven
Spuštění programu
Sestavovací program (Linker) .exe Spustitelný soubor
Jak popsat řešený problém vývojovým diagramem již známe. Nyní je třeba zvládnout dovednost přepsat vývojový diagram do jazyka „C“, umět jej přeložit, připojit externí knihovny, spustit a uložit. Přepis vývojového diagramu do programovacího jazyka „C“ prochází následujícími technologiemi. Editor – používá se na zápis vývojového diagramu do zdrojového kódu daného jazyka. Výstupem je Zdrojový soubor (source file) je textový soubor, vypracovaný v klíčových slovech jazyka „C“. Překladač (kompilátor) – přeloží program. Výstupem překladu je soubor s příponou obj. Linker (sestavovací program) - připojí k cílovému soubor externí
3.1
Struktura programu v jazyce „C“
Program v jazyce „C“ zapisujeme prostřednictvím následujících klíčových slov: asm, auto, break, case, sdesl, char, const, continue, default, do, double, else, enum, extern, far, float, for, goto, huge, if, int, interrupt, long, Nera, pascal, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unisgned, void, volatile, while. Tato klíčová slova se píší malými písmeny a nesmí se jinak, než jako klíčová slova použít. Program začíná tzv. hlavičkovým souborem Hlavičkový soubor slouží k tomu, aby program mohl využít externích knihoven funkcí, například funkce pro načtení údajů z klávesnice, nebo funkce pro výpis dat na obrazovku (tzv. systém Input/Output, parametr stdio.h.). Tyto soubory využívá překladač a mají příponu .h. Knihovny připojuje překladač direktivou kompilátoru # include <>. Ta říká kompilátoru, aby načetl externí soubor a včlenil jej do předkládaného programu. #include <stdio.h> není příkaz. Je to instrukce pro překladač jazyka C. Proto se za ni nepíše středník. Program v „C“ jazyce se skládá z jedné, nebo více funkcí. Funkce může mít libovolné jméno. Jméno funkce se skládá z velkých a malých písmen, číslic 0 – 9 a podtržítka a nesmí začínat číslicí. Jazyk „C“ rozlišuje malá a velká písmena. Hlavní funkce, která je pro program vždy povinná, je identifikována klíčovým slovem main( ). Funkce main znamená začátek realizace programu. Když se program v jazyku „C“ spustí, začne tedy funkcí main a v ní postupně plní příkaz za příkazem.(Postupnou realizací příkazů organizuje řadič – viz von Neumanowo schéma). Ani za main ( ) se nedělá středník.
Naposledy vytištěno 5.3.2013 8:55:00
43
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 44 -
Funkce main obsahuje příkazy. Ty jsou umístěny mezi { }. Konec této funkce znamená ukončení práce programu. Obecně tedy můžeme strukturu programu „C“ v nejjednodušší variantě napsat: main( ) { příkazy; }
Jedno z klíčových slov je prinntf( );. Příkaz printf("text"), vypíše ve své nejjednodušší variantě na obrazovku text, který je umístěn v závorce mezi apostrofy. S dosavadní znalostí již můžeme napsat první, jednoduchý program v „C“ , jehož úkolem je vypsat text "Vypis rocni uzaverky" na obrazovku: #include<stdio.h>
vyvolání externí knihovny I/0 – hlavičkový soubor
main( )
hlavní funkce
{ printf("Vypis rocni uzaverky");
výpis textu v uvozovkách na obrazovku
}
Program aktivuje příkazem #include<stdio.h> knihovnu I/O, aby mohl program vypsat na obrazovku text "Vypis rocni uzaverky". Hlavní funkce začíná systémovým slovem main ( ), mezi závorkami { } je příkaz printf("…."); k vypsání textu na obrazovku („Vypis rocni uzaverky“), který je umístěný mezi uvozovkami. Vytvořili jsme tedy jednoduchý program a nyní potřebujeme tento program zapsat do prostředí C++. To se naučíme v dalším textu.
3.2
Jak napsat program v prostředí Dev-C++
Vlastní psaní programu je velice podobně, jak kdybychom pracovali v programu Word. Nejprve musíme otevřít toto prostředí. Program je nutné do počítače nejprve nainstalovat. 1. Na ploše obrazovky klikneme na ikonu Po tomto kliknutí se otevře se obrazovka aplikace – viz obr. č. 1
Naposledy vytištěno 5.3.2013 8:55:00 44
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 45 -
2. V horní liště vybereme záložku „Soubor“ „Nový“ Objeví se obrazovka, do které již můžeme psát program
„Zdrojový kód“
Vlastní program budeme psát s využitím anglické klávesnice. Musíme respektovat malá a velká písmena. Zápis #include je ve verzi #include chybný. Dále budeme používat pro psaní speciálních znaků (musíme mít zapnutu anglickou klávesnici) tzv. klávesové zkratky: { shift + ú > shift + . } shift + ) < shift + , * shift + 8 “ shift + § POZOR: & shift + 7 “ shift + § V závislosti na typu klávesnice musíte tuto ) shift + % # shift + 3 tabulku modifikovat. ( shift + 0
3. Do prázdného okna napíšeme program.
Naposledy vytištěno 5.3.2013 8:55:00
45
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 46 -
4. Napsaný program musíme uložit. V horní liště si vybereme záložku „Soubor“ „Uložit jako“. Do rámečku „Název soubor“, vybereme místo na disku, kde chceme soubor uložit. Proto napíšeme jméno souboru (např. priklad1), které chceme použít. Nesmíte zapomenout za toto jméno přidat „.c“ (priklad1.c) Pod tímto názvem budeme program vyvolávat. Doporučujeme, abyste si ve svém adresáři udělali adresář pro programy v jazyku C.
Na obrazovce se objeví původní obrazovka na níž můžeme napsat program v „C“, který bude uložen pod názvem „priklad1.c“ Pozor – přípona .c je povinná!
5. Po napsání celého programu, musíme zkontrolovat jeho syntaxi zadaného kódu (správnost „Zkompilovat“. programu). V horní liště klikneme na záložku „Spustit“
Naposledy vytištěno 5.3.2013 8:55:00 46
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 47 -
Program provede kontrolu správnosti a úplnosti a zobrazí obrazovku, kde uvidíme, v případě správně zapsaného programu obrazovku s nulovým počtem chyb. Pokud tomu tak je, podokno zavřeme. Pokud je v programu chyba, je řádek s chybným údajem zabarven. Chybu opravíme přepsáním chybných údajů a znovu program zkompilujeme.
Jestliže se při kompilaci nezobrazí žádná chyba, můžeme okno zavřít a program spustit. V horní liště vybereme záložku „Spustit“ „Spustit“. Program se spustí a provede svou činnost.
V následující části textu se naučíme přepsat vývojový diagram do jazyka „C“ v prostředí DevC++. Budeme využívat editor, klíčová slova jazyka „C“ a výstupem naší práce bude zdrojový soubor s příponou .c.
3.3
Úvod do syntaxe jazyka „C“
V další části se budeme učit užívat příkazy programového jazyka C na jednoduchých aplikacích – příkladech. Nejjednodušší úkol je vypsat text na obrazovku. Pozor: V následujícím textu musíte respektovat malá a velká písmena. Klíčová slova musí být malými písmeny, PAUSE s příkazu systém ("PAUSE") musí být velkými písmeny. Je velký rozdíl mezi proměnnou, která se jmenuje „mzda“ a proměnnou „MZDA“, atd.
Naposledy vytištěno 5.3.2013 8:55:00
47
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 48 -
Nejjednodušší varianta programu C je main( ) {příkazy};
Pokud ptřebujeme pracovat se vstupy a výstupy: #include<stdio.h> main( ) {příkazy};
……………………hlavičkový soubor
Existují i další knihovny např.: math.h – všechny matematické funkce (goniometrické, kvadratické, exponenciální, logaritmické a zvláštní) vyžadují, aby program obsahoval hlavičkový soubor math.h.
Příklad č. 1 Zadání: Napište na obrazovku počítače text„Výpis roční uzávěrky“ . Metodický pokyn: 1. Spusťte DEV++ 2. Vyberte záložku Soubor nový 3. Vyberte záložku Zdrojový kód 4. Přepněte počítač na anglickou klávesnici 5. Napište program 6. V horní liště vyberte záložku Soubor uložit jako Uložte tento program: př. priklad1.c (vyberte si místo, kam chcete program uložit) 7. V horní liště vyberte nabídku Spustit kompilovat Nyní probíhá kontrola, zda je správný syntax. Jeli správně, objeví se.
8. V horní liště vyberte nabídku Spustit Program proběhne.
spustit
K tomu, aby program uměl přečíst údaje z klávesnice a uložit jej do proměnné v počítači potřebujeme ovládací program. Ten je uložen v tzv. knihovně vstup/výstup (I/O). Tuto knihovnu připojujeme příkazem #include <stdio.h>. Pro tisk textu na obrazovku máme k dispozici příkaz prinntf("text"); za kterým musí být středník. Text v uvozovkách se na obrazovku přenese. V tomto programu nepoužíváme žádné proměnné
Naposledy vytištěno 5.3.2013 8:55:00 48
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 49 -
Řešení: Vývojový diagram
Zápis v jazyku „C“
Popis příkazů
Z
Vyvolej knihovnu I/0
#include <stdio.h> main () { printf("vypis rocni uzaverky");
„Výpis roční uzávěrky“
načtení I/0 knihovny hlavní funkce programu začátek hlavní funkce programu tisk textu v uvozovkách na obrazovku
} K
konec hlavní funkce programu
Pozn.: obrazovka s textem pouze problikne, protože program po jeho vykonání zápisu na obrazovku se ukončil a obrazovku smazal. Abychom program zastavili po vypsání textu „Výpis roční uzávěrky“ na obrazovku, potřebujeme do programu doplnit příkaz na zastavení programu.
Popis nově použitých klíčových slov: Printf – příkaz, který text v uvozovkách vystaví na obrazovku. Program lze zapsat též ve zkrácené formě #include <stdio.h> main (){printf("vypis rocni uzaverky");}
Pozn.: Studenti často zapomínají, že doplněný program musí vždy zkompilovat a uložit s koncovkou .c
Úkol: Spusťe znovu (lze pořád dokola) - buď v C++ - nebo na místě, kde jste původní program uložili se vytvořitl soubor s příponou exe a ten lze kdykoliv spustit
Příklad č. 2: Zadání: Napište na obrazovku záhlaví Vašeho budoucího programu „Vypis rocni uzaverky“ a tento nápis ponechte zobrazený na obrazovce (program je třeba po vypsaní textu na obrazovku zastavit) příkazem system("PAUSE"); Metodický pokyn: Programu č. 1 tedy doplníme příkazem na zastavení programu, znovu zkompilujeme a spustíme.
Naposledy vytištěno 5.3.2013 8:55:00
49
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 50 -
POZOR – studenti v tomto bodě často dělají další chybu v tom, že neuzavřou obrazovku předešlého řešení, program zůstane spuštěný. Pak nelze znovu program kompilovat. Proto stiskneme libovolnou klávesu a obrazovka se automaticky vypne. Řešení: Vývojový diagram
Zápis v jazyku „C“
Popis příkazů
Z
Vyvolej knihovnu I/0
Vypis rocni uzaverky
zastav
K
#include <stdio.h> main () { printf("vypis
rocni uzaverky");
načtení I/0 knihovny hlavní funkce programu začátek hlavní funkce programu tisk textu v uvozovkách na obrazovku
system("PAUSE");
program se zastaví a na obrazovku vypíše „Pokračujte stisknutím libovolné klávesy“. Činnost programu se obnoví stlačením kterékoliv klávesy.
}
konec hlavní funkce programu
zkrácené verzi: #include <stdio.h> main (){ printf("vypis rocni uzaverky"); system("PAUSE");} Program provede činnost a zobrazí:
Popis nově použitých klíčových slov: systém ("PAUSE"); zastaví program a na obrazovku vypíše „Pokračujte stisknutím libovolné klávesy ….“ na to místo, kde stojí kurzor (tedy na stávající text). "PAUSE" musí být velkými písmeny. „systém“ malými písmeny. Pozor: Opět uzavřete předešlý program (černou obrazovku), stlačením libovolné klávesy.
Příklad č. 3: Zadání: Zajistěte, aby se text „Pokračujte stisknutím libovolné klávesy“ v příkazu systém ("PAUSE"); vypsal na nový řádek. Využijte příkaz printf("\n");
Naposledy vytištěno 5.3.2013 8:55:00 50
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 51 -
Metodický pokyn: Nedostatkem tohoto programu je, že se komentář v systému ("PAUSE") – „Pokračujte stisknutím
libovolné klávesy…“ napíše ihned za náš text „Vypis rocni uzaverky“. Potřebujeme příkaz, který oba texty oddělní tak, že text „Pokračujte stisknutím libovolné klávesy….“ napíše na nový řádek. Takový příkaz je \n, např. v příkazu printf("\n"); viz Příklad č. 3. Doplňte si příkaz printf("\n"); Zkompilujte. Spusťte.
Z
Vyvolej I/0
#include <stdio.h> main () {
Výpis roční uzávěrky
printf("vypis rocni uzaverky");
printf("\n");
Přechod na nový řádek
system("PAUSE");
Čekání na stisk klávesy
K
přesun kurzoru na nový řádek
}
Na obrazovce se objeví:
Program provede příkazy a zobrazí:
Naposledy vytištěno 5.3.2013 8:55:00
51
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 52 -
Popis nově použitých klíčových slov: \n v příkazu printf zajistí přechod kurzoru na další řádek \a v příkazu printf( ) způsobí signál – alarm. – tzv. zvonek Př.: Následující program vyvolá zvonek: #include <stdio.h> main () { printf("\a");}
Vypracujte jako příklad 1b 1. Soubor – nový- zdrojový kód 2. Přepište program main () { printf("\a");}
3. Zkompilujte 4. Spusťe Pozn.: Na \ není zkratková klávesa, je zobrazeno přímo na klávesnici. Zkompilujte, spusťte a zdůvodněte, proč je program funkční, i když jsme vypustili #include <stdio.h>
Zvukový signál používáme na upozornění obsluhy, že má něco udělat. Například zadat vstupní údaj.
Samostatná práce studenta: 1. Co udělá zápis main () { printf("\a");}
2. Vypracujte program, který spustí zvonek 5x.
Ukázka chyby v syntaxu v programu V průběhu překladu programu si překladač průběžně kontroluje, zda při vytvoření zápisu programu neudělal programátor chybu. Pokud ano, sdělí mu, že v programu je chybný zápis. Upravte si program č. 3, smažete uvozovky v
Chybový zápis #include <stdio.h> main () { printf("vypis rocni uzaverky); 1 printf("\n");
1
Opravený zápis #include <stdio.h> main () { printf("vypis rocni uzaverky"); printf("\n"); system("PAUSE");
system("PAUSE"); }
Naposledy vytištěno 5.3.2013 8:55:00 52
}
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 53 -
Proveďte kompilaci. Při kontrole programu, se (výběr záložky „Spustit“ „Zkompilovat“) se objeví obrazovka s hlášením chyby. Program zvýrazní řádek, na kterém se chyba nalézá. Chybu opravíme (viz opravný zápis výše) a program znovu zkompilujeme, v případě, že jsme opravili správně a další chybové hlášení se neobjeví, můžeme program spustit.
Nyní již program proběhne bez chybového hlášení. Pokud jste zapomněli středník, ukáže chybové hlášení obvykle na následující řádek za příkazem, v němž je chyba.
Deklarace proměnných Doposud jsme nevyužívali proměnné, pouze příkaz printf( ); Pokud chceme psát program, který proměnné používá, musíme je deklarovat. Na tomto místě jen zjednodušeně rozšíříme znalosti o deklaraci proměnných a přiřazení hodnot. Konstatovali jsme již, že data ukládáme do proměnných. Proměnná je pojmenovaná část paměti, do níž můžeme ukládat různé hodnoty. Proměnné musí být před použitím deklarované. To znamená, že musíme programu říci, co lze do dané proměnné (daného místa v paměti) ukládat a jaké operace jsou s takovým údajem dovoleny. Než začneme psát program, musíme promyslet, které proměnné budeme používat s ohledem na vstupní a výstupní data a potřebné zpracování problému. Pro deklaraci (definici) proměnné používáme příkaz
Paměť
typ jméno – proměnné; př.: int x;
x Pozn.: do této proměnné mohu ukládat jen celá čísla
Opakujeme, že deklarace proměnné říká překladači, o jaký typ proměnné jde a tedy i kolik místa je pro ni v paměti potřeba a jaké operace s proměnnou můžeme dělat. Programovací jazyk „C“ má pět typů proměnných:
Naposledy vytištěno 5.3.2013 8:55:00
53
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 54 -
Typ
Klíčové slovo
znak (8 bitů)
char
celé číslo se znaménkem
int
desetinné číslo s pohyblivou řádovou čárkou
float
desetinné číslo s pohyblivou řádovou čárkou s dvojnásobnou přesností
double
bez hodnoty
void
Proměnná char je 8 bitů dlouhá a slouží pro uložení jednoho znaku. Celočíselná proměnná typu int může obsahovat celá čísla (bez desetinné části) se znaménkem. V paměti zabere 16 bitů a může obsahovat hodnoty v rozmezí – 32 768 až + 32 767. Pozn.: Ve 32 bitových systémech od – 2 147 483 až + 2 147 483 697. Proměnné typu float a double obsahují hodnoty s pohyblivou řádovou čárkou, které mohou mít desetinnou část. Float a double se liší tím, že double umožňuje ukládat čísla s dvojnásobným počtem desetinných míst. Deklarace proměnných se nachází v úvodní části programu, za …. {
Příklad deklarace proměnných a, b, c typu double: # include <stdio.h>
bude využívána knihovna vstupu, výstupu
main( ) {
začátek hlavní funkce
double
a, b, c;
do proměnné a, b, c můžeme ukládat čísla s desetinnou čárkou
příkaz 1; příkazy, které realizují naši úlohu příkaz 2; }
konec hlavní funkce
Jak naplníme proměnnou Abychom mohli s proměnnou pracovat, potřebujeme do proměnné naplnit data. Dosáhneme toho buď tzv. přiřazením hodnoty přiřazovacím příkazem, nebo načtením hodnoty z klávesnice.
Naposledy vytištěno 5.3.2013 8:55:00 54
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 55 -
Přiřazovací příkaz Abychom mohli do proměnné vložit hodnotu, máme v jazyku „C“ k dispozici přiřazovací příkaz: Jméno_proměnné = hodnota; Př: Uložte do proměnné MZDA hodnotu 24 000. Př.: int MZDA; ……………….vytvořili jsme proměnnou „mzda“, do níž lze ukládat jen celá čísla . MC . . 24000 . . MZDA . MZDA = 24000;…………. do proměnné „mzda“ jsme uložili hodnotu 24000. (pozn. v hodnotě ukládané do číselné proměnné nesmí být mezera) Tento příkaz vloží v paměti do proměnné na místo proměnné MZDA hodnotu 24000. Tuto hodnotu můžeme dále využívat. Pozn: Také v příkazu printf( ); musíme proměnnou definovat. Následující příkaz přiřazení uloží do proměnné a hodnotu 20. Ukážeme si, co by udělal v této situaci příkaz printf("a=",a), když mu nesdělíme, o jaký typ proměnné se jedná. # include <stdio.h> main ( ) { int a; a=20;
printf("a=",a); systém("PAUSE"); }
Vývojový diagram Z
Deklaruj a
a = 20;
"a=",a Zastav
K
Naposledy vytištěno 5.3.2013 8:55:00
55
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 56 -
Tento příkaz sice nehlásí v kompilátoru chybu, ale nevypíše „20“ na obrazovku. Doděláme tedy v příkazu printf( ) deklaraci proměnné a zápisem %d: #include <stdio.h> main () { int a; a=20; printf("a=%d",a); system("PAUSE"); }
printf("a=%d",a);
1
Program provede příkazy a zobrazí:
Samostatná práce studenta: Místo příkazu
1 napište printf("a=%d\n",a);, kompilujte, spusťte a popište rozdíl oproti předešlému programu.
Komentáře Často je pro přehlednost programu užitečné vkládat komentáře. Komentář je poznámka, kterou vložíme do zdrojového kódu programu. Překladač ji však ignoruje, takže poznámka nevyvolá žádnou činnost. Program se potom lépe čte.
Syntaktický zápis komentáře:
/*komentář*/
, nebo //komentář.
Druhá varianta však může být použita, když komentář nepřesáhne daný řádek
Za komentářem se nedělá středník. Př. Otevřete si zdrojový kód k příkladu č. 3 a ke každému řádku při komentář. Uložte tento program s komentářem, zkompilujte a spusťte. Uvidíte, že text napsaný jako komentář se na obrazovce neobjeví.
Naposledy vytištěno 5.3.2013 8:55:00 56
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 57 -
Řešení: # include <stdio.h> /*připojení knihovny I/O*/ main ( ) /*hlavní funkce*/ { printf ("Vypis rocni uzaverky"); /*výpis na obrazovku*/ } //konec hlavní funkce main*
Program zkompilujeme, spustíme a vidíme, že na obrazovku vypíše pouze text „Vypis rocni uzaverky“ a komentáře ignoruje. Když se později vrátíme ke zdrojovému textu, rychle zjistíme, co v které části řešíme. Popis nových příkazů: Přiřazovací příkaz: c = a + b; Použití operátoru + pro sečtení hodnot Pozn: Čteme a + b vlož do c.
Paměť MC: - typ celé číslo a
- typ celé číslo
b
c
+
- typ celé číslo
U příkazu printf ("%d + %d = %d / n ", a, b, c); v pozici, kde se nachází znak % s datovým typem, se doplní názvy proměnné, které stojí v druhé části příkazu, v příslušném pořadí. Př: a=20; b=30; printf("%d + %d = %d / n ", a, b, c);
realizuje součet a + b = 20 + 30 tj. 50 a vytiskne jej a přejde na nový řádek.
Samostatná práce studenta: 1. Upravte předešlé zadání tak, aby program provedl výpočet rozdílu obou čísel. 2. Nadpis Program na součet dvou čísel z Příkladu č. 5 oddělte od dalšího textu na monitoru o 10 řádků. 3. Co se vypíše na obrazovku, pokud spustíme program: #include <stdio.h> main () { printf("jedna\n dve\n tři\n čtyři"); system("PAUSE"); }
4. Po spuštění programu se vypíše výpis na obrazovku a vše se smaže. Jak dosáhnete toho, aby text zůstal na obrazovce?
Vstup dat z klávesnice do programu V předešlém textu jsme se naučili jak přesunout informace na obrazovku a naplnit proměnné s využitím přiřazovacího příkazu. Nyní se naučíme, jak realizovat jiný způsob vstupu dat do našeho Naposledy vytištěno 5.3.2013 8:55:00
57
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 58 -
programu. V nejjednodušším případě čteme data z klávesnice a ukládáme je do proměnné paměti. Každá proměnná z paměti musí mít své jméno a musí mít deklarací určeno, jaký typ dat do ní lze načíst. Potřebujeme-li například pracovat s konkrétními mzdami pracovníků, je třeba nejprve zadat jména pracovníků, jejich hrubé mzdy a následně lze z těchto údajů vypočítat odvody a vypsat výstupní sestavu na obrazovku. Příkaz pro načtení dat z klávesnice do proměnné a má tvar:
scanf ("% t", & jméno_proměnné);
Pozor: Značka & se používá jen u číselných datových typů.
t … typ proměnné & ….. označení názvu proměnné V tomto příkazu to, co stojí za %, definuje typ proměnné (co do ní lze vkládat). To, co stojí za & je jméno proměnné, které se definování typu v "%d" týká. %d … čtení celého čísla %c … čtení jednoho znaku %e … čtení čísla s pohyblivou řádovou čárkou %f … čtení čísla s pohyblivou řádovou čárkou %g … čtení čísla s pohyblivou řádovou čárkou %s … čtení řetězce
(1)
To co stojí za & je jméno proměnné. Uveďme dva příklady př.: int cislo; scanf ("% d", &cislo);
MC 24000 cislo
"% d" říká, že do proměnné číslo lze z klávesnice načíst jen celé číslo, v souladu s deklarací.
př.: float podil; . . . scanf ("%f", &podil);
Deklarace int číslo, říká, že do proměnné číslo lze vkládat jen celá čísla. To musí respektovat všechny následující příkazy.
MC
Deklarace float podíl, říká, že do proměnné podíl lze vkládat čísla s desetinnou čárkou.
10.1 podíl
"%f" říká, že do proměnné podíl lze z klávesnice načíst číslo s desetinnou čárkou v souladu s deklarací. Pokud chceme obsah proměnné načtené příkazem scanf ( ) zobrazit na obrazovku, musíme v souladu s (1) popsat proměnnou také v příkaze printf ( ), např. v základním stavu printf("%d", a);
je a typu int. Plnění a tisk hodnoty proměnné a můžeme zobrazit jako: MC
a
Obr. č. ……….: Načtení a zobraze proměnné
Naposledy vytištěno 5.3.2013 8:55:00 58
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 59 -
Příklad č. 4 Zadání: Převeďte vývojový diagram pro načtení hrubé mzdy pracovníka Kotka do proměnné „mzda“ a následně zobrazte na obrazovku „hruba mzda pana Kotka je 18 500“. Použijte příkaz scanf( ) a printf( ). Metodický pokyn: V tomto případě potřebujeme využívat knihovnu I/O jak pro načtení, tak i pro výstup údajů. Řešení: Vývojový diagram
Zápis v jazyku C
Popis příkazů
Z
Načtení knihovny i/0
řadič
Deklarace proměnné
#include <stdio.h>
načti knihovnu I/0
main () {
hlavní funkce
int
deklarace proměnné - mzda je celé číslo
mzda;
„zadej hrubou mzdu pana Kotka“
printf("zadej hrubou mzdu pana tisk textu “Zadej hrubou mzdu pana Kotka“ na obrazovku Kotka:");
Načti hrubou mzdu pana Kotka do proměnné „mzda“
scanf ("%d",&mzda);
načtení hodnoty do proměnné mzda
printf("hruba mzda pana Kotka je:%d\n",mzda);
tisk textu „hruba …..“ + hodnota proměnné
system("PAUSE");
zastavení programu
Tisk „hruba mzda pana Kotka je“; mzda
K
přechod na nový řádek
}
18500
MC proměnná mzda je typu integer
vytiskne
mzda
Naposledy vytištěno 5.3.2013 8:55:00
59
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 60 -
Barevně jsme ukázali, jak byla proměnná mzda nejprve deklarována (int mzda;) a následně používána v souladu s touto deklarací (např. scanf ("%d",&mzda); a printf( ) i).
Po spuštění programu, program provede operaci a zobrazí se:
Popis nově použitých klíčových slov:
scanf ( ) – načtení vstupní hodnoty do programu printf ( ) – vystavení proměnné na obrazovku
Naposledy vytištěno 5.3.2013 8:55:00 60
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 61 -
Příklad č. 5 Zadání: Vypracujte vývojový diagram, popište činnost paměti a převeďte vývojový diagram do jazyka „C“ pro následující úkol: Načtěte dvě celá čísla z klávesnice, sečtěte je a na monitor vypište výstupní sestavu: Program na součet dvou čísel „a =“ …… „b =“ …… a, „ + “, b, „=“, c Metodický pokyn: Toto zadání má demonstrovat použití přiřazovacího příkazu a podrobnější syntax příkazu printf( ). Před zahájením práce na vývojovém diagramu si musíme vyřešit, které proměnné a jakého typu budete potřebovat (co do nich budeme ukládat). V našem případě to jsou proměnné a, b, c, do kterých ukládáme celá čísla (varianta A), proto je deklarace int a, b, c; Typ v deklaraci int a, b, c musíme potom respektovat v příkazech scanf ( ), printf ( ), přiřazení, atd. Příkaz #include <stdio.h> vyvolá knihovnu I/O, která organizuje přenosy dat ve scanf( ) a printf( ). Řešení: Varianta a: Použijeme přiřazovací příkaz c = a + b Vývojový diagram
1
a v příkazu
Proměnné paměti
2
vytiskne jako výsledek c.
Zápis v jazyku C
Z #include <stdio.h> main () { int a,b,c;
Vyvolání knihovny I/O
MC
Deklarace proměnných
a
Načtení a
printf("zadej a:"); scanf("%d",&a);
Načtení b
printf("zadej b:"); scanf("%d",&b);
a
b b
1
c=a+b;
a+b
c=a+b
c
“a“ =; a
printf("a=%d\n",a);
“b“ =; b
printf("b=%d\n",b); printf("c=%d\n",c);
“c“ =; c
1
Tisk
na obrazovku potřebujeme vystavit, kterou proměnnou budeme plnit.
2
3
printf("%d+%d=%d\n",a,b,c);
a; “+“; b “=“;c
2
system("PAUSE");
} co máme udělat
K
s čím to máme udělat
2
Pozn.:
1 v printf říká, že máme načíst proměnnou typu a je typu integer ("%d") 2 v printf říká, že máme načíst proměnnou typu b je typu integer ("%d") 3 v printf říká, že máme načíst proměnnou typu c je typu integer ("%d")
Naposledy vytištěno 5.3.2013 8:55:00
2
61
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 62 -
Opět barevně zobrazujeme, jak byly proměnné deklarovány a následně používány v souladu s deklaracemi.
Příkaz printf( ) má mnoho možností. Ve variantě b do něj umístíme součet dvou proměnných a + b. V takovém případě nepotřebujeme proměnnou c (nebudeme ji tedy ani deklarovat). Napište si tento program, přeložte a spusťte.
Naposledy vytištěno 5.3.2013 8:55:00 62
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 63 -
Varianta b: Součet a + b umístíme do příkazu printf( ). Z
Zápis v jazyku C:
Vyvolání knihovny I/O
#include <stdio.h> main () {
Deklarace proměnných
int
a,b;
a
printf("zadej a:"); scanf ("%d",&a);
b
printf("zadej b:"); scanf ("%d",&b);
“a“ =; a
printf("a=%d\n",a); printf("b=%d\n",b);
“b“ =; b printf("%d\n",a+b);
TISK a + b
K
Naposledy vytištěno 5.3.2013 8:55:00
system("PAUSE");
}
63
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
3.4
- 64 -
Větvení programu
V životě se musíme rozhodovat obvykle mezi více variantami řešení v závislosti na existujících podmínkách. Tuto možnost Vám dává také programovací jazyk C svými příkazy if a if-else. Tyto příkazy nám dovolí větvit program.
3.4.1 if (výraz) příkaz; je příkaz pro větvení programu (tzv. podmíněný příkaz). Je-li výraz pravdivý, vyplň příkaz. Na místě příkazu může být blok příkazů. Pokud výraz není pravdivý, pokračuj v řešení následujícími příkazy za tímto příkazem. Př.: Co se vypíše na obrazovku, vykoná-li program příkaz: ANO
if (10 > 9) printf ("je pravda"); Na obrazovku se vypíše
NE
výraz
je pravda Příkaz
Pokud zadáme jako vstupní hodnoty: a = 10; b = 20; potom příkaz if (a > b) printf ("je pravda"); nenapíše se na obrazovku nic, protože a je menší než b.
3 .4 .2
if (výraz) příkaz 1 else příkaz 2;
Struktura příkazu:
Příkaz if (výraz) příkaz 1 else příkaz 2; Pokud je pravdivý výraz, vykonej příkaz 1; jinak vykonej příkaz 2; ANO
a>c
NE
I v tomto případě lze do Příkaz 1 a Příkaz 2 dosadit blok příkazů. V takovém případě je uzavřeme mezi závorky { }. Př.: if (a > c)
Příkaz 1
{ a: = a + 1; c: = c + 1; }
Příkaz 2
else
Naposledy vytištěno 5.3.2013 8:55:00 64
{ a: = a – 1; c: = c - 1; };
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
3 .4 .3
- 65 -
Blok příkazů
Konstatovali jsme již, že v jazyku C lze za sebou řadit příkazy do bloků:
{ příkaz 1; příkaz 2; příkaz 3; . . }
začátek bloku tělo bloku
blok příkazů
konec bloku
Blok příkazů začíná a končí závorkami { }. Blok příkazů lze využít například v příkazu if - else. Demonstrujme si využití struktury bloku příkazů na zápisu if a > b {a: = a+1; b: = b+1} else {a: = a-1; b: = b-1}, pro dvě varianty vstupních hodnot:
př.:
varianta 1 5
varianta 2 2
2
5
if b b a a a > b ……………..... výraz a > b je pravdivý …………..….. výraz a > b není pravdivý { a: = a + 1; 6 a b: = b + 1; 3 b } else { 1 a: = a - 1; a b: = b - 1; 4 } b
3 .4 .4 + *
/ %
Aritmetické operátory ……………. sčítání …………….. odčítání …………….. násobení …………….. dělení …………….. …………… zbytek po celočíselném dělení. Lze jej použít pro operace s celočíselnými typy. Dává výsledek jako zbytek pro celočíselném dělení.
Na pravé straně přiřazovacího příkazu se může objevit výraz: p = a ∗ b; Operátory ∗, /, a % mají vyšší prioritu, než operátory + a - . Pro určení pořadí vyhodnocování příkazu používáme závorky.
Naposledy vytištěno 5.3.2013 8:55:00
65
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 66 -
Výpočet plochy obdélníku P = a+b #include <stdio.h> main () { int P,a,b; printf("zadej a:"); scanf ("%d",&a); printf("zadej b:"); scanf ("%d",&b); P=a*b; printf("Plocha je: %d\n",P); system("PAUSE");
}
V následujícím příkladu si ukážeme příklad na operaci sečítání a podrobněji popíšeme možnosti příkazu printf( ). Operace sčítání používá operátor +, který provede sečtení hodnot do požadované proměnné. Př.:
x = 10 + 20
Do proměnné x se vloží hodnota 30 jako výsledek operace sčítání. Častěji se tato operace používá mezi proměnnými. Př.:
a = 10; b = 20; x = a + b;
Další variantou je použití operátoru + v příkazu printf viz Př.: printf("součet je: %d", a+b);
příklad č. 5.
2
V tomto případě je součet proměnných a, b proveden v rámci příkazu printf. Proměnné a, b i výsledek musí být typu int, což určuje "%d". Stejnou funkci jako operátor + má také operátor -, který se používá pro výpočet rozdílu mezi dvěma hodnotami, nebo mezi proměnnými: Př.: x = a – b; V následujících příkladech použijeme aritmetické operátory k řešení úkolů.
Naposledy vytištěno 5.3.2013 8:55:00 66
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
3 .4 .5
Relační operátory, které můžeme v jazyce „C“ použít: Činnost větší než větší než nebo rovno menší než menší než nebo rovno rovno nerovno
Operátor > >= < <= == !=
3 .4 .6 Nevyšší
- 67 -
Relační operátory mají nižší prioritu než aritmetické operátory. priorita
! >>=<<= = =!= &&
Nejnižší priorita Výstupem relačního operátoru a > b ve variantě 1 předešlého příkladu je logická hodnota 1, ve variantě 2 předešlého příkladu je výstupem relačního operátoru logická hodnota 0.
3 .4 .7
Aplikace algoritmů větvení
Příklad č. 6 Zadání: Vytvořte algoritmus, který určí, které ze dvou zadaných čísel je větší a toto vytiskne. Čísla nesmí být stejná. Metodický pokyn:
Vývojový diagram Z
Z
Vyvolání knihovny i/0
Vyvolání knihovny i/0
Deklarace proměnných
Deklarace proměnných
Knihovna I/O
a
Načtení dvou čísel b
ALU
ALU
Najdi větší z obou čísel
a>b
NE
ANO Knihovna I/O
Vytiskni větší číslo
K
Naposledy vytištěno 5.3.2013 8:55:00
Větší číslo je „a“
Větší číslo je „b“
K
67
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 68 -
Zápis v jazyku C
Popis příkazů
#include <stdio.h> main () { int a,b;
vyvolej knihovnu I/0 hlavní funkce začátek hlavní funkce a, b jsou proměnné, kam lze uložit jen celá čísla
printf("zadej a:"); scanf ("%d",&a);
zobrazit „zadej a:“ na obrazovku zadání hodnoty do proměné “a“
printf("zadej b:"); scanf ("%d",&b);
zobrazit „zadej b:“ na obrazovku zadání hodnoty do proměné “b“
if(a>b) { printf("vetsi cislo je a \n");} else { printf("vetsi cislo je b \n");}
je-li a > b vystav na obrazovku text „větší číslo je a“ posuň kurzor na nový řádek
system("PAUSE"); }
Naposledy vytištěno 5.3.2013 8:55:00 68
jinak vystav na obrazovku text „větší číslo je b“ posuň kurzor na nový řádek zastavení programu
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 69 -
Popis nových příkazů: if …jestliže platí (výraz) proveď (příkazy) else … jinak, proveď (blok příkazů)
Příklad č. 7 Zadání: Vytvořte jednoduchou kalkulačku. Zadejte z klávesnice typ operace (S - sčítání, O - odčítání, N násobení, D - dělení) a dvě čísla, se kterými provedete operaci. Výsledek vytiskněte na obrazovku. Metodický pokyn: Tento příklad představuje využití MENU při řešení programů MENU v programu slouží k tomu, aby si uživatel mohl pohodlně vybrat z nabídky funkcí programu. Při řešení potřebujeme další proměnnou, do níž načteme svoji volbu. Příkaz if potom dovolí vykonat blok příkazů, které odpovídají volbě operátora. Dále se při řešení tohoto problému naučíme používat příkazy getchar ( ); a příkaz pro porovnání = = :
Příkaz getchar ( ) Tato funkce je součástí knihovny stdio.h a slouží pro načtení jednoho znaku z klávesnice. Tuto funkci lze také použít pro zastavení programu a čekání na stisk libovolné klávesy. Po stisku se vloží do proměnné typu char znak, který lze testovat pomocí podmínek if a vyhodnotit jaký stisk klávesy uživatel učinil. Řešení: Vývojový diagram 1
Z
CH = „S“
Vyvolej knihovnu i/0
ANO
a+b NE
Spusť hlavní funkci
CH = „O“
ANO
a-b NE
Zadej typ proměnných
CH = „N“
Smaž obrazovku
ANO
axb NE
Nabídka MENU S, O, N, D Načtení volby operace do CH Načtení a
S – sčítání O – odčítání N – násobení D - dělení
CH = „D“
a/b NE
Tisk výsledku
Načtení b
Zastav program
1
K
Naposledy vytištěno 5.3.2013 8:55:00
ANO
69
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 70 -
Zápis v jazyku C - VARIANTA A #include <stdio.h> main () { int a,b; char ch; system("CLS");
do proměnných a, b lze ukládat jen celá čísla do proměnné ch lze ukládat jen znaky
printf("chcete:\n"); printf("Scitat, Odecitat, Nasobit nebo Delit:\n"); printf("zadejte prvni pismeno funkce :"); ch=getchar();
načtení volby z klávesnice
printf("\n"); printf("zadejte prvni cislo:"); scanf ("%d",&a); printf("zadejte druhe cislo:"); scanf ("%d",&b); if(ch=='S')printf("%d",a+b); if(ch=='O')printf("%d",a-b); if(ch=='N')printf("%d",a*b); if(ch=='D')printf("%f",a/b); printf("\n"); system("PAUSE"); }
Program provede příkazy a zobrazí:
Naposledy vytištěno 5.3.2013 8:55:00 70
načtení prvního čísla
načtení druhého čísla jestliže je načtený znak z klávesnice S, vytiskni a + b jestliže je načtený znak z klávesnice O, vytiskni a - b jestliže je načtený znak z klávesnice N, vytiskni a x b jestliže je načtený znak z klávesnice D vytiskni a / b
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 71 -
Poznámka: Pokud v této variantě dosadíme za a = 3, b = 4, výsledkem dělení je 0, protože proběhlo tzv. celočíselné dělení (zobrazí jen celé číslo výsledku:
Když si tedy napíši program a ve výstupní sestavě mám jako výsledek operace 0, je pravděpodobné, že je třeba upravit některou deklaraci v dělení. Pokud chceme tento nedostatek odstranit, je třeba v deklaraci proměnných uvést: float a, b; a v příkazu scanf na místě %d vložit %f – viz varianta b Zápis v jazyku C - VARIANTA B #include <stdio.h> main () { float a,b; char ch;
system("CLS"); printf("chcete:\n"); printf("Scitat, Odecitat, Nasobit nebo Delit:\n"); printf("zadejte prvni pismeno funkce :"); ch=getchar(); printf("\n"); printf("zadejte prvni cislo:"); scanf ("%f",&a); printf("zadejte druhe cislo:"); scanf ("%f",&b); if(ch=='S')printf("%f",a+b); if(ch=='O')printf("%f",a-b); if(ch=='N')printf("%f",a*b); if(ch=='D')printf("%f",a/b); printf("\n"); system("PAUSE"); }
Naposledy vytištěno 5.3.2013 8:55:00
71
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 72 -
Nové příkazy: getchar – načtení jednoho znaku z klávesnice if(ch=='S') – dvě rovnítka v příkazu if znamenají porovnání znaku načteného z klávesnice se znakem v apostrofech. Následující příklad má demonstrovat postup pří řešení reálných algoritmů, které řeší problém. Vycházíme vždy z jednoduchého algoritmu, který popisuje jen hlavní body řešení úlohy a ten následně „zpřesňujeme“ tak, až se dostaneme téměř na úroveň jednotlivých příkazů v jazyku C.
Samostatná práce studenta: Změňte v Příkladu č.7 – varianta B příkaz float a, b; a nahraďte jej příkazem int a, b. Jak se bude program chovat?
Naposledy vytištěno 5.3.2013 8:55:00 72
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 73 -
Příklad č. 8 Zadání: Najdi největší číslo ze tří čísel, které vstupují z klávesnice a proveďte verifikaci vývojového diagramu. Realizujte variantu, kdy je a, b, c typu int, a variantu kdy je a, b, c typu double. (pozn. všechna čísla musí být vzájemně různá). Metodický pokyn: Vlastní problém nejprve zpracujeme v přehledném, stručném vývojovém diagramu, který popisuje blokové řešení problému. Následně „zpracujeme“ jednotlivé bloky tohoto algoritmu postupně až po dílčí příkazy, které lze převést do příkazů jazyka C. Metoda „zpřesňování“ vývojového diagramu je obecně platná při řešení jakéhokoliv problému.
Vývojový diagram: Z
Z
Deklarace a, b, c
Budeme tedy potřebovat čtyři proměnné!
a
Deklarace a, b, c, max
b
Načtení tří čísel c Najdi z těchto tří čísel největší
1
ANO 2
Vytiskni maximum
ANO
… MAX = a
a>b
NE
5
3
NE
a>c
MAX4 = b
b>c
ANO
MAX = c
MAX = c
K Vytiskni maximum
K
Naposledy vytištěno 5.3.2013 8:55:00
73
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 74 -
a) Varianta s celým číslem Zápis v jazyku C #include <stdio.h> main () { int a,b,c,max;
Připojení knihovny I/0 Hlavní funkce Začátek hlavní funkce a, b,c …. budou celá čísla
system("CLS");
Smaž obrazovku
printf("zadejte a:"); scanf ("%d",&a);
vystav na obrazovku text "zadejte a" načtení hodnoty z klávesnice do proměnné a (a je celé číslo) vystav na obrazovku text "zadejte b" načtení hodnoty z klávesnice do proměnné b (b je celé číslo) vystav na obrazovku text "zadejte c" načtení hodnoty z klávesnice do proměnné c (c je celé číslo) jestliže je a > b vlož do max hodnotu a jinak vlož do max hodnotu c.
printf("zadejte b:"); scanf ("%d",&b); printf("zadejte c:"); scanf ("%d",&c); 1 if(a>b) { if(a>c) max=a; 2 else max=c; 3 } else { if(b>c) max=b; 4 else max=c; 5 } printf("Maximalni cislo je :%d\n",max);
system("PAUSE"); }
Naposledy vytištěno 5.3.2013 8:55:00 74
jinak jestliže je b > c vlož do max hodnotu b jinak vlož do max hodnotu c. Vytiskni na obrazovku „Maximalni cislo je max“ Zastavení programu Zakončení programu
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 75 -
b) Varianta s desetinným číslem (Příklad 8a) Zápis v jazyku C
Paměť
#include <stdio.h> main () { double
a,b,c,max;
system("CLS"); printf("zadejte a:"); scanf ("%lf",&a);
naplň
vstupy dat
a printf("zadejte b:"); scanf ("%lf",&b);
naplň
printf("zadejte c:"); scanf ("%lf",&c);
naplň
vstupy dat
b vstupy dat
c if(a>b) { Porovnáme a, c if(a>c) max=a; else max=c; větší uloží do max } else { if(b>c) max=b; else max=c; } printf("Maximalni cislo je :%lf\n",max);
hledání maxima
max
Výstupní max na obrazovku
system("PAUSE"); }
Naposledy vytištěno 5.3.2013 8:55:00
75
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 76 -
Program provede operaci a zobrazí:
3 .4 .8
Verifikace vývojového diagramu
Hrubou verifikaci (ověření správné funkce programu) provedeme tak, že za vstupní data vložíme takové kombinace hodnot, aby program musel projít všechny větve algoritmu Metodický pokyn: Vypracujeme verifikaci Programu č. 8. Vybrali jsem si čtyři kombinace vstupních dat – a) b) c) d), s jejich využitím ověříme funkčnost všech větví tohoto programu:
a) a = 12, b = 3, c = 1 a > b > c,
b) a = 1, b = 7, c = 4 b > c > a
Z
Z
Deklarace proměnných
Deklarace proměnných
a = 12
a
b
b=3 c=1
c ANO
ANO
MAX = a
a>c
ANO
NE
a>b
ANO
NE
NE
MAX = c
MAX = c
b>c
ANO
MAX = b
MAX = a
a>c
a
a=1
b
b=7
c
c=4
a>b
NE
NE
MAX = c
MAX = c
K K
Naposledy vytištěno 5.3.2013 8:55:00 76
NE
b>c
ANO
MAX = b
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 77 -
c) a = 20, b = 30, c = 10 c > a > b,
d) a = 10, b = 20, c = 30 a < b < c Z
Z
Deklarace proměnných
Deklarace proměnných
ANO
ANO
a = 20
a
a = 10
b
b = 30
b
b = 20
c = 10
c
c = 30
c
ANO
NE
a>b
ANO
NE
a>c
MAX = a
a
NE
MAX = c
ANO
b>c
MAX = c
MAX = a
MAX = b
a>c
a>b
NE
NE
NE
MAX = c
MAX = c
b>c
ANO
MAX = b
K K
Samostatná práce studenta: 1)
Doplňte program příkazy, které by programátorovi sdělovaly, kterou cestou při ladění prochází #include <stdio.h> main () { int a,b,c,max; system("CLS");
Z
Deklarace proměnných
ANO
ANO 4
MAX = a
a>c
a
1
b
2
c
3
printf("zadejte a:"); scanf ("%d",&a); printf("krok c. 1 \n"); printf("zadejte b:"); scanf ("%d",&b); printf("krok c. 2 \n");
a>b
NE
NE
b>c
ANO 7
6
5
MAX = c
printf("zadejte c:"); scanf ("%d",&c); printf("krok c. 3 \n"); if(a>b) { printf("krok c. 3a \n"); if(a>c) {printf ("krok c. 4 \n"); max=a;} else {printf ("krok c. 5 \n"); max=c;} } else { printf("krok c. 3b \n"); if(b>c) {printf ("krok c. 6 \n"); max=b;} else {printf ("krok c. 7 \n"); max=c;} } printf("Maximalni cislo je :%d\n",max); printf("krok c. 8 \n"); system("PAUSE");
NE
MAX = c
MAX = b
8
K
}
Naposledy vytištěno 5.3.2013 8:55:00
77
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
Program provede příkazy a zobrazí:
Naposledy vytištěno 5.3.2013 8:55:00 78
- 78 -
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
3 .4 .9
- 79 -
Přehled struktury programu s využitím podprogramů:
Ve vývojovém diagramu a následně v programu se často opakují úseky, které řeší stejnou problematiku, jen pro různá vstupní data. Takovému úseku říkáme podprogram.
Hlavní program Podprogram "P1"
Zde se provádějí příkazy hlavního programu Příkaz pro zavolání podprogramu "P1"
Zde se provádějí příkazy podprogramu P1
Příkaz pro návrat z podprogramu
Zde se provádějí příkazy hlavního programu
Podprogram "P2" Příkaz pro zavolání podprogramu "P2"
Zde se provádějí příkazy podprogramu P2 Příkaz pro návrat z podprogramu
Zde se provádějí příkazy hlavního programu Příkaz pro ukončení programu
Obr. č.: ….. Zdroj:
Ve vývojovém diagramu například v Příkladu č. 9 potom nemusíme pro každou hodnotu vstupní proměnné vykreslovat celou strukturu vývojového diagramu. Stačí jen stejný úsek označit a v následující části k tomuto označení přidávat označení proměnných, viz Příklad č. 9. Mluvíme o podprogramu.
Naposledy vytištěno 5.3.2013 8:55:00
79
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 80 -
K Deklarace proměnných
K1 K2 K3 K4 P1
Pro proměnné a, b, c, d, e, f, g vyvolej P1
Podprogram č. 1 - načtení údajů proměnných
a
„Hrubé mzdy a odvody za měsíc:“ K1 Mezera
Tisk a1 a2 a3 a4
a5
Pro proměnné a, b, c, d, e, f, g vyvolej P2
P2 Podprogram č. 2 - tisk údajů o pracovníkovi
H = a4 + b4 + c4 + d4 + e4 + f4 + g4 „Součet hrubé mzdy“; H o = a5 + b5 + c5 + d5 + e5 + f5 + g5 „Součet odvodů“; o Mezera „V Kunovicích, dne“, K2, K3, K4 NE
Konec ANO
Vymaž obrazovku
K
Výstupem programu bývají většinou tzv. výstupní sestavy. Před začátkem algoritmizace a programování problému potřebujeme přesně definovat, jak mají vypadat výstupní sestavy. V tomto případě úzce spolupracuje ekonom a manažer se specialistou-programátorem. Jednoduché rozborové sestavy si má umět navrhnout každý ekonom, manažer a informatik. Využití podprogram u výstupní sestavy vidíme na příkladu řešení v Příkladu č. 9. Naposledy vytištěno 5.3.2013 8:55:00 80
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
3 .4 .1 0
- 81 -
Pole
Pole je seznamem proměnných, které jsou všechny jednoho typu a přistupuje se k nim přes jméno pole a pozici prvku. Pole může být jednorozměrné, např. a [2] nebo dvourozměrné b [30], [20]. a) Jednorozměrné pole
Deklarace jednorozměrného pole: Typ jméno-proměnné [velikost];
U jednorozměrného pole jsou data (vždy stejného typu) ukládána sekvenčně za s sebou: MZDA[0]
MZDA[1]
MZDA[2]
MZDA[n - 1]
Pole je útvar (datová struktura), který je uložený v paměti. Proto mu musí být přiděleno jméno, které je adresou, kde je pole uloženo: MC MZDA[0]
MZDA[1]
0
MZDA [n-1] 1
n-1
MZDA Například mzdy pracovníků lze umístit do proměnné typu pole, která na je nazvána MZDA. Prvky pole jsou číslovány od 0 do n (pole má n + 1 prvků) a pozice prvku v poli je udávána identifikací jména proměnné a v závorkách pořadím (pozor čísluje se od nuly); MZDA [10] je jméno prvního prvku tohoto pole. Překladači musíme určit, jaký typ dat budeme do prvku pole vkládat: - deklarace jednorozměrného pole typu int (do pole prvků mohu vkládat jen celá čísla), je: int a [10]; ……………………………….. Pole a má 10 znaků, číslovaných od 0. Př.:
a [0]= 15; a [1]= 12; a [2]= 18; a [9]= 21;
scanf ("%d",&a[0]);
- deklarace jednorozměrného pole pro čísla s desetinnou čárkou do pole typu float float b [10]; Př.:
b [1]= 14.2; b [3]= -7.3; b [9]= 356.23;
scanf ("%d",&b[1]);
- deklarace jednorozměrného pole znaky cha c [5]; Př.:
c [0]= ´A´; c [2]= ´ú´; c [4]= ´b´;
scanf ("%d",&c[0]);
- deklarace jednorozměrného pole řetězce (Kotek): char r1 [50]; scanf ("%s",r1) Naposledy vytištěno 5.3.2013 8:55:00
81
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 82 -
V příkazu printf potom pracuji s tímto polem: printf("%d", a [3]); printf("%f", b [2]); printf("%c", c [2]); printf("%s", r1]); Pozn: Chceme-li použít scanf ( ) pro načtení celočíselné hodnoty do prvku pole, zadáváme před symbol &. Příklad: KR
b)
Dvojrozměrná pole
Dovoluje pracovat se dvěma rozměry pole. První rozměr si můžeme představit jako řádek a druhý rozměr jako sloupec tabulky. Do takovéto tabulky lze vkládat různé hodnoty podle datového typu. Pokud použijeme datový typ řetězce lze vkládat na jednotlivé řádky texty. Př.: Deklarujeme-li dvojrozměrné pole, do něhož budeme vkládat text (řetězce znaků), lze použít: char jmena [10] [20]; 10 – počet řádků 20 – počet znaků
a z klávesnice načte do první buňky hodnotu příkazem
Počet prvků
scanf ("%s", jmena[0]);
0 1 2
0 B F S
1 O I T
2 T L A
3 E A N
4 K
5
E
K
29
99
3 .4 .1 1
Cyklus
Konstatovali jsme již, že cyklus zajišťuje opakování činnosti části programu dokud není splněna nějaká podmínka. Rozlišujeme cykly: 1) while 2) do 3) for
Naposledy vytištěno 5.3.2013 8:55:00 82
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 83 -
1. Cyklus while a)
Cyklus while s podmínkou na začátku cyklu
while (výraz) příkaz;
Na místě příkaz může být blok příkazů. Program kontroluje pravdivost výrazu na začátku cyklu.
Je-li tedy
na začátku cyklu nepravdivý, nebude se příkaz nebo blok příkazů realizovat ani jednou.
Výraz není pravdivý
výraz
Výraz je pravdivý
příkaz (blok příkazů)
Příklad č. 9 Zadání: Vytiskni na obrazovku čísla od 1 – 10 a použij cyklus s podmínkou na začátku.
Zápis v jazyku C
Vývojový diagram
Z
Deklarace typu proměnné i
#include <stdio.h> main () { int i;
i=1;
i=1
Nastavení počáteční hodnoty počítadla ANO
NE
i ≤10
while (i<=10) { printf("%d\n",i); i=i+1; }
tiskni
i=i+1
Dokud platí, že i ≤ 10: vytiskni hodnotu i hodnotu i zvyš o 1
system("PAUSE"); }
K
Naposledy vytištěno 5.3.2013 8:55:00
83
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 84 -
V následujícím textu si popíšeme podrobně činnost příkazu if a práce paměti.
Řešení:
Z
Vyvolej knihovnu I/0
MC
i=1
1 i
ANO
NE
i ≤10 tiskni i
i=i+1
i
i ≤ 10
i ≤ 10
i ≤ 10
i = 10
Tisk: 1
Tisk: 2
Tisk: …
Tisk: 10
2
3
…
11
i > 10
K K
Program provede příkazy a zobrazí:
Naposledy vytištěno 5.3.2013 8:55:00 84
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 85 -
Příklad č. 10 Mzdová účetní potřebuje rychle vypočítat průměr mezd pracovníků. Počet pracovníků předem nezná. Vyřešte tento problém s využitím cyklu while, nakreslete vývojový diagram, verifikujte průběh programu na vývojovém diagramu, přepište do jazyka „C“, a spusťte. Řešení: Z
Deklarace typu proměnné plat, součet, počet, průměr, povel Součet = 0 Počet = 0
0
1
0
1
A
2
Nastavení počátečních hodnot
Paměť
Vyvolání knihovny i/0
součet
1
povel
Proměnná, pomocí níž rozhodnu, zda chci pokračovat
2
Povel = = “A“
Větev A:
Větev B A je pravdivé
zadej plat
Povel = “A“
3
A není pravdivé
7
Průměr = suma/počet
7
3
plat
průměr 4
4
Součet = součet + plat
Tiskni průměr
5
Počet = počet + 1
součet 5
počet
K
Povel pokračovat A/N
6
povel 6
načti povel zadáno A
Zápis v jazyku C #include <stdio.h> main () { int plat,soucet,pocet; double prumer;
Vyvolání knihovny I/0 Hlavní funkce programu
Definice typu proměnných
char povel; soucet=0; pocet=0; povel='A';
1 1
Nastavení počáteční hodnoty proměnné 2
while (povel=='A') { printf("\n zadej plat :"); 3 scanf ("%d",&plat); soucet=soucet+plat; 4 5 pocet=pocet+1;
Hlavička cyklu
Větev A
cyklus pro načtení vstupních dat
Větev B
výstupy průměrů platů na obrazovku
printf("pokracovat A|N :"); 6 povel=getch(); } prumer=soucet/pocet;
7
printf("\n prumer platu je :%lf \n",prumer); system("PAUSE"); }
Naposledy vytištěno 5.3.2013 8:55:00
85
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 86 -
Program provede příkazy a zobrazí:
Popis nových klíčových slov while (výraz) příkaz; ………..dokud je výraz pravdivý, vykonej příkaz a opakuj dotaz na pravdivost výrazu. Samostatná práce studenta Doplňte znakové upozornění (zvonek) pro obsluhu, že má zadat vstupní hodnotu!
Příklad č. 11 Načtěte pro pět pracovníků příjmení, jméno a hrubou mzdu s využitím cyklu while a s využitím téhož cyklu vytiskněte sestavu: Malý Šebek Staněk Fila Bobek
Výpis údajů Petr 9 600 Jan 10 000 Milan 17 000 Igor 8 400 Karel 25 000
Naposledy vytištěno 5.3.2013 8:55:00 86
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 87 -
Nejprve si naplánujeme, jaké proměnné budeme potřebovat, jak je označíme a jak jim deklarujeme typ. a (příjmení) a1=Malý a2=Šebek a3= Staněk a4=Fila a5=Bobek
b (jméno) b1=Petr b2=Jan b3=Milan b4=Igor b5=Karel
Vývojový diagram
c (hrubá mzda) c1= 9600 c2=10 000 c3=17 000 c4=8 400 c5=25 000
Z Vyvolání knihovny i/0 Deklarace typů proměnných n a1, a2, a3, a4, a5 – příjmení b1, b2, b3, b4, b5 - jméno c1, c2, c3, c4, c5 – hrubá mzda
Vymaž obrazovku n = 5; while ( n ≥ 1) n >1
Podmínka na začátku cyklu
NE
první průchod cyklem while protože n = 5
ANO
Načti údaje o pracovnících
Načtení vstupních dat (příjmení, jméno, hrubá mzda)
n=1
ANO
n > 1 (naplní a5, b5, c5) naplň a1, b1, c1
n=2
ANO
první průchod cyklem while protože n = 4
naplň a2, b2, c2 n > 1 (naplní a4, b4, c4) n=3
atd.
ANO
naplň a3, b3, c3
n=4
ANO
naplň a4, b4, c4
n=5
ANO
naplň a5, b5, c5
n=n-1
Naposledy vytištěno 5.3.2013 8:55:00
1
87
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 88 -
1 vymaž obrazovku n = 5; Tisk „výpis údajů“
while ( n ≥ 1) n >1
NE
ANO
n=1
ANO
tisk a1, b1, c1
Tisk výstupní sestavy
K
n=2
ANO
tisk a2, b2, c2
n=3
ANO
tisk a3, b3, c3
n=4
ANO
tisk a4, b4, c4
n=5
ANO
naplň a5, b5, c5
n=n-1
Naposledy vytištěno 5.3.2013 8:55:00 88
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 89 -
Plnění paměti v průběhu zpracování programu: plnění proměnných
5
3
4
1
2
n
0<1 Konec cyklu 1
5>1
4>1
3>1
5>1
4>1
3>1
2>1
1=1 1=1
2>1
A Botek a5
Fila a4
Karel b4 25 000
8 400 c4
4 n
b2
17 000 c3
c2
Petr b1 9 600
10 000
2 n
a1 Jan
b3
3 n
Malý
Šebek a2
Milan
Jan
b5
c5
Staněk a3
c1 0
1 n
n
Obr. č. …..: Plnění paměti při realizaci Příkladu č. 11
Nevýhodou tohoto řešení je, že musíte deklarovat veliké množství proměnných a při velkém počtu pracovníků by byl vývojový diagram i program v jazyku C neúnosně rozsáhlý.
Zápis v jazyce C #include <stdio.h> main () Počet znaků { int c1,c2,c3,c4,c5; char a1[30],a2[30],a3[30],a4[30],a5[30]; ……. příjmení char b1[30],b2[30],b3[30],b4[30],b5[30]; int n; a1 a1[0] system("CLS"); a2 a2[0] n=5; while (n>=1) { if (n==1) { printf("zadejte printf("zadejte printf("zadejte } if (n==2) { printf("zadejte printf("zadejte printf("zadejte }
Naposledy vytištěno 5.3.2013 8:55:00
a1[29] a2[29]
prijmeni:");scanf ("%s",a1); jmeno:");scanf ("%s",b1); mzdu:");scanf ("%d",&c1);
prijmeni:");scanf ("%s",a2); jmeno:");scanf ("%s",b2); mzdu:");scanf ("%d",&c2);
89
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc if (n==3) { printf("zadejte printf("zadejte printf("zadejte } if (n==4) { printf("zadejte printf("zadejte printf("zadejte } if (n==5) { printf("zadejte printf("zadejte printf("zadejte } n=n-1; }
- 90 -
prijmeni:");scanf ("%s",a3); jmeno:");scanf ("%s",b3); mzdu:");scanf ("%d",&c3);
prijmeni:");scanf ("%s",a4); jmeno:");scanf ("%s",b4); mzdu:");scanf ("%d",&c4);
prijmeni:");scanf ("%s",a5); jmeno:");scanf ("%s",b5); mzdu:");scanf ("%d",&c5);
řetězec 15 znaků zarovnání vlevo
printf("Vypis udaju\n\n"); číslo celé 10 znaků n=5; while (n>=1) { if (n==1)printf("%-15s%-15s%10d\n",a1,b1,c1); if (n==2)printf("%-15s%-15s%10d\n",a2,b2,c2); if (n==3)printf("%-15s%-15s%10d\n",a3,b3,c3); if (n==4)printf("%-15s%-15s%10d\n",a4,b4,c4); if (n==5)printf("%-15s%-15s%10d\n",a5,b5,c5); n=n-1; } system("PAUSE"); }
Naposledy vytištěno 5.3.2013 8:55:00 90
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 91 -
Samostatná práce studenta 1.
Pokuste se s využitím stávajících znalostí naprojektovat takový program, který umožní obsluze mezi dvěma znaky změřit délku proluky. Z
Délka proluky Zvonek
Prodleva Zvonek NE
ANO
Pokračovat?
Naposledy vytištěno 5.3.2013 8:55:00
K
91
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
a)
- 92 -
Cyklus s podmínkou na konci cyklu - cyklus do-while
Dalším cyklem v jazyku „C“ je cyklus do-while. Obecně má tvar: do {
/∗ převeď ∗/
příkazy } while (výraz);
/∗ tělo cyklu ∗/ /∗ dokud platí ∗/
Pokud se provádí jeden příkaz , { } závorky nejsou potřebné, např.: . . . do printf („První úloha“); while (a < b); . . .
Cyklus opakuje příkazy, dokud je výraz pravdivý. V tomto případě se příkazy provedou alespoň jednou, protože podmínka je až na konci cyklu.
Příklad č. 12 Zadání: Vytiskni na obrazovku čísla od 1 – 10 a použij cyklus s podmínkou na konci.
Vývojový diagram
Zápis v jazyku C
Z
include <stdio.h> main () { int i;
i=1
i=1; do { printf("%d\n",i); i=i+1; } while (i<=10);
tiskni
i=i+1 ANO
NE
i ≤10
system("PAUSE"); } K
Naposledy vytištěno 5.3.2013 8:55:00 92
Popis příkazů Vyvolání knihovny I / 0 Začátek hlavní funkce Proměnná i je typu int
Nastavení počítadla cyklu Začátek cyklu Tělo cyklu Podmínka cyklu
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 93 -
Následující graf prezentuje vztah průběhu cyklu do a práci paměti.
Z
Vyvolání knihovny i / 0
Knihovna i / 0
i=1
1 i
2
….
tiskni i
1
i=i+1
2
3
10
11
2 < 10
3 < 10
10 = 10
11 > 10
9
10
i ANO
NE
i ≤10
K
K
první průchod cyklu druhý průchod cyklu
Následující příklad ukončí cyklus zadáním příkazu povel – stlačením písmene A na klávesnici.
Naposledy vytištěno 5.3.2013 8:55:00
93
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 94 -
Příklad č. 13 Vytvořte vývojový diagram a napište program v jazyku C, kdy z klávesnice budou zadávány platy, následně bude proveden dotaz na pokračování a po ukončení cyklu zadávání platů se vypočte součet zadávaných platů. Vývojový diagram
Zápis v jazyku C
Z #include <stdio.h> main () { int plat,soucet; char povel;
Deklarace externích dat součet = 0
soucet=0; do { printf("\n zadej plat :"); scanf ("%d",&plat); soucet=soucet+plat;
zadej plat Součet = součet + plat
deklarace externích knihoven (i/0) deklarace typu proměnných, které budeme používat
nastavení počítané hodnoty součtu
cyklus do - while
printf("pokracovat A|N :"); Povel pokračovat A/N
povel=getch(); } while (povel=='A');
ANO
NE povel A
printf("\n soucet platu je :%d \n",soucet); součet platů system("PAUSE"); } K
Naposledy vytištěno 5.3.2013 8:55:00 94
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 95 -
Popis nových klíčových slov Pokud chceme cokoliv porovnávat, uvedeme dvě rovnítka: Př.: while (povel = = "A") …………..
c) Cyklus for Cyklus for se používá pro předem známý počet opakování příkazu nebo bloku příkazů. Má obecně formát:
for (inicializace, test podmínky, krok) příkazy; Inicializace znamená zadání počáteční hodnoty řídící proměnné cyklu. Test podmínky – zjištění, zda řídící proměnná cyklu dosáhla konečné hodnoty Je-li test konečné hodnoty řídící proměnné pravdivý, cyklus se opakuje. Není-li pravdivý, cyklus se ukončí a program pokračuje zpracováním prvního příkazu, který stojí za cyklem. Test podmínky se provádí na začátku cyklu. Testování podmínky se provádí na začátku cyklu, což znamená, že po každém provedení cyklu se proměnná sníží (zvýší) o určitou hodnotu.
Krok – změna proměnné cyklu pro provedení cyklu Z Nastavení hodnoty počáteční proměnné; podmínka test na hodnotu proměnné; krok
Tělo cyklu – jeden příkaz nebo blok příkazů
Provedení kroku
Naposledy vytištěno 5.3.2013 8:55:00
95
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 96 -
Příklad č. 14 Zadání: Vytiskni na obrazovku čísla od 1 – 10 a použij cyklus for.
Vývojový diagram
Zápis v jazyku C #include <stdio.h> main () { int i;
Z
i: = 1; i ≤ 10; i + 1
for (i=1;i<=10;i++) {
Tělo cyklu
tělo cyklu
printf("%d\n",i);
tiskni i
} i=i+1
system("PAUSE"); } K
Popis příkazů: i + + je ekvivalent i = i + 1; i - - je ekvivalent i = i – 1; Na základě dosavadních znalostí jste schopni podrobně analyzovat činnost vývojového diagramu a programu následujícího příkladu.
Naposledy vytištěno 5.3.2013 8:55:00 96
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 97 -
Příklad 15 Vypracujte vývojový diagram, který načte pro 5 pracovníků - Karel Botek, Jan Fila, Milan Staněk, Jan Šebek, Petr Malý hrubé mzdy. Vypočítejte odvod každého pracovníka a vypočítejte součet hrubých mezd a součet odvodů. Popište činnost paměti a potřebné proměnné. Vytiskněte součet hrubých mezd a součet odvodů. Řešení: Tento příklad ukazuje na využití proměnné typu pole.
Vývojový diagram
Paměť Z
Vymaž obrazovku
Deklarace proměnných
Počet pracovníků
n
5 n
Nastavení počáteční hodnoty suma = h suma = o
i = 0; i < n; i ++
i 1
i 3
i 2
i 4
i 5
pole
ANO Pracovník příjmení Prijmenii [i] Pracovník jméno Hrubá mzda
Prijmeni [i]
Staněk prijmeni3
Šebek prijmeni4
Malý prijmeni5
jmeno2
Milan jmeno3
Jan jmeno4
Petr jmeno5
25 000 mzda1
8 400 mzda2
17 000 mzda3
10 000 mzda4
9 600 mzda5
8 750 odvod1
2 940 odvod2
5 490 odvod3
3 500 odvod4
3 360 odvod5
25 000
62 090 suma h 3
72 090
suma h1
45 090 suma h 2
suma h 4
81 690 suma h 5
8 750 suma o1
11 690 suma o2
17 180 suma o3
20 680 suma o4
24 090 suma o5
Botek
Fila
prijmeni1
prijmeni2
Karel jmeno1
Jan
Jmeno [i]
jmenoi [i]
Mzda [i]
mzdai [i]
odvod [i]
Do odvod [i] vlož vypočítaný odvod pracovníka
Přičti hodnotu mezd pracovníka k celkovému součtu mezd
suma - h [i]
suma - o [i]
Přičti hodnotu mezd pracovníka k celkovému odvodu
i
Naposledy vytištěno 5.3.2013 8:55:00
2 i=i+1 i
4
3 i
i
6
5 i
i
i
i i
i
i >n
97
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 98 -
1
i n
Součet hrubých mezd
prijmeni
Součet odvodů
0 1 2
V Kunovicích dne 10. 3. 2013
0 B F S
1 O I T
2 T L A
3 E A N
29
E
0 K J
1 A A
2 R N
3 E
L
K K
K
Zápis v jazyku C
99
Příjmení Počet pracovníků
#include <stdio.h> Počet znaků main () { int i,n; char prijmeni[100][30]; Jména char jmeno[100][30]; double mzda[100]; double odvod[100]; double suma_h,suma_o;
jmeno 0 1 2
99
system("CLS"); printf("zadejte pocet pracovniku (max 100):"); scanf ("%d",&n); suma_h=0; suma_o=0;
29
Mzda Odvod
0 2
0 8
for (i=0;i
1 5 1 7
2 0 2 5
99 0
0 99
0
zahájení cyklu
tělo cyklu
výpočet odvodů
} deset míst celkem
printf("\n");
2 desetinná místa
printf("Soucet hrubých mezd :%10.2lf\n", suma_h); printf("Soucet odvodu :%10.2lf\n\n",suma_o); lf proměnná typu double
printf("V Kunovicich dne :10.1.2013\n"); system("PAUSE"); }
Naposledy vytištěno 5.3.2013 8:55:00 98
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 99 -
Popis příkazu printf ("Soucet hrubych mezd: %10.21f\n", suma_h); 1. Na obrazovku vypíše Soucet hrubých mezd: 2. Za tento text vypíše obsah proměnné suma_h s tím, že celkem může mít toto zobrazení 10 míst, z toho jsou dvě desetinná. 3. \n\n posune kurzor obrazovky o dva řádky
Naposledy vytištěno 5.3.2013 8:55:00
99
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
3 .4 .1 2
- 100 -
Aplikace programu C do práce ekonoma
Příklad č. 16 V podniku Eskaliber, s.r.o. pracují následující pracovníci: p. Koníček Aleš p. Tománek Petr p. Šula Jan p. Prát Antonín p. Koubek Karel p. Čujan Petr p. Forman Jiří Vaším úkolem je vytvořit vývojový diagram pro řešení, které dovolí v daném měsíci pro jednotlivé pracovníky zadat hrubé mzdy, vypočítat z hrubých mezd odvody a vytisknout níže uvedenou sestavu převést do programovacího jazyka „C“ a spustit. Hrubé mzdy a odvody za měsíc: 1
K1
a1
a2
a3
a4
2
3
4
5
Pořadí
Příjmení 1
1
Jméno
Koníček
Aleš
23000 H
Součet hrubé mzdy:
Součet odvodů:
O 6
7
8
V Kunovicích, dne K2
Výstupní sestava vstupní proměnné výstupní proměnné
Naposledy vytištěno 5.3.2013 8:55:00 100
Hrubá mzda
K3
K4
10 11
a5 9
Odvody
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 101 -
Vývojový diagram již řešili v předešlých částech textu.
A Z
Mezera
měsíc
den měsíc
K1
1
K2
6
K3
7
K4
8
P2(a) Tisk a1 a2 a3 a4
a5
P2 (b) P2 (c) P1(a)
Podprogramy pořadí
1
P2 (d)
2
P2 (e)
a1 příjmení
Koníček
3
P2 (f)
a2 jméno
Aleš
4
P2 (g)
a3 hrubá mzda
23000 a4 Výpočet odvodů a5 P1 (b)
5
H = a4 + b4 + c4 + d4 + e4 + f4 + g4
10
Tisk výstupní sestavy
rok
Načtení vstupních dat
viz 1
„Hrubé mzdy a odvody za měsíc:“ K1
Deklarace proměnných
9
„Součet hrubé mzdy“; H
12
o = a5 + b5 + c5 + d5 + e5 + f5 + g5
11
„Součet odvodů“; o
13
P1 (c) P1 (d) Mezera P1 (e) „V Kunovicích, dne“, K2, K3, K4 P1 (f) NE
P1 (g)
Konec ANO
A Vymaž obrazovku
K
Naposledy vytištěno 5.3.2013 8:55:00
101
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 102 -
Viděli jsme také, že toto řešení vytváří jednoduchou databázi, kterou můžeme výše uvedeným programem naplnit. Naše databáze bude mít strukturu: a1 b1 c1 d1 e1 f1 g1
a2 b2 c2 d2 e2 f2 g2
a3 b3 c3 d3 e3 f3 g3
a4 b4 c4 d4 e4 f4 g4
a5 b5 c5 d5 e5 f5 g5
1 2 3 4 5 6 7
Koníček Tománek Šula Prát Koubek Čujan Forman
Aleš Petr Jan Antonín Karel Petr Jiří
23 000 11 000 9 700 17 000 16 800 7 600 13 000
8 050 3 850 3 395 5 950 5 880 2 660 4 550
Zápis v jazyku C #include <stdio.h> main () { int a1,b1,c1,d1,e1,f1,g1,k2,k3,k4; char k1[30]; char a2[30],b2[30],c2[30],d2[30],e2[30],f2[30],g2[30]; char a3[30],b3[30],c3[30],d3[30],e3[30],f3[30],g3[30]; double a4,b4,c4,d4,e4,f4,g4; double a5,b5,c5,d5,e5,f5,g5; double suma_h,suma_o;
proměnná řetězce (K1 bude zobrazena řetězcem znaků) proměnná pro načtení měsíce jako text
system("CLS"); printf("zadejte printf("zadejte printf("zadejte printf("zadejte
mesic uzaverky:");scanf ("%s",k1); den:");scanf ("%d",&k2); mesic:");scanf ("%d",&k3); rok:");scanf ("%d",&k4);
a1=1; printf("zadejte prijmeni:");scanf ("%s",a2); printf("zadejte jmeno:");scanf ("%s",a3); printf("zadejte mzdu:");scanf ("%lf",&a4); a5=a4*0.35; proměnná mzda (číselná hodnota)
b1=2; printf("zadejte prijmeni:");scanf ("%s",b2); printf("zadejte jmeno:");scanf ("%s",b3); printf("zadejte mzdu:");scanf ("%lf",&b4); b5=b4*0.35; c1=3; printf("zadejte prijmeni:");scanf ("%s",c2); printf("zadejte jmeno:");scanf ("%s",c3); printf("zadejte mzdu:");scanf ("%lf",&c4); c5=c4*0.35; d1=4; printf("zadejte prijmeni:");scanf ("%s",d2); printf("zadejte jmeno:");scanf ("%s",d3); printf("zadejte mzdu:");scanf ("%lf",&d4); d5=d4*0.35; e1=5; printf("zadejte prijmeni:");scanf ("%s",e2); printf("zadejte jmeno:");scanf ("%s",e3); printf("zadejte mzdu:");scanf ("%lf",&e4); e5=e4*0.35; f1=6; printf("zadejte prijmeni:");scanf ("%s",f2); printf("zadejte jmeno:");scanf ("%s",f3); printf("zadejte mzdu:");scanf ("%lf",&f4); f5=f4*0.35;
Naposledy vytištěno 5.3.2013 8:55:00 102
proměnná typu double
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 103 -
g1=7; printf("zadejte prijmeni:");scanf ("%s",g2); printf("zadejte jmeno:");scanf ("%s",g3); printf("zadejte mzdu:");scanf ("%lf",&g4); g5=g4*0.35;
sedm míst pro číslo 20 znaků text dorovnání vlemo 10 míst a 2 desetinná čísla typu double
system("CLS"); printf("Hrube mzdy a odvody za mesic :%s\n\n",k1); printf("%7s %-20s %-20s %10s %10s\n","poradi","prijmeni","jmeno","hruba mzda","odvody"); printf("%7d %-20s %-20s %10.2lf %10.2lf\n",a1,a2,a3,a4,a5); printf("%7d %-20s %-20s %10.2lf %10.2lf\n",b1,b2,b3,b4,b5); printf("%7d %-20s %-20s %10.2lf %10.2lf\n",c1,c2,c3,c4,c5); printf("%7d %-20s %-20s %10.2lf %10.2lf\n",d1,d2,d3,d4,d5); printf("%7d %-20s %-20s %10.2lf %10.2lf\n",e1,e2,e3,e4,e5); printf("%7d %-20s %-20s %10.2lf %10.2lf\n",f1,f2,f3,f4,f5); printf("%7d %-20s %-20s %10.2lf %10.2lf\n",g1,g2,g3,g4,g5); suma_h=a4+b4+c4+d4+e4+f4+g4; printf("Soucet hrube mzdy :%10.2lf\n", suma_h); suma_h=a4+b4+c4+d4+e4+f4+g4; printf("Soucet hrube mzdy :%10.2lf\n", suma_h); suma_o=a5+b5+c5+d5+e5+f5+g5; printf("Soucet odvodu :%10.2lf\n\n",suma_o);
printf("V Kunovicich dne :%d.%d.%d\n",k2,k3,k4); system("PAUSE"); }
Naposledy vytištěno 5.3.2013 8:55:00
103
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 104 -
Po spuštění programu a naplnění dat se objeví tato obrazovka:
Popis příkazu 1
2
3
4
5
printf("%7s %-20s %-20s %10s %10s\n","poradi","prijmeni","jmeno","hruba mzda","odvody"); Tento příkaz vypíše na obrazovku řádek - základní tabulky. Přitom platí: Text „pořadí“ je umístěn do 7 znaků – dorovná vpravo: 1
0
1 P
2 O
3 R
4 A
5 D
6 I
Text „příjmení“ je umístěn do 20 znaků – dorovná vlevo: 2
0 P
1 R
2 I
3 J
4 M
Naposledy vytištěno 5.3.2013 8:55:00 104
5 E
6 N
7 I
8
9
10
11
12
13
14
15
16
17
18
19
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 105 -
Text „příjmení“ je umístěn do 20 znaků – dorovná vlevo: 0 J
3
1 M
%10.2lf
2 E
3 N
4 O
5
6
7
8
9
10
11
12
13
14
16
17
18
19
umístí číslo do 10 znaků se dvěma desetinnými místy, zarovnání zprava:
4
0
1
2
3 2
4 3
5 0
6 0
7 0
8 0
9 0
a4 = 23000.00
5
0
1
2
3
4 8
5 5
6 0
7 0
8 0
9 0
a5 = 8050.00
3.5
15
Shrnutí
Vývojový diagram je třeba po jeho verifikaci přepsat do jazyka „C“. V takovém případě si volíme prostředí, v němž bude probíhat přepis do jazyka „C“ (editor, výstupem je zdrojový soubor, koncovku má .c), překladač (kompilátor, výstupem je cílový soubor s koncovkou . obj), zapojit do externí knihovny pomocí sestavovacích programů (linker, připojí externí knihovny a vytvoří spustitelný soubor s příponou .exe).
Hlavičkové soubory
Editor
Preprocesor
Překladač
Zdrojový soubor ∗.c
Hlavičkový soubor ∗.h
Relativní kód ∗.obj
Linker
Spustitelný soubor . exe
Knihovny ∗.lib
Debugger
Spuštění
Program „C“ začíná hlavičkovým souborem, který definuje přidané externí knihovny #include <stdio.h>, které mají příponu .h. Nejčastěji používanou knihovnou je knihovna pro ovládání vstupu a výstupu (I/O) – stdio.h. Za hlavním souborem se nachází jedna nebo více funkcí. Povinnou funkcí je funkce main ( ); za tímto klíčovým souborem je příkaz nebo blok příkazů (blok příkazů je uzavírá závorkami { }). Za každým příkazem musí být středník. V programu používáme konstanty (například čísla a = 5) nebo proměnné. Konstanty i proměnné jsou ukládány do paměti. U konstanty i proměnné musíme určit její typy. V programu lze používat následující typy: znak (8 bitů) celé číslo se znaménkem desetinné číslo s pohyblivou řádovou čárkou desetinné číslo s pohyblivou řádovou čárkou s dvojnásobnou přesností bez hodnoty
Naposledy vytištěno 5.3.2013 8:55:00
105
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 106 -
U proměnné musíme zadat její jméno a typ, aby si program mohl v paměti vytvořit potřebné místo (typ jméno – proměnné;) př.: int x; Proměnná může být definována jako a) globální b) lokální uvnitř funkce, v níž je deklarována Hodnotu konstanty přiřazujeme položce přiřazovacím příkazem jméno – proměnná = hodnota. Nejčastěji používaný příkaz výstupu dat na obrazovku je printf ( );, nejčastější příkaz pro načtení dat z klávesnice je scanf ( ); Oba příkazy lze zadáním parametrů v ( ) více specifikovat. Činnost programu lze zastavit příkazem systém ("PAUSE"); Obrazovku smažeme příkazem ("CLS"); Na proměnné můžeme aplikovat operátory: Činnost sčítání odčítání větší než větší než nebo rovno menší než menší než nebo rovno rovno nerovno
Operátor + > >= < <= == !=
nebo logické (relační) operátory Nevyšší
! >>=<<= = =!= &&
Nejnižší
Přechod na nový řádek zajistíme \n. Pro větvení programu používáme příkaz if (výraz) příkaz; nebo if (výraz) příkaz1; else příkaz2; U výrazu se zkoumá jeho pravdivost. Komentáře v programu /∗komenář∗/ V programech můžeme používat cykly while, do while a for. a) while (výraz) příkaz; může mít podmínku na začátku nebo na konci cyklu. b) do {tělo cyklu} while (výraz); c) for (inicializace, test podmínky, krok) příkazy; K načtení vstupního údaje lze použít také příkaz getch ( ); Data, zvláště ekonomické údaje, lze ukládat do pole. U pole určujeme typ dat, která do tohoto pole můžeme ukládat a rozsah znaků, které může proměnná mít. Tyto údaje se uvádí již v části deklarace proměnných viz char prijmeni[100][30]; nebo double mzda [100]; Pro opakující se části, lze použít tzv. podprogram. V programech používáme tzv. MENU, které dovolí uživateli strukturování jeho požadavků. Naposledy vytištěno 5.3.2013 8:55:00 106
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 107 -
Vývojový diagram před zahájením jeho překladu tzv. verifikace – provádíme kontrolu jeho správné funkce na vhodně zvolených vstupních datech. Z toho také vyplývá, že vstupní data pro konkrétní řešení programu musí vyhovovat tzv. vstupní podmínce. Pokud uděláme v přepisu nebo logice řešení úkolu chybu, program nás na chybu upozorní a zvýrazní řádek, kde si myslí, že jsme udělali chybu. Skutečnou chybu však musí nají programátor.
Naposledy vytištěno 5.3.2013 8:55:00
107
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
3.6
- 108 -
Slovní zásoba v jazyce anglickém:
Česká varianta Počítač Umělá inteligence Generace Nula Nultá generace počítačů MARK1 byl počítač první generace EPOS1 byl počítač druhé generace Algoritmus Vývojový diagram Program Paměť Příkaz Obsah paměti Místo Místo v paměti Uložit Konstanta Znak Uložit do paměti Proměnná Uložit proměnnou do paměti Typ Typ proměnné Proměnná typu int Proměnná typu double Proměnná typu float Proměnná typu char Pole Proměnná typu pole Délka Délka proměnné Příkaz Blok příkazů Přiřadit Příkaz přiřazení Procedura Main je první procedura programu Data Číst data Načti data do proměnné Vstup dat Výstup dat Knihovna Naposledy vytištěno 5.3.2013 8:55:00 108
Slovíčka v jazyce anglickém Psáno anglicky Computer Artificial Intelligence Generation Zero Zero Generation Computers Mark 1 was the first generation computer. EPOS 1 was the second generation computer. Algorithm Flowchart Computer Programme Memory command Memory Contents Space Memory space Save Constant Character Save into Memory Variable Save variable into Memory Type Variable type int variable double variable float variable char variable Array Array Length Variable Length Command Block of commands Assign Assignment command Procedure Main is first a function Data To read Data Read Data into a variable Data Input Data Output Library
Výslovnost
[kęmpju:tę:] [a:rtęfišęl intelędžęns] [dženę:eišęn] [zirou] [zirou dženę:eišęn kęmpju:tęs: ]
[ąlgę:iđęm] [kęmpju:tę: prougrąm] [memę:i:] [kęmąnd] [memę:i: ka:ntents] [speis] [memę:i: speis ] [seiv] [ka:nstęnt] [keriktę:] [seiv intu: memę:i:] [veri:ębęl] [taip] [veri:ębęl taip]
[ę:ei] [leńk0] [veri:ębęl leńk0] [kęmąnd] [bla:k av kęmąndz] [ęsain] [ęsainmęnt kęmąnd] [pręsi:džę:] [deitę] [tu: red deitę] [deitę input] [deitę autput]
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 109 -
Knihovna vstupu a výstupu
Input and Output Library
% procento Lomítko Úvozovky „ ..“ Závorky {} Komentář /* ….*/ Cyklus Tělo cyklu Cyklus while Cyklus do while
% ratio/per cent Slash/forward slash Quotation Marks Brackets Comment Loop Loop body While loop Do – While loop
Cyklus for Podmínka Pole Prvek Počet Počet prvků pole Zadání úlohy Informatika Teoretický základ informatiky
For loop Condition Array Item Count/ computation number Number elements of array Problem spetting/Task Informatics Theoretical Basis on Informatics Manager Economist Go over (to) Go over (to) a new line
Manažer Ekonom Přejdi Přejdi na nový řádek Výraz Uložit Zadání Zadání úlohy Teorie Řešení Grafické řešení Obsahuje Funkce Algoritmus je řešením úlohy. Vývojový diagram je grafickým řešením algoritmu. Program obsahuje příkazy. Program obsahuje funkci main Do paměti ukládáme data. Do paměti ukládáme příkazy. Do paměti ukládáme proměnné Do paměti ukládáme data i příkazy Data a proměnné mají v paměti délku. Blok příkazů obsahuje příkazy. Naposledy vytištěno 5.3.2013 8:55:00
Vep Save Setting Problem spetting/Task Theory Solution Graphic Solution Includes Function Algorithm is the solution of the problem. Flowchart is a graphic solution of the algorithm. The programme includes instruction commands. The programme includes the function main. Data is saved into memory. Instruction commands are saved into memory. Parameter/Variable is saved into memory. Data and instruction commands are saved into memory. Data and instruction have a length in memory. Block of instructions includes commands/ Data and variables
[input ąnd autput laibreri:] [kwouteišęn ma:rks] [brąkęts] [ka:ment] [lu:p] [lu:p ba:di:] [mail lu:p] [du: mail lu:p] [fo:r lu:p] [kęndišęn] [ę:ei] [aitęm]
[infę:mątiks] [mąnędžę:] [ika:nęmist] [gou ouvę:]
[seiv] [setiń] [0iri:] [sęlu:šęn] [grafik sęlu:šęn] [inklu:dz] [fańkšęn]
109
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
a = 5 je příkaz přiřazení
První funkce programu je main Příkaz #include<studio.h >; vyvolá knihovnu vstupu a výstupu Obrazovka Příkaz printf ( ); píše na obrazovku Příkaz scanf( ); čte data ze vstupu Proměnná je typu int Podmínka Obrazovka Cyklus má podmínku a tělo cyklu Pole má určitý počet prvků \n nařizuje přejít na další řádek. Studujeme teoretické základy informatiky pro manažery a ekonomy Přepis zadání do vývojového diagramu
Naposledy vytištěno 5.3.2013 8:55:00 110
- 110 -
have the length in memory a is 5 is an assignment command/ a is 5 is a command of assign The first function is main Command #include <studio.h>, call input library and out put library Screen
Command? WTF Int variable Condition/Term Screen Loop, has body The array has a certain number of elements. \n commands to go over to next line We study theoretical basis of informatics for managers and economists. The transcription of the setting to the flowchart
[skri:n]
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
3.7
- 111 -
Otázky
Co to je algoritmus? (jednoznačně určená posloupnost konečného počtu elementárních kroků, vedoucích k vyřešení daného problému při splnění podmínek hromadnosti, jedinečnosti, konečnosti, rezultativnosti, správnosti a výsledku) Co to je vývojový diagram? (je to je druh diagramu, který slouží ke grafickému znázornění jednotlivých kroků algoritmu, nebo obecného procesu) Jak provádíme verifikaci programu? (Navrhneme kombinace vstupních dat tak, abychom ověřili správnou funkci všech větví programu). K čemu slouží vstupní proměnné v programu? (Pro načtení vstupních dat a práci s daty). K čemu slouží výstupní proměnné v programu? (Pro tisk výstupních dat). K čemu slouží cyklus? (Cyklus slouží k opakování části programu, dokud je splněna podmínka) Jaké typy cyklů používáme nejčastěji při algoritmizaci úloh? (while, do_while, for) Co zabezpečuje je editor? Zápis vývojového diagramu do zdrojového kódu daného jazyka Jakou funkci má překladač? (Přeloží program. Výstupem je soubor s koncovkou .obj) Co to je linker? (připojuje externí knihovny) K čemu slouží tzv. hlavičkový soubor? (umožní programu připojení externích knihoven, má příponu .h a tvar #include <stdio.h>) Jakým klíčovým slovem se zapisuje funkce v programu? (main( )) Který příkaz zajistí připojení knihovny I/O? (#include <stdio.h>) Proč potřebujeme v programu deklarovat proměnné? (Potřebujeme říci překladači, o jaký typ proměnné jde, kolik místa si má v paměti na proměnnou vyčlenit, jaké operace jsou s touto proměnnou dovolené). Který příkaz deklaruje celé číslo se znaménkem? (int) Který příkaz deklaruje desetinné číslo s pohyblivou řádovou čárkou s dvojnásobnou délkou? (double) Naposledy vytištěno 5.3.2013 8:55:00
111
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 112 -
Který příkaz deklaruje desetinné číslo s pohyblivou řádovou čárkou? (float) Jakou strukturu má deklarace proměnné? (typ jméno_proměnné;) Jakou strukturu má deklarace příkaz pro naplnění proměnné konstantou? (jméno_proměnné=konstanta;) .Ve kterém řádku je chyba? #include <stdio.h>; #include <stdio.c>; #include <stdio.d>; Všechny odpovědi jsou správné. (ve druhém, třetím a čtvrtém) Musí být za příkazem printf( ) středník? (Ano, musí být vždy) Musí být středník za příkazem scanf ("%d",&mzda)? (Ano, musí být vždy) .Co způsobí příkaz system("PAUSE"); ? (Program se zastaví a na obrazovku napíše Pokračuj stlačením libovolné klávesy… Po stlačení libovolné klávesy program pokračuje).
Co způsobí příkaz \n v příkazu printf(“\n“)? (Program posune kurzor obrazovky na nový řádek). K čemu slouží příkaz scanf("%d",&mzda);? (Je to příkaz na načtení dat (celých čísel) z klávesnice do proměnné mzda.) Co určuje "%d" v příkazu scanf("%d",&mzda);? (mzda je typ proměnné double). Co určuje & v příkazu scanf("%d",&mzda);? (Označuje proměnnou) .Co vykoná příkaz system("CLS");? (Smazání obrazovky)
Co znamení v programu C příkaz int a,b,c; ? (proměnné typu a, b, c budou celá čísla) Jakou strukturu má cyklus if ? (if(podmínka)příkaz;))
.Jakou strukturu má cyklus if, else ? (if(podmínka)příkaz1 else příkaz2;) K čemu slouží příkaz getch(); ? (k načtení dat do proměnné)
Co vykoná příkaz if (char==“S“) printf(“%d“, a+b); ? Naposledy vytištěno 5.3.2013 8:55:00 112
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 113 -
(Pokud char =“S“, vytiskne se na obrazovku součet obsahu proměnných a, b (celočíselné hodnoty)) Co znamená deklarace char a[30][10]; ? (Proměnná a je typu pole o 30 řádcích, každý řádek má 10 znaků)
.Program má určit, které ze dvou zadaných čísel je větší a toto vytisknout. Který zápis je správný? a) #include <stdio.h> main () { int a,b,c; system("CLS"); printf("zadej a:"); scanf ("%d",&a); printf("zadej b:"); scanf ("%d",&b); if(a>b){ printf("vetsi cislo je a \n"); } else { printf("vetsi cislo je b \n"); } } b) main () { int a,b,c; system("CLS"); printf("zadej a:"); scanf ("%d",&a); printf("zadej b:"); scanf ("%d",&b); if(a>b){ printf("vetsi cislo je a \n"); } else { printf("vetsi cislo je b \n"); } } c)#include <stdio.h> { int a,b,c; system("CLS"); printf("zadej a:"); scanf ("%d",&a); printf("zadej b:"); scanf ("%d",&b); if(a>b){ printf("vetsi cislo je a \n"); } else { printf("vetsi cislo je b \n"); } } .d) Žádný zápis není správný (odpověď a je správná) .Program má načíst hrubou mzdu pracovníka Kotka do proměnné „mzda Kotek“ a následně ji zobrazit na obrazovku „Hrubá mzda pana Kotka je 18500“. Který zápis je správný? a) #include <stdio.h> main () {int mzda; system("CLS"); printf("zadej hrubou mzdu pana Kotka:"); scanf ("%d",&mzda); printf("hruba mzda pana Kotka je:%d\n",mzda); system("PAUSE"); } b)main () {int mzda; system("CLS"); printf("zadej hrubou mzdu pana Kotka:"); scanf ("%d",&mzda); printf("hruba mzda pana Kotka je:%d\n",mzda); system("PAUSE"); } .c)#include <stdio.h> {int mzda; system("CLS"); printf("zadej hrubou mzdu pana Kotka:"); scanf ("%d",&mzda); } .d)#include <stdio.h> main () {int mzda; system("CLS"); printf("zadej hrubou mzdu pana Kotka:"); } (Odpověď a je správná) Program má načíst dvě čísla z klávesnice, má je sečíst a na monitor vypsat: Program na součet dvou čísel „a =“ …… „b =“ …… a „ + “, b, „=“, c Který zápis je správný? a) #include <stdio.h> main () {int a,b,c; system("CLS"); printf("zadej a:"); scanf ("%d",&a); printf("zadej b:"); scanf ("%d",&b); c=a+b; printf("a=%d\n",a); printf("b=%d\n",b); printf("c=%d\n",c); printf("%d+%d=%d\n",a,b,c); system("PAUSE"); } b) main (); {int a,b,c; system("CLS"); printf("zadej a:"); scanf ("%d",&a); printf("zadej b:"); scanf ("%d",&b); c=a+b; printf("a=%d\n",a); printf("b=%d\n",b); printf("c=%d\n",c); printf("%d+%d=%d\n",a,b,c); system("PAUSE"); } Naposledy vytištěno 5.3.2013 8:55:00
113
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 114 -
c) #include <stdio.h> {int a,b,c; system("CLS"); printf("zadej a:"); scanf ("%d",&a); printf("zadej b:"); scanf ("%d",&b); c=a+b; printf("a=%d\n",a); printf("b=%d\n",b); printf("c=%d\n",c); printf("%d+%d=%d\n",a,b,c); system("PAUSE"); }
.Následující program má sečíst dvě čísla a součet vypsat na obrazovku. Který zápis je správný? a) #include <stdio.h> main () {system("CLS"); printf("zadej a:"); scanf ("%d",&a); printf("zadej b:"); scanf ("%d",&b); c=a+b; printf("a=%d\n",a); printf("b=%d\n",b); printf("c=%d\n",c); printf("%d+%d=%d\n",a,b,c); system("PAUSE"); } b) main () {system("CLS"); printf("zadej a:"); scanf ("%d",&a); printf("zadej b:"); scanf ("%d",&b); c=a+b; printf("a=%d\n",a); printf("b=%d\n",b); printf("c=%d\n",c); printf("%d+%d=%d\n",a,b,c); system("PAUSE"); } c) #include <stdio.h> {system("CLS"); printf("zadej a:"); scanf ("%d",&a); printf("zadej b:"); scanf ("%d",&b); c=a+b; printf("a=%d\n",a); printf("b=%d\n",b); printf("c=%d\n",c); printf("%d+%d=%d\n",a,b,c); system("PAUSE"); } d) žádný zápis není správný .Počítač v jazyce anglickém je a) Computer b) Memory c) Save c) Theory Umělá inteligence v jazyce anglickém je a) Computer Programme b) Memory space c) Assignment command d) Artificial Intelligence
Naposledy vytištěno 5.3.2013 8:55:00 114
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
4
- 115 -
Kódování informace v počítači
Co bude posluchač po prostudování kapitoly znát: 1. 2. 3. 4. 5.
Význam zakódování dat v počítači pomocí číselné hodnoty. Způsob zakódovaní znaků abecedy pomocí ASCII tabulky. Varianty kódování českého jazyka pomocí kódových stránek Význam a způsob šifrování pomocí jednoduchých šifer. Princip zabezpečení šifrovaného přenosu v prostředí internetu.
4.1
Principy ASCII kódu
Cíl: Pochopení významu ukládání dat v počítači a významu ukládání informace do počítače V počítači se ukládají všechna data ve formě binárních informací pomocí nul a jedniček. S těmito daty počítač pracuje ve své operační paměti tím způsobem, že jsou načtena do jednotlivých registrů procesoru a jsou s nimi prováděny instrukce procesoru. Pro tuto práci s instrukcemi procesoru je vytvořen určitý paměťový prostor, který se vyjadřuje v konkrétních jednotkách. Nejmenší jednotka je jeden bit (0 nebo 1). Z této jednotky jsou vytvářeny další odvozené jednotky. Datová jednotka BYTE Byte – je jednotka vyjadřující množství dat v informatice. Obsahuje 8 bitů (bit nejmenší jednotka 0 nebo 1), které reprezentují číslo od 0 do 255 v desítkové číselné soustavě. Do jednoho byte lze uložit 256 znaků. Současné počítače pracují s jednotkami většími než jeden byte, říká se jim slovo. ( 64 bitová architektura pracuje s 8 byte najednou ) V praxi se používají násobky této jednotky dle následující tabulky:
Jednotka
Značka
B
kB
MB
Kilobajt
kB
1000
1
Megabajt
MB
1 000 000
1000
Gigabajt
GB
109
1 000 000 1000
Terabajt
TB
1012
109
1
1 000 000
Tabulka č. ….: Varianty násobku základní jednotky
Pomocí těchto jednotek se nejčastěji vyjadřuje velikost operační paměti počítače. Další častou variantou je vyjádření velikosti externí paměti počítače – pevného disku. Na pevné disku jsou data uchovávána v určité organizační struktuře, kterou vytváří operační systém počítače. Velmi často Naposledy vytištěno 5.3.2013 8:55:00
115
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 116 -
potřebujeme uchovávat textové informace ze kterých se vytvářejí dokumenty pomocí různých programů, kterým se označují textové editory (např. Word). Tyto textové informace vytváří uživatel psaním na klávesnici nebo jinou formou. Dochází tak ke komunikaci mezi uživatelem a počítačem. Při stisku určité klávesy si počítač zapamatuje číslo, které je této klávese přiřazeno. Toto číslo je určeno pomocí tabulky. V následující kapitole je popsána nejčastější forma této tabulky tzv. ASCII tabulka.
4.2
ASCII tabulka a její použití
Cíl: Pochopení významu kódování písmene abecedy do paměti počítače Při práci s počítačem člověk potřebuje převádět informace vizuálního charakteru (písmena mají určitý tvar) jako je například tištěné nebo psané písmo na číselnou hodnotu, kterou si počítač zapamatuje ve své vnitřní paměti nebo na vnějším médiu (pevný disk). Tento proces je spojen s akcí, která se nazývá kódování, přiřazení určitému písmenu určité číslo (kód). K této činnosti potřebujeme tabulku, která toto přiřazení provádí pro jednotlivé písmena abecedy a také pro jednotlivé číslice. Nejznámější formou takovéto tabulky je ASCII tabulka. ASCII je zkratkou pro American Standard Code for Information Interchange („americký standardní kód pro výměnu informací“). Tato tabulka přiřazuje číslo každému písmenu anglické abecedy, číslicím a tzv. řídícím povelům. Tato tabulka se zobrazuje v různých podobách a různých číselných soustavách. V této tabulce jsou znaky rozděleny do několika různých skupin podle významu. V první části jsou to tzv. řídící kódy, které nejsou často zobrazitelné. Řídící kódy jsou určeny pro různá zařízení, která se připojovala jako externí periférie a pro ně byl určen znak např. CR návrat vozíku a LF nový řádek. Hlavní význam pro praxi je přiřazení číselných kódu jednotlivým písmenům velké a malé abecedy. Jedná se o anglickou abecedu bez použití české diakritiky. Tato diakritika je uvedena v různých variantách jako číselné kódy za čísly ASCII tabulky. Jednotlivé skupiny ASCII tabulky jsou následující: • • • • • • • •
čísla 1 – 31 představují řídící kódy čísla 32 – 47 představují znaménka čísla 48 – 57 představují číslice 0 – 9 čísla 58 – 64 představují další znaménka, dvojtečka a podobně čísla 65 – 90 představují písmena velké abecedy (A=65, B=66 …) čísla 91 – 96 představují značky čísla 97 – 122 představují písmena malé abecedy (a=97, b=98 …) čísla 123 – 126 představují další značky
Naposledy vytištěno 5.3.2013 8:55:00 116
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 117 -
Následující tabulka popisuje 127 znaků ASCII tabulky v desítkové, oktalové a binární podobě.
dekadic oktal Hex binárně znak význam znaku 000 000 00 00000000 NUL (Null char.) 001 001 01 00000001 SOH (Start of Header) 002 002 02 00000010 STX (Start of Text) 003 003 03 00000011 ETX (End of Text) 004 004 04 00000100 EOT (End of Transmission) 005 005 05 00000101 ENQ (Enquiry) 006 006 06 00000110 ACK (Acknowledgment) 007 007 07 00000111 BEL (Bell) 008 010 08 00001000 BS (Backspace) 009 011 09 00001001 HT (Horizontal Tab) 010 012 0A 00001010 LF (Line Feed) 011 013 0B 00001011 VT (Vertical Tab) 012 014 0C 00001100 FF (Form Feed) 013 015 0D 00001101 CR (Carriage Return) 014 016 0E 00001110 SO (Shift Out) 015 017 0F 00001111 SI (Shift In) 016 020 10 00010000 DLE (Data Link Escape) 017 021 11 00010001 DC1 (XON)(Device Control 1) 018 022 12 00010010 DC2 (Device Control 2) 019 023 13 00010011 DC3 (XOFF)(Device Control 3) 020 024 14 00010100 DC4 (Device Control 4) 021 025 15 00010101 NAK (Negative Acknowledgement) 022 026 16 00010110 SYN (Synchronous Idle) 023 027 17 00010111 ETB (End of Trans. Block) 024 030 18 00011000 CAN (Cancel) 025 031 19 00011001 EM (End of Medium) 026 032 1A 00011010 SUB (Substitute) 027 033 1B 00011011 ESC (Escape) 028 034 1C 00011100 FS (File Separator) 029 035 1D 00011101 GS (Group separátor) 030 036 1E 00011110 RS (Request to Send)(Record Separator) 031 037 1F 00011111 US (Unit Separator)
Značky a interpunkční znaménka 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047
040 041 042 043 044 045 046 047 050 051 052 053 054 055 056 057
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
00100000 00100001 00100010 00100011 00100100 00100101 00100110 00100111 00101000 00101001 00101010 00101011 00101100 00101101 00101110 00101111
SP ! " # $ % & ' ( ) * + , . /
(Space) (exclamation mark) (double quote) (number sign) (dollar sign) (percent) (ampersand) (single quote) (left opening parenthesis) (right closing parenthesis) (asterisk) (plus) (comma) (minus or dash) (dot) (forward slash)
Číslice
Naposledy vytištěno 5.3.2013 8:55:00
117
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
048 049 050 051 052 053 054 055 056 057
060 061 062 063 064 065 066 067 070 071
30 31 32 33 34 35 36 37 38 39
00110000 00110001 00110010 00110011 00110100 00110101 00110110 00110111 00111000 00111001
0 1 2 3 4 5 6 7 8 9
3A 3B 3C 3D 3E 3F 40
00111010 00111011 00111100 00111101 00111110 00111111 01000000
: ; < = > ? @
- 118 -
Další značky 058 059 060 061 062 063 064
072 073 074 075 076 077 100
Písmena velké abecedy 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090
101 102 103 104 105 106 107 110 111 112 113 114 115 116 117 120 121 122 123 124 125 126 127 130 131 132
41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A
01000001 01000010 01000011 01000100 01000101 01000110 01000111 01001000 01001001 01001010 01001011 01001100 01001101 01001110 01001111 01010000 01010001 01010010 01010011 01010100 01010101 01010110 01010111 01011000 01011001 01011010
Značky a závorky
Naposledy vytištěno 5.3.2013 8:55:00 118
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
(colon) (semi-colon) (less than sign) (equal sign) (greater than sign) (question mark) (AT symbol)
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
091 092 093 094 095 096
133 134 135 136 137 140
5B 5C 5D 5E 5F 60
01011011 01011100 01011101 01011110 01011111 01100000
- 119 -
[ (left opening bracket) \ (back slash) ] (right closing bracket) ^ (caret cirumflex) _ (underscore) `
Písmena malé abecedy 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
141 142 143 144 145 146 147 150 151 152 153 154 155 156 157 160 161 162 163 164 165 166 167 170 171 172
61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A
01100001 01100010 01100011 01100100 01100101 01100110 01100111 01101000 01101001 01101010 01101011 01101100 01101101 01101110 01101111 01110000 01110001 01110010 01110011 01110100 01110101 01110110 01110111 01111000 01111001 01111010
a b c d e f g h i j k l m n o p q r s t u v w x y z
Další značky a poslední je řídící kód pro vymazání znaku, na klávesnici je často stejně označen 123 124 125 126 127
173 174 175 176 177
7B 7C 7D 7E 7F
01111011 01111100 01111101 01111110 01111111
{ (left opening brace) | (vertical bar) } (right closing brace) ~ (tilde) DEL (delete)
Při prostudování ASCII tabulky vidíme, že poslední znak je 127 binárně 01111111 , kde jedničky obsazují 7 bitů. Další část tabulky využívá právě 8 bit pro další číselné kódy, které vyjadřují diakritiku v různých jazycích. Tuto další část definuje operační systém jako kódovou stránku pro určitý jazyk. V operačním systému WINDOWS se pro český jazyk používá tabulka s označením kódová stránka 1250.
Cvičení: Napište své jméno a příjmení pomocí ASCII tabulky v různých číselných soustavách. Příklad napsání zprávy pomocí ASCII tabulky, horní řádek text a dolní řádek číselné vyjádření: Naposledy vytištěno 5.3.2013 8:55:00
119
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
Písmeno Číslo desítkově
A 65
h 104
o 111
- 120 -
J 106
Tímto způsobem se zapisují jednotlivé znaky při psaní na klávesnici do textového editoru (program). Pokud do souboru pokus.txt napíšeme text na více řádků např. Ahoj kluci A holky V souboru budou uloženy následující číselné kódy, které v hexadecimální formě zobrazuje editor PS PAD dle následujícího obrázku. Všimněte si, že jednotlivé znaky textu jsou zobrazeny v hexadecimální soustavě dle ASCII tabulky.
Obr…. Ukázka hexadecimálního zápisu textu pomocíASCII tabulky
Pokuste se v této variantě zobrazení nalézt znaky, které určují konec řádku. Při analýze textu zjistíte, že se jedná o dva znaky „OD“ a „OA“ v hexadecimální formě, které představují řídící kódy ASCII tabulky CR a LF. Tyto znaky znamenají návrat vozíku a nový řádek, jedná se o analogie s psacím strojem, kde se ručně posouval válec na začátek pomocí páky.
4.3
Český jazyk a jeho kódování na počítači
V další části se zaměříme na problematiku jak jsou zakódovány znaky české abecedy, když ASCII tabulka popisuje jen znaky anglické abecedy bez diakritiky. Je to realizováno tak, že písmena např. ěščřžýáíé a podobně jsou přiřazena v tabulce až za číslem 127, tedy v další části tabulky. K dispozici máme číselné hodnoty 128-255. Pro český jazyk se vymyslelo několik tabulek ve kterých je diakritika obsažena.
V následující tabulce je ukázána možnosti kódování češtiny pomocí různých kódovacích tabulek. Windows1250
kód používaný firmou Microsoft v operačních systémech Windows pro kódování středoevropských jazyků
ISO 8859-2
standard ISO, používaný např. v operačním systému Linux
CP852(Latin2)
kód stanovený firmou IBM používaný např. v operačním systému DOS. Česká Windows jej dodnes využívají při zadávání speciálních znaků pomocí alt-kódů.
Naposledy vytištěno 5.3.2013 8:55:00 120
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 121 -
Například když stisknete klávesu alt, vyťukáte číslo 248 a klávesu alt pustíte, objeví se na obrazovce znak pro stupeň - °. V tabulce znaků je uveden pod hexadecimálním kódem F8, což je dekadicky 248. Kód Kamenických
jiné kódování používané v DOSu pro potřeby češtiny a slovenštiny
KOI8-ČS
kódování definované v rámci RVHP
Tab.:… varianty kódování českého jazyka v počítači
Z tabulky je zřejmé, že kódování českého jazyka je poměrně složité, protože je vyjádřeno několika různými tabulkami. Tato situace vznikla vývojem různých operačních systémů, které se na počítačích používaly. Data, která na těchto počítačích vznikala se převáděla do nových operačních systémů a byla důležitá z hlediska zachování informace, kterou nesla, proto se často ponechala v původním číselném kódu. Na tuto situaci reagovaly firmy v oblasti IT vývojem kódování UTF 8 tzv. Unicode, který vyjadřuje více jazyků v jedné kódové stránce a je tedy univerzální pro použití. Tento kód se nyní používá na internetu a dalších oblastech, protože sjednocuje zobrazení www stránek pro různé operační systémy. Pro převod mezi různými variantami kódování českého jazyku můžeme použít také editor PS PAD, který na následujícím obrázku zobrazuje menu s formátováním textu podle vybrané kódové stránky.
Obr…. Ukázka převodu různých variant českého jazyka pomocí menu editoru PS PAD
V tomto editoru lze provádět převod textu mezi různými operačními systémy jako např. UNIX a MAC, které odlišným způsobem určují konec řádku. Pro UNIX stačí znak LF nový řádek návrat vozíku a pro MAC zase znak CR návrat vozíku. Znaková sada českého jazyka se zaznamenává nejen do textových souborů, ale také do databází, které jsou propojeny v informační systémy. V těchto databázích jsou uleženy také textové informace a ty je nutno zpracovat a zobrazovat v různých programech. Z těchto důvodů někdy vzniká dojem, že například www stránky špatně pracují s českým jazykem a nezobrazují správně diakritiku. Také v prohlížeči můžeme nastavit různé kódování češtiny podle variant, které byly uvedeny v předcházejících odstavcích. Naposledy vytištěno 5.3.2013 8:55:00
121
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 122 -
Obr…. Zobrazení textu kódovaného pomocí HTML příkazu WWW stránky
Na obrázku je PS PAD editor s vygenerovanou WWW stránkou pomocí HTML kódů Řádek: <meta http-equiv="content-type" content="text/html; charset=windows-1250"> Ukazuje způsob kódování češtiny v HTML kódu WWW stránky.
Obr…. Ukázka varia-nty zobrazení pro různé jazyky na internetovém prohlížeči Prohlížeč WWW stránek Google chrome dovoluje nastavit různé varianty kódování také ručně z manu. Na menu, které je na obrázku je vidět způsoby kódování pro různé jazyky od Arabštiny až po Západní jazyky.
Naposledy vytištěno 5.3.2013 8:55:00 122
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 123 -
Cvičení: Napište text „Správně česky“ v PSPAD editoru do souborů c1.txt pomocí kódové stránky windows1250 a do souboru c2.txt pomocí kódové stránky ISO-8859-2. Porovnejte znaky ASCII tabulky, že jsou stejné a dále porovnejte znaky s českou diakritikou. Vyzkoušejte program v C jazyku pro výpis ASCII tabulky s dekadickými hodnotami. Ve tvaru číslo mezera znak.
Obr. … výpis obrazovky programu ASCII tabulky v C jazyku
Zdrojový kód programu je následující: #include <stdio.h> main () { int i; printf("Ascii tabulka\n"); i=1; while (i<=127) //cyklus vypisu dat { printf("%d %c\n",i,i); //vypis cisla a pismene i=i+1; } system("PAUSE"); } V programu je pro výpis je použit cyklus typu while, který postupně vypisuje proměnou cyklu „i“ jako číslo a jako písmeno příkazem printf("%d %c\n",i,i); v tělě cyklu a pokaždé postupně zvětšuje hodnotu proměné „i“ o jedničku.
Naposledy vytištěno 5.3.2013 8:55:00
123
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
4.4
- 124 -
Principy šifrování dat na počítači.
Šifrování představuje způsob ukrývání požadované informace. Jedná se o nauku o různých metodách jak požadovanou zprávu změnit, aby nebyla čitelná pro nepovolanou osobu. Tato nauka se také nazývá kryptografie. Slovo kryptografie pochází z řeckého kryptós – skrytý a gráphein – psát. Tato nauka se vyvíjela dlouhá staletí a je spojena s historickými válkami i různým politickým vývojem. Zajímavostí může být, že do této oblasti vstoupil i římský vojevůdce Julius Caesar, který navrhl vlastní způsob šifrování pomocí tabulky, tato šifra se nazývá Ceasarova šifra. Princip tohoto způsobu šifrování spočívá v posunu písmen abecedy o pevný počet znaků. Ceasar používal posun o 3 písmena doprava a šifroval tímto způsobem své zprávy při galské válce. A B C D E F G H I J K L M N O P Q R S T U V W X Y Z X Y Z A B C D E F G H I J K L M N O P Q R S T U V W Tab. .. ukázka kódovací tabulky
Nejprve napíšeme zprávu a v dalším kroku provedeme její šifrování. Postupně bereme jedno písmeno za druhým z horního řádku tabulky a nahrazujeme novými písmeny z druhého řádku tabulky. Tímto způsobem dostaneme nový text, kde počet písmen zprávy zůstane stejný jako v původní zprávě. Dekódování zprávy se provede stejným procesem, kdy bereme postupně jednotlivá písmena kódované zprávy podle spodního řádku tabulky a zaměňujeme je podle horního písmene tabulky. Klíčem u tohoto způsobu šifrování je číslo o kolik jsou posunuta jednotlivá písmena v tabulce. Tento způsob šifrování se nazývá substituční šifrování (substituce – záměna). Tento způsob šifrování se nazývá substituční šifrování (substituce – záměna). Ukázka: Zpráva: AHOJ STUDENTI Zašifrovaná zpráva: XELG PQRABKQF
Cvičení: Vyzkoušejte si zašifrovat vlastní přijmení bez diakritiky s novou tabulkou kde si určíte posun o 10 znaků písmen abecedy. Navrhněte vývojový diagram pro šifrování a dešifrování zprávy zadané z klávesnice počítače. Nevýhodou tohoto způsobu zašifrování zprávy je možnost zjištění šifry pomocí vyzkoušení všech kombinací při tomto způsobu šifrování. Tento způsob odhalení se nazývá dešifrování hrubou silou. Při použití počítačů lze tuto zprávu rychle dešifrovat. V době druhé světové války hrálo šifrování velký význam a pro šifrování se požívaly různá zařízení, která měla za cíl automatizovat činnost šifrování. Jednalo se o kombinaci klávesnice a mechanických částí různých kotoučů ve spojené s elektrickým zapojením.
Naposledy vytištěno 5.3.2013 8:55:00 124
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 125 -
Zdroj: http://upload.wikimedia.org/wikipedia/commons/a/ae/Enigma.jpg
Také zprávy z tohoto zařízení se podařilo dešifrovat pomocí kryptoanalýzy vědy, která se zabývá dešifrováním zpráv. Další variantou jsou tzv. transpoziční šifry, při kterých se nezaměňuje písmeno zprávy jiným písmenem, ale mění se pouze pozice písmene ve zprávě. Pro šifrování lze použít tabulku, do které zapíšeme text zprávy po řádcích a šifrujeme tím způsobem, že jej píšeme po sloupcích. Ukázka v tabulce 5x5 okýnek: Zpráva: AHOJ KLUCI A HOLKY- POCITAM Zašifrovaná zpráva: AK KCHLAYIOU –TJCHPA ILOM
A H K L A K Y C I
O U T
J C H P A
I L O M
Dešifrování zprávy se provede tím způsobem, že zapíšeme zprávu do tabulky po sloupcích a čteme po řádcích tabulky. Varianty tohoto způsobu šifrování mohou být různé v tom, že zašifrování můžeme provádět podle různého schématu. Zpráva: AHOJ KLUCI A HOLKY- POCITAM Zašifrovaná zpráva: AY-PHCULK KCITAMOLI JOHA
Naposledy vytištěno 5.3.2013 8:55:00
125
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
A K K C
H L A Y I
O U T
J C H P A
- 126 -
I L O M
Tab. č. xxx způsob zašifrování zprávy transpoziční metodou
Předcházející způsob zašifrování postupně zapisuje zprávu od středu jako spirálu k obvodu tabulky. Pro dešifrování použijeme zápis do tabulky a čteme výslednou zprávu po řádcích. Klíčem pro dešifrování zpráv je v obou případech velikost tabulky a tvar zápisu zprávy při šifrování. Další variantou pro šifrování pomocí transpoziční metody je tzv. šifrovací mřížka. Tato mřížka má různě rozmístěné otvory do kterých se zpráva zapíše a dále se zpráva doplní v místech kde zůstaly volné pozice pro písmena. Obrázek ukazuje tabulku, kdy píšeme zprávu do červených políček. V některých variantách lze šifrovací mřížku otáčet o 90 stupňů a psát další text zprávy.
Tab.č….: šifrovací mřížka transpoziční šifry
Klíčem pro dešifrování zprávy je právě tato šifrovací mřížka, kterou položíme na zprávu a čteme po řádcích. Cvičení: Vyzkoušejte si zakódování zprávy: DOBRY DEN STUDENTE pomocí transpoziční šifry s tabulkou 4x4 s variantou zápisu po řádcích a čtení po sloupcích. V současné době se používají mnohem složitější šifry, jejichž dekódování trvá i na počítačích mnohem déle a jejichž bezpečnost je dána jejich matematickou podstatou.
4.5
Principy zabezpečení přenosu dat na internetu.
V současné době, kdy velké množství dat se pohybuje v prostředí internetu, je důležitá spolehlivá komunikace mezi klientem a serverem při výměně informací. Tato spolehlivost je důležitá pro nastolení důvěry při obchodních transakcí, které v prostředí internetu probíhají. Elektronické obchody realizují nejen výměny informací o zákazníkovy, ale také přímé platební transakce, při kterých je důvěra nedílnou součástí realizovaného obchodu. Platební transakce mohou probíhat nerůznější formou podle přání zákazníka, z nichž jedna může být přímý převod platebních prostředků z účtu zákazníka na účet firmy, která prodává zboží. Při těchto obchodech je nutné zašifrovat určité údaje tak aby nemohlo dojít ke zneužití komunikace třetí stranou. Princip komunikace na internetu se realizuje pomocí pravidel, kterým se říká protokol. Protokol je tedy soubor pravidel, kterým se realizuje výměna informací mezi dvěma koncovými body. Při vývoji komunikace v prostředí internetu se vyvinulo několik různých protokolů podle typu komunikace (TC/IP, FTP,POP3,IMAP,HTTP…). Naposledy vytištěno 5.3.2013 8:55:00 126
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 127 -
Nejznámějším protokolem je protokol http (hypertext transfer protokol) se kterým se neustále setkáváme při prohlížení WWW stránek. Tento protokol slouží pro výměnu dokumentů mezi klientem a serverem ve formě HTML kódu. Bohužel tento protokol samotný není navržen tak aby zabezpečoval přenášená data. Útočník může data HTML formátu dešifrovat a získat z nich potřebné informace. Tento protokol jako zdroj – server používá URL adresu, kterou je nejčastěji server. URL – Uniform Resource Lokator – Adresa internetového zdroje
Obr. Zobrazení komunikace v prostředí internetu Pro zabezpečení dat mezi klientem a serverem se vyvinul protokol HTTPS (hypertext transfer protocol secure), který dovoluje šifrovat data na cestě mezi klientem a serverem. Tuto variantu používají mnohé banky při komunikaci mezi klientem a bankou. Tento způsob komunikace poznáme podle toho, že v horním řádku prohlížeče vidíme označení https://... S cílovou URL adresou pro komunikaci. Zkratka http říká prohlížeči, že se mají data před komunikcí a posláním po internetu zašifrovat metodou SSL (Secure Sockets Layer), která je velmi bezpečná. Tato komunikace je vhodná pro tyto případy: • • • • •
www e-shopy prodej zboží na internetu komunikace s vládními úřady komunikace s bankami poštovní služby důvěrná výměna informací mezi obchodními partnery
Naposledy vytištěno 5.3.2013 8:55:00
127
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 128 -
Obr. Komunikace klienta s bankou pomocí protokolu SHTTP
V předcházejících kapitolách bylo hovořeno o principech šifrování a vysvětleny nejjednodušší techniky šifrování zprávy. V prostředí internetu se používají šifry, které jsou mnohem bezpečnější tzv. asymetrické šifrování, kdy pomocí jednoho klíče zašifrujeme zprávu a pro dešifrování musíme použít jiný klíč (zjednodušeně řečeno). Pomocí stejného klíče nelze zprávu zašifrovat a rozšifrovat. Tyto šifry používají různě dlouhé klíče, které čím jsou delší tím obtížnější je zprávu dešifrovat. Na tomto principu je vytvořen např. elektronický podpis, který se používám ve státní zprávě pro ověření totožnosti toho kdo posílá určitou zprávu e-mailem nebo jinou formou. Pro tyto účely byly zřízeny instituce a firmy tzv. certifikační autority, které vydávají certifikáty elektronického podpisu. Tato kapitola má za cíl pouze informativně popsat složitost šifrování dat na internetu a způsobu zajištění důvěry při přenášení informací v tomto prostředí, které je naplněné hrozbami a možnostmi zneužití dat k jiným účelům.
Cvičení: • Popište svůj způsob komunikace mezi bankou a klientem v prostředí internetu. Zaměřte se na způsob ověření vaší totožnosti při přihlášení do banky. • Seznamte se kdo vydává certifikáty pro vaši banku při použití SSL komunikace na internetu. • Seznamte se jak složitá je šifra RSA a kde byla poprvé použita.
Naposledy vytištěno 5.3.2013 8:55:00 128
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
5
5.1
- 129 -
Internet a práce s informacemi
Cílové znalosti a dovednosti
Po prostudování této kapitoly si osvojíte základní schopnosti hodnotit získaná data a převést je na informace k vlastním rozhodovacím činnostem. Dále budete umět použít vybrané nástroje pro aplikaci sdílení informací v rámci svého dalšího studia případně v budoucí praxi.
5.2
Klíčová slova
Data, informace, potencionální informace, proces zpracování informace, šumy, sběr informací, vyhledávání informací, internet
5.3
Vymezení základních pojmů
Ať již budeme zkoumat informace z pohledu informační vědy či pohledu informatiky, vždy jsou objektem tohoto zkoumání informace. Tyto informace jsou v průběhu vzniku, přenosu a zpracování ovlivňovány a je možné na jejich cestě definovat určité body, které jsou pro ně během života (informace) charakteristické. Proto je možno vytvořit model, který tuto cestu ukazuje (viz. obr. 7-1 je vyčleněn a také místa ovlivnění původního významu informace (šumy). Šumy mohou být záměrné (tedy záměrné ovlivnění informace) nebo nezáměrné, které je způsobeno většinou chybami v přenosových systémech.
ŠUMY
PROCES ZPRACOVÁNÍ Obr. 7-1: model přenosu informace Zdroj: vlastní
Následující definice, které jsou běžně používané a všeobecně odbornou veřejností akceptovány, se bez bližšího vysvětlení dost těžce chápou a nedávají v některých případech studentům smysl. Přesto je nutné tyto definice předložit čtenáři ke čtení. „Data jsou zprávy (údaje nebo sdělení) odrážející jevy v reálném světě. Data musí být vyjádřena ve formě umožňující předávání a zpracování. Přejímajícím prvkem může být člověk i stroj. Zpracováním dat vznikají potencionální informace“. „Informace se obvykle definuje jako zpráva nebo sdělení, která snižuje tzv. entropii systému neboli neurčitost, neznalost příjemce zprávy o určitém jevu. Informací tak rozumíme sdělení nebo zprávu o tom, že nastal (nebo má nastat) určitý jev (nebo množina jevů), kterým se z hlediska příjemce odstraňuje nebo zmenšuje pravděpodobnost výskytu jiných jevů a tím se zmenšuje nebo odstraňuje neurčitost v jeho chování“. Zamysleme se však nad tím, jak chápat rozdíl mezi daty a informacemi. Vysvětlení a pochopení rozdílu, spočívá zejména v přechodu od dat k informaci. Z našeho hlediska budeme vše považovat za data. Vlastní přechod se pak děje přes tzv. potencionální informaci. Celý proces přechodu od dat k informaci je znázorněn na obr. 7-2.
Naposledy vytištěno 5.3.2013 8:55:00
129
://technet.idn /sw_internet. ?r=sw_intern c=A050330_1 19_sw_intern et_brz roj: vlastní
p://aktualne ntrum.cz/za anici/blizkychod/clanek. tml?id=766 5#utm_sour =centrumH &utm_mediu =dynamiclea ox&utm_ter =position-22
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 130 -
Obr. 7-2: proces přechodu od dat k informaci Zdroj: vlastní
Potencionální informace se stává jakýmsi mezičlánkem přechodu od dat k informaci a je nutně vymezena kontextem a prezentací. Kontext zařazuje data do prostředí a prezentace dává datům smysl. Rozdíl mezi potencionální informací a informací je v tom, že potencionální informace se stane informací v tom okamžiku, kdy je svým uživatelem využita k jeho činnosti.
Příklad: Mějme větu (data) Adam Petr, Kunovice 7, 777 777 777. Z určitých charakteristik, bychom mohli uvažovat nad tím, že se jedná o telefonní číslo. Avšak nemusí tomu tak být. Číslo by nám také mohlo říkat výši konta uživatele. Nejsme ani schopni určit zda je Adam jméno nebo příjmení. Proto k datům přiřadíme kontext v našem případě, uvádíme, že věta patří do telefonního seznamu. Abychom však byli schopni přesně určit všechny údaje, přidáváme prezentaci. Pro přehlednost uvádíme následující souhrn poznatků z našeho příkladu:
Data:
Adam Petr, Kunovice 7, 777 777 777
Kontext:
telefonní seznam
Prezentace:
Příjmení: Jméno: Bydliště: Telefonní číslo:
Adam Petr Kunovice 7 777 777 777
Názory na definici internetu jsou různé. Je však nesporné, že se jedná o volně propojené počítačové sítě, využívající protokoly TCP/IP. Aby byla IP lépe zapamatovatelná a srozumitelná uživateli, využívají se doménová jména, například: www.seznam.cz. Původní označení Internet pochází z mezinárodního inter (mezi) a anglického slova net (network). Původně se jednalo o jednu síť, dnes označuje celou síť. V rámci Internetu, mohou uživatelé používat ke své činnosti mnoho služeb. Tyto služby jsou zajišťovány vytvořenými počítačovými programy navzájem komunikujícími pomocí protokolů. V tabulce 7-1, jsou uvedeny základní služby Internetu. Služba
Popis a upřesnění
www
Systém webových stránek zobrazovaných pomocí webových prohlížečů např. Mozilla Firefox. Běžně se využívá protokolu http, u zabezpečených přenosů je to protokol HTTPS
e-mail
Označovaný jako elektronická pošta, která využívá k přenosu protokolu SMTP. Pro komunikaci s poštovními programy se používá protokolů POP3 a IMAP
Instant messaging
Je využíváno různých komunikačních protokolů. Jedná se o online komunikaci mezi uživateli. Vlastní aplikace se někdy jmenují stejně jako přenosové protokoly např. ICQ
VoIP
Jedná se o telefonování pomocí Internetu. Jako příklad lze uvést Skype
Jedná se o pasivní přenos souborů. Služba se jmenuje stejně jako přenosový protokol Tab. 7-1: Základní služby internetu V informatice je protokol chápán jako konvence nebo standard, podle kterého probíhá elektronická Zdroj: vlastní a přenos dat mezi dvěma koncovými body (realizované nejčastěji počítači). V jednodušší komunikace FTP
podobě lze protokol definovat jako pravidla pro řídící syntaxi, sémantiku a synchronizaci vzájemné komunikace. Protokoly mohou být realizovány hardwarově, softwarově a nebo kombinací obou.
Naposledy vytištěno 5.3.2013 8:55:00 130
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
5.4
Získávání informací vyhledávače
- 131 -
v prostředí
internetu,
internetové
Efektivní vyhledávání informací a jejich aplikace je jedním z důležitých strategických aspektů úspěchu v novodobém prostředí. Schopnost vyhledat relevantní informace patří mezi konkurenční výhodu a nejde ani o to v jakém oboru se tak děje. Podle nejnovějších statistických dat [ČSÚ] mají až dvě třetiny českých jednotlivců a domácností svůj domácí počítač připojený k internetu. Z grafu je vidět, že množství uživatelů a to nejen v České republice je velké. Ovlivňuje to tedy i získávání informací v prostředí internetu. Ovlivnění má dvojí charakter, na jedné straně mnoho lidí informace čerpá a na straně druhé mnoho lidí informace do prostředí internetu poskytuje. Tím je částečně ovlivněna jejich věrohodnost a na druhé straně ztráta tradičního lidského úsudku a porovnávání různých zdrojů.
Graf. 7-1: počet připojení českých domácností k internetu v milionech Zdroj: ČSÚ
V současné době je z technického hlediska mnohem jednodušší získávat informace, než tomu bylo dříve. Místo mnoha hodin strávených UŽIVATEL POŽADAVEK v knihovně, jsou dnes k dispozici elektronické archivy s možností vyhledávání. Specializovaná Analýza požadavku tištěná média se postupně nahrazují tematicky založenými stránkami a také elektronizací jednotlivých úřadů. Nahrazují se také objemné Výběr zdroje encyklopedie, které jsou vlastně již v době svého vydání určitým způsobem obsahově zastaralé. Na druhé straně je takto snadno Rešeršní strategie „získaných“ informací nutnost vytvořit si jako POSOUZENÍ uživatel schopnost získané informace ověřit a RELEVANCE zapojit do souvislostí. Naučit se práci Výstup výsledků s informacemi vyžaduje dlouhé úsilí a také spoustu hodin strávených nad vyhledávači a UŽIVATEL VÝSLEDEK jednotlivými webovými stránkami. Příklad postupu získávání informací Obr. 7-3: postup získávání informací můžeme graficky znázornit obr.7-3 Zdroj: vlastní
5 .4 .1
Internetové vyhledávače
Na počátek našeho povídání, je třeba upozornit na to, že v praxi se setkáváme se dvěma pojmy a to internetový prohlížeč a internetový vyhledávač. Tuto skutečnost si je třeba uvědomit. Internetový vyhledávač je služba, která umožňuje v prostředí internetu nalézt webové stránky, které jsou požadovány od uživatele. Základním cílem vyhledávačů je poskytnout uživateli na jeho dotaz co Naposledy vytištěno 5.3.2013 8:55:00
131
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 132 -
nejvíce relevantní informaci, a proto různými způsoby hodnotí důležitost webových stránek, které mají tyto vyhledávače ve své databázi (např. PageRank).
Úkol: Pomocí internetového vyhledávače Google zjistěte a nastudujte, co znamená PageRank. Vysvětlete svému spolužáku.
Uživatel zadává v rozhraní zvoleného prohlížeče klíčová slova, která charakterizují hledanou informaci, a vyhledávač obratem na základě své databáze vypisuje seznam odkazů na stránky, které hledané informace obsahují. Může se jednat o text, obrázek, nebo i jiné typy informací. Databáze vyhledávačů je převážně udržována automaticky. Vyhledávač pracuje automaticky, k čemuž využívá desítky až statisíce počítačů. Kvalita vyhledávače je posuzována podle toho, jak kvalitní dává odpovědi, tj. zda uživatel najde hledanou informaci na prvních místech odpovědi z vyhledávače. Můžeme zde sledovat dvě snahy a to snahu zlepšování databází vyhledávačů a na druhé straně snahu majitelů stránek modifikovat své stránky tak aby dosáhly na co nejvyšší pozice výstupu vyhledávačů obr. 7-4. Výsledkem je, že vyhledávače musí své metody neustále vylepšovat, aby vyhověly čím dál vyšším požadavkům návštěvníků.
1. procházení webových stránek 2. vytvoření databáze výskytu slov 3. indexování 4. Poskytování odpovědí na dotazy Obr. 7-4: vzájemné vztahy v rámci internetových vyhledávačů Zdroj: vlastní
Jak je vidět na obrázku 7-4, pracuje většina internetových vyhledávačů ve třech krocích: • • • •
Procházení webových stránek Vytvoření databáze výskytu slov Indexování Poskytování odpovědí na dotazy
Procházení webových stránek K vyhledávání na jednotlivých webových stránkách má internetový vyhledávač automatický program, který je označován jako vyhledávací robot. Tento program se za pomoci hypertextových5 odkazů snaží procházet všechny stránky na internetu. Program každou stránku umístní na svůj pevný disk a zaznamená si její URL adresu, aby ji už nenavštěvoval opakovaně. Dále v každé uložené stránce zaznamená všechny hypertextové odkazy na další webové stránky, čímž tak získá další možná místa, které může také navštívit. Program pracuje pořád dokola, takže se na dané stránky po určitém čase zase vrací a tím aktualizuje obsah. 5
Hypertextem, lze označit způsob strukturování textu, který není lineární. Obsahuje tzv. hyperlinky neboli česky (hypertextové) odkazy. Rovněž odkazuje i na jiné informace v systému a umožňuje snadné publikování, údržbu a vyhledávání těchto informací. Nejznámějším takovým systémem je World Wide Web.
Naposledy vytištěno 5.3.2013 8:55:00 132
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 133 -
Vytvoření databáze výskytu slov Nalezené www stránky, které program uložil na svůj disk, je následně nutné zpracovat a vytvořit z nich datovou základnu (databázi). Ve vytvořené databázi jsou zaznamenány všechna nalezená slova a k nim adresy, na kterých se tato zaznamenaná slova vyskytují. Databáze pak odpovídá na to, kde se jaké slovo a na kterých stránkách vyskytuje. Jako problém se ale jeví velikost databáze a její prohledávání, které by trvalo neúměrně dlouho. Dochází proto k tzv. indexaci.
Indexování Indexování souboru umožňuje v datové základně rychlé vyhledávání požadované informace. Současně je index vytvořen tak, aby poskytoval na prvních místech stránky, které mají nejvyšší užitnou hodnotu (relevanci). K výpočtu relevance se využívají nejrůznější algoritmy, které jsou založeny na analýzách jejich obsahu. Například se může jednat o: • • • • •
Váhu slov Atraktivitu stránky Serióznost webu Sponzorované odkazy Technická kvalita
Jak jsme popsali výše, principy práce vyhledávače nepodává úplně aktuální informace, ale jsou prezentovány s určitým zpožděním. Program, který navštěvuje stránky a vytváří databázi to činí co nejčastěji a to zejména pokud se jedná o adresy zpravodajských serverů. Na základě smluv mohou některé servery zasílat informace k zanášení do databáze automaticky, aniž by docházelo k jejich programovému vyhledávání. Aby se zvýšila efektivita, tak se databáze aktualizuje po částech nebo průběžně a tak se aktualizují alespoň nejzajímavější a nejčastěji hledané informace.
Search Engine Optimization - SEO Jedná se o metodiku, podle níž dochází k vytváření a upravování webovských stránek takovým způsobem, aby jejich obsah a forma byly vhodné pro automatizované zpracování v internetových vyhledávačích. Cílem je získat ve výsledku při hledání ve vyhledávačích co nejvyšší pozici a tím zároveň zvýšit počet cílených návštěvníků. Využívané SEO techniky se rozlišují na povolené a zakázané (tzv. Black Hat SEO, které vyhledávače tvrdě postihují například vyřazením ze svého indexu). Etické metody SEO se zhruba dají shrnout tak, že mají snahu vylepšit stránky a tím zvýšit kvalitu z pohledu prohledávajícího programu. Mezi metody patří například:
• Kvalitní a unikátní obsah – kvalitní a unikátní obsah pravidelně aktualizovaný •
Používání značek HTML podle normovaných předpisů – používat doporučený zápis značek pro používaný jazyk například h1 pro nadpis první úrovně, em pro zdůraznění případně strong pro silné zdůraznění, jelikož vyhledávače tak upravenému textu dávají při vyhledávání přednost
•
Používání titulku, nadpisů a podnadpisů (tagy title, h1) – u HTML stránek by se měly uvádět konkrétní popisy například u titulku objektů.
Naposledy vytištěno 5.3.2013 8:55:00
133
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
•
- 134 -
Použití krátké a neměnné URL adresy – krátká adresa podporuje zájem ostatních uživatelů o odkazování na další stránku. Požadavek na neměnnost adres vyplývá z principu fungování vyhledávacích strojů. Příklad: Špatně uvedená adresa z hlediska SEO: http://seznam.cz/katalog/knihy/encyklopedie/ceske-hrady Správně uvedená adresa z hlediska SEO: http://seznam.cz/katalog/ceske-hrady
•
Budování zpětných odkazů – pokud se na stránku odkazuje z jiných webových stránek, zvyšuje se její hodnocení.
SEO – neetické metody Kromě etických metod se některé webové stránky snaží vylepšit svou pozici ve vyhledávačích metodami podvodnými. Proti takovým technikám se vyhledávače obvykle snaží bránit. Stránkám, které takové techniky používají, hrozí při odhalení výrazný propad ve výsledcích, avšak přinejmenším krátkodobě takové techniky mohou být úspěšné. Mezi typické neetické metody patří například: 1.
Spam – Někteří tvůrci webových stránek se pokouší zvýšit počet odkazů na tyto stránky tím, že odkazy na své stránky umisťují do komentářů, internetových diskusí, zasíláním na e-mailovou poštu. Tyto odkazy však nejsou v mnoha případech vítány.
2.
Klamání automatického programu (robota) - tvůrci webových stránek se pokouší vyhledávacím programům nabízet jiný obsah než ostatním návštěvníkům
3.
Zavádění skrytých textů – jak jsme uvedli v předcházející části, pracují vyhledávače s frekvencí klíčových slov. Tvůrci stránek se tuto frekvenci snaží zvýšit tím, že na stránku umisťují text, který obsahuje klíčová slova několikrát. Tento text skryje pomocí CSS stylů skryje, aby normálního návštěvníka stránky nerušil.
Naposledy vytištěno 5.3.2013 8:55:00 134
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 135 -
Světové vyhledávače AltaVista Je internetový vyhledávač. Byl vytvořen Louisem Monierem a Mikem Burrowsem ve výzkumných laboratořích společnosti Digital Equipment Corporation v Palo Altu. Již při svém spuštěním, obsahoval oproti jiným vyhledávačům vícevláknové samostatné vyhledávání stránek a výkonné vyhledávací prostředí běžící na moderním hardwaru se spoustou gigabyt paměti, toto udělalo z AltaVisty jeden z prvních vyhledávačů, schopných vyhledávat takzvaně fulltextově6. V roce 2003 koupila AltaVistu firma Overture Services, Inc.. Tato firma AltaVistu zrušila. V roce 2004 převzala firmu Overture Services, Inc. Firma Yahoo!
Bing Je to vyhledávač provozovaný společností Microsoft. Podle firem, které se zabývají hodnocením a analýzou webových stránek, patří v současnosti k druhému nejrozšířeněji používanému vyhledávači na internetu. Tento vyhledávač byl v roce 2009 uveden na internet jako náhrada za Live Search.
Google Dle firem zabývajících se analýzou hodnocení webových stránek, patří internetový vyhledávač Google provozovaný společností Google k nejrozšířenějším a nejpoužívanějším. Původně byl navrhnut v rámci výzkumu na Stanfordově univerzitě Sergeyem Brinem a Larrym Pageyem. Novinkou oproti ostatním vyhledávačům bylo vyhledávání frází a ukládání i plného textu indexovaných stránek, které tak umožňovalo u výsledných stránek hned zobrazovat fragmenty textu. Yahoo! Yahoo! Inc. je americká společnost, která provozuje stejně se jmenující internetový portál. Ten je celosvětově velmi úspěšný. Byl založen v roce 1994 Davidem Filem a Jerrym Yangem. Sídlo společnosti je v Sunnyvale v Silicon Valley.
Vyhledávače v České republice
Seznam.cz Seznam je český internetový portál, obsahující i službu vyhledávání. Založen byl v roce 1996. Patří mezi jeden z prvních vyhledávačů v České republice. Seznam.cz provozuje další služby jako Email.cz, Firmy.cz, Mapy.cz, Sklik, Sreality, Sauto a další. Dle údajů7 z roku 2010 je návštěvnost 4,5 milionu návštěvníků měsíčně.
Centrum.cz
6
Fulltextové vyhledávání, (z ang. full – celý, plný a text) je speciální způsob vyhledávání informací v databázích nebo v textových souborech, které jsou obvykle předem připraveny, tj. indexovány, aby bylo možno nalézt libovolné slovo (řetězec znaků) v nejkratším možném čase. 7
Sdružení pro internetovou reklamu. Měsíční zpráva - prosinec 2008 [online]. Praha: Sdružení pro internetovou reklamu, 2008-12-01, [cit. 2010-12-07]. Dostupné on-line.
Naposledy vytištěno 5.3.2013 8:55:00
135
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 136 -
Tak jako seznam.cz, je i centrum.cz český internetový portál patřící a provozovaný společností Centrum Holdings, s.r.o. Podle Sdružení pro internetovou reklamu8, se jedná o třetí nejnavštěvovanější web v České republice.
Atlas.cz Atlas.cz je český internetový portál, patřící do portfolia společnosti Centrum Holdings, s.r.o. Vznikl v roce 1997. Podle průzkumu Sdružení pro internetovou reklamu patří Atlasu.cz v návštěvnosti druhé místo (2010). Od roku 2006 spustil Atlas.cz českou verzi klienta ICQ. Nevýhodou této verze ve srovnání s předchozími je pomalejší načítání a zobrazování rušivých reklam9
Úkol:
Vyhledejte informace o dalších internetových vyhledávačích.
5.5
Digitální společnost, organizace vědomostí a jejich získávání
Jak již z předcházejícího textu plyne, je jednou z cest k úspěchu schopnost inovovat, neustále se zdokonalovat, pružně jednat a vzdělávat se. Být úspěšný v konkurenci je i zvládnutí základů managementu a organizace informací. J. B. Harreld [1998, s. 60-76] přisuzuje 3 důležité role managementu v "digitalizované" společnosti:
• • •
řídit informační toky řídit inovace a tvorbu intelektuálního vlastnictví řídit neustálé procesy učení
Všechny tyto 3 předcházející role neplatí jen pro podnikové prostředí, ale je možno vidět výrazné souvislosti s informačními institucemi a s moderními informačními službami.
Třídění informačních zdrojů Informační zdroje se dělí podle mnoha kriterií. V následující části textu nabízíme jedno z možných členění. a)
Podle funkce Informační zdroje pro poznání (odborné informace, např. encyklopedie) Informační zdroje pro řízení (tzv. manažerské informační systémy)
b) Podle druhu a funkce Vědecké informační zdroje (jedná se o původní a syntetizující zdroje např. výzkumné zprávy, technické zprávy, patenty, časopisecké zprávy, příspěvky z konferencí, monografie) Výukové (učebnice, cvičebnice, tabulky atd.) Populárně-naučné Výrobně-technické (normy, předpisy, projektová a technická dokumentace, atd.) Politické Administrativní Umělecké
8
NetMonitor. Měsíční zpráva - Červenec 2010 [online]. Praha: NetMonitor - SPIR, 2010-09-01, [cit. 2010-0927]. Kapitola ČR Provozovatelé, s. 51. Dostupné online. 9 HASALÍK, Radim. Historie Atlasu: světlé začátky. eMag.cz [online]. 2008-06-20 [cit. 2011-10-22]. Dostupné online. Naposledy vytištěno 5.3.2013 8:55:00 136
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 137 -
c) Podle způsobu (formy) zaznamenání obsahu písemné obrazové zvukové audiovizuální elektronické (digitální) multimediální d) podle původnosti obsahu primární sekundární terciální e) podle typu nosiče přenášené energií (vysílání) tištěné zdroje (papírové, klasické) elektronické (digitální) film Příklad: Tištěná kniha http://www.amazon.com/Multilayer-Thin-Films-Sequential-Nanocomposite/dp/3527304401 Online elektronická verze knihy http://onlinelibrary.wiley.com/book/10.1002/3527600574;jsessionid=D47149F42B95AEB2D6F5 BAFF172599BB.d02t03 f) podle kontinuity vydávání periodické seriálové jednorázové g) podle typu poskytovaných informací dokumentové systémy – např. knihovna, digitální knihovna bibliografické systémy (odkazující na další literaturu) faktografické systémy např. The World Factbook. h) podle stupně zveřejnění zveřejněné nezveřejněné (tajné, interní) i)
podle způsobu prezentace údajů numerické informace (statistické, kurzovní, ceníky, jízdní, atd.) textové informace (adresáře, kalendáře, encyklopedie, slovníky, atd.) netextové (obrazové, zvukové, audiovizuální, multimediální)
j) podle obsahu všeobecné každodenní informace zpravodajství (ČTK, CNN, atd.) ekonomické a obchodní informace (OECD, ČSÚ) informace pro státní správu a samosprávu legislativní a normativní systémy informace pro výzkum, vývoj a vzdělávání Příklad: informace pro státní správu a samosprávu Informační systém o území (ISÚ) Portál veřejné správy České republiky Naposledy vytištěno 5.3.2013 8:55:00
legislativní a normativní systémy Sbírka předpisů České republiky
137
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 138 -
k) podle instituce, která informace poskytuje producenti a vydavatelé primárních dokumentů (nakladatelství) distributoři a prodejci (např. Amazon.com) služby dodávání dokumentů (virtuální knihovny) databázová centra knihovny bibliografické, referátové a dokumentační služby (např. http://referaty.cz/default.asp) archivy specializované informační instituce Vydavatelská úprava dokumentů je takové uspořádání formy publikací, které účelným a jednotným uváděním jednotlivých údajů o názvu, obsahu, rozsahu, výrobě publikace apod. usnadňuje využívání publikace ve sféře čtenářské, knihovnické, bibliografické, distribuční atd. Respektování norem ve vydavatelském procesu je zárukou kvality a usnadňuje zpracování dokumentů. Význam standardizace všech procesů, které jsou součástí komunikace odborných informaci, je nezbytné si neustále připomínat. Moderní technologie usnadňují nejen proces přípravy dokumentů, ale také jejich šíření a využívání. Umožňují rovněž mnohonásobné využívání údajů doprovázejících a identifikujících dokumenty v nejrůznějších systémech. To se pochopitelně týká i samotného obsahu dokumentů. Respektování standardů je jednou ze záruk všeobecné dostupnosti informací. V současné době existuje řada mezinárodně platných norem (v ČR převzatých jako ČSN ISO), které se vztahují k vydavatelské úpravě dokumentů. Tyto normy jsou výrazem snahy o sjednocení vydavatelských postupů s cílem usnadnit, zjednodušit a urychlit proces jejich zpracování. Tyto normy samozřejmě vycházejí z víceméně ustálených postupů ve vydavatelské praxi. Ve svém vlastním zájmu by se jimi měli řídit nejen vydavatelé, ale také autoři textů, neboť respektování norem je důležitým předpokladem účinné komunikace informací. S tvorbou dokumentů a s možnostmi jejich vyhledávání souvisí problematika zpracování a pořádání informací. Pořádání je proto rovněž předmětem norem.
5 .5 .1
Získávání informací
Získávání informací lze považovat za vědu. Zahrnuje hledání v dokumentech i hledání o dokumentech, stejně tak prohledávání databází a internetovou síť. Každý z nás má pro tuto činnost vlastní strategii, která je v mnohém založena na získané teorii, praxi a technologii vyhledávání. Vyhledávání informací je založeno na počítačové vědě, matematice, knihovnictví, psychologii, lingvistice, statistice. Vyhledávací systémy na internetu běžně nepracují s pokročilými metodami například proximitních (příkladem za všechny je AltaVista: http://www.av.com). Pro tvůrce internetových prostředků je tento způsob mnohdy výhodný, protože sázejí na intuitivní způsoby vyhledávání (vyhledávání velkého množství stránek např. www.google.com). Naposledy vytištěno 5.3.2013 8:55:00 138
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 139 -
management AND Obr. 7-5: ukázka použití operátorů při vyhledávání Zdroj: vlastní
Vyhledávání zdrojů v prostředí internetu je nejefektivnější a nejrychlejší. Přesto mnoho uživatelů o takových zdrojích, kde se vyskytují nejvhodnější, nejvíce relavantní dokumenty neví. Chybí jim totiž základní informační dovednost a přehled. Jejich vyhledávání pak má nahodilý charakter zkoušení. Také si dost často uživatelé internetu neuvědomují, že získané informace z tohoto elektronického prostředí mohou mít dezinformační charakter.
Hodnocení systémů v procesu vyhledávání Základní problematikou v procesu vyhledávání je hodnocení výsledku získané informace, nebo hodnocení vlastního vyhledaného zdroje. Tato problematika se dá zobrazit na obr. 7-6, který ukazuje vztahy mezi množinami dokumentů, které existují v systému vyhledávání.
Obr. 7-6: vztahy mezi množinami dokumentů, které existují v systému vyhledávání Zdroj: vlastní
Vztahy úplnosti a přesnosti je nejlépe pozorovat z následujících obrázků [KOWALSKI, 1997, s. 4-7] první graf ukazuje ideální poměr a grafické vyjádření mezi přesností a úplností, Druhý graf pak ukazuje reálný funkční vztah mezi přesností a úplností.
Naposledy vytištěno 5.3.2013 8:55:00
139
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 140 -
Pokud vyhledáváme a shromažďujeme informace, můžeme se rozhodnout, zda využijeme mnoha různorodých zdrojů na internetu, které jsme získali pomocí vyhledávačů s pomocí klíčových slov, anebo budeme pracovat se zdroji soustředěnými do jednoho prostoru. Těmito prostory jsou myšleny databázová centra, založená na profesionálních a komerčních základech. Dílčím cílem vyhledávaných informací, je také snaha o umístnění vyhledané problematiky do souvislostí.
5.6 1) 2) 3) 4)
Kontrolní otázky
Obecně můžeme potencionální informaci vyjádřit vztahem? Co je podstatou dat a informací a jaký je mezi nimi rozdíl? Lze důvěřovat zpravodajským serverům? Co to je rozšířené vyhledávání?
5.7
Náměty k zamyšlení
1) Jak váš život ovlivňuje nástup informační společnosti? Jaké přináší výhody a nevýhody? 2) Dokážete se dobře přizpůsobit rychlému tempu změn? 3) Jak vám informační technologie pomáhají při studiu? S jakými problémy se setkáváte a jaké způsoby jejich řešení navrhujete? 4) Jakých služeb Internetu používáte a jak často? Kde jsou podle vašeho názoru slabé stránky Internetu a co očekáváte od jeho rozvoje? 5) Jaké vyhledávací metody znáte a používáte? Pokuste se porovnat efektivitu různých vyhledávačů (např. jako podíl relevantních dokumentů v nabídce). 6) Používáte Internet ke komerčním aplikacím? S jakým úspěchem?
5.8
Literatura
1) JURČA, R. Informatika I. Kunovice: Evropský polytechnický institut, s.r.o., 2004. ISBN 80-7314-045-4 2) KOWALSKI, G. Information retrieval systems. Boston : Kluwer Academic Publ., 1997. xiii, 282 p. 3) TAPSCOTT, D. Digitální ekonomika : naděje a hrozby věku informační společnosti. Brno : Computer Press, 1999. xviii, 350 s. 4) Česko. Zákon č. 46/2000 Sb. o právech a povinnostech při vydávání periodického tisku a o změně některých dalších zákonů (tiskový zákon). In: Sbírka zákonů, Česká republika. 2000, částka 17, s. 586–593. Dostupný též z WWW: . 5) Česko. Zákon č. 121/2000 Sb. o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). In: Sbírka zákonů, Česká republika. 2000, částka 36, s. 1658–1685. Dostupný též z WWW: . 6) Česko. Zákon č. 81/2005 Sb., kterým se mění zákon, zákon č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). In: Sbírka zákonů, Česká republika. 2005, částka 23, s. 658–659. Dostupný též z WWW: . 7) ČSN ISO 214 (01 0148). Dokumentace – Abstrakty pro publikace a dokumentaci. Praha: Český normalizační institut, 2001. 15 s. 8) ČSN ISO 215 (01 0147). Dokumentace – Formální úprava příspěvků do periodik a jiných seriálových publikací. Praha: Český normalizační institut, 2001. 11 s.
Naposledy vytištěno 5.3.2013 8:55:00 140
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 141 -
9) ČSN ISO 690 (01 0197). Informace a dokumentace – Pravidla pro bibliografické odkazy a citace informačních zdrojů. Praha: Úřad pro technickou normalizaci, metrologii a státní zkušebnictví, 2011. 10) ČSN ISO 999 (01 0192). Informace a dokumentace – Zásady zpracování, uspořádání a grafické úpravy rejstříků. Praha: Český normalizační institut, 1998. 43 s. 11) ČSN ISO 1086 (01 0159). Dokumentace a informace – Titulní listy knih. Praha: Český normalizační institut, 2001. 9 s. 12) ČSN ISO 2108 (01 0189). Informace a dokumentace – Mezinárodní standardní číslo knihy (ISBN). Praha: Úřad pro technickou normalizaci, metrologii a státní zkušebnictví, 2011. 21 s. 13) ČSN ISO 3297 (01 0187). Informace a dokumentace – Mezinárodní standardní číslo seriálových publikací (ISSN). Praha: Český normalizační institut, 2000. 10 s. 14) ČSN ISO 7144 (01 0161). Dokumentace – Formální úprava disertací a podobných dokumentů. Praha: Český normalizační institut, 1996. 24 s. 15) ČSN ISO 10444 (01 0190). Informace a dokumentace – Mezinárodní standardní číslo technické zprávy (ISRN). Praha: Český normalizační institut, 1997. 10 s.
Naposledy vytištěno 5.3.2013 8:55:00
141
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 142 -
Literatura [1]
http://www.podnikatel.cz/clanky/vyladte-si-pravou-a-levou-hemisferu-mozek-tak-lepevyuzijete-k-rozvoji-byznysu
[2]
http://rycho.txt.cz/clanky/46756/kterou-cast-mozku-pouzivate
[3]
http://www.podnikatel.cz/clanky/vyladte-si-pravou-a-levou-hemisferu-mozek-tak-lepevyuzijete-k-rozvoji-byznysu/
[4]
http://www.podnikatel.cz/clanky/vyladte-si-pravou-a-levou-hemisferu-mozek-tak-lepevyuzijete-k-rozvoji-byznysu/
[5]
http://upload.wikimedia.o rg/wikipedia/commons/b/b5/RomanAbacusRecon.jpg
[6]
http://www.urel.feec.vutbr.cz/index.php?page=mezniky_pc
[7]
http://www.urel.feec.vutbr.cz/index.php?page=mezniky_pc
[8]
http://lekceict.phorum.cz/historie-vypocetni-techniky.p83.html http://www.reformation.org/sir-francis-drake.html
[9] [10]
http://h30565.www3.hp.com/t5/image/serverpage/imageid/1956iD10C59AFD89C6F6C/image-size/original/is-moderation-mode/false?v=mpbl1&px=-1
[11]
http://magazin.stahuj.centrum.cz/obrazem-historie-pocitacu/?pid=4611
[12]
http://fyzika.gbn.cz/phprs/rservice.php?akce=tisk&cisloclanku=2005050201
[13]
http://fyzika.gbn.cz/phprs/rservice.php?akce=tisk&cisloclanku=2005050201
[14]
http://matyastech.wordpress.com/ 2012/10/18/historie-pocitacu/
[15]
http://deosum.com/Articles/51-lamparna-kdyz-radio-bylo-mlade.aspx
[16]
http://www.wiki.sps-pi.com/index.php/Po%C4%8D%C3%ADta%C4%8De_0._generace
[17]
html http://www.jproc.ca/crypto/enigma.html
[18]
http://www.urel.feec.vutbr.cz/ web_pages/projekty/clanky/Hlavni_mezniky_pc/Mark_2.jpg
[19]
http://www.historiepocitacu.cz/fotogalerie-historie-pocitacu.html
[20]
http://www.historiepocitacu.cz/fotogalerie-historie-pocitacu.html
[21]
http://vtm.e15.cz/aktuality/budoucnost-nanoelektroniky-tranzistory-bez-p-n-prechodu
[22]
http://cs.wikipedia.org/wiki/Soubor:Transistors. agr.jpg
[23]
http://www.root.cz/clanky/mikroprocesory-s-architekturou-risc-cipy-motorola-rady-8800088k/
[24]
http://www.techdot.eu/index.php/2008/01 /19/arduino-diecimila-zacnete-s-mikroprocesory/
[25]
http://www.beranr.webzdarma.cz/algoritmy/algoritmy.html
[26]
http://cs.wikipedia.org/wiki/V%C3%BDvojov%C3%BD_diagram
[27]
http://www.servispc-brno.cz/48-testovani-stability-pc
[28]
http://asus-servis.cz/jak-poznat-poruchu-pevneho-disku/
[29]
http://charotero.blogspot.com/2012/06/western-digital-warranty-in-philippines.htmldisku/
[30]
http://upload.wikimedia.org/wikipedia/ commons/e/e2/Usbkey_internals.jpg
[31]
http://www.alza.cz/pameti/sandisk/prenosne-flashdisk/18842861-v1579.htm
Naposledy vytištěno 5.3.2013 8:55:00 142
D:\Iva\Prace\Skripta\tzi\TZI_pro_ekonomy_12.doc
- 143 -
[32]
http://pctuning.tyden.cz/software/nastaveni-biosu/8783-bios_vas_kamarad_do_deste_i
[33]
http://www.root.cz/clanky/mikroradice-a-jejich-pouziti-v-jednoduchych-mikropocitacich/
[34]
http://www.hrypc.cz/informace/herni-pc/pamet-ram/
[35]
http://pcavsekolem.blog.cz/1101/pamet-ram
[36]
http://iv-loom.blog.cz/1110/procesor
[37]
http://zh.wikipedia.org/wiki/File: PC_case_modified.jpg
[38]
http://www.ivorcatt.com/47c.htm.
[39]
http://support.microsoft.com/kb/129972/cs
[40]
http://technet.idnes.cz/jak-se-branit-virum-aneb-zabezpeceni-pocitace-fnw/software.aspx?c=A041031_5285781_bezpecnost
Naposledy vytištěno 5.3.2013 8:55:00
143