+ All Categories
Home > Documents > Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v...

Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v...

Date post: 03-Mar-2020
Category:
Upload: others
View: 11 times
Download: 0 times
Share this document with a friend
76
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
Transcript
Page 1: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

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

Page 2: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

Jazyková korektura: Neprošlo jazykovou korekturou

Sazba: Ing. Roman Blábolil

© Ing. Roman Blábolil

Page 3: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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

Page 4: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 4 -

5.16 Formátování řetězců ................................................................................................................................ 67

5.17 Regulární výrazy ........................................................................................................................................ 69

5.18 Datum a čas .................................................................................................................................................. 72

Page 5: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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)

Page 6: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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.

Page 7: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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č

Page 8: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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ý.

Page 9: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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í.

Page 10: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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é.

Page 11: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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.

Page 12: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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

Page 13: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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.

Page 14: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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

Page 15: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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

Obr. 2

ZAČÁTEK KONEC RETURN

Page 16: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 16 -

Ruční zadání vstupních dat

Obr. 3

Zpracování

Obr. 4

Výstup

Obr. 5

Vstup

Obr. 6

R= A

VÝPOČET C=A+B

TISK

ČTI: A, B

Page 17: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 17 -

Spojka

Obr. 7

Podmínka (rozhodování)

Obr. 8

Přepínání

Obr. 9

3

A>20 ANO

NE

k= 1 12

30

k=

Page 18: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 18 -

Cyklus

Obr. 10

Podprogram

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.

I= 2,8,15

těl

o

Konec I

I= 2,8,15

těl

o

Konec I

6200

Page 19: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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

Page 20: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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

Page 21: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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

Page 22: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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í

Obr. 18

Porušení determinovanosti

Obr. 19

Page 23: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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í

Obr. 20

Porušení obecnosti

Obr. 21

Page 24: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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í

Obr. 22

Porušení opakovatelnosti

Obr. 23

Page 25: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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

Page 26: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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é)

Page 27: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 27 -

Obr. 26

Obr. 27

Page 28: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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

Page 29: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 29 -

Cyklus řízený podmínkou - podmínka je na začátku

Obr. 29

Cyklus řízený podmínkou - podmínka je na konci

Obr. 30

Page 30: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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

Page 31: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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

Page 32: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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čí.

Page 33: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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" />

Page 34: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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.

Page 35: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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á)

Page 36: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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í

Page 37: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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 ();

?>

Page 38: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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"

?>

Page 39: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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.

*/

?>

Page 40: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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:

Page 41: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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:

Page 42: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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" ;

Page 43: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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

Page 44: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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;

Page 45: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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; ?>

Page 46: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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

Page 47: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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éž.

Page 48: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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"); ?>

Page 49: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 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;

?>

Page 50: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 50 -

5.10 INKREMENTACE, DEKREMENTACE, POSTINKREMENTACE, PREINKREMENTACE

Inkrementace – při inkrementaci se hodnota proměnné zvýší o 1.

<? $a = 10; $b = ++$a; echo $b; ?>

Dekrementace – při dekrementaci se sníží hodnota proměnné o 1.

<? $a = 10; $b = --$a; echo $b; ?>

Postinkrementace

<? $a = 10; $b = $a++; echo $a. "<br />"; echo $b; ?> Při postinkrementaci se v tomto příkladu výraz $a++ nejdříve vyhodnotí, jeho hodnota se

přiřadí

proměnné b. Následně je inkrementována proměnná a.

Proměnná a má hodnotu 11 a proměnná b má hodnotu 10.

Page 51: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 51 -

Preinkrementace

<? $a = 10; $b =++ $a; echo $a. "<br />"; echo $b; ?>

Při preinkrementaci se v tomto příkladu nejdříve inkrementuje proměnná a. Následně je

výraz ++$a vyhodnocen - jeho hodnota přiřazena proměnné b.

Proměnná a má hodnotu 11 a proměnná b má hodnotu 11.

5.11 PŘÍKAZY

Příkazy jsou kostrou celého programu. Udělují programům základní schopnost rozhodování,

která je zapotřebí pro většinu početních úloh.

PŘÍKAZY PRO VĚTVENÍ PROGRAMŮ

Tyto příkazy rozhodují o tom jaký blok kódu se provede a za jakých podmínek.

V PHP jsou dvě podmíněné konstrukce. První je if...elseif...else a druhá switch...case.

Page 52: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 52 -

Příkaz if

<? // Jan se vypíše, jen pokud bude $jmeno Jan if ($jmeno == "Jan") echo ("Jan"); ?>

<? // Jméno a příjmení se vypíše pouze tehdy, pokud jméno bude Jan a příjmení Novák if ($jmeno == "Jan" AND $prijemni == "Novák") { echo ("Jan"); echo ("Novák"); } ?>

PHP také umožňuje používat rozvětvené podmínky. Pomocí klíčového slova else můžete určit

blok kódu, který se provede, pokud je daná podmínka nepravdivá. Také máte klíčové slovo

elseif, který vám v případě nesplnění hlavní podmínky umožňuje testovat alternativní

podmínky.

<? //testuje se zadané číslo v proměnné $i $i=0; if ($i < 0) { echo ("Záporné"); } elseif ($i == "0") { echo ("Nula"); } else { echo ("Kladné"); } ?>

Page 53: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 53 -

Příkaz switch

Příkaz switch se používá, pokud testujeme jednu proměnnou s více možnými hodnotami.

<?php //testuje se jaký řetězec je v proměnné $stat $stat="sk"; switch ($stat) { case "cz": echo "Česká republika"; break; case "sk": echo "Slovenská republika"; break; default: echo "Odjinud"; } ?>

Příkaz switch porovnává hodnotu proměnné $stat s každou hodnotou klauzule case. Pokud

nalezne odpovídající hodnotu, provede příkazy spojené s touto volbou až do příkazu break.

5.12 CYKLY

Cykly nám umožňují provádět určitou část kódu opakovaně až do nastaveného počtu nebo

splnění podmínky. V PHP jsou dva typy cyklů.

While - provede znovu daný kód jen v případě že je splněna daná podmínka.

For – tomuto cyklu dopředu zadáte, kolikrát má daný kód provést.

Page 54: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 54 -

Příkaz while

Výpis čísel od 1 do 10

<? $i = 0; while ($i <= 9) { $i++; echo $i; } ?>

Výpis čísel od 1 do 10 do tabulky

<table> <tr><td>Číslo</td></tr> <? $i=1; while ($i<=10) { echo "<tr><td>".$i."</td></tr>\n"; $i++; } ?> </table>

Nekonečné smyčky

Při nepozornosti může vzniknout nekonečná smyčka – program nikdy nebude mít konec. Na

serveru bývá většinou zapnuta ochrana a program se po 30 sekundách násilně ukončí.

V opačném případě by mohlo dojít k zahlcení serveru.

<? $i=1; while ($i=1) $i++; echo $i; ?>

Page 55: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 55 -

Příkaz for

<table> <tr><td>Číslo</td></tr> <? for ($i=1; $i<=10; $i++) echo "<tr><td>".$i."</td></tr>"; ?> </table>

Vnořené smyčky

(malá násobilka)

<table> <? for ($radek=1; $radek<=10; $radek++): echo "<tr>"; for ($sloupec=1; $sloupec<=10; $sloupec++): echo "<td>".$radek*$sloupec."</td>"; endfor; echo "</tr>"; endfor; ?> </table>

5.13 PŘÍKAZY BREAK A CONTINUE

Smyčky nemusejí probíhat vždy řádně celým cyklem. Někdy může být výhodné provádění

cyklu přerušit. K tomu slouží příkaz break.

break

Úprava předchozího příkladu tak, aby vracel pouze čísla do padesáti.

Page 56: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 56 -

<table> <? for ($radek=1; $radek<=10; $radek++): echo "<tr>"; for ($sloupec=1; $sloupec<=10; $sloupec++): if ($radek * $sloupec>50) break; // to je ten přidaný řádek echo "<td>".$radek*$sloupec."</td>"; endfor; echo "</tr>"; endfor; ?> </table>

Continue

Úprava předchozího příkladu tak, aby vracel pouze čísla větší než padesát.

<table> <? for ($radek=1; $radek<=10; $radek++): echo "<tr>"; for ($sloupec=1; $sloupec<=10; $sloupec++): if ($radek * $sloupec<50) continue; // to je ten přidaný řádek echo "<td>".$radek*$sloupec."</td>"; endfor; echo "</tr>"; endfor; ?> </table>

Page 57: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 57 -

5.14 FUNKCE (PROCEDURY)

Funkce jsou v PHP nezbytným programovacím prostředkem. Procedury i funkce se v PHP

definují klíčovým slovem function.

Procedura

Procedura je jednoduše řečeno kus kódu, který se může volat samostatně. Většinou se do

procedury umisťují ty části kódu, které se v programu opakují nebo se procedury používají

pro větší přehlednost.

<? function tabulka() { ?> <table> <tr><td>1</td><td>2</td></tr> <tr><td>3</td><td>4</td></tr> </table> <? } ?> Použití procedury tabulka

<? echo "Toto je první tabulka"; tabulka(); echo "Toto je druhá tabulka"; tabulka(); ?>

Funkce

<? function dvaplusdva() {

Page 58: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 58 -

return 2+2; } ?>

Výraz, který je uveden za return se vrátí jako výsledná hodnota a provádění funkce tím končí.

cokoli, co je uvedeno jako příkaz za klíčovým slovem return už se neprovede.

Funkce může mít více vstupních parametrů. Ty se pak oddělují čárkou. Funkce v PHP mohou

být rekurzivní. To znamená, že funkce může volat sebe samu. Funkce nemůže vracet více než

jeden výstupní parametr. Ale může vracet pole, takže se to dá obejít. Jedna uživatelská

funkce může volat jinou. Na pořadí, v jakém jsou uvedeny ve skriptu, přitom nezáleží.

5.15 VKLÁDÁNÍ SOUBORŮ

Funkce pro vkládání souborů použijete při vkládání částí kódu do webové stránky - záhlaví,

zápatí, kontaktní informace, vložení počítadla, vložení často používaných částí kódu apod.

Výhodou je úspora místa ne serveru a daleko snazší úprava určité funkce nebo části

opakujícího se kódu.

K tomuto účelu se používají příkazy require a include. Příkaz zadaný soubor vloží na místo,

kde se tento příkaz nachází.

require "soubor.php"; // požadovat

require ("soubor.php"); // volání ve tvaru fce

include "soubor.php"; // vložit

include ("soubor.php"); // volání ve tvaru fce

Page 59: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 59 -

require - při neexistenci souboru se skript ukončí s fatální chybou

include - při neexistenci souboru zahlásí varování a pokračuje dále

U vkládaných souborů můžeme použít libovolnou příponu. Často se používá přípona .inc. Tím

lze bezpečně poznat, že daný soubor je určen pro vložení do jiného souboru a ne pro přímé

volání.

Tento způsob znamená však velké bezpečnostní riziko. Soubory s příponou .inc nejsou

zpracovány serverem, takže kdokoliv, kdo zná jeho jméno si může zobrazit celý text.

Používejte standardní přípony pro php.

Ukázka webové stránky

Obr. 38

Page 60: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 60 -

HTML tvořící webovou stránku

<!-- začátek hlavičky --> <?//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> <!-- konec hlavičky --> <!-- začátek úvodu --> <body> <div style="background-color: #FFFF00"> <h2 align="center">Střední odborná škola veterinární a mechanizační a zahradnická<br />a Jazyková škola s právem státní jazykové zkoušky</h2> </div> <div><p>Rudolfovská 92, 372 16&nbsp; České Budějovice, telefon: 387 924 111, e-mail: <a href="mailto:[email protected]">[email protected]</a></p><br /><hr /> </div> <!-- konec úvodu --> <!-- začátek obsahu --> <p><b><a href="http://www.soscb.cz/mech.htm">Obor: MECHANIZACE A SLUŽBY</a></b></p> <p><b><a href="http://www.soscb.cz/vet.htm">Obor: VETERINÁŘSTVÍ</a></b> <p><b><a href="http://www.soscb.cz/zah.htm">Obor: ZAHRADNICTVÍ</a></b> <!-- konec obsahu --> <!-- začátek patičky --> <p>&nbsp;</p><hr /><p><b>IČ:</b> 60075911<br /><b>DIČ:</b> CZ60075911</p> </body> </html> <!-- konec patičky -->

Page 61: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 61 -

PHP tvořící tu samou stránku jako v předchozí ukázce. K tomuto souboru náleží další tři

soubory – hlavicka_inc.php, uvod_inc.php a paticka_inc.php.

<? include "hlavicka_inc.php"; include "uvod_inc.php"; ?> <!-- konec úvodu --> <!-- začátek obsahu --> <p><b><a href="http://www.soscb.cz/mech.htm">Obor: MECHANIZACE A SLUŽBY</a></b></p> <p><b><a href="http://www.soscb.cz/vet.htm">Obor: VETERINÁŘSTVÍ</a></b> <p><b><a href="http://www.soscb.cz/zah.htm">Obor: ZAHRADNICTVÍ</a></b> <!-- konec obsahu --> <? include "paticka_inc.php"; ?>

hlavicka_inc.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>

uvod_inc.php

<body> <div style="background-color: #FFFF00"> <h2 align="center">Střední odborná škola veterinární a mechanizační a

Page 62: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 62 -

zahradnická<br />a Jazyková škola s právem státní jazykové zkoušky</h2> </div> <div><p>Rudolfovská 92, 372 16&nbsp; České Budějovice, telefon: 387 924 111, e-mail: <a href="mailto:[email protected]">[email protected]</a></p><br /><hr /> </div>

paticka_inc.php

<p>&nbsp;</p><hr /><p><b>IČ:</b> 60075911<br /><b>DIČ:</b> CZ60075911</p> </body> </html>

Práce se soubory

Soubory se používají pro ukládání dat pro pozdější použití. Dalším a lepším způsobem jak

ukládat data je použití databáze.

Abychom mohli zapisovat do souboru, musíte:

1. Otevřít soubor - pokud neexistuje, tak ho vytvořit

2. Zapsat do souboru

3. Zavřít soubor

Otevření souboru

K otevření souboru použijete funkci - fopen(název_souboru, mód), Otevřený soubor musíme

vždy uzavřít funkcí fclose (jméno proměnné, do které jste soubor otevřeli).

Page 63: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 63 -

$fp = fopen("text.txt", "w");

Módy:

r čtení od začátku

r+ čtení a zápis od začátku

w zápis (pokud soubor existuje, smaže se jeho obsah)

w+ zápis a čtení od začátku

a doplňování (zápis) od konce

a+ doplňování a čtení od konce

Přečtení souboru

readfile ("text.txt");

Pokud soubor nebude existovat, vydá varovné hlášení: Warning: readfile(text.txt)

[function.readfile]: failed to open stream: .....

Čtení ze souboru po řádcích

fgets() - přečte vždy jeden řádek, dokud nenarazí na znak nové řádky

<? $fp = fopen ("text.txt", "r"); $cti = fgets ($fp, 100); echo $cti; fclose ($fp); //uzavření souboru ?>

Page 64: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 64 -

Čtení ze souboru po řádcích - výpis všech řádků

<? $fp = fopen ("text.txt", "r"); while ($fp) { $cti = fgets ($fp, 100); echo $cti; } fclose ($fp); ?>

Tato konstrukce zahlásí chybu, protože jsme neurčili, kdy má čtení skončit.

Kdy zastavit čtení

feof() - Vrátí true, pokud ukazatel ukazuje na konec souboru (File End OF File)

<? $fp = fopen ("text.txt", "r"); while (!feof($fp)) { $cti = fgets ($fp, 100); echo $cti."<br />"; } fclose ($fp); ?>

Zápis do souboru

Zápis do souboru provedete příkazem fwrite.

<? $fp = fopen ("text.txt", "a+"); fwrite ($fp, "Hedvika"."\n"); fclose ($fp);

Page 65: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 65 -

$fp = fopen ("text.txt", "r"); while (!feof($fp)) { $cti = fgets ($fp, 100); echo $cti."<br />"; } fclose ($fp); ?>

Pohyb uvnitř souboru

rewind() - nastaví pozici ukazatele na začátek souboru

ftell() - oznámí, jak daleko se ukazatel dostal v souboru (v bytech)

fseek() - nastaví ukazatel na libovolné místo v souboru (v bytech)

Smazání souboru

unlink()

např.: unlink ("text.txt");

Primitivní počítadlo

<?//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>

Page 66: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 66 -

<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> <? $file = fopen ("text.txt","r+"); $pocet = fgets ($file) + 1; rewind ($file); //nastavení na začátek souboru fwrite ($file, $pocet); fclose ($file); ?> <h1>Stránka s počítadlem</h1> <p>Jste <? include ("text.txt"); ?>. návštěvník této stránky</p> </body> </html>

Ověřování existence souboru

<? if (file_exists ("text.txt")) echo "Soubor existuje - spouštím počítadlo"; else { echo "Soubor neexistuje - založím ho!"; $file = fopen ("text.txt","w"); fclose ($file); } $file = fopen ("text.txt","r+"); $pocet = fgets ($file) + 1; rewind ($file); fwrite ($file, $pocet); fclose ($file); ?>

Page 67: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 67 -

5.16 FORMÁTOVÁNÍ ŘETĚZCŮ

Ořezávání řetězců

chop() - ořízne prázdné znaky na konci

ltrim() - ořízne prázdné znaky vlevo

trim() - ořízne prázdné znaky na začátku a na konci

$name=trim($name)

Změna velikosti písmen

strtoupper - všechna písmena velká

strtolower - všechna písmena malá

ucfirst - první písmeno v řetězci velké

ucwords - první písmena všech slov velká

<? $text = "aHoj pavLe<br />"; echo strtoupper($text). "<br />"; echo strtolower($text) . "<br />"; echo ucfirst($text) . "<br />"; echo ucwords($text); ?> Funkce pro spojování a dělení řetězců

Page 68: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 68 -

implode(separátor, pole) - spojí řetězce daným separátorem

explode(separátor, řetězec) - vytvoří pole, roztrháním řetězce dle daného separátoru

substr(řetězec, začátek, konec) - umožní pomocí počátečního a koncového znaku získat

podřetězec z řetězce

implode

Ukázka spojení dvou řetězců z pole

<? $jmeno = Array("Roman", "Blábolil"); $celejmeno = implode (" ", $jmeno); echo $celejmeno; ?>

explode

Ukázka oddělení jména od domény u e-mailové adresy

<? $email = ("[email protected]"); $pole = explode ("@", $email); echo $pole[0]."<br />"; echo $pole[1]; ?>

Vyhledávání řetězců

strstr(řetězec, hledaný řetězec) - vyhledá daný řetězec nebo znak

stristr(řetězec, hledaný řetězec) - nerozlišuje velikost písmen

Page 69: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 69 -

5.17 REGULÁRNÍ VÝRAZY

Regulární výrazy se používají k popsání vzoru uvnitř textu. Například řetězec "škola"

odpovídá regulárnímu výrazu "škola", ale také "škol", "kol" apod. V regulárním výrazu

můžete použít speciální znaky, které nám pomohou popsat vlastnosti hledaného výrazu.

^ označuje začátek řetězce

( ^abc vyhovuje každý řetězec začínající "abc")

$ označuje konec řetězce

(abc$ vyhovuje každý řetězec končící "abc", ^abc$ vyhovuje pouze řetězec "abc")

"." zastupuje libovolný znak

(^.luh$ vyhovují řetězce "pluh", "dluh")

"*" označuje opakování předcházejícího znaku nula- a vícekrát

(^ab*$ vyhovují řetězce "a", ab", abb", abbb")

"+" označuje opakování předcházejícího znaku jednou- a vícekrát

(^ab+$ vyhovují řetězce ab", abb", abbb", [a-z]+ nejméně jeden znak z povolených znaků)

"?" označuje opakování předcházejícího znaku nula- nebo jedenkrát

(^ab?$ vyhovují pouze řetězce "a", ab")

Page 70: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 70 -

"{2,4}" označuje opakování předchozího znaku 2 až 4-krát

(^ab{2-4}$ vyhovují řetězce "abb", "abbb" a "abbbb")

{2,} označuje opakování předchozího znaku alespoň 2-krát

[] zastupuje jeden znak ze seznamu v závorkách

"^" na začátku seznamu znamená negaci (tedy závorky zastupují jeden znak, který není na

seznamu)

(^[^0-9] vyhovují řetězce nezačínající číslicí)

"|" má význam logického OR

(^(b|cd)ef$ vyhovují řetězce "bef" a "cdef")

"()" kulaté závorky slouží k seskupení řetězce. Opakovací značky (*, +, ?) se pak vztahují na

celý obsah závorky, ne pouze na jeden znak.

(^(abc)*$ vyhovují řetězce "", "abc", "abcabc", abcabcabc")

"\." označuje znak ".", "\\" označuje znak "\"

(\. Vyhovuje libovolný řetězec obsahující alespoň jednu tečku)

Množiny a třídy znaků

[a-z] - množina povolených znaků

[aeiouy] - množina povolených znaků

Page 71: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 71 -

[a-zA-Z] - množina povolených znaků (velká i malá písmena)

[^a-z] - množina nepovolených znaků

Příklad:

Chceme zjistit, zda je zadaná e-mailová adresa ve správném tvaru a korektní.

jméno@doména.národní_doména

jméno - může obsahovat velká i malá písmena, číslice, podtržítko, pomlčku a tečku,

minimálně jeden znak

@ - povinný znak

doména - může obsahovat velká i malá písmena, číslice a pomlčku, minimálně jeden znak

. - povinný znak

národní_doména - může obsahovat velká i malá písmena, číslice, pomlčku a tečku,

minimálně jeden znak

^[a-zA-Z0-9_.-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9.-]+$

Pomlčka a tečka musí být "ocejchovaná" obráceným lomítkem, aby nebyla chápána

například jako spojovník.

Page 72: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 72 -

Vyhledávání řetězce pomocí regulárních výrazů

ereg(podřetězec, řetězec, pole) - prochází řetězec a pátrá po zadaném podřetězci. Nalezený

řetězec se může uložit do pole

eregi(podřetězec, řetězec, pole) - nerozlišuje velikost písmen

Otestování e-mailové adresy

<? $email = "[email protected]"; if (eregi("^[a-zA-Z0-9_.-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9.-]+$", $email)) { echo "Adresa ". $email. " je platná"; exit; } echo "Adresa ". $email. " není platná. Zadejte ji zvovu"; ?>

5.18 DATUM A ČAS

date() - funkce k získání a naformátování data a času

echo date ("j. m. Y");

Formátovací kódy pro funkci date

a - am, pm A - AM, PM B - univerzální formát času d - den v měsíci (01-31) D - den v týdnu (Mon - Sun) F - celé jméno daného měsíce

Page 73: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 73 -

g - hodina (1-12) G - hodina (0-23) h - hodina (01-12) H - hodina (00-23) i - minuty (00-59) j - den v měsícu (1-31) l - den v týdnu (Monday - Sunday) m - číslo měsíce (01-12) M - jméno měsíce (Jan - Dec) n - číslo měsíce (1-12) s - vteřiny (00-59) U - celkový počet vteřin od 1. ledna 1970 - UNIXová časová známka w - den v týdnu jako číslo (0-6) y - rok jako doumístné číslo Y - rok jako čtyřmístné číslo z - číslo dne v roce (0-365)

UNIXová časová známka

Druhým parametrem funkce date() je unixová časová známka. Je to číslo obsahující počet

vteřin od 1. ledna 1970.

Tato známka je používána jako formát pro práci s časem.

Pro převod datumu a času na časovou známku, můžeme použít funkci mktime().

mktime (hodiny, minuty, sekundy, měsíc, den, rok)

1- nastavujeme pokud je, 0 - nastavujeme pokud není

<? echo date ("j. m. Y"). "<br />"; $casovaznamka = mktime(); echo $casovaznamka; ?>

Page 74: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 74 -

Výpočet věku uživatele

<? $den = 13; $mesic = 10; $rok = 1965; $znamkanarozeni = mktime (0, 0, 0, $mesic, $den, $rok); $znamkadnesek = mktime(); $vekvteriny = $znamkadnesek - $znamkanarozeni; //výsledek je ve vteřinách, musíme to převést na roky $vek = ($vekvteriny / (60*60*24*365)); echo $vek; ?>

Výpočet věku uživatele se zadávacím formulářem a přepočtem na dny a měsíce

(v příkladu je použita matematická funkce – floor pro zaokrouhlování)

<?//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" /> <title>Úvod do PHP</title> </head> <body> <table bgcolor="#c0c0c0" border="0" cols="2" width="350px" align="center"> <form action="uvod.php" method="post"> <tr><td><h3>&nbsp;Výpočet věku</h3></td></tr> <tr> <td>&nbsp;Den narození:(číslo)</td> <td><input type="text" name="den" size="2"></td></tr> <tr> <td>&nbsp;Měsíc narození: (číslo)</td> <td><input type="text" name="mesic" size="2"></td></tr> <tr> <td>&nbsp;Rok narození:</td> <td><input type="text" name="rok" size="2"></td> <tr> <td><input type="submit" name="vypocet" value="Vypočítej"> <input type="reset" name="reset" value="Reset"></td></tr> </form>

Page 75: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 75 -

<? $narozeni=mktime(0,0,0,$_POST["mesic"],$_POST["den"],$_POST["rok"]); $dnes=mktime(); $sec=$dnes-$narozeni; $vypocet=($sec/(60*60*24*365));

if ($_POST["vypocet"]=="Vypočítej"){ echo "<tr><td><h3>Tvůj věk je: ".$vypocet."</h3></td></tr></table>"; echo "<table id='vek' bgcolor='#c0c0c0' border='0' align='center' width='auto'>"; $roky= floor ($vypocet); echo "<tr><td><h3>".$roky." let</h3></td>"; $mesice=(($vypocet-$roky)*365)/30; $mesice1= floor ($mesice); echo "<td><h3>".$mesice1." měsíců</h3></td>"; $dny=($mesice-$mesice1)*30; $dny1= floor ($dny); echo "<td><h3>".$dny1." dnů</h3></td>"; $hodiny=($dny-$dny1)*24; $hodiny1= floor ($hodiny); echo "<td><h3>".$hodiny1." hodin</h3></td>"; $minuty=($hodiny-$hodiny1)*60; $minuty1= floor ($minuty); echo "<td><h3>".$minuty1." minut</h3></td>"; $sekundy=($minuty-$minuty1)*60; $sekundy1= floor ($sekundy); echo "<td><h3>".$sekundy1." sekund</h3></td></tr>"; } else { echo "<tr><td><h3>Zadejte požadované údaje prosím.</h3></td></tr>";} ?> </table> </body> </html>

Page 76: Základy programování a algoritmizaceZáklady programování a algoritmizace Publikace vznikla v rámci projektu OPVK „Vyškolený pedagog – záruka kvalitní výuky“ na Střední

- 76 -

SEZNAM POUŽITÉ LITERATURY

[1] Knapová K.: Sylabus vzdělávacího kurzu – Základy programování a algoritmizace, Boxed s. r.o, 2013

[2] Knapová K.: Prezentace vzdělávacího kurzu - Základy programování a algoritmizace,

Boxed s. r.o, 2013 [3] Blábolil R.: Informační a komunikační technologie (3. rozšířené vydání), nakladatelství

Kopp, 2011 Použité obrázky: vlastní


Recommended