Základy programování a algoritmizace Publikace vznikla v rámci projektu OPVK Vyškolený pedagog záruka kvalitní výuky na Střední odborné škole veterinární, mechanizační a zahradnické a Jazykové škole s právem státní jazykové zkoušky v Českých Budějovicích, reg. č. CZ.1.07/1.3.40/01.0007. Ing. Roman Blábolil České Budějovice, 2013
Jazyková korektura: Neprošlo jazykovou korekturou Sazba: Ing. Roman Blábolil Ing. Roman Blábolil
- 3 - OBSAH 1 Úvod... 5 2 Základy algoritmizace a programování... 6 2.1 Algoritmus... 6 2.1.1 Možnosti zápisu algoritmů... 7 2.2 Algoritmizace... 9 3 Rozdělení programovacích jazyků... 12 4 Vývojový diagram... 15 4.1 Chyby v algoritmech... 18 4.2 Ukázky algoritmů... 26 4.2.1 Sekvence... 26 4.2.2 Větvení... 26 4.2.3 Cykly... 28 5 Základy programování v PHP... 30 5.1 Princip PHP... 32 5.2 Komentáře... 39 5.3 Příkaz echo... 40 5.4 Escape sekvence... 41 5.5 Spojování řetězců... 43 5.6 Proměnné v PHP... 43 5.7 Operátory... 46 5.8 Proměnná typu Pole... 47 5.9 Výrazy, konstanty... 49 5.10 Inkrementace, dekrementace, postinkrementace, preinkrementace... 50 5.11 Příkazy... 51 5.12 Cykly... 53 5.13 Příkazy break a continue... 55 5.14 Funkce (procedury)... 57 5.15 Vkládání souborů... 58
- 4-5.16 Formátování řetězců... 67 5.17 Regulární výrazy... 69 5.18 Datum a čas... 72
- 5-1 ÚVOD Tato publikace vznikla v rámci projektu OPVK Vyškolený pedagog záruka kvalitní výuky. Cílem publikace je zpracovat základní poznatky ze základů programování a algoritmizace. Publikace se bude zabývat těmito tématy: Základní pojmy Program/Algoritmus Proces vývoje Kompilace Debugging Data a datové struktury Proměnná Datový typ Pole Práce s výrazy Výrazy a operátory Práce s čísly Práce s textovými řetězci Logické výrazy (AND, OR, XOR) Algoritmizace Analýza problému Sekvence, selekce, iterace Diagram toku Modularizace (předdefinované procesy)
- 6 - Programovací jazyky Přehled programovacích jazyků Obecný zápis syntaxe 2 ZÁKLADY ALGORITMIZACE A PROGRAMOVÁNÍ 2.1 ALGORITMUS Algoritmus je posloupnost operací, která řeší daný úkol v konečném počtu kroků. Je to přesný postup, který je potřeba k vykonání určité činnosti. Jinak řečeno - algoritmus je jednoznačný a přesný popis řešení problému. Každý algoritmus musí mít tyto vlastnosti: Rezultativnost (konečnost) algoritmus musí mít začátek a konec. Musí proběhnout v konečném počtu kroků Determinovanost (předurčenost) algoritmus musí být jednoznačný. Všechny operace i jejich návaznosti musí být jednoznačně určeny (definovány) a nic nesmí být náhodné. Činnost algoritmu nesmí záviset na libovůli osoby ani na vlastnostech zařízení, které ho realizují. Obecnost (hromadnost) algoritmus musí řešit úlohu pro různé vstupní hodnoty. Opakovatelnost při stejných vstupních hodnotách musíme dostat vždy stejný výsledek. Správnost algoritmus musí být věcně správný. Srozumitelnost algoritmus musí být srozumitelný i pro uživatele, který daný algoritmus nevytvářel.
- 7-2.1.1 MOŽNOSTI ZÁPISU ALGORITMŮ Slovní vyjádření Používá se pro skupinu lidí, která nemá programátorské vzdělání návody k obsluze, recepty, postup práce. Výhodou je, že se lze domluvit i s laikem. Nevýhodou je malá přehlednost a absence nástrojů k dodržení vlastností algoritmu. Příklad: Algoritmus přípravy polévky ze sáčku Formulace problému: Uvař polévku ze sáčku. Analýza úlohy Vstupní údaje: polévka, voda, hrnec, lžíce, vařič Výstupní údaje: uvařená polévka Analýza: Polévku nesmíme převařit ani vyvařit Sestavení algoritmu Slovní popis: - vyber požadovanou polévku - do hrnce napusť studenou vodu - rozmíchej polévku ve studené vodě lžící - zapni vařič - vař polévku 10 minut - Vypni vařič
- 8 - Matematické vyjádření Používá se tam, kde je možné daný problém popsat matematickým vyjádřením. Výhodou je, že jednoznačný. Nevýhodou může být, že při neošetření vstupních podmínek nemusí být věcně správný Vývojový diagram Je to symbolický, algoritmický jazyk, který se používá pro názorné zobrazení algoritmu. Je to jednoznačný komunikační prostředek při týmové práci, je přehledný a má nástroje k dodržení algoritmu. Výborně se hodí k dokumentačním účelům, kde je přehlednější než výpis programu. Nevýhodou může být, že mu laik nemusí rozumět. Rozhodovací tabulka Tento zápis se používá v případě, kdy se v dané úloze vyskytuje několik možností a vlastní řešení je pro každou možnost jednoznačně popsatelné (rozvrh, tabulka logického součinu..) Výhodou jednoznačný a přehledný zápis. Je výhodný zejména při větším počtu možností řešení. Bývá srozumitelný i laikům. Nevýhodou může být u velkých tabulek ztráta přehlednosti a nemusí se hodit pro každý typ úlohy. Počítačový program Používá se pro zápis instrukcí z vytvořeného algoritmu, kterému počítač rozumí a umí z něho vytvořit strojový kód. Výhodou je forma zápisu, které rozumí člověk i počítač (pokud je vybaven příslušným překladačem). Nevýhodou je, že zápisu rozumí pouze programátor, který umí daný programovací jazyk. Výpis počítačového programu může být málo názorný a nepřehledný.
- 9 - Objektová analýza Tato metoda se používá v objektově orientovaném programování. Výhodou je forma zápisu, které rozumí člověk i počítač (pokud je vybaven příslušným překladačem). Nevýhodou je, že zápisu rozumí pouze programátor, který umí daný programovací jazyk. Výpis počítačového programu může být málo názorný a nepřehledný. 2.2 ALGORITMIZACE Algoritmizace je postup při tvorbě programu pro počítač, kterým lze prostřednictvím algoritmu řešit nějaký problém. Algoritmizaci lze rozdělit do několika částí - formulace problému - analýza úlohy - vytvoření algoritmu - sestavení programu - odladění programu Formulace problému V této části je třeba přesně formulovat požadavky, určit výchozí hodnoty, požadované výsledky, jejich formu a přesnost řešení.
- 10 - Analýza úlohy Při analýze úlohy si ověříme, zda je úloha řešitelná a uděláme si první představu o jejím řešení. Dále zjistíme, zda výchozí hodnoty jsou k řešení postačující a zda má úloha více řešení. Podle charakteru úlohy vybereme nejvhodnější řešení. Vytvoření algoritmu úlohy Provádí se při tvorbě jakéhokoliv programu. Sestavíme jednoznačný sled jednotlivých operací, které je třeba provést, aby byla úloha správně vyřešena. Algoritmus přesně popisuje postup zpracování daného úkolu, nedává však odpověď na daný problém, ale pouze postup, jak ji získat. Sestavení programu Na základě algoritmu řešené úlohy sestavíme program (zdrojový text) v konkrétním programovacím jazyce. Ze zdrojového textu se pomocí překladače do strojového kódu vytvoří spustitelný program. Dá se tedy říci, že dobře provedená analýza úlohy a algoritmizace daného problému je základním předpokladem sestavení programu pro počítač. Odladění programu Cílem odladění je odstranění chyb z programu. Chyby se nejčastěji projeví nesprávnou činností programu nebo špatnými výsledky. Chyby v programech mohou být syntaktické nebo logické. Syntaktické - špatně zapsaný nějaký příkaz. Překlad programu se zastaví a zobrazí se hlášení o chybě. Tyto chyby jsou snadno opravitelné.
- 11 - Logické - program je funkční, ale nedělá co má. Může skončit v nekonečném cyklu. Pro ladění se vždy používá několik kontrolních příkladů. Při odstraňování těchto chyb může pomoci ladící program (debugger) umožňující sledování aktuálního stavu proměnných a krokování. Teprve po odstranění všech druhů chyb můžeme program použít k praktickému řešení úloh. Tyto chyby se velmi špatně identifikují. Důležité pojmy v rámci algoritmizace a programování Proměnná - je to místo v paměti počítače, ve kterém se nachází určitá hodnota Identifikátor - je název proměnné Datový typ - je to určitý typ proměnné char - znak integer - celé číslo real - reálné číslo boolean - logická proměnná Deklarace stanovení proměnných jakého jsou typu. Provádí se vždy na začátku programu. Syntaxe přesné určení, jak se mají jednotlivé příkazy a části programu zapisovat Strojový kód je to programový kód, který jediný dokáže počítač přímo zpracovávat.
- 12-3 ROZDĚLENÍ PROGRAMOVACÍCH JAZYKŮ Strojově orientované - strojový jazyk (jazyk fyzického procesoru) - asembler (jazyk symbolických adres) Vyšší programovací jazyk je to programovací jazyk, jehož příkazy jsou tvořeny pomocí klíčových slov, jejichž význam musí být převeden do strojového kódu, aby mohl program napsaný ve vyšším programovacím jazyce být spuštěn. - obecné - (C, C++, C#, Objekt Pascal, Visual Basic,.NET Framework, Java) - databázové (MS Fox Pro, Oracle) - pro webové klienty (Java, JavaScript, ActiveX) - specializované (makrojazyky, simulační jazyky) Aby mohl procesor napsaný program zpracovat musí být před zpracování přeložen do strojového kódu. To zajistí tzv. překladače. Rozeznáváme dva druhy těchto překladačů. - Překladač neboli kompilátor je program, který ze zdrojového kódu vytvoří spustitelný soubor. Vytvoří instrukce pro procesor. - Interpreter načítá program v textovém zápisu a okamžitě jednotlivé příkazy vykonává. Program tedy není předem přeložený. Používá se například u skriptů ve webových stránkách
- 13 - Strukturované programování Je to soubor doporučení, jak by měl dobře napsaný program vypadat. Tato doporučení vytvářejí jakési mantinely pro programátory. Strukturované programování je založeno na dvou principech. - Složitou úlohu rozdělíme na dílčí úkoly, které řešíme samostatně a metodou shora dolů propojíme úlohu v jeden celek. - Při návrhu řešení dílčích úloh použijeme pouze povolené řídící struktury - sekvence - větvení - cykly - přepínače Objektové programování Je to soubor doporučení, jak by měl dobře napsaný program vypadat. Přínosem objektového programování je také větší strukturovanost a modularita vytvářeného programu. Objektově orientovaný přístup tvorby programu je charakterizován třemi základními vlastnostmi. Obalení (zapouzdření) - je realizováno novým datovým typem objekt. Obsahuje kromě datových položek také řídící struktury metody. Oním obalením tedy můžete rozumět obalení datových položek řídícími strukturami metodami, které zajišťují přístup k datovým položkám. Dědičnost inheritance - umožňuje vytvářet nové objekty jako potomky již existujících objektů předků, přebírat od nich datové položky a metody a modifikovat je či upřesňovat.
- 14 - Polymorfismus (mnohotvarost) - polymorfismus je vlastnost objektové programování, která umožňuje pojmenovat metodu jedním jménem a tato metoda může být společná pro různé objekty ve stromové hierarchii, i když pro každý objekt v této hierarchii se bude chovat různě. Při objektovém přístupu k tvorbě programu nezkoumáme způsob funkce programu, ale způsob změn dat. Objektový program je řízem tokem událostí. Vizuální programování Vizuální programování je dnes většinou objektové a současně strukturované. Spočívá v tom, že velké množství standardně používaných objektů (tlačítka, políčka, práci se soubory) je již připraveno a jen je myší přetahujeme do vytvářeného programu. Vývojové prostředí Je to komplexní nástroj na tvorbu programů. Obsahuje: - překladač pro určený programovací jazyk - nástroje na vizuální tvorbu programu - hotové komponenty programů - nástroje pro ladění a odstraňování chyb
- 15-4 VÝVOJOVÝ DIAGRAM Vývojový diagram je grafické vyjádření požadovaného algoritmu (znázornění jednotlivých příkazů, ze kterých se algoritmus skládá). Pro vývojový diagram se používají stanovené značky, které nelze měnit. Spojnice - orientované - neorientované Obr. 1 Mezní značky ZAČÁTEK KONEC RETURN Obr. 2
- 16 - Ruční zadání vstupních dat R= A Obr. 3 Zpracování VÝPOČET C=A+B Obr. 4 Výstup TISK Obr. 5 Vstup ČTI: A, B Obr. 6
- 17 - Spojka 3 Obr. 7 Podmínka (rozhodování) A>20 ANO NE Obr. 8 Přepínání 1 12 k= k= 30 Obr. 9
- 18 - Cyklus I= 2,8,15 I= 2,8,15 těl o těl o Konec I Konec I Obr. 10 Podprogram 6200 Obr. 11 4.1 CHYBY V ALGORITMECH Při psaní programů musíte dbát na správný zápis matematických vzorců. V programech nelze použít zlomkové čáry. Místo zlomkové čáry se používá lomítko /. Rovnici musíme zapsat takto: X:=(A+B)/(C+D) V programech nelze dále použít (odmocninu) a. (násobení). Místo znaku používáme výraz SQRT a místo znaku. používáme znak *. Místo znaku používáme výraz PI.
- 19 - Porušení rezultativnosti Obr. 12 Špatný algoritmus, protože byla porušena podmínka rezultativnosti - konečnosti - algoritmus musí proběhnout v konečném počtu kroků. Písnička se bude zpívat pořád dokola a nikdy neskončí. Došlo k zacyklení programu. Správné řešení Obr. 13
- 20 - Porušení rezultativnosti Obr. 14 Špatný algoritmus, protože byla porušena podmínka rezultativnosti - konečnosti - algoritmus musí proběhnout v konečném počtu kroků. Co když hned ze začátku je I větší než 10? Došlo k zacyklení programu. Správné řešení Obr. 15
- 21 - Porušení věcné správnosti Obr. 16 Špatný algoritmus, protože byla porušena podmínka věcné správnosti. Algoritmus je funkční, ale dostanete nesprávný výsledek Porušení determinovanosti Obr. 17
- 22 - Špatný algoritmus, protože byla porušena podmínka jednoznačnosti (determinovanost - podmíněnost) - všechny operace i jejich návaznosti musí být jednoznačně určeny (definovány) a nic nesmí být náhodné. Správné řešení Porušení determinovanosti Obr. 18 Obr. 19
- 23 - Špatný algoritmus, protože byla porušena podmínka jednoznačnosti (determinovanost - podmíněnost) - všechny operace i jejich návaznosti musí být jednoznačně určeny (definovány) a nic nesmí být náhodné. Co když ve jmenovateli bude 0? Musíme ošetřit hodnoty, které se blíží k nekonečnu. Pokud je řešení v oboru reálných čísel, nesmí být výraz pod odmocninou záporný Jsou to nejzávažnější chyby v programech. Správné řešení Porušení obecnosti Obr. 20 Obr. 21
- 24 - Špatný algoritmus, protože byla porušena podmínka obecnosti (hromadnosti) - algoritmus musí řešit úlohu pro různé vstupní hodnoty. Správné řešení Porušení opakovatelnosti Obr. 22 Obr. 23
- 25 - Špatný algoritmus, protože byla porušena podmínka opakovatelnosti - při stejných vstupních hodnotách musíme dostat vždy stejný výsledek. Proměnná I je neznámá. Správné řešení Obr. 24
- 26-4.2 UKÁZKY ALGORITMŮ 4.2.1 SEKVENCE Sekvence je nejjednodušším typem algoritmu, který se skládá (kromě mezních značek) pouze ze sekvenčních bloků. Během sekvence nesmí docházet k větvení algoritmu ani k návratu zpět. Obr. 25 4.2.2 VĚTVENÍ Nejčastějším důvodem větvení je ošetření nežádoucích důsledků. Musí být ošetřeny všechny možnosti, které mohou nastat. Situace se musí nejdříve vyhodnotit. Teprve poté se provede činnost. - dělení - výpočet výrazů s odmocninou - další funkce (goniometrické)
- 27 - Obr. 26 Obr. 27
- 28-4.2.3 CYKLY Cykly jsou jedním z nejsilnějších nástrojů algoritmů. Podstatou je opakování určité části algoritmu. Cyklus musí být konečný. - cykly s pevným počtem opakování - cykly řízené podmínkou s podmínkou na začátku cyklu - cykly řízené podmínkou s podmínkou na konci cyklu Cyklus s pevným počtem opakování Obr. 28
- 29 - Cyklus řízený podmínkou - podmínka je na začátku Obr. 29 Cyklus řízený podmínkou - podmínka je na konci Obr. 30
- 30 - Čekací smyčka Obr. 31 5 ZÁKLADY PROGRAMOVÁNÍ V PHP Programovací jazyk PHP (Hypertext preprocessor) je skriptovací jazyk, který běží na straně serveru. Server posílá do vašeho počítače pouze výsledky. Používá se pro tvorbu webových aplikací dynamických stránek. Je postaven na základech jazyka C. Skriptovací jazyk PHP je neustále velmi rychle vyvíjen. Je to nejčastěji používaný modul na internetových serverech. Výhody jazyka PHP: PHP je jazyk, který je relativně jednoduchý na pochopení PHP má syntaxi velmi podobnou jazyku C a je tedy většině vývojářů dost blízký PHP podporuje širokou řadu souvisejících technologií, formátů a standardů Je to otevřený projekt s rozsáhlou podporou komunity Dá se najít velké množství již hotového kódu k okamžitému použití nebo funkční PHP aplikace Podstatná část z hotového kódu je šířena pod nějakou svobodnou licencí a dá se použít ve vlastních projektech
- 31 - PHP si dobře rozumí s webovým serverem Apache i IIS PHP snadno komunikuje s databázemi, jako je MySQL, PostgreSQL atd. PHP je multiplatformní a lze jej provozovat s většinou webových serverů a na většině dnes existujících operačních systémů PHP podporuje mnoho existujících poskytovatelů webhostingových služeb Nevýhody jazyka PHP: PHP je interpretovaný, ne kompilovaný jazyk Interpretovaný jazyk je překládán až za běhu programu. Je pomalejší, ale nemá tak velké formální požadavky. Překládají se interpretrem, ten instrukce zároveň při překladu provádí a to vše na straně serveru. Kompilovaný jazyk je nejdříve celý přeložen a až potom může být spuštěn. Je rychlejší než jazyk interpretovaný, má však vyšší nároky na formální správnost kódu. Překládá se kompilátorem, výsledkem překladu je (většinou).exe soubor. Kdokoli má přímý přístup k serveru, může nahlédnout do vašich PHP skriptů Podpora objektového programování není v PHP na moc dobré úrovni. Protože je PHP aktivně vyvíjen, v budoucích verzích jazyka se mohou některé funkce změnit nebo se mohou chovat jinak než dosud. Mezi nejčastější aplikace psané v PHP patří například: - diskusní fóra - chaty - internetové obchody - informační systémy - redakční systémy -firemní prezentace - dynamické osobní stránky - vyhledávače a katalogy - drobnosti typu počitadla, ankety a mnoho dalších
- 32-5.1 PRINCIP PHP PHP skriptovací jazyk, který běží na serveru. Typický PHP skript obsahuje jednak kusy normálního HTML (XHTML) kódu, a jednak kusy programového kódu PHP. Když webový server obdrží požadavek na zpracování takového skriptu, všechny kusy HTML kódu přeskočí a zpracuje pouze PHP programový kód. Výsledky ze zpracování programového kódu vloží do HTML kódu. Všechny příklady musí být pro svou funkčnost vloženy na internetový server. Příklad: Kód bez PHP //xml version="1.0" encoding="utf-8" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="description" content="... obsah dokumentu.." /> <meta name="author" content="vaše jméno" /> <title>úvod do PHP</title> <link rel="stylesheet" href="styl.css" type="text/css" /> </head> <body> <p>stránka bez PHP. Nevím kolik je hodin.</p> </body> </html> U prvního řádku vložte před značku xml dvě lomítka. Tím zajistíte, že se tento řádek nebude zpracovávat v interpreteru PHP. Použitá sekvence znaků značí začátek xml kódu, ale také to může být začátek PHP kódu. Dvě lomítka pro PHP znamenají poznámku a tento řádek přeskočí.
- 33 - Obr. 32 Obr. 33 Pokud si zobrazíte v prohlížeči zdrojový kód stránky (pomocí pravého tlačítka myši a volby zobrazit zdrojový kód), uvidíte, co přesně do vašeho prohlížeče server poslal. Kód s PHP //xml version="1.0" encoding="utf-8" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="description" content="... obsah dokumentu.." /> <meta name="author" content="vaše jméno" />
- 34 - <title>úvod do PHP</title> <link rel="stylesheet" href="styl.css" type="text/css" /> </head> <body> <p>stránka s PHP. Vím, že právě je echo Date("G:i") hodin.</p> </body> </html> Obr. 34 Obr. 35 Při kontrole poslaného kódu serverem, si všimněte, že server z PHP příkazu vložil do HTML pouze výsledek 13:26. Prohlížeč nemá sebemenší tušení, co všechno se na serveru dělo než mu byl výstup odeslán, vidí jen samotný výsledek.
- 35 - Části PHP kódu se do skriptů vkládají pomocí speciálních značek: a nebo php a Celý soubor může být jeden dlouhý PHP kód. Pak začíná a končí znaky a. V souboru může být kód PHP jen na jednom určitém místě nebo na více místech. V souboru také žádný PHP kód být nemusí. Může se tvářit jako php skript, ale ve skutečnosti je to normální HTML soubor a PHP kód v něm vůbec není. Při uložení PHP souboru musí mít soubor příponu php (nebo další povolené přípony na serveru). Každý programový řádek (ukončená funkce) musí končit znakem středník (;). Programový kód můžete psát v libovolném editoru bez formátování. Naprosto nevhodný je například Word. Jeden z nejlepších programů je český program PSPad (neplacený). Je to program pro tvorbu souborů v různých formátech. Výhody použití programu PSPad: Pomocí protokolu FTP možnost práce přímo na internetovém serveru Velmi jednoduchá a intuitivní práce Neomezená délka editovaného textu Možnost otevření více dokumentů současně Záznam maker s možností uložení na disk a ruční editace Práce s projekty Hledání a nahrazování v souborech Nalezení rozdílů v textových souborech (porovnání verzí) Zvýraznění syntaxe Automatické rozpoznání syntaxe podle typu souboru s možností manuální změny Volitelné zobrazení čísel řádků, podbarvení aktuálního řádku, pravítko Převody velikosti písmen (malá, velká, první písmena velká)
- 36 - Program velice dobře zvýrazňuje syntaxi různých jazyků. Po spuštění si nastavte syntaxi pro PHP. Obr. 36 Pokud vytvořený PHP soubor uložíte na lokální a potřebujete vyzkoušet jeho funkčnost, musíte ho nahrát na internetový server. To můžete provést například pomocí programu Total Commander. Postup: 1. Spusťte Total Commander 2. Zvolte ikonu FTP 3. Zvolte tlačítko Nové připojení
- 37-4. Zadejte Relaci (soscb) 5. Zadejte hostitele (soscb.cz) 6. Zatrhněte funkci Použít pasivní režim 7. Zadejte OK a pak Připojit 8. Po odeslání zadejte přístupové jméno 9. Zadejte přístupové heslo 10. Soubory se nakopírujte do vašeho adresáře 11. Spusťte php skript - např.: www.soscb.cz/vyuka/vaše jméno/pokus.php Další možností je nakonfigurovat si v lokálním počítači webový server Apache a podporu pro php. Zjištění funkčnosti PHP Pokud se vám zdá, že vaše programy nejsou funkční, je dobré nejdříve zkontrolovat, zda je na serveru nainstalován modul PHP. Vytvořte soubor s následující funkcí a uložte ho na server (nezapomeňte na příponu souboru - php): phpinfo ();
- 38 - Pokud je vše v pořádku a PHP je nainstalován, zobrazí se podrobný výpis nastavení PHP. Jak jste již četli, jednotlivé instrukce se oddělují středníkem. Pokud to neprovedeme, dojde k syntaktické chybě a systém zobrazí v prohlížeči: Obr. 37 Výhodou je, že nám systém oznámí, na kterém řádku se uvedená chyba vyskytuje. Dejte pozor, pokud je funkce na více řádcích, může být chyba nad uvedeným řádkem. Špatně echo "První řádek" echo "Druhý řádek"
- 39 - Správně: echo "První řádek" ; echo "Druhý řádek" ; 5.2 KOMENTÁŘE Pokud píšete delší program, používejte v programovém kódu komentáře. Tím zajistíte, že se v kódu vyznáte i po několika měsících či letech. Komentář je něco, co program při zpracování ignoruje a slouží tedy pouze uživateli. Komentáře mohou být v PHP jednořádkové nebo víceřádkové. // - (dvě dopředná lomítka) jednořádkový komentář # - (mřížka) jednořádkový komentář dvojice /* a */ (lomítko+hvězdička a hvězdička+lomítko) víceřádkový kometář // skriptu je jedno, co tady napíšu # skriptu je úplně jedno, co tu bude /* Nevím, jestli to, co napsáno v tomto skriptu bude fungovat. Ještě se na to budu muset podívat. */
- 40 - Víceřádkovým komentářem můžete zakomentovat celý blok textu velice rychle, a také velice špatně. Pamatujte, že víceřádkové komentáře nelze vnořovat. První sekvence */ totiž celý komentář ukončí. Následující kód tedy skončí chybou: /* Chci to zakomentovat. To by přece nemělo vadit. /* Ale díky "vnořenému" víceřádkovému komentáři... už to vadí */ */ 5.3 PŘÍKAZ ECHO Příkaz echo vytiskne jeden nebo více řetězců. echo "Dnes svítí sluníčko"; echo "Dnes svítí sluníčko ", "Zítra bude pršet ", "Pozítří bude oblačno"; Víceřádkový řetězec Budete-li chtít vytisknout víceřádkový řetězec, můžete provést něco jako:
- 41 - echo "Tohle bude první řádek Tohle bude druhý řádek Tohle bude třetí řádek" Rovnocenný zápis bude i zápis s tzv. speciální sekvencí znaků \n. echo "Tohle bude první řádek\ntohle bude druhý řádek\ntohle bude třetí řádek" \n je jednou z tzv. escape sekvencí. 5.4 ESCAPE SEKVENCE Pomocí speciálních zápisů můžeme zobrazit znaky, které by jinak PHP zpracoval jako součást příkazu. Sekvence Význam \n Nový řádek \" Uvozovky \r Přechod na začátek řádku \t Tabelátor \\ Zpětné lomítko \$ Dolar Takže, budete-li chtít donutit příkaz echo, aby ve výstupu zobrazil skutečnou uvozovku, můžete napsat něco jako:
- 42 - echo "PHP už \"běžně\" programuji" ; Pokud jste si zkoušeli uvedený příklad s řádky a máte pocit, že tam cosi nehraje, máte pravdu. V prohlížeči totiž budou všechny údaje na jednom řádku. Musíte si uvědomit, jak prohlížeč předané informace zobrazuje. Když pošlete prohlížeči požadavek na skript uvedený výše a necháte si zobrazit zdrojový kód stránky která dorazí, zjistíte, že tam ty konce řádku opravdu jsou. HTML ale nezalamuje řádek tehdy, když je znak konce řádku v kódu, HTML má k tomu značku <br />. Je samozřejmě možné vložit značku HTML do řetězce v PHP, třeba takto: echo "Tohle bude první řádek<br />Tohle bude druhý řádek<br />Tohle bude třetí řádek" ; Prohlížeč obdrží následující kód: Tohle bude první řádek<br />Tohle bude druhý řádek<br />Tohle bude třetí řádek" ; Pokud budete chtít být bezchybní a mít validní kód, můžete napsat kód i takto: echo "Tohle bude první řádek<br />\ntohle bude druhý řádek<br />\ntohle bude třetí řádek" ; Prohlížeč obdrží následující kód: Tohle bude první řádek<br /> Tohle bude druhý řádek<br /> Tohle bude třetí řádek" ;
- 43-5.5 SPOJOVÁNÍ ŘETĚZCŮ Spojování řetězců se prování pomocí operátoru. (tečka). echo "Klidně si spojím jméno "."s příjmením"; Tečka zde vede ke spojení, zřetězení řetězců. Je rovněž možné spojit více než dva řetězce. 5.6 PROMĚNNÉ V PHP Každý programovací jazyk pracuje s nějakými hodnotami. To, do čeho se tyto hodnoty ukládají, se nazývá proměnné. Každá proměnná má: - název (někdy se mu říká identifikátor) - hodnotu (někdy se označuje termínem literál) V každém okamžiku je hodnota proměnné v programu jednoznačně daná, během programu se však může měnit Typy proměnných Typ Název v PHP Popis
- 44 - Logický typ Boolean Uchovává hodnotu "pravda" nebo "nepravda". Zapisuje se jako TRUE a FALSE Celočíselný typ Integer Uchovává celá kladná i záporná čísla (a nulu) (-2 bilióny až + 2 bilióny) Desetinné číslo Float nebo Real Uchovává desetinná čísla s přesností obyčejně na 14 desetinných míst (velikost čísla má 308 nul). Řetězec String Uchovává texty neboli řetězce. Řetězec je znak nebo sada znaků, v PHP prakticky neomezené délky. - Každá proměnná musí mít jednoznačný název. Ten v PHP začíná znakem dolaru ($) a následuje (bez mezery) nějakým pojmenováním. - První znak toho pojmenování musí být buď písmeno a-z nebo podtržítko. Nesmí to být číslo ani nic jiného. - Názvy proměnných v PHP rozlišují mezi malými a velkými písmeny, takže pozor na to. Praxe bývá většinou taková, že se proměnné píší malými písmeny. - Desetinná čísla se zadávají s tečkou, ne s čárkou. - Řetězce se uzavírají do uvozovek nebo do apostrofů. Ukázky proměnných //logický typ $mam_malo_penez = TRUE;
- 45 - //celočíselný typ $plat = 10000; //desetinné číslo $disketa = 3.5; //řetězec $prohlaseni = "Příští měsíc budou prázdniny." ; //Proměnné vypíšete opět příkazem echo. echo $mam_malo_penez."<br />"; echo $plat."<br />"; echo $disketa."<br />"; echo $prohlaseni."<br />"; Běžné chyby v proměnných // tohle bude špatně. Proměnná nesmí začínat číslem $3sestry = "tři sestry" ; // tohle sice projde, ale nic to nevypíše (velikost písmen v názvu) $rok = 2004; echo $Rok;
- 46-5.7 OPERÁTORY Operátor se používá k zjištění hodnoty pomocí provedení procedury. OPERÁTOR OPERACE PŘÍKLAD POPIS + Sčítání 1 + 2 součet 1 a 2 = 3 - Odečítání 2 1 rozdíl 2 a 1 = 1 * Násobení 2 * 1 součin 2 a 1 = 2 / dělení 3 / 2 podíl 3 a 2 = 1.5 % zbytek (modulo) 3 % 2 počítá zbytek celočíselného dělení = 1 == Rovnost $a == $b $a a $b mají stejnou hodnotu < Menší $a < $b $a je menší než $b > Větší $a > $b $a je větší než $b <= menší nebo rovno $a <= $b $a je menší nebo rovno $b => větší nebo rovno $a => $b $a je větší nebo rovno $b!= Nerovnost $a!= $b $a se nerovná $b <> Nerovnost $a <> $b $a se nerovná $b
- 47-5.8 PROMĚNNÁ TYPU POLE V PHP je kromě základních datových typů (celá čísla, desetinná čísla, logické hodnoty a řetězce) k dispozici i datový typ pole. To je speciální struktura, která může v jedné proměnné obsahovat sadu hodnot. Pole má prvky; každý prvek má index nebo klíč a hodnotu. Definice pole $jmeno[1]="petr"; $jmeno[2]="pavel"; $jmeno[3]="maruška" ; $jmeno[4]="eva"; $jmeno[5]="roman"; Tímto zápisem vznikne proměnná $jmeno (pole), která obsahuje pět prvků, z nichž každý má svůj index (například trojku) a hodnotu (Maruška). Z toho vidíte, že pole se v PHP zapisují jako každá jiná proměnná, pouze za názvem mají v hranatých závorkách index. Toto pole je indexované. Někdy může ale být šikovnější rozlišit od sebe prvky pole řetězcem, čímž vznikne tzv. asociativní pole. $pocet_lidi["praha"]=1000000; $pocet_lidi ["Ústí nad Labem"]=100000; $pocet_lidi ["Horní Lhota"] = 350; Obecně může být asociativní pole užitečné v případě, kdy budete chtít rozlišovat prvky podle něčeho jiného než podle čísel. Index pole můžeme vynechat a PHP jej dosadí za nás. Také můžete zadat první hodnotu, od které se bude index odvíjet. Další možnost je použít v PHP funkci array, která provede totéž.
- 48 - $jmeno[]="petr"; $jmeno[]="pavel"; $jmeno[]="maruška" ; $jmeno[]="eva"; $jmeno[]="roman"; nebo pomocí funkce array, což je ještě kratší a je to naprosto rovnocenný zápis: $jmeno=array("petr", "Pavel", "Maruška", "Eva", "Roman"); Pamatujte, že PHP standardně čísluje pole od nuly, ne od jedničky. Aby příklad skutečně fungoval jako ten úvodní, musíte do prvního indexu zadat číslo 1. $jmeno[1]="petr"; $jmeno[]="pavel"; $jmeno[]="maruška" ; $jmeno[]="eva"; $jmeno[]="roman"; nebo $jmeno=array(1=>"petr", "Pavel", "Maruška", "Eva", "Roman");
- 49 - Příklad: Z definovaného pole vypište první a poslední záznam $jmeno[]="petr"; $jmeno[]="pavel"; $jmeno[]="maruška" ; $jmeno[]="eva"; $jmeno[]="roman"; echo $fronta[0]; <br /> echo $fronta[4]; 5.9 VÝRAZY, KONSTANTY Výrazem je v PHP cokoliv, co má nějakou hodnotu. Konstanta je v PHP něco jako proměnná, ale během programu svou hodnotu nemění. Konstanty se definují pomocí funkce define a zapisují se velkými písmeny. define ("BROWSER", "IE 9"); define ("OS", "Windows 7"); echo "Váš browser je ".BROWSER." a Váš systém je ".OS;