Čo je to programovanie
- Všetky programové časti pc museli byť naprogramované. Prvé pc boli programované technikmi pomocou kódov z 0 a 1. Proces sa vyvinul, vznikli programátori a tvorba programov sa začala štruktúrovať. Programovanie je činnost, ktorá zahrňuje tvorbu algoritmu a programu. Algoritmom rozumieme všeobecný postup riešenia danej úlohy. Program je zápis algoritmu v zvolenom programovacom jazyku.
Programom (algoritmom) nemusí býť nutne počítačový program — programy su napr. i návody k použitiu, predpisy v kucharkách a pod.
Algoritmus riešenia úlohy
-Algoritmus je každý predpis, ktorým je jednoznačne definovaná postupnosť krokov vedúca od meniteľných vstupných informácií k žiadaným výstupným informáciám. Algoritmus musí mať hlavne nasledujúce vlastnosti:
a) Determinovanosť: pre každý krok algoritmu je jednoznačne určený nasledujúci krok. Po konečnom počte krokov algoritmus končí.
b) Hromadnosť: algoritmus musí vychádzať z meniteľných vstupných údajov a teda bude predpisom pre riešenie viacerých úloh, ktoré sa od seba líšia vstupnými hodnotami.
c) Rezultatívnosť: pre ľubovoľné prípustné vstupné údaje vedie algoritmus k výsledku.
K týmto požadovaným vlastnostiam algoritmu pristupuje ešte požiadavka praktickej uskutočniteľnosti na dostupnom počítači čo do kapacity pamäte a množstva spotrebovaného strojového času.
Vývojové diagramy
Ako prostriedok analýzy zložitejších úloh je slovný zápis algoritmu nevýhodný hlavne z týchto dôvodov:
- je neprehľadný, nezvýrazňuje zmeny postupu pri realizácii algoritmu a jeho vetvenie,
- má veľkú pravdepodobnosť výskytu nepresností a nejednoznačnosti,
- je vzdialený prísne formalizovanému programovaciemu jazyku.
Pre zápis algoritmov boli preto vypracované a medzinárodne prijaté značky, pomocou ktorých sa algoritmus vyjadrí vo forme tzv. Vývojového diagramu (STN 36 9030).
Strojovo orientované programovanie :
-Sám určitý typ procesora má dekóder inštrukcií , a teda aj tzv mikrokód (sadu inštrukcií). Programátor zadáva program (pomocou vhodného zariadenia) vo forme 0,1 alebo v šestnástkovej sústave v mikrokóde , a dekóder inštrukcií vytvorí
všetky postupy (presuny el. impulzov a pod.) potrebných na vykonanie inštrukcie (príkazu).
Takéto programovanie je strojovo závislé (je nutná znalosť konkrétneho procesora a jeho mikrokódu) a navyše veľmi
zložité (i na elementárne činnosti - napr. sčítanie dekadických čísel treba spraviť program). Výhodou je najmenšia veľkosť a najvyššia rýchlosť takto urobeného (optimalizovaného) programu. Takto sa robia programy hlavne na ovládače zariadení, mnohé vírusy atď.
Assembler :
-Pre zjednodušenie programovania v strojovom kóde (mikrokóde procesora) bol vyvinutý nástroj nahrádzajúci nutnosť pamätania si binárneho alebo hexadecimálneho vyjadrenia inštrukcie - assembler (jazyk symbolických adries, jazyk symbolických inštrukcií). Je to v podstate prekladač (program), ktorý preloží slovný zápis programu do mikrokódu (object code).
Linker :
-je program, ktorý pripraví spustiteľný súbor pre konkrétny operačný systém (konkrétnu platformu).
Tieto programovacie jazyky sa označujú ako jazyky nízkej úrovne. Ich hlavnou výhodou je rýchlosť a malá veľkosť a nevýhodou strojová závislosť
Vyššie programovacie jazyky : - Písať zložité programy takýmto spôsobom by bolo veľmi náročné a neefektívne. Preto vznikli vyššie programovacie jazyky - prekladače (sú to opäť programy), ktoré nahrádzajú písanie programu pomocou kódov alebo skratiek assemblera človeku prijateľnejším slovným vyjadrením príkazov (samozrejme väčšinou anglickým). Ďalej ešte obsahujú tzv. knižnice podprogramov (funkcií, procedúr, príkazov) ktoré nemusí programátor pracne programovať (napr. matemat. operácie, grafické operácie a podobne).
Navyše prekladače týchto jazykov (hlavne linkery) sú vytvorené pre rôzne platformy (procesory, prípadne operačné systémy), programátor teda ani nemusí poznať procesor (konkrétny počítač a dokonca mnohokrát ani operačný systém, pod ktorým
bude jeho program pracovať). Sú to strojovo nezávislé jazyky.
Nevýhodou je, že takto vytvorené programy sú dlhšie a pomalšie (nedajú sa tak optimalizovať), ako programy vytvorené v strojovom kóde
Prekladače :
-Prekladače sú programy, ktoré prekladajú uživateľom napísaný zdrojový text príkazov ( programu ) na tvar, ktorému "rozumie" počítač a prípadne operačný systém – strojový (cieľový ) tvar. Prekladače sú súčasťou vyšších programovacích jazykov, operačných systémov, prípadne niektorých aplikačných programov.
Iterpretátory :
- pri zadávaní i vykonávaní príkazov musia byť aktívne ( spustený program interpretátora ). Pracuje ako "tlmočník". Do pamäti sa ukladá zdrojový text (prípadne "čiastočne" preložený - kódovaný zdroj. text). Každý príkaz prekladá do sady strojových inštrukcií.
Príklad:
- Basic pre mikropočítače
- COMMAND.COM - pre MS DOS
- JAVA,
ale tiež: - HTML, ..., rôzne makrojazyky (napr. MS OFFICE, ...), programovanie CNC strojov (interpretátorom je riadiaci program pre stroj), atď.
Výhodou je tzv. platformová nezávislosť - pre každú platformu je prekladač, ktorý ako vieme pri behu aplikácie musí bežať
tiež (napr v prípade JAVy ako tzv virtuálny počítač - "JAVA virtual machine") a program - zdrojový text (prípadne "čiastočne" preložený - kódovaný zdrojový text) je vždy rovnaký. Preto sa napr. JAVA tak rozšírila na Internete, kde je veľké množstvo rôznych počítačov s rôznymi systémami (procesormi, operač. systémami, ...), teda rôznymi platformami.
Kompilátory :
- používajú sa iba prekladače vyšších programovacích jazykov. Program compilátora musí byť spustený iba pri tvorbe programu, ktorý nakoniec celý preloží ( ako prekladateľ knihy ) do strojového tvaru ( nečitateľný ) a s pomocou LINKERA pre konkrétnu platformu. V pamäti je uložený strojový tvar , zdrojový text si programátor chráni (je to jeho "tvorivé tajomstvo").
Príklad:
- PASCAL
- Jazyk C nie je rozsiahly, ale nepatrí pritom medzi jazyky, vyznačujúce sa dobrou čitateľnosťou. Svojím pôvodom je zameraný na systémové programovanie. Na jednej strane je ho možné zaradiť do skupiny vyšších programovacích jazykov, na druhej strane je možné program napísaný v jazyku C preložiť do veľmi efektívneho strojového kódu (niekedy sa preto o ňom hovorí ako o štruktúrovanom asembleri). Jazyk C má pomerne málo jednoduchých pravidiel, pomocou ktorých je možné vytvárať a
skladať jednotlivé úseky programov do väčších a väčších celkov. Jazyk C sa ďalej mierne vyvíjal. Kompilátory jazyka
C++ dnes ponúkajú všetky významné firmy (Borland - Borland C++, Microsoft - Microsoft Visual C++)
Štrukturované programovanie :-Zložitejšie programy môže tvoriť viacero programátorov, každý musí poznať funkciu "svojej" časti a komunikáciu s "nadriadenou" časťou.
Objektovo orientované programovanie (OOP):
V súčastnosti sa kladie veľký dôraz na objektovo orientované programovanie (OOP), podporu databáz priamo cez ovládač v operačnom systéme ODBC (Open Database Connectivity), poprípade DAO (Data Access Object) a taktiež na podporu
výmeny objektov medzi aplikáciami OLE (Object Link Embedding) alebo DDE (Dynamic Data Exchange).
OOP je založené na modelovaní objektov reálneho sveta. Objekt je v OOP základnou zložkou. Charakterizovaný je svojím stavom (určeným hodnotou tzv. atribútov objektu) a svojim správaním, ktoré definuje, čo objekt dokáže robiť. Stav objektu je navonok neviditeľný – nevieme, čo ho tvorí ani ako je uložený. Toto je prvý základný princíp OOP, hovorí sa mu
zapuzdrenie (encapsulation). Dôvodom ukrytia stavu objektu pred okolím je snaha zabrániť takým modifikáciám, ktoré by uviedli objekt do nekonzistentného stavu.
Interakcia medzi objektmi sa realizuje pomocou posielania správ. Každý objekt dáva k dispozícii zoznam správ, na ktoré dokáže reagovať (to je to spomínané správanie objektu).
Napr. v bankovej aplikácií by mohol objekt
účet reagovať na správy „
vypočítaj úrok“,
„preveď sumu“ a podobne.
Dôležité je, že iniciátor správy sa nemusí starať o to, akým spôsobom príjemca správu poslal. V súvislosti so zapuzdrením je zrejmá jasná výhoda OOP oproti klasickému štýlu: pokiaľ je stav objektu pred svetom ukrytý a prístupné je iba komunikačné rozhranie, môžeme kedykoľvek objekt vymeniť za iný s rovnakým rozhraním. Pokiaľ sa nezmení funkčnosť objektu, okolité objekty ani nemusia tušiť, že k nejakej výmene došlo.
Druhým dôležitým konceptom OOP je
polymorfizmus. Táto vlastnosť znamená, že viacero objektov dokáže reagovať na jednu a tú istú správu , každý však inak, svojím vlastným spôsobom. Klasickým spôsobom môže byť správa „
serializuj sa“. Serializácia objektu je zakódovanie jeho stavu pre uloženie napr. do súboru, z ktorého bude v budúcnosti možné objekt rekonštruovať. Je zrejmé, že každý objekt sa bude serializovať inak: to nás však nemusí zaujímať, stačí, keď pošleme príslušnú správu všetkým objektom.
Zapuzdrenia a polymorfizmus sú naozaj základnými princípmi OOP. Bez nich by celá koncepcia stratila zmysel. Často sa však môžeme stretnúť ešte s pojmami
trieda a
dedičnosť.
Triedy sú v klasickom OOP šablónami, na základe, ktorých je možné generovať nové objekty. Dôležité je, že sú to takisto objekty. V mnohých jazykoch (napr. C++, ale Java nie je výnimkou) však nie je možné vytvoriť objekt bez toho, aby sme najprv definovali jeho triedu. V takýchto jazykoch sú triedy iba jazykovými konštrukciami.
Programovacie jazyky v OOPExistuje velké množstvo programovacích jazykov umožňujúcích objektovo orientované programovanie, napr. Smalltalk, Java, C++, Object Pascal, C#, Lisp, PHP, Python, Ruby…
Webový prehliadač :
-Webový prehliadač je počítačový program, ktorý slúži k prehliadavaniu World Wide Webu (WWW) . Program umožňuje komunikaciu s HTTP serverem a zpracovanie prijatého kódu (HTML, XHTML, XML apod.), ktorý podla daných štandardov zformátuje a zobrazí webovou stránku. Textové prehliadače zobrazujú stránky ako text, obvykle velmi jednoducho formátované. Grafické prehliadače umožňujú zložitejšie formátovanie stránky vrátane zobrazenia obrázkov. Pre zobrazení niektorých zvláštnych sučastí stránky, ako su Flashové animácie alebo Javové applety, je treba prehliadač doplniť o špecializované zásuvné moduly.
Mezi nejznámějšie webové prehliadače patrí : grafické Internet Explorer, Mozilla Firefox, SeaMonkey, Opera, Konqueror a Safari a textové Links a Lynx.
HTML : - je skratka z anglického HyperText Markup Language, značkovací jazyk pre hypertext. Je jedným z jazykov pre vytváranie stránok v systéme World Wide Web, ktorý umožňuje publikaciu stránok na Internete. Jazyk je podmnožinou skôr vyvinutého rozsiahleho univerzálneho značkovacieho jazyka SGML (Standard Generalized Markup Language). Vývoj HTML bol ovplivnený vývojom webových prehliadačov, ktoré spätne ovplyvňovali definiciu jazyka. Je charakterizovaný množinou značiek a ich atributov. Mezi značky sa vkladajú časti textu dokumentu a tím se určuje význam (sémantika) obsahujúceho textu. Názvy jednotlivých značiek sa vkladajú medzi hranaté závorky ("“). Časť dokumentu vložená medzi značkami tvorí tzv. element (prvok) dokumentu.
Súčasťou obsahu elementu môžu byť ďalšie vsunuté elementy. Atributy sú doplňujúce informacie, ktoré spresňujú vlastnosti elementu.
Značky (tiež nazývané tagy) sú obvykle párové. Rozlišujeme začiatočné a koncové značky. Koncová značka má pred názvom značky znak lomítko.
Dynamické webové stránky (dynamické HTML, DHTML) -sú stránky spájajúce XHTML, JavaScript alebo iný skriptovací jazyk a väčšinou sú doplnené podporou serverového
programovacieho jazyka ako je PHP alebo ASP. Zlúčením týchto metód vývoja webovej stránky vzniká dynamická stránka schopná reagovať na požiadavky užívateľa, ktorými môže byť napríklad zmena výzoru stránky, rolovacie menu, redakčný systém na pridávanie článkov a podobne.
Cascading Style Sheets (Kaskádové štýly)-
CSS je skratka pre anglický názov Cascading Style Sheets , slovenské tabulky kaskádových štýlov . Je to jazyk pre popis spôsobov zobrazenia stránok napísaných v jazykoch HTML, XHTML alebo XML. Staršia verzie HTML obsahujú celú radu elementov, ktoré nepopisujú obsah a štruktúru dokumentu, ale aj zpôsob jeho zobrazenia. Z hľadiska spracovania dokumentov a vyhľadávania informácií neni taký vývoj potrebný.
Výhody CSS
Používanie kaskádových štylov v porovnaní so samotným HTML v praxi prináša výhody:
· rozsiahlejšie možnosti
CSS ponúka rozsiahlejšie formátovacie možnosti než samotné HTML. Napr. pre formátovánie bloku textu – tj. určenie vzdialenosti od ich elementu či okraja stránky ponúka HTML nič. CSS má vlastnosti padding a margin. V HTML by bolo potrebné vytvoriť zložitu konštrukciu vložených tabulek.
· konzistentný štyl
Na všetkých stránkách webovej prezentácie by mali býť všectky nadpisy rovnakej úrovne, zoznamy, zdôraznené části textu a pod. rovnakého štýlu. S použitím formátovacích možností HTML je to zložitejšie – u každého objektu v každom dokumente sa vzhľad objektu stále znovu nastavuje. S použitím CSS je to velmi jednoduché. Vytvorí sa subor štylu, ktorý sa pripojuje k HTML dokumentu. Vo všetkých dokumentoch su potom objekty rovnakého vzhľadu.
· oddelenie štruktúry a štýlu
· dynamická práca so štýlmy
Previesť zmenu štylu webu, ktorý pre formátovanie vzhľadu využívá len možnosti HTML, znamená najsť a nahradiť všetky značky a zmeniť atribúty veľa dalších značiek. V prípade používania CSS znamená zmena štýlu webu prepísania jediného suboru – suboru štýlov.
· formátovanie XML dokumentov
· väčšia kompatibilita alternativnych webových prehliadačov
· kratšía doba načítania stránky
Výhodou CSS oproti starému formátovaniu v HTML je, že kód a obsah webu je uloženy v subore .html a všetok design a formátovanie se načítá z jednoho suboru .css, ktorý je vačšinou spoločný pre celý web. To znamená, že pokiaľ máte v pláne zmenu designu webu, stačí zmeniť iba jeden soubor .css a zmena se aplikuje na celý web. Tiež sa soubor CSS uloží do medzipamäti prehliadača a pokiaľ neni zmenený, tak sa načítá iba raz a zobrazeie stránok sa veľmi urychlí. Je tiež možnosť upraviť formátovanie podľa prehliadača, ktorým si uživateľ danu stránku zobrazuje. Jednoducho si vytvoríte viac suborov .css
(napr. styl1.css a styl2.css) a podla prehliadača, ktorý si o stránku požiada, pripojíte iný soubor. Tím sa dá eliminovať problém rôznej interpretácie kódu jednotlivými prehliadačmi.
Nevýhody
Hlavnou nevýhodou CSS je zatiaľ stále zlá podpora v majoritných prehliadačoch. Rôzne prehliadače interpretujú rovnaký CSS kód inak a je niekedy veľmi obtiažne ho napisať tak, aby sa na všetkých (resp. na niekoľko vybraných) prehliadačoch výsledok zobrazil rovnaky.
Webové aplikácieSkript– je program napísaný pomocou skriptovacieho jazyka. Skripty bývajú interpretované. Skript je možno kedykoľvek spustiť bez nutnosti ho vždy znovu zkompilovat. Vyhodou skriptov je lahšia údržba a vývoj.. Programátorovi v tomto prípade stačí obyčajný textový editor, nepotrebuje tiež žiadný speciálny kompilátor alebo vývojový nástroj. Skriptovacie jazyky se dnes nejčastejšie
využívajú v prostredí webových aplikací. Príklady skriptovacích jazykov: Python, PHP, JavaScript, Perl atd.
Applet - je (relatívne) jednoduchá aplikácia, ktorá sa spúšťa z WWW prehliadača (browsera). Applet je potomok triedy Java.applet.Applet. Je to v podstate trieda, ktorú sme odvodili od triedy java.applet.Applet. Applety majú veľké obmedzenie pri práci so súborovým systémom. Jednoducho povedané, applet je väčšinou primitívna aplikácia. Softwarový program, ktorý beží v rámci iného programu - napríklad webového prehliadača - takže nemôže byť spustený samostatne. Často se na webe používajú applety v jazyku Java, ktoré k chodu potrebujú JVM - javový virtuálný stroj. Okrem toho su applety i Flash filmy.
Servlet Je malá aplikácia, ktorá beží na webovom serveri
- je speciálna trieda v jazyku Java, ktorá beží v rámci servletového kontajneru. To je špecialný web server, ktorý je schopný hosťovať práve servlety. Funkčná verzia servletu je dostupná na adrese.
Je protokol pre propojenie externych aplikací s webovým serverom. To serveru umožňuje delegovať požiadavku od klienta na externú aplikaciu, ktorá podľa požiadavky vrátí výstup. Takáto aplikacia typicky spracuje nejaký skript vo webovej stránke a webovému serveru vrátí statickú stránku, ktorá je následne poslaná klientovi ako výstup jeho požiadavky.
(všeobecný) servlet je podtriedou abstraktnej triedy
javax.servlet.GenericServlet, takmer výhradne sú však používané:
servlety nad HTTP, čiže podtriedy abstraktnej triedy
javax.servlet.HttpServlet.
Životný cyklus servletu
Medzi servletmi a CGI skriptami je niekoľko závažných rozdielov počas ich životného cyklu.
CGI skripty
1. server prijme požiadavku
2. server spustí program spracovávajúci CGI skript
3. server odošle výsledok spracovanie skriptu ako odpoveď na požiadavku
Servlety
1. pri spustení webaplikácie server vytvorí jednu, či viac inštancií triedy príslušného servletu
2. server prijme požiadavku, odošle ju servletu na spracovanie
3. server odošle výstup vytvorený servletom ako odpoveď na požiadavku
Najväčší rozdiel medzi týmito prístupmi
- CGI skripty sa s každou požiadavkou spúšťajú raz
- servlet sa spustí len raz (vytvorí sa jedna (či viac) inštancií), ktoré vybavujú požiadavky