TECHNOLOGIE ELEKTRONICKÉHO PODNIKÁNÍ HASHIM HABIBALLA

Rozměr: px
Začít zobrazení ze stránky:

Download "TECHNOLOGIE ELEKTRONICKÉHO PODNIKÁNÍ HASHIM HABIBALLA"

Transkript

1 TECHNOLOGIE ELEKTRONICKÉHO PODNIKÁNÍ HASHIM HABIBALLA OSTRAVA 2009

2 Recenzent: Doc. RNDr. PaedDr. Eva Volná, PhD. Název: TECHNOLOGIE ELEKTRONICKÉHO PODNIKÁNÍ Autoři: RNDr. PaedDr. Hashim Habiballa, PhD., Ph.D. Vydání: první, 2009 Počet stran: Náklad: Tisk: Studijní materiály pro kurz: TECHNOLOGIE ELEKTRONICKÉHO PODNIKÁNÍ Jazyková korektura nebyla provedena, za jazykovou stránku odpovídá autor. Vydavatel a tisk: RNDr. PaedDr. Hashim Habiballa, PhD., Ph.D. Vysoká škola podnikání a.s. ISBN

3 ELEKTRONICKÉ OBCHODOVÁNÍ Pojem elektronického obchodování TECHNOLOGIE ELEKTRONICKÉHO PODNIKÁNÍ Hashim Habiballa Cíl předmětu Seznámit studenty se základními principy technologie elektronického podnikání z pohledu obecné informatiky. Důraz je kladen na moderní ekonomiku zaměřenou na znalosti. Student pochopí principy práce s informacemi, jejich prezentace, znalostních systémů a jejich implementace. Student bude schopen využít nejmodernější poznatky znalostního inženýrství na tvorbu elektronického obchodu a jeho efektivní řízení na základě znalostí. Student si také zopakuje informatická témata v širším smyslu související s reprezentací znalostí, inteligentním strojovém usuzování a rozhodováním. 1

4 ELEKTRONICKÉ OBCHODOVÁNÍ Pojem elektronického obchodování Obsah: 1. Elektronické obchodování Pojem elektronického obchodování Modely elektronického obchodu Informatika Výpočetní technika Technologický základ elektronického podnikání Počítačové sítě Topologie sítí Modemy a servery Internet Služby Internetu Vyhledávací služby Informatika v elektronickém podnikání Algoritmy Značkovací a skriptovací jazyky XHTML XML PHP Objektově orientované paradigma Základní vlastnosti Znalosti Data, informace a znalosti Reprezentace znalostí Modelování úsudku Fuzzy logika Softwarové inženýrství Procesní řízení Modelování UML Metodiky tvorby IS Umělá inteligence Pojem umělé inteligence Rozdělení UI Řešení úloh Plánování Expertní systémy Počítačové vidění Zpracování přirozeného jazyka Rozpoznávání hlasu a řeči OCR

5 ELEKTRONICKÉ OBCHODOVÁNÍ Pojem elektronického obchodování 1. Elektronické obchodování 1.1. Pojem elektronického obchodování V dnešní době můžeme pozorovat úbytek zájmu o klasické formy obchodování založené na kamenné provozovně, kde zákazník může běžnou komunikací dospět při uzavíraní obchodu k rozhodnutím na základě fyzického kontaktu se specialistou na dané zboží nebo službu. Obrovskou rychlostí však byly tyto formy obchodu nahrazeny novým fenoménem tzv. e-commerce (elektronické obchodování). Představuje aplikaci Internetových technologií na procesy prodeje a nákupu založených na využití webových technologií. V řadě odvětví je známa úspěšná realizace, například obchodování s akciemi, prodej knih a cestování. Podnikání prostřednictvím Webu se stává dominantní formou obchodování. E-commerce zahrnuje velké množství diverzifikovaných forem aktivit v oblasti podnikání. Elektronické podnikání (e-business) je oblast informatiky zabývající se podporou procesů a vztahů mezi obchodními partnery, spolupracovníky a koncovými zákazníky, uskutečňovaných elektronickými médii. Tyto procesy a vztahy tak v sobě obsahují elektronicky realizovanou výměnu informací, produktů, služeb a provádění finančních transakcí. [Ga06] Dnes již existuje celá řada subjektů, které využívají elektronického podnikání. K těm nezákladnějším subjektům patří: podniky, firmy; koncový zákazník, spotřebitel; státní správa, státní orgány a instituce. E-commerce Obr. 1. Rozdělení forem e-commerce 3

6 ELEKTRONICKÉ OBCHODOVÁNÍ Modely elektronického obchodu Z pohledu abstrakce modelů elektronického obchodu bychom se mohli na jednotlivé typy elektronického obchodování prostřednictvím míry digitalizace (virtualizace) tohoto procesu. Obr.2 Dimenze e-commerce Čistý elektronický obchod je samozřejmě možný jen pro některé produkty, u klasických komodit je vždy fyzický kontakt více či méně nutný (fyzický produkt musí být transportován a dodán) [Bl05]. Avšak typickým čistým elektronickým obchodem může například prodej softwaru, pokud je realizován a dodej se uskuteční elektronickou formou. Zde může být vliv fyzického kontaktu zcela odstraněn a zákazník může plně komunikovat prostřednictvím digitálních agentů Modely elektronického obchodu Konkrétní rozlišení modelů elektronického obchodu podle cílového subjektu, komodity a formy komunikace lze sumarizovat následovně [An06]: 1. Elektronický obchod (e-shop) 2. Elektronické zásobování (e- Procurement ) 3. Elektronický obchodní dům (e-mall) př.www.emb.ch 4. Elektronické aukce (e-auctions) 5. Virtuální společenství (Virtual Communities, získání přínosů z působení virtuální komunity) 4

7 ELEKTRONICKÉ OBCHODOVÁNÍ Modely elektronického obchodu 6. Spolupracující platformy (Collaboration Platforms, poskytování nástrojů a prostředí pro spolupráci mezi podniky) 7. Tržiště (Marketplace, využití služeb třetí strany) 8. Poskytovatel služeb hodnotového řetězce (integrace několika hodnototvorného řetězce poskytování konzultačních služeb) 9. Informační portály, brokery a jiné služby Další rozdělení je relizovano na základě praktického pozorování trhu: 1. Online retailer - Velkoobchod a maloobchod prostřednictvím internetu 2. Online portal - Poskytovatelé syndikovaného obsahu (internetové katalogy, informační portály apod.) 3. Internet access provider - Poskytování přístupu k internetu 4. Online content provider - Poskytovatel obsahu na internetu (např. zpravodajské servery) 5. Application service provider - Poskytování aplikací a služeb 6. Online broker - Využití služeb třetí strany ve formě distribučního kanálu 7. Online market maker - Modely, které propojují nabídku s poptávkou nakupující a prodávající) 8. Networked utility provider - Poskytovatel síťových a internetových služeb (webhosting, ové služby apod.) Případně další alternativní dělení dle Affuaha a Tucciho: 1. Commission - Poskytování služeb či produktů za poplatek, jehož velikost se odvíjí od velikosti poskytované služby či produktu (zprostředkovatelský poplatek apod.) 2. Advertising - Poskytování služeb či obsahu zdarma, příjem je získáván od inzerentů za zobrazovanou reklamu 3. Markup - Prodej služeb či výrobků koncovým zákazníkům, profit získán na základě marže 4. Production - Prodej služeb či produktů přímo výrobcem 5. Referral - Poskytování provizí za zprostředkování obchodu 6. Subscription - Přístup ke službě nebo produktu na základě předplatného 7. Fee for service - Platby za využívání služeb, založené na měření přístupu ( pay as you go ) Financování modelu je možné: 1. Prodeje zboží 2. Pronájmu služeb 3. Času stráveného uživateli (služby) 4. Příspěvků uživatelů 5. Reklamy 5

8 ELEKTRONICKÉ OBCHODOVÁNÍ Modely elektronického obchodu 6. Sponzorství 7. Veřejné podpory Model musí být: 1. Přehledný 2. Konzistentní 3. Musí být schopen komunikovat s ostatními modely 4. Musí být snadné jej měnit 5. Srozumitelný Služby typu B2C: Inzerce a speciální nabídky zboží Elektronické katalogy nabízeného zboží a s nimi spojené vyhledávací služby Presentace nabízeného zboží fotografiemi nebo různými vizuálními prostředky, další specifikace potřebných parametrů a jejich variant, detailní dokumentace produktů Poskytování odpovědí na dotazy zákazníka a řešení jeho problémů cestou el. pošty, diskusních skupin nebo nabídkou odpovědí na tzv. časté dotazy Výběr a uložení zboží dle nabídky do virtuálního nákupního košíku, příp. rezervace různých služeb (ubytování, letenky.) Platby elektronickou cestou pomocí kreditních karet, el. šeků, digitální hotovostí Tržiště Charakteristické znaky tržišť B2B: Centralizovaný tržní prostor Neutralita Standardizované kontrakty, dokumenty, výrobky Záruka integrity trhu Platební a clearingové služby Důvěra a anonymita Elektronické zásobování zahrnuje: identifikaci a vyhodnocení dodavatelů výběr specifických produktů podávání objednávek dodání produktu včetně platby 6

9 ELEKTRONICKÉ OBCHODOVÁNÍ Modely elektronického obchodu monitorování průběhu zásobovací transakce vytvoření a řízení vztahu s dodavateli řešení problémů Produkty v elektronickém obchodování lze rozdělit na následující typy: Přímé prostředky Produkty: suroviny zboží k dalšímu prodeji Služby: pracovníci (na kontrakt úkol) návrhářské práce vstupní a výstupní logistika Nepřímé prostředky kancelářská zařízení a potřeby náhradní díly počítačová zařízení, programy, publikace, reality základní prostředky, dopravní prostředky úklidové služby reklamní služby, konzultační služby komunikační služby (hovorové a datové) cestování bezpečnostní služby údržba majetku, údržba majetku a zařízení Abychom mohli objektivními kritérii popsat kvalitu poskytovaných služeb, lze formulovat následující metriky: Doba cyklu Transakční náklady kupujícího Frekvence chyb Objem skladových zásob kupujícího (rozsah a finanční objem) Jednotková nákupní cena produktu Charakteristika tržiště je založena na střetávání poptávky mnoha odběratelů s nabídkou mnoha dodavatelů. Na elektronickém tržišti stejně jako na tržišti klasickém dochází k nejrůznějším jednáním mezi dodavateli a odběrateli, která vedou k uzavírání konkrétních obchodů. 7

10 ELEKTRONICKÉ OBCHODOVÁNÍ Modely elektronického obchodu Elektronická tržiště se primárně dělí na tři základní druhy: nákupní model elektronického tržiště Zakladatelem tohoto typu tržiště bývá nejčastěji jeden silný podnikatelský subjekt nebo aliance více subjektů, kteří jsou významnými odběrateli a mají značnou vyjednávací sílu. prodejní model elektronického tržiště tržiště je v tomto případě primárně zaměřeno na odbyt výrobků zakládajících subjektů. Nejčastějším modelem je vytvoření aliance dodavatelů, kteří nejsou vůči sobě v konkurenčním postavení, naopak se svými produkty vhodně doplňují. Jejich náklady na prodej zboží jsou v tomto případě mnohem nižší než v případě klasické formy prodeje, protože jsou rozloženy mezi více subjektů. spojení nákupního a prodejního modelu Může se jednat v první fázi například o elektronický model inzertního serveru. Takto postavené elektronické tržiště bývá provozováno nejčastěji třetím nezávislým subjektem. Další rozdělení dle komodit, se kterými se obchoduje: horizontální tržiště Tato tržiště nemají zaměření na konkrétní průmyslové odvětví, ale naopak zapojují do obchodování firmy napříč všemi odvětvími. Obchodovanými komoditami jsou v tomto případě především takové výrobky, které nakupuje téměř každá firma. Jedná se většinou o nepřímý materiál, jako jsou kancelářské potřeby, výpočetní a kancelářská technika apod. vertikální tržiště Jsou zaměřena na konkrétní průmyslový obor, např. na chemický průmysl, hutní a kovodělnou výrobu, zdravotní potřeby, a zapojují do svého obchodování firmy podnikající v daném průmyslovém odvětví. komoditní burzy Jsou určeny pro obchodování pouze s konkrétními komoditami. 8

11 ELEKTRONICKÉ OBCHODOVÁNÍ Informatika 1.3. Informatika Informatika patří k mladým vědním disciplínám, které se i na teoretické úrovni stále dynamicky vyvíjejí a zároveň můžeme i v našem praktickém životě vidět množství jejích aplikací, kterým se nevyhne prakticky nikdo. U informatiky se bohužel v poslední době setkáváme s nepochopením tohoto oboru a často se kompetence ve výuce zaměňují za tzv. informační gramotnost. V souvislosti s pojmem informatika můžeme dostat mnoho různých výkladů, o jakou vědu se vlastně jedná. Existují (z našeho pohledu) spíše zavádějící pohledy, které informatiku spojují třeba s knihovnickými vědami. Dále se mnohdy ztotožňuje informatika s její menší částí tzv. teorií informace, což je nedílná součást informatiky, avšak pojem informatiky je mnohem širší a zahrnuje mnoho disciplín. Často se jako nejdůležitější obor informatiky zdůrazňuje teorie informace. Teorie informace vznikla koncem druhé světové války (potřeby leteckého provozu) a jejím otcem je prohlašován Claude Elwood Shannon. Je to matematická věda, patří do kybernetických věd. Zkoumá informaci jako základní jev, který umožňuje existenci složitých systémů, především organismů a společenství, a snaží se najít matematické vyjádření množství informace. Zabývá se přenosem, kódováním a měřením informace. Využívá teorii pravděpodobnosti, matematická statistika, teorie her, lineární algebra, teorie grafů a další vědy s hlubokým matematickým základem. Používá se v odvětvích jako je teorie přenosu informace (jak kódovat zprávu, aby na místo určení došla co nejméně porušená), problematika záznamu, vyhodnocení a třídění informace Teorie informace Naproti tomu Informatika je mnohem rozsáhlejší pojem který bychom mohli definovat následovně: Informatika je: Věda o systematickém zpracování informací, hlavně o automatickém zpracování pomocí číslicových počítačů (struktura, zpracování a využití zejména vědeckých informací - zobrazení, shromažďování, analytické a syntetické zpracování, ukládání, vyhledávání a rozšiřování) Informatické vědy Navzdory obecným představám studentů jde opravdu o hluboce matematickou disciplínu. I tvorba jednoduchého počítačového programu musí být podložena například jeho analýzou složitosti ( jak rychlý je, jak efektivní, zda by nemohl být kratší, rychlejší), což vyžaduje znalost poměrně složité matematické teorie. Za všemi aplikovanými produkty informatiky (operačními systémy, databázemi, 9

12 ELEKTRONICKÉ OBCHODOVÁNÍ Výpočetní technika programovacími jazyky) se skrývají propracované formální teorie, které tvoří páteř informatiky. Informatické vědy lze vidět jako rodinu navzájem provázaných disciplín (teoretické, praktické, technické, aplikované) a patří k nim především: Formální logika základ logických obvodů, problém umělé inteligence a simulace lidského uvažování Teorie kódování tvorba kódů, přenosu informací Teorie automatů, teorie překladu, teorie formálních jazyků a gramatik, sémantika tvorba operačních systémů a překladačů vyšších programovacích jazyků Teorie složitosti časové a paměťové nároky programu (problému) Teorie vyčíslitelnosti zda je daný problém vůbec v principu řešitelný Robotika (odvětví technické kybernetiky) výzkum a vývoj robotů (náhrada člověka) Umělá inteligence skupina disciplín, modelování intelektuální činnosti člověka počítačem při řešení složitých úloh, jejichž řešení vyžaduje vyšší stupeň inteligence než řešení rutinních výpočtů (samočinné rozpoznávání tvarů nebo předmětů, vytváření analogií mezi logickými úsudky, ověřování hypotéz a matematických důkazů, hraní her, ) Počítačová simulace napodobení funkce zkoumaných objektů počítačovým modelem Počítačová grafika matematické vyjádření křivek, definice tvaru písmen, Softwarové inženýrství jak psát a ladit programy, jak organizovat programátorský tým, jak mají programy vypadat (barevné řešení programu, způsob ovládání programu) 1.4. Výpočetní technika I přes svou modernost má výpočetní technika bohatou historii. Můžeme se podívat na předchůdce dnešní moderní výpočetní techniky. Již od dávnověku si lidé snaží zjednodušit a hlavně zrychlit počítání. Vznikaly různá počítadla jako je řecký abakus, japonský saroban, čínský suan-pchan atd. V sedmnáctém století po objevu logaritmů byly sestaveny první logaritmická pravítka. Patent na něj získal Angličan E. Wingate. Ale již v šestnáctém století vznikaly první počítací stroje. Jeden z prvních takovýchto strojů navrhl Wilhelm Schickard ( ). Nestačil však svůj nápad realizovat, neboť během třicetileté války zahynul při epidemie moru. Autorem jednoho z nejznámějších počítacích mechanických strojů zvaného "paskalina" byl významný francouzský fyzik Blais Pascal ( ), který stroj postavil pro svého otce, jenž pracoval jako daňový úředník. V roce 1671 vytvořil německý matematik a fyzik Gottfried 10

13 ELEKTRONICKÉ OBCHODOVÁNÍ Výpočetní technika Wilhem Leibnitz ( ) počítač, který zvládal čtyři základní početní úkony. Leibnitz pochopil, že desítková soustava pro tyto stroje není nejvhodnější a sestavil dvojkovou neboli binární soustavu. Mezi další známé počítací stroje patří "počítač" M. Hahna z roku 1770, nedokončen avšak na svou dobu moderně navržen diferenční počítací stroj (Difference engine) Charlese Babbageho ( ), kalkulátory švédského inženýra V. T. Odhnera z přelomu našeho století atd. 8. ledna 1889 dostal Hermann Hollerith pracující v registračním úřadu Spojených států patent na soupravu děrnoštítkových strojů, které značně zjednodušily zaznamenávání údajů o obyvatelstvu. O využití děrnoštítkových strojů projevily značný zájem banky, pojišťovny a velké firmy, a proto Hollerith založil v roce 1896 společnost Tabulating Machine Company. V roce 1924 tato firma a několik dalších podobných se spojila v mamutí koncern International Bussines Machine (IBM). Nultá generace počítačů V roce 1938 sestrojil německý inženýr Konrád Zuse první elektromechanický počítací automat nazvaný Z-1 pracující ve dvojkové soustavě. Stroj však byl dosti pomalý a nespolehlivý. Teprve roku 1941 společně s Helmutem Schreyerem sestrojil elektronický počítač Z-3, který obsahoval elektromagnetických relé. Bohužel nadějný vynález byl během náletu na Berlín zničen zásahem bomby. Po válce Zuse sestrojil poměrně spolehlivý Z-4 pro univerzitu v Zürichu a Z-5 pro Leitzovy optické závody. 7.srpna 1944 na Harwardské univerzitě uvedl Howard Aiken do provozu počítač ASCC (Automatic Sequence Controlled Calculator), znám pod vojenským názvem MARK I. Toto zařízení mělo hmotnost pět tun a skládalo se z elektromagnetických relé, mnoha set kilometrů drátových spojů a několika tisíc dekadických koleček poháněných elektromotorem. Sečtení dvou čísel trvalo asi třetinu sekundy, násobení asi dvacetkrát déle. Na tomto stroji byla během stovky hodin vypočtena konfigurace uranové nálože první atomové pumy, která byla odpálena 16.června 1945 v poušti Alamogordo. Po válce sestrojil Aieken ještě Mark II, pracující již s dvojkovou soustavou a Mark III, řízen programem, který byl odbavován z otáčejícího se magnetického bubnu. První generace počítačů 16.února 1946 se odbyla premiéra pro novináře a odborníky počítače ENIAC (Electronic Numerical Integrator and Computer). Toto třicetitunové monstrum, které zabralo téměř celou bývalou univerzitní tělocvičnu se skládalo mimo jiné z elektronek, relé, odporů a dvou leteckých motorů, které celé zařízení svými vrtulemi chladily. Na rozdíl od svých předchůdců neměl ENIAC žádné pohyblivé části. Generace počítačů 11

14 ELEKTRONICKÉ OBCHODOVÁNÍ Výpočetní technika Velmi nepružně vytvořené schéma ENIACu přetvořil původem maďarský matematik John von Neumann ( ). Jeho mnohem univerzálnější počítač byl nazván EDVAC a byl dokončen v Bellových laboratořích roku Od speciálních jednoúčelových počítačů (BINAC - pro letecké společnosti) se postupně přecházelo k výrobě počítačů univerzálním (UNIVAC, IBM 650). Charakteristika: až základem je elektronka - příkon 100 až 10 kw - operační rychlost 100 až operací za sekundu - vnitřní paměť 1-2 KB - magnetické bubny, děrné štítky a děrné pásky Druhá generace počítačů V prosinci 1947 předvedli v Bellových laboratořích John Bardeen, Walter H. Brattain a William B. Shockley první polovodičový tranzistor, který se stal základem počítačů druhé generace. Charakteristika: až základem jsou polovodičové součástky (tranzistor) - příkon 1 až 2 kw - operační rychlost vzrostla na až operací za sekundu - vnitřní paměť 16 až 32 KB - feritové paměti, magnetické disky a pásky - vedle assemblerů se začaly prosazovat i nezávislé problémově orientované jazyky (Fortran, COBOL, ALGOL) - roztříštěnost koncepcí nedovolovala spojování počítačů a periferií různých značek (od různých výrobců) Třetí generace počítačů a současnost Další velký přelom znamenal v roce 1961 první integrovaný obvod (IO), který tehdy sdružoval čtyři tranzistory na jediném čipu. Integrované obvody SSI a MSI se staly základním prvkem počítačů třetí generace. Charakteristika: až základem IO SSI, MSI a LSI - operační rychlost až operací za sekundu - vnitřní paměť 0,5 až 2 MB - zvýšení kompatibility - větší vnější paměti (magnetické štítky, rotující magnetické disky) 12

15 ELEKTRONICKÉ OBCHODOVÁNÍ Výpočetní technika - vyšší programovací jazyky (LISP, Pascal...) - modulární sestavování počítače - terminálové sítě umožňující větší počet terminálů připojených k centrálnímu počítači Další rozdělování na generace ztratilo význam. Vývoj šel tak rychlým tempem, že od dalšího začleňování se opustilo. Dnešní integrované obvody obsahuji desítky miliónů tranzistorů a jejich počet se neustále zvyšuje. Neumannovo blokové schéma počítače John von Neumann navrhl krátce po druhé světové válce schéma počítače, které je s malými úpravami platné dodnes. Činnost počítače řídí řadič, který vydává povely všem ostatním částem, tedy vstupním a výstupním zařízením, operační paměti a aritmetickologické jednotce (ALU). Neumannovo schéma Sběrnicové schéma počítače Moderní počítače využívají tzv. sběrnice. Jejím úkolem je přenášet data a veškeré signály v rámci počítače mezi jeho jednotlivými částmi. Sběrnice podporuje modularitu systému (je možné relativně jednoduše přidávat či ubírat další moduly - části počítače). Sběrnici si můžeme rozdělit na tři základní části: - datová sběrnice - řídící sběrnice - adresová sběrnice 13

16 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Počítačové sítě 2. Technologický základ elektronického podnikání Počítačové sítě nás dnes provázejí na každém kroku. Ať už jde o vyhledávání informací na Internetu nebo propojené síťové databáze na úřadech, všechny se řídí základními pravidly, které si nyní v krátkosti vyložíme. LAN a WAN 2.1. Počítačové sítě Počítačové sítě můžeme rozdělit na sítě LAN (Local Area Network) a WAN (Wide Area Network). Pro důkladnější pochopení, o který druh se jedná, je vhodné stanovit kritéria pro rozdělení na sítě lokální a rozlehlé. Někdy se sítě označují jako MAN metropolitní. Prvním kritériem je vzdálenost jednotlivých uzlů sítě. Zatímco u sítí LAN jsou povětšinou vzdálenosti velikostí několika metrů až stovek metrů, u sítí WAN jsou tyto vzdálenosti mnohem větší a uzlové body bývají rozmístěny v rozsáhlejším regionu (mezi městy, státy i kontinenty). Dalším kritériem pro rozlišení je druh uzlových počítačů. U sítí LAN jsou zpravidla uzlovými počítači osobní počítače a pracovní stanice, tedy zřízení, které jsou určeny vesměs pro jediného uživatele. Naopak uzlovými počítači rozlehlých sítí bývají nejčastěji počítače z kategorie tzv. střediskových, případně minipočítače, tedy stroje, vybavené sítí terminálů, schopné sloužit většímu počtu uživatelů současně, a pracující nepřetržitě. Třetím rozdílem bývá způsob propojení uzlových počítačů. U lokálních sítí veškerý hardware nutný k vytvoření sítě kupuje přímo provozovatel sítě. Naproti tomu u sítí WAN jsou uzlové počítače propojeny pomocí přenosných kanálů, které si majitel nebo provozovatel sítě většinou pouze pronajímá od spojových organizací. Posledním rozdílem mezi sítěmi WAN a LAN bývá účel, ke kterému jsou sítě zřizovány. V případě LAN jde obvykle o sdílení nákladných hardwarových periferií (např. laserová tiskárna), sdílení souborů, aplikací, přístup do společných databází a jednoduchá komunikace mezi uživateli sítě. U rozlehlých sítí jde o přenos zpráv a souborů na velké vzdálenosti, možnost přístupu na vzdálený počítač a do rozsáhlých databází a využití výpočetní kapacity jiného počítače. peer to peer - menší počet uzlů, které mají stejné postavení v síti clinet / server - větší počet počítačů, sdílení většího množství dat. Server má dominantní postavení v síti. Počítače se v sítích zapojují podle různých topologií (star, sběrnicová, stromová...). 14

17 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Topologie sítí 2.2. Topologie sítí Sběrnicová topologie (Bus) všechny počítače jsou připojeny ke společnému pasivnímu přenosovému médiu, například koaxiálnímu kabelu. K výhodám této topologie patří absence aktivní prvků, které prodražují zřizovací náklady, nezávislost stanice na výpadku jiné stanice, snadné všesměrové vysílání. Mezi nevýhody však můžeme zařadit nemožnost současného vysílání více uzlů, vysílat smí vždy jen jedna stanice. Při přerušení kabeláže dochází k výpadku celé sítě. Topologie sítí Stromová topologie (Tree) jedná se rozšíření sběrnicové topologie o aktivní prvky, které mohou síť hierarchicky rozčlenit a zvýšit propustnost sítě. Hvězdicová topologie (Star) veškerá komunikace probíhá přes centrální uzel sítě. Výpadek jedné stanice nezpůsobí výpadek sítě. Takováto síť je relativně snadno rozšířitelná. 15

18 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Topologie sítí Kruhová topologie (Ring) každý uzel je spojen s předcházejícím i následujícím, žádný z uzlů není krajní.síť nepotřebuje centrální uzel, naproti tomu výpadek stanice způsobí kolaps v celé síti. Páteřní síť (Backbone) tato topologie se používá při propojení více lokálních sítí (i různých topologií). Nosná část sítě musí mít vysokou propustnost, aby nezpůsobovala zpomalování činnosti. Výpadek jedné lokální větve nezpůsobí výpadek celé sítě. Topologie má však větší finanční náklady na zřízení sítě. 16

19 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Modemy a servery 2.3. Modemy a servery Název modem vychází ze zkratky slov modulátor - demodulátor, což přesně odpovídá činnosti modemů. Modem je zařízení, které umožňuje počítači komunikovat se vzdáleným počítačem pomocí např. telefonní linky. Data jsou do modemu přivedena ve formě digitální a přenos mezi dvěma modemy se děje ve formě analogové. Linky, které data přenášejí mohou být: - komutované - jedná se o všeobecně dostupné telefonní sítě - pronajaté - jsou určené výhradně pro určité uživatele Modemy můžeme rozdělit na: - externí - modem má vlastní zdroj, někdy i paměť, diody pro kontrolu činnosti modemu. Nejčastěji bývají připojeny ke COM portu. - interní - ve formě přídavné karty. Jsou o něco levnější, nemají kontrolní diody, vlastní napájecí zdroj a jsou plně závislé na činnosti počítače - PCMCIA (PC Card) - pro svou vysokou cenu se využívají jen u přenosných počítačů - synchronní - asynchronní - hardwarový - softwarový Modemy podléhají standardizaci komise CCITT. Jednotlivé standardy se označují V.xx. Příklady: V bps v plném duplexu, oprava chyb při přenosu, specifikace procesu při navazování spojení V.32 bis bps v reliable a synchronním režimu, při potížích se modem přepíná do V.32 (snížení přenosové rychlosti na 9600 bps). V.34 - komunikační rychlost bps a 33600b/s, komunikace modem počítač se děje přes rychlejší paralelní port. Faktická průchodnost paralelního portu je až Kbps. V.42 a V.42 bis - doporučení pro bezporuchový přenos dat pomocí firemních MNP protokolů. V.90 standard pro přenosovou rychlost 56 Kbps. V.92 MNP protokoly - jedná se firemní protokoly firmy Microcom, které jsou určeny pro bezchybný a bezpečný přenos dat pomocí modemů. Protokoly se dělí do tříd s označením Třída 1 až Třída 10. Příklady: Třída 5 - zabezpečuje zvýšení průchodnosti dat až o 200%, používá adaptabilního algoritmu komprese dat. Třída 10 -uplatňuje se všude, kde jsou nekvalitní linky. Modemy pracující s MNP protokoly mohou pracovat ve třech různých režimech: Auto-Reliable mod - modem se po navázání spojení se vzdáleným modemem v typicky asynchronním provedení přesvědčí o tom, zda 17

20 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Modemy a servery vzdálený modem je schopen komunikovat pomocí MNP protokolů. Pokud ano, pak se oba modemy dohodnou o spojení s co nejvyššími parametry. V opačném případě komunikují v Direct (přímém) asynchronním spojením. Reliable mod - modem vytvoří spojení se vzdáleným modemem jen v případě, že jsou oba schopny pracovat s MNP protokolem, jinak je spojení přerušeno. Normal mod - modem je schopen komunikovat se vzdáleným protokolem bez opravných protokolů. Modemy se ovládají pomocí speciálního jazyka, který byl původně vyvinut firmou Hayes Microcomputer Product Inc. Každý příkaz začíná písmeny AT. Příklady: ATA - zvedne sluchátko, vyšle tón answer a čeká na inicializační tón druhého modemu ATP - nastaví pulzní volbu ATT - nastaví tónovou volbu ATDP - vytočí telefonní číslo pulzně ATDT - vytočí telefonní číslo tónově ATZ - reset modemu ATN - vybírá pracovní režim modemu. ATN0 - Normál režim, ATN1 - Direct režim, ATN2 - Reliable režim, ATN3 - Auto-Reliable režim u modemu s protokolem MNP 5. Fázová modulace (PM) PM je proces, při kterém jsou generovány dva signály se shodným kmitočtem a s fázovým posunem. ISDN modemy ISDN (Integrated Services Digital Network) digitální síť. Přenos uživatelských informací je v síti ISDN přenášen po B kanálu a informace zabezpečující navázání, uskutečnění spojení a další signalizační funkce jsou přenášeny po zvláštním D kanálu. B kanál se v síti ISDN používá pro placený přenos informací jak hlasových, tak datových. Komunikační rychlost tohoto kanálu je 64 kbit/s. Obvykle se používají dva kanály typu B. Pokud se spojí můžeme data přenášet rychlostí až 128 kbit/s. D kanál je určen pro přenos signalizace a jeho rychlost je 16 kbit/s nebo 64 kbit/s v závislosti na typu přípojky. Sálové počítače a servery Kromě běžně využívaných osobních počítačů existuje rovněž skupina počítačů, u kterých je požadován velmi velký výkon. Pro speciální použití (rozsáhlé vědeckotechnické výpočty, vojenské využití, zpracování rozsáhlých dat,...) se stále využívá velmi výkonných sálových počítačů či minipočítačů. Ty jsou většinou sestavovány přímo pro konkrétní využití a nasazení. Vysoký výkon a spolehlivost jsou ovšem vyváženy obrovskými pořizovacími náklady. S rozvojem architektury klient/server se objevila nová kategorie s názvem server. 18

21 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Modemy a servery Anatomie serveru První servery byly vlastně jen lépe vybavené osobní počítače a jako souborové a tiskové servery byly využívány v rámci lokálních sítí. S nástupem architektury klient/server se objevily databázové, komunikační a aplikační servery, jejichž nároky na výkon a hlavně spolehlivost jsou mnohonásobně vyšší. Současné servery proto kombinují technologií osobních počítačů s technologiemi sálových počítačů a minipočítačů. V mnohem větší míře než u sálových počítačů se využívá standardizace, což podporuje otevřenost a modularitu systémů. Nejdále se standardizace dostala v oblasti tzv. PC serverů. Procesory serveru se postupně přesunují od 32 bitových k 64 bitovým procesorům. Důležitější než kmitočet procesoru je jeho architektura, která je superskalární a superzřetězená. Procesory mají všechny moderní rysy: spekulativní provádění instrukcí, předpověď větvení, provádění instrukcí mimo pořadí a podobně. Pro zrychlení práce s pamětí se zvětšuje velikost paměti cache L1 umístěné přímo na čipu procesoru i cache L2. Běžným se stává vytváření víceprocesorových systémů. Nároky na operační paměť serverů jsou samozřejmě mnohonásobně větší než běžných počítačových systémů a kapacita se pohybuje v řádech stovek MB až jednotek GB. V oblasti kvality paměti se však serverové systémy od běžných počítačových systémů podstatně neliší. Důležitým faktorem výkonnosti je systémová sběrnice, která se mnohdy stává nejužším místem systému. Proto se u víceprocesorových serverů klasická technologie sdílené systémové sběrnice nahrazuje například technologií přepojování datových toků. Víceprocesorové servery můžeme podle míry sdílení operační paměti a vstupně výstupních systémů rozdělit na tři základní skupiny: a) Symetrické multiprocesorové systémy (SMP) b) Masivně paralelní systémy (MMP) c) Klastry Symetrické multiprocesorové systémy Multiprocessing V technologii SMP jsou procesory z hlediska prováděných funkcí a z hlediska vztahu k dalším komponentám serveru rovnocenné. Koordinaci činnosti všech procesorů provádí sdílený operační systém. Jedině cache první a druhé úrovně je prvkem, který patří jen určitému procesoru, operační paměť je sdílená. Díky tomu je vývoj aplikací pro SMP servery relativně jednoduchý a neliší se příliš od vývoje pro běžné systémy. Největším problémem této architektury bývá sdílená systémová sběrnice, která se u víceprosorových serverů stává úzkým místem systému. Masivně paralelní systémy Na rozdíl od SMP systémů, kde jsou sdíleny téměř všechny části počítače (od operačního systému, operační paměti až po vstupně-výstupní zařízení), 19

22 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Modemy a servery je MMP systém složen s několika relativně samostatných subsystémů. Jednotlivé procesorové uzly jsou vybaveny vlastní operační pamětí i vlastními vstupně-výstupními kanály a zařízeními. To klade mnohem nižší nároky na datovou propustnost jednotlivých kanálů pro komunikaci mezi jednotlivými procesorovými uzly. U MMP je pak možné zvyšovat počet procesorů až do řádů stovek nebo tisíců a využívají se pro extrémně náročné aplikace. Nevýhodou tohoto systému je vysoká náročnost při vytváření aplikací, které by důkladně využívaly možnosti architektury MMP. Klastry Tato technologie využívá shlukování (klastrování) samostatných serverů do virtuálního superserverů. Jednotlivé uzly klastru mohou být tvořeny jednoprocesorovými servery nebo servery SMP. Jednotlivé uzly disponují vlastním operačním systémem, vlastní operační pamětí i diskovým subsystémem, který však ukládá jen kód operačního systému a aplikace. Zpracovávaná data jsou ukládána na sdílených diskových systémech, které bývají sdíleny prostřednictvím rychlé počítačové sítě, případně rozhraním Fibre Channel. Klastrování nabízí zvýšení bezpečnosti a odolnosti vůči selhání, například pomocí zrcadlení diskových subsystémů, zdvojení komunikačních kanálů či zrcadlení serverů (jeden z dvojice serverů slouží jako záloha). Další výhodou technologie klastrování je, že další uzly nemusí v systému sloužit pouze jako záloha, ale mohou paralelně řešit danou aplikaci. K nevýhodám dané architektury patří náročnější správa, složitější programování a vyšší ceny. Klastry se nasazují všude tam, kde technologie SMP naráží na výkonnostní hranice a kde je stále potřeba pracovat se sdílenými daty. Kromě výše uvedených technologií se používají i méně standardní řešení, která například dané technologie různým způsobem kombinují. Mainframe a minipočítače Mainframe (mainframecomputer, superpočítač, sálový počítač) je velmi výkonný počítač, který je založený na obrovském výpočetním výkonu, rozsáhlých diskových a paměťových kapacitách, masivním paralelním zpracování dat. Pracuje jako řídící jednotka, ke které jsou připojeny terminály. Mezi nejznámější mainframy patří počítače firem IBM (S/390), DEC, HewlettPackard, počítače řady Cray. Počítače jsou pro svůj vysoký výpočetní výkon určeny hlavně pro rozsáhlé vědeckotechnické výpočty v oblasti vědy a výzkumu (například simulace složitých fyzikálních jevů). Název minipočítače zavedla koncem šedesátých let firma DEC pro kategorii počítačů, které pro svou obsluhu nepotřebovaly rozsáhlý obslužný tým, většinou již stačil jeden člověk. Rozměry a ceny byly mnohem menší než u tehdejších sálových počítačů. Samozřejmě se snížil i výkon. Počítače byly určeny pro menší firmy a univerzity. K minipočítačům, které se však v žádném případě svými rozměry nepodobají dnešní osobním počítačům (většinou se jednalo o několik 20

23 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Internet skříní v jedné místnosti, se již připojovaly terminály s obrazovkovým výstupem Internet Stejně jako v případě mnoha úspěšných technologií hledejme počátek Internetu ve vojenském výzkumu, který v době studené války a hrozby jaderné války dostal za úkol vyvinout síť schopnou přežít jaderný zásah. Poměrně brzy byl rodící se ARPANET zpřístupněn i dalším pracovníkům výzkumu a vývoje pracujícím pro ministerstvo obrany USA, a ještě později byl uvolněn i pro čistě civilní výzkum a celou akademickou sféru. Přitom se k zárodečné síti ARPANET postupně připojovaly další akademické a vědeckovýzkumné sítě, až si výsledná soustava vzájemně propojených sítí zasloužila své dnešní jméno Internet. Přibližně od roku 1990 se Internet začíná otevírat i komerčnímu využití, jež nabývá stále významnějších rozměrů. vznik Internetu Internet tedy funguje jako velmi volný konglomerát zúčastněných sítí, které používají síťový protokol TCP/IP (Transmission Control Protocol/Internet Protocol) a doplňkové služby umožňující přidělování fyzických i symbolických adres distribuovaným způsobem. Architektura tohoto systému je zcela decentralizovaná. Dokud byl Internet na počátku své existence financován ministerstvem obrany USA a posléze i civilní grantovou agenturou NSF (National Science Foundation), bylo možné uvažovat o vlastnictví Internetu ze strany těchto institucí. Další sítě, které se k Internetu postupně připojovaly, však měly své konkrétní vlastníky, kteří jimi zůstali i po připojení sítě k Internetu. Dnes proto neexistuje žádný konkrétní vlastník Internetu jako takového, ale existují pouze konkrétní vlastníci dílčích částí Internetu (tj. dílčích sítí připojených k Internetu). Stejně tak není možné platit za používání Internetu jako takového, tj. konkrétní financování všech jednotlivých součástí Internetu je záležitostí vzájemných dohod mezi konkrétními vlastníky těchto částí. Koncoví uživatelé proto za přístup k Internetu platí tomu, kdo jim jejich připojení zprostředkovává. Jestliže Internet jako celek nemá žádného konkrétního vlastníka, nemůže existovat subjekt, který by si z titulu vlastnických práv mohl nárokovat i právo řídit Internet. Ve skutečnosti jsou tedy jednotlivé části Internetu řízeny svými konkrétními vlastníky a aspekty globálního charakteru (zejména pak provozní povahy) jsou regulovány vzájemnými dohodami těchto vlastnických subjektů. Současně s tím mohou existovat a existují subjekty, pověřené vykonáváním dílčích řídících rolí globálního dosahu, například koordinací přidělování tzv. IP adres, poskytováním informačních služeb o Internetu apod. Nejvyšší morální autoritou v Internetu zřejmě je Kdo Internet řídí? 21

24 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Internet společnost Internet Society. Jde o dobrovolné sdružení jednotlivců i organizací, kteří cítí odpovědnost za jeho další rozvoj. Společnost Internet Society rovněž zastřešuje standardizační aktivity v rámci Internetu. Ani společnost Internet Society si však nepřisuzuje vlastnická práva k Internetu. Dříve, než se Internet otevřel komerčnímu světu (cca v roce 1990), připojovaly se k němu prakticky jen celé již existující sítě. Jednotliví koncoví uživatelé tak získávali přístup k Internetu hromadně a jako jistý vedlejší efekt toho, že již jsou připojeni ke své původní síti, která se nyní propojila s Internetem. V současné době se tato strategie zásadně mění, tj. k Internetu se dnes připojuje stále více individuálních uživatelů, kteří nejsou zapojeni do žádné jiné sítě. nejčastější typy přípojek Technologických možností připojení k Internetu, existuje celá řada, přesto je ale možné identifikovat tři nejčastěji používané varianty připojení: komutované připojení (někdy též: vytáčené připojení, či vytáčená linka, od anglického "dial-up"). Podstatou tohoto připojení je využití veřejné telefonní sítě pro potřeby propojení uživatelova počítače se vstupním bodem do sítě jeho poskytovatele připojení (providera). Jelikož je veřejná telefonní síť uzpůsobená potřebám přenosu hlasu, zatímco pro potřeby komutovaného připojení je potřeba přenášet data, je nutné používat vhodné modemy. Důležitou vlastností komutovaného připojení je to, že má dočasný charakter, a vzniká až na základě konkrétní potřeby na straně uživatele (a poté zase zaniká). Naproti tomu toto komutované připojení nemůže být iniciováno zvnějšku, například někým kdo by chtěl kontaktovat uživatele. Nevýhodou komutovaného připojení je i relativně malá spolehlivost a dosažitelná přenosová rychlost. V dnešní době již přestává být pro uživatele dostatečné, jelikož připojení pevnou linkou dosáhlo podstatného snížení cen. připojení pevnou linkou (též: pevné připojení). Zde je mezi uživatelem a providerem zřízeno spojení, existující trvale v čase. V úvahu přitom připadá více konkrétních možností realizace tohoto spojení (například může jít o pronajatý datový okruh telefonního typu, digitální datový okruh, ale třeba také o dvoubodový bezdrátový spoj v podobě tzv. bezdrátové místní smyčky apod.). Důležité je, že spojení i možnost přenosu dat existují trvale, a uživatel je tedy vždy dosažitelný. Tento způsob připojení připadá v úvahu zejména pro připojování celých lokálních sítí, resp. více počítačů vzájemně propojených do lokální sítě. Dále připadá v úvahu pro takové subjekty, které chtějí provozovat vlastní internetové služby. mobilní připojení Tato varianta je charakteristická tím, že umožňuje aby se uživatel připojoval k Internetu v zásadě odkudkoli, a hlavně se mohl se svým počítačem během připojení pohybovat (například cestovat v autě, ve vlaku 22

25 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Služby Internetu apod.). V současné době je takováto možnost mobilního připojení realizována zejména prostřednictvím sítě mobilních telefonů GSM, a má typicky charakter dočasného spojení. V úvahu však připadá i připojení přes satelit 2.5. Služby Internetu Jednou za základních informačních potřeb je potřeba komunikace - ať již komunikace individuální, mezi dvěma subjekty, či potřeba komunikace skupinové, mezi více subjekty současně. Dnešní Internet nabízí takové služby, které podporují skupinovou i individuální komunikaci jak spřaženým (on-line) způsobem, a tedy v reálném čase, tak i způsobem nespřaženým (off-line). O dvou nejpoužívanějších způsobech takovéto komunikace pojednává následující kapitola. O elektronické poště, jejích možnostech a způsobu fungování již bylo napsáno opravdu velmi mnoho. Nicméně, elektronická pošta si získala tak velkou oblibu a stala se doslova novodobým fenoménem v oblasti mezilidské komunikace především z důvodu, že funguje na principu off - line, a tudíž nevyžaduje současnou přítomnost odesilatele i příjemce. V praxi to znamená, že odesilatel může svou zprávu sestavit tehdy, kdy na to má čas, kdy se na to může soustředit, a stejně tak si i příjemce může přečíst došlou zprávu a zareagovat na ni tehdy, kdy se to hodí zase jemu. Tím se tedy individuální diskuse prostřednictvím elektronické pošty principiálně odlišuje například od telefonního hovoru. Elektronická pošta samozřejmě umožňuje i přenos příloh (včetně netextových příloh). I když je elektronická pošta svou podstatou prostředkem individuální komunikace, lze ji poměrně jednoduše využívat i pro komunikaci skupinovou, např. jednoduchým rozesláním jednoho a téhož příspěvku současně více adresátům. Nyní se pokusme stručně vysvětlit, jak elektronická pošta funguje. Napíšeme dopis na svém počítači a použijeme nějaký program, který ho odešle. Znamená to, že se náš počítač spojí s počítačem našeho internetového poskytovatele, kam se naše maily nahrají. Odtud prostřednictvím Internetu putují do dalšího počítače podle doménového jména, které je součástí každé elektronické adresy. Zde se pošta hromadí tak dlouho, dokud si ji adresát nevyzvedne. Adresát si musí poštu taky otevřít pomocí nějakého vhodného programu. Počítače, které mají na starosti přenos pošty se nazývají poštovní servery. Programy, které pracují s poštou se nazývají poštovní klienti. Poštovních klientů je celá řada. Mezi nejpoužívanější patří: Microsoft Outlook Express, Netscape Messenger, WinPMail a další. Jak elektronická pošta funguje? fre ový účet Až dosud jsme se zabývali klasickou elektronickou poštou, kterou si člověk většinou stahuje pomocí serveru svého providera. Využívá k tomu 23

26 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Služby Internetu ová adresa elektronická konference takzvaný protokol POP3 (Post Office Protocol, verze 3), ale tím se nemusíme moc zabývat. Kdo chce používat elektronickou poštu, má ještě jednu možnost, jak si svou ovou schránku založit. Jedná se o tzv. fre ový účet, který dnes nabízí velké množství firem i na českém Internetu. Služba je úplně zdarma. Fre ový účet má několik výhod: Můžeme si takových schránek založit libovolné množství a k poštovní schránce máme přístup přes webový prohlížeč. Funguje to tak, že z libovolného počítače, který je připojen na Internet, vstoupíme na web, kde je tato služba nabízena, a zaregistrujeme se (tj. vyplníme údaje ve formuláři včetně uživatelského jména a hesla, které budeme pak stále používat). Poštu si můžeme přečíst na kterémkoli počítači na světě. Tento předpoklad určitě ocení ti, kdo hodně cestují. Je tu samozřejmě i jedna nevýhoda: fre ová korespondence je méně bezpečná. Mezi nejznámější fre ové poskytovatele patří: .seznam.cz, mujmail.atlas.cz a další. Základní tvar ové adresy: ová adresa nesmí obsahovat žádnou diakritiku a skládá se ze 4 částí: uživatelského jména; zavináče; názvu domény; přípony. Dokonalejším řešením skupinové komunikace jsou tzv. elektronické konference. Účastníci konference, kteří sdílejí zájem o určité téma, se zaregistrují u tzv. správce konference, kterému jsou pak adresovány jednotlivé příspěvky do konference a ty pak správce podle seznamu buďto bez zásahu nebo po výběru a případné úpravě (u tzv. moderovaných konferencí) rozešle všem účastníkům. Správcem přitom může být člověk, který současně může být i moderátorem konference, nebo automaticky pracující program (příslušná konference je pak nemoderovaná). Zdaleka nejpopulárnější službou dnešního Internetu je služba hypertext World-Wide Web, označovaná zkratkou WWW, někdy též zkratkou W3. Idea WWW vznikla v laboratoři fyziky vysokých energií CERN (ve Švýcarsku). Na rozdíl od běžných, tzv. lineárních textů, na které jsme zvyklí z tradičních publikací, mohou být informace ve WWW uspořádány ve formě hypertextu, tj. takového textu, jehož různé součásti - jednotlivá slova, celé skupiny slov, věty, nebo například i jednotlivá písmena - mohou představovat odkazy vedoucí buď na jiná místa v tomtéž textu (dokumentu), nebo na jiné dokumenty jako takové, nebo na 24

27 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Služby Internetu konkrétní místa v jiných dokumentech. Navíc jsou tyto odkazy aktivní, v tom smyslu, že jejich vybráním (např. kliknutím myši) klientský program služby WWW interpretuje jako pokyn k přechodu na místo, kam odkaz směřuje. Takovéto aktivní odkazy přitom mohou vést jak do hypertextových dokumentů, nacházejících se na stejném místě (na stejném WWW serveru) jako výchozí dokument, tak i do dokumentů, které se nachází na kterémkoli jiném místě v rámci Internetu. Dokumentem přitom nemusí být pouze text. Může jít o obrázek, videosekvenci nebo zvukový dokument. Tímto způsobem lze vytvářet multimediální prezentace. Hypertexty se vytvářejí v jazyce HTML. Práci s dokumenty WWW usnadňují tzv. prohlížeče (anglicky browser). Nejrozšířenější jsou Netscape, Internet Explorer a další. Zpočátku měl navrch Netscape, postupně však převládl Explorer, který je dodáván jako součást operačního systému Windows. Každý z nich poskytuje rozsáhlé standardní služby, ale liší se v různých nadstavbách a vylepšeních. Prohlížeče lze používat i jako editory stránek WEB (lze s nimi vytvářet nové stránky, upravovat existující apod.) i v prostředí Windows bez problémů s českou diakritikou v režimu (téměř) WYSIWYG (What You See Is What You Get, tj. co vidíš na obrazovce, to se ti vytiskne). Pro účely WWW byl firmou Sun Microsystems vyvinut i programovací jazyk Java, který rozšiřuje možnosti jazyk HTML 25

28 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Služby Internetu tvůrců stránek. Pro jednodušší aplikace byl z jazyka Java odvozen jazyk Javascript. WAP Rozvoj nových technologií (tj. spojení mobilních telefonů a Internetu) dramaticky zvyšuje počet uživatelů Internetu. Mobilní telefony má více lidí než počítače, snahou je proto dostat na ně také Internet. Výsledkem tohoto úsilí je standard WAP (Wireless Applications Protocol). Jde vlastně o způsob komunikace mezi dvěma prostředími, které pro sebe původně nebyla určena mezi mobilním telefonem s miniaturním a nekvalitním displejem a Internetem s bohatou a náročnou grafikou. WAP je proto schopen zprostředkovat pouze některé základní (či spíše komerčně nejzajímavější) služby webu, např. jednoduché zpravodajství, elektronický obchod, bankovnictví atd. Abyste mohli využívat služeb WAP, potřebujete telefon vybavený touto funkcí a mobilního operátora, který standard WAP podporuje. Třetí podmínkou je, aby navštěvované stránky byly pro tuto možnost upraveny, např. wapovský portál wap.atlas.cz. Jak číst webovou adresu? Vysvětlíme si to na příkladě: habiballa/index.htm index.htm - tak začíná většina webových adres: zkratka http počítači říká, jaký protokol bude při čtení stránky používat HyperText Transfer Protocol. Alternativou je zkratka ftp neboli File Transfer Protocol, který se používá pro přenos souborů. Většina prohlížečů však napsání této části adresy nevyžaduje. www třemi wéčky začíná mnoho webových adres, i když to není nezbytně nutné stejně tak může být před jménem domény napsáno web či cokoliv jiného, dokonce tam nemusí být vůbec nic, záleží to výhradně na provozovateli stránek. volny.cz nejdůležitější část adresy neboli jeho domény: podle koncovky lze poznat její druh či původ (koncovkou.com končí většina amerických komerčních domén, české domény mají většinou koncovku.cz) habiballa jméno složky, kde je hledaný dokument na serveru uložen (počet složek ohraničených lomítky může být teoreticky libovolně mnoho záleží na struktuře dat uložených na hostitelském počítači). index.htm jméno dokumentu, který se nakonec načte do okna prohlížeče. Browsery většinou zobrazí takto označenou stránku, pokud není specifikován konkrétní soubor, lze také obvykle používat default.htm. Pro prezentování nejrůznějších informací jsou k dispozici různé služby. Z pohledu uživatele však platí, že míra užitečnosti takovýchto nabídek, 26

29 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Vyhledávací služby resp. snadnost orientace v nich a snadnost nalezení toho, co uživatel hledá, je určena především schopnostmi a zkušenostmi uživatele. Pokud uživatel alespoň přibližně ví kam sáhnout, obvykle již pro něj není velkým problémem skutečně získat to, o co má zájem, resp. co potřebuje. Mnohem větším problémem může být samotné hledání v tak obrovském množství informací, jaké dnešní Internet představuje. Podívejme se proto, jaké jsou prakticky použitelné možnosti vyhledávání v rámci Internetu Vyhledávací služby Pro vyhledávání nejrůznějších zdrojů v Internetu se dnes používají specializované vyhledávací služby, které se sice v mnoha aspektem významně liší, ale v zásadě jsou postaveny na stejném principu. Ten vychází z architektury klient/server a spočívá v tom, že servery každé vyhledávací služby mají vždy stanoven určitý okruh působnosti, v rámci kterého pravidelně (například 1x týdně) sbírají informace určitého typu například informace o tom, jaké soubory se nalézají v jednotlivých adresářích serverů. Tyto informace si pak servery vyhledávacích služeb uchovávají u sebe (například ve vhodné databázi). Koncový uživatel, který něco konkrétního hledá, se pak obrací se svým požadavkem (dotazem) na tyto servery, a ty mu odpovídají informací o umístění toho, co uživatel hledá (v případě úspěšného dotazu). Konkrétní vyhledávací služby se pak liší zejména v tom, jaký druh informací sbírají - což pak následně určuje i to, co může uživatel chtít hledat. Možnosti vyhledávání informací na webu jsou představovány dvěma základními typy vyhledávacích nástrojů, předmětovými katalogy založenými na ručním sběru dat a vyhledávacími stroji, jež využívají pro sběr a vytváření databází automatizovaných prostředků. Katalogy jsou velmi rozsáhlé seznamy stránek, které někdo podle určitého klíče třídí a ačkoliv jsou stále oblíbeným informačním zdrojem pro řadu uživatelů webu, je nepochybné, že vyhledávací stroje poskytují nejen více informací o současném obsahu webových stránek, ale nabízejí i podstatně širší možnosti pro cílené vyhledávání. Vyhledávací stroj je databáze zdrojů získaných z webu automatizovaným sběrem informací umístěných na webových serverech. Tuto databázi mohou uživatelé prohledávat prostřednictvím dotazů. Slova z dotazů jsou porovnávána s informacemi v databázi, nalezené informace odpovídající dotazu jsou setříděny podle toho, jak vyhovují položenému dotazu, a zobrazeny uživateli sestupně podle míry relevance. 27

30 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Vyhledávací služby hlavní funkční části vyhledávacích strojů Způsob hodnocení výsledků vyhledávání vychází zpravidla ze dvou základních faktorů: z vlastního obsahu webového dokumentu (sídla) a z vnějších vlivů, jež rovněž významně přispívají k tomu, že se určitá webová sídla nebo dokumenty ocitají na předních místech při řazení výsledků vyhledávání. Pokud jde o obsah dokumentů, hrají roli při vyhodnocování relevance především četnost výskytu slov v dokumentu, jejich pozice ve struktuře dokumentu, výskyt slov v dalších dokumentech v daném webovém sídle a způsob, jakým je webový dokument vytvořen (např. použití rámů může negativně ovlivnit indexaci webového sídla vyhledávacím strojem). Mezi vnější faktory, které mají vliv na posouzení míry relevance vyhledaných odkazů, patří hlavně obliba zdroje, výsledky z partnerských vyhledávacích služeb a placené služby. Vyhledávací stroje (search engines) jsou tvořeny čtyřmi základními funkčními částmi: roboty, jejichž hlavním úkolem je sběr informací na webových serverech; indexačním programem zpracovávajícím informace, jež získají z webu roboty; vyhledávacím programem, který na základě uživatelova dotazu vyhledává a zpracovává informace z databáze vytvořené indexačním programem tak, aby výsledky co nejlépe vyhovovaly položenému dotazu; rozhraním, jež dotazy uživatele předává vyhledávacímu stroji a zobrazuje výsledky hledání uživateli. Z pohledu toho, jaké dokumenty nakonec služba na základě dotazu vyhledá, je velmi důležitý indexační program. Informace jsou z dokumentů získávány a zpracovávány do databází na základě rozhodnutí tvůrců těchto programů o tom, na kterých místech se v dokumentech vyskytují důležité informace. Rozsah načítaných informací bývá samozřejmě ovlivněn i technologickým zázemím provozovatele vyhledávací služby. Sbírané údaje se proto u jednotlivých služeb liší, což je jednou z příčin rozdílného zpracování téhož dotazu několika vyhledávacími službami. Jaké informace z webu roboti sbírají Vyhledávací stroje jsou jejich provozovateli zpravidla označovány jako fulltextové vyhledávače. Znamená to tedy, že by jejich databáze (indexy) měly být vytvářeny na základě zpracování úplných textů načtených z webových serverů. Není to ovšem vždy zcela pravdivé tvrzení, i když v současnosti je možné říci, že většina nejznámějších vyhledávacích strojů Google, AllTheWeb, Yahoo! Search, nebo AltaVista opravdu načítá do svých databází plné texty webových dokumentů. Patří k nim i české 28

31 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Vyhledávací služby vyhledávací stroje Jyxo a Morfeo. I zde však platí určitá omezení, jež se týkají dokumentů, jejichž velikost přesahuje jednotlivými vyhledávači stanovenou mez (například Google indexuje pouze úvodních 101 KB webového dokumentu, Yahoo! Search úvodních 500 KB). Čím vyšší je četnost výskytu hledaných termínů v daném dokumentu, tím výše se webové sídlo nebo jednotlivý dokument ocitne při zobrazení výsledku vyhledávání. Některé vyhledávací služby zobrazují rovněž informace o datu vytvoření nebo aktualizace dokumentu, což je z pohledu uživatele důležitý údaj. Mezi informace, jimž vyhledávací stroje věnují zvláštní pozornost a jimž přikládají význam, patří: názvy dokumentů je to první a nejspíš ta nejdůležitější část dokumentu vztahující se k jeho obsahu, kterou vyhledávací stroj získává; proto také je slovům z názvu dokumentu přikládán zásadní význam, protože právě na základě tohoto textu se uživatelé často rozhodují o tom, který z vyhledaných dokumentů odpovídá nejlépe jimi hledanému zdroji; nadpisy (titulky a mezititulky), tj. člení vlastní text dokumentu do menších logických celků; vyhledávací stroje předpokládají, že autoři shrnují v těchto prvcích dokumentu obsah následujících úseků textu; názvy hypertextových odkazů, tj. názvy by měly výstižně vyjádřit obsah odkazovaného zdroje, měly by být informativní; vlastní text dokumentu; webová adresa; obrázkové nadpisy, tj. pokud obrázek nese významnou informaci; zvláště tehdy, nahrazuje-li text, který by jinak byl obsažen ve zdrojovém kódu. významné součásti dokumentů pro práci vyhledávacích strojů Velmi užitečným zdrojem informací je obsah webového sídla, tedy webová stránka, která obsahuje seznam buď všech nebo alespoň těch nejdůležitějších odkazů na dokumenty, které tvoří webové sídlo. Má význam nejen pro uživatele, jimž usnadňuje orientaci, ale také pro roboty vyhledávacích strojů, kterým pomáhá nalézt při načítání informací o daném webovém sídle všechny dokumenty. Obecně lze říci, že problém vyhledávání v rámci WWW nemá žádné jednoduché a univerzální řešení. Ve světě WWW existuje mnoho různě zaměřených vyhledávacích služeb, tzv. prohledávačů (anglicky search engines), například AltaVista, Yahoo, Lycos, Infoseek nebo jejich české obdoby Seznam, Kompas, Atlas apod. Některé sbírají svá data plně automaticky, zatímco jiné se spoléhají alespoň na částečnou účast člověka. 29

32 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Vyhledávací služby typy prohledávačů Tyto prohledávače můžeme v zásadě rozdělit na dvě kategorie: tzv. fulltextové prohledávače (jako typické představitele uveďme AltaVista nebo Atlas), které na základě zadaných klíčových slov nebo jejich kombinací prohledávají celé texty dokumentů a zasílají uživateli seznam dokumentů, v nichž se vyskytuje jím zadaná kombinace klíčových slov. Podle výsledku prohledávání má pak uživatel možnost svůj dotaz dále zpřesňovat. hierarchické ( stromové ) prohledávače, které uživateli nabízejí kategorie dokumentů sestavených do stromové struktury a uživatel může pátrat v této struktuře na potřebné úrovni detailu. Na tomto principu pracují např. Yahoo nebo Seznam. Každý ze způsobů má své přednosti i nedostatky a většinou se používají kombinovaně. Doporučuje se použít více prohledávačů, neboť se mezi sebou liší ve výběru serverů, které indexují, v rozsahu apod. Existují i kombinované prohledávače, která za uživatele vyvolají různé elementární prohledávače a seznam uživateli předložených dokumentů využívá vah přiřazených jednotlivým prohledávačům. Nakonec však vždy musí nastoupit člověk, otevřít dokumenty, o kterých usoudí, že by pro něj mohly být zajímavé (což se ne vždy povede, poměrně často není adresa aktuální a dokument buď byl vyřazen nebo přemístěn na jinou adresu) a zde začíná tzv. surfování - otevřený dokument vám nabídne další odkazy, které by mohly být zajímavé... Prohledávače celosvětového internetu 1. KATALOGY (ROZCESTNÍKY) o DMOZ (http://www.dmoz.org/) o YAHOO (http://www.yahoo.com) 2. ROZCESTNÍKY S RATINGEM nabízejí sice méně odkazů, ale zato těch s nejvyšším ohodnocením. o Top10Links (http://www.top10links.com) Jak odborníky, tak uživateli je hodnoceno nejvýše 20 nejlepších serverů každé kategorie. o ALEXA (http://info.alexa.com) Přednostně vyhledává více navštěvovaná místa. Na základě informací o návštěvnosti nabídne, kromě možnosti návštěvy hledaného sídla, také přehled o něm, jeho hodnocení, jeho historii a hlavně seznam ostatních míst, která navštívili stejní uživatelé. 3. FULLTEXTOVÉ PROHLEDÁVÁNÍ o GOOGLE (http://www.google.com) je nejpoužívanější vyhledávač. 30

33 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Vyhledávací služby o o MSN SEARCH (http://search.msn.com) je vyhledávač, který realizuje relevantní (nespamové, tj. bez nevyžádané reklamy) vyhledávání. ALTAVISTA (http://www.altavista.com) je velmi často používaný vyhledávač 4. HLEDÁNÍ PROGRAMŮ o DOWNLOAD.COM (http://www.download.com) je vynikající archív programů. o TUCOWS (http://tucows.cesnet.cz) je archivem programů pro sítě, internet a pro jejich nástroje. 5. ZPRAVODAJSKÉ SERVERY o OnlineNewspapers.Com(http://www.onlinen ewspapers.com) Rozcestník, který nabízí všechny nejvýznamnější světové zpravodajské portály. 6. SLOVNÍKY o SLOVNÍKOVÉ CENTRUM (http://www.yourdictionary.com) téměř 200 jazyků, každý s desítkama slovníků. o WordReference (http://www.wordreference.com/definition) Tento slovník využívá WordNet lexical database" vyvinutou na Princeton University. Jednou z hlavních výhod je řazení slov do skupin synonym. To je výhodné zejména pro neanglicky mluvící cizince, kteří jsou nejčastějšími návštěvníky. K dispozici je i fórum pro vaše dotazy. o FreeTranslation (http://www.freetranslation.com) Zdarma přístupný automatický překladač textů a webových sídel. Překládá z/do angličtiny do/z španělštiny, francouzštiny, němčiny, italštiny, čínštiny, holandštiny, portugalštiny, ruštiny a norštiny. o Maths Thesaurus (http://thesaurus.maths.org/mmkb/view.html) je online výkladový slovník matematiky. o FOLDOC (http://foldoc.org) je výkladový slovník počítačové terminologie "Free On- Line Directory of Computing". 7. SVĚTOVÉ ENCYKLOPEDIE o ANSWERS.COM (http://www.answers.com) je encyklopedické centrum, které je postaveno na spolupráci s celou řadou známých portálů. Zahrnuje online 31

34 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Vyhledávací služby o o o o o o encyklopedii včetně výslovnosti, výkladového slovníku, podrobné definice a dalších podrobností. OXFORD REFERENCE ONLINE (http://www.oxfordreference.com/pub/views/home.html) Jádro kolekce je tvořeno asi stovkou známých a důvěryhodných slovníků, příruček a encyklopedií. Internet Magazine zvolil Oxford Reference Online webovým sídlem r Tato encyklopedie slouží akademickým pracovištím po celém světě (i v České republice) bez nutnosti registrace a tím i poplatků s využitím přístupu "Athens". BRITANNICA (http://www.britannica.com) Světově proslulá encyklopedie, která má ve své tištěné verzi 32 svazků. ENCARTA (http://encarta.msn.com) Známá encyklopedie společnosti MicroSoft. WIKIPEDIA (http://encarta.msn.com) "Otevřená" encyklopedie, do které mohou přidávat a opravovat hesla samotní uživatelé. Je to velmi nadějný projekt, který se vyznačuje neobyčejně strmým rozvojem. Wikipedia má více jazykových verzí, ta anglická má (leden 2005) přibližně 450 tisíc položek. Některé položky obsahují i několik stran textu. ENCYCLOPEDIA.COM (http://www.encyclopedia.com) Poskytuje zdarma více než často aktualizovaných hesel z Columbia Encyklopedia (6. vydání). Každé heslo je dovybaveno odkazy na novinové a časopisecké statě a rovněž na obrázky a mapy podporované službou elibrary. Eric Weisstein's World of Science (http://scienceworld.wolfram.com) Vynikající příručky/encyklopedie Erica Weissteina z oborů matematika, fyzika, astronomie, chemie a také biografie. Portál je budován a udržován jako služba pro vědeckou veřejnost. 8. MAPY A ATLASY (SVĚTOVÉ ČI EVROPSKÉ) o MULTIMAP (http://www.multimap.com) Mapy a plány celého světa. o Map24 (http://www.uk.map24.com) Velký pomocník pro motoristy. Asi nejlepší pro trasování cest po zemích Evropské unie. o MAPORAMA (http://www.maporama.com) Nabízí interaktivní mapy a plány zemí a měst a hlavně trasováni cest po celem světě (v mnoha světových jazycích - bohužel nikoliv česky). 32

35 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Vyhledávací služby Prohledávače českého internetu: 9. VYHLEDÁVACÍ CENTRÁLY o ALENKA (http://alenka.pinknet.cz) Nabízí jak katalogy tak různé druhy vyhledávání (včetně lidí) ze všech známých databází (vynikající) o Global Search (http://www.globalsearch.cz) Globální vyhledávač nejen v českém internetu, používá zavádějící doménu Google.cz 10. KATALOGY (ROZCESTNÍKY) o SEZNAM (http://www.seznam.cz) Nejnavštěvovanější rozcestník českého internetu. o ATLAS (http://www.atlas.cz) Rozcestník (ale i fulltextový vyhledáč) v českém internetu. o CENTRUM (http://www.centrum.cz) Poměrně nový portál společnosti NetCentrum. 11. FULLTEXTOVÉ PROHLEDÁVÁNÍ o Český Google (http://www.google.com/intl/cs/ ) Chcete-li pracovat s českým Goodlem a nenastaví-li se vám při tom český jazyk automaticky, použijte tuto upřesněnou adresu. o MORFEO (http://www.globalsearch.cz) (DŘÍVE WEBFAST) Moderní účinná služba se svým uspořádáním napadně podobá Googleu. Po přechodu na portál Morfeo používá dokonalejší technologie s českým ohýbáním slov, korekcí překlepů a nabídkou synonym. o JYXO (http://jyxo.cz) Fulltextové vyhledávání s českým skloňováním a časováním a s českou kontrolou pravopisu. JYXO je strmě nastupující službou, která indexuje několik desítek milionů dokumentů s každodenní aktualizací. o SEZNAM (http://www.seznam.cz) Fulltextové vyhledávání nejen v Českém Internetu (využívá službu GOOGLE). o ATLAS (http://www.atlas.cz) Fulltextové vyhledávání nejen v Českém Internetu (využívá službu JYXO). o CENTRUM (http://www.centrum.cz) Fulltextové vyhledávání nejen v Českém Internetu (využívá službu WEBFAST). 12. HLEDÁNÍ SOUBORŮ (PROGRAMŮ) 33

36 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Vyhledávací služby o o o o o o SLUNEČNICE (http://www.slunecnice.cz) Nejlepší český archív i vyhledávač softwaru. ISOFTWARE (http://www.isoftware.cz) Krásný archív i vyhledávač softwaru. STUDNA (http://www.studna.cz) Archív i vyhledávač softwaru, který má i hodnocení softwaru od redaktorů. STAHUJ.CZ (http://www.stahuj.cz) Nový, ale rychle a nadějně se rozvíjející vyhledávač i archív. Má hodnocení od uživatelů. COMMS4FREE (http://comms4free.hyperlink.cz) Volně šiřitelné programy pro internet. DOWNLOAD ATLASU (http://download.atlas.cz) Zaměřeno nejen na programy pro internet. 13. ZPRAVODAJSKÉ SERVERY o idnes (http://www.idnes.cz) Nejznámější všeobecné zpravodajství patří společnosti MAFRA. o NOVINKY (http://www.novinky.cz) Velmi navštěvovaný zpravodajský portál patří serveru Seznam a deníku Právo. o ATLAS (http://zpravy.atlas.cz) Zpravodajský server, který trvale vykazuje vysokou návštěvnost. o CENTRUM (http://zpravy.centrum.cz) Zpravodajský server, který patří ke čtveřici těch nejlepších. 14. DOPRAVCI A JÍZDNÍ ŘÁDY o ABUS (http://www.busportal.cz) Jízdní řády autobusů. o Jízdní Řády (http://jizdnirady.atlas.cz) Kombinované jízdní řády vlaků, autobusů, místní doprava a letecká doprava. 15. TELEFONNÍ A JINÉ SEZNAMY o Český Telecom (http://phone.quick.cz) Telefonní seznam České republiky. o Zlaté Stránky (http://zlatestranky.idnes.cz) Hledání v databázi firem ČR. 16. POŠTOVNÍ SMĚROVACÍ ČÍSLA o PSČ (http://www.psc.cz) Vyhledávácí služba serveru Wizards.cz. o PSC.UNAS.CZ (http://psc.unas.cz) Seznam poštovních směrovacíh čísel v ČR i SR, tříděný jak podle pošt, tak podle obcí. Je také možné vyhledávat podle 34

37 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Vyhledávací služby názvu města, obce, či městské části (nebo také pouze část názvu). 17. PRAVIDLA o PRAVIDLA PRAVOPISU (http://www.pravidla.cz) Pravidla českého pravopisu patří mezi novinky r Obsahují zkratky, tituly, pravidla pro písmena i, y, ě, ale také pravidla pro měkké souhlásky, předložky a předpony, psaní slov přejatých, psaní velkých písmen, psaní spřežek, spojovací čárka (spojovník), členicí znaménka,.. o SPORTOVNÍ PRAVIDLA (http://www.sportovnipravidla.cz) Kompletní sportovní pravidla (a také základy sportovních pravidel) několika desítek u nás známých i méně známých sportů. 18. ENCYKLOPEDIE o VŠEVĚD (http://www.vseved.cz) Výborná encyklopedie společnosti Netpoint s.r.o. o CO JE CO (http://www.cojeco.cz) Velmi dynamicky se rozvíjející všeobecná encyklopedie. o COTO.JE (http://www.cotoje.cz) Sdružuje vyhledávání z Ottovy encyklopedie, Malé československé encyklopedie a Encyklopedie Universum. o KDO JE KDO (http://www.kdojekdo.cz) Vyhledává a představuje osobnosti z nejrůznějších oborů lidské činnosti. o WIKIPEDIE (http://cs.wikipedia.org) Česká Wikipedie je (obdobně jako její anglická kolegyně Wikipedia) otevřené internetová encyklopedie, která má v dubnu 2006 již více než 28 tisíc článků. 19. SLOVNÍKY o Pětijazyčný slovník na serveru ihned (http://ib.ihned.cz/slovnik) pochází od splečnosti LangSoft s.r.o. o Vícejazyčný slovník (http://www.slovnik.cz) Slovní zásoba vychází ze zredukované slovní zásoby PC Translator společnosti LangSoft. Nabízí rychlý překlad z/do celkem 7 jazyků: anglický, německý, francouzský, italský, španělský, ruský, latinský a český o Výkladový slovník počítačových pojmů (http://www.zive.cz/slovnik) Slovník na serveru Živě o Slovník cizích slov (http://www.slovnikcizich-slov.cz) 35

38 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Vyhledávací služby o o Tento slovník obsahuje (duben 2006) přibližně 40 tisíc slov a výrazů. Slovník cizích slov (ABZ) (http://slovnik-cizich-slov.abz.cz) Databáze obsahuje (duben 2006) více než 18 tisíc pojmů, což orientačně odpovídá 400 stránkovému tištěnému slovníku. Pedagogicko - psychologický slovník (http://www.ceskaskola.cz/slovnik/slovnik.as) 20. HLEDÁNÍ ZAMĚSTNÁNÍ ČI PRÁCE o JOBS (http://www.jobs.cz) Nabídka a poptávka práce, brigády a práce pro studenty, poradna, finanční rádce,.. o VOLNÁ MÍSTA (http://www.sprace.cz) Nabídky zaměstnání, životopis, zaměstnavatelé, úřady práce,.. o JOBlist (http://www.joblist.cz) Seznam volných pracovních míst a uchazečů o zaměstnání pro celou ČR, zasílání volných míst i životopisů em. o CV ONLINE (http://www.cvonline.cz) Internetová společnost poskytující služby v oblasti lidských zdrojů. Jejím cílem je pomáhat zaměstnavatelům při vyhledávání vhodných zaměstnanců. 21. INZERCE o INZERT EXPRES (http://www.inzertexpres.cz) Integrovaná inzertni služba (Brno) o ANNONCE (http://www.annonce.cz) Největší inzertní noviny pro ČR on-line (Praha). 22. MAPY o MAPY - TISCALI (http://mapy.tiscali.cz) ( Tiscali): města ČR, automapa, turistika, kilometráž,.., mapa světa o MAPY - ATLAS ((http://mapy.atlas.cz) ( Atlas a Kartografie Praha), mapy ČR, Praha, Brno,... o MAPY - SEZNAM (http://www.mapy.cz) ( Seznam a PJsoft), mapy ČR, Praha, Brno,... Až se s vyhledávači naučíte více pracovat, budete pravděpodobně používat službu, která se jmenuje rozšířené (fultextové) vyhledávání. Svůj dotaz tam můžete položit velmi přesně za použití takzvaných logických spojek ty hlavní jsou tři: A, NEBO a NE. V této kapitole si na jednoduchých příkladech ukážeme, jak správně formulovat dotazy, abychom našli jen to, co právě hledáme. 36

39 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Vyhledávací služby Fulltextový vyhledávač prochází stránky českého a částečně i zahraničního internetu, stahuje si jejich obsah a vytváří z něj databázi (index). V této databázi můžete vyhledávat podle obsahu stránek, stačí zadat dotaz do vyhledávacího okénka nahoře na stránce a kliknout na tlačítko hledej. Zobrazí se výsledky hledání, sestávající z odkazů na stránky, které odpovídají hledanému tématu. Např. Centrum.cz (www.centrum.cz) používá pro fulltextové hledání technologii Morfeo [1], založenou na systému Sherlock Holmes [2]. Morfeo plně podporuje práci s českým jazykem (ohýbání slov, vyhledávání synonym, kontrola překlepů). Jeho další předností je aktuální databáze stránek - celý český internet aktualizuje každé čtyři týdny. Stránky, které se mění často, jsou aktualizovány několikrát týdně, neboť nové zprávy z velkých zpravodajských serverů přibývají do databáze každou hodinu. Co všechno fulltext prohledává? Vyhledávácí technologie Morfeo prohledává všechny stránky na českém internetu, tedy všechny stránky z domény.cz. Navíc vyhledává ve stránkách mimo doménu.cz, které jsou registrovány v katalogu Centrum.cz a ve stránkách, které jejich majitelé sami přidají do databáze. Při vyhledávání můžete použít tyto funkce podporující češtinu: 1. Ohýbání slov Při použití slov vyhledáváte zadaný dotaz včetně jeho různých tvarů - časování, skloňování, jednotná a množná čísla, spisovné a nespisovné varianty slov, alternativní tvary, atd. Ohýbání slov je automaticky zapnuté, nechcete-li slova ohýbat, odškrtněte checkbox "ohýbání slov" vedle vyhledávacího okénka. Příklad: Pokud hledáte slovo domů, hledají se zároveň slova dům, domy, domu Synonyma Při použití této funkce vyhledáváte dotaz včetně jejich synonym. Všechna synonyma pro Vás nemusí mít vždy význam (např. synonymum ke slovu hlava může být i článek), proto můžete výběr omezit vyškrtnutím slov v zobrazené tabulce. Synonyma jsou automaticky vypnuté, chcete-li je používat, zaškrtněte checkbox "synonyma" vedle vyhledávacího okénka. Příklad: Hledáte-li slovo dům, hledají se zároveň slova barák, budova, stavba..., pokud některá z nich v tabulce nevyškrtnete. podpora češtiny 37

40 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Vyhledávací služby Překlepy Vyhledávač Vás upozorní na nesprávně zadaná slova - překlepy, gramatické chyby apod Pokud chcete svůj dotaz upřesnit, můžete použít rozšířené hledání. Zde můžete omezit rozsah hledání například pouze na určitou doménu, jazyk, formát dokumentu a další. Pokročilé dotazy (jednoduchá syntaxe) V případě, že neradi používáte uživatelská rozhraní, můžete svůj dotaz zpřesnit zadáním pokročilého dotazu do vyhledávacího okénka podle následující syntaxe. tučňák tuleň vorvaň stránky, kde se vyskytují všechna zadaná slova ('tučňák' i 'tuleň' i 'vorvaň' současně)?tučňák?tuleň?vorvaň stránky, na kterých se vyskytují slova 'tučňák' nebo 'tuleň' nebo 'vorvaň' (všechna nebo jen některá z nich). "tučňák oslí" stránky, kde se vyskytuje text "tučňák oslí" (jako fráze) "tomáš * masaryk" stránky, na kterých se vyskytují slova 'tomáš' a 'masaryk' blízko u sebe a mezi nimi může být další slovo nebo více slov; spolehlivě najde například stránky s textem 'Tomáš Garrigue Masaryk' tuleň -vorvaň stránky, kde se vyskytuje slovo 'tuleň' a nevyskytuje se na nich slovo 'vorvaň' tuč* stránky, na kterých se vyskytují slova začínající na 'tuč' - je potřeba zadat alespoň tři písmena title:tučňák stránky, které obsahují slovo 'tučňák' v titulku ctitle:tučňák stránky, které obsahují slovo 'tučňák' v katalogovém titulku cdesc:tučňák stránky, které obsahují slovo 'tučňák' v katalogovém popisku hdr:tučňák stránky, které obsahují slovo 'tučňák' v nadpisu (H1... H6) keywd:tučňák stránky, které obsahují slovo 'tučňák' jako klíčové slovo 38

41 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Vyhledávací služby alt:tučňák stránky, které obsahují slovo 'tučňák' v popisku obrázku link:http://www.zoo.cz vyhledá stránky, z nichž vede odkaz na 'http://www.zoo.cz' Pokročilé dotazy (pokročilá syntaxe) Pokročilé dotazy můžete zadávat na všech stránkách uvedením znaku '!' (vykřičník) na začátek dotazu. V režimu pokročilého vyhledávání Morfeo umožňuje výskyty slov libovolně kombinovat pomocí logických spojek (AND, OR) a operátorů (NOT), ovlivňovat třídění výsledků a omezovat vyhledávání podle dalších kritérií.! "tučňák" OR "tuleň" stránky, na kterých se vyskytují slova 'tučňák' nebo 'tuleň' (všechna nebo jen některá z nich).! "tučňák" AND "tuleň" stránky, na kterých se vyskytují slova 'tučňák' a 'tuleň' současně! "tučňák" AND "tuleň" AND NOT "vorvaň" stránky, na kterých se vyskytují slova 'tučňák' a 'tuleň' současně a nevyskytuje se na nich slovo 'vorvaň'! "automobil". MAYBE "bouraný". MAYBE "ojet*". NOT "bazar" stránky, na kterých se vyskytuje slovo 'automobil', mohou se vyskytovat slova 'bouraný' nebo slova začínající na 'ojet' (tj. 'ojetý', 'ojeté',...) a nesmí se vyskytnout slovo 'bazar'. Operátor '.' (tečka) umožňuje v mnoha případech elegantně zapsat dotaz. Výrazy zapsané v uvozovkách (slova nebo fráze) spojte tečkami a můžete je navíc opatřit těmito prefixy: 'NOT'... slovo nebo fráze se nesmí vyskytovat; 'MAYBE'... slovo nebo fráze se může vyskytovat (v takovém případě zvyšuje finální Q); bez prefixu... znamená povinný výskyt slova nebo fráze.! "tučňák patagonský" stránky, na kterých se vyskytuje text 'tučňák patagonský' (jako fráze)! "tomáš * masaryk" stránky, na kterých se vyskytují slova 'tomáš' a 'masaryk' blízko u sebe a mezi nimi může být další slovo nebo více slov; spolehlivě najde například stránky s textem 'Tomáš Garrigue Masaryk'! "oslí"/30000 AND "tučňák" zvýší ohodnocení slova 'oslí' z implicitních na 30000, pro ohodnocení slova lze nastavit

42 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Vyhledávací služby! ("oslí"/30000 OR "císařský") AND "tučňák" zobrazí stránky obsahující slova 'tučňák' a současně slovo 'císařský' nebo 'oslí' tak, že výše v pořadí budou stránky obsahující slovo 'oslí'! "vorvaň". MAYBE "tučňák" stránky obsahující slovo 'vorvaň' a mohou obsahovat i slovo 'tučňák', ale dotazu budou vyhovovat i stránky, které slovo 'tučňák' neobsahují! ALT "tučňák" vyhledá slovo 'tučňák' v popisku obrázku. Podobně lze vyhledávání omezit i na jiné typy textu: TITLE (titulek stránky), EMPH (zvýrazněná slova - tučně, kurzívou atd.), SMALL (malé písmo), HDR (nadpisy; případně HDR1 a HDR2 pro velké resp. malé nadpisy), KEYWD (klíčová slova), META (metainformace o dokumentu), URLWORD (slova vyskytující se v URL stránky), EXT (slova vyskytující se v odkazech na stránku), TEXT (ostatní typy slov - obyčejný nezvýrazněný text).! LINK "http://www.zoo.cz" vyhledá stránky, z nichž vede odkaz na 'http://www.zoo.cz'. Podobně lze hledat podle jména serveru, na kterém je stránka umístěna (HOST "www.zoo.cz"), podle domény (DOMAIN "zoo.cz"), případně zjistit, co Morfeo ví o konkrétní stránce (URL "http://www.zoo.cz/index.html").! "tučňák" AND DOMAIN "zoo.cz" stránky v doméně 'zoo.cz' na kterých se vyskytuje slovo 'tučňák'! FILETYPE="pdf" "tučňák" soubory ve formátu PDF, ve kterých se vyskytuje slovo tučňák. Podobně je možno použít typy "text", "html", "msword" a "excel", popř. všechny typy takto kombinovat:! FILETYPE={"html","pdf","msword"} "tučňák"! LANG="en" "tučňák" soubory v angličtině, ve kterých se vyskytuje slovo tučňák. Dále je možno použít kódy cs, sk, en, de. Popř. jazyky kombinovat:! LANG={"cs","sk"} "tučňák"! ACCENTS 2 "žena" pouze stránky obsahující slovo 'žena', pouze s diakritikou, nevyhledá slovo 'zena'. Možné mody hledání: 0 - default - pokud dotaz neobsahuje diakritiku vyhledává bez diakritiky, jinak vyhledává s diakritikou v dokumentech, které nějakou diakritiku obsahují, jinde bez, 1 - bez ohledu na diakritiku, 2 - striktně dodržovat diakritiku. Pokud uvedete ACCENTS na začátku dotazu, 40

43 TECHNOLOGICKÝ ZÁKLAD ELEKTRONICKÉHO PODNIKÁNÍ Vyhledávací služby platí pro celý dotaz, pokud za nějakým slovem, týká se omezení pouze tohoto slova.! TITLELEN 20 "tučňák" nastavení délky titulku na 20 znaků. (Podobně CONTEXT - délka popisku)! SITEMAX 0 "tučňák" nastavení site compression (0 - Nepoužívat site compression, 1 - default - úplná site compression, 2 - zobrazovat maximálně dva odkazy s podobnou adresou)! AGE < "tučňák" stránky, na kterých se vyskytuje slovo 'tučňák' a stránka je mladší než 7 dní (uvedená hodnota je počet sekund), lze použít operátory <, >, =, <=, >=, <> Pokud chcete vyhledávat ve službě, která není v záložkách vyhledávače nebo záložky neradi používáte, můžete pro vyhledávání např. na Centrum.cz použít zkratky. Stačí před dotaz ve vyhledávacím okénku zadat zkratku pro konkrétní službu ukončenou dvojtečkou. Zobrazí se výsledek hledání v konkrétní službě [3]. mapy: plzeň zobrazí mapu Plzně ve službě Mapy. zbozi: pračka vyhledá všechny nabídky obsahující slovo pračka ve službě Zboží, tedy v nabídkách elektronických obchodů. slov ca: ježek přeloží slovo ježek z češtiny (c) do angličtiny (a) pomocí služby Slovníky. Lze použít také pro překlad z češtiny do němčiny (n), francouzštiny (f), italštiny (i), ruštiny (r), nebo zpětně z těchto jazyků do češtiny (použijte písmenka v obráceném pořadí - např. "ac") slevy: televize vyhledá všechny slevy na televize ve službě Slevy. zprávy: václav klaus vyhledá všechny internetové zprávy týkající se Václava Klause. firmy: kadeřnictví vyhledá všechna kadeřnictví v databázi Firmy Centrum.cz. obr: motýl vyhledá všechny obrázky motýlů v databázi Obrázků. svet: penguin vyhledá stránky obsahující slovo penguin v zahraničním vyhledávači. 41

44 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Algoritmy 3. Informatika v elektronickém podnikání 3.1. Algoritmy Algoritmus a překladač Předpis pro výkon nějaké činnosti, kterou má zabezpečit automatizovaně počítač, se nazývá program. Program je procesoru předkládán ve tvaru kódu, tj. jako posloupnost instrukcí procesoru elementárních příkazů, které je daný procesor schopen přímo provádět. Program je nutné vytvořit v programovacím jazyce a nazývá se zdrojový text programu, který musí být přeložen na instrukce procesoru a to zajišťuje překladač (podkapitola je založena na textu [Po93]). V principu překladu existují dva druhy - kompilační překladač a interpretační překladač zkráceně mluvíme o kompilátorech a interpretech. Kompilátor přeloží zdrojový text programu na cílový kód. Cílový kód je pak nezávislý na kompilátoru, při změně zdrojového kódu je potřeba opakovaně zkompilovat celý zdrojový text. Interpret je naproti tomu řídícím prvkem přeloženého programu postupně čte program, překládá a ihned vykonává příkazy zdrojového kódu. V případě chybného zdrojového kódu se ale tím pádem odhalí chybný zápis v daném jazyce. Stejně jako v realitě má každý z typů své výhody a nevýhody. Interpretovaný program umožňuje modifikaci dat a případně i zdrojového kódu přímo za běhu, je však pomalý spuštěn může být jen překladačem. Kompilátor připraví efektivní nezávislý program, který udržuje v operační paměti počítače pouze svůj kód a svá data, jehož prostředky pro interaktivní změny jsou však značně omezené. Příkladem interpretu může být Java Runtime Engine, který slouží k interpretaci připraveného kódu v jazyce Java (typicky soubor s příponou.jar). Je zřejmé, že i za technologiemi elektronického obchodu musí nutně stát sofistikované algoritmy, které umožňují řízení a prezentaci uživateli. Cílem těchto implementovaných algoritmů je co nejvíce člověka oprostit od časově náročných operací a celou činnost maximálně automatizovat. Programy určené pro počítače zapisujeme v programovacích jazycích. Programovací jazyk, kterému rozumí procesor počítače, se nazývá strojovým jazykem a pouze programy v něm zapsané mohou být daným počítačem přímo provedeny. Psaní programu ve strojovém jazyku je však značně obtížné, neboť strojový jazyk je navržen s ohledem na technickou realizaci procesoru a je značně vzdálen potřebám a běžným vyjadřovacím prostředkům člověka. Kromě toho, různé typy procesorů mají různé strojové jazyky, takže přenesení programu ve strojovém jazyku z jednoho 42

45 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Algoritmy typu procesoru na jiný znamená přepsání programu do jiného jazyka. Tyto problémy jsou dnes vyřešeny existencí vyšších programovacích jazyků, které vycházejí vstříc potřebám a zvyklostem člověka. Aby však bylo možno provést výpočet podle programu zapsaném ve vyšším programovacím jazyku, musí být tento jazyk na daném počítači implementován, tzn. musí existovat programové vybavení, jehož základem je program zvaný překladač, které přeloží program z vyššího jazyka do strojového kódu nebo zajistí výpočet jiným způsobem. Základem úspěšného programátora je především jeho schopnost algoritmizovat danou úlohu. Algoritmem se všeobecně rozumí postup při řešení určité třídy úloh. Nemusíme uvažovat o nějakých složitých algoritmech příkladem může být i algoritmus na sčítaní velkých čísel. Zalgoritmizovat problém a řešit ho automatizovaně počítačem znamená navrhnout takový postup implementovatelný do programovacího jazyka. Při učení algoritmizace není nejdůležitější implementace v konkrétním jazyce, ale pávě postup řešení. Tento postup musí mít jisté vlastnosti - hromadnost (lze měnit vstup z nějakého stanoveného rozsahu), determinovanost (postup musí být přímý bez alternativ, tj. jednoznačný), konečnost a resultativnost (po provedení všech kroků dostaneme výsledek). Klíčovým je používaní proměnných, čímž rozumíme datový objekt, který má své pevně stanovené jméno a jeho stav (obsah) vyjadřující nějaký údaj (data) se může v průběhu výpočtu měnit. Údaj, který je stavem objektu vyjádřen, nazýváme hodnotou proměnné. Jednou ze základních akcí výpočetních procesů je přiřazení hodnoty proměnné. Předepisujeme jí přiřazovacím příkazem, který budeme psát ve tvaru proměnná := výraz Tento příkaz se provede tak, že se nejprve vypočte hodnota výrazu uvedeného na pravé straně příkazu a ta se pak přiřadí proměnné na levé straně příkazu. Nejjednodušším případem výrazu je zápis hodnoty např. ve tvaru dekadického čísla což je konstanta nelze za běhu programu změnit konstantu, ale přiřadí-li se proměnné, pak tato proměnná samozřejmě může měnit svou hodnotu. Dále lze tvořit výrazy z operandů - proměnných a konstant a spojovat je operátory předepisujících pro základní aritmetické operace. Při výpočtu se prostřednictvím vstupních zařízení (jakým je např. klávesnice nebo snímač děrné pásky) zadávají vstupní data, tj. vstupní údaje, ze kterých výpočet vychází, a na výstupní zařízení (jakým je např. obrazovka nebo tiskárna) se zapisují výstupní data, tj. výsledky výpočtu. Stačí předpokládat, že při výpočtu se postupně bude číst posloupnost vstupních dat a postupně se bude vytvářet posloupnost výstupních dat. Pro účely algoritmizace proto zavedeme zjednodušené tvary příkazů vstupu a výstupu, pomocí nichž budeme vyjadřovat, v kterém místě výpočtu se mají akce vstupu či výstupu provést. Proměnné 43

46 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Algoritmy Posloupnost příkazů Přiřazovací příkaz a příkazy vstupu a výstupu patří mezi tzv. jednoduché příkazy, kterými se předepisují základní výpočetní akce. Zabývejme se nyní konstrukcemi, kterými se předepisuje návaznost akcí. Tyto konstrukce se nazývají řídicí struktury. Základní řídicí strukturou je posloupnost příkazů, která předepisuje postupné (sekvenční) provedení příkazů v ní uvedených. Na obrázku jsou znázorněny tři způsoby jejího zápisu, které se nejčastěji používají. Ve všech případech jsou P 1, P 2... P n dílčí příkazy, které se mají postupně provést. Na obrázku a) je posloupnost příkazů zapsána vývojovým diagramem. Vývojové diagramy představují grafickou a stále ještě oblíbenou formu zápisu algoritmu. Příkazy v nich zapisujeme do značek a jejich návaznost vyjadřujeme orientovanými spojnicemi. Tvary a významy některých značek, které budeme při kreslení vývojových diagramů používat, jsou na následujícím obrázku. Vývojový diagram, Strukturogram Programovací jazyk Na obrázku b) je posloupnost příkazů vyjádřena tzv. struktogramem. Příkazy v něm píšeme do bloků, které na sebe navazují v tom pořadí, v jakém mají být provedeny. Další tvary bloků používaných při kreslení struktogramů (a stejně tak další tvary značek pro vývojové diagramy) uvedeme později. Sestavujeme-li algoritmus, neznamená to, že jej musíme zapsat v některé z grafických forem. Moderní programovací jazyky (jako je např. Pascal, Ada a další) totiž umožňují natolik přehledný zápis, že jejich symboliku, někdy různě rozšířenou a doplněnou, můžeme velmi dobře použít i při algoritmizaci (poznamenejme, že mezi tyto jazyky nepatří Basic ani FORTRAN, v nichž nejsou strukturované příkazy umožňující přehledný zápis řídicích struktur). Velmi přehledně lze zapisovat algoritmy také pomocí jazyka Pascal. V něm se posloupnost příkazů zapisuje tak, jak je uvedeno na obr. c: Na začátku posloupnosti stojí slovo begin (=začátek), příkazy vzájemně oddělujeme středníkem (na rozdělení do řádků nezáleží) a na konci posloupnosti napíšeme slovo end (=konec). Poznamenejme ještě, že z hlediska dalšího použití se tento zápis posloupnosti příkazů 44

47 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Algoritmy považuje za jediný (strukturovaný) příkaz, který nazýváme složeným příkazem. Umíme-li zapsat posloupnost příkazů, můžeme již sestavit jednoduché algoritmy. Příklad tří forem zápisu jediného algoritmu následuje. Málokterý problém je natolik jednoduchý, že při sestavování algoritmu jeho řešení vystačíme jen s posloupností základních příkazů. I v poměrně jednoduchých případech jsou zapotřebí řídicí struktury, které předepisují různé alternativy dalšího postupu vázané na splnění určité podmínky (tzv. větvení) resp. opakované provádění určitých akcí (tzv. cykly). Větvení budeme předepisovat řídicí strukturou, kterou nazveme podmíněný příkaz a jejíž vyjádření vývojovým diagramem, struktogramem a pascalskou notací je níže zobrazeno. B je logický výraz, který buď platí nebo neplatí (tzn. nabývá pravdivostních hodnot "pravda" - angl. true resp. "nepravda" - angl. false) a vyjadřuje testovanou podmínku, P1 a P2 jsou příkazy předepisující dvě alternativy postupu. Jestliže B platí, provede se příkaz P1, jinak se provede příkaz P2. Například v jazyce C++ (na jehož základě je vybudován jazyk PHP a JAVA) vypadá podmínka následovně: If (B) P1 else P2 Podmíněný příkaz Zvláštním případem větvení je situace, kdy k příkazu P1 není alternativní příkaz P2, tzn. kdy se jedná o podmíněné provedení příkazu v závislosti na splnění určité podmínky 45

48 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Algoritmy Dílčími příkazy v řídicích strukturách mohou být nejen jednoduché příkazy, ale znovu řídicí struktury (strukturované příkazy). Seznámíme se nyní s jednou důležitou metodickou zásadou programování, která se nazývá zásada postupného rozkladu shora dolů. Tato zásada doporučuje při návrhu algoritmu rozložit zadaný problém nejprve na jednodušší podproblémy. Hlavní myšlenky algoritmu pak můžeme vyjádřit přehledně a srozumitelně tak, že na specifikované podproblémy se jen odvoláváme, aniž bychom ještě předkládali jejich řešení. Tím získáme nejprve hrubé řešení zadaného problému, které v další etapě zjemníme (tzn. popíšeme řešení specifikovaných podproblému). Přitom znovu můžeme použít uvedený postup, jsou-li dílčí podproblémy ještě příliš složité. Návrh algoritmu postupným rozkladem ilustruje následující příklad. Sestavíme algoritmus pro nalezení největšího ze tří čísel. (Opět nás zajímá pouze hodnota, nikoliv pořadí, takže např. pro vstup má být výsledek 7.) Vstup: x y z Výstup: max(x,y,z) V naší úloze je jednodušším podproblémem určení většího ze dvou čísel. Jestliže větší z čísel x a y označíme max(x,y), můžeme s využitím této symboliky sestavit hrubé řešení. Ve druhé etapě rozepíšeme řešení podproblémů, čímž získáme podrobné řešení. Cyklus se vstupní podmínkou Na tomto algoritmu si ještě ukážeme postup simulace výpočtu, který by měl programátor - začátečník často používat. Přesvědčí se tím o tom, jak navržený algoritmus pracuje. Simulace výpočtu se někdy nazývá trasování a spočívá v tom, že postupně provádíme jednotlivé příkazy, přičemž si jejich efekt zaznamenáváme na papír. Abychom se v těchto záznamech vyznali, vytváříme z nich tzv. trasovací tabulku. Sloupce tabulky označíme jmény proměnných a zapisujeme do nich hodnoty proměnných po provedení jednotlivých příkazů. Vedle tabulky si napíšeme vstupní data, pro která budeme výpočet provádět. Pro výpočty realizované na počítačích je typické opakované provádění příkazů. Předepisujeme je řídícími strukturami, které nazýváme cykly. Základní řídící strukturu cyklu můžeme obecně vyjádřit příkazem "pokud platí B opakuj P" 46

49 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Algoritmy kde B je podmínka, při jejímž splnění se příkaz P opakuje (tento příkaz nazýváme tělem cyklu). Cyklus končí (resp. se neprovede ani jednou), když podmínka B není splněna. Zápis tohoto příkazu vývojovým diagramem, struktogramem a v pascalské notaci je uveden níže. Pro odlišení od dalších příkazů cyklu jej budeme nazývat příkazem cyklu while (while = pokud, do = dělej). Například v C++ lze cyklus tohoto typu popsat: While (B) P1 Sestavíme algoritmus pro výpočet zbytku po dělení dvou přirozených čísel. Vstup: x y, kde x a y jsou přirozená čísla Výstup: q, kde q je zbytek po dělení čísla x číslem y Postup založíme na tom, že dělení nahradíme opakovaným odčítáním podle vztahu x y y -... y = q, q < y Pro jednotlivé hodnoty zavedeme proměnné X (dělenec), Y (dělitel) a Q (zbytek). Podle vztahu můžeme zbytek vypočítat tak, že proměnné Q přiřadíme hodnotu dělence a potom od ní, pokud to ještě není zbytek, opakovaně odečítáme dělitele, tzn. opakovaně provádíme příkaz Q:=Q-Y. Základem algoritmu tedy bude cyklus "pokud Q Y (tzn. Q není zbytkem) opakuj Q:=Q-Y". Tento cyklus skončí, až neplatí podmínka Q Y, tzn. platí Q<Y, což znamená, že hodnotou Q je hledaný zbytek. 47

50 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Algoritmy Je obzvláště důležité, abychom příkaz cyklu dobře pochopili. Proto si ověříme sestavený algoritmus trasováním. Následuje tedy trasovací tabulka pro vstupní data 13 5 (výsledek je 3) a pro vstupní data 4 7 (výsledek je 4). Cyklus s výstupní podmínkou Modifikace pro cyklus probíhající až do splnění podmínky B: "opakuj P až do splnění B", kde P je opět tělo cyklu (tj. příkaz, který se má opakovat), B je podmínka, při jejímž splnění cyklus končí (při nesplnění se tělo cyklu opakuje). Podle slova, kterým začíná zápis tohoto příkazu v Pascalu, jej budeme nazývat příkazem cyklu repeat. V jazyce C++ se jedná o následující strukturu (ovšem pozor podmínku je třeba brát negovaně oproti Pascalu, tj. B je podmínka pokračování cyklu 48

51 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Algoritmy nikoliv ukončení). V této souvislosti je dobré si osvojit zásady logických úprav, např. not(a and B) = not A or not B. do P1 while (B) Cyklus repeat se liší od cyklu while v tom, že podmínka ukončení cyklu se testuje až za tělem cyklu, kdežto v cyklu while před tělem cyklu. Znamená to, že tělo cyklu repeat se vždy provede alespoň jednou, zatímco tělo cyklu while se nemusí provést ani jednou (cyklus while je tedy obecnější řídící strukturou). Jak jsme uvedli na začátku této kapitoly, charakteristickou vlastností algoritmů je konečnost: výpočet probíhající podle daného algoritmu a vycházející z přípustných vstupních dat musí po konečném počtu kroků skončit. Při sestavování algoritmu se však můžeme dopustit chyby, nesprávně vytvořit nebo použít nějaký cyklus a program, který na základě algoritmu napíšeme, se může při výpočtu "zacyklit". Chyby, které se při ladění programu (tzn. při testování programu na počítači) projevují zacyklením, tj. neustálým opakováním určitých akcí, které navenek nemusí mít žádný efekt, se obtížně identifikují. Je proto třeba jim předcházet již při algoritmizaci tím, že si uvědomujeme možnost jejich vzniku a cykly navrhujeme tak, aby byly co nejvíce přehledné a bezpečné. Některé okolnosti, které mohou způsobit nekonečnost cyklu, si nyní ukážeme. Všimněme si nejprve triviálního příkladu nesprávného cyklu: while I 0 do J:=I-1. Tělo cyklu v tomto příkazu nemá žádný vliv na proměnnou I, která se vyskytuje v podmínce na ukončení cyklu. Proto, platí-li před vstupem do cyklu I 0, bude se tělo cyklu neustále opakovat, neboť žádným jeho provedením se hodnota I nemůže změnit na nulu a tedy logický výraz I 0 nemůže přestat platit. Tento příklad můžeme zobecnit a formulovat tak jednu důležitou zásadu pro navrhování cyklů while a repeat: V příkazech cyklu while B do P resp. repeat P until B musí tělo cyklu P obsahovat příkaz, který mění hodnotu proměnné použité v logickém výrazu B. Změna hodnoty takové proměnné je nutná k tomu, aby po konečném počtu provedení těla cyklu se změnila hodnota logického výrazu B, a tím se cyklus ukončil. Přestože výše uvedená zásada je pro konstrukci správného cyklu důležitá, konečnost cyklů ještě zcela nezaručuje. Ukážeme si to opět na příkladu. Uvažujme cyklus repeat P; I:=I+1 until I=N 49

52 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Algoritmy kde P je nějaký příkaz, který nemění hodnotu proměnné I. Tento cyklus v některých případech skončí a v jiných ne. Pokusme se je rozlišit: Jelikož každým provedením těla cyklu se hodnota proměnné I zvětší o 1 a podmínka na ukončení (která se zde testuje po provedení těla cyklu) je I=N, je pro skončení cyklu zapotřebí, a před jeho zahájením platilo I<N. V opačném případě, platí-li před vstupem do cyklu I N, cyklus neskončí, neboť zvětšováním I za této situace se splnění I=N nedosáhne. Konečnost cyklu tedy závisí na hodnotách proměnných před vstupem do cyklu. Podmínku I<N, kterou jsme odvodili, nazýváme vstupní podmínkou konečnosti cyklu, a její splnění před zahájením cyklu zaručuje jeho skončení. Poznamenejme ještě, že platnost této podmínky musí zabezpečit příkazy, které cyklu předcházejí. Chceme-li se přesvědčit o konečnosti algoritmu, který jsme pro zadaný problém sestavili, musíme určit podmínky konečnosti všech cyklů v něm se vyskytujících a ověřit, že pro žádná z předpokládaných vstupních dat nenastane taková situace, že by před zahájením nějakého cyklu nebyla splněna jeho podmínka konečnosti. Formální a úplné řešení tohoto problému je však ve složitějších úlohách značně obtížné. Proto prakticky postupujeme tak, že řídící struktury cyklů navrhujeme co nejpřehlednější a nejbezpečnější, aby vstupní podmínky jsme mohli sestavit alespoň intuitivně a aby byly splněny pro co největší množiny hodnot. Přitom je vhodné zapisovat tyto podmínky do programu ve formě komentáře a v důležitých místech testovat jejich splnění pomocí podmíněných příkazů. Takovým místem je např. začátek programu po přečtení vstupních dat, kde je často vhodné ověřit jejich přípustnost (nedovolená vstupní data mohou způsobit porušení vstupní podmínky některého cyklu a tím i zacyklení výpočtu). Zvláštní druhy cyklů. Řadu problémů lze řešit pomocí cyklu, v němž je počet opakování dán buď konstantou nebo proměnnou. Takový cyklus můžeme při sestavování algoritmu vyjádřit příkazem "N-krát opakuj P" kde N je výraz, jehož hodnota udává počet opakování příkazu P. Cyklus s pevným počtem opakování Přestože tento příkaz musíme při psaní programu rozepsat pomocí jiných příkazů, je pro algoritmizaci užitečný, neboť vyjadřuje určitý princip řešení (N-provedení nějakého příkazu) nezávisle na způsobu jeho realizace. Můžeme proto říci, že tento příkaz je vhodný při sestavování hrubého popisu řešení. Sestavíme algoritmus pro výpočet mocniny. Vstup: x n, n je nezáporné celé číslo Výstup: x n x n 50

53 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Algoritmy N-tou mocninu čísla x vypočteme podle vztahu x = x.x.....x n-krát Zavedeme tedy proměnné X a N pro vstupní data a Z pro výsledek. Požadovanou hodnotu získáme tak, že N-krát provedeme příkaz Z:=Z*X kde počáteční hodnotou proměnné Z bude 1. Můžeme tedy sestavit hrubé řešení. Rozložíme nyní příkaz "N-krát opakuj". Zavedeme pomocnou proměnnou I, ve které si budeme pamatovat, kolikrát bylo tělo cyklu provedeno. V těle cyklu tedy přibude příkaz I:=I+1. Vzhledem k tomu, že připouštíme též N=0, což znamená ani jedno provedení těla cyklu, rozepíšeme příkaz "N-krát opakuj" pomocí cyklu while, který bude probíhat, pokud platí I<N. Počáteční hodnotou I musí být 0. Rozklad můžeme provést také jinak: V pomocné proměnné I si v průběhu cyklu pamatujeme, kolikrát ještě zbývá tělo cyklu provést. V tomto případě se hodnota proměnné I bude zmenšovat a to od hodnoty N až k nule. Tento způsob rozkladu je uveden na obrázku. Na závěr ještě uvádíme zápis algoritmu pascalskou formou za použití první varianty rozkladu: var X,N,I,Z:integer; begin read(x,n); I:=0; while I<N do begin Z:=Z*I; I:=I+1 end write(x,n,z) end Řízení cyklu často souvisí s určitou proměnnou, kterou nazýváme řídící proměnnou cyklu a která má postupně nabývat hodnot z nějakého intervalu celých čísel. Toto řízení můžeme předepsat příkazem "pro I od A do B opakuj P" kde I je řídící proměnná cyklu, A resp. B jsou výrazy udávající koncovou resp. poslední hodnotu proměnné I a P je příkaz, který se má opakovat. Tento příkaz se tedy postupně provede pro hodnoty I=A, I=A+1, I=A+2,... I=B. 51

54 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Značkovací a skriptovací jazyky Pro odlišení od předchozích příkazů cyklu jej budeme nazývat příkazem for. Typickým algoritmem, ve kterém se používá cyklus s řídící proměnnou, je algoritmus výpočtu faktoriálu. Z analýzy, kterou jsme před jeho sestavením provedli, vyplývá, že požadovaného výsledku v proměnné F dosáhneme opakovaným provedením příkazu F:=F*I pro I od 2 do N Značkovací a skriptovací jazyky Při tvorbě efektivního elektronického obchodu nelze již dnes vystačit jen se statickými webovými prezentacemi. To platí nejen o velkých elektronických obchodech typu e-mall, ale i pro úzce orientované obchody typu e-shop. Efektivní obchodování musí nutně používat databázové rozhraní, ať už jde o zboží, zákazníky nebo logistickou podporu. Jazyk HTML Theodor Nelson začal pracovat na realizaci nelineárního spojování dokumentů známem jako hypertext. Odtud již nebylo daleko ke zkratce HTML, tj. HyperText Markup Language = hypertextový značkovací jazyk Značkovací jazyk (markup language) je formálně definovaný jazyk, který zavádí množinu speciálních symbolů. Tyto symboly se obvykle nazývají značky (markups), někdy též tagy. Značky se vkládají do původního dokumentu, vyznačují části textu a obohacují tak dokument o další informace. Mohou definovat buď strukturu - pak hovoříme o logických značkách (deskriptivním značkování), nebo formát - k tomuto účelu slouží vizuální značky (procedurální značkování). Toto dělení nezmiňuji náhodně, neboť hrálo, a dodnes hraje, ve vývoji a použitelnosti značkovacích jazyků nezanedbatelnou a mnohdy i zcela klíčovou roli. Roku 1986 vzniká SGML (Standard Generalized Markup Language), definovaný v normě ISO Tento obecný značkovací jazyk umožňuje definici vlastních (podřízených) značkovacích jazyků na základě vlastní definice typu dokumentu - DTD. Jazyk HTML je jednou z aplikací 52

55 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Značkovací a skriptovací jazyky SGML, každá verze HTML používá značky tak, jak je popsáno v každé příslušné DTD. Následuje vývoj HTML, jak jej v publikaci Dynamické HTML popisuje Pavel Mikle, (Unis Publishing 1997) Tim Berners-Lee přichází s projektem vytvoření distribuovaného hypertextového systému - ve výzkumných laboratořích CERN ve Švýcarsku je zahájen projekt WWW 1991, zveřejněna neformální specifikace HTML - první veřejně dostupná verze prohlížeče; pouze textový režim na světě pracuje kolem padesáti serverů - dokončen první grafický prohlížeč dokumentů NCSA Mosaic; pro prostředí X-Window - návrh jazyka HTML verze první mezinárodní konference věnovaná systému WWW - autor programu Mosaic zakládá společnost Mosaic Communications Corp.; tato uvede za krátkou dobu prohlížeč pod názvem Netscape - v září založena organizace World Wide Web Consortium (dále jen W3C) - CERN předává vývoj WWW francouzskému institutu INRIA WWW se rozšiřuje - oficiální specifikace HTML 2.0 (INRIA) - Netscape uvádí neoficiální rozšíření HTML, známé jako HTML oficiální specifikace HTML 3.2 (W3C); v porovnání s HTML 3.0 je chudší - Microsoft vypouští svůj první prohlížeč zdarma, Internet Explorer 3.0; první podpora CSS - specifikace CSS level specifikace HTML 4.0 (W3C); přidány rámy a plovoucí rámy, vylepšeny formuláře a tabulky, větší podpora skriptů - Microsoft vydává Internet Explorer 4.0; směr - DHTML 53

56 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Značkovací a skriptovací jazyky Microsoft vydává Internet Explorer první specifikace XML specifikace CSS level specifikace HTML první specifikace XHTML specifikace XML 1.0 (Second edition) Microsoft vydává Internet Explorer 6 - specifikace XHTML reformulace XHTML pracovní návrh XHTML pracovní návrh revize CSS level pracovní návrh CSS level 3 Webové standardy SGML (Standard Generalized Markup Language ) Je univerzální značkovací metajazyk, který umožňuje definovat značkovací jazyky jako své vlastní podmnožiny. SGML je komplexní jazyk poskytující mnoho značkovacích syntaxí, ale jeho složitost brání většímu rozšíření. HTML (HyperText Markup Language hypertextový značkovací jazyk ) HTML se už ve své první verzi, díky své jednoduchosti, stal velmi populární. Původně byl HTML určen pro zobrazování struktury dokumentu bez vážnějšího důrazu na vizuální a grafickou interpretaci. Při vývoji HTML však došlo, na nátlak ze strany tvůrců stránek a prohlížečů, k jistému odklonu tím, že se do nových verzí HTML začali postupně přidávat různé formátovací značky pro vzhled a interaktivitu. Klíčová chyba nastala, když se jako nástroj pro design webu začaly používat tabulky. Tabulka měla a má sloužit pro prezentaci tabulkových dat. Nikoliv pro utváření vzhledu stránky. To způsobilo, že se z jednoduchého značkovacího jazyka stal nástroj na tvorbu prezentací a formátovací značky pak tvořili podstatný díl obsahu webových stránek (specifikace HTML 3.2 z roku 1996). Tím se vytratila struktura a čitelnost, 54

57 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Značkovací a skriptovací jazyky která byla hlavním záměrem původního HTML a internet do jisté míry ovládl chaos. XML (extensible Markup Language rozšiřitelný značkovací jazyk ) Je obecný značkovací jazyk, který byl vyvinut a standardizován konsorciem W3C. Umožňuje snadné vytváření konkrétních značkovacích jazyků pro různé účely a široké spektrum různých typů dat. Jazyk je určen především pro výměnu dat mezi aplikacemi a pro publikování dokumentů. Jazyk umožňuje popsat strukturu dokumentu z hlediska věcného obsahu jednotlivých částí, nezabývá se sám o sobě vzhledem dokumentu nebo jeho částí. Prezentace dokumentu (vzhled) se potom definuje připojeným stylem. Další možností je pomocí různých stylů provést transformaci do jiného typu dokumentu, nebo do jiné struktury XML. Původní jazyk pro publikování HTML již přestal vyhovovat především pro svou složitost, která vznikla jeho postupným (a svévolným) rozšiřováním. Jazyk XML nemá žádné předdefinované značky (tagy, názvy jednotlivých elementů) a také jeho syntaxe je podstatně přísnější, než HTML. Technologie a formáty související s XML S jazykem XML se pojí mnoho nových technologií, které práci s ním výrazně ulehčují a obohacují. Pro adresaci konkrétních částí XML dokumentu se používá jazyk XPath. Jeho princip je velmi podobný adresaci v souborovém systému. XPath je velmi mocný a zároveň dostatečně "jemný" jazyk, který otevírá uživateli širokou škálu možností jak vyznačit, co a podle jakých kritérií vybírat. Není problém vybrat elementy, jejichž nějaký atribut má nějakou požadovanou hodnotu, vybrat všechny podelementy určitého elementu, vybrat pouze některé atributy,... V současné době se už začíná hojně používat XPath verze 2.0, který přináší oproti starší verzi (1.0) "pouze" další a přesnější možnosti adresace. O odkazy se stará technologie XLink. XLink definuje XML konstrukce, které popisují odkazy mezi zdroji. Ovšem tyto odkazy jsou daleko obecnější než například klasické hypertextové odkazy v HTML. Na jednom odkazu se nemusí podílet pouze dva dokumenty, ale může jich být mnohem víc, jako odkaz může fungovat libovolný element (ne pouze A element) atd. Specifikací a standardů je samozřejmě mnohem víc, kupříkladu XPointer (odkazy v rámci dokumentu), XInclude ("vnoření" XML dokumentu (nebo holého textového souboru) do jiného XML dokumentu), XMLBase (explicitní specifikace URI dokumentu pro řešení relativních URI v odkazech na externí obrázky, kaskádové styly,...) atp. Dále jsou to jiné způsoby definice typu dokumentu, které se snaží nahradit již přece jen 55

58 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Značkovací a skriptovací jazyky poněkud obstarožní a nepružné (ale stále nejpoužívanější) DTD - XMLSchema, Relax NG, Schematron... XHTML (extensible Hypertext Markup Language rozšiřitelný hypertextový značkovací jazyk ) Na přelomu století se ukazuje, že HTML je díky svému odklonu od původní myšlenky příliš rozvolněný formát a potřeba více striktního formátu začíná být nutností. V roce 2000 tak přichází na svět první specifikace XHTML. Je značkovací jazyk pro tvorbu hypertextových dokumentů v prostředí WWW vyvinutý W3C. Původně se předpokládalo, že se stane nástupcem jazyka HTML, jehož vývoj byl verzí 4.01 ukončen. V roce 2007 však došlo k založení pracovní skupiny, která má za cíl vytvořit novou verzi HTML, která ponese označení HTML 5.0. XHTML je stále paralelně vyvíjeno a stále se pracuje na verzi 2.0. CSS (Cascading Style Sheets tabulky kaskádových stylů ) Jr to jazyk pro popis způsobu zobrazení stránek napsaných v jazycích HTML, XHTML nebo XML. Jazyk byl navržen standardizační organizací W3C, autorem prvotního návrhu byl Håkon Wium Lie. Byly vydány zatím dvě úrovně specifikace CSS1 a CSS2, dokončuje se revize CSS 2.1 a pracuje se na verzi CSS3. Hlavním smyslem je umožnit návrhářům oddělit vzhled dokumentu od jeho struktury a obsahu. Původně to měl umožnit už jazyk HTML, ale v důsledku nedostatečných standardů a konkurenčního boje výrobců prohlížečů se vyvinul jinak. Starší verze HTML obsahují celou řadu elementů, které nepopisují obsah a strukturu dokumentu, ale i způsob jeho zobrazení. Z hlediska zpracování dokumentů a vyhledávání informací není takový vývoj žádoucí. Dalším zajímavým jazykem, který se zrodil v souvislosti s rozmachem mobilní komunikace a vytvořením WAPu, je WML (Wireless Markup Language). Možná se sami sebe ptáte, proč se pro "mobilní internet" používá právě WML? Inu, odpověď na tuto otázku jsem již částečně naznačil v minulém odstavci. WML je instancí XML, tedy pro jeho zpracování stačí zásobník, jednoduchý datový typ, který v pohodě zvládnou obsluhovat i málo výkonné procesory s malou operační pamětí - mobilní telefony. Další důvody jsou nabíledni: malé výstupní zařízení (display), omezené vstupní zařízení, pomalý přenos, dlouhá odezva,... Samotný jazyk je opravdu velice jednoduchý a směrem do budoucnosti se dá předpokládat, že s dalším vývojem našich "mobilních přátel" bude tendence přejít na jazyk složitější (XHTML?). Ale nechme se překvapit. O dalších jazycích se zmíním jen letmo - už teď je jich ohromné množství, neboť v každé význačné (nebo jen populární) oblasti lidské činnosti začínají různé více či méně organizované společnosti lidí tvořit pro svůj obor vhodné DTD - a tedy značkovací jazyk. Matematikové mají 56

59 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Značkovací a skriptovací jazyky MathML, který je vhodný pro popis různých matematických výrazů, které posléze umožňují některé webové služby i vypočítat. Dále existují jazyky pro popis slovníků, záložek (bookmarků webových prohlížečů), CALS, TeXML a mnohé další. Pokud však chceme vytvářet opravdu funkční a automatizovaný web pro obchodování typu B2C, musíme použít něco více než statické HTML. Pro účely dynamického webu se nejčastěji používají skriptovací jazyky PHP a ASP, případně také JavaScript. PHP má výhodu, že je volně šiřitelé a lze ho napojit na další freewarový prostředek, kterým je databázový server MySQL. ASP je produktem společnosti Microsoft a tudíž servery na něm založené jsou licencovanými produkty za úplatu. HTML je značkovací jazyk. Značkuje (označuje) části dokumentu, stránky. To znamená, že pomocí HTML určujeme, jaký význam bude mít ta která část HTML stránky. Tedy pomocí HTML řekneme, že tenhle kus textu bude nadpis, jíný kus textu odstavec a jiný tabulka. Jestliže chcete udělat i ty úplně nejjednodušší webové stránky, HTML (XHTML) potřebujete. CSS je formátovací jazyk. To znamená, že určuje, jak bude která část stránky vypadat. Pomocí CSS stylu tedy můžeme určit vzhled stránky. Tedy CSS říká, že nadpis (o kterém HTML určilo, že je nadpis) bude modrý, že odstavec se bude zarovnávat vlevo a že tabulka bude na zeleném pozadí. Naopak užneříká, která část stránky bude tím nadpisem, odstavcem či tabulkou. CSS tedy určuje jen vzhled stránky. Tedy vše, co se týká barvy, písma, velikosti prvků a podobně. I CSS styly k tvorbě stránek potřebujete, i když ne úplně nezbytně. Jde to i bez nich, ale takový způsob je už velkým přežitkem, dělat stránky bez CSS je špatně. Proto se už od začátku učte CSS současně s HTML (XHTML). PHP je skriptovací jazyk. Dělají se pomocí něj různé webové aplikace jako je kniha hostů, počítadlo návštěv, anketa, diskusní fórum nebo chat. Rozhodně s PHP nezačínejte, pokud ještě neovládáte základy HTML, budete je totiž potřebovat. JavaScript je také skriptovací jazyk. Rozdíl mezi JavaScriptem a PHP je v tom, že PHP funguje na serveru a JavaScript na klientovi. To znamená, že to, co dělá JavaScript se vždy odehrává na vašem počítači (resp. na počítači uživatele vašich stránek) a neodesílá žádná data na server. Pomocí JavaScriptu tedy nevytvoříte nic, co by muselo proběhnout Internetem. JavaScripty dokonce fungují, i když nejste k Internetu zrovna připojeni. 57

60 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML XHTML je nástupce HTML založený na XML. Rozlišujeme 3 druhy XHTML: XHTML 1.0 Strict čistě strukturální značkování, neobsahuje žádné značky spojené s formátováním vzhledu XHTML 1.0 Transitional povoluje atributy pro formátování textu a odkazů v elementu body a některé další atributy XHTML 1.0 Frameset používá se při použití rámců pro rozdělení okna prohlížeče na dvě nebo víxhtml je nástupce HTML založený na XML. Rozlišujeme 3 druhy XHTML: XHTML 1.0 Strict čistě strukturální značkování, neobsahuje žádné značky spojené s formátováním vzhledu XHTML 1.0 Transitional povoluje atributy pro formátování textu a odkazů v elementu body a některé další atributy XHTML 1.0 Frameset používa se při použití rámců pro rozdělení okna prohlížeče na dvě nebo více částí 3.3. XHTML XHTML - Exteded HyperText Markup Language XHTML je značkovací jazyk. XHTML soubor má koncovku html nebo htm. Nyní se pro webové stránky používá právě XHTML (dříve HTML), který vychází z obecného standardu pro výměnu dat XML. XHTML popisuje význam obsahu (srovnání HTML a XHTML). Ale to není důležité. Elementy a značky XHTML utváří dokument pomocí značek. A to už je důležité. Například: normální text <strong>zvýrazněný text</strong> To co jsem nyní zapsal je XHTML zdrojový kód. Tento zdrojový kód se zapisuje v textovém editoru (nebo editoru webových stránek) a ukládá se s koncovkou.html nebo.htm, takový dokument se následně otevírá v internetovém prohlížeči (Internet Explorer, Mozilla FireFox...) A to je nejdůležitější. Na začátek tučného textu vložíte značku <strong> a na konec uzavírací značku </strong>, zpětné lomítko slouží k určení, že jde o uzavírající 58

61 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML značku. Vymezený text, včetně značek se nazývá element nebo prvek. Značky se vždy zapisují malými písmeny! Atributy Většina prvků může mít atributy, ty upřesňují jeho vlastnosti. <strong title="ahoj">ahoj</strong> Element strong vyznačuje zvýrazněný text - v prohlížeči bývá nejčastěji vykreslen tučným textem. Atribut title obvykle vytvoří bublinu s popiskem (ta se zobrazuje po najetí myši). Zde je příklad zápisu značek: <p>odstavec <strong>zvýrazněný text</strong></p> Mezery a řádky Když zapíšete v XHTML kódu více než jednu mezeru, budou se tyto mezery interpretovat jako jedna. Budete-li tedy chtít zapsat mezer více můžete použít zápis - jde o entitu, o pevnou mezeru. Podobný problém nastává se zalamováním řádků, pokud použijete enter nic se nestane, pokud chcete odřádkovat je nutné použít prvek <br/>, jinak si prohlížeč zalomí text sám (podle velikosti obrazovku, objektu). Některé znaky nemohou být v kódu použity, protože by se špatně interpretovaly, nebo neinterpretovaly ( ). Důležité je, že entita končí středníkem. více o entitách. Pokud chceme vytvářet web pomocí moderního XHTML namísto standardního HTML (Hyper Text Markup Language) je potřeba dodržovat mnohem striktněji jeho pravidla. Pro HTML existují prohlížeče, které jsou velmi robustní ve smyslu nekorektní syntaxe uživatelského webu. Nyní shrneme nejdůležitější pravidla Před samotným dokumentem se nachází deklarace. <?xml version="1.0" encoding="iso "?> Povinná je deklarace typu dokumentu (DTD), bez něhož by prohlížeč nemohl správně stránku zobrazit. XHTML 1.0 Strict <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1- strict.dtd"> XHTML 1.0 Transitional Pravidla XHTML 59

62 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1- transitional.dtd"> XHTML 1.0 Frameset <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1- frameset.dtd"> Kořenový element html obsahuje atribut xmlns, který určuje jmenný prostor dokumentu (namespace) a jazyk, který je v dokumentu použit. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> Element html vždy obsahuje dva elementy, head (hlavičku) a body (tělo dokumentu). Hlavička musí obsahovat element title a měla by obsahovat i metatag pro kódování (kvůli starším prohlížečům). Všechny tagy i atributy musí být malými písmeny, XHTML je case-sensitive. Všechny hodnoty atributů musí být v XHTML v uvozovkách. Všechny XHTML tagy musí být párové. Při použití prázdného tagu se musí tag ukončit lomítkem, např. <img /> Tagy se nesmí nikdy křížit. Striktní XHTML neobsahuje žádné atributy sloužící k formátování. Oproti HTML jsou z XHTML vypuštěny formátovací tagy (jako např. font, b, i). Vkládané skripty na straně klienta (např. javascript) by měly být vloženy do sekce CDATA. Starší prohlížeče ale CDATA nepodporují. V HTML se používají speciální značky tagy. Tagy jsou tvořeny znaky < a > mezi nimiž je název tagu (takto: <tag>). Vše ostatní, co není mezi těmito znaky, se zobrazuje jako výsledný text na stránce. Tagy pak určují, jaký má text význam (např. jestli se jedná o nadpis, tabulku, či hypertextový odkaz). V XHTML jsou všechny tagy párové, to znamená, že ke každému počátečnímu tagu musí existovat tag ukončovací, ten se liší od počátečního tím, že před názvem tagu obsahuje lomítko ( / ). Celé to pak vypadá takto: <tag>text zobrazovaný na stránce.</tag> 60

63 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML Pokud použijeme tag, který neobsahuje žádný text, který by bylo nutno obklopit počátečním a koncovým tagem (týká se to např. tagu img u obrázku), použijeme zápis: <tag /> Jeden tag může být uvnitř druhého tagu, ale tagy se nikdy nesmí křížit! špatně <tag1>text <tag2>zobrazovaný</tag1> na stránce.</tag2> dobře <tag1>text <tag2>zobrazovaný</tag2> na stránce.</tag1> Všechny tagy píšeme malým písmenem, XHTML je case-sensitive, tzn. že <TAG> vlastně vůbec nezná. Pozn.: tag není názvem žádného tagu. Elementem nazýváme celou sekvenci počínaje počátečním tagem a konče tagem ukončovacím. Existují tři základní druhy elementů, blokové, inline a nahrazované. Podle významu, který textu přiřazují je můžeme rozdělit ještě na elementy pro strukturování dokumentu, textové elementy, elementy pro tvorbu odkazů, elementy pro tvorbu tabulek elementy pro tvorbu seznamů a podobně. Blokové elementy jsou elementy, které tvoří nějaký blok. Zjednodušeně to znamená, že po takovém elementu je text dokumentu zalomen, odřádkován. Blokovými elementy jsou například h1 pro nadpis nebo p pro odstavec. Inline elementy jsou ty, které se nachází uvnitř textu, nedochází po nich k zalomení. Obvykle plní funkci zvýraznění nějaké části textu. Je to například a pro hypertextový odkaz. Nahrazované elementy jsou nahrazeny nějakým obsahem, pro začlenění dokumentu jsou důležité jejich rozměry. Například img pro obrázek. Elementy mohou mít své atributy. Ty jsou přiřazením nějaké vlastnosti danému elementu. Atributy se píší do počátečního tagu, může jich být více (oddělují se mezerou), nemusí být žádný. Každý atribut má svou hodnutu. Hodnota atributu musí být v XHTML zapsána v uvozovkách. <element atribut="hodnota _atributu">text zobrazovaný na stránce.</element> Pozn.: Hodnotu atributu můžeme zapsat i do apostrofů. V pravidlech XHTML už jsme si vysvětlili, že dokument začíná deklarací XML, následuje DTD, potom tag HTML obsahující hlavičku a tělo dokumentu. Můžeme tedy sestavit celý základ stránky. <?xml version="1.0" encoding="windows-1250"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> Párování <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> 61

64 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250" /> <title>titulek stránky</title> </head> <body> <p>odstavec textu.</p> </body> </html> Tak takto by měla vypadat kostra stránky. Soubor uložíme s příponou htm nebo html. Struktura dokumentu Přehled použitých značek: html head title body p označuje, že se bude jednat o HTML dokument, obsahuje head a body hlavička, obsahuje title, metatagy (např. kódování), odkazy na externí dokumenty definice stylu, skripty, apod. titulek stránky, to co se objeví jako název okna tělo dokumentu, tady se bude nacházet celý obsah stránky označení odstavce Existuje 6 úrovní nadpisů, označují se tagy h1, h2, h3, h4, h5 a h6, kde 1 je úroveň nejvyšší. Úrovně se liší velikostí písma, všechny nadpisy jsou implicitně zarovnávány vlevo. <h1>nadpis 1. úrovně</h1> <h2>nadpis 2. úrovně</h2> <h3>nadpis 3. úrovně</h3> <h4>nadpis 4. úrovně</h4> <h5>nadpis 5. úrovně</h5> <h6>nadpis 6. úrovně</h6> A takový je výsledek: 62

65 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML Odkazy jsou základem hypertextovosti Internetu. Bez odkazů by se uživatel nikam nedostal. V textu jsou odkazy vizuálně odlišeny, standardně je to barevným odlišením a podtržením. Při přejetí myši přes odkaz se mění kurzor (obvykle ze šipky na tlapičku), kliknutím je odkaz aktivován a dochází k přesměrování. Pro odkaz se používá element a (z anglického slova anchor - kotva). Jeho atributem je href. Ten udává, kde je umístěn cílový dokument (tedy na kterou stránku odkaz směřuje). Samotné umístění pak zadáváme absolutní nebo relativní cestou. Absolutní odkaz se používá pro odkázání na dokument umístěný na jiném serveru, např. jako odkaz na jinou stránku. Odkaz na jinou stránku musí vždy obsahovat <a href="http://www.volny.cz/habiballa">hashim Habiballa</a> Hodnotou atributu href je tedy adresa cílového dokumentu (v tomto případě Zobrazovaný a klikatelný text bude Hashim Habiballa. Odkaz Relativní odkaz použijeme, pokud odkazujeme v rámci stránky. Při použití relativního odkazu prohlížeč sám doplňuje URL stránky, z které je odkazováno. Pokud tedy odkazujeme na dokument nacházející se ve stejném adresáři, stačí napsat jen jméno souboru. <a href="uvod.htm">úvod</a> Pokud se dokument nachází v jiném adresáři, musíme do URL zahrnout celou cestu od místa, kde se cesty k odkazovanému a odkazujícímu dokumentu začaly odlišovat. <a href="auta/ford/fusion.htm">ford Fusion</a> Pokud se budeme chtít dostat v adresářové struktuře o úroveň výš, použijeme k tomu dvou teček, tj.... Pokud bychom tedy chtěli ze stránky fusion.htm (viz. výše) odkázat na stránku FiatPalio.htm, která je uložená v adresáři Fiat a ten se nachází v adresáři: 63

66 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML <a href="../../fiat/fiatpalio.htm">fiat Palio</a> Někdy je dobré odkazovat i na části stránky, to se hodí jednak pokud je stránka delší pak v úvodu použijeme odkazy na její jednotlivé častí a dále pokud z jiné stránky potřebujeme použít odkaz na přesně určenou část stránky (aby uživatel nemusel hledat). Pro označení místa, na které chceme odkázat použijeme atruibut id, v odkazu potom použijeme jako vždy atribut href, který ale bude tentokrát začínat hash-markem #. Často se toto používá také při odkazování na začátek stránky. <a href="#zacatek">zpět na začátek</a> Stejným způsobem pak odkazujeme i z jiné stránky, jen musíme přidat klasickám způsobem odkaz na celý dokumet a za něj odkaz na konkrétní místo. <a href="technickeudaje.htm#spotreba">spotřeba</a> Takový odkaz můžeme dát někam nakonec stránky, po kliknutí prohlížeč sám odroluje tak, že se element odznačený příslušným názvem dostane do horní části okna prohlížeče. Pozn.: Odkazovaná část dokumentu se do horní části okna pochopitelně nedostane v případě, že pokračování stránky není dostatečně dlouhé k zaplnění celého okna prohlížeče (bude pak někde uvnitř okna ). Část dokumentu, na kterou takto odkazujeme označíme takto (v našem případě budeme odkazovat na hlavní nadpis stránky): <h1 id="zacatek">hlavní nadpis stránky</h1> K otevření odkazu v novém okně slouží atribut target s hodnotou _blank. V novém okně se obvykle otvírají odkazy, které směřují na cizí stránky. Otevírat v novém okně odkazy na vlastní stránky (tím myslím například otevírání položek menu v novém okně) je naprostý nesmysl. Vlastně samotné otevírání odkazů v novém okně si myslím, že je nesmysl, uživatel je snad natolik inteligentní, aby se sám rozhodl, jestli si otevře odkaz v novém nebo ve stejném okně. Bohužel jakmile určíme otevření v novém okně uživatel již tuto možnost volby nemá, což si myslím není dobré. <a href=" " target="_blank">hashim Habiballa</a> Pozn.: Atribut target není povolen v XHTML 1.0 Strict, v Transitional ano. Každý odkaz by měl mít svůj titulek. Tím je text, který uživateli přiblíží, kam vlastně odkaz směřuje. Titulek se zobrazí při najetí kursoru myši na odkaz. Titulky odkazů jsou důležité také např. pro čtecí zařízení, umožňují lepší orientaci na webu. <a href=" title="úvodní stránka osobního webu Hashima Habibally">Hashim Habiballa</a> 64

67 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML Neuspořádaný neboli nečíslovaný seznam se značí tagem ul (unordered list). Položka seznamu je li (list item). Položka může obsahovat i více odstavců. Před každou položkou se standardně vytváří odrážka. <ul> <li>žirafa</li> <li>slon</li> <li>velbloud</li> </ul> Uspořádaný neboli číslovaný seznam se značí tagem ol (ordered list). Položka seznamu je opět li. Před položku se automaticky vypisuje její pořadové číslo. <ol> <li>žirafa</li> <li>slon</li> <li>velbloud</li> </ol> Seznamy Definiční seznam se používá obvykle v případě, kdy potřebujeme např. vypsat nějaké termíny a k nim jejich definice nebo popisy. Je pro něj tag dl (definition list). Definovaný termín se označuje tagem dt (term), definice termínu tagem dd (definition). <dl> <dt>žirafa</dt> <dd>zvíře s dlouhým krkem</dd> <dt>slon</dt> <dd>zvíře s chobotem</dd> <dt>velbloud</dt> <dd>zvíře s jedním nebo dvěma hrby</dd> </dl> Tabulka se vytváří pomocí elementu table. Pro řádek tabulky slouží tag tr (table row), pro buňky tabulky tagy th (table head; pro buňky v záhlaví tabulky) a td (table data). Buňky se vkládají uvnitř řádku tabulky, kolik buněk, tolik bude mít tabulka sloupců. Buňky záhlaví jsou standardně formátovány tučným písmem, zarovnány na střed. V tabulce se používá atribut summary, který shrnuje obsah tabulky. Slouží pro lepší přístupnost webu. 65

68 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML <table summary="zkušební tabulka"> <tr> <th>1</th> <th>2</th> </tr> <tr> <td>aaa</td> <td>bbb</td> </tr> <tr> <td>ccc</td> <td>ddd</td> </tr> </table> Tabulky Pro nadpis tabulky se používá element caption. Ten by měl být uveden uvnitř tagu table ještě před prvním řádkem. <table> <caption>nadpis tabulky</caption> <tr> <th>1</th> <th>2</th> </tr> <tr> <td>aaa</td> <td>bbb</td> </tr> <tr> <td>ccc</td> <td>ddd</td> </tr> </table> Atribut colspan sloučí dohromady několik buněk v jednom řádku. Atribut rowspan sloučí buňky ve sloupci. Jako hodnotu těchto atributů zapisujeme počet buněk, které chceme takto sloučit. <table> <caption>nadpis tabulky</caption> <tr> <th colspan="2">1</th> </tr> <tr> 66

69 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML <td rowspan="2">aaa</td> <td>bbb</td> </tr> <tr> <td>ccc</td> </tr> </table> Pro vložení obrázku slouží nepárový element img. Povinnými atributy jsou src, jehož hodnotou je název obrázku, případně i s cestou a alt obsahující alternativní text, který se zobrazí, pokud je obrázek prohlížeči nedostupný, buď proto, že se na zadané adrese nenachází nebo proto, že prohlížeč obrázky nezobrazuje. Alternativní text by měl tedy nějakým způsobem příblížit co je na obrázku těm, kteří jej nevidí. <img src="obrazky/fusion.jpg" alt="fotografie Fordu Fusion" /> Obrázky na webu bychom měli na webu používat opatrně. Kromě výběru vhodných obrázků je třeba dbát na jejich datovou velikost, zdaleka ne každý si může dovolit prohlížet stránky, jejichž velikost se dá počítat v megabytech. Obrázky, které nemají jinou funkcni než zlepšení designu stránky by měli být vkládány pouze pomocí CSS stylu a to jako obrázek na pozadí. Velikost obrázku Obrázky Velikost obrázku není povinné zadávat, přesto je velkou chybou toto opomenout. Pokud totiž velikost obrázku nezadáte, prohlížeč si na jeho zobrazení nevyhraní dostatečny prostor a jelikož okolní text se samozřejmě načte dřív než obrázek (protože je co se týče velikosti dat menší), způsobí to jakési poskakování stránky ve chvíli, kdy se začínají načítat obrázky, které potřebují více prostoru než mají a okolní text jim vlastně musí uhýbat. Stejně tak je vhodné zadávat obrázku jeho skutečnou velikost, nezmenšovat ani nezvětšovat pomocí prohlížeče, ale pomocí grafického editoru. Pokud totiž obrázek o velikosti např pixelů zmenšíme v prohlížeči na 50 50, docílíme tak sice požadované velikosti, ale uživatel bude zbytečně stahovat více dat, protože bude stahovat samozřejmě obrázek v původní velikosti. 67

70 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML Pro určení velikosti obrázku se používají atributy width (šířka) a height (výška) nebo stejnojmenné vlastnosti v CSS. Velmi účinným a nepřehlédnutelným designovým prvkem je tzv. Obrázková mapa. Obrázkové mapy využijeme například pro různé navigační lišty. Je to obrázek, jehož jednotlivé části mají sloužit jako odkazy na různá místa. Mapa se vytváří pomocí elementu map. Jeho povinným atributem je id, což je atribut sloužící jako identifikátor této mapy. Jeho hodnotou je tedy nějaký textový řetězec, s kterým se později bude obrázek této mapy dovolávat. Element map obsahuje libovolný počet (nejméně jeden) elementů area, které vymezují prostor z obrázku, který bude odkazem a určují kam bude odkazovat. Tvar hranice aktivní oblasti (tj. místo, na které budeme moci kliknout a odkázat se na daný dokument) určuje atribut shape. Jeho hodnotou je buď rect (obdélník), poly (mnohoúhelník) nebo circle (kruh). Konkrétní vymezení oblasti je dáno v atributu coords. Jeho hodnotou jsou čísla oddělená čárkou, která definují vrcholy n-úhelníku. V případě obdélníku je to v pořadí: souřadnice x levého horního rohu, souřadnice y levého horního rohu, souřadnice x pravého dolního rohu, souřadnice y pravého dolního rohu. Obdobně po sobě budou následovat všechny vrcholy mnohoúhelníku. V případě kružnice jsou zadávána čísla v pořadí: souřadnice x středu, souřadnice y středu, poloměr kružnice. Pozn.: Počátek soustavy souřadnic je v levém horním rohu, tedy levý horní roh má souřadnice [0,0]. Souřadnice x roste ve směru zleva doprava, souřadnice y ve směru shora dolů. Mapa odkazů Povinným atributem u area je alt a neméně důležitým href, který určuje cíl odkazu. Takto můžeme tedy rozdělit obrázek na několik aktivních oblastí. Mapa je již vytvořená, stačí jen říct obrázku, aby ji použil. Toho docílíme pomoci atributu usemap (atribut tagu img). Jeho hodnotou bude tentýž řetězec, jaký jsme použili v tagu map u atributu id. A teď už jen zbývá si to všechno sepsat na konkrétním příkladě: <map id="mapa" name="mapa"> <area href="#1" alt="část 1" coords="0,0,33,31" /> <area href="#2" alt="část 2" coords="34,0,66,31" /> <area href="#3" alt="část 3" coords="67,0,98,31" /> </map> <img src="obrazkova_mapa.gif" alt="obrázková mapa" width="98" height"31" usemap="#mapa" /> Pozn.: Atribut name je použit kvůli nové verzi Firefoxu, který zřejmě chybně zpracovává id. 68

71 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML Výsledná obrázková mapa tedy bude vypadat takto: obrázková mapa A můžete vidět, že každá ze tří částí obrázku skutečně odkazuje jinam. Dalším dnes oblíbeným prvkem webů bývá Flashová animace. Ta se vnoří stejně jako jiné objekty pomocí následujícího příkazu. Vnořené objekty <object type="application/x-shockwave-flash" data="flash.swf" width="100" height="40" > <param name="movie" value="flash.swf" /> </object> Meta tagy poskytují alespoň základní informaci o obsahu stránky. Prohlížec je sice přímo nezobrazuje, ale jsou důležité pro zařazení stránky do vyhledávačů. Meta tagy obsahují meta data informace o stránce. nachází se v hlavičce (head) HTML dokumentu. Nejdůležitějším je meta tag pro kódování češtiny. Pokud ho nepoužijete, text stránek, resp. české znaky se budou zobrazovat nekorektně. Kódování češtiny je nutné uvést ještě před tagem title. <meta http-equiv="content-type" content="text/html; charset=windows- 1250" /> Část charset=windows-1250 označuje použitou znakovou sadu. Pro češtinu se často používají tyto znakové sady: * windows-1250 * iso * utf-8 Meta description popis stránky Pro popis obsahu stránky slouží meta tag description. Jeho obsah se může objevit jako popisek odkazu ve vyhledávačích, takže je určitě dobré dbát na to, aby neobsahoval nesmyslné informace. Slova obsažená v tomto meta tagu mívají také pro vyhledávače vyšší váhu. <meta name="description" content="meta tagy charset, description a keywords a jejich použití" /> Meta tag keywords obsahuje seznam klíčových slov stránky. To jsou nejdůležitější slova, kterými se stránka zabývá. 69

72 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML <meta name="keywords" content="meta tagy, charset, desription, keywords" /> Meta tag keywords nemá příliš velký význam. Určen je pro vyhledávače, ale většina vyhledávačů jeho obsah ignoruje zcela, ostatní alespoň do té míry, že nepřiřazují hodnotu slovům obsaženým pouze v keywords a nikde jinde ve stránce. Meta tag author obsahuje informace o autorovi stránky. <meta name="author" content="petra Větrovská" /> Meta robots pro roboty vyhledávače Informace o tom, zda a jakým způsobem mají roboti indexovat stránku obsahuje meta tag robots. <meta name="robots" content="index,follow" /> Nastavení index,follow je výchozí, takže se používat nemusí. Znamená to indexovat (index) stránku a následovat (follow) odkazy. Další hodnoty jsou noindex (neindexovat) a nofollow (nejít po odkazech). Hodnoty se mohou samozřejmě kombinovat, třeba index,nofollow robot stránku zaindexuje, ale nebude sledovat odkazy, které z ní vedou. Speciálně pro Google existuje meta tag googlebot. Meta tagy <meta name="googlebot" content="snippet,archive" /> Opět nastavení snippet,archive je výchozí. Znamená zobrazovat u popisku odkazu část textu stránky (snippet) a ukládat stránku do archivu (archive). Další hodnoty jsou nosnippet a noarchive. Meta tag language obsahuje jazyk použitý ve stránce. <meta name="content-language" content="cs" /> Možnost vyhledání webu je nesmírně důležitá. Pokud web nikdo nenajde, jako by nebyl. Na této stránce popíšu, jak dostat web do databáze vyhledávače a jak zařídít, aby byl správně zaindexován. Vyhledávání v internetu zajišťují tzv. fulltextové vyhledávače (neboli zcela česky řečeno plnotextové vyhledávače). Vyhledávač vytváří jakousi velkou databázi stránek v Internetu. Stránky pro vyhledávače shromažďují a indexují tzv. roboti. Jsou to stroje, které se pohybují Internetem pomocí hypertextových odkazů. Pohybuje se vlastně podobně jako uživatel, který kliká na odkazy a přemisťuje se tak ze stránky na stránku. To mimo jiné znamená, že stránku, na kterou 70

73 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML neexistuje žádný odkaz robot nenajde. Taková stránka se pak nedostane do vyhledávače a tudíž ji není možné vyhledat. Poté, co robot stránku zaindexuje je možné ji pomocí příslušného vyhledávače vyhledat (každý vyhledávač má vlastního robota). Vyhledávání bude úspěšné (stránka bude nalezena) pokud se zadané výrazy shodují s těmi v textu stránek (resp. v zaindexované části textu stránek, vyhledávače nemusí zaindexovat stránku celou, ale jen její část několik kilobajtů od začátku). Hledaný text nemusí být ale jen v textu stránky, klíčová slova mohou být obsažena jen v textových odkazech a web na ně bude také vyhledatelný. Dokonce stačí, aby na web vedly nějaké odkazy z tématicky zaměřených webů a web bude vyhledatelný i na jejich klíčová slova. Zpětné odkazy Běžné způsoby jak získat tzv. zpětné odkazy na svou stránku jsou prakticky vzato dva (pomíjím možnosti jako diskuzní fóra či odkazové farmy). První možností je dohodnout se s nějakým vlastníkem webu o umístění odkazu, třeba formou výměnné reklamy. Druhou možnost nabízí tzv. katalogy (rozcestníky). Internetový katalog (např. seznam.cz) je vlastně stránka, na které si můžete svůj odkaz zaregistrovat do vybrané sekce podle zaměření webu. Tuto nabídku obvykle naleznete pod souslovím přidat odkaz. Tyto služby jsou poskytovány obvykle zdarma, ale také placeně, čehož se hojně využívá především u komerčních webů. Pokud tedy odkaz na stránku již existuje (obecně platí čím více, tím lépe), nezbývá vlastně nic jiného než čekat na návštěvu robota. To může trvat několik dní až týdnů, ale s trochou štěstí to může být hned zítra. Větší šanci na brzkou návštěvu robota zřejmě budeme mít, pokud se odkaz na ní bude nacházet přímo na vstupní stránce (popř. jiné stránce na kterou existují přímé odkazy z jiných webů). Robot totiž ne vždy zaindexuje a prochází celý web. Vyhledávače přikládají různým slovům různou váhu, podle důležitosti jejich výskytu v textu. Vyšší váhu mají slova obsažená v titulku dokumentu (title), v URL adrese či nadpisu nejvyšší úrovně (h1). Klíčová slova (keywords) zadaná v metatagu keywords nemají na vyhledání dokumentu zdaleka takový vliv, jak si hodně lidí myslí. Podobné je to s metatagem description. Vyhledávače jim obvykle nepřidávají příliš velkou váhu (obvykle je berou jako běžný výskyt v textu), některé vyhledávače klíčová slova dokonce zcela ignorují. Je to především z důvodu zneužití těchto metatagů ze strany tvůrců webu, kteří zadávají slova, která se neshodují s obsahem webu, aby zvýšili návštěvnost webu. Nenalezení relevantního dokumentu na dotaz může způsobit několik faktorů. 71

74 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML Velmi časté jsou chyby v HTML stránkách i jejich HTTP hlavičkách. Robotu, potažmo vyhledávači je sice jedno, jestli jsou stránky validní nebo ne, některé chyby však mohou robotu část textu znepřístupnit. * neuzavřený komentář text je od začátku komentáře do konce stránky ignorován * chybějící koncové uvozovky u hodnoty atributu text je chápán jako atribut (tudíž je ignorován) až do té doby, dokud se neobjeví další uvozovky * stránky s rámci bez odkazu na obsah pro alternativní prohlížeče pokud stránka v rámcích v tagu noframe neobsahuje smyslupný text, nebude zřejmě správně zaindexována (mnoho titulních stránek se dá ve vyhledávači najít s textem typu Máte špatný prohlížeč, nainstalujte si jiný ) * chybějící ALT text u obrázku nezpůsobí sice nezaindexování části textu, ale pro vyhledávače je důležitý, zvláště pokud se jedná o obrázek, který zároveň slouží jako odkaz. Informace o znakové sadě Robot potřebuje správnou informaci o znakové sadě. Musí být správně vyplněna položka content-type v metatagu v hlavičce stránky včetně atributu charset. Robot nevidí vše Jestli se dá o robotovi říct, že používá prohlížeč, tak používá ten úplně nejjednodušší, nejstarší a prostě jen textový. Obvykle robot zná jen HTML (XHTML). Nevidí: * skripty robot neinterpretuje JavaScript, Java applety, ani VBScript * obrázky pokud máte místo všech možných nadpisů a menu obrázky, robot je nepřečte, i když je na nich jen text; přečíst může pouze jejich atribut alt, kde by se měl popis obrázku vyskytovat. Totéž platí i pro flash, proto pozor především na flashové menu, v takovém případě robot nemá šanci stránkou vůbec projít. A pokud se už nechcete toho nádherného animovaného menu vzdát, tak aspoň přidělějte nějakou klasickovou textově odkazovou alternativu. Snaha některých autorů webů o co možná nejlepší umístění ve vyhledávači vede v některých případech až k podvodům. Podvodem je zjednodušeně řečeno vytváření odlišného webu pro robota a pro člověka. Člověk vidí, to co je na obrazovce, robot vidí to, co je v kódu. Podvodem je například tzv. neviditelný text, což je text barvy pozadí. Robot není hloupý a pozná podvodníky. A taky je za podvádění trestá. Pokud autor takto uvádí klíčová slova nesouvisející s obsahem stránky, popř. nadměrný počet klíčových slov, může být penalizován. Pro web může taková penalizace znamenat zhoršení pozice ve vyhledávači, ale i vyřazení z databáze indexovaných webů. 72

75 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML Formuláře To je systém políček a tlačítek, který odesílá data jiným stránkám, nebo skriptům. Tag <form> Formulářové prvky musí být uzavřeny v tagu <form> Atributy tagu <form> Atribut Hodnoty Popis name textový řetězec jméno formuláře method GET, POST Určuje jak mají být předána data. GET - pomocí URL. POST - je vhodné pro delší texty action URL kam mají být data odeslána enctype text/plain multipart/form-data application/x-www-formurlencoded zakódování obsahu Textová pole Víceřádkové pole lze vytvořit pomocí tagu <textarea>, který je párový a v něm uzavřený text bude v poli zobrazen. Atributy tagu <textarea> Atribut Hodnoty Popis name textový řetězec jméno formuláře - nezbytné pro adresaci JavaScriptem cols číslo počet sloupců rows číslo počet řádků tabindex číslo mezi prvky se lze pohybovat pomocí tlačítka TAB, popředí je závislé na popředí v kódu, pomocí tabindex ho můžete změnit (nejnižší číslo nejdříve) acesskey tlačítko po stisknutí ALT + tlačítko bude prvek aktivován readonly hodnota není obsah je možné jen číst (mazat, přepisovat ne) disabled není hodnota do pole není možné zapisovat (je zašedlé) Jednořádkové textové pole lze vytvořit pomocí tagu input <input type="text" />. Atributy tagu <input> Atribut Hodnoty Popis name textový řetězec jméno formuláře - nezbytné pro adresaci JavaScriptem maxlenght číslo určuje maximální počet znaků, které lze zapsat size číslo šířka(ve znacích) 73

76 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML value text text, který bude v poli vypsán tabindex číslo mezi prvky se lze pohybovat pomocí tlačítka TAB, pořadí je závislé na pořadí v kódu, pomocí tabindex ho můžete změnit (nejnižší číslo nejdříve) acesskey tlačítko po stisknutí ALT + tlačítko bude prvek aktivován readonly readonly obsah je možné jen číst (mazat, přepisovat ne) disabled disabled do pole není možné zapisovat (je zašedlé) src URL Obrázek na pozadí Atribut type tagu <input> * type="text" Textové pole * type="button" Tlačítko, atribut value je popiskem tlačítka * type="password" Pro hesla, místo textu budou vidět hvězdičky * type="submit" Tlačítko k odeslání formuláře(na URL u atributu action u tagu <form>) * type="reset" Vymaže obsah formuláře * type="file" Tlačítko pro hledání souborů * type="image" Místo popisku bude na tlačítku obrázek, atribut src určuje URL obrázku * type="radio" Přepínač, vždy musí být uveden atribut name několikrát stejný * type="checkbox" Zaškrtávací políčko, atribut checked(bez hodnoty) určuje zda bude políčko implicitně zaškrtnuté * type="hidden" Slouží k přenosu proměnných pro skripty (PHP, ASP). Toto políčko není vidět. Atribut name určuje název proměnné atribut value její hodnotu Tlačítka Pomocí tagu <button> lze text tlačítka vytvořit za použití XHTML prvků. zvýrazněný text. Atribut type má hodnoty submit reset. <select> <option>1.</option> <optgroup label="popisek"> <option>2.</option> <option>3.</option> </select> 74

77 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XHTML Pokud použije atribut multiple (bez hodnoty) bude nabídka celí zobrazená. Atribut selected u tagu <option> značí, že má být položka předem vybrána. Tag <optiogroup> je normální text, který se zobrazí v nabídce Rámy Nepleťte si rámy s rámečky! Pomocí rámů lze rozdělit obrazovku na několik částí, v každé pak může být jiný obsah. Rámy jsou rozumným řešením pro navigaci. V jednom okně je menu, které se nemění a v druhém obsah stránky, který se mění. Logika tvoření rámů Píšete, jak se má rozdělit obrazovka (horizontálně na poloviny a dolní polovinu na polovinu..). Rámy se vždy deklarují v sekci <head> a </head> Základem je značka <frameset>, která určuje, jak se stránka rozdělí. <frameset rows="20%, 80%"> <frame src="horni_menu.html"> <frameset cols="20%, 80%"> <frame src="leve_menu.html"> <frame src="obsah.html"> </frameset> </frameset> Rámce Nejprve rozdělíme obrazovku na 20% a 80% horizontálně, do 20% oblasti vložíme stránku, a rám 80% rozdělíme opět na 20% a 80%, ale vertikálně A nyní přijde přepis na HTML, kdykoli dělíme obrazovku, použijem tag <frameset>, kdykoli vkládáme obsah použijeme <frame> <frameset rows="10%,90%"> <frame src="stranka.html"> <frameset cols="10%,90%"> <frame src="index.php3"> <frameset rows="90%, 10%"> <frameset cols="90%,10%"> <frameset rows="50%, 50%"> <frame src="index.php3"> <frame src="index.php3"> </frameset> <frame src="index.php3"> </frameset> 75

78 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XML <frame src="index.php3"> </frameset> </frameset> </frameset> značka frameset atribut použití hodnoty rows rozdělení na řádky velikost v pixelech, nebo v procentech cols rozdělení na sloupce velikost v pixelech, nebo v procentech border šířka rámečku v pixelech frameborder zobrazení rámečku yes no bordercolor barva rámečku red, # framespacing mezery mezi rámy v pixelech značka frame atribut použití hodnoty src cesta ke stránce URL name jméno pro zacílení odkazů cokoli scrolling yes no auto zobrazení rolovacích lišt noresize yes no možnost měnit velikost rámů marginheight vertikální okraje rámu v pixelech marginwidth horizontální okraje rámu v pixelech frameborder šířka rámu v pixelech framecolor barva rámu red, # značka iframe vloží na normální stránku plovoucí rám. Syntaxe: <iframe>alternativní obsah<iframe> Mezi značky <noframes> a </noframes> se zapisuje alternativní obsah stránky (pokud prohlížeč nepodporuje rámy) 3.4. XML XML - extensible Markup Language Je další ze značkovacích jazyků. Tento jazyk lze využít i v jiných odvětvích nejen na webu. Ale ve spojení s internetem se o něm mluví jako o nástupci HTML. Co nám XML nabízí? XML nám umožní si navrnout vlastní tagy (to, každému elementu dáte svůj vlastní styl je samozřejmé), ale nyní můžete pomocí elementů popisovat jejich obsah, což značně zjednodušší práci vyhledávacím službám (Google a jemu podobní) XML vs. HTML 76

79 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XML Teď napíši dva skripty internetového obchodu. Nejdřív v HTML, pak v XML Televize <b>sloni 9823</b> - cena Kč v XML: <televize> <firma>sloni</firma> <typ>9823</typ> <cena mena="czk">10231<cena> </televize> Teď, když budu chtít hledat, nebude to s XML mnohem jednodušší? Mohu hledat televize od jedné firmy, řadit je podle ceny.. XML dává datům význam. HTML ví, že tag <b> označuje tučný text. XML ví, že element <televize> označuje televizi, ale už nemluví o tom, jak má tento element vypadat v prohlížeči. Je proto třeba použít styly CSS. Jejich použití je jednoduché, stačí deklarovat každému elementu styl, tak jak jsme to dělali v HTML. Prohlížení stránek v XML bude mnohem jednodušší než současných v HTML. Web bude sám říkat, jak má být ten či onen element zobrazen, takže prohlížeči ubydou starosti, jestli má být tohle tučné nebo ne. A taky by měly zmizet propastné rozdíly mezi prohlížeči. Převod do jiných formátů bude mnohem snazší (XML popisuje data). Takže jednu stránku v XML budete jednodušše transformovat do WML (wapové stránky), do HTML nebo do textového formátu, do PDF atd. Význam pro databáze. Není nutné pracovat přímo s databází, ale jen jí poskytnout soubor XML a ten si ona spracuje a rozebere data do sloupců, ale jednoduchý bude i tok dat opačným směrem. Pravidla pro dokument XML Pár pravidel pro tvorbu XML dokumentů (stejná jako pro XHTML) * Každý element je párový (buď zapište <img></img> nebo <img />) * Elementy se nesmějí křížit. Toto je chybný zápis <b><i>kurzíva</b></i> * Obsah dokumentu musí být uzavřený v jednom kořenovém elementu (v HTML tag <body>) * Hodnoty atributů musí být v uvozovkách, ikdyž jde o číslo * Jména elementů mohou obsahovat písmena, čísla, tečky, podtržítka a pomlčky (element, ale nesmí začít tečkou, pomlčkou nebo podtržítkem) 77

80 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XML Struktura dokumentu> Takhle může vypadat dokument XML <?xml version="1.0" encoding="iso "?> <!DOCTYPE clanek SYSTEM "clanek.dtd"> <clanek razeni="xml"> <autor>hashim Habiballa</autor> <datum> </datum> <obsah> <nadpis>úvod do elektronického obchodování</nadpis> <text>moderní elektronické obchodování se neobejde bez XML...</text> </obsah> <clanek/> <?xml version="1.0" encoding="iso "> - XML deklarace určuje, že jde o dokument XML a jeho kódování. <!DOCTYPE clanek SYSTEM "clanek.dtd"> - určuje Definici Typu Dokumentu - DTD ta je uložena v souboru clanek DTD a je to soubor pravidel platících pro pro element <clanek>, říká, že clanek musí nebo může mát atribut razeni a jaké elementy může obsahovat a jaké atributy mohou mít tyto elementy a jaké může mít atribut hodnoty. Není nutné DTD uvádět. DTD kontroluje, jestli autor nenapsal něco, co tam vůbec nepatří, nebo jestli nenapsal jednu věc dvakrát, a jestli na něco nezapomněl. K takovéto kontrole je nutný parser. XML umožňuje používat jakékoli značky, které budou lépe popisovat obsah než značky HTML -> Více Sémantiky. Dokument XML se skládá z několika částí: * Dokument XML a jeho značky * DTD - definice typu dokumentu, která popisuje, jaké značky může dokument obsahovat * Dokument CSS - styly pro jednotlivé značky Dokument XML, přípona *.xml Struktura dokumentu XML je následující: <?xml version="1.0" encoding="iso "?> <!DOCTYPE korenovy_element SYSTEM "clanek.dtd"> <?xml-stylesheet href="styl_css.css" type="text/css"?> <korenovy_element> Obsah dokumentu XML <![CDATA[<html><body>...]]> </korenovy_element> 78

81 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ XML * <?xml version="1.0" encoding="iso "?> - deklarace typu dokumentu * <!DOCTYPE korenovy_element SYSTEM "clanek.dtd"> - definice typu dokumentu * <?xml-stylesheet href="styl_css.css" type="text/css"?> - import stylu CSS * <![CDATA[<html><body>...]]> - sekce CDATA obsahuje zvláštní znaky (také skripty - DOM) Definice typu dokumentu DTD V DTD definujeme vztahy mezi elementy. <!ELEMENT clanek(autor, datum, text)> Element clanek musí obsahovat elementy autor, datum a text. <!ELEMENT br EMPTY> Element br je prázdný (EMPTY) <!ELEMENT cokoli ANY> Element cokoli může obsahovat cokoli (ANY) <!ELEMENT body(p, a, form, (autor odesilatel), faktura?, odstavec+)> Element body musí pbsahovat element p, a a form. Obsahuje jeden z prvků autor nebo odesilatel, může nebo nemusí obsahovat element faktura, obashuje jeden a více elementů odstavec. V DTD je též možné deklarovat možné atributy a jejich hodnoty. <!ATTLIST odstavec align (center left) #IMPLIED > Deklarace atributu align, jeho hodnotou je center nebo left a je nepovinný (#IMPLIED). <!ATTLIST img alt CDATA #REQUIRED> Element img musí obsahovat atribut alt, jeho hodnota je libovolný text, atribut je povinný (#REQUIRED). <!ATTLIST odstavec align (center left) "left"> Implicitní hodnotou atributu align je left. Entity 79

82 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP <!ENTITY podpis "Hashim"> 3.5. PHP PHP je programovací jazyk, který pracuje na straně serveru. S PHP můžete ukládat a měnit data webových stránek. PHP původně znamená Personal Home Page a vzniklo v roce 1996, od té doby prošlo velkými změnami a nyní tato zkratka znamená Hypertext Preprocessor. PHP není nijak těžké pochopit a už se základy si lze vystačit. Umí ukládat, měnit a mazat data. Vše se odehrává na webovém serveru (kde jsou uloženy zdrojové kódy webových stránek). PHP skript se nejprve provede na serveru a potom odešle prohlížeči pouze výsledek (znamená to, že nejprve spočítá kolik je 300/30 a pak prohlížeči odešle jen číslo 10). Proto ve zdrojovém kódu najdete jen "10" (to je rozdíl oproti JavaScriptu, který počítá přímo v prohlížeči). Zdrojový kód PHP narozdíl od JavaScriptu a HTML nezobrazíte. Pomocí PHP je možné vytvořit diskuzní fórum, knihu návštěv, počítadlo, anketu, graf a dokonce si pomocí jednoduchého kódu můžete zlikvidovat celý obsah webu. Navíc máte možnost propojit vaše stránky s databázemi, např. MySQL. Je rozhodně alespoň jedna funkce PHP, která se hodí snad do každého webu. Na webových stránkách se obvykle opakují některé části, hlavička s odkazy, menu, patička. S PHP si můžete snadno vytvořit šablonu pro web, do které se budou vkládat soubory s menu, patičkou atd. Můžete tedy mít menu jen jednou zapsané a do dalších stránek ho pouze kopírovat. Soubory PHP Webová stránka s prvky PHP má nejčastěji koncovku.php. Avšak je možné použít i.php3, php4, php5 a phtml. Stávající verze PHP je 5. Nejlépe je používat koncovky.php. Použijete-li.php5, až vznikne nová verze, web bude působit zastarale. Instalace PHP je jazyk, který si nevystačí jen s prohlížečem určité verze (třeba jako HTML nebo JavaScript), ale je nutné ho na počítač nainstalovat. Základ tvoří webový server a knihovny. K podpoře PHP je třeba instalovat a konfigurovat server, obvykle Apache. Nejlepší je využít k instalaci PHP program PHP Triad, který vše sám nainstaluje. Webhosting s PHP 80

83 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP Ne každý webhosting zahrnuje podporu PHP. Potřebná podpora je u webhostingu nadstandardní službou za příplatek. Nicméně lze sehnat webhosting zdarma s podporou PHP (např. Webzdarma.cz, PHP 5). Při výběru webhostingu pro PHP stránky si pečlivě přečtěte, co nabídka zahrnuje. Instalace PHP a PHPTriad Abyste na počítači mohli spouštět skripty v PHP, musíte PHP nejprve nainstalovat. Instalace PHP se skládá z knihoven PHP (zdrojová data), server (Apache) a případně databáze (MySQL). Celá instalace PHP může být provedena ručně, ale to složitější proces, zvláště pro začátečníky. Druhou možností instalace PHP je využít program PHPTriad, který je volně k stažení. Instalace PHPTriad PHP Triáda Program si stáhněte. Samotný program následně provede instalaci PHP, vy jen odklepávejte připadná tlačítka [OK]. Po skončení instalace PHP se objeví na disku nové složky (obvykle na disku C:\ - místním disku). Tyto složky obsahují důležitá data pro běh PHP. První z nich je PHPTriad, která obsahuje některé programy pro zálohování dat. Druhou složkou je složka Apache. Kam ukládat a jak prohlížet PHP skripty Složka Apache obsahuje server Apache, databázi MySQL a též se do ní ukládají skripty PHP. Proto, když budete chtít prohlížet PHP stránky, musíte provést několik akcí: 1. Spustit webový server Apache - to provedete kliknutí na růžové peříčko ve složce Apache, server se spustí a můžete jej minimalizovat do dolní programové lišty. Obvykle se spouští automaticky 2. Všechny stránky, které obsahují PHP skripty musíte překopírovat do složky C:\Apache\htdocs\. Do této složky budete ukládat celý váš web. 3. Webové stránky v PHP budete nyní prohlížete trochu jinak - pokud si budete chtít prohlédnout soubor c:\apache\htdocs\skript_php.php, musíte si v prohlížeči naklikat adresu (ale nemusíte být připojeni k internetu! Tato adresa běží OFFline, nyní máte server ve svém počítači) Kdyby šlo o soubor c:\apache\htdocs\mujweb\skript_php.php - zapíšete v prohlížeči adresu Značky ohraničující PHP skript Tak jako každý jiný skript i PHP má své značky, které vymezují jeho obsah. Existuje více možností: 81

84 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP 1. <?... obsah...?>. Zde vystupuje skript jako jedna značka <??>. Tato varianta nemusí vždy fungovat, proto je lépe použít následující: 2. <?php... obsah...?>. Nejčastěji používaná syntaxe, neboť je hned jasné, že jde o PHP. Středník Vůbec nejdůležitější částí skriptu PHP je středník to je ;. Každou funkci, řádek, deklaraci musíte oddělit středníkem. Ne jako v JavaScriptu, který na něm tolik neplpí. Dá se to přirovnat k CSS (když vlastnosti neoddělíte středníkem, prohlížeč jim neporozumí). Vždy, když je skript nefunkční, zkuste zkontrolovat, kde jste zapomněli středník. Komentáře Užitečné věci ve skriptu tvoří komentáře. Tj. text, který je vidět jen ve zdrojovém kódu stránky, je určen autorovi, aby se v něm vyznal: <?php /* víceřádkový komentář */ // jednořádkový komentář?> Externě umístěný skript Chcete-li na stránku vložit již hotový skript užijete k tomu příkaz include: <?php include("funkce.php");?> Nyní jsme na stránku vložili obsah souboru funkce.php. Obsah tohoto souboru musí být ohraničen tagy značkami <?php a?>. Může vypadat takto: Zápis textu do dokumentu <?php... obsah v php...?> Stejným způsobem je možné do stránek vkládat HTML, např. menu a mít tak celý web v šabloně, kterou lze snadno upravit, více PHP menu. Výpis textu Nyní jste se seznámili se základy PHP a nic vám nebrání začít opravdu programovat. Nejčastěji užíváným příkazem, je příkaz pro výpsaní textu echo(), nebo, pro úplnost, její méně užívaná obdoba print(): <?php echo ("toto je text". 82

85 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP "přes dvě řádky<br>"); echo ("vypíše text <br />"); echo "i bez závorek se to vypíše<br>"; print ("to samé </br>"); echo ("<strong>též můžete používat HTML značky </strong></br>"); echo 'můžete používat jednoduché uvozovky';?> Víceřádkový text je nutné rozdělit a spojit tečkou. Když vypisujete text můžete použít libovolné značky jazyka (X)HTML. Výsledek předchozího skriptu v prohlížeči: toto je text přes dvě řádky vypíše text i bez závorek se to vypíše to samé též můžete používat tagy můžete používat jednoduché uvozovky Je dobré se hned od začátku rozhodnout, jaké budete používat uvozovky - " nebo '. Lze je zaměnit a týká se to celého PHP. Zrádné znaky To jsou znaky, které ohrožují chod skriptu především " ' / \. Před tyto znaky je nutné vložit zpětné lomítko \ a je po problémech. Pokud chcete zobrazit špičaté závorky < a >, musíte zapsat < a > (obdobně jako v HTML). Pokud chcete vypsat <, musíte do zdroje zapsat &lt;. Takže, když chci zapsat <body bgcolor="red"> zapíši to takto: echo ("<body bgcolor=\"red\">"); Další příklady: echo "Toto \" je uvozovka"; echo "Toto \' je také uvozovka"; Uvozovky lze požívat vnořeně. Proto je vhodnější používat primárně jednoduché uvozovky, kterými si usnadníte vypisování HTML. Vysvětlím příkladem: echo '<a href="http://www.tvorba-webu.cz/">tvorba-webu.cz>/a>' echo "<a href='http://www.tvorba-webu.cz/'>tvorba-webu.cz>/a>" Další: Proměnné Deklarace proměnné 83

86 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP Bez proměnných se neobejde žádný skript. Ani PHP není výjimkou. Proměnné deklarujeme pomocí znaku dolaru $ (zapíšete ho buď pomocí [PRAVÝ ALT]+[Ů] nebo [SHIFT]+[4/Č]): $dolar = "1$"; $den="středa"; $datum = 14; Proměnné Název proměnné se uvádí hned za značku $ (bez mezery). Zde jsme tedy zavedli proměnné: dolar, den a datum. Jejich hodnoty jsou uvedené za rovnítkem. Před rovnítkem a za ním nemusí, ale může být mezera (i více). Pokud proměnnou tvoří číslo, se kterým se bude později počítat (sčítat, dělit atd.), musí být zapsáno bez uvozovek, jinak by jej server pokládal za text. Název proměnné nesmí začínat číslem (jinak může čísla obsahovat), toto je chybné $1promenna = "hodnota". Při zavádění a vyvolávání proměnných také musíte respektovat velikost písmen. Toto nefunguje: $prom = "abc"; echo $Prom; Výpis proměnné Proměnnou vypisujeme pomocí příkazu echo(): $dolar="1$"; echo($dolar); echo("$dolar"); echo("mám jen". $dolar. "<br />"); echo("nemám ani $dolar"); Možností je spousta, ale nejlepší je první a třetí - vždy oddělit proměnnou od normálního textu, tím se vyvarujete případných komplikací. Obyčejný text se píše do uvozovek a od proměnné odděluje tečkou. Operátory Pomocí operátorů můžeme proměnné měnit, násobit, porovnávat atd. aritmetické operátory $a+$b přičte k A B $a-$b odečte B od A $a/$b vydělí A proměnnou B $a*$b vynasobí A proměnnou B přirovnávací operátory (zkracující zápisy) $a++ $a = $a + 1 $a-- $a = $a - 1 $a += $b $a = $a + $b $a -= $b $a = $a - $b $a *= $b $a = $a * $b 84

87 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP $a /= $b $a = $a / $b porovnávací operátory $a == $b $a má stejnou hodnotu jako $b $a!= $b $a má jinou hodnotu než $b $a > $b $a je větší než $b $a < $b $a je menší $b logické operátory $a $b vrátí 1 pokud alespoň jedna proměnná je pravdivá $a && $b vrátí 1 pokud jsou obě proměnné vyhodnoceny jako pravda!$a negace (opak) $a Při logickém porovnávání má pravda true hodnotu 1, nepravda false má hodnotu 0. Ale o tom více v dalším článku. PHP - Formuláře Pomocí PHP lze pracovat s formuláři. Díky formulářům je možné zapojit návštěvníka do průběhu skriptu. Zde se podíváme na základní způsob práce s formulářem. Základní formulář: <form action="send.php" method="get"> <input type="text" name="prom1" /> <input type="text" name="prom2" /> <input type="submit" /> </form> Získání hodnot z formuláře Atribut action je adresa skriptu, který zpracuje informace z formuláře. Atribut method nabývá hodnot POST nebo GET. Když atribut vynecháte, použije se metoda GET, která posílá data jako součást URL. Data jsou vidět v adresním řádku (návštěvník je vidí). Proto by se měla metoda GET používat pro data krátká a pro data u kterých nevadí, že si je návštěvník přečte, případně je v adresním řádku změní. Metoda POST nedává data do URL. Posílá je HTTP objekt. Proto data mohou být delší a návštěvník je nevidí a nemůže proto snadno měnit v adresním řádku. Pokud vyplníte informace do tohoto formuláře a odešlete ho, uvidíte v adresním řádku něco jako send.php?prom1=hodnota&prom2=hodnota. S odeslanými proměnnými můžete v souboru send.php libovolně pracovat (je dobré ošetřit jejich délku, validitu, pokud se vstup bude zobrazovat, je dobré je zbavit možných zdrojových kódů, více kniha návštěv): $prom1 = $_GET["prom1"]; $prom1 = $_GET["prom2"]; echo "Vyplnil jste hodnoty: ".$prom1." a ".$prom2; 85

88 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP Pokud se použije metoda GET, k proměnným se přistupuje pomocí $_GET["jmeno"]. Pokud by byla použitá metoda POST, přistupuje se pomocí $_POST["jmeno"]. Případně je možné k proměnným přistupovat bez rozlišení GET a POST pomocí $_REQUEST["jmeno"]. Uvedený skript by tedy mohl vypadat následovně: $prom1 = $_REQUEST["prom1"]; $prom1 = $_REQUEST["prom2"]; echo "Vyplnil jste hodnoty: ".$prom1." a ".$prom2; To jsou základy práce PHP s formuláři PHP - Ověření formuláře Jednoduchý formulář: <form action="send.php" method="get"> <input type="text" name="prom1" /> <input type="text" name="prom2" /> <input type="submit" /> </form> Lze snadno ověřit (a zpracovat informace) pomocí skriptu v souboru send.php: $prom1 = $_GET["prom1"]; $prom1 = $_GET["prom2"]; Pokud bude formulář složitější: <form action="send.php" method="get"> <input type="text" name="text1" /><br /> <input type="checkbox" name="checkbox1" value="1" /> Odesílat novinky<br /> <input type="radio" name="radio1" value="m" /> Muž <input type="radio" name="radio1" value="z" /> Žena<br /> <select name="select1"> <option value="1">praha</option> <option value="2">brno</option> <option value="3">jiné</option> </select><br /> <input type="submit" /> </form> Nyní se v něm objevily složitější prvky (radio, checkbox a select). Jejich ověření (výpis v souboru send.php) může vypadat následovně: 86

89 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP $text1 = $_GET["text1"]; $checkbox1 = $_GET["checkbox1"]; $select1 = $_GET["select1"]; $radio1 = $_GET["radio1"]; echo " ".$text1."<br />"; if($checkbox1 == "1") echo "Odesílat novinky em"; else echo "Neodesílat"; echo "<br />"; if($radio1 == "m") echo "Muž"; else echo "Žena"; echo "<br />"; if($select1 == "1") echo "Praha"; elseif($select1 == "2") echo "Brno"; else echo "Jiné"; echo "<br />"; V zásadě jde o to, že ověřujeme hodnoty (atribut value) proměnných (atribut name). Další: PHP typy proměnných PHP - Typy proměnných Proměnné se v PHP vyskytují v několika typech: Typ Význam String Text, řetězec (sada znaků), příklad: $retezec = "obyčejný text"; Integer Celé číslo, se kterými je možné pracovat, počítat, příklad: $cislo = 2; Float, real nebo double Desetinné číslo Boolean Logická proměnná, hodnota PRAVDA, NEPRAVDA (1, 0), zapisuje se TRUE nebo FALSE Odlišné typy proměnných se odlišně zavádějí: $retezec = "obyčejný text"; $celecislo = 2; $desetinnecislo = 0.2; $logickapromenna = TRUE; Pomocí metody gettype() lze zjistit jakého je proměnná typu (vrací hodnoty string, integer, double, boolean): echo gettype($retezec); echo gettype($celecislo); echo gettype($logickapromenna); 87

90 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP echo gettype($desetinnecislo); Pomocí metody settype() je možné změnit typ proměnné, smysl to má například, když chcete počítat s proměnnou, která je zavedená jako řetězec. Změnu provedeme následovně: <?php $cislo = "20"; echo "Typ1: ".gettype($cislo); settype($cislo, "integer"); echo "Typ2: ".gettype($cislo);?> Jako parametr v metodě settype můžeme použít hodnoty string, integer, double, boolean. Příbuzné jsou ověřovací metody is_bool, is_integer, is_string a is_float, které vracují TRUE (1, PRAVDA), pokud proměnná odpovídá dotazovanému typu: <?php $prom = "ahoj"; if(is_string($prom)) {echo "ANO";};?> Význam přetypování Pokud budete měnit typ proměnných, průběh bude následující: string integer float boolean string Začíná-li řetězec číslem, vrací toto číslo, jinak nulu. Začíná-li řetězec číslem, vrací toto číslo, jinak nulu. Pokud je řetězec "" nebo "0" vrací se FALSE, jinak TRUE integer Řetězec Číslo Pokud je číslo 0, tak FALSE, jinak TRUE float Řetězec Zaokrouhlí směrem k nule FALSE, jinak TRUE boolean FALSE - "", TRUE - "1" FALSE - 0, TRUE - 1 FALSE - 0.0, TRUE Řídící struktury PHP - Větvení Větvení je skupina příkazů, které rozhodují (porovnávají proměnné) a určují jak se bude skript dál vyvíjet. Jsou to příkazy typu if, else, elseif a switch. Pokud zvládáte větvení v Javascriptu, nebude pro vás PHP nic nového. If Příkaz if zjišťuje zda je daná podmínka pravdivá: $a=1; $b=2; if($a == $b){ echo ("Jsou si rovny."); echo ("A i b mají stejnou hodnotu"); } 88

91 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP Pokud by proměnná $a byla rovna $b, skript by vypsal: Jsou si rovny. A i b mají stejnou hodnotu. To se však nestane, jelikož daná podmínka: $a==$b je rovna 0 (není pravdivá). Více porovnávací operátory. If else a elseif Podmínka if - else opět rozhoduje zda pro proměnnou platí zadané podmínky. if (podmínka) proces1; else proces2; Platí-li podmínka provede se proces1, jinak se provede proces2. Příkazů může být i více. if (podmínka) proces1; elseif(podmínka2) proces2; elseif(podmínka3) proces3; else poslední proces; $a = 5; if ($a==4) echo("4"); elseif ($a<4) echo("menší než 4"); else{ if($a>4 && $a<7){ echo("číslo je větší než 4 a menší než 6"); } else echo($a); } Rozhodujeme zda $a je rovna 4. Pokud není, nejprve rozhodne, zda je menší než 4, jinak rozhoduje, jestli je větší než 4 a zároveň menší než 7. Pokud ani tato podmínka neplatí, skript vypíše skript vypíše hodnotu proměnné. Generování obsahu pomocí PHP Nyní se podíváme, jak lze pomocí PHP vytvářet celé stránky: <html> <head> <title>generování HTML</title> <head> 89

92 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP <body> <?php $action = $_GET["action"];?> <?php if($action == "a1"):?> <strong>funkce PHP</strong> <?php elseif($action == "a2"):?> <em>proměnné</em> <?php elseif($action == "a3"):?> <?php echo ("<strong>cykly</strong> <strong>větvení</strong>");?> <?php endif;?> </body> </html> A k čemu je to dobré? Můžete v jedné stránce zobrazovat desítky stránek, které se budou lišit v URL jen předávanou proměnnou. Skript se například jmenuje skript.php, když zavoláme URL skript.php?action=a1, zobrazí se obsah u první podmínky, když zavoláme skript.php?action=a2, zobrazí se obsah u druhé podmínky atd. Switch Nyní budeme zjišťovat, které hodnotě je proměnná rovna pomocí příkazu switch: $jmeno = "Petr"; switch ($jmeno){ case "Honza" : echo("honza"); break; case "Jiří" : echo("jiří"); break; default : echo("petr"); } Syntaxe: switch (proměnná) { case "hodnota1" : proces1; break; case "hodnota2" : proces2; break; default : proces3; } skript zjišťuje, zda je proměnná rovna hodnotě1, nebo hodnotě2. Pokud ani jedna nevyhovuje provede se proces u příkazu default. Jednotlivé procesy musí být odděleny příkazem break, jinak by se jich provádělo více. 90

93 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP PHP cykly Cykly se používají chceme-li opakovat určitou činnost, několikráte za sebou, opakovaně provádět stejnou proceduru. Postupně ověřovat data, nebo generovat informace. Do while Chceme zapsat čísla od od 1 do 100. Je zbytečné zapsat 1,2,3... Poslouží nám jednoduchý skript: $c = 1; do { echo($c. " "); $c++; } while($c<101); c je proměnná. Cyklus do {proces} while(podmínka) vždy vypíše hodnotu proměnné c. Zároveň k ní vždy přičte 1 c++. Nakonec jsme příkazem while(podmínka) cyklus omezili, cyklus se bude provádět, pouze když je proměnná menší než 101. V momentě kdy není menší se skript přeruší. Stejným způsobem můžete vytvářet i jiné skripty, například pracovat s polem nebo databází. Projíždět postupně jednotlivé položky a vypisovat jejich obsah. While Příkaz while(podmínka) je možné použít samostatně. $c = 1; while($c<101){ echo($c. " "); $c++; } Výsledek je stejný, pouze pokud c přiřadíte hodnotu 101, příkaz do while vypíše 101, protože podmínka je definována až po procesu (skript nezná podmínku a tak napíše 101, teprve poté kontroluje podmínky). Příkaz while 101 nezapíše, protože podmínka předchází proces. Příkaz do while jednou provede proces, když už podmínka neplatí. Na tento rozdíl je třeba si vždy dát dobrý pozor a ověřit skript, když se dostane k podmínce. For Posledním příkazem je příkaz for. Syntaxe: for(inicializace proměnné; podmínka; operace) {skript}. for($c=1; $c<101; $c++){ echo($c." "); 91

94 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP } Příkaz for se užívá především, když víme kolikrát chceme proces uskutečnit. Počet je konečný. U do while a while ověřujeme proměnnou, která se v procesu mění. U for zavádíme přímo proměnnou určenou k tomu, aby se určil počet procesů. Break Příkaz break slouží k zlomení, přerušení cyklu ještě v době, kdy platí podmínky: $a = 0; while ($a<10) { if($a == 5) break; $a++; echo($a. "<br>"); } Cyklus umožňuje zapsat 10 čísel. Bude-li se však $a rovnat 5, cyklus se ukončí. Continue Příkaz continue slouží k tomu, aby se cyklus vrátil zpět na začátek, pokud dojde k porušení některé podmínky: $a = 0; while ($a<10) { if($a == 5) break; if($a == -1) continue; $a++; echo($a. "<br>"); } Pokud se nyní $a bude rovnat 5 dojde k přerušení cyklu, pokud se $a bude rovnat -1 cyklus se zopakuje. Obecně lze říct, že cykly a větvení jsou základními strukturami, které v PHP budete používat určitě často. Tyto struktury existují i v jiných programovacích jazycích. PHP - funkce Funkce je jakousi zkratkou pro větší počet procesů, pokud je nechceme vypisovat celé. Deklarace funkce 92

95 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP Pokud umíte pracovat s funkcemi v Javascriptu, budou pro vás funkce v PHP snadné. Kromě předem zavedených a vyhrazených funkcí PHP, si můžete deklarovat své vlastní: function napis(){ echo("ahoj"); } function deklaruje funkci, napis je název funkce, (názvy pište bez diakritiky). U názvu funkce je třeba si dát pozor, aby se její název nekryl s názvem již zavedené funkce PHP (nemůžete použít např. echo, return...). V závorkách jsou uvedené argumenty funkce. /Funkce může být i bez argumentu. Složené závorky{ } vymezují procesy funkce (složené závorky zapíšete pomocí SHIFT + [ú] a SHIFT + [)] nebo pomocí PRAVÝ ALT + [F] a PRAVÝ ALT + [G]). Kdykoli zavoláme tuto funkci skript vypíše ahoj. Taková funkce se nám může hodit, pokud třeba chceme opakovaně vypisovat nějaký delší text, nebo část zdrojového kódu. Vyvolání funkce Nyní jsme deklarovali funkci, ale teď ji chceme vyvolat: napis(); Zapíšeme pouze název funkce a závorky. Skript vypíše 'ahoj'. Funkce bez argumentu Je již zmíněná funkce napis(), která nemá uvnitř závorek žádný argument(proměnnou). Funkce s argumentem Kdybychom chtěli někdy napsat 'ahoj', jindy 'dobrý den', nebo něco úplně jiného, použijeme funkci s argumentem. function napis($jmeno){ echo($jmeno); } napis("dobrý večer"); //napíše dobrý večer napis("ahoj"); //napíše ahoj napis("dobré ráno"); //napíše dobré ráno Deklarace je úplně stejná až na argument $jmeno. Ten zavádí proměnnou $jmeno. Když jsme vyvolali funkci a jako její argument jsme uvedli "dobrý večer" a "ahoj", byly tyto hodnoty přiřazeny k proměnné $jmeno, následně je funkce zapíše. Funkce vracející hodnotu, příkaz return 93

96 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP Můžete také zavést funkci, která bude vrací hodnotu: function vrat($cislo){ return $cislo*2; } echo(vrat(20)); echo(vrat(100)/vrat(10)); Funkce vrat(); příkazem return vrácí $cislo*2 (tedy vrací dvojnásobek zadané hodnoty). S danou funkcí lze potom nakládat jako s proměnnou, počítat s ní, vypisovat ji atd. Globální proměnné Pracujeme-li uvnitř funkce s proměnnými, které jsou definované mimo tělo funkce, je třeba k nim přistupovat trochu odlišně: Pole prvků <?php $name = "Simon"; function jm(){ echo $GLOBALS['name']; } jm();?> Pomocí $GLOBALS přistupujeme k proměnné deklarované vně funkce. PHP pole (Array) Pole, to je skupina prvků, které spolu souvisí. Pole je třeba abeceda. Pole jsou základním prvkem PHP, ve složitějších aplikacích a skriptech se bez nich neobejdete. Pole nesmírně usnadní práci s databází (MySQL), ale lze ho využít i jinde. Vytvoření pole Pole se tvoří příkazem array("prvek0", "prvek1", "prvek2"), každý prvek má své číslo - ten první (prvek0) má číslo nula. $pole = array ("mrkev", "celer", "brambory"); echo($pole[0]); //vypíše 'mrkev'; $zahrada = array (3 => "jablon", "hrusen"); echo($zaharda[4]); //vypíše 'hrusen'; $sklenik[1] = "redkvicky"; //postupné přiřazování prvků i s indexem(1) $sklenik[3] = "fazole"; Pole se ukládají pod proměnné($pole, $zahrada a $sklenik). V prvním případě jsme vytvořili $pole, jehož položkami jsou mrkev, celer a 94

97 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP brambory. Následně echo($pole[0]); jsme vypsali nultou položku pole. Pak jsme zavedli pole $zahrada, do kterého jsme zařadili prvek jablon pod číslo 3 a hrusen s číslem následujícím, tedy 4. Do posledního pole $sklenik jsme postupně zařadili prvky redkvicky a fazole pod čísla 1 a 3. Výpis prvků pole Syntax: echo($pole[cislo prvku]). To je nejjednodušší způsob, jak vypsat prvek. Druhá možnost je prvky pojmenovat a pak odkazovat pomocí jmen: $pole["br"] = "brambor"; $pole["kv"] = "kvetak"; echo("nemám rád ".$pole["br"]." ani ".$pole["kv"]); //nemám rád bramobory ani květák $knihy = array("js" => "JavaScript v příkladech", "php" => "PHP pro profesionály"); echo($knihy["js"]); Procházení polem Procházení polem znamená postupné vybrání všech prvků. Metoda count($pole) vrací počet prvků pole. $dodelat = array("php", "CSS", "SQL", "XML"); for ($p = 0; $p < count($dodelat); ++$p){ echo ("je třeba dodělat ".$dodelat[$p]."<br>"); } Tento skript postupně vypíše každý prvek pole $dodelat. Metodu count($pole) lze použít, pouze pokud jsou prvky číslované, pokud jsou pojmenované, je třeba použít each(), list() a reset(): $pole[php]="hotové"; $pole[css]="rozepsané"; $pole[xml]="hotové"; $pole[sql]="nezačaté"; reset($pole); while(list($index, $stav) = each($pole)){ echo ($index." - ".$stav."<br>"); } Metoda reset() nastavuje ukazatel na první prvek pole. Metoda list() bere prvky z pole a jeho číslo uloží jako $index a jeho hodnotu jako proměnnou $stav. Metoda each() značí, že se tak má provést u každého prvku. PHP - práce se soubory 95

98 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP PHP má vynikající možnosti pro manipulaci se soubory. Soubory můžete mazat, vytvářet, kopírovat, načítat atd. Změna přístupových práv souboru Pokud PHP skripty, které mění obsah některých souborů nepracují správně, je to často způsobeno špatným nastavením přístupových práv souboru. Atributy lze změnit pomocí Total Commanderu. Připojte se na FTP, vyberte soubor, u kterého chcete nastavit jiná přístupová práva. Pak klikněte na položku Soubory Změna atributů a vepište do políčka "777". Tím povolíte veškerá práva (zejména zápis). Vytvoření souboru K vytvoření souboru stačí metoda fopen("soubor", "w+") $soubor=fopen("soubor.txt", "w+") Soubory Tímto způsobem otevřeme soubor soubor.txt. Hodnota w+ je režim otevírání souboru. Další použitelné hodnoty: Hodnota Popis a Otevře soubor pro přidání, pokud soubor neexistuje PHP jej vytvoří a+ Otevře soubor pro přidávání a čtení, pokud soubor neexistuje PHP jej vytvoří r Otevře soubor pouze pro čtení r+ Otevře soubor pro čtení a zápis w Otevře soubor pro zápis, původní data budou ztracena. Pokud soubor neexistuje PHP jej vytvoří w+ Otevře soubor pro zápis a čtení, původní data budou ztracena, pokud soubor neexistuje PHP jej vytvoří Pokud chcete prostřednictvím PHP ukládat data do vybraných souborů na serveru, je třeba, aby tyto soubory měly nastavena práva pro zápis chmod 777. Například v Total Commanderu stačí vybrat soubor, který je na serveru a nastavit mu atributy pomocí Soubor Změna atributů a tam zaškrtat potřebná políčka. Otevření souboru Otevření souboru se provádí stejnou funkcí jako vytvoření tj. fopen("soubor","režim"). $soubor=fopen("soubor.txt", "r"); Tímto jsme otevřeli soubor.txt pro čtení. Zavření souboru Po dokončení práce se souborem je rozumné jej zavřít pomocí metody fclose(id_souboru) id_souboru je hodnota vrácená metodou fopen(), příklad: 96

99 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP $soubor=fopen("soubor.txt", "r"); fclose($soubor); Vypsání obsahu Otevřeme soubor a vypíšeme jeho obsah pomocí metody fread(id_souboru, počet_znaků): $soubor = fopen("soubor.txt", "r"); $text = fread($soubor, 10); echo($text); fclose($soubor); Metoda fread() přečte ze souboru prvních 10 znaků. Obvykle je třeba načíst celý soubor, je tedy nutné zjistit počet jeho znaků. To lze pomocí metody filesize($soubor), která vrátí počet znaků vybraného souboru. Uložení souboru Nyní pomocí metody fwrite(id_souboru, "text") zapíšeme text na konec vybraného souboru: $text = "cokoli, co chcete uložit do souboru"; $soubor = fopen("soubor.txt", "a+"); fwrite($soubor, $text); fclose($soubor); Soubor.txt může být existující soubor, pokud neexistuje PHP ho vytvoří. Kopírování Ke kopírování souborů slouží metoda copy(zdroj, cíl): copy("http://www.tvorba-webu.cz/php/prace_se_soubory.php", "http://www.tvorba-webu.cz/prace_se_soubory.php"); Skript překopíruje tento soubor z této složky do kořenového adresáře webu. Přejmenování rename("původní název","nový název") rename("soubor.txt", "soubor.html") Převod textového souboru na soubor html. Odstranění Pro odstranění souboru se užívá metoda unlink(název souboru) unlink("soubor.txt"); 97

100 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP Struktura adresáře Metodou opendir() můžete otevřít celý adresář (složku) a metodou readdir() ji přečíst. Těmito metodami např. můžete načíst názvy všech souboru ve vybraném adresáři: $adresar = opendir("."); while ($soubor = readdir($adresar)){ echo ($soubor."<br />"); } Parametr "." označuje aktuální adresář a může být nahrazen obvyklou URL. Atributy souborů Atribut souboru je velikost, datum posledního přístupu, datum vytvoření atd. Velikost souboru zjišťuje metoda filesize($soubor): $soubor = fopen("soubor.txt", "r"); echo(filesize($soubor)); Typ souboru zjišťujeme pomocí metody filetype($soubor): $soubor = fopen("soubor.txt", "r"); echo(filetype($soubor)); Nejčastějším výsledkem je "dir" (složka) nebo "file" (soubor). Datum vytvoření souboru zjišťuje metoda filectime($soubor), která vrací číslo, které je možné upravit pomocí metod pro práci s časem: $soubor = fopen("soubor.txt", "r"); $datum_vytvoreni = StrFTime("%d/%m/%Y %H:%M", filectime($soubor)); Metoda StrFTime formátuje datum a čas (zde do formátu 22/12/ :23:11). Datum poslední změny zjišťuje metoda filemtime($soubor): $soubor = fopen("soubor.txt", "r"); $datum_posledni_zmeny = StrFTime("%d/%m/%Y %H:%M", filemtime($soubor)); Počet souborů v adresáři Skript, který spočítá počet souborů v adresáři (prakticky ho můžete uplatnit například, když budete automaticky počítat všechny články v zadaném adresáři): 98

101 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP <?php function pocet($addr){ $adresar = opendir($addr); $num=0;while ($soubor = readdir($adresar)){$num++;} $num = $num-2; echo '('.$num.')'; } pocet("http://www.tvorba-webu.cz/php/");?> Skript postupně projede všechny soubory v adresáři, za každý přičte 1 k proměnné $num, pak od ní odečteme 2, protože počítá i "." a "..". PHP - řetězce String, řetězce to je všechno co souvisí s textem. Pomocí některých funkcí můžete text ořezávat, počítat znaky, vypisovat kód ASCII atd. Řetězec je kus textu. Příklad řetězce: "toto je řetězec", "123 toto také". Vyříznutí části řetězce - substr() Metoda substr() vybere z daného řetězce určenou část. Syntaxe: substr(řetězec, počátek, počet znaků) parametr počet znaků je nepovinný. Při práci s řetězci se znaky (podobně jako jinde v PHP) číslují od nuly: řetězec $retezec=substr("internet", 1, 4); echo($retezec); //vypíše "nter" 4 znaky od znaku č. 1 $retezec2=substr("internet", 2); echo($retezec2); //vypíše "ternet" $retezec3=substr("internet", -3); echo($retezec3); //vypíše "net" Pokud není uveden poslední parametr, řetězec se ořízne až za posledním znakem. Ostranění prázdných znaků Metoda trim() odstraní z textu všechny zbytečné tabulátory a mezery: $retezec=trim(" řetězec s mezerami "); echo($retezec) //vypíše "řetězec s mezerami" Počet znaků Metoda strlen() vrací počet znaků řetězce (při práci s ní je třeba mít na zřeteli, že znaky jsou číslované od nuly, tedy řetězec má 8 znaků, ale poslední má číslo 7): 99

102 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP echo(strlen("internet")) //vypíše "8" Kód ASCII Každý znak má svůj ASCII kód, místo znaků můžeme psát ASCII kód. K tomu slouží metoda chr(). Pokud chceme naopak text přetransformovat na ASCII kód využijeme metodu ord(): echo(ord(a)); // vypíše "97"; echo(chr(97)) // vypíše "a" Převod řetězců na jiné znaky Pomocí metody StrTr(řetězec, 1. sada_znaků, 2. sada_znaků) převedete 1. sadu znaků na 2. sadu znaků. Například můžete zbavit text diakritiky (háčky, čárky): $text = "příliš žluťoučký kůň úpěl ďábelské ódy" echo(strtr($text, "ÁÄČÇĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽáäčçďéěëíňóöřšťúůüýž", "AACCDEEEINOORSTUUUYZaaccdeeeinoorstuuuyz")); // vypíše 'prilis zlutoucky kun upel dabelske ody' Ke každému znaku se postupně přiřadí znak z druhé skupiny a nahradí ho. Další: Odesílání ů Také si můžete prohlédnout: Další metody pro práci s řetězci PHP - Regulární výrazy Regulární výrazy slouží k práci s textovými řetězci. RV umužňují kontrolovat zda je zadaný výraz platný podle nějaké formy, nabo můžete nahradit znaky, které se vám nelíbí jinými. Text zapsaný regulárním výrazem Takhle to vypadá: ^zacatek řetězec, který začíná "zacatek..." konec$ řetězec, který končí "..konec" ^[0-9][a-z]$ odpovídá třeba "1a" "1w" "3r", řetězci který začíná číslicí a zaním písmenem a pak již končí ^[^A-Z]$ jeden jakýkoliv znak kromě velkých písmen ^[^\"\'] řetězec který nezačíná uvozovkami ^.+$ odpovídá libovolnému počtu znaků ^.{4}$ odpovídá čtyřem libovolným znakům ^w{1, 3}$ odpovídá "w", "ww" a "www" ^[0-9]*$ odpovídá ^[0-9]{0,}$ číslice nulakrát a víckrát Kontrola ové adresy 100

103 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP Jestliže vám návštěvníci vašich stránek vyplňují do formulářů svojí e- mailovou adresu, můžete kontrolovat její tvar - čímž je pěkně naštvete. Obecně má ová adresa takovýto tvar znaky (com, uk, sk, cz..) if $mail)); echo ("vaše ová adresa není platná") Pomocí funkce ereg(výraz, řetězec) zjišťujeme zda řetězec odpovídá výrazu. Vysvětlení - na začátku libovolný text pokračující zavináčem za nímž následuje další libovolné slovo zakončené tečkou a pokračující posledním slovem. PHP a odesílání u PHP umí pracovat i s poštou, umí y přečíst, odesílat atd. Pomocí PHP je možné vytvořit ové rozhraní, jaké nabízí např. seznam.cz, centrum.cz a další. V tomto článku se nebudeme y příliš zabývat, je to již hodně pokročilá část PHP, vyzkoušíme si pouze odeslat jednoduchý Odesílání u K tomu stačí pouze metoda mail(adresát, předmět, text zprávy). "nejaký předmět", "a nějaký obsah"); "predmět", "obsah") První by měl být doručen na adresu Druhý e- mail na tu stejnou adresu a navíc ještě na adresu Nejprve se zapisuje předmět až poté tělo zprávy. Jednoduchý příklad Jednoduchý příklad využití - formulář, kterým se návštěvník přihlásí k odběru informací em. Napíše svou ovou adresu, která se zašle na naši adresu: <form action="" method="post"> <?php if($_post['send']=="ok" && "Nova registrace", $_POST['adresa']); echo "Adresa odeslána"; }?> <input name="send" value="ok" type="hidden" /> 101

104 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP <input name="adresa" size="15" id="adresa" type="text" /> <input name="od" value="registrovat" type="submit" /> </form> Tímto skriptem odešlete na adresu předmět bude Nova registrace a obsahem zadaná ová adresa návštěvníka. PHP cookies Cookies jsou soubory, které dočasně ukládají data o návštěvníkovi - v případě, že je máte v prohlížeči povoleny. Například, když se registrujete do své ové schránky, tak v momentě kdy začnete psát své jméno do přihlašovacího formuláře, objeví se nabídka ve které své jméno najdete. Pomocí cookies lze návštěvníkovi zabránit, aby hlasoval dvakrát ve stejné anketě. Počítadlo návštěv jednotlivce Tuto stránku jste zobrazil 1. reload. Zavedení cookies musí být vždy na prvním místě v dokumentu (ještě před značkou html). <html> <?php $navsteva++; setcookie("navsteva", $navsteva, mktime(18,30,0,1,1,2020));?> <html> <head> </head> <body> Toto je <? echo($navsteva)?> </body> </html> Vytvořili jsme cookie, která se jmenuje navsteva, která zavede proměnnou $navsteva, její hodnota je nula. Při každém otevření stránky se zvětší o 1. Metoda mktime(18,30,0,1,1,2020) je datum, kdy se cookie zruší (18:30:00 1/1/2020). PHP datum a čas PHP datum a čas - zápis a formátování. Jak vypsat datum a čas 102

105 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP Hlavní metoda PHP pro práci s datem a časem je Time(), která vrací počet sekund uplynulých od <?php echo(time());?> Ukázka: Tento výsledek je pro návštěvníka dost nečitelný, lze jej ale využít například k vytváření jedinečných názvů souborů například v knize návštěv atd., každá stránka bude mít svůj originální název txt. Je jen málo pravděpodobné, že by vznikly dva soubory ve stejné sekundě. Transformace data a času Obvyklý tvar data a času lze získat metodou StrFTime(parametry, Time()): <?php $datum = StrFTime("%d/%m/%Y %H:%M:%S", Time()); echo($datum);?> 24/Tue Feb 24 17:07: / :07:07 Pomocí této PHP metody si můžete nastavit formát data i času. / a : určují rozdělovače dnů, měsíců, hodin... (můžete je oddělit čímkoli). Další parametry naleznete v tabulce: Parametr Popis (možná hodnota) Datum %d číslo dne (1-31) %m číslo měsíce (1-12) %Y číslo roku (2003) %a zkratka jména dne %A jméno dne %b zkratka jména měsíce %B jméno měsíce Čas %c datum a čas %H Hodina (00-23) %I Hodina (01-12) %j číslo dne v roce (0-366) %m číslo měsíce (01-12) %M číslo minuty %p dopoledne/odpoledne %S Sekunda %U číslo týdne v roce (01-51) %w číslo dne v týdnu %W číslo týdne v roce (01-51) 103

106 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP %x Datum podle mezinárodních zvyklostí %X čas podle mezinárodních zvyklostí %y Rok jako dvojčíslí (01) %Y Rok jako čtyřčíslí (2001) %z, %Z časová zóna nebo její zkratka Abychom z anglický názvů dostali české pojmenování (pozor i anglické číslování dní je jiné), použijeme metodu SetLocale(LC_ALL, "Czech"): <?php SetLocale(LC_ALL, "Czech"); $datum = StrFTime("%d/%c/%Y %H:%M:%S %z %B", Time()); echo($datum);?> Druhá metoda, která taky umí modifikivat čas a datum je Date(parametry, Time()). Tato metoda se liší od předchozí svými parametry a tím, že vše převádí na evropské standardy: Parametr Popis (možná hodnota) Y Rok - čtyřčíslí y Rok jako dvojčíslí M zkratka jména měsíce m číslo měsíce (01-12) F jméno měsíce D zkratka dne v týdnu l jméno dne v týdnu w číslo dne v týdnu (1-7) d číslo dne v měsíci (01-31) j číslo dne v měsíci (1-31) z číslo dne v roce ( ) H hodina (00-23) h hodina (01-12) i minuta (00-59) s sekunda (00-59) U počet sekund od S anglická koncovka pořadového čísla dne v měsíci A dopoledne/odpoledne (AM/PM) a dopoledne/odpoledne (am/pm) Poslední ukázka: <?php $datum = Date("j/m/Y H:i:s", Time()); echo($datum);?> Výsledek: 24/02/ :07:07 Úpravy data a času 104

107 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP Obvykle vygenerujete datum a čas typu: 01/01/ :07:05. Nuly v čase nám nevadí, ale nuly v datu by bylo lépe odstranit: $date = strftime("%d.%c.%y %H:%M:%S", time()); $date = str_replace(". 0", ". ", $date); $num = strlen($date); if(substr($date, 0, 1) == "0") $date = substr($date, 1, $num); Pomocí regulárních výrazů, hledáme úseky, ve kterých po tečce následuje 0 a nahrazujeme je pouze tečkou ($date = str_replace(". 0", ". ", $date);). Posléze kontrolujeme zda není první znak data 0, pokud tomu tak je, ořízneme řetězec. Převod řetězce na datum Někdy je potřeba rychle naformátovat nějaký řetězec do jiné podoby. Můžeme mí datum ve formátu Wed, 12 Dec :00:00 GMT. Přeformátování provedeme následujícím skriptem: $date = "Wed, 12 Dec :00:00 GMT"; $date = strtotime($date); $date = StrFTime("%d.%c.%Y %H:%M:%S", $date); // :00:00 PHP menu Může nastat situace, kdy do každé stránky vkládáte stejné text (objekt), například menu, patičku. Pomocí PHP lze snadno vkládat do každého souboru jiný soubor. Vložení menu pomocí PHP Veškeré opakující se prvky je vhodné vkládat pomocí PHP. Vytvořte stránku - třeba menu.html (ve které budou jen odkazy a prvky společné pro všechna menu, žádné <body>,<head> ani <html>). Tuto stránku vložíte pomocí PHP do dokumentu, např: <?php include_once("menu.html")?> Nyní se obsah souboru menu.html vloží do každého dokumentu, ve kterém bude tento zdrojový kód. Když budete chtít menu změnit, změníte pouze soubor menu.html a změna se projeví ve všech dokumentech. Samozřejmě všechny dokumenty musejí mít koncovku.php a na serveru musí být podpora PHP. Obdobným způsobem vkládejte menu, patičky, reklamy, hlavičky a další. Ušetří vám to práci a web bude nesmírně jednoduchý. PHP - Přenos proměnných 105

108 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP Přenos proměnných V tomto článku bych rád upozornil na možné problémy s přenosem proměnných. Přenos proměnných z formulářů Posílá-li nějaký formulář proměnnou PHP skriptu metodou GET nebo POST, je třeba tuto proměnnou ve skriptu volat takto, v případě metody GET: $promenna = $_GET['promenna']; Nutné je dbát na syntaxi, podtržítkou, v hranatých závorkách proměnná bez $ a v uvozovkách. V případě metody POST: $promenna = $_POST['promenna']; Pokud dobře nevíme, jakým způsobem se bude proměnná předávat, můžeme použít $_REQUEST, který zahrnuje oba způsoby: $promenna = $_REQUEST['promenna']; Předávání proměnných do funkcí V případě, že funkce pracuje s nějakými proměnnými, které nezískává jako vlastní parametr, je třeba je volat zvláštním způsobem: $a = "a"; $b = "b"; $c = "c"; function fun($d){ global $a, $c; $b = $GLOBALS['b']; echo $a.'-'.$b.'-'.$c.'-'.$d; } fun('d'); Dříve deklarované proměnné $a, $b, $c voláme buď způsobem global $a nebo $b = $GLOBALS['b']. Proč se to tak děje? Protože jinak by funkce na tyto proměnné nesáhla: $a = "a"; $b = "b"; $c = "c"; 106

109 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ PHP function fun($d){ echo $a.'-'.$b.'-'.$c.'-'.$d; } fun('d'); Taková funkce by vypsala pouze "---d" místo "a-b-c-d". PHP heslo Jednoduchý skript, kterým můžete zaheslovat přístup na stránku. Tento skript je uzpsoben pouze na jednu stránku, nemohou v ní být odkazy na jiné tajné stránky, protože to vyžaduje přenášení proměnné a její další kontrolu. Heslo <html> <head> </head> <body> <?php $show = $_POST['show']; $pass = $_POST['pass']; $password = "krtek"; //tajné heslo if ($show!= "1"):?> <form action="" method="post"> <input type="hidden" value="1" name="show"> <label>heslo: <label><input type="password" name="pass" /> <input type="submit" value="ok" /> </form> <?php endif;?> <?php if ($show == "1"):?> <?php if ($pass == $password):?> <h2>přístup povolen</h2> <p> Tady je ukrytý obsah, který je dostupný pouze po zadání hesla </p> <?php endif;?> 107

110 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Objektově orientované paradigma <?php if ($pass!= $password) echo "<p>špatné heslo. Zkuste ho zadat znovu, nebo mě kontaktujte.</p>";?> <?php endif;?> </body> </html> Heslo je krtek a můžete ho změnit na řádku $password = "krtek"; //tajné heslo Objektově orientované paradigma Doposud jsme využívali pouze imperativního (příkazového) stylu programování (viz. jazyk Pascal). V rámci programu jsme zavedli proměnné určitého typu, se kterými jsme prováděli určité operace. Pokud nám nevystačovala množina připravených operátorů a podprogramů, definovali jsme své vlastní. Jediné omezení ve vztahu proměnné (data) a operace bylo dáno pouze typem dat. Datový typ předepisoval, které operace lze pro proměnné daného typu provádět. Neexistovalo však implicitní další omezení v rámci povolených operací. Příklad: Nad proměnnou typu celé číslo (integer) můžeme provádět všechny operace definované pomocí příslušných operátorů, funkcí a procedur, které jsou pro typ integer zavedeny. Tudíž z hlediska programovacího jazyka nic nebání provádět s celočíselnou proměnnou Den, jejíž úkolem je uchovávat číselnou hodnotu dne v datu, výpočty jako faktoriál. Samozřejmě za předpokladu, že daná funkce je pro typ integer definována. Smysluplnost takovéhoto výpočtu je však přinejmenším diskutabilní. Mezi další nevýhody programovacích jazyků tohoto typu patří horší dispozice pro rozšiřování již funkčních programů. Většinou se neobejdeme bez znalostí a změn původního kódu. Proto vývojem programovacích jazyků bylo vytvořeno objektově orientované programování(oop). Mezi programovací jazyky využívající vlastnosti OOP patří například: Simula, Eifel, C++, Beta, Small Talk, Java, Visual Basic a Object Pascal (Delphi). 108

111 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Základní vlastnosti 3.7. Základní vlastnosti Základní tezí objektově orientovaného programování (OOP) je používání objektů, které nejsou určeny jen množinou dat, ale rovněž množinou přesně stanovených a definovaných operací, které objekt může provádět. Během analýzy programu se snažíme vytvořit a popsat objekty, které v rámci programu mají vzniknout. Objekty mezi sebou komunikují a posílají si zprávy, reagují na události. Základní vlastnosti OOP: 1. Zapouzdření (Encapsulation) - základním pojmem OOP je třída (class), která v sobě zahrnuje data a operace. Konkrétní výskyt třídy je instance třídy (objekt). 2. Dědičnost (Inheritance) - Možnost odvozovat nové třídy, které dědí data a metody z jedné nebo více tříd. V odvozených třídách je možno přidávat nebo předefinovávat nová data a metody. 3. Polymorfismus - Česky možno vyjádřit přibližně pojmem "vícetvarost". Umožňuje jediným příkazem zpracovávat "podobné" objekty. Vlastnosti OOP Základní pojmy: Třída - je typ definován uživatelem, který se nachází v nějakém stavu, má reprezentaci a chování. Třída je podobná datovému typu. Objekt (instance třídy) - je již proměnná určitého datového typu, který je definován třídou. Objekt je konkrétní místo v paměti. Zapouzdření Zapouzdření vyjadřuje schopnost spojení atributů (dat) a metod (procedur a funkcí). Objekt dané třídy kromě atributů, které určují jeho vlastnosti a stav, má jasně určeno, které operace může provádět. Jsou určeny jeho schopnosti něco konkrétního dělat. Třída je tedy uživatelsky definovaný typ a obsahuje jak členská data, tak i metody. K jednotlivým složkám třídy můžeme nastavit následující přístupová práva: public - povoluje přímý přístup k prvkům třídy z vnějšku private - zakazuje vnější přímý přístup k prvkům třídy protected - označují se takto prvky nepřístupné vzdáleným přímým přístupem z vnějšku třídy, ale procházející děděním do odvozených tříd. Dědičnost 109

112 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Základní vlastnosti Dědičnost (Inheritance) umožňuje přidat k základní (rodičovské nebo bázové) třídě T1 další vlastnosti nebo stávající vlastnosti modifikovat a vytvořit novou odvozenou (podtřídu neboli potomka) třídu T2. Dědičnost může být následujících typů: Jednoduchá inheritance - třída má jen jednoho předka (rodiče). Vytváříme stromovou hierarchii tříd. Třídu v nejvyšší úrovní označujeme jako kořenovou třídu. Vícenásobná inheritance - třída může více předků. Opakovaná inheritance - třída může zdědit vlastnosti některého (vzdálenějšího) předka více cestami. Vztahy tříd v hierarchii jsou znázorňovány orientovaným acyklickým grafem (direct acyclic graph - DAG), označovaným také jako graf příbuznosti tříd. Dědičnost vyjadřuje specifikaci - konkretizaci. Každá nová třída (potomek) je konkrétnější než jeho předek. Podívejte se na návrh jednoduché dědičnosti Savci - Kočkovité šelmy - Lvi. Savci jsou nejobecněji navrženou třídou, Kočkovité šelmy jsou již konkrétnějším vyjádřením třídy Savci. Třída Lvi je ještě konkrétnějším vyjádření vlastností a schopností. Jednoduchá dědičnost Jednoduchá dědičnost určuje, že každá odvozená třída (potomek) má jen jednoho předka (rodiče). Nakreslíme-li si graf jednoduché dědičnosti, získáme strom. V jeho kořenu je základní rodičovská třída. Každý následující uzel stromu je odvozená třída - potomek. Každý potomek má jen jednoho předka. Podívejte se na obrázek příkladu jednoduché dědičnosti a všimněte si, kterým směrem míří šipky. Ty vyjadřují vzájemnou závislost tříd v rámci dědičnosti. Existence třídy potomka závisí na rodiči a ne naopak. Vícenásobná dědičnost U vícenásobné dědičnosti může mít odvozená třída (potomek) více než jednoho předka (rodiče). Realizace vícenásobné dědičnosti je obtížná a může způsobovat značné komplikace. Proto některé objektově orientované jazyky neumožňují tento typ dědičnosti vůbec zavádět. Příkladem budiž jazyk Object Pascal, který budeme v dalších lekcích používat. Ve velké 110

113 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Základní vlastnosti většině příkladu lze vícenásobnou dědičnost nahradit dědičností jednoduchou. Příklad: Navrhneme třídu Zaměstnanec a třídu Student. Pak vytvoříme třídu Doktorand, což je student, ale částečně i zaměstnanec. To znamená, že bychom třídu Doktorand odvodili od obou předcházejících tříd. Chceme-li se však vícenásobné dědičnosti vyhnout, pak si stačí uvědomit, že Doktorand je hlavně Student a konkrétní změny týkající se zaměstnaneckých vlastností a schopností do třídy dodáme. Opakovaná dědičnost U opakované dědičnosti může odvozená třída zdědit vlastnosti potomků různými cestami. Například třída Syn dědí vlastnosti třídy Dědeček přímo nebo prostřednictvím třídy Matka. Pro opakovanou dědičnost platí stejné závěry jako pro dědičnost vícenásobnou. Mnohé jazyky ji opět raději vůbec nezavádějí (Object Pascal). Polymorfismus Některé programovací jazyky založeny na OOP podporují pouze pozdní vazbu (někdy nazvanou dynamickou vazbu). To znamená, že o povaze objektu se rozhodne až během samotného průběhu programu. Jazyky jako C++ a Object Pascal vytvářejí implicitně vazbu brzkou (statickou), která o typu objektu rozhodne již při překladu. Umožňují rovněž pozdní vazbu a to pomoci mechanizmu virtuálních metod. U včasné vazby se již při překladu pro jednotlivé metody přiřadí adresy podle typu třídy. Někdy však je potřeba vybrat metodu až v okamžiku, kdy je jasné instanci jaké 111

114 INFORMATIKA V ELEKTRONICKÉM PODNIKÁNÍ Základní vlastnosti třídy potřebuji. Představme si například, že potřebujeme vytvořit lineární spojový seznam složen z objektů tříd AA, BB, CC, kde třída CC je dědicem třídy BB a třída BB je dědicem AA. Do seznamu se umisťují objekty, o jejichž povaze se rozhoduje až při běhu programu. Dejme tomu, že každá třída má metodu Vypis, která se stará o výpis atributů dané třídy. Všechny tři metody pro jednotlivé třídy se sice jmenují stejně, ale dělají trochu jinou činnost (vypisují různé atributy). Při včasné vazbě by se již při překladu rozhodlo, že metoda Vypis bude brána ze třídy AA, i když se rozhodneme pro objekt třídy CC. Aby se tomuto předešlo definuje se příslušná metoda jako virtuální pomocí klíčového slova virtual. procedure Vypis; virtual; Kompozice Kompozici rozumíme schopnost vytvářet nové třídy skládáním z již existujících tříd. Na rozdíl od dědičnosti není nově vzniklá třída konkrétnějším případem své rodičovské třídy. Nová třídy již existující třídy pouze obsahuje a přidává nové vlastnosti a schopnosti. Jednoduchou mnemotechnickou pomůckou pro rozlišení mezi vztahem dědičnosti a kompozice jsou otázky "Je?" a "Má?". Můžeme-li si kladně odpovědět na otázku "Je?", pak se jedná o dědičnost. Kladná odpověď na otázku "Má? Obsahuje?" znamená kompozici. 112

115 ZNALOSTI Data, informace a znalosti 4. Znalosti Již klasická filozofie dovedla charakterizovat intelektuální činnosti, kterými se vyznačují myslící bytosti. Těmito činnostmi mají být podle klasiků analýza, syntéza, indukce, dedukce a analogie. Zmocnit se podstaty těchto činností matematickými, tj. formálními prostředky, aby bylo možno jejich provádění svěřit počítačům, to je problémová oblast, která se nazývá umělá inteligence. Existuje řada matematických disciplín (statistika, relační teorie, mnohorozměrná analýza dat aj.), které dokáží vhodnými prostředky, tj. určitým způsobem strukturovanými daty, popsat objekty našeho myšlení tak, aby se pak na nich v rámci uvedených disciplín prováděla analýza či naopak syntéza nebo aby mohly být klasifikovány na základě analogie (podobnosti). Jedním z prostředků, pomocí nichž je možno do značné míry úspěšně modelovat nejproblematičtější z intelektuálních činností, tj. dedukci neboli usuzování, je právě formální logika Data, informace a znalosti Aby bylo možno úspěšně modelovat myšlení, je třeba se nejdříve zamyslet nad vztahem mezi samotnými objekty myšlení a jejich jazykovou reprezentací. Objekty lidského myšlení o reálném světě jsou pojmy se svými vzájemnými vztahy. Na jejich základě pak v lidském mozku probíhají určité procesy přepracovávání pojmů spolu s jejich vzájemnými vztahy v jiné pojmy s jim odpovídajícími vzájemnými vztahy. V rámci těchto procesů, nazývaných podle klasiků analýzou, syntézou, indukcí, dedukcí či analogií, se používá jako reprezentační a zároveň komunikační prostředek přirozený jazyk. 113

116 ZNALOSTI Data, informace a znalosti Pojmy jsou objekty, resp. entity, kterých se týká lidské myšlení. Pojmům pak odpovídají jazykové výrazy příslušného přirozeného jazyka. Pojmy představují významy výrazů přirozeného jazyka, jazykové výrazy naproti tomu pojmy reprezentují. Pojmu kniha odpovídá jazykový výraz (slovo) kniha, pojmu barva slovo barva apod. Pojem (objekt) označený jazykovým výrazem se nazývá jeho denotátem. Např. denotátem jazykového výrazu hlavní město České republiky je pojem města Prahy. Toto přiřazování denotátů, tedy odpovídajících objektů, jazykovým výrazům umožňuje komunikaci mezi lidmi. Obrázek znázorňuje vztahy mezi pojmy a jim odpovídajícími jazykovými výrazy. Pojmy a jejich vzájemné vztahy jsou reprezentovány slovy a větami přirozeného jazyka. Naopak jazykovým výrazům přirozeného jazyka odpovídají jejich významy neboli denotáty, kterými jsou pojmy. Je zřejmé, že určitý pojem (denotát) může být reprezentován různými jazykovými výrazy (různých přirozených jazyků), které jsou vzhledem k tomuto pojmu synonymy. Na druhé straně může mít týž jazykový výraz více významů, resp. denotátů (např. zámek, měsíc, matka), v tom případě jde o homonyma. Uvažujte, jaké denotáty mohou být přiřazeny následujícím jazykovým výrazům a ve kterých případech se jedná o homonyma, resp. synonyma. 114

117 ZNALOSTI Data, informace a znalosti a) náš nejoblíbenější politik b) myš c) mouse d) kohoutek e) naše nejprůmyslovější město f) největší město severní Moravy g) koleje h) driver Klasická logika, později matematika a dnes i matematická informatika se vždy na úrovni stupně svého vývoje pokoušela a dodnes pokouší k objektům a pochodům lidského myšlení vytvořit adekvátní model pomocí určitých sobě vlastních prostředků. Pojem model používaný v této souvislosti má obdobný význam, jako když se například hovoří o modelu v architektuře, v průmyslovém designu nebo též o dětské hračce - např. modelu železnice. Model se ve všech uvedených případech vytváří na základě určitého zjednodušení (abstrakce) modelované reality, a to tak, aby v něm z ní bylo vystiženo co nejlépe to podstatné. To, co se při daném pojetí jako podstatné nejeví, model zanedbává. Model jako určitý soubor relevantních objektů je abstraktním rámcem, na základě něhož se realizuje modelování určité skutečnosti. V rámci vhodně zjednodušeného abstraktního modelu lidského myšlení se pak, podobně jako v případě přirozeného jazyka, definuje odpovídající reprezentační a zároveň komunikační prostředek, tj. jazyk. Skutečnost, že se jazyk modelování nevyvinul cestou přirozeného vývoje, jak tomu zřejmě bylo u přirozených jazyků, ale byl zkonstruován podle exaktně zadaných gramatických pravidel, vyjadřujeme tím, že takto zkonstruované jazyky spolu s jim odpovídajícími modely nazýváme formálními. Formální model Exaktně definovaným formálním jazykem lze pak popisovat (s jistým zjednodušením daným rámcem modelu) objekty modelované 115

118 ZNALOSTI Reprezentace znalostí skutečnosti, jejich vzájemné vztahy a způsob kompozice těchto objektů do vyšších celků. Při daném zjednodušení je pak možno do jisté míry zachytit i způsob myšlení o těchto objektech a v rámci tohoto zjednodušení do jisté míry též modelově zkoumat vlastnosti myšlení. Objekty lidského myšlení o reálném světě jsou pojmy se svými vzájemnými vztahy a souvislostmi, zachycující též způsob kompozice do jejich vyšších celků. Jazykové výrazy reprezentují objekty modelovaného světa a vztahy mezi nimi. Objekty modelovaného světa jsou denotáty jazykových výrazů Reprezentace znalostí Problematika umělé inteligence se dnes zpravidla dělí na dvě problémové oblasti : epistemologickou a heuristickou. V epistemologické části jsou znalosti v rámci modelovaného světa reprezentovány takovou formou, aby z nich mohly vyplynout další znalosti, resp. řešení problémů. Heuristická část se pak zabývá mechanismy, kterými se na bázi znalostí řeší rozhoduje, co se v dané situaci má dělat. V epistomologické oblasti umělé inteligence, kterou se zde budeme zabývat, jde o manipulaci se znalostmi. Znalosti vycházejí z informací a ty zase vycházejí z dat. Pojem dat není třeba zpřesňovat, neboť jak je známo, všechny znakové řetězce vstupující do výpočetního procesu lze obecně pokládat za data. Do výpočetního procesu však zřídkakdy vstupují data, která nemají žádný význam, která tedy nejsou nějakým způsobem interpretována. Data, znalosti, informace Interpretace dat je smysluplné přiřazení datům jejich významu (sémantiky). V informatice je pojem informace jedním ze základních pojmů, proto nestačí převzít jeho poněkud vágní vymezení, na něž jsme zvyklí z přirozeného jazyka. Přesněji vystihuje pojem informace následující definic Informaci tvoří data spolu se svou interpretací. Pojem informace je, jak je zřejmé z uvedených definic, neoddělitelný od sémantiky dat, která jsou jejími nositeli. Znalost je informace, která je použitelná a začlenitelná, resp. odvoditelná v souvislosti s jinými informacemi. 116

119 ZNALOSTI Reprezentace znalostí Pro počáteční období rozvoje informatiky bylo charakteristické, v návaznosti na předcházející etapu postupně stále vyspělejších mechanických pomocníků počítání, její zaměření na výpočetní a výpočetně rozhodovací procedury. Počítače totiž v počátcích svého využívání především realizovaly pracné výpočtové postupy, jako jsou např. výpočetní postupy v účetnictví, statistické nebo vědeckotechnické výpočty. Takový druh modelování lidské intelektuální činnosti vychází ze znalostí určitých pracovních postupů, tedy z určitých procedurálních znalostí. K modelování procedurálních znalostí slouží abstraktní modely převážně orientované na výpočetní pracovní postupy. Modelovaná skutečnost je zde převážně světem informací ve formě čísel a číselných nebo jiných znakových kódů, na nichž probíhají výpočetní postupy formulované (v pojmech základních struktur a operací daného modelu) jako algoritmy. Modely této kategorie se proto nazývají modely algoritmické. Jim pak na reprezentační (jazykové) úrovni odpovídají algoritmické (procedurální) jazyky. Význam odpovídající algoritmickému jazyku má procedurální, resp. operační charakter. V souvislosti s algoritmickými jazyky je tedy na místě hovořit o jejich operační sémantice. Deklarativní znalosti o objektech (entitách) spočívají v konstatování jejich stavů, vlastností nebo vzájemných vztahů. Počítačovou reprezentací deklarativních znalostí jsou pak vhodně strukturovaná data. Na nich a s nimi pak lze odvozovat další znalosti i provádět operace související se znalostmi procedurálními. Jazykovým výrazům formálních jazyků, modelujících určitá konstatování o objektech vnímaného světa a jejich vzájemných vztazích, jsou přiřazovány významy jako jejich denotáty - objekty modelovaného světa. Sémantika formálních jazyků, které na rozdíl od jazyků procedurálních (algoritmických) řadíme mezi jazyky neprocedurální, je denotační sémantikou. Data.znakové řetězce Informace.data spolu s jejich významem (databáze) Znalosti.informace vzájemně začlenitelné a odvoditelné (znalostní báze) Procedurální znalosti popisují, jak se realizuje nějaký proces. Deklarativní znalosti konstatují vlastnosti, vztahy a vzájemné souvislosti objektů modelovaného světa. Lidské myšlení vždy vychází z nějaké množiny tvrzení neboli výroků o uvažovaném světě. Výroky, jimiž se zabývá výroková logika, jsou taková tvrzení deklarativního typu, o jejichž pravdivostní hodnotě ( pravdivý / nepravdivý ) má smysl uvažovat. Mezi nimi lze pak rozlišit 117

120 ZNALOSTI Reprezentace znalostí Logika výroky elementární neboli atomické, které již dále nelze rozložit na výroky jednodušší. Množina všech atomických výroků o modelovaném světě tvoří universum diskursu, v jehož rámci se modelování pomocí formálních prostředků výrokové logiky pohybuje. Při modelování je proto potřeba mít na zřeteli nejen prostředek, jímž modelování probíhá a kterým je zde výroková logika, ale též přesně vymezit, jaký svět je předmětem tohoto modelování. Logika, kterou zde uvažujeme, je dvouhodnotová. To znamená, že každému tvrzení, které připadá v úvahu jako výrok, lze přiřadit právě jednu ze dvou možných pravdivostních hodnot pravdivý / nepravdivý, pro něž budou v dalším používány symboly true/false. Je zřejmé, že takto pojatá výroková logika se jako prostředek modelování dopouští prudkého zjednodušení spočívajícího právě v redukci obsahu výroků a tím i universa diskursu pouze na jejich pravdivostní hodnoty. Jedním ze základních požadavků praktického využití výrokové logiky je rozpoznání výroků od ne-výroků a s tím souvisící možnost stanovení jejich pravdivostních hodnot. Např. dotaz K čemu mi bude logika? nebo zvolání Dost už bylo logiky! nejsou větami deklarativního typu, proto nepředstavují výroky a nemá smysl uvažovat o jejich pravdivosti. V případě věty Den po svém narození přednášel studentům logiku. jde o výrok a nikdo nepochybuje o jeho nepravdivosti bez ohledu na to, ke kterému jedinci a které době se vztahuje. Jde-li však o výrok Tráva je zelená., je třeba při posuzování jeho pravdivosti vzít v úvahu čas, resp. stav světa, ke kterému se výrok vztahuje. Není-li rozlišována úroveň jazyková od úrovně metajazykové, představuje Tato věta je nepravdivá. paradoxní tvrzení, jež rovněž nelze považovat za výrok, neboť zde není možné stanovit pravdivostní hodnotu. Logika je oproti jiným disciplínám teoretické informatiky vědou velmi starou a její kořeny lze najít již ve starověku. Tehdy byla spjata spíše s filozofickými otázkami než s rodící se matematikou. Přesto otázky, které byly v té době aktuální, jsou v mnohém stejné jako je uplatnění logiky v informatice. Na logiku je možné se dívat v kontextu mnoha věd a výsledný pohled může být velmi odlišný. Touto vědou se zabývají filozofové, právníci, matematici i informatici a jejich zájem a cíl bývá velmi odlišný. Čtenář může sám posoudit, jak odlišné mohou tyto pohledy být - stačí si pročíst například filozoficky a informaticky orientovanou knihu o logice. Přesto lze najít společnou snahu o modelování lidského úsudku. I když matematik logiku spíše používá k formulaci a dokazování vlastností matematických objektů, pro informatika je logika nejen nástrojem, ale i plnoprávnou disciplínou zkoumanou v rámci teoretické informatiky. Přístupy při modelování úsudku založené na logice patří do rodiny symbolických přístupů, existují pak také tzv. konekcionistické přístupy (např. umělé neuronové sítě), ale těmito přístupy se nebudeme zabývat (viz 8). Tyto přístupy se často inspirují biologickými procesy a snaží se je modelovat matematicky. Často se objevují také velmi úspěšné kombinace obou přístupů. 118

121 ZNALOSTI Reprezentace znalostí Díky své bohaté historii je samozřejmě logika velmi širokým oborem a v tomto článku bychom se chtěli zabývat několika důležitými otázkami z informatického pohledu. 1. Reprezentace znalostí klasickou logikou - výroková a predikátová logika. 2. Automatizovaná dedukce - formální systémy pro dokazování vět. 3. Vícehodnotová logika - možnosti modelování neurčitosti pomocí fuzzy logiky. Klasickou logikou myslíme formalismus, který je v různých podobách znám již stovky let. Lidé jsou schopni komunikovat a formulovat své myšlenky v přirozeném jazyce a dále je zpracovávat a dedukovat závěry. Právě přirozený jazyk je však poměrně složitý pro stroje, které by měly simulovat tento způsob reprezentace znalostí. Proto logika nabízí různé úrovně zjednodušení formulace znalostí do co nejmenšího množství exaktně definovaných symbolů. Druhou stránkou je motivace, abychom z těchto statických znalostí reprezentovaných symboly dokázali také odvozovat závěry. K tomu slouží různé symbolické metody, z nichž některé si popíšeme v tomto článku. Proveďme analogii s právními předpisy. Samotné zapsané zákony jsou sice velice užitečné, ale k čemu by nám byly, pokud by nebylo možné je interpretovat a zjišťovat, zda se například některý subjekt nedopustil porušení zákona. To můžeme provést jedině tak, že dedukujeme závěr (zda někdo jedná protizákonně nebo ne) z předpokladů (fakta popisující situaci a dané zákony). Nejjednodušším formalismem vhodným pro reprezentaci znalostí je výroková logika. U každé logiky si musíme uvědomit, že má svou syntaxi a sémantiku. Zjednodušeně můžeme říci, že syntaxe je definicí symbolů a jejich používání (bez ohledu na význam těchto symbolů). Sémantika je pak chováním těchto symbolů s ohledem na smysl daných znalostí (např. pravdivost daných tvrzení). Právě možnost oddělit syntaxi a sémantiku,po formulaci a dokázání potřebných vztahů mezi nimi, dává logice význam v informatice a pro automatizaci úsudku. Syntaxe výrokové logiky pracuje se symboly zastupujícími elementární výroky (např. a,b,c,...), logické konstanty (pravda a nepravda - T, ) a dále je umožňuje spojovat do složitějších formulí pomocí symbolů logických spojek a pomocných symbolů (např. konjunkce, implikace). Sémantika pak popisuje smysl těchto použitých symbol a pojmy, které souvisejí s popisem tohoto smyslu (tzv. interpretací formulí - v případě klasické logiky to může být buď formule pravdivá nebo nepravdivá). Jednotlivým výrokům můžeme přiřadit logickou hodnotu podle toho, jak se tyto syntaktické elementy chovají v našem modelovaném případě z reality, příp. to můžeme udělat také zcela nesmyslně. V obou případech pak můžeme uvažovat jaká bude interpretace celých složených formulí. 119

122 ZNALOSTI Reprezentace znalostí Zaleží to na použitých unárních a binárních spojkách. Čtenář se zřejmě setkal se spojkami jako je negace (opak ve smyslu pravdivosti), konjunkce (současná platnost výroků), disjunkce (platnost alespoň jednoho z výroků), implikace (podmínka), ekvivalence (identická pravdivost výroků). Binárních spojek existuje samozřejmě více - v elektrotechnice se kupříkladu používají spojky jako je negace konjunkce (nand). Formule tedy v tomto případě platí (je interpretována jako pravdivá), pokud neplatí dva výroky současně (jinak řečeno pokud alespoň jeden neplatí). Druhým případem, který se zase vyskytuje často v reálných situacích je tzv. vylučovací nebo. V přirozené řeči často používáme výrok typu "buď... anebo...", který spíše odpovídá situaci, že musí platit alespoň jeden z výroků, ale zároveň nesmí platit oba současně. Nejde tedy o disjunkci, ale spojku, kterou někdy také označujeme jako negaci ekvivalence. Interpretaci logických spojek můžeme přehledně realizovat pomocí tabulky, ve které jsou vypsány všechny možné kombinace ohodnocení pravdivosti elementárních výroků. Interpretaci pravda označíme 1 a nepravda 0. Podívejme se na příklad identického chování negace ekvivalence a vylučovacího nebo. výrok A výrok B vylučovací nebo ekvivalence negace ekvivalence V klasické logice existuje pouze konečný (a navíc velmi omezený) počet spojek. Stačí se zamyslet nad všemi možnostmi, které mohou nastat a dojdeme k tomu, že pro 2 výroky ohodnocené 4 možnostmi pravda/nepravda existuje 2 4 možností dvouhodnotové interpretace tedy 16 možných spojek. Sémantika jazyka výrokové logiky umožňuje na základě interpretace formule definovat další důležité pojmy. Pokusme se nyní na příkladu namodelovat pomocí výrokové logiky jednoduchou situaci. Příklad 1: K soudu byli předvedeni tři podezřelí z loupeže - A, B a C. Při výslechu se zjistily tyto skutečnosti: 1. Do případu nebyl zapleten nikdo jiný než A, B a C. 2. A pracuje vždycky alespoň s jedním společníkem. 3. C je nevinen. Nejprve si musíme stanovit, co jsou elementární výroky. Jelikož se 120

123 ZNALOSTI Reprezentace znalostí vyjadřujeme k vině a nevině podezřelých, bude rozumné pomocí výroků A, B a C symbolizovat, že daný podezřelý je vinen nebo nevinen. Pak můžeme zapsat větu 1. jako složený výrok vyjadřující pomocí disjunkce, že alespoň jeden z podezřelých je vinen. Druhá věta může být popsána formulí pomocí implikace (podmínky), která říká, že je-li vinen A, pak musí být vinen také alespoň jeden z podezřelých B, C. Výsledné formule výrokové logiky jsou tedy následující: 1. A B C, 2. A (B C), 3. C Samotná reprezentace znalostí je pouze polovičním úspěchem při pokusu o modelování úsudku. Dalším nevyhnutelným krokem je možnost ověřovat, zda nějaké tvrzení vyplývá z daných předpokladů. K tomu si nejprve musíme definovat další pojmy sémantiky. Jde o tzv. splnitelnost (nesplnitelnost) a platnost formulí. Splnitelná formule je laicky řečeno taková, která má vůbec smysl pro určité ohodnocení výroků. Tedy taková formule musí alespoň pro nějakou kombinaci ohodnocení výroků pomocí pravda/nepravda dávat interpretaci pravda. Jinak je taková formule nesplnitelná resp. v logice se takové formuli říká kontradikce. Pokud bychom se obrátili zpátky na interpretační tabulku, pak by tabulka ve sloupci interpretace splnitelné formule musela mít alespoň v jednom řádku symbol 1. Některé ze splnitelných formulí pak mohou být ještě na vyšším sémantickém stupni a mohou být pravdivé pro všechna možná ohodnocení. Takovým formulím se pak říká platná formule resp. v logice je zažitý pojem tautologie. Podívejme se na příklad. Příklad 2: Mějme platné tvrzení: "Pokud prší, beru si deštník." Jestliže namodelujeme tvrzení, že "prší" pomocí P a "beru si deštník" pomocí D, pak výsledná formule je následující: P D Uvažujme nyní o výroku: "Pokud si neberu deštník, neprší." Je takové tvrzení ekvivalentní prvnímu? Platí-li první tvrzení, mohu ho brát jako postulát, kterému se každý musí podřídit. Zdá se tedy logické, že když si deštník neberu a dodržuji přitom postulát, pak nemůže pršet. Mnohem formálněji bychom tento vztah mohli dokázat právě pomocí pojmu tautologie. Druhá forma tvrzení se dá zapsat jako D P. Pak využijeme spojky ekvivalence, která interpretuje jako pravdivé dvě formule se stejnou pravdivostní hodnotou a tedy vlastně popisuje ekvivalentní chování dvou formulí z hlediska pravdivosti. Sestrojíme tedy takovou formuli a prokážeme, že je to tautologie pomocí interpretační tabulky. Implikace je nepravdivá pouze pro případ, kdy první formule je 121

124 ZNALOSTI Reprezentace znalostí pravdivá a druhá nepravdivá - to je v souladu s naším chápáním podmínky. Pokud je splněn předpoklad podmínky, pak závěr musí platit - jinak by nebyla formule pravdivá. V případech kdy podmínka splněna není, může i nemusí závěr platit a v obou případech je to v pořádku. Jelikož sestrojená ekvivalence obou formulí je pravdivá ve všech interpretacích, můžeme konstatovat, že jde opravdu o tautologii. P D P D D P D P (P D) ( D P) Úsudek - Dedukce Nyní se již konečně dostáváme ke klíčovému pojmu tzv. logického důsledku množiny předpokladů. Máme-li množinu předpokladů a závěr, můžeme se ptát, zda tento závěr je logickým důsledkem (vyplývá z) předpokladů. To platí v případě, že pro každé ohodnocení výroků s interpretací pravda pro všechny formule z množiny předpokladů je pravdivá také formule reprezentující závěr. Jde tedy o chování podobné implikaci. Závěr nebude logicky vyplývat z předpokladů, jen pokud se najde takové ohodnocení výroků, kdy všechny předpoklady jsou pravdivé a závěr není pravdivý. Tato činnost, kdy odvozujeme závěry, se nazývá dedukce. Důležitým faktorem pak ještě zůstává tzv. konsistence předpokladů. Jde o to, že formulovaná vlastnost vyplývání degraduje na triviální situaci, pokud předpoklady nemají žádné ohodnocení, ve kterém by byly současně pravdivé. Takovéto množiny předpokladů jsou sporné (nekonsistentní) a z hlediska definice důsledku, je důsledkem této množiny jakákoliv formule. To samozřejmě v realitě není zcela odpovídající. Jednalo by se například o situaci, kdy určitý balík zákonů obsahuje dvě navzájem protichůdná nařízení a podle této množiny by pak jakékoliv jednání bylo v souladu s tímto zákonem. Příklad 3: Pokusme se nyní jednoduše pomocí tabulky prověřit, zda z množiny předpokladů z příkladu 1. vyplývá vina či nevina některého z podezřelých. Můžeme vyloučit podezřelého C, protože jeho nevina je přímo obsažena v předpokladech a tudíž musí vyplývat z množiny předpokladů a zároveň nemůže vyplývat jeho vina, pokud není množina předpokladů sporná. Postačí tedy sestrojit tabulku pro jednotlivé předpoklady a pro formule A, A,B, B ověříme, zda nesplňují vlastnost důsledku. V tabulce se vyskytuje také sloupec s hvězdičkami, který zvýrazňuje ohodnocení, kde jsou všechny předpoklady platné a tedy v těchto řádcích musíme kontrolovat interpretaci potenciálního důsledku. U závěrů pak vyznačujeme pomocí hvězdičky resp. lomítkem, zda skutečně splňuje resp. 122

125 ZNALOSTI Reprezentace znalostí nesplňuje formule podmínku důsledku. Pokud ji splňují všechna zvýrazněná ohodnocení jde skutečně o vyvoditelný logický důsledek. A B C A B C A (B C) C A A B B * 0 / 1 * 1 * 0 / * 1 * 0 / 1 * 0 / Z tabulky je patrné, že jediný logický důsledek z prověřovaných závěrů je, že B je vinen. O podezřelém A nemůžeme konstatovat na základě předložených předpokladů ani jeho vinu ani nevinu. Vezmeme-li v úvahu možnost, že A je vinen, pak by musel být vinen i B. Pokud A vinen není, zároveň C vinen není dle předpokladu a někdo vinen být musí, pak padá vina na B. B je tedy vinen v každém případě a o A nás ale nic neopravňuje to tvrdit. Na uvedeném příkladu dedukce může ilustrovat hned několik klíčových otázek a problémů, které s logikou a naším článkem souvisí. 1. Pomocí přesně definovaných postupů jsme schopni dedukovat důsledky zcela automatizovaně a to zvládnou nejen lidé, ale zejména je to vhodné pro stroje (počítače). Už námi řešený příklad nemusí být pro každého člověka jednoduchý a složitost dedukce roste jednak s počtem výroků a jednak s počtem předpokladů. Už z těchto důvodů nejsou prostředky logiky zbytečné. 2. Problém automatizované dedukce lze řešit různě efektivní metodami. V tomto článku jsme se setkali prozatím jen s tabulkovou metodou, která je sice velmi triviální a dokonce si asi čtenář dokáže představit, že by takovýto algoritmus dokázal naprogramovat, nicméně její jednoduchost je také její slabinou. Už na příkladu 2 a 3 můžeme vidět, že rozsah tabulky roste exponenciálně vzhledem k počtu elementárních výroků. S ohledem na poznatky teorie vyčíslitelnosti a složitosti 3 víme, že exponenciální časová a prostorová složitost je pro klasické deterministické počítače prakticky nepoužitelná. Už pro 10 výrokových proměnných je možností ohodnocení přes 1000, pro 20 přes milion atd... Proto bylo a stále je vyvíjeno mnoho různorodých metod a celých formálních systémů, které jsou schopny automatizovat dedukci mnohem efektivněji. 3. Klasická výroková logika je jednou z nejjednodušších logik, což má své výhody i nevýhody. Výhodou je její transparentnost, pochopitelnost a především vlastnost rozhodnutelnosti 3. Rozhodnutelnost ve smyslu schopnosti o dané formuli říci jednoznačně, zda je splnitelná nebo ne na základě algoritmu, je důležitou vlastností pro automatizaci dedukce. 123

126 ZNALOSTI Reprezentace znalostí Složitější logiky tuto vlastnost mít nemusejí. Nevýhodou výrokové logiky je naopak neschopnost rozlišit objekty a vztahy mezi nimi, nemožnost kvantifikovat vztahy, pojmout proměnlivost pravdivosti v čase a podobně. V neposlední řadě je u klasických logik nevýhodou jejich "černobílé vidění světa". Myslíme tím neschopnost zachytit jinou než absolutní pravdivost nebo nepravdivost. V reálném životě je mnoho situací, které nelze popsat jednoznačně. Například to zda je člověk spokojený, lze stěží popsat jen výrokem pravdivým nebo nepravdivým. Člověk může být spokojený v určitém stupni spokojenosti. Proto se v tomto článku chceme dotknout i tématu vícehodnotových logik, které jsou nyní velmi intenzivně zkoumány. Ještě než se budeme blíže zabývat otázkou automatizace dedukce, chtěli bychom také stručně popsat logiku predikátovou. Predikátová logika je v podstatě zobecněním logiky výrokové a dává ji schopnost pracovat nejen s elementárními výroky, ale také rozlišit objekty a jejich vztahy. Na syntaktické úrovni se zavádí pojem termu a formule. Termem může být buď symbol zastupující objekt (konstanta) nebo funkci (funktor) nebo proměnná, za kterou lze dosadit libovolný term. Klíčovým pojmem je predikát, který jako argumenty může mít termy a tím vlastně umožňuje vytvářet vazby mezi termy. Například bychom chtěli prostřednictvím predikátu zachytit vazby mezi rodiči a jejich dětmi. Zavedli bychom predikát s názvem dítě, který má dva argumenty - dítě a jeho rodiče. Samozřejmě pracujeme se symboly, takže skutečnými argumenty jsou pouze konstanty reprezentující objekty - konkrétní děti, rodiče atd. Konstanty jsou nejjednoduššími termy. Termy tedy nevyjadřují narozdíl od predikátů vazby, ale zastupují symbolicky objekty modelované reality. Takovými konstantami by mohla být například jména dětí a jejich rodičů. Tedy bychom mohli sestavit velmi jednoduchou formuli dítě(johana, lucie), která by měla pomocí predikátu vyjadřovat znalost, že mezi symbolem reprezentujícím objekty johana a lucie je vztah dítěte a rodiče. Termy mohou být však složitější a to funktory a proměnné. Funktory jsou symbolickými ekvivalenty pro nám dobře známé funkce. Funkce může mít několik argumentů (opět termů) a její interpretací je pak požadovaná hodnota. Například goniometrická funkce cos by pro argument - symbol 0 (intepretovaný číslem 0) - vracela číslo 1 (cos(0)=1). Proměnné pak jsou symbolickým prvkem, do kterých mohou být dosazeny jiné termy. Jelikož interpretace termů a predikátů zaleží (narozdíl od logických spojek) na uživateli predikátové logiky, mohl by si sémantiku uživatel uzpůsobit dle svých požadavků. Mohl by tedy vytvořit absurdní intepretace, kde by například funkce s názvem cos byla interpretována pro argument - číslo 0 - třeba číslem 333 nebo zcela nečíselným objektem. Chceme tím říci, že predikátová logika je velmi flexibilní a je potřeba mít stále na paměti rozdíl mezi syntaxí a sémantikou. Symboly mají své interpretace (sémantiku), kterou v případě logiky predikátové značně ovlivňuje ten, kdo ji používá. A i pod zcela totožnými symboly se tak může skrývat (nekonečně) mnoho různých významů. 124

127 ZNALOSTI Reprezentace znalostí Predikát může ze sémantického hlediska nabývat opět hodnotu pravda nebo nepravda. Jeho sémantickým operátorem je relace. Od úrovně predikátů výše se pak formule chovají jako ve výrokové logice a můžeme je tedy spojovat pomocí logických spojek. Jediným rozdílem je, že můžeme formule kvantifikovat a to buď univerzálním ( x) resp. existenčním ( x) kvantifikátorem. Ty pro zvolenou proměnnou pak zaručují, že kvantifikovaná formule bude pravdivá pro všechny resp. alespoň jeden objekt dosaditelný za proměnnou x. Příklad 4: Chtěli bychom pomocí predikátové logiky namodelovat situaci, kdy libovolné dítě je šťastné, pokud má otce i matku. Zavedli bychom si predikátové symboly pro vlastnosti objektů - stastny, muz a zena a dále pro vztah býti dítětem někoho - dite. Pomocí formule 1. pak můžeme vyjádřit, že pro každé dítě, ke kterému existuje objekt, jenž je ženou a zároveň dítě je dítětem tohoto objektu a zároveň platí totéž pro objekt typu muž, pak platí, že toto dítě je šťastné. Mnohem jednodušší je pak vyjádřit, které objekty jsou dítě, žena atd.. (např. johana je dítě lucie - formule ). 1. X[ Y[dite(X, Y) zena(y)] Y[dite(X, Y) muz(y)] stastny(x)]. 2. dite(johana, hashim). 3. dite(johana, lucie). 4. muz(hashim). 5. zena(lucie). Můžeme pozorovat, že predikátová logika má mnohem vyšší expresivitu (vyjadřovací schopnost) než logika výroková. Zásadní je především možnost modelovat vazby mezi objekty pomocí predikátů. Silným prvkem je rovněž schopnost modelovat existenci. Formule z příkladu mohou připomínat řádky relační databáze. Relační databáze jsou založeny na prezentaci znalostí v relacích, které modelují rovněž vztahy mezi objekty. Skutečně bychom našli jistou analogii mezi tabulkou databáze (např. tabulka dětí) a jejich atributy (kdo je dítětem koho). Zkuste si představit databázovou tabulku studentů s atributy jméno, příjmení, bydliště, ročník. Taková tabulka relační databáze se dá vyjádřit predikátem student. Databáze by pak obsahovala třeba následující řádky (a jejich ekvivalentí vyjádření v predikátové logice): jan, novák, ostrava, 3 formule: student(jan, novák, ostrava, 3) jan, veselý, ostrava, 4 formule: student(jan, veselý, ostrava, 4) jiří, novák, ostrava, 1 formule: student(jiří, novák, ostrava, 1)... petr, novotný, praha, 2 formule: student(petr, novotný, praha, 2) Klasické relační databáze jsou ale velmi úzkou podmnožinou způsobu reprezentace pomocí predikátové logiky. V databázích nemáme možnost používat proměnné a zejména logické spojky. Ty dokáží ušetřit mnoho 125

128 ZNALOSTI Modelování úsudku prostoru - co by se muselo v databázi vyjádřit explicitně (třeba tisíci relacemi), lze elegantně zapsat jedním pravidlem a aplikovat dedukci. Samozřejmě, že již dávno začaly snahy o přibližování databázové technologie a logiky a to v tzv. deduktivních databázích (např. systém Datalog). Jde o inteligentní databáze, které kromě klasického explicitního vyjmenování vztahů umožňují také používání omezených logických prostředků a dedukce. Jak už to ale bývá téměř všude v reálném životě, za výhody se platí určitými nevýhodami. Zatímco u výrokové logiky lze vždy rozhodnout (různě efektivně) o splnitelnosti dané formule, v predikátové logice je tento problém pouze částečně rozhodnutelný. Hlavním viníkem je potenciální možnost pracovat s nekonečnými doménami objektů (např. množina přirozených čísel - lze dosazovat za proměnné jakékoliv číslo). Potenciálně existuje možnost vytvořit také o něco složitější interpretační tabulku jako u logiky výrokové, ovšem takováto tabulka může být nekonečná. V případě univerzální kvantifikace formule musí tato formule platit pro všechny možné dosaditelné konstanty. Těch ale může být ve vztahu k nekonečným doménám také nekonečně mnoho a tudíž bych dostali tabulku s nekonečným počtem řádků. Proto existují snahy predikátové logice "něco vzít", tj. odebrat jí některé vyjadřovací schopnosti při zachování některých výhod tak, aby se stala rozhodnutelná a zároveň existovaly efektivní algoritmy pro dedukci Modelování úsudku Automatizace dedukce vyžaduje najít efektivní algoritmy pro generování důsledku nebo pro prověřování konsistence množin formulí. V praktických situací jde o automatizované zjišťování, zda z logických axiómů (vybrané tautologie) a speciálních axiomů (formalizované předpoklady) vyplývá závěr. V zásadě existují metody sémantické a formální. Tabulky z předchozí kapitoly jsou typickou sémantickou metodou. U sémantických metod musíme provádět interpretaci formulí, což je s ohledem na již zmiňované obrovské množství ohodnocení elementárních výroků velmi neefektivní přístup. I když některé sémantické metody vylepšují tuto nevýhodu, v zásadě je sémantický přístup pro automatizaci zcela nevhodný. Druhý formální (syntaktický) přístup se snaží se zcela oprostit od interpretace (smyslu) a používat prověřená pravidla pro práci se symboly (formulemi) bez ohledu na to, co znamenají. To je v principu velice efektivní, protože časová složitost pak nezávisí na možných interpretacích, ale na velikosti předpokladů jako symbolických formulí. Tyto metody vyžadují tedy jisté "know-how", je složitější je pochopit, ale v konečném důsledku jsou zásadně lepší. Lze je rovněž naprogramovat a pak již mohou sloužit v aplikacích na ïnteligentní" usuzování. Právě pro 126

129 ZNALOSTI Modelování úsudku složitost těchto metod (jsou dnes zcela v režii vysokoškolské výuky v zaměření pro informatiky) je nebudeme všechny ani naznačovat. Formální metody dedukce lze dále v principu provádět dvěma způsoby - přímo a nepřímo. Zjednodušeně řečeno, při přímé metodě z předpokladů generujeme určitý důsledek pomocí odvozovacích (nebo jiných) pravidel. Při tomto způsobu tedy vždy hledáme potenciálně jiný důsledek podle toho, který závěr chceme dokázat. To v sobě samozřejmě skrývá jednu nevýhodu, jde především o možnost vygenerovat obrovské množství (potenciálně také nekonečné) různých důsledků a ten náš konkrétní se skrývá někde mezi nimi. To vede k neefektivitě a zejména se těžko hledají různé pomocné postupy, jak dedukci urychlit. Proto se používají spíše postupy nepřímé. Jsou podobné principu známého nepřímého důkazu. K předpokladům přidáme náš zkoumaný závěr, ovšem opačný (tedy se spojkou negace). Jelikož závěr vyplývá pokud je jeho interpretace pravda ve všech případech, kdy jsou pravdivé předpoklady, pak při opačném (negovaném) závěru taková množina nemůže být splnitelná. Při nepřímé metodě tedy s negovaným závěrem chceme dokázat nesplnitelnost. Tím se vyhneme základnímu problému přímé metody, protože náš cíl při dokazování je vždy stejný. Je jím prokázání nesplnitelnosti bez ohledu na dokazovaný závěr. To činí dedukci efektivnější. I přestože je stále obrovské množství možností, jak můžeme pomocí pravidel nakládat s předpoklady, můžeme již najít obecné postupy, jak urychlit (v určitých případech) proces hledání důkazu. Například v nepřímé rezoluční metodě (kterou si krátce vysvětlíme níže) jde o to, najít prázdnou formuli. Dá se tedy použít heuristika (metoda, která nefunguje zcela dokonale, ale v mnoha případech urychluje řešení), že je výhodnější pro následující krok hledání použít formule s co nejmenším počtem unikátních atomů (atomem se rozumí ve výrokové logice elementární výrok bez spojek). To samozřejmě není vždy pravda, ale intuitivně to je docela rozumné, pokud chceme dospět k formuli prázdné. V tomto článku s omezeným rozsahem bychom se ještě chtěli zmínit o dvou formálních metodách. První trochu méně známá, ale i přesto velmi účinná je metoda tablová. Je založena na rozkladu formule ve stromu podle logických spojek a hledání větví, které obsahují navzájem negativní atomy (stejný atom s negací a bez negace). To ji činí velice účinnou, protože její časová náročnost je závislá jen na složitosti formule (počtu spojek). Bohužel v predikátové logice musí být obohacena o některé kroky, které její využití v praxi poněkud snižují. Druhou mnohem známější a široce používanou metodou je takzvaný rezoluční princip (rezoluce) resp. metody odvozené od něj. Myšlenku rezolučního principu formuloval v roce 1965 A. Robinson a od té doby byla velmi rozvinuta a zejména aplikována v různých systémech pro automatizované usuzování. I když existuje samozřejmě i její varianta pro logiku predikátovou, omezíme se zde pro jednoduchost pouze na logiku výrokovou. V klasickém pojetí rezoluce funguje pouze na formulích převedených do formy tzv. klauzulí (existují i zobecnění pro libovolné formule, ale zatím nejsou používány ani 127

130 ZNALOSTI Modelování úsudku příliš prozkoumány). Klauzule je taková formule, kde se vyskytuje pouze binární spojka disjunkce, která spojuje jednotlivé atomy s negací nebo bez negace. Každou formuli lze pomocí logických pravidel (ekvivalencí - viz např. příklad 2) převést na ekvivalentní množinu klauzulí (může jich být i velmi mnoho). Rezoluční pravidlo pak umožňuje generovat ze dvou klauzulí obsahujících stejný atom (symbol elementárního výroku), který je v jednom případě s negací a v druhém bez negace, novou klauzuli spojenou disjunkcí obou výchozích klauzulí a zároveň vypustíme onen pár atomů, na kterých jsme prováděli rezoluci. Schématicky to lze znázornit následovně (atomy a jejich negace lze v klauzuli libovolně přesunovat bez změny interpretace dané formule). Rezoluční pravidlo C 1 x C 1 C 2 C 2 x (1) C 1 a C 2 jsou zbývající části klauzulí a x je atom, na kterém rezoluci provádíme. Máme-li pravidlo, jsme schopni z výchozích předpokladů (speciálních axiomů) a logických axiomů pomocí tohoto pravidla konstruovat sekvenci formulí, které říkáme důkaz. U každé syntaktické metody nebo formálního systému je důležité mít ověřeny dvě vlastnosti. Jde o to, aby metoda nebo systém, který obchází problematickou sémantiku tím, že pracuje pouze ßlepě" se symboly bez ohledu na jejich interpretaci, byl s touto sémantikou v souladu. První vlastnost, které se říká korektnost systému, zaručuje, že používaná pravidla generují pouze logické důsledky axiomů. Kdyby tomu tak nebylo, systém by z nekorektních pravidel generoval s předpoklady zcela nesouvisející formule (nesmyslné). Druhou vlastností je tzv. úplnost systému. Ta zaručuje, abychom pouze s danou množinou pravidel a axiomů byli schopni vygenerovat veškeré možné logické důsledky. Kdyby tomu tak nebylo, měli bychom sice korektní systém, který však neumí některé důsledky generovat/ověřovat, což je jako univerzální algoritmus opět nefunkční. Pokud je systém korektní a úplný, pak se chová zcela ekvivalentně sémantice a přesto ji nijak během dedukce nemusíme uvažovat. Nyní rezoluci aplikujeme na již sémanticky řešený soudní případ. Příklad 5: 128

131 ZNALOSTI Modelování úsudku Nejprve je nutné formule 1. A B C, 2. A (B C), 3. C převést do klauzulí. Formule 1. a 3. jsou klauzulemi bez převodu. Formule 2. vyžaduje převod. Využít můžeme pravidla pro přepis implikace na disjunkci. Toto pravidlo lze schématicky zapsat jako A B A B (čtenář si může lehce ověřit pomocí tabulky, že jde opravdu o formule s totožnou interpretací). Tímto pravidlem pak formuli 2. převedeme na formuli (disjunkce je navíc komutativní a asociativní): 2. A B C. Nyní již můžeme buď přímo nebo nepřímo ověřovat závěry. Nejprve se pokusíme pomocí rezolučního pravdila (rezoluce) přímo vygenerovat, že B je vinen (B). Navíc přitom použijeme pomocná pravidla (například vyskytuje-li v klauzuli atom vícenásobně, je klauzule s jedním výskytem ekvivalentní; tyto kroky označíme pomocí ). Dalším platným pravidlem je, že formule F je ekvivalentní s F. Toto využijeme v případě, že jedna z premis obsahuje pouze jeden atom a tím pádem je po rezoluci ekvivaletní s. 1. A B C (axiom), 2. A B C (axiom), 3. C (axiom), 4. (rezoluce na A v 1. a 2.): (B C) (B C) B C, 5. (rezoluce na C v 4. a 3. - z formule 3. nezbylo nic): B Tím jsme provedli důkaz toho, že B je vinen (jelikož systém založený na rezoluci je korektní a úplný). Nyní se stejný závěr pokusíme dokázat nepřímo. Přitom přidáme k předpokladům negaci závěru a budeme se snažit prokázat nesplnitelnost (to znamená vygenerovat prázdnou klauzuli, která je nesplnitelná). 1. A B C (axiom), 2. A B C (axiom), 3. C (axiom), 4. B (negace závěru), 5. (rezoluce na B v 4. a 2. - z formule 4. nezbylo nic): A C, 6. (rezoluce na B v 4. a 1. - z formule 4. nezbylo nic): A C, 7. (rezoluce na A v 5. a 6.): C C C, 8. (rezoluce na C v 7. a 3. - z formule 7. ani 3. nezbylo nic): Jelikož jsme dospěli k prázdné formuli, prokázali jsme nesplnitelnost množiny formulí , čímž je také prokázáno nepřímo, že B je logickým důsledkem množiny formulí Nepřímý důkaz v předchozím příkladě jsme samozřejmě mohli realizovat různými způsoby. Univerzálním přístupem je konstrukce nepřímého důkazu pomocí přímého přidáním jediného kroku, kdy provedeme rezoluci na vygenerovaný přímý důsledek a jeho negaci (pokud jde jen o atom). Na tom je vidět, že zřejmě existuje vždy mnoho způsobů, jak důkaz provést. Z 129

132 ZNALOSTI Modelování úsudku hlediska časové složitosti jde principiálně o úlohu s exponenciální složitostí, o kterých jsme se již zmínili v předchozím článku v MFI. Nicméně existují přístupy, jak důkaz urychlovat a těm se říká rezoluční strategie. Některé pomáhají málo, ale jsou v principu úplné (tedy zachovávají úplnost systému) a některé jsou velmi efektivní za cenu neúplnosti (ale ve většině praktických úloh to nevadí). V některých formálních systémech je rezoluce nazývána jinak, resp. je její obecná myšlenka skryta v jiné symbolice. Například se můžete setkat s tzv. klauzulární logikou, kde se rezoluční pravidlo skrývá v tzv. pravidle řezu. Řez je výstižným pojmenováním, neboť jsme viděli, že rezoluce vlastně "vyřezává" atomy z původních formulí. Logické programování V praxi se rezoluční metoda uplatňuje především v logickém programování. Logické programování není tak rozšířeno jako procedurální programování (např. algoritmizace v jazyce Pascal). Při procedurálním přístupu programátor musí vymyslet způsob, jak dosáhnout řešení cíle a to pomocí řízení výpočtu (musí správně použít proměnné, přiřazování, podmínky, cykly atd.). Logické programování vychází z myšlenky automatizace dedukce. Programátor nedefinuje postup řešení, ale pouze zadává formule (pravidla a fakta), která specifikují "logiku" řešení úlohy. Na takto zapsaný program se pak může dotazovat, podobně jako při prověřování závěrů dedukce a systém sám odpoví na dotaz. Způsob řešení je univerzální a programátor se o něj nemusí starat. Jako jednoduchý příklad může sloužit výpočet faktoriálů. V procedurálním programování musí programátor vytvořit řízený výpočet, tj. musí naprogramovat cyklus nebo rekurzivní proceduru. V logickém programování stačí naprogramovat dvě pravidla (resp. jedno pravidlo a jeden fakt). Pravidlo udává hodnotu faktoriálu pro argument předchozího přirozeného čísla pomocí vazby na term s proměnnou (v logickém programování se nemá používat klasické přiřazování, měly by se používat výlučně prostředky logiky). Fakt udává hodnotu faktoriálu pro argument 0. V praxi by používání pouze logických prostředků způsobovalo neefektivní řešení, proto implementace logického programování často umožňují použití také některých omezených procedurálních prvků (např. řez). Asi nejznámějším prostředkem logického programování je jazyk PROLOG (PROgramming in LOGic). Vzhledem k omezenému rozsahu tohoto článku jej nebudeme rozebírat, ale čtenář má možnost využít elektronický učební text s mnohými příklady 2. Pro vlastní pokusy doporučujeme získat z Internetu některou z freewarových implementací. Logické programování je výhodné především u úloh, kdy hledáme řešení v rozsáhlém stavovém prostoru a v úlohách typických v umělé inteligenci. Formální metody dedukce lze dále v principu provádět dvěma způsoby - přímo a nepřímo. Zjednodušeně řečeno, při přímé metodě z předpokladů generujeme určitý důsledek pomocí odvozovacích (nebo jiných) pravidel. Při tomto způsobu tedy vždy hledáme potenciálně jiný důsledek podle toho, který závěr chceme dokázat. To v sobě samozřejmě skrývá jednu nevýhodu, jde především o možnost vygenerovat obrovské množství 130

133 ZNALOSTI Modelování úsudku (potenciálně také nekonečné) různých důsledků a ten náš konkrétní se skrývá někde mezi nimi. To vede k neefektivitě a zejména se těžko hledají různé pomocné postupy, jak dedukci urychlit. Proto se používají spíše postupy nepřímé. Jsou podobné principu známého nepřímého důkazu. K předpokladům přidáme náš zkoumaný závěr, ovšem opačný (tedy se spojkou negace). Jelikož závěr vyplývá pokud je jeho interpretace pravda ve všech případech, kdy jsou pravdivé předpoklady, pak při opačném (negovaném) závěru taková množina nemůže být splnitelná. Při nepřímé metodě tedy s negovaným závěrem chceme dokázat nesplnitelnost. Tím se vyhneme základnímu problému přímé metody, protože náš cíl při dokazování je vždy stejný. Je jím prokázání nesplnitelnosti bez ohledu na dokazovaný závěr. To činí dedukci efektivnější. I přestože je stále obrovské množství možností, jak můžeme pomocí pravidel nakládat s předpoklady, můžeme již najít obecné postupy, jak urychlit (v určitých případech) proces hledání důkazu. Například v nepřímé rezoluční metodě (kterou si krátce vysvětlíme níže) jde o to, najít prázdnou formuli. Dá se tedy použít heuristika (metoda, která nefunguje zcela dokonale, ale v mnoha případech urychluje řešení), že je výhodnější pro následující krok hledání použít formule s co nejmenším počtem unikátních atomů (atomem se rozumí ve výrokové logice elementární výrok bez spojek). To samozřejmě není vždy pravda, ale intuitivně to je docela rozumné, pokud chceme dospět k formuli prázdné. V tomto článku s omezeným rozsahem bychom se ještě chtěli zmínit o dvou formálních metodách. První trochu méně známá, ale i přesto velmi účinná je metoda tablová. Je založena na rozkladu formule ve stromu podle logických spojek a hledání větví, které obsahují navzájem negativní atomy (stejný atom s negací a bez negace). To ji činí velice účinnou, protože její časová náročnost je závislá jen na složitosti formule (počtu spojek). Bohužel v predikátové logice musí být obohacena o některé kroky, které její využití v praxi poněkud snižují. Druhou mnohem známější a široce používanou metodou je takzvaný rezoluční princip (rezoluce) resp. metody odvozené od něj. Myšlenku rezolučního principu formuloval v roce 1965 A. Robinson a od té doby byla velmi rozvinuta a zejména aplikována v různých systémech pro automatizované usuzování. I když existuje samozřejmě i její varianta pro logiku predikátovou, omezíme se zde pro jednoduchost pouze na logiku výrokovou. V klasickém pojetí rezoluce funguje pouze na formulích převedených do formy tzv. klauzulí (existují i zobecnění pro libovolné formule, ale zatím nejsou používány ani příliš prozkoumány). Klauzule je taková formule, kde se vyskytuje pouze binární spojka disjunkce, která spojuje jednotlivé atomy s negací nebo bez negace. Každou formuli lze pomocí logických pravidel (ekvivalencí - viz např. příklad 2) převést na ekvivalentní množinu klauzulí (může jich být i velmi mnoho). Rezoluční pravidlo pak umožňuje generovat ze dvou klauzulí obsahujících stejný atom (symbol elementárního výroku), který je v jednom případě s negací a v druhém bez negace, novou klauzuli spojenou disjunkcí obou výchozích klauzulí a zároveň vypustíme onen pár atomů, na kterých jsme prováděli rezoluci. Schématicky to lze znázornit 131

134 ZNALOSTI Modelování úsudku následovně (atomy a jejich negace lze v klauzuli libovolně přesunovat bez změny interpretace dané formule). Rezoluční pravidlo C 1 x C 1 C 2 C 2 x (1) C 1 a C 2 jsou zbývající části klauzulí a x je atom, na kterém rezoluci provádíme. Máme-li pravidlo, jsme schopni z výchozích předpokladů (speciálních axiomů) a logických axiomů pomocí tohoto pravidla konstruovat sekvenci formulí, které říkáme důkaz. U každé syntaktické metody nebo formálního systému je důležité mít ověřeny dvě vlastnosti. Jde o to, aby metoda nebo systém, který obchází problematickou sémantiku tím, že pracuje pouze ßlepě" se symboly bez ohledu na jejich interpretaci, byl s touto sémantikou v souladu. První vlastnost, které se říká korektnost systému, zaručuje, že používaná pravidla generují pouze logické důsledky axiomů. Kdyby tomu tak nebylo, systém by z nekorektních pravidel generoval s předpoklady zcela nesouvisející formule (nesmyslné). Druhou vlastností je tzv. úplnost systému. Ta zaručuje, abychom pouze s danou množinou pravidel a axiomů byli schopni vygenerovat veškeré možné logické důsledky. Kdyby tomu tak nebylo, měli bychom sice korektní systém, který však neumí některé důsledky generovat/ověřovat, což je jako univerzální algoritmus opět nefunkční. Pokud je systém korektní a úplný, pak se chová zcela ekvivalentně sémantice a přesto ji nijak během dedukce nemusíme uvažovat. Nyní rezoluci aplikujeme na již sémanticky řešený soudní případ. Příklad 5: Nejprve je nutné formule 1. A B C, 2. A (B C), 3. C převést do klauzulí. Formule 1. a 3. jsou klauzulemi bez převodu. Formule 2. vyžaduje převod. Využít můžeme pravidla pro přepis implikace na disjunkci. Toto pravidlo lze schématicky zapsat jako A B A B (čtenář si může lehce ověřit pomocí tabulky, že jde opravdu o formule s totožnou interpretací). Tímto pravidlem pak formuli 2. převedeme na formuli (disjunkce je navíc komutativní a asociativní): 2. A B C. Nyní 132

135 ZNALOSTI Modelování úsudku již můžeme buď přímo nebo nepřímo ověřovat závěry. Nejprve se pokusíme pomocí rezolučního pravdila (rezoluce) přímo vygenerovat, že B je vinen (B). Navíc přitom použijeme pomocná pravidla (například vyskytuje-li v klauzuli atom vícenásobně, je klauzule s jedním výskytem ekvivalentní; tyto kroky označíme pomocí ). Dalším platným pravidlem je, že formule F je ekvivalentní s F. Toto využijeme v případě, že jedna z premis obsahuje pouze jeden atom a tím pádem je po rezoluci ekvivaletní s. 1. A B C (axiom), 2. A B C (axiom), 3. C (axiom), 4. (rezoluce na A v 1. a 2.): (B C) (B C) B C, 5. (rezoluce na C v 4. a 3. - z formule 3. nezbylo nic): B Tím jsme provedli důkaz toho, že B je vinen (jelikož systém založený na rezoluci je korektní a úplný). Nyní se stejný závěr pokusíme dokázat nepřímo. Přitom přidáme k předpokladům negaci závěru a budeme se snažit prokázat nesplnitelnost (to znamená vygenerovat prázdnou klauzuli, která je nesplnitelná). 1. A B C (axiom), 2. A B C (axiom), 3. C (axiom), 4. B (negace závěru), 5. (rezoluce na B v 4. a 2. - z formule 4. nezbylo nic): A C, 6. (rezoluce na B v 4. a 1. - z formule 4. nezbylo nic): A C, 7. (rezoluce na A v 5. a 6.): C C C, 8. (rezoluce na C v 7. a 3. - z formule 7. ani 3. nezbylo nic): Jelikož jsme dospěli k prázdné formuli, prokázali jsme nesplnitelnost množiny formulí , čímž je také prokázáno nepřímo, že B je logickým důsledkem množiny formulí Nepřímý důkaz v předchozím příkladě jsme samozřejmě mohli realizovat různými způsoby. Univerzálním přístupem je konstrukce nepřímého důkazu pomocí přímého přidáním jediného kroku, kdy provedeme rezoluci na vygenerovaný přímý důsledek a jeho negaci (pokud jde jen o atom). Na tom je vidět, že zřejmě existuje vždy mnoho způsobů, jak důkaz provést. Z hlediska časové složitosti jde principiálně o úlohu s exponenciální složitostí, o kterých jsme se již zmínili v předchozím článku v MFI. Nicméně existují přístupy, jak důkaz urychlovat a těm se říká rezoluční strategie. Některé pomáhají málo, ale jsou v principu úplné (tedy zachovávají úplnost systému) a některé jsou velmi efektivní za cenu neúplnosti (ale ve většině praktických úloh to nevadí). V některých formálních systémech je rezoluce nazývána jinak, resp. je její obecná myšlenka skryta v jiné symbolice. Například se můžete setkat s tzv. 133

136 ZNALOSTI Fuzzy logika klauzulární logikou, kde se rezoluční pravidlo skrývá v tzv. pravidle řezu. Řez je výstižným pojmenováním, neboť jsme viděli, že rezoluce vlastně "vyřezává" atomy z původních formulí. V praxi se rezoluční metoda uplatňuje především v logickém programování. Logické programování není tak rozšířeno jako procedurální programování (např. algoritmizace v jazyce Pascal). Při procedurálním přístupu programátor musí vymyslet způsob, jak dosáhnout řešení cíle a to pomocí řízení výpočtu (musí správně použít proměnné, přiřazování, podmínky, cykly atd.). Logické programování vychází z myšlenky automatizace dedukce. Programátor nedefinuje postup řešení, ale pouze zadává formule (pravidla a fakta), která specifikují "logiku" řešení úlohy. Na takto zapsaný program se pak může dotazovat, podobně jako při prověřování závěrů dedukce a systém sám odpoví na dotaz. Způsob řešení je univerzální a programátor se o něj nemusí starat. Jako jednoduchý příklad může sloužit výpočet faktoriálů. V procedurálním programování musí programátor vytvořit řízený výpočet, tj. musí naprogramovat cyklus nebo rekurzivní proceduru. V logickém programování stačí naprogramovat dvě pravidla (resp. jedno pravidlo a jeden fakt). Pravidlo udává hodnotu faktoriálu pro argument předchozího přirozeného čísla pomocí vazby na term s proměnnou (v logickém programování se nemá používat klasické přiřazování, měly by se používat výlučně prostředky logiky). Fakt udává hodnotu faktoriálu pro argument 0. V praxi by používání pouze logických prostředků způsobovalo neefektivní řešení, proto implementace logického programování často umožňují použití také některých omezených procedurálních prvků (např. řez). Asi nejznámějším prostředkem logického programování je jazyk PROLOG (PROgramming in LOGic). Vzhledem k omezenému rozsahu tohoto článku jej nebudeme rozebírat, ale čtenář má možnost využít elektronický učební text s mnohými příklady 2. Pro vlastní pokusy doporučujeme získat z Internetu některou z freewarových implementací. Logické programování je výhodné především u úloh, kdy hledáme řešení v rozsáhlém stavovém prostoru a v úlohách typických v umělé inteligenci Fuzzy logika Fuzzy logika Pro modelování situací v reálném světě je klasická logika poměrně chudá. Přes všechny její přednosti je zásadním problémem především dvouhodnotová logická interpretace. Již dlouhou dobu existují formalismy zavádějící například logiku trojhodnotovou, kde třetí logická hodnota kromě pravda/nepravda je "nevím". Různé pokusy o zobecnění například pomocí pravděpodobnosti byly zastíněny v šedesátých letech 20.století tzv. fuzzy matematikou. Fuzzy matematika vychází z principu fuzzy množiny, která narozdíl od klasické množiny, která buď obsahuje nebo neobsahuje prvek, může prvek obsahovat na určitém stupni příslušnosti. Prvky tedy 134

137 ZNALOSTI Fuzzy logika mohou být v množině buď zcela nebo vůbec, ale také "jen trochu". Čtenář již měl možnost získat základní informace o fuzzy množinách v článku 7. Fuzzy logika pak tento princip využívá tím, že rovněž interpretace formule nemusí být jen pravda nebo nepravda, ale může to být pravda v určitém stupni. I když myšlenka fuzzy logiky je velmi prostá, lehce pochopitelná a tudíž implementovatelná do různých automatizovaných systémů, je potřeba se při jejím používání držet některých vlastností. I v běžném životě se můžete setkat s aplikacemi fuzzy logiky. Například elektrospotřebiče - pračky - mají dnes často na sobě nápis "Fuzzy-logic". Tím se může myslet například schopnost dávkovat automaticky prací prostředky nikoliv v přesně vymezených mantinelech podle váhy prádla (např. pro 1 kg prádla přidej přesně 10 g pracího prostředku), ale pouze vágními pravidly (např. je-li prádla málo, přidej pracího prostředku málo). Termínem fuzzy logika se označuje schopnost pracovat s neurčitou (vágní) informací, ale samozřejmě pojem fuzzy logika ve smyslu matematicko-informatickém je mnohem složitější. Základním problémem často bývá živelné používání množin stupňů příslušnosti bez ohledu na to, že musí existovat přímá souvislost také s používanými logickými spojkami. Proto je nezbytné, aby množina stupňů příslušnosti (pravdivosti) formule byla některou ze zavedených algeber. Množinou bývá v praktických aplikacích většinou interval [0, 1], i když teorie fuzzy množin a fuzzy logika má teoretické výsledky i pro mnohem složitější struktury. Tyto algebry mají vždy své výhody a nevýhody podle toho, jaké interpretace spojek na intervalu [0, 1] použijeme. Tyto spojky musí být ještě navzájem v souvislosti tj. použijeme-li určitou konjunkci předurčuje to již použití ostatních spojek. Nevýhodou algeber pak může být například nespojitost interpretačních funkcí spojek, neplatnost některých zásadních logických pravidel (zákonů) tak, jak je známe z klasické logiky. Pravděpodobně nejlepším kompromisem je tzv. ukasiewiczova algebra pojmenovaná po významném polském logikovi. Tato algebra je následující struktura: L \L = [ 0, 1 ],,,,, 0, 1 kde [0, 1] je interval reálných čísel mezi 0 a 1, což jsou nejmenší a největší hodnota (nepravda, pravda). a jsou operace infima a suprema (resp. na uvedené množině je lze ztotožnit s minimem a maximem). Definice standardních a odvozených operátorů je následující: a b = 0 (a + b 1) a b = 1 (1 a + b) a b = 1 (a + b) a = 1 a Na základě této algebry bychom pak mohli vytvořit příslušnou fuzzy výrokovou nebo predikátovou logiku. Zavést bychom museli kromě standardních logických spojek konjunkce a disjunkce, (jejichž 135

138 ZNALOSTI Fuzzy logika interpretační funkce by byly totožné s operacemi infima a suprema) také nové ukasiewiczovy spojky a to ukasiewiczova konjunkce (&) a disjunkce ( ). Jejich interpretační funkce jsou operace a. Implikace a negace se připouští interpretovat pouze na základě operátorů této algebry. Příklad 5: Pomocí fuzzy logik můžeme lehce vyřešit paradoxy, se kterými si klasická logika neumí poradit. Můžete se setkat s různými formulacemi, ale v zásadě jsou všechny totožné. Známý je tzv. paradox hromady. Jde o to, že bychom v klasické dvouhodnotové logice chtěli namodelovat situaci hromady, ke které přidáváme kameny. Víme, že hromada bez kamenů je rozhodně malá. Dále je rozumný předpoklad, pokud máme malou hromadu kamenů, pak hromada s přidaným jedním kamenem bude stále malá. V klasické logice, kde jsou formule pravdivé nebo nepravdivé, by pak každá hromada byla paradoxně malá. Můžeme totiž potenciálně nekonečnou sekvencí implikací vždy dokázat, že hromada s počtem kamenů o x větším je stále malá. Ve fuzzy logice můžeme díky pravdivosti s určitým stupněm příslušnosti namodelovat tuto situaci dvěmi formulemi (použijeme predikát malahromada(t), kde t je počet kamenů v hromadě): 1. malahromada(x) malahromada(x+1) - pravdivá ve stupni malahromada(0) - pravdivá ve stupni 1 Formule 1. není narozdíl od klasické logiky pravdivá zcela a díky tomu nedojde k paradoxní dedukci. Díky omezené pravdivosti bude při dedukci s každou aplikací formule 1. při navyšení počtu kamenů o 1 klesat pravdivost vyvozeného predikátu malahromada o Chtěli bychom například ověřit stupeň pravdivosti důsledku malahromada(1) z předpokladů 1. a 2. Platí-li formule 1. na a formule 2. na 1, pak můžeme na základě definice operátoru interpretace (I) implikace a platného vztahu: I(malahromada(0)) = 1 sestavit rovnici: = 1 (1 1 + I(malahromada(1))) I(malahromada(1)) = Pro malahromada(2): = 1 ( I(malahromada(2))) = I(malahromada(2)) I(malahromada(2)) = A tak dále pro zvětšující se počet kamenů, až pro malahromada(1000) bychom došli ke stupni pravdivosti 0. Fuzzy logika umožňuje pracovat s neurčitou informací a je zobecněním klasické logiky. Klasická logika je vlastně speciální případ fuzzy logiky. Stejně jako mnoho jiných zobecnění, přináší i fuzzy logika řadu problémů, které klasická logika nemá. Například používání rezolučního pravidla je 136

139 ZNALOSTI Fuzzy logika zde velmi omezeno, protože neexistuje univerzální postup převodu do formy klauzulí. Jde o problém aktuálně řešený například i na Ostravské Univerzitě (viz 1). Čtenář s hlubším zájmem se může na počáteční výzkumy v této oblasti informovat v elektronicky dostupném článku (doporučujeme zejména příklady). Zajímavé jsou také aplikace teorie fuzzy množin a fuzzy logiky, například existuje přístup s využitím tzv. lingvistických proměnných (viz 5). Tyto proměnné mohou místo klasických číselných hodnot nabývat hodnot blízkých přirozenému jazyku jako jsou například lingvistické výrazy typu: "velmi malý", "zhruba střední" atd. Pomocí těchto proměnných pak lze modelovat velmi srozumitelně a podobně jako člověk reálné situace. Například lze popisovat řízení auta, kde dvě z pravidel by mohla znít: KDYŽ na semaforu svítí jen žluté světlo A ZÁROVEŇ vzdálenost od křižovatky je malá A ZÁROVEŇ rychlost auta je malá PAK sešlápni brzdu střední silou KDYŽ na semaforu svítí jen žluté světlo A ZÁROVEŇ vzdálenost od křižovatky je velmi malá A ZÁROVEŇ rychlost auta je střední PAK sešlápni plyn velkou silou Tato pravidla jsou pak interpretována pomocí fuzzy logiky a můžeme díky nim velmi lehce modelovat a zejména automatizovat postupy z mnoha oblastí života. Existují systémy, které se v praxi skutečně používaly a používají jako je systém LFLC (Linguistic Fuzzy Logic Controller) vyvinutý rovněž na Ostravské Univerzitě. Pomocí něj se modelovaly například technologické procesy v hutích a oproti klasických prostředkům jsou velkým vylepšením. Lze totiž na rozdíl od klasických regulačních technik, které vyžadují složitou matematiku jako jsou diferenciální rovnice a se kterými může pracovat jen velmi úzká skupina odborníků, tyto systémy svěřit i poučenému laikovi. Ten dobře zná například svůj technologický proces, který ručně obsluhoval dlouhou dobu a je schopen formulovat slovně své akční zásahy. Ty pak stačí naformulovat a odzkoušet a máme ve velmi krátkém čase funkční automatizaci daného procesu, založenou na fuzzy logice. 137

140 SOFTWAROVÉ INŽENÝRSTVÍ Fuzzy logika 5. Softwarové inženýrství Informatika je multidisciplinární obor, jehož předmětem je tvorba a užití informačních systémů v organizacích a společenstvích, a to na bázi moderních informačních technologií. Zmínili jsme spojení multidisciplinární obor. To znamená, že zahrnuje jak technické, tak také ekonomické, sociální, psychologické, právní a další aspekty. Následující text je převzat z výborně psaných textů [Pr07]. Na obrázku vidíme rozdělení informačních technologií (IT) v různých kategoriích, přičemž některé z nich si v textu zmíníme podrobněji. Informační technologie jsou dle definice hardwarové a softwarové prostředky pro sběr, přenos, uchování, zpracování a distribuci informací. Informatická služba je relativně samostatná část IS viditelná koncovému uživateli a zaměřená na podporu jednoho nebo více procesů organizace. Zmiňujeme-li pojem aplikace, máme na mysli z čeho je IS tvořen, v případě služby k čemu příslušná část IS v organizaci slouží, kdo je jejím provozovatelem (dodavatelem) a kdo jejím uživatelem (zákazníkem). Informatický zdroj je komponenta (HW, SW, data-informace-znalost) nutná k tvorbě a provozu informatické aplikace nebo informatické služby. Pojem informační systém je uživateli velmi často používán intuitivně a je pod ním často myšleno téměř veškeré softwarové vybavení, které má 138

Architektura počítačů

Architektura počítačů Architektura počítačů Studijní materiál pro předmět Architektury počítačů Ing. Petr Olivka katedra informatiky FEI VŠB-TU Ostrava email: petr.olivka@vsb.cz Ostrava, 2010 1 1 Architektura počítačů Pojem

Více

2.1 Historie a vývoj počítačů

2.1 Historie a vývoj počítačů Název školy Číslo projektu Autor Název šablony Název DUMu Tematická oblast Předmět Druh učebního materiálu Anotace Vybavení, pomůcky Ověřeno ve výuce dne, třída Střední průmyslová škola strojnická Vsetín

Více

Historie počítačů. 0.generace. (prototypy)

Historie počítačů. 0.generace. (prototypy) Historie počítačů Historie počítačů se dělí do tzv. generací, kde každá generace je charakteristická svou konfigurací, rychlostí počítače a základním stavebním prvkem. Generace počítačů: Generace Rok Konfigurace

Více

1 Historie výpočetní techniky

1 Historie výpočetní techniky Úvod 1 Historie výpočetní techniky Základem výpočetní techniky jsou operace s čísly, chcete-li záznam čísel. V minulosti se k záznamu čísel používaly různé předměty, jako například kameny, kosti, dřevěné

Více

Trocha obrázků na začátek..

Trocha obrázků na začátek.. Trocha obrázků na začátek.. Elementární pojmy LCD panel tower myš klávesnice 3 Desktop vs. Tower tower desktop 4 Desktop nebo Tower? 5 Obraz jako obraz? 6 A něco o vývoji.. Předchůdci počítačů Počítadlo

Více

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy VÝUKOVÝ MATERIÁL Identifikační údaje školy Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková

Více

Střední odborná škola stavební Karlovy Vary Sabinovo náměstí 16, 360 09 Karlovy Vary Autor: Ing. Hana Šmídová Název materiálu:

Střední odborná škola stavební Karlovy Vary Sabinovo náměstí 16, 360 09 Karlovy Vary Autor: Ing. Hana Šmídová Název materiálu: Název školy: Střední odborná škola stavební Karlovy Vary Sabinovo náměstí 16, 360 09 Karlovy Vary Autor: Ing. Hana Šmídová Název materiálu: VY_32_INOVACE_05_SÍTĚ_P2 Číslo projektu: CZ 1.07/1.5.00/34.1077

Více

K čemu slouží počítačové sítě

K čemu slouží počítačové sítě Počítačové sítě Počítačová síť je spojení dvou a více počítačů kabelem, telefonní linkou, nebo jiným způsobem tak, aby spolu mohly vzájemně komunikovat. K čemu slouží počítačové sítě Sdílení prostředků

Více

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávání v informačních a komunikačních technologií

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávání v informačních a komunikačních technologií VY_32_INOVACE_31_02 Škola Střední průmyslová škola Zlín Název projektu, reg. č. Vzdělávací oblast Vzdělávací obor Tematický okruh Téma Tematická oblast Název Autor Vytvořeno, pro obor, ročník Inovace výuky

Více

IVT 2. ročník INFORMAČNÍ SÍTĚ

IVT 2. ročník INFORMAČNÍ SÍTĚ IVT 2. ročník INFORMAČNÍ SÍTĚ HISTORICKÉ DŮVODY VZNIKU SÍTÍ Počítačová síť vznikne ve chvíli, kdy dva (někdy se říká minimálně tři) nebo více počítačů propojíme dohromady pomocí komunikačního systému za

Více

Úvod do informačních technologií

Úvod do informačních technologií Úvod do informačních technologií Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI přednášky Úvod Jan Outrata (Univerzita Palackého v Olomouci) Úvod do informačních technologií Olomouc, září

Více

3.13 Úvod do počítačových sítí

3.13 Úvod do počítačových sítí Název školy Číslo projektu Autor Název šablony Název DUMu Tematická oblast Předmět Druh učebního materiálu Anotace Vybavení, pomůcky Střední průmyslová škola strojnická Vsetín CZ.1.07/1.5.00/34.0483 Ing.

Více

Po ukončení tohoto kurzu budete schopni:

Po ukončení tohoto kurzu budete schopni: PRÁCE S INTERNETEM A KOMUNIKACE Hana Rohrová, Roman Rohr Cíle kurzu Po ukončení tohoto kurzu budete schopni: porozumět základním pojmům spojeným s používáním Internetu, dodržovat bezpečnostní opatření

Více

Počítačové sítě. Počítačová síť. VYT Počítačové sítě

Počítačové sítě. Počítačová síť. VYT Počítačové sítě Počítačové sítě Počítačová síť Je soubor technických prostředků, které umožňují spojení mezi počítači a výměnu informací prostřednictvím tohoto spojení. Postupný rozvoj během druhé poloviny 20. století.

Více

NULTÁ GENERACE reléové obvody 30. a 40. let minulého století Harvard Mark I Harvard Mark II Konráda Zuseho Z2 SAPO

NULTÁ GENERACE reléové obvody 30. a 40. let minulého století Harvard Mark I Harvard Mark II Konráda Zuseho Z2 SAPO HISTORIE NULTÁ GENERACE Základ - reléové obvody 30. a 40. let minulého století. Typičtí představitelé: Harvard Mark I, Harvard Mark II či stroje německého inženýra Konráda Zuseho Z2 a Z3. Čechy - první

Více

Úvod do informačních služeb Internetu

Úvod do informačních služeb Internetu Úvod do informačních služeb Internetu Rozdělení počítačových sítí Počítačové sítě se obecně rozdělují do základních typů podle toho, na jak velkém území spojují počítače a jaké spojovací prostředky k tomu

Více

Počítačové sítě. IKT pro PD1

Počítačové sítě. IKT pro PD1 Počítačové sítě IKT pro PD1 Počítačová síť Je to soubor technických prostředků umožňujících komunikaci a výměnu dat mezi počítači. První počítačové sítě armádou testovány v 60. letech 20.století. Umožňuje

Více

INFORMATIKA. Jindřich Kaluža. Ludmila Kalužová

INFORMATIKA. Jindřich Kaluža. Ludmila Kalužová INFORMATIKA Jindřich Kaluža Ludmila Kalužová Recenzenti: doc. RNDr. František Koliba, CSc. prof. RNDr. Peter Mikulecký, PhD. Vydání knihy bylo schváleno vědeckou radou nakladatelství. Všechna práva vyhrazena.

Více

Jak to celé vlastně začalo

Jak to celé vlastně začalo Historie počítače Jak to celé vlastně začalo Historie počítačů, tak jak je známe dnes, začala teprve ve 30. letech 20. století. Za vynálezce počítače je přesto považován Charles Babbage, který v 19. století

Více

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Číslo projektu: CZ.1.07/1.5.00/34.0410 Číslo šablony: 17 Název materiálu: Ročník: Identifikace materiálu: Jméno autora: Předmět: Tématický celek:

Více

Tovek Server. Tovek Server nabízí následující základní a servisní funkce: Bezpečnost Statistiky Locale

Tovek Server. Tovek Server nabízí následující základní a servisní funkce: Bezpečnost Statistiky Locale je serverová aplikace určená pro efektivní zpracování velkého objemu sdílených nestrukturovaných dat. Umožňuje automaticky indexovat data z různých informačních zdrojů, intuitivně vyhledávat informace,

Více

Vypracoval Petr Novosad Vytvořeno z projektu EU Peníze středním školám

Vypracoval Petr Novosad Vytvořeno z projektu EU Peníze středním školám Vypracoval Petr Novosad Vytvořeno z projektu EU Peníze středním školám Použité zdroje Historie Dříve byly počítače příliš drahé a velké. Výpočetní jednotka existovala vždy jen jedna centrální. Každý uživatel

Více

POČÍTAČOVÉ SÍTĚ. Prvky takové sítě jsou rozmístěny v určitém ohraničeném objektu, který se rozprostírá

POČÍTAČOVÉ SÍTĚ. Prvky takové sítě jsou rozmístěny v určitém ohraničeném objektu, který se rozprostírá POČÍTAČOVÉ SÍTĚ První počítačové sítě se začaly objevovat už v padesátých letech minulého století, nicméně jejich mohutný nástup spadá až do začátku let osmdesátých. Tento nástup byl tak razantní, že dnes

Více

POKUD JSOU PRACOVNÍCI SPOJENI DO SÍTĚ MOHOU SDÍLET: Data Zprávy Grafiku Tiskárny Faxové přístroje Modemy Další hardwarové zdroje

POKUD JSOU PRACOVNÍCI SPOJENI DO SÍTĚ MOHOU SDÍLET: Data Zprávy Grafiku Tiskárny Faxové přístroje Modemy Další hardwarové zdroje CO JE TO SÍŤ? Pojmem počítačová síť se rozumí zejména spojení dvou a více počítačů tak aby mohli navzájem sdílet své prostředky. Přitom je jedno zda se jedná o prostředky hardwarové nebo softwarové. Před

Více

1. Historie počítacích strojů Předchůdci počítačů. 2. Vývoj mikropočítačů Osmibitové mikropočítače Šestnácti a dvaatřicetibitové počítače IBM

1. Historie počítacích strojů Předchůdci počítačů. 2. Vývoj mikropočítačů Osmibitové mikropočítače Šestnácti a dvaatřicetibitové počítače IBM PŘEHLED TÉMATU 1. Historie počítacích strojů Předchůdci počítačů Elektronické počítače 0. generace Elektronické počítače 1. generace Elektronické počítače 2. generace Elektronické počítače 3. generace

Více

Modemy a síťové karty

Modemy a síťové karty Modemy a síťové karty Modem (modulator/demodulator) je zařízení, které konvertuje digitální data (používané v PC) na analogové signály, vhodné pro přenos po telefonních linkách. Na druhé straně spojení

Více

VY_32_INOVACE_INF.15. Dějiny počítačů II.

VY_32_INOVACE_INF.15. Dějiny počítačů II. VY_32_INOVACE_INF.15 Dějiny počítačů II. Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Jiří Kalous Základní a mateřská škola Bělá nad Radbuzou, 2011 První programovatelné stroje V roce

Více

Hospodářská informatika

Hospodářská informatika Hospodářská informatika HINFL, HINFK Vytvořeno s podporou projektu Průřezová inovace studijních programů Lesnické a dřevařské fakulty MENDELU v Brně (LDF) s ohledem na disciplíny společného základu reg.

Více

Historie počítačů 1. Předchůdci počítačů Počítače 0. a 1. generace

Historie počítačů 1. Předchůdci počítačů Počítače 0. a 1. generace Historie počítačů 1 Počítače 0. a 1. generace Snaha ulehčit si počítání vedla už daleko v minulosti ke vzniku jednoduchých, ale promyšlených pomůcek Následoval vývoj mechanických počítacích strojů, který

Více

Hospodářská informatika

Hospodářská informatika Hospodářská informatika HINFL, HINFK Vytvořeno s podporou projektu Průřezová inovace studijních programů Lesnické a dřevařské fakulty MENDELU v Brně (LDF) s ohledem na disciplíny společného základu reg.

Více

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE

Více

OPS Paralelní systémy, seznam pojmů, klasifikace

OPS Paralelní systémy, seznam pojmů, klasifikace Moorův zákon (polovina 60. let) : Výpočetní výkon a počet tranzistorů na jeden CPU chip integrovaného obvodu mikroprocesoru se každý jeden až dva roky zdvojnásobí; cena se zmenší na polovinu. Paralelismus

Více

Profilová část maturitní zkoušky 2013/2014

Profilová část maturitní zkoušky 2013/2014 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2013/2014 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více

SADA VY_32_INOVACE_PP1

SADA VY_32_INOVACE_PP1 SADA VY_32_INOVACE_PP1 Přehled anotačních tabulek k dvaceti výukovým materiálům vytvořených Ing. Janem Prašivkou. Kontakt na tvůrce těchto DUM: prasivka@szesro.cz Úvod do informatiky VY_32_INOVACE_PP1.PRA.01

Více

Tovek Tools. Tovek Tools jsou standardně dodávány ve dvou variantách: Tovek Tools Search Pack Tovek Tools Analyst Pack. Připojené informační zdroje

Tovek Tools. Tovek Tools jsou standardně dodávány ve dvou variantách: Tovek Tools Search Pack Tovek Tools Analyst Pack. Připojené informační zdroje jsou souborem klientských desktopových aplikací určených k indexování dat, vyhledávání informací, tvorbě různých typů analýz a vytváření přehledů a rešerší. Jsou vhodné pro práci s velkým objemem textových

Více

KAPITOLA 2 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ

KAPITOLA 2 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ KAPITOLA 2 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ KLÍČOVÉ POJMY Internet World Wide Web FTP, fulltext e-mail, IP adresa webový prohlížeč a vyhledávač CÍLE KAPITOLY Pochopit, co je Internet

Více

Historie výpočetní techniky. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1121_Histrorie výpočetní techniky_pwp

Historie výpočetní techniky. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1121_Histrorie výpočetní techniky_pwp Historie výpočetní techniky Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1121_Histrorie výpočetní techniky_pwp Název školy: Číslo a název projektu: Číslo a název šablony klíčové aktivity:

Více

PRODUKTY. Tovek Tools

PRODUKTY. Tovek Tools jsou desktopovou aplikací určenou k vyhledávání informací, tvorbě různých typů analýz a vytváření přehledů a rešerší. Jsou vhodné pro práci i s velkým objemem textových dat z různorodých informačních zdrojů.

Více

Celosvětová síť Internet. IKT pro PD1

Celosvětová síť Internet. IKT pro PD1 Celosvětová síť Internet IKT pro PD1 Síť Internet Internet - celosvětová síť navzájem propojených počítačů, nebo specializovaných zařízení. Propojuje instituce nejrůznější povahy i soukromé osoby. Umožňuje

Více

Kapitola třináctá. Datové sítě. Učební text. Mgr. Radek Hoszowski

Kapitola třináctá. Datové sítě. Učební text. Mgr. Radek Hoszowski Kapitola třináctá Datové sítě Učební text Mgr. Radek Hoszowski Datové sítě Datové sítě Datové sítě jsou prostředkem komunikace počítače s ostatními počítači. Existují však i jiné datové sítě, o kterých

Více

Martin Hejtmánek hejtmmar@fjfi.cvut.cz http://kmlinux.fjfi.cvut.cz/ hejtmmar

Martin Hejtmánek hejtmmar@fjfi.cvut.cz http://kmlinux.fjfi.cvut.cz/ hejtmmar Základy programování Martin Hejtmánek hejtmmar@fjfi.cvut.cz http://kmlinux.fjfi.cvut.cz/ hejtmmar Počítačový kurs Univerzity třetího věku na FJFI ČVUT Pokročilý 21. května 2009 Dnešní přednáška 1 Počátky

Více

CZ.1.07/1.5.00/34.0527

CZ.1.07/1.5.00/34.0527 Projekt: Příjemce: Digitální učební materiály ve škole, registrační číslo projektu CZ.1.07/1.5.00/34.0527 Střední zdravotnická škola a Vyšší odborná škola zdravotnická, Husova 3, 371 60 České Budějovice

Více

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010 Přednášky o výpočetní technice Hardware teoreticky Adam Dominec 2010 Rozvržení Historie Procesor Paměť Základní deska přednášky o výpočetní technice Počítací stroje Mechanické počítačky se rozvíjely už

Více

ZŠ a MŠ, Brno, Horníkova 1 - Školní vzdělávací program

ZŠ a MŠ, Brno, Horníkova 1 - Školní vzdělávací program 4.3. Informační a komunikační technologie Charakteristika předmětu Vzdělávací oblast je realizována prostřednictvím vyučovacího předmětu Informatika. Informatika je zařazena do ŠVP jako povinný předmět

Více

Profilová část maturitní zkoušky 2015/2016

Profilová část maturitní zkoušky 2015/2016 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2015/2016 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 26-41-M/01 Elektrotechnika Zaměření: technika

Více

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávání v informačních a komunikačních technologií

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávání v informačních a komunikačních technologií VY_32_INOVACE_31_04 Škola Název projektu, reg. č. Vzdělávací oblast Vzdělávací obor Tematický okruh Téma Tematická oblast Název Autor Vytvořeno, pro obor, ročník Anotace Přínos/cílové kompetence Střední

Více

CZ.1.07/1.5.00/34.0527

CZ.1.07/1.5.00/34.0527 Projekt: Příjemce: Digitální učební materiály ve škole, registrační číslo projektu CZ.1.07/1.5.00/34.0527 Střední zdravotnická škola a Vyšší odborná škola zdravotnická, Husova 3, 371 60 České Budějovice

Více

ADSL připojení se společností Metropolnet a.s Služba M-DSL

ADSL připojení se společností Metropolnet a.s Služba M-DSL ADSL připojení se společností Metropolnet a.s Služba M-DSL ADSL je rychlé a permanentní širokopásmové připojení k internetu s efektivním využitím stávající telefonní sítě. Jak DSL pracuje? K Internetu

Více

Úvod do informatiky 5)

Úvod do informatiky 5) PŘEHLED PŘEDNÁŠKY Internet Protokol a služba Jmenná služba (DNS) URL adresa Elektronická pošta Přenos souborů (FTP) World Wide Web (WWW) Téměř zapomenuté služby 1 INTERNET 2 PROTOKOL A SLUŽBA Protokol

Více

Vzdálený přístup k počítačům

Vzdálený přístup k počítačům Vzdálený přístup k počítačům jedna z nejstarších služeb vzdálený přístup k sálovým počítačům nejprve vzdálené terminály později terminálová emulace jako jedna ze služeb počítačové sítě současnost využíváno

Více

www.zlinskedumy.cz Střední průmyslová škola Zlín

www.zlinskedumy.cz Střední průmyslová škola Zlín VY_32_INOVACE_31_01 Škola Název projektu, reg. č. Vzdělávací oblast Vzdělávací obor Tematický okruh Téma Tematická oblast Název Autor Vytvořeno, pro obor, ročník Anotace Přínos/cílové kompetence Střední

Více

Rozdělení (typy) sítí

Rozdělení (typy) sítí 10. Počítačové sítě - rozdělení (typologie, topologie, síťové prvky) Společně s nárůstem počtu osobních počítačů ve firmách narůstala potřeba sdílení dat. Bylo třeba zabránit duplikaci dat, zajistit efektivní

Více

Škola. Číslo projektu. Datum tvorby 12. září 2013

Škola. Číslo projektu. Datum tvorby 12. září 2013 Škola Autor Číslo projektu Číslo DUM Název Téma hodiny Předmět Ročník/y/ Střední odborná škola a Střední odborné učiliště, Hustopeče, Masarykovo nám. 1 Ing. Jiří Tinka CZ.1.07/1.5.00/34.0394 VY_32_INOVACE_01_ICT_08.01

Více

POČÍTAČOVÉ SÍTĚ ZÁKLADNÍ INFORMACE

POČÍTAČOVÉ SÍTĚ ZÁKLADNÍ INFORMACE POČÍTAČOVÉ SÍTĚ ZÁKLADNÍ INFORMACE 2005 OBSAH SOŠS a SOU Kadaň Školení SIPVZ Počítačové sítě POÈÍTAÈOVÉ SÍTÌ...3 TOPOLOGIE SÍTÍ...3 SBÌRNICE (BUS)...3 HVÌZDA (STAR)...4 KRUH (RING)...4 TYPY KABELÙ PRO

Více

Uživatel počítačové sítě

Uživatel počítačové sítě Uživatel počítačové sítě Intenzivní kurz CBA Daniel Klimeš, Ivo Šnábl Program kurzu Úterý 8.3.2005 15.00 18.00 Teoretická část Středa 9.3.2005 15.00 19.00 Praktická práce s počítačem Úterý 15.3.2005 15.00

Více

CZ.1.07/1.5.00/34.0527

CZ.1.07/1.5.00/34.0527 Projekt: Příjemce: Digitální učební materiály ve škole, registrační číslo projektu CZ.1.07/1.5.00/34.0527 Střední zdravotnická škola a Vyšší odborná škola zdravotnická, Husova 3, 371 60 České Budějovice

Více

Internet. Počítačová síť, adresy, domény a připojení. Mgr. Jan Veverka Střední odborná škola sociální Evangelická akademie

Internet. Počítačová síť, adresy, domény a připojení. Mgr. Jan Veverka Střední odborná škola sociální Evangelická akademie Internet Počítačová síť, adresy, domény a připojení Mgr. Jan Veverka Střední odborná škola sociální Evangelická akademie Počítačová síť počítačová síť = označení pro několik navzájem propojených počítačů,

Více

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE Název školy: Střední odborná škola stavební Karlovy Vary Sabinovo náměstí 16, 360 09 Karlovy Vary Autor: Ing. Hana Šmídová Název materiálu: VY_32_INOVACE_12_HARDWARE_S1 Číslo projektu: CZ 1.07/1.5.00/34.1077

Více

Připojení k Internetu a služby Internetu Připojení k Internetu a využívání jeho služeb je dnes běžnou záležitostí. S Internetem se dnes setkáváme na

Připojení k Internetu a služby Internetu Připojení k Internetu a využívání jeho služeb je dnes běžnou záležitostí. S Internetem se dnes setkáváme na Připojení k Internetu a služby Internetu Připojení k Internetu a využívání jeho služeb je dnes běžnou záležitostí. S Internetem se dnes setkáváme na každém kroku. S Internetem se setkáme v domácnostech,

Více

Pohled do nitra mikroprocesoru Josef Horálek

Pohled do nitra mikroprocesoru Josef Horálek Pohled do nitra mikroprocesoru Josef Horálek Z čeho vycházíme = Vycházíme z Von Neumannovy architektury = Celý počítač se tak skládá z pěti koncepčních bloků: = Operační paměť = Programový řadič = Aritmeticko-logická

Více

Maturitní témata Školní rok: 2015/2016

Maturitní témata Školní rok: 2015/2016 Maturitní témata Školní rok: 2015/2016 Ředitel školy: Předmětová komise: Předseda předmětové komise: Předmět: PhDr. Karel Goš Informatika a výpočetní technika Mgr. Ivan Studnička Informatika a výpočetní

Více

Úvod do informačních technologií

Úvod do informačních technologií Úvod do informačních technologií přednášky Jan Outrata září prosinec 2009 (aktualizace září prosinec 2012) Jan Outrata (KI UP) Úvod do informačních technologií září prosinec 2012 1 / 18 Literatura http://phoenix.inf.upol.cz/~outrata/courses/udit/index.html

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo didaktického materiálu EU-OVK-VZ-III/2-ZÁ-319. Počítačové sítě

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo didaktického materiálu EU-OVK-VZ-III/2-ZÁ-319. Počítačové sítě Číslo a název šablony III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo didaktického materiálu EU-OVK-VZ-III/2-ZÁ-319 Druh didaktického materiálu DUM Autor Ing. Renata Zárubová Jazyk čeština

Více

Výukový materiál zpracovaný v rámci projektu. Základní škola Sokolov, Běžecká 2055 pracoviště Boženy Němcové 1784

Výukový materiál zpracovaný v rámci projektu. Základní škola Sokolov, Běžecká 2055 pracoviště Boženy Němcové 1784 Výukový materiál zpracovaný v rámci projektu Základní škola Sokolov, Běžecká 2055 pracoviště Boženy Němcové 1784 Název a číslo projektu: Moderní škola, CZ.1.07/1.4.00/21.3331 Šablona: III/2 Inovace a zkvalitnění

Více

Počítačová síť. je skupina počítačů (uzlů), popřípadě periferií, které jsou vzájemně propojeny tak, aby mohly mezi sebou komunikovat.

Počítačová síť. je skupina počítačů (uzlů), popřípadě periferií, které jsou vzájemně propojeny tak, aby mohly mezi sebou komunikovat. Počítačové sítě Počítačová síť je skupina počítačů (uzlů), popřípadě periferií, které jsou vzájemně propojeny tak, aby mohly mezi sebou komunikovat. Základní prvky sítě Počítače se síťovým adaptérem pracovní

Více

Popis výukového materiálu

Popis výukového materiálu Popis výukového materiálu Číslo šablony III/2 Číslo materiálu VY_32_INOVACE_I.2.14 Autor Předmět, ročník Tematický celek Téma Druh učebního materiálu Anotace (metodický pokyn, časová náročnost, další pomůcky

Více

Informační a komunikační technologie. 3. Počítačové sítě

Informační a komunikační technologie. 3. Počítačové sítě Informační a komunikační technologie 3. Počítačové sítě Studijní obor: Sociální činnost Ročník: 1 1. Základní vlastnosti 2. Technické prostředky 3. Síťová architektura 3.1. Peer-to-peer 3.2. Klient-server

Více

Internet - základní pojmy

Internet - základní pojmy Název školy: Střední odborná škola stavební Karlovy Vary Sabinovo náměstí 16, 360 09 Karlovy Vary Autor: Ing. Hana Šmídová Název materiálu: VY_32_INOVACE_07_INTERNET_P2 Číslo projektu: CZ 1.07/1.5.00/34.1077

Více

ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ. MEIV - 2.3.1.1 Windows server 2003 (seznámení s nasazením a použitím)

ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ. MEIV - 2.3.1.1 Windows server 2003 (seznámení s nasazením a použitím) Object 12 3 Projekt: ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ Téma: MEIV - 2.3.1.1 Windows server 2003 (seznámení s nasazením a použitím) Obor: Mechanik Elektronik Ročník: 4. Zpracoval(a): Bc. Martin Fojtík Střední

Více

ATEUS - OMEGA Komunikační řešení pro malé a střední firmy

ATEUS - OMEGA Komunikační řešení pro malé a střední firmy ATEUS - OMEGA Komunikační řešení pro malé a střední firmy 2 varianty: - ATEUS - OMEGA Business - ATEUS - OMEGA Basic Propojení všech telekomunikačních služeb firmy Přímé propojení do sítí ISDN, GSM a VoIP

Více

Služby Internetu. Ing. Luděk Richter

Služby Internetu. Ing. Luděk Richter Služby Internetu Ing. Luděk Richter Střední škola, Havířov-Šumbark, Sýkorova 1/613, příspěvková organizace Tento výukový materiál byl zpracován v rámci akce EU peníze středním školám - OP VK 1.5. Výuková

Více

X.25 Frame Relay. Frame Relay

X.25 Frame Relay. Frame Relay X.25 Frame Relay Frame Relay 1 Předmět: Téma hodiny: Třída: Počítačové sítě a systémy X.25, Frame relay _ 3. a 4. ročník SŠ technické Autor: Ing. Fales Alexandr Software: SMART Notebook 11.0.583.0 Obr.

Více

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT Mgr. Jana Kubcová Název

Více

2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu

2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu Název školy Číslo projektu Autor Název šablony Název DUMu Tematická oblast Předmět Druh učebního materiálu Anotace Vybavení, pomůcky Ověřeno ve výuce dne, třída Střední průmyslová škola strojnická Vsetín

Více

Optimalizaci aplikací. Ing. Martin Pavlica

Optimalizaci aplikací. Ing. Martin Pavlica Optimalizaci aplikací Ing. Martin Pavlica Vize: Aplikace v dnešním světě IT Ze všech částí IT jsou aplikace nejblíže businessu V elektronizovaném světě významným způsobem podporují business, ten se na

Více

HISTORIE VÝPOČETNÍ TECHNIKY. Od abakusu k PC

HISTORIE VÝPOČETNÍ TECHNIKY. Od abakusu k PC HISTORIE VÝPOČETNÍ TECHNIKY Od abakusu k PC Předchůdci počítačů abakus - nejstarší předek počítačů, počítací pomůcka založená na principu posuvných korálků. V Číně byl abakus používán od 13. století, v

Více

NTERNETOVÝ OBCHOD- PRO RETAILING

NTERNETOVÝ OBCHOD- PRO RETAILING E-commerce - a competitive way for retailing NTERNETOVÝ OBCHOD- KONKURENČNÍ FORMA PRO RETAILING Úvod do problematiky Obchodní činnost zaznamenává v poslední době v České republice značných proměn Relativní

Více

Architektura Intel Atom

Architektura Intel Atom Architektura Intel Atom Štěpán Sojka 5. prosince 2008 1 Úvod Hlavní rysem Atomu je podpora platformy x86, která umožňuje spouštět a běžně používat řadu let vyvíjené aplikace, na které jsou uživatelé zvyklí

Více

Integrovaná střední škola, Sokolnice 496

Integrovaná střední škola, Sokolnice 496 Integrovaná střední škola, Sokolnice 496 Název projektu: Moderní škola Registrační číslo: CZ.1.07/1.5.00/34.0467 Název klíčové aktivity: III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT Kód výstupu:

Více

SYSTÉM KX-NCP500X/V EXPRESS NA KAŽDÉM A KAŽDÉM ZÁLEŽÍ HOVORU HOVORU

SYSTÉM KX-NCP500X/V EXPRESS NA KAŽDÉM A KAŽDÉM ZÁLEŽÍ HOVORU HOVORU SYSTÉM KX-NCP500X/V EXPRESS NA KAŽDÉM HOVORU A KAŽDÉM ZÁLEŽÍ HOV ÁLEŽÍ HOVORU ORU NCP500 NOVÉ FIREMNÍ KOMUNIKAČNÍ SYSTÉMY Nové komunikační systémy NCP500 Express jsou navrženy s cílem zajistit rychlé a

Více

Výpočetní technika. PRACOVNÍ LIST č. 8. Ing. Luděk Richter

Výpočetní technika. PRACOVNÍ LIST č. 8. Ing. Luděk Richter Výpočetní technika PRACOVNÍ LIST č. 8 Ing. Luděk Richter Střední škola, Havířov-Šumbark, Sýkorova 1/613, příspěvková organizace Tento výukový materiál byl zpracován v rámci akce EU peníze středním školám

Více

materiál č. šablony/č. sady/č. materiálu: Autor: Karel Dvořák Vzdělávací oblast předmět: Informatika Ročník, cílová skupina: 7.

materiál č. šablony/č. sady/č. materiálu: Autor: Karel Dvořák Vzdělávací oblast předmět: Informatika Ročník, cílová skupina: 7. Masarykova základní škola Klatovy, tř. Národních mučedníků 185, 339 01 Klatovy; 376312154, fax 376326089 E-mail: skola@maszskt.investtel.cz; Internet: www.maszskt.investtel.cz Kód přílohy vzdělávací VY_32_INOVACE_IN7DV_05_01_19

Více

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2014 7.4 13/14

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2014 7.4 13/14 ZÁKLADY PROGRAMOVÁNÍ Mgr. Vladislav BEDNÁŘ 2014 7.4 13/14 Co je vhodné vědět, než si vybereme programovací jazyk a začneme programovat roboty. 1 / 13 0:40 Implementace Umělá inteligence (UI) Umělá inteligence

Více

Osobní počítač. Zpracoval: ict Aktualizace: 10. 11. 2011

Osobní počítač. Zpracoval: ict Aktualizace: 10. 11. 2011 Osobní počítač Zpracoval: ict Aktualizace: 10. 11. 2011 Charakteristika PC Osobní počítač (personal computer - PC) je nástroj člověka pro zpracovávání informací Vyznačuje se schopností samostatně pracovat

Více

Jak do počítače. aneb. Co je vlastně uvnitř

Jak do počítače. aneb. Co je vlastně uvnitř Jak do počítače aneb Co je vlastně uvnitř Po odkrytí svrchních desek uvidíme... Von Neumannovo schéma Řadič ALU Vstupně/výstupní zař. Operační paměť Počítač je zařízení, které vstupní údaje transformuje

Více

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC Informační systémy 2 Obsah: Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC ROM RAM Paměti typu CACHE IS2-4 1 Dnešní info: Informační systémy 2 03 Informační systémy

Více

Informatika. 20 Internet

Informatika. 20 Internet Informatika 20 Internet Karel Dvořák 2011 Internet Internet je celosvětový systém navzájem propojených počítačových sítí, ve kterých mezi sebou počítače komunikují pomocí rodiny protokolů TCP/IP. Společným

Více

Klasifikace počítačů a technologické trendy Modifikace von Neumanova schématu pro PC

Klasifikace počítačů a technologické trendy Modifikace von Neumanova schématu pro PC Přednáší: doc. Ing. Jan Skrbek, Dr. - KIN Přednášky: středa 14 20 15 55 Obsah: Historie počítačů Počítačové generace Spojení: e-mail: jan.skrbek@tul.cz 16 10 17 45 tel.: 48 535 2442 Klasifikace počítačů

Více

Malý průvodce Internetem

Malý průvodce Internetem Malý průvodce Internetem Úvod Toto povídání by mělo sloužit jako užitečný zdroj informací pro ty, co o Internetu zatím mnoho neví nebo o něm jen slyšeli a neví, co si pod tím slovem představit. Klade si

Více

Představíme základy bezdrátových sítí. Popíšeme jednotlivé typy sítí a zabezpečení.

Představíme základy bezdrátových sítí. Popíšeme jednotlivé typy sítí a zabezpečení. 10. Bezdrátové sítě Studijní cíl Představíme základy bezdrátových sítí. Popíšeme jednotlivé typy sítí a zabezpečení. Doba nutná k nastudování 1,5 hodiny Bezdrátové komunikační technologie Uvedená kapitola

Více

CZ.1.07/1.5.00/34.0527

CZ.1.07/1.5.00/34.0527 Projekt: Příjemce: Digitální učební materiály ve škole, registrační číslo projektu CZ.1.07/1.5.00/34.0527 Střední zdravotnická škola a Vyšší odborná škola zdravotnická, Husova 3, 371 60 České Budějovice

Více

SÁLOVÉ POČÍTAČE. Principy počítačů. Literatura. Harvard Mark I 1944-1959. Grace Murray Hopper ENIAC

SÁLOVÉ POČÍTAČE. Principy počítačů. Literatura. Harvard Mark I 1944-1959. Grace Murray Hopper ENIAC Principy počítačů SÁLOVÉ POČÍTAČE Literatura www.computerhistory.org C.Wurster: Computers An Ilustrated History R.Rojas, U.Hashagen: The First Computers History and Architectures Myslím, že na světě je

Více

Informační a komunikační technologie. 1.7 Počítačové sítě

Informační a komunikační technologie. 1.7 Počítačové sítě Informační a komunikační technologie 1.7 Počítačové sítě Učební obor: Kadeřník, Kuchař - číšník Ročník: 1 1. Základní vlastnosti 2. Technické prostředky 3. Síťová architektura 1. Peer-to-peer 2. Klient-server

Více

Tabulace učebního plánu

Tabulace učebního plánu Tabulace učebního plánu Vzdělávací obsah pro vyučovací předmět : Informační a výpočetní technika Ročník: 3. - 4. ročník (septima - oktáva) Tématická oblast DIGITÁLNÍ TECHNOLOGIE informatika hardware software

Více

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz Vývoj moderních technologií při vyhledávání Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz INFORUM 2007: 13. konference o profesionálních informačních zdrojích Praha, 22. - 24.5. 2007 Abstrakt Vzhledem

Více

Použití programu WinProxy

Použití programu WinProxy JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH PEDAGOGICKÁ FAKULTA KATEDRA INFORMATIKY Použití programu WinProxy pro připojení domácí sítě k internetu Semestrální práce z předmětu Lokální počítačové sítě

Více

Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence

Více

Úvod do počítačových sítí

Úvod do počítačových sítí Úvod do počítačových sítí =spojení dvou a více počítačů za účelem sdílení informací a nebo zdrojů 2 firmy,úřady, nemocnice, státní správa,... komunikace uvnitř firmy a s vnějškem sdílení zdrojů a tím snížení

Více

Číslo projektu: CZ.1.07/1.5.00/34.0290. III/2 Inovace a zkvalitnění výuky prostřednictvím ICT. Zdeněk Dostál Ročník: 1. Hardware.

Číslo projektu: CZ.1.07/1.5.00/34.0290. III/2 Inovace a zkvalitnění výuky prostřednictvím ICT. Zdeněk Dostál Ročník: 1. Hardware. Zlepšení podmínek pro vzdělávání na středních školách Operačního programu Vzdělávání pro konkurenceschopnost Název a adresa školy: Integrovaná střední škola Cheb, Obrněné brigády 6, 350 11 Cheb Číslo projektu:

Více