Programování Pavel Kras : Progamování v MS Office
Transkript
Programování Toto je nabídka programová ze www.slunecnice.cz. www.linuxsoft.cz Visual Basic – ( VBA ) Microsoft , návaznost na makra MS Office Python – moderní programovací jazyk PHP - pro WWW databáze Pascal . starý Karel pro děti JavaScript -html Java – multiplatformní, pro mobily i PC Delphi – firmy Borland C a C++ - všichni středoškoláci v USA se z něj něco učí Pavel Kras : Progamování v MS Office Objektově orientované programování- využívá připravené objekty, u kterých využíváme jejich vlastností. Jenom některé předvolené vlastnosti se přestaví ( předefinují), jiné necháme předvolené. Objekty reagují na určité události automaticky, takže startují proceduru, která je na jejich objekt a vlastnost vázána. To vede ke zrychlení a práce programátora se rozpadá na velký počet krátkých sekvencí, které je možno opakovaně využívat. Strukturované programování – o Přístup shora dolů – zadání je na vrcholu pyramidy a program se rozrůstá dolů a do šíře. Lze pak objevit, kde nastala chyba o Modularizace – modul je logicky rozčleněná pokud možno nezávislá část. To umožňuje snáze rozlišit chyby a umožňuje spolupráci v týmech. Mnohé moduly lze užít i při jiných obdobných úkolech. o Stavebnicovou- programy jsou sestaveny z modulů, využíváme použitá a odzkoušená řešení. Program se lepí z jednotlivých částí. Zdroje : Wikipedia nebo http://k-prog.wz.cz/ Programovací jazyky jsou nástroje pro tvorbu programů. Základem programovacího jazyka je jednoduchý textový soubor ( neformátovaný ASCII soubor –v angličtině). V souboru je zapsán algoritmus programu. Algoritmus (nebo dřívějším pravopisem algorithmus) je přesný návod či postup, kterým lze vyřešit daný typ úlohy. Pojem algoritmu se nejčastěji objevuje při programování, kdy se jím myslí teoretický princip řešení problému (oproti přesnému zápisu v konkrétním programovacím jazyce). Obecně se ale algoritmus může objevit v jakémkoli jiném vědeckém odvětví. Jako jistý druh algoritmu se může chápat i např. kuchyňský recept. V užším smyslu se slovem algoritmus rozumí pouze takové postupy, které splňují některé silnější požadavky: Vlastnosti algoritmů Konečnost Každý algoritmus musí skončit v konečném počtu kroků. Tento počet kroků může být libovolně velký (podle rozsahu a hodnot vstupních údajů), ale pro každý jednotlivý vstup musí být konečný. Determinovanost Každý krok algoritmu musí být jednoznačně a přesně definován; v každé situaci musí být naprosto zřejmé, co a jak se má provést, jak má provádění algoritmu pokračovat. Protože běžný jazyk obvykle neposkytuje naprostou přesnost a jednoznačnost vyjadřování, byly pro zápis algoritmů navrženy programovací jazyky, ve kterých má každý příkaz jasně definovaný význam. Vyjádření výpočetní metody v programovacím jazyce se nazývá program. Vstup Algoritmus obvykle pracuje s nějakými vstupy, veličinami, které jsou mu předány před započetím jeho provádění, nebo v průběhu jeho činnosti. Vstupy mají definované množiny hodnot, jichž mohou nabývat. Výstup Algoritmus má alespoň jeden výstup, veličinu, která je v požadovaném vztahu k zadaným vstupům, a tím tvoří odpověď na problém, který algoritmus řeší. (Algoritmus vede od zpracování hodnot k výstupu - resultativnost) Efektivita Obecně požadujeme, aby algoritmus byl efektivní, v tom smyslu, že požadujeme, aby každá operace požadovaná algoritmem, byla dostatečně jednoduchá na to, aby mohla být alespoň v principu provedena v konečném čase pouze s použitím tužky a papíru. (tj. byla elementární) Obecnost (hromadnost) Algoritmus neřeší jeden konkrétní problém (např. „jak spočítat 3×7“), ale obecnou třídu obdobných problémů (např. „jak spočítat součin dvou celých čísel“). V praxi jsou proto předmětem zájmu hlavně takové algoritmy, které jsou v nějakém smyslu kvalitní. Takové algoritmy splňují různá kritéria, měřená např. počtem kroků potřebných pro běh algoritmu, nebo jednoduchost či elegance algoritmu. Problematikou efektivity algoritmů, tzn. metodami, jak z několika známých algoritmů řešících konkrétní problém vybrat ten nejlepší, se zabývají odvětví informatiky nazývané algoritmická analýza a teorie složitosti.V praxi je třeba zajistit, aby algoritmus skončil „v rozumném“ čase. Za rozumný čas lze v praxi považovat takový čas, který nám umožní smysluplně využít výsledek. Textový soubor vytvořený programátorem je předán programu – kompilátoru nebo interpreteru. Interpreter – textový soubor je čten řádku po řádce- je to pomalé a používá se jen u starších jazyků ( LISP, starší BASIC) Kompilátor –zdrojový text je načten do paměti počítače, pak hromadně kompilován- vznikne spustitelný soubor .exe. Používá se všech moderních jazyků ( Pascal, Delphi, C, C++ /je objektově orientovaný/, Visual Basic / objektově orientovaný/) Lineární programování (dříve lineární optimalizace) je odvětví optimalizace. Řeší problém nalezení minima (resp. maxima) lineární funkce n proměnných na množině, popsané soustavou lineárních nerovností. Strukturované programování nebo také strukturovaný programovací jazyk označuje programovací techniku, kdy se implementovaný algoritmus rozděluje na dílčí úlohy, které se spojují v jeden celek. K implementaci v programu se používá vybraných řídících struktur, ostatní struktury nejsou povoleny - u strukturovaného programování se např. nepoužívá řídící příkaz skoku. Speciální programy se mohou tvořit přímo ve strojovém kódu, stále se ještě používá program Assembler- je rychlý, ale náročný na tvorbu. Objektově orientované programování – jde o metodiku řešení celého problému, organizace paměti – Pascal, Visual Basic, C++. Objektově orientované programování (zkracováno na OOP, z anglického Object-oriented programming) je metodika vývoje softwaru, založená na následujících myšlenkách, koncepci: Objekty – jednotlivé prvky modelované reality (jak data, tak související funkčnost) jsou v programu seskupeny do entit, nazývaných objekty. Objekty si pamatují svůj stav a navenek poskytují operace (přístupné jako metody pro volání). Abstrakce – programátor, potažmo program, který vytváří, může abstrahovat od některých detailů práce jednotlivých objektů. Každý objekt pracuje jako černá skříňka, která dokáže provádět určené činnosti a komunikovat s okolím, aniž by vyžadovala znalost způsobu, kterým vnitřně pracuje. potažmo 1. se vztahem, se zřetelem, vzhledem k někomu, něčemu Ušetřil co nejvíc energie a potažmo i peněz. 2. vlastně, respektive Podmínky pro prosperitu jeho podniku vytváří stát, potažmo obec . Zapouzdření – zaručuje, že objekt nemůže přímo přistupovat k „vnitřnostem“ jiných objektů, což by mohlo vést k nekonzistenci. Každý objekt navenek zpřístupňuje rozhraní, pomocí kterého (a nijak jinak) se s objektem pracuje. Skládání – Objekt může využívat služeb jiných objektů tak, že je požádá o provedení operace. Dědičnost – objekty jsou organizovány stromovým způsobem, kdy objekty nějakého druhu mohou dědit z jiného druhu objektů, čímž přebírají jejich schopnosti, ke kterým pouze přidávají svoje vlastní rozšíření. Tato myšlenka se obvykle implementuje pomocí rozdělení objektů do tříd, přičemž každý objekt je instancí nějaké třídy. Každá třída pak může dědit od jiné třídy (v některých programovacích jazycích i z několika jiných tříd). Polymorfismus – odkazovaný objekt se chová podle toho, jaký je jeho skutečný typ. Pokud několik objektů poskytuje stejné rozhraní, pracuje se s nimi stejným způsobem, ale jejich konkrétní chování se liší. V praxi se tato vlastnost projevuje např. tak, že na místo, kde je očekávána instance nějaké třídy, můžeme dosadit i instanci libovolné její podtřídy (třídy, která přímo či nepřímo z této třídy dědí), která se může chovat jinak, než by se chovala instance rodičovské třídy, ovšem v rámci mantinelů, daných popisem rozhraní. Některé z těchto vlastností jsou pro OOP unikátní, jiné (např. abstrakce) jsou běžnou vlastností i jiných vývojových metodik. OOP je někdy označováno jako programátorské paradigma, neboť popisuje nejen způsob vývoje a zápisu programu, ale i způsob, jakým návrhář programu o problému přemýšlí. Paradigma ve vědě Podle široce přijímané koncepce je paradigma souhrn základních domněnek, předpokladů, představ dané skupiny vědců Algoritmus obecný návod jak postupovat, posloupnost příkazů a instrukcí, které popisují činnost – akci. Je to přesně definovaná posloupnost pravidel, jejichž realizace nám umožní vstupní data po konečném počtu kroků, získat výstupní data. Příkaz je popis toho, co se má provést Proces- je postupné vykonávání (vlastní činnosti) akce a postupné provádění příkazů procesorem. Prosesor je to, co uskutečňuje daný proces. Podle jednoho návodu (algoritmu) může proběhnout několik různých procesů. To zajišťují podmíněné příkazy. Proměnná – to je objekt, který má pevně stanované označení, má určitou hodnotu a může se v průběhu procesu měnit. Zápisy algoritmů Slovní zápis Zápis v programovacím jazyce Grafické zobrazení algoritmu o Vývojové diagramy – používají se (normované) grafické symboly Instrukce pro vstup a výstup Podmínka (větvení) Vstup Příkazy ( úkony) Mezní značka Činnost definovaná jinde ( podprogram) Přípravná činnost o Strukturogramy – podobně jako symboly, ale je to přesnější a vhodné pro strukturované programování Prostá posloupnost příkazů Mateřská škola Větvení programu ANO NE Máš čas? Základní škola Škoda Jdeme na kafe Střední škola Vysoká škola 2. Cyklus ANO NE Máš hlad? Dej si rohlík Procedury a funkce Procedury a funkce tvoří posloupnosti instrukcí, které potřebujeme v programu provádět na různých souborech dat nebo na různých místech programu. Procedura nebo funkce může být po deklaraci použita kdekoli v následujícím textu bloku programu. Funkce vrací hodnotu a může se použít přímo ve výrazech. Procedura se vyvolá příkazem volání procedury ke splnění jedné nebo více operací. Procedury a funkce umožňují vnořovat přídavné bloky do hlavního programového bloku. Každá deklarace procedury nebo funkce má hlavičku, po které následuje blok příkazů. Procedura se aktivuje příkazem volání procedury, funkce se aktivuje vyhodnocením výrazu, který obsahuje její volání. Za identifikátorem procedury nebo funkce může následovat seznam parametrů, uzavřený v kulatých závorkách. Každý parametr v seznamu má své místo, kterému odpovídá příslušný typ. Zdrojový text programu je ukončen tělem hlavního programu. Tělo hlavního programu se musí uvést vždy jako poslední. Mezi část deklarace proměnných a tělo hlavního programu lze vložit libovolné množství deklarací procedur a funkcí v jakémkoli pořadí. Musí se však dodržovat zásada, že cokoli použijeme, musí být deklarováno, jinak dojde k chybě během překladu. Tělo deklarace procedury nebo funkce končí středníkem místo tečky u hlavního programu. Procedura nebo funkce může mít své vlastní interní datové typy, proměnné i své vlastní procedury a funkce. Veškeré prvky deklarované uvnitř procedury nebo funkce mají lokální charakter, tzn. lze je využít pouze uvnitř procedury nebo funkce, ve které jsou deklarovány. Deklarace, které jsou uvedeny v hlavním programu, mají globální charakter. Deklarace procedury procedure <jméno procedury> (formální parametry); label <deklarace návěští>; const <deklarace konstant>; type <definice typů>; var <deklarace proměnných>; procedure; function; <deklarace procedur a funckí>; begin <tělo procedury>; end; {hlavička procedury} {deklarační část} {příkazová část} Deklarační část procedury se řídí stejnými pravidly jako hlavní program. Deklarace procedury přiřadí identifikátor k bloku kódu programu. Při vyvolání procedury se provedou příkazy, které jsou uvedeny v těle procedury. Pokud se v těle procedury vyskytne identifikátor vyvolané procedury, provádí se procedura rekurzivně. Deklarace funkcí Deklarace funkcí mají podobnou strukturu jako deklarace procedury, s tím rozdílem, že začínají hlavičkou funkce a končí datovým typem, který funkce vrací: function <jméno funkce> (formální parametry):datový typ; Funkce se aktivuje uvedením identifikátoru funkce při vyhodnocení výrazu, funkce se objeví jako operand výrazu. Když se výraz vyhodnotí, funkce se provede a hodnota operandu se stane hodnotou, kterou funkce vrací. V těle funkce jsou podobně jako u procedury definovány příkazy, které se mají provést po aktivaci funkce. Tělo funkce musí obsahovat příkaz přiřazení, který přiřazuje identifikátoru funkce hodnotu. Výsledkem funkce je pak poslední přiřazená hodnota. Pokud v těle funkce příkaz přiřazení neexistuje, funkce vrací nedefinovanou hodnotu. Parametry procedur a funkcí V hlavičce deklarace procedury nebo funkce můžeme definovat seznam formálních parametrů. Každý parametr deklarovaný v seznamu je lokální v deklarované proceduře nebo funkci. Uvnitř bloku procedury nebo funkce je možné se na něj odvolávat jeho identifikátorem. Typy parametrů: Formální - ty se objevují v deklaraci procedury nebo funkce, jsou dvojího druhu: parametry volané odkazem (proměnné) parametry volané hodnotou (hodnotové) Skutečné - jsou to parametry, které se uvádějí při volání procedury nebo funkce. Musí odpovídat svým datovým typem parametrům, definovaným v podprogramu a jejich počet musí být stejný s počtem, který jsme v podprogramu definovali. Hodnotové parametry se v deklaraci uvádějí svým identifikátorem, následovaným definicí typu. Parametry, které mají stejný charakter a typ, se mohou uvádět v seznamu, oddělené čárkou. Pokud jsou v deklaraci procedury nebo funkce parametry různých typů a charakterů, jednotlivé typy se musí oddělit středníkem. Formální hodnotové parametry působí jako lokální proměnná v proceduře nebo funkci, s tím rozdílem, že dostávají počáteční hodnotu při aktivaci procedury nebo funkce. Změna formálního hodnotového parametru v těle procedury nebo funkce neovlivní hodnotu skutečného parametru při aktivaci procedury nebo funkce. Skutečný parametr, který odpovídá hodnotovému parametru v příkazu procedury nebo volání funkce, musí být výraz a jeho hodnota nesmí být typu soubor ani strukturovaný typ, který obsahuje typ soubor. Skutečný parametr musí být kompatibilní s formálním parametrem. Proměnný parametr se používá tam, kde se musí předat hodnota z procedury nebo funkce zpět volající proceduře nebo funkci. Odpovídající skutečný parametr v příkazu procedury nebo volání funkce musí být odkazem na proměnnou. Formální proměnný parametr reprezentuje v průběhu aktivace procedury nebo funkce skutečnou proměnnou. Jakákoli změna hodnoty proměnného formálního parametru se promítne na skutečný parametr volající procedury. Typ skutečného parametru musí být identický s typem formálního proměnného parametru. Jako proměnné parametry lze předávat typ soubor. procedure vstup(X,Y:integer); {procedura s formálními hodnotovými parametry} procedure vstup(var X,Y:integer); {procedura s formálními proměnnými parametry} Příklad volání funkce Volání funkce se objeví na pravé straně přiřazovacího příkazu. Její volání se může umísti přímo v příkazu výstpu dat. Deklarace: function test (X,Y:word; T:boolean):word; Volání: a:=test (10,15,true); Proměnná "a" musí být typu word (nebo proměnná s tímto typem kompatibilní). Standardní funkce: SQR, SQRT, ABS... Příklad volání procedury Při volání procedury uvedeme její identifikátor a parametry. Do příkazu výstupu dat se procedura nedává. Deklarace procedury s hodnotovými parametry: procedure test (X,Y:word; T:boolean); {formální parametry} Volání: test (10,15,true); {skutečné parametry} test (A,B,C); {skutečné parametry} Proměnné A,B musí být typu word (nebo s tímto typem kompatibilní) a C typu boolean. Procedura neovlivní hodnoty A,B a C Deklarace procedury s proměnnými parametry: procedure test (var X,Y:word; T:boolean); {formální parametry} Volání: test (A,B,C); {skutečné parametry} Proměnné A,B musí být typu word (nebo s tímto typem kompatibilní) a C typu boolean. Procedura ovlivní hodnoty A,B a C. Při volání procedury s proměnnými parametry musí být skutečným parametrem proměnná. Standardní procedury: WRITE, WRITELN, READ, READLN, CLRSCR... Způsoby rozdělení úlohy na podlohy Konjunktivní – zpracování všech úloh sekvenčně za sebou Disjunktivní – řešení v závislosti na podmínkách a na základě dané podmínky se řeší jedna vybraná úloha Repetiční – několikanásobné zopakování stejného cyklu Postup algoritmizace při řešení složitějších úloh Zadání a formulace úlohy Analýza problému a nástin řešení Analýza vstupních a výstupních dat – návrh datových struktur v programu (pole..) Návrh algoritmu Zápis v programovacím jazyce a ladění programu (program, který má chybu se sám zastaví a nedá výsledek) Zkušební provoz + tvorba dokumentace Zhodnocení řešení a možnosti aplikací na obdobné problémy. Význam některých pojmů v programování – záleží ale na druhu jazyka Char – znaky podle ASCII tabulky True – pravda False – nepravda String- řetězec textový Array – pole (má např. pevně stanovený počet prvků určitého typu) Record – záznam, typ záznamu pevně definované položky různých typů Set – obecně nastavení, jindy typ množina (max. 256 prvků) Object – typ objekt má pevně stanovený počet položek File – soubor CheckBox – zaškrtávací políčko RadioGroup – skupina zaškrtávacích koleček, vybírá se (ve formulářích) jedna možnost Label – textový popis, popiska, jmenovka Edit – vkládání textu Button – tlačítko, akce začíná stiskem buttonu Memo – poznámka ScrollBar – rolovací lišta Begin – začátek programu nebo části End – konec programu nebo části ( pak třeba End if) Řídící struktury ( zde programu JavaScript) Podmínka if Syntaxe podmínky je následující: if (podmínka) { příkazy } else { příkazy } Podmínka switch Syntaxe podmínky je následující: switch (výraz) { case konst_výraz1 : příkaz case konst_výraz2 : příkaz ... default : příkaz } Cyklus for Syntaxe cyklu je následující: for (inicializace; podmínka; posun) { příkazy } Cyklus while Syntaxe cyklu je následující: while (výraz) { příkazy } Objekty (JavaSriptu) string = řetězec metoda anchor(name) big() blink() bold() charAt(n) charCodeAt(n) concat(hodnota, ...) fixed() fontcolor() fontsize() indexOf(podřetězec, start) italics() lastIndexOf(podřetězec, start) link(href) match(regexp) replaceregexp(nahrazení) search(regexp) slice(start, konec) small() strike() sub() substring(od, do) substr(start, délka) sup() toLowerCase() toUpperCase() vysvětlení Vrací <a name=" "> </a> Vrací <big> </big> Vrací <blink> </blink> Vrací <b> </b> Vrací n-tý znak řetězce Vrací kód znaku na n-tém místě řetězce Spojuje řetězce Vrací <tt> </tt> Vrací <font color=" "> </font> Vrací <font size=" "> </font> Prohledává řetězec Vrací <i> </i> Prohledává řetězec odzadu <a href=" " > </a> Hledá jednu nebo více shod s regul. výr. Nahradí podřetězec odpovídající regul. výr. Hledá regulární výraz Vyjme podřetězec Vrací <small> </small> Vrací <strike> </strike> Vrací <sub> </sub> Vrací podřetězec řetězce Vrací podřetězec Vrací <sup> </sup> Konvertuje řetězec na malá písmena Konvertuje řetězec na velká písmena Cvičení: <html> <head> <title>Druhý JavaScript</title> </head> <body> <script language="JavaScript"> <!-veta=window.prompt("Napiš větu malými písmeny"); document.write(veta.toUpperCase()); // --> </script> </body> </html> Objekt Math vysvětlení metoda Math.E Math.LN10 Math.LN2 Math.LOG10E Math.LOG2E Math.PI Math.SQRT1_2 Math.SQRT2 Math.abs(x) Math.acos(x) Math.asin(x) Math.atan(x) Math.atan2(x, y) Math.ceil(x) Math.cos(x) Math.exp(x) Math.floor(x) Math.log(x) Math.max(a, b) Math.min(a, b) Math.pow(x, y) Math.random() Math.round(x) Math.sin(x) Math.sqrt(x) Math.tan(x) Eulerovo číslo Hodnota ln 10 Hodnota ln 2 Hodnota log e Hodnota log2e Ludolfovo číslo Převrácená hodnota odmocniny ze dvou Odmocnina ze dvou Absolutní hodnota Arcuskosinus Arcussinus Arcustangens Počítá úhel mezi osou X a bodem Zaokrouhlí číslo Kosinus Počítá ex Zaokrouhlí číslo dolů Počítá přirozený logaritmus Vrací větší ze dvou čísel Vrací menší ze dvou čísel Vrací hodnotu xy Vrací pseudonáhodné číslo Zaokrouhlí na nejbližší celé číslo Sinus Druhá odmocnina Tangens Cvičení: <html> <head> <title>Třetí JavaScript</title> </head> <body> <script language="JavaScript"> <!-cislo=window.prompt("Zadej celé kladné číslo:"); document.write('√'+cislo+' = '+ Math.sqrt(cislo)); // --> </script> </body> </html> Objekt Date metoda getDate() getDay() getFullYear() getHours() getMilliseconds() getMinutes() getMonth() getSeconds() getTime() getTimeZoneOffset() getUTCDate() getUTCDay() getUTCFullYear() getUTCHours() getUTCMilliseconds() getUTCMinutes() getUTCMonth() getUTCSeconds() getYear() setDate() setFullYear() setHours() setMilliseconds() setMinutes() setMonth() setSeconds() setTime() setUTCDate() setUTCYear() setUTCHours() setUTCMilliseconds() setUTCMinutes() setUTCMonth() setUTCSeconds() setYear() toLocaleString() toString() vysvětlení Vrací číslo aktuálního dne v měsíci Vrací číslo aktuálního dne v týdnu (0=neděle, ..., 6=sobota) Vrací rok (lokální čas) Vrací počet hodin od půlnoci Vrací počet milisekund (lokální čas) Vrací údaj o minutách Vrací měsíc (0=leden, ..., 11=prosinec) Vrací sekundy Vrací datum a čas v milisekundách Vrací posun proti GMT Vrací den v měsíci (UTC) Vrací den v týdnu (UTC) Vrací rok (UTC) Vrací hodiny (UTC) Vrací milisekundy (UTC) Vrací minuty (UTC) Vrací měsíc (UTC) Vrací sekundy (UTC) Vrací rok (překonáno funkcí getFullYear()) Nastaví den v měsíci Nastaví rok (lokální čas) Nastaví hodiny Nastaví milisekundy (lokální čas) Nastaví minuty (0 - 59) Nastaví měsíc Nastaví sekundy Nastaví celý časový údaj v milisekundách Nastaví den v měsíci (UTC) Nastaví rok (UTC) Nastaví hodiny (UTC) Nastaví milisekundy (UTC) Nastaví minuty (UTC) Nastaví měsíc (UTC) Nastaví sekundy (UTC) Nastaví rok (překonáno funkcí setFullYear()) Konvertuje údaj na řetězec v UTC Konvertuje údaj na řetězec metoda toUTCString() valueOf() vysvětlení Konvertuje údaj na řetězec v UTC Konvertuje údaj na číslo UTC = Universal Time Coordinated Cvičení: <html> <head> <title>Čtvrtý JavaScript</title> </head> <body> <script language="JavaScript"> <!-var datum=new Date(); var mesic=datum.getMonth(); mesic++; if (datum.getDay() == 0) { document.write("Dnes je neděle ")} if (datum.getDay() == 1) { document.write("Dnes je pondělí ")} if (datum.getDay() == 2) { document.write("Dnes je úterý ")} if (datum.getDay() == 3) { document.write("Dnes je středa ")} if (datum.getDay() == 4) { document.write("Dnes je čtvrtek ")} if (datum.getDay() == 5) { document.write("Dnes je pátek ")} if (datum.getDay() == 6) { document.write("Dnes je sobota ")} document.write(datum.getDate()+"."+mesic+"."); // --> </script> </body> </html> Příkaz if v PHP Příkaz if umožňuje provádět vybrané části kódu pouze pokud nastanou dané podmínky. Konstrukce příkazu if je následující: <?php if (podmínka) { příkazy pro splněnou podmínku } else { příkazy pro nesplněnou podmínku } ?> Větev else není povinná, proto se nemusí za určitých okolností uvádět. Jednotlivé příkazy ve větvích se píší do složených závorek a oddělují se středníkem. Daný blok bude vykonán na základě podmínky - pokud podmínka je splněna (hodnota pravda), provede se první větev, pokud podmínka splněna není (výsledek je nepravda), provede se větev else, pokud je uvedena. Více v následující ukázce: <?php $jmeno="Martin"; if ($jmeno == "Martin") { echo ("Ahoj Martine"); } else { echo ("Ahoj, tebe ještě neznám"); } ?> Předchozí příklad zjišťuje, zda v proměnné $jmeno je řetězec Martin. Pokud je podmínka splněna, server předá prohlížeči řetězec Ahoj Martine. Pokud ovšem podmínka splněna není, provede se větev else a server předá řetězec Ahoj, tebe ještě neznám. PHP ještě nabízí vytvoření podpodmínky. Syntaxe je pak následující: <?php if (podmínka) { příkazy pro splněnou podmínku } elseif (podpodmínka) { příkazy pro splněnou podpodmínku } else { příkazy pro nesplněnou podpodmínku } ?> Více snad napoví následující ukázka, v níž se pokusíme zjistit, zda číslo je kladné, záporné nebo nulové: <?php $cislo=-2; if ($cislo > 0) { echo ("Číslo je kladné"); } elseif ($cislo == 0) { echo ("Číslo je nula"); } else { echo ("Číslo je záporné"); } ?> Příkaz switch v PHP Příkaz switch zjednodušuje testování u složitějších podmínek, kde bychom opakovaně testovali nějakou podmínku. Opět se tedy podíváme na ukázku, kde budeme zjišťovat, zda v proměnné $rocni_obdobi je řetězec jaro, leto, podzim nebo zima. Nejprve si ukážeme, jak by vypadala podmínka pomocí příkazu if a poté ji zjednodušíme pomocí switch. <?php $rocni_obdobi="podzim"; if ($rocni_obdobi == "jaro") { echo ("Jaro"); } elseif ($rocni_obdobi == "leto") { echo ("Léto"); } elseif ($rocni_obdobi == "podzim") { echo ("Podzim"); } else { echo ("Zima"); } ?> <?php $rocni_obdobi="podzim"; switch ($rocni_obdobi) { case "jaro" : echo ("Jaro"); break; case "leto" : echo ("Léto"); break; case "podzim" : echo ("Podzim"); break; default : echo ("Zima"); } ?> Zkuste tuto ukázku modifikovat tak, aby detekovala špatné zadání ročního období. Cyklus while v PHP Tento druh cyklu vyhodnocuje logický výraz. Pokud je tento výraz pravdivý, provede kód uvnitř složených závorek, pokud není, obsah závorek je přeskočen. Podmínka se testuje vždy na začátku každého průchodu cyklem. Provádění cyklu lze přerušit v kódu pomocí příkazu break. <?php $i=1; while ($i < 5) { echo ($i); $i++; } ?> Předcházející ukázka provádí triviální cyklus, který se opakuje do té doby, dokud není splněna zadaná podmínka. V tabulce je zaznamenáno, co se v cyklu provádí a jak dlouho cyklus poběží: průběh cyklem 1. 2. 3. 4. hodnota $i na začátku cyklu 1 2 3 4 co se zobrazí 1 2 3 4 hodnota $i na konci cyklu 2 3 4 5 Pokud je zapotřebí testovat podmínku až na konci cyklu, používá se modifikovaný cyklus while, tentokrát ve tvaru do ... while (viz ukázka). <?php $i=1; do { echo ($i); $i++; } while ($i < 5); ?> Tabulka pro tuto ukázku je stejná jako v předchozí ukázce. Jaký je tedy rozdíl mezi těmito dvěma zápisy? V prvním případě (cyklus while) nemusí být podmínka před prvním průchodem splněna, kód uvnitř složených závorek se tedy neprovede. U druhého případu (cyklus do ... while) nejprve kód provede a potom jej teprve testuje, tzn. že cyklus se provede vždy alespoň jednou! Cyklus for v PHP Syntaxe těchto cyklů je následující: <?php for (inicializace; podmínka; posun) { příkazy } ?> První výraz cyklu for je tzv. inicializace - jako hodnotu tedy nastavujeme na počátku. Hodnota tohoto výrazu se nastaví pouze jednou, a to před prvním průchodem cyklu. Druhý výraz je podmínka, která se vyhodnocuje před každým průchodem cyklem. Pokud je tento výraz vyhodnocen (na základě řídící proměnné) jako pravda, provede se tělo cyklu, v opačném případě se cyklus ukončí. Třetí výraz se provádí vždy na konci každého průchodu cyklem, používá se obvykle pro inkrementaci či dekrementaci řídící proměnné, která byla na začátku cyklu inicializována. <?php for ($i=1; $i < 5; $i++) { echo ($i * $i); } ?> Ukázka provádí výpočet druhé mocniny čísla od 1 do 4, viz následující tabulka: průběh cyklem 1. 2. 3. 4. hodnota $i na začátku cyklu 1 2 3 4 co se zobrazí po provedení $i * $i 1 4 9 16 hodnota $i na konci cyklu 2 3 4 5 Programovací jazyk Z Wikipedie, otevřené encyklopedie http://cs.wikipedia.org/wiki/Programovac%C3%AD_jazyk Programovací jazyk je prostředek pro zápis algoritmů, jež mohou být provedeny na počítači. Zápis algoritmu ve zvoleném programovacím jazyce se nazývá program. Programovací jazyk je komunikačním nástrojem mezi programátorem, který v programovacím jazyce formuluje postup řešení daného problému, a počítačem, který program interpretuje technickými prostředky. Programovací jazyk je vlastně soubor pravidel pro zápis algoritmu, odborně řečeno se jedná o formální jazyk. Programovací jazyky existují v řadě verzí a implementací, mluvíme někdy o dialektech programovacího jazyka. Existují také standardy pro programovací jazyky, pro jednotlivé implementace se často uvádí, kterému standardu vyhovuje. Typy programovacích jazyků Existuje několik možností kritérií, podle kterých jazyky dělit. Dle míry abstrakce: vyšší programovací jazyky (většina jazyků) nižší programovací jazyky (např. Assembler, částečně VHDL) Dle způsobu překladu a spuštění: kompilované programovací jazyky (např. Pascal, C) interpretované programovací jazyky (např. BASIC, Perl, Python, shell) o interpretované jazyky, které se pouze interpretují (z toho důvodu jsou pomalejší proto většina jazyků má alespoň nějakou jinou možnost, pokud nejsou stejně zpomalované něčím jiným, jako třeba shell) o interpretované jazyky, které se překládají, ale pouze do mezikódu, nikoli do strojového kódu počítače (např. Java, Python) o interpretované jazyky, které se po spuštění za běhu programu překládají do strojového kódu počítače (např. Java, pokud se použije systém JIT) Toto členění není absolutní, řada programovacích jazyků existuje v implementaci jak interpretované, tak kompilované (například zmíněná Java). Navíc jsou oba postupy někdy kombinovány, zdrojový kód je nejprve kompilován do mezikódu, který je poté interpretován. Vyšší programovací jazyky se dále dělí takto: Procedurální (imperativní) o Strukturované algoritmus rozděluje na dílčí úlohy (t.j. procedury či funkce), které se spojují v jeden celek). (např. C, BASIC) o Objektově orientované (např. Smalltalk, Java) Neprocedurální = Deklarativní programování je založeno na myšlence programování aplikací pomocí definic co se má udělat a ne jak se to má udělat. (deskriptivní) o Funkcionální (např. Lisp, Haskell) o Logické (např. Prolog, Goedel) Některé programovací jazyky (např. C++, Python, Object Pascal, Flex) umožňují programátorovi kombinovat různé přístupy. Část řešení může být například vyjádřena zápisem funkcí a procedur (strukturované programování), část řešení může využívat čistě objektový přístup. Klasickým příkladem jazyka, ve kterém se mezi těmito přístupy nedělá ostrá hranice, je jazyk C++. Podobný pragmatický přístup využívá jazyk Python, který navíc do určité míry podporuje i funkcionální programování. Jako protiklad k nim uveďme velmi rozšířený jazyk Java, kde se i jednoduchá funkce musí vyjádřit formou metody třídy. Některé programovací jazyky byly vytvořeny především pro výuku programování a algoritmického myšlení. Mezi takové jazyky patří například Logo, Karel, Baltík, Petr. (Ostatně prvotním důvodem vzniku jazyka Pascal byla také výuka programovaní.) Některé programovací jazyky Úplnější seznam - viz Seznam programovacích jazyků Programovací jazyky ABAP | Ada | AWK | Assembler | C | C++ | C# | COBOL | ColdFusion | Clean | D | Eiffel | Erlang | Flex | Fortran | JADE | Java | JavaScript | Lisp | Lua | Oberon | Object Pascal | Objective-C | Pascal | Perl | PHP | Python | REALbasic | REBOL | RPG | Ruby | SQL / PL/SQL | Tcl / Tcl/Tk | Visual Basic / VBScript | VB.NET | Visual FoxPro Akademické: APL / J | Baltazar | Baltík | Karel | OCaml | Haskell | Scheme | Smalltalk | Logo | MATLAB | Mathematica | ML | Prolog Ostatní: ALGOL | BASIC | Clipper | Forth | Goedel | Limbo | Miranda | Modula-2 / Modula-3 | MUMPS | PL/1 | Simula 67 | Whitespace SQL (někdy vyslovováno anglicky es-kjů-el [ɛ s kjʊ ːɛ ɫ ] IPA, někdy též síkvl [siːkwəl] IPA) je standardizovaný dotazovací jazyk používaný pro práci s daty v relačních databázích. SQL je zkratka anglických slov Structured Query Language (strukturovaný dotazovací jazyk). Algoritmus (nebo dřívějším pravopisem algorithmus) je přesný návod či postup, kterým lze vyřešit daný typ úlohy. Pojem algoritmu se nejčastěji objevuje při programování, kdy se jím myslí teoretický princip řešení problému (oproti přesnému zápisu v konkrétním programovacím jazyce). Obecně se ale algoritmus může objevit v jakémkoli jiném vědeckém odvětví. Jako jistý druh algoritmu se může chápat i např. kuchyňský recept. V užším smyslu se slovem algoritmus rozumí pouze takové postupy, které splňují některé silnější požadavky: Obsah [skrýt] 1 Vlastnosti algoritmů 2 Algoritmická složitost 3 Druhy algoritmů 4 Seznam algoritmů 5 Etymologie 6 Reference [ Vlastnosti algoritmů Konečnost Každý algoritmus musí skončit v konečném počtu kroků. Tento počet kroků může být libovolně velký (podle rozsahu a hodnot vstupních údajů), ale pro každý jednotlivý vstup musí být konečný. Postupy, které tuto podmínku nesplňují, se mohou nazývat výpočetní metody. Speciálním příkladem nekonečné výpočetní metody je reaktivní proces, který průběžně reaguje s okolním prostředím. Někteří autoři však mezi algoritmy zahrnují i takovéto postupy. Determinovanost Každý krok algoritmu musí být jednoznačně a přesně definován; v každé situaci musí být naprosto zřejmé, co a jak se má provést, jak má provádění algoritmu pokračovat. Protože běžný jazyk obvykle neposkytuje naprostou přesnost a jednoznačnost vyjadřování, byly pro zápis algoritmů navrženy programovací jazyky, ve kterých má každý příkaz jasně definovaný význam. Vyjádření výpočetní metody v programovacím jazyce se nazývá program. Vstup Algoritmus obvykle pracuje s nějakými vstupy, veličinami, které jsou mu předány před započetím jeho provádění, nebo v průběhu jeho činnosti. Vstupy mají definované množiny hodnot, jichž mohou nabývat. Výstup Algoritmus má alespoň jeden výstup, veličinu, která je v požadovaném vztahu k zadaným vstupům, a tím tvoří odpověď na problém, který algoritmus řeší. (Algoritmus vede od zpracování hodnot k výstupu - resultativnost) Efektivita Obecně požadujeme, aby algoritmus byl efektivní, v tom smyslu, že požadujeme, aby každá operace požadovaná algoritmem, byla dostatečně jednoduchá na to, aby mohla být alespoň v principu provedena v konečném čase pouze s použitím tužky a papíru. (tj. byla elementární) Obecnost (hromadnost) Algoritmus neřeší jeden konkrétní problém (např. „jak spočítat 3×7“), ale obecnou třídu obdobných problémů (např. „jak spočítat součin dvou celých čísel“). V praxi jsou proto předmětem zájmu hlavně takové algoritmy, které jsou v nějakém smyslu kvalitní. Takové algoritmy splňují různá kritéria, měřená např. počtem kroků potřebných pro běh algoritmu, nebo jednoduchost či elegance algoritmu. Problematikou efektivity algoritmů, tzn. metodami, jak z několika známých algoritmů řešících konkrétní problém vybrat ten nejlepší, se zabývají odvětví informatiky nazývané algoritmická analýza a teorie složitosti. Algoritmická složitost Je třeba poznamenat, že abstraktní kritérium konečnosti je pro praktické použití ještě příliš slabé. V praxi je třeba zajistit, aby algoritmus skončil „v rozumném“ čase. Za rozumný čas lze v praxi považovat takový čas, který nám umožní smysluplně využít výsledek. Např. existuje jednoduchý algoritmus, který dokáže určit, zda v dané šachové pozici může hráč na tahu vynutit vítězství a zároveň dokáže určit nejlepší možný tah. Tento algoritmus se však nedá použít, protože by na svou činnost potřeboval ohromné množství času, jakkoli je toto množství konečné. Mimoto by takový algoritmus spotřeboval ohromné množství paměti, což je další praktický zřetel, který se uplatňuje při volbě algoritmu. I když průměrná počítačová paměť stále narůstá, pro některé algoritmy jí nebude nikdy dost. Pro vyčíslení výpočetní složitosti algoritmů v závislosti na velikosti vstupních dat se používá asymptotický zápis závislosti výpočetního času na rozsahu úlohy (typicky na počtu vstupních údajů). Například O(log N) znamená, že počet kroků algoritmu závisí logaritmicky na velikosti vstupních dat. Pokud u takového algoritmu zdvojnásobíme rozsah vstupních údajů, doba výpočtu se zvýší o jednu jednotku času, pokud bude vstupních dat čtyřikrát více, doba výpočtu se prodlouží o dvě jednotky času, a tak dále. To je třeba případ nalezení jednoho prvku o určité hodnotě v seznamu prvků seřazeném podle hodnoty (např. nalezení jména v telefonním seznamu). Druhy algoritmů Algoritmy můžeme klasifikovat různými způsoby. Mezi důležité druhy algoritmů patří: Rekurzivní algoritmy, které využívají (volají) samy sebe. Hladové algoritmy se k řešení propracovávají po jednotlivých rozhodnutích, která, jakmile jednou učiněna, už nejsou dále revidována. Algoritmy typu rozděl a panuj dělí problém na menší podproblémy, na něž se rekurzivně aplikují (až po triviální podproblémy, které lze vyřešit přímo), po čemž se dílčí řešení vhodným způsobem sloučí. Algoritmy dynamického programování pracují tak, že postupně řeší části problému od nejjednodušších po složitější s tím, že využívají výsledky již vyřešených jednodušších podproblémů. Mnoho úloh se řeší převedením na grafovou úlohu a aplikací příslušného grafového algoritmu. Pravděpodobnostní algoritmy (někdy též probabilistické) provádějí některá rozhodnutí náhodně či pseudonáhodně. V případě, že máme k dispozici více počítačů, můžeme úlohu mezi ně rozdělit, což nám umožní ji vyřešit rychleji; tomuto cíli se věnují paralelní algoritmy. Genetické algoritmy pracují na základě napodobování biologických evolučních procesů, postupným „pěstováním“ nejlepších řešení pomocí mutací a křížení. V genetickém programování se tento postup aplikuje přímo na algoritmy (resp. programy), které jsou zde chápany jako možná řešení daného problému. Heuristický algoritmus si za cíl neklade nalézt přesné řešení, ale pouze nějaké vhodné přiblížení; používá se v situacích, kdy dostupné zdroje (např. čas) nepostačují na využití exaktních algoritmů (nebo pokud nejsou žádné vhodné exaktní algoritmy vůbec známy). Přitom jeden algoritmus může patřit zároveň do více skupin; například může být zároveň rekurzivní a typu rozděl a panuj. Seznam algoritmů Eratosthenovo síto Euklidův algoritmus Algoritmus de Casteljau Dijkstrův algoritmus Bellman-Fordův algoritmus Etymologie Slovo algoritmus pochází ze jména významného perského matematika žijícího v první polovině 9. století (cca 780–840), kterým byl Abū ʻAbd Allāh Muhammad ibn Mūsā al-Chwārizmī (دبع وبأ ícíjezáhcop ,vůšížjoM nys ,ademahoM ,ahálludbA cetO„ avolsod) ( اهلل محمد ب ن مو سى ال خوارزميz města Chwārizm (Chórézm)“; tento kraj se nachází jižně od Aralského moře). Tento učenec ve svém díle prakticky vytvořil systém arabských číslic a základy algebry (konkrétně metody řešení lineárních a kvadratických rovnic), jejíž název pochází přímo z titulu tohoto díla (Kitūb al-jabr waāl-muqūbala). Jeho jméno bylo do latiny převedeno jako algorismus, a původně znamenalo „provádění aritmetiky pomocí arabských číslic“; abacisté počítali pomocí abaku, algoristé pomocí algorismů. Postupem času se kvůli neznalosti původu slova jeho podoba měnila, záměnou arabského kořene s kořenem řeckého slova αριθμός (arithmos) se z algorismu stal algorithmus. (Později bylo v některých jazycích včetně češtiny th změněno na t, v katalánštině se vrátilo s.) Toto slovo se používalo jako označení různých matematických postupů, např. v 18. století označoval latinský termín algorithmus infitesimalis „metodu výpočtů s využitím nekonečně malých veličin, vynalezenou Leibnizem“. Slovo algoritmus v dnešním významu se používá až zhruba od 20. století. Překladač (též kompilátor, anglicky compiler z to compile – sestavit, zpracovat) je všeobecně stroj, respektive program, provádějící překlad z nějakého vstupního jazyka do jazyka výstupního. Nejčastěji bývá tento pojem používán v programování, kde označuje nástroje překládající algoritmus zapsaný ve vyšším programovacím jazyce do jazyka strojového, nebo spíše do strojového kódu. (O překladačích mezi přirozenými jazyky viz strojový překlad.) První kompletní překladač byl vyvinut v roce 1957 ve společnosti IBM a byl pro jazyk Fortran. Jazyk COBOL měl jako první na světě překladač pro více architektur, což zvýšilo jeho přenositelnost. Tyto překladače byly vytvořeny v assembleru. Jazyky, které umožňují napsat překladač, který přeloží sám sebe, se označují jako self-hosting („samonosné“) a prvním takovým se stal LISP, jehož překladač byl vytvořen v roce 1962 na MIT. Ovšem použití jazyků vyšší úrovně pro psaní překladačů se stalo běžné až po roce 1970, kdy byly překladače C a Pascalu vytvořeny v těchto jazycích. Překladač lze navrhnout mnoha způsoby, nejčastěji bývá rozdělen na dvě části. První je závislá na vstupním jazyce (tzv. front-end) a druhá závisí na cílové architektuře (tzv. back-end). Mezi těmito částmi program existuje ve formě tzv. mezikódu (bytekódu). Typický překladač bývá rozvržen do následujících jednotek: Obsah [skrýt] 1 Lexikální analyzátor 2 Syntaktický analyzátor 3 Sémantický analyzátor 4 Překladač do mezikódu 5 Optimalizátor 6 Generátor kódu 7 Podívejte se také 8 Externí odkazy Interpret (software) Interpret je speciální software, který umožňuje spouštět počítačové programy vytvořené ve skriptovaném programovacím jazyku. Tato činnost je podobná emulaci s tím rozdílem, že emulátor obvykle simuluje činnost existujícího hardwaru, zatímco interpret nejčastěji program spouští nad virtuálním strojem. V praxi nejsou rozdíly zcela jednoznačné. Například Java Virtual Machine, virtuální stroj nad kterým běžel kód Javy, už má hardwarovou implementaci. Virtuální stroj má často zásobníkovou architekturu. Zásobníková architektura Java LISP PostScript Ostatní shell Vaše příspěvky udržují Wikipedii v chodu! Java Java je objektově orientovaný programovací jazyk, který vyvinula firma Sun Microsystems a představila 23. května 1995. Java je jedním z nejpoužívanějších programovacích jazyků na světě. Díky své přenositelnosti je používán pro programy, které mají pracovat na různých systémech počínaje čipovými kartami (platforma JavaCard), přes mobilní telefony a různá zabudovaná zařízení (platforma Java ME), aplikace pro desktopové počítače (platforma Java SE) až po rozsáhlé distribuované systémy pracující na řadě spolupracujících počítačů rozprostřené po celém světě (platforma Java EE). Tyto technologie se jako celek nazývají platforma Java. Dne 8. května 2007 Sun uvolnil zdrojové kódy Javy (cca 2,5 miliónů řádků kódu) a Java bude dále vyvíjena jako open source. Existuje několik teorií o původu jména tohoto jazyka, jedna z nich spekuluje ispiraci oblíbeným kofeinovým nápojem hlavních proramátorů.[1] JavaScript JavaScript je multiplatformní, objektově orientovaný skriptovací jazyk, jehož autorem je Brendan Eich z tehdejší společnosti Netscape. Nyní se zpravidla používá jako interpretovaný programovací jazyk pro WWW stránky, vkládaný přímo do HTML kódu stránky. Jsou jím obvykle ovládány různé interaktivní prvky GUI (tlačítka, textová políčka) nebo tvořeny animace a efekty obrázků. Jeho syntaxe patří do rodiny jazyků C/C++/Java. Slovo Java je však součástí jeho názvu pouze s marketingových důvodů a s programovacím jazykem Java jej vedle názvu spojuje jen podobná syntaxe. JavaScript byl v červenci 1997 standardizován asociací ECMA (Europen Computer Manufacturers Association) a v srpnu 1998 ISO (International Standards Organization). Standardizovaná verze JavaScriptu je pojmenována jako ECMAScript a z ní byly odvozeny i další implementace, jako je například ActionScript. JavaScript byl původně obchodní název implementace společnosti Netscape, kde byl vyvíjen nejprve pod názvem Mocha, později LiveScript, ohlášen byl společně se společností Sun Microsystems v prosinci 1995 jako doplněk k jazykům HTML a Java. Pro verzi firmy Microsoft je použit název JScript. Program v JavaScriptu se obvykle spouští až po stažení WWW stránky z Internetu (tzv. na straně klienta), na rozdíl od ostatních jiných interpretovaných programovacích jazyků (např. PHP a ASP), které se spouštějí na straně serveru ještě před stažením z Internetu. Z toho plynou jistá bezpečností omezení, JavaScript např. nemůže pracovat se soubory, aby tím neohrozil soukromí uživatele. JavaScript je možné použít i na straně serveru. První implementací JavaScriptu na straně serveru byl LiveWire firmy Netscape vypuštěný roku 1996, dnes existuje několik možností včetně opensource implementace Rhinola založená na Rhino, gcj a Apache. Obsah [skrýt] 1 Základní vlastnosti o 1.1 Nevýhody jazyka Java 2 Ukázka kódu 3 Související články 4 Reference 5 Externí zdroje o 5.1 Informační servery v českém jazyce Základní vlastnosti jednoduchý – jeho syntaxe je zjednodušenou (a drobně upravenou) verzí syntaxe jazyka C a C++. Odpadla většina konstrukcí, které způsobovaly programátorům problémy a na druhou stranu přibyla řada užitečných rozšíření. objektově orientovaný – s výjimkou osmi primitivních datových typů jsou všechny ostatní datové typy objektové. distribuovaný – je navržen pro podporu aplikací v síti (podporuje různé úrovně síťového spojení, práce se vzdálenými soubory, umožňuje vytvářet distribuované klientské aplikace a servery). interpretovaný – místo skutečného strojového kódu se vytváří pouze tzv. mezikód (bajtkód). Tento formát je nezávislý na architektuře počítače nebo zařízení. Program pak může pracovat na libovolném počítači nebo zařízení, který má k dispozici interpret Javy, tzv. virtuální stroj Javy - Java Vitrual Machine (JVM). V pozdějších verzích Javy nebyl mezikód přímo interpretován, ale před prvním svým provedením dynamicky zkompilovány do strojového kódu daného počítače (tzv. just in time compilation - JIT). Tato vlastnost zásadním způsobem zrychlila provádění programů v Javě ale výrazně zpomalila start programů. V současnosti se převážně používají technologie zvané HotSpot compiler, které mezikód zpočátku interpretují a na základě statistik získaných z této interpretace později provedou překlad často používaných částí do strojového kódu včetně dalších dynamických optimalizací (jako je např. inlining krátkých metod atp.). robustní – je určen pro psaní vysoce spolehlivého softwaru – z tohoto důvodu neumožňuje některé programátorské konstrukce, které bývají častou příčinou chyb (např. správa paměti, příkaz goto, používání ukazatelů). Používá tzv. silnou typovou kontrolu – veškeré používané proměnné musí mít definovaný svůj datový typ. Správa paměti je realizována pomocí automatického Garbage collectoru který automaticky vyhledává již nepoužívané části paměti a uvolňuje je pro další použití. To bylo v prvních verzích opět příčinou pomalejšího běhu programů. V posledních verzích běhových prostředí je díky novým algoritmům pro garbage collection a tzv. generační správě paměti (paměť je rozdělena na více částí, v každé se používá jiný algoritmus pro garbage collection a objekty jsou mezi těmito částmi přesunovány podle délky svého života) tento problém ze značné části eliminován. bezpečný – má vlastnosti, které chrání počítač v síťovém prostředí, na kterém je program zpracováván, před nebezpečnými operacemi nebo napadením vlastního operačního systému nepřátelským kódem. nezávislý na architektuře – vytvořená aplikace běží na libovolném operačním systému nebo libovolné architektuře. Ke spuštění programu je potřeba pouze to, aby byl na dané platformě instalován správný virtuální stroj. Podle konkrétní platformy se může přizpůsobit vzhled a chování aplikace. přenositelný – vedle zmíněné nezávislosti na architektuře je jazyk nezávislý i co se týká vlastností základních datových typů (je například explicitně určena vlastnost a velikost každého z primitivních datových typů). Přenositelností se však myslí pouze přenášení v rámci jedné platformy Javy (např. J2SE). Při přenášení mezi platformami Javy je třeba dát pozor na to, že platforma určená pro jednodušší zařízení nemusí podporovat všechny funkce dostupné na platformě pro složitější zařízení a kromě toho může definovat některé vlastní třídy doplňující nějakou speciální funkčnost nebo nahrazující třídy vyšší platformy, které jsou pro nižsí platformu příliš komplikované. výkonný – přestože se jedná o jazyk interpretovaný, není ztráta výkonu významná, neboť překladače pracují v režimu „právě včas“ a do strojového kódu se překládá jen ten kód, který je opravdu zapotřebí. víceúlohový – podporuje zpracování vícevláknových aplikací dynamický – Java byla navržena pro nasazení ve vyvíjejícím se prostředí. Knihovna může být dynamicky za chodu rozšiřována o nové třídy a funkce, a to jak z externích zdrojů, tak vlastním programem. elegantní – velice pěkně se v něm pracuje, je snadno čitelný (např. i pro publikaci algoritmů), přímo vyžaduje ošetření výjimek a typovou kontrolu. Nevýhody jazyka Java Proti programovacím jazykům, které provádějí tzv. statickou kompilaci (např. C++), je start programů psaných v Javě pomalejší, protože prostředí musí program nejprve přeložit a potom teprve spustit. Je však možnost využít mechanismů JIT a HotSpot, kdy se často prováděné nebo neefektivní části kódu přeloží do strojového kódu a program se zrychlí. Na zrychlení se také podílí nové přístupy ke správě paměti, viz výše popsaná generační správa paměti. Další nevýhodou projevující se hlavně u jednodušších programů je větší paměťová náročnost při běhu způsobená nutností mít v paměti celé běhové prostředí. V návrhu Javy je vidět určitá dogmatičnost a snaha znemožnit programátorovi psát problematické konstrukce známé především z jazyka C. Součástí jazyka proto nejsou například bezznaménková čísla, příkaz goto nebo preprocesor, ačkoli se v oddůvodněných příkladech jedná o užitečné nástroje a ani rozšířené možnosti Javy je plně nenahrazují. Ukázka kódu Tradiční program „Hello world“ vypadá takto: public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } } Netradiční verze „Hello world“ s malou ukázkou objektového přístupu: public class HelloWorld { public static void main(String[] args) { Pozdrav pozdrav = new Pozdrav("Ahoj svete!"); pozdrav.print(); } } class Pozdrav { private String text; public Pozdrav(String pozdrav) { text = pozdrav; } private String getText() { return text; } public void print() { System.out.println(getText()); } } Informační servery v českém jazyce autorizované Java centrum o Javě na serveru Dioné Java blog jAbLoK odborný Java blog Romana "Dagiho" Pichlíka ASP -Active Server Pages Tento článek potřebuje úpravy. Můžete Wikipedii pomoci tím, že ho vylepšíte, alespoň náhradou této výzvy za konkrétnější. Jak by měly články vypadat, popisuje stránka Vzhled a styl, konkrétní problémy tohoto mohou být specifikovány na diskusní stránce. ASP (Active Server Pages) je technologie nezávislá na programovacím jazyce (vyvinutá společností Microsoft), která umožňuje vykonávání kódu na straně serveru a následné odeslání výsledku uživateli. To znamená, že webová stránka s příponou .asp obsahuje kód, který se vykoná na IIS serveru a prohlížeči odešle pouze výsledek ve značkovacím jazyce HTML, který umí bez problému zobrazit. Programovací jazyky, které se používají jsou tyto: VBScript a JScript. Příklad kódu na serveru <% For i = 1 To 6 Step 1 Response.Write "<h" & i & ">Nadpis velikosti " & i & „</h“ & i & ">" Next %> Klientovi se v tomto případě odešle pouze HTML <h1>Nadpis <h2>Nadpis <h3>Nadpis <h4>Nadpis <h5>Nadpis <h6>Nadpis [editovat] velikosti velikosti velikosti velikosti velikosti velikosti 1</h1> 2</h2> 3</h3> 4</h4> 5</h5> 6</h6> Verze ASP bylo zatím vydáno v 6 hlavních verzích: ASP verze 1.0 (distribuováno s IIS 3.0) v prosinci 1996 ASP verze 2.0 (distribuováno s IIS 4.0) v září 1997 ASP verze 3.0 (distribuováno s IIS 5.0) v listopadu 2000 ASP.NET verze 1.0 (součást rozhraní .NET Framework) v lednu 2002 ASP.NET verze 1.1 v dubnu 2003 ASP.NET verze 2.0 v listopadu 2005 [editovat] Externí odkazy Jemný úvod do ASP - popis základních objektů ASP a jejich možností, ukázky kódu ve VBScriptu Object Pascal Object Pascal je rozšíření programovacího jazyka Pascal o některé vlastnosti objektově orientovaného programování. PHP Z Wikipedie, otevřené encyklopedie Skočit na: Navigace, Hledání PHP (rekurzivní zkratka PHP: Hypertext Preprocessor, „PHP: Hypertextový preprocesor“, původně Personal Home Page) je skriptovací programovací jazyk, určený především pro programování dynamických internetových stránek. Nejčastěji se začleňuje přímo do struktury jazyka HTML, XHTML či WML, což je velmi výhodné pro tvorbu webových aplikací. PHP lze ovšem také použít i k tvorbě konzolových a desktopových aplikací. Samotná Wikipedie je naprogramována v PHP. PHP skripty jsou prováděny na straně serveru, k uživateli je přenášen až výsledek jejich činnosti. Syntaxe jazyka kombinuje hned několik programovacích jazyků (Perl, C, Pascal a Java). PHP je nezávislý na platformě, skripty fungují bez úprav na mnoha různých operačních systémech. Obsahuje rozsáhlé knihovny funkcí pro zpracování textu, grafiky, práci se soubory, přístup k většině databázových serverů (mj. MySQL, ODBC, Oracle, PostgreSQL, MSSQL), podporu celé řady internetových protokolů (HTTP, SMTP, SNMP, FTP, IMAP, POP3, LDAP, …) PHP se stalo velmi oblíbeným především díky jednoduchosti použití a tomu, že kombinuje vlastnosti více programovacích jazyků a nechává tak vývojáři částečnou svobodu v syntaxi. V kombinaci s databázovým serverem (především s MySQL nebo PostgreSQL) a webovým serverem Apache je často využíván k tvorbě webových aplikací. Díky velmi častému nasazení na serverch se vžila zkratka LAMP – tedy spojení Linux, Apache, MySQL a PHP nebo Perl. S verzí PHP 5 se výrazně zlepšil přístup k objektově orientovanému programování podobný Javě. Obsah [skrýt] 1 Historie 2 Ukázka kódu 3 Typické vlastnosti jazyka PHP 4 Historie jazyka 5 Externí odkazy Historie Od roku 1994 je PHP jedním z nejpoužívanějších způsobů tvorby dynamicky generovaných WWW stránek. Jeho tvůrce (Rasmus Lerdorf) jej vytvořil pro svou osobní potřebu přepsáním z Perlu do jazyka C. Sada skriptů byla vydána ještě v témže roce pod názvem Personal Home Page Tools, zkráceně PHP. V polovině roku se systém PHP spojil s programem Form Interpreter stejného autora. Tak vzniklo PHP/FI 2.0. Zeev Suraski a Andi Gutmans v roce 1997 přepsali parser a zformovali tak základ PHP3. Současně byl název změněn na dnešní podobu PHP Hypertext Preprocessor. PHP3 vyšlo v roce 1998, bylo rychlejší, obsahovalo více funkcí. Také běželo i pod operačním systémem Windows. V roce 2000 vychází PHP verze 4, o čtyři roky později pak verze 5 s vylepšeným objektovým přístupem, podobným jazyku Java. Zatím poslední verzí je 5.2.1 z roku 2007. Ukázka kódu Takto v PHP vypadá program Hello world: <?php echo "ahoj světe"; ?> Typické vlastnosti jazyka PHP Jazyk PHP je dynamicky typový, tzn. že datový typ proměnné se určí v okamžiku přiřazení hodnoty. Díky tomu má PHP dva typy porovnání, '==' stejný jako v C, a '===' který platí jen když jsou oba dva výrazy stejného typu. Pole jsou heterogenní, mohou tedy obsahovat jakékoli údaje, stejně tak jako jejich indexy. Řetězce lze uzavírat jak do uvozovek (obsah je parsován), tak do apostrofů (obsah není parsován). // Zde je v promenne string (tecka je operator spojovani retezcu) $retez = "Ahoj svete".',mam se dobre'." nevadi ze stridam oddelovace"; // Zde je v promenne cislo (int) $cislo = 100; // Do promenne je mozne dat pole, ktere obsahuje jak cisla, tak znaky ci dalsi pole $pole = Array ('a','b', 1, 2, Array("prvni"=>'podpole','vytisteno')); // Nenahlasi chybu (jenom varovani) a vytiskne 'Array' print $pole; // Vytiskne obsah promenne pole print_r($pole); // Test porovavani $cislo = 100; $retez = '100'; // Toto porovnani ('==') plati diky automaticke typove konverzi if ($retez == $cislo) echo 'Jsou stejne'; // Ale porovnani pomoci '===' neplati nebot nejsou stejne typy if ($retez === $cislo) echo 'To by neslo'; PHP do verze 4.2.0 automaticky přejímalo veškeré proměnné (považovalo je za globální) poslané jakoukoliv metodou (POST, GET, COOKIE, ale i SESSION) (pokud administrátor serveru tuto funkci nevypnul) a umožňovalo s nimi dále pracovat. od verze 4.2.0 lze hodnotu získat ze superglobálních proměnných s garancí původu informace (máme zaručeno, že data byla odeslána požadovanou metodou). Administrátor serveru má stále možnost používání globálních proměnných povolit, ale z bezpečnostních důvodů se to silně nedoporučuje. //odešlu formulář metodou POST, kde do pole s názvem jmeno vepíšu 'Tom' echo $jmeno; //vrátí 'Tom', funguje pouze v případě povolených globálních proměnných echo $_POST['jmeno']; //vrátí 'Tom', superglobální proměnné fungují i při vypnutých globálních proměnných echo $_GET['jmeno']; //vypíše se chybové hlášení o neexistenci proměnné a vrátí NULL //NULL je zvláštní hodnota libovolného typu proměnných pro stav 'nedefinováno' Historie jazyka Verze PHP 1.0 Datum 8. června, 1995 PHP 2.0 (PHP/FI) 16. dubna, 1996 PHP 3.0 6. června, 1998 PHP 4.0 22. května, 2000 PHP 4.1 10. prosince, 2001 PHP 4.2 22. dubna, 2002 PHP 4.3 27. prosince, 2002 PHP 4.4 11. července, 2005 PHP 5.0 13. července, 2004 PHP 5.1 25. listopadu, 2005 PHP 5.2 2. listopadu, 2006 Seriál o PHP na serveru linuxsoft.cz Články o PHP na serveru Interval.cz Knihovna PHP - příručka PHP pro každého (česky) Objektově orientované programování (OOP) v PHP - kompletní příručka založená na PHP5 (česky) PHP pro začátečníky na serveru Jakpsatweb.cz PHP triky - Weblog o elegantním programování v PHP pro mírně pokročilé XHTML Z Wikipedie, otevřené encyklopedie Skočit na: Navigace, Hledání XHTML (zkratka anglického extensible hypertext markup language – „rozšiřitelný značkovací jazyk pro hypertext“) je značkovací jazyk pro tvorbu hypertextových dokumentů v prostředí WWW vyvinutý konsorciem W3C. Je následníkem jazyka HTML, jehož vývoj byl ukončen, a na rozdíl od svého předchůdce se jedná o aplikaci XML. Obsah [skrýt] 1 Verze o 1.1 XHTML 1.0 o 1.2 Modularizace XHTML o 1.3 XHTML Basic o 1.4 XHTML Mobile Profile o 1.5 XHTML 1.1 - modulově založené XHTML o 1.6 XHTML-Print o 1.7 XHTML 2.0 o 1.8 Rozdíly XHTML oproti HTML 2 Odkazy o 2.1 Reference o 2.2 Další články o 2.3 Externí odkazy XHTML 1.0 První specifikace, jejíž cílem bylo převedení staršího jazyka HTML tak, aby vyhovoval podmínkám tvorby XML dokumentů a přitom byla zachována zpětná kompatibilita. Existuje ve třech verzích: Strict, Transitional a Frameset. Jediným podstatným rozdílem proti HTML je, že veškeré prvky jsou párové a musí být uzavřeny. Hodnoty všech atributů musí být zapsány v uvozovkách a názvy všech prvků a atributů musí být psány malými písmeny. Modularizace XHTML Dalším krokem ve vývoji XHTML byla modularizace s cílem dosáhnutí vyšší flexibility napříč uživatelskými agenty (WWW prohlížeče, mobilní zařízení, tiskárny, čtečky apod.). XHTML Basic Příklad minimální sady modulů potřebné k vytvoření XHTML dokumentu, která je cílená na mobilní aplikace. XHTML Mobile Profile XHTML Mobile Profile - někdy taky XHTML MP je postaveno na základě XHTML Basic a je určeno pro použití v mobilních telefonech. Někdy je také označováno jako WAP 2.0. XHTML MP podporuje narozdíl od WAP 2.0 barvu a barevné obrázky ve formátech GIF, JPEG a PNG. XHTML 1.1 - modulově založené XHTML Příklad rozsáhlé sady modulů pro komplexnější tvorbu XHTML dokumentů. Vynechává již prakticky všechny prezentační vlastnosti. Je velice podobné XHTML 1.0 Strict, ale na rozdíl od něj může vzhledem ke své modularizaci sloužit jako základ budoucím rozšířeným dokumentům z rodiny XHTML. Je výslovně zakázáno odesílat takto zformátovaný dokument s MIME typem text/html, ale je nutno ho odesílat s MIME typem application/xhtml+xml. Tohoto lze docílit několika způsoby: o pojmenování souboru *.xhtml; o odesláním MIME typu s hlavičkou pomocí HTTP; o atd. XHTML-Print Vývojové stádium Candidate Recommendation. Zaměření na tiskový výstup. XHTML 2.0 Vývojové stádium Working Draft. Není zamýšleno tak, aby bylo zpětně kompatibilní se svými předchůdci. Rozdíly XHTML oproti HTML V XHTML na rozdíl od HTML musí být všechny tagy ukončené a to včetně nepárových jako jsou br, hr nebo img. V XHTML na rozdíl od HTML musí být všechny tagy a jejich atributy napsány malými písmeny Všechny hodnoty atributů musí být uzavřeny do uvozovek Tag img má povinný atribut alt. Z tagu href byl odstraněn atribut target, který umožňoval otevřít odkaz na nové stránce. Lze jej nahradit pomocí JavaScriptu. Tento článek o počítačích je pahýl. Můžete pomoci Wikipedii tím, že jej vhodně rozšíříte. Odkazy Reference XHTML™ 1.0: Rozšířitelný hypertextový značkovací jazyk oficiální specifikace XHTML 1.0 (W3C Recommendation) (česky) Modularization of XHTML™ oficiální specifikace Modularizace XHTML (W3C Recommendation) (anglicky) XHTML™ Basic oficiální specifikace XHTML Basic (W3C Recommendation) (anglicky) XHTML™ 1.1: Modulově založený XHTML oficiální specifikace XHTML 1.1 (W3C Recommendation) (česky) XHTML-Print oficiální specifikace XHTML Basic (W3C Candidate Recommendation) (anglicky) XHTML™ 2.0 oficiální návrh specifikace XHTML 2.0 (W3C Working Draft) (anglicky) Další články HTML XML DTD Externí odkazy W3C XHTML Validátor - oficiální referenční validátor W3C HTML Validátor - nástroj ověřující validitu (česky); výsledky tohoto nástroje se záměrně liší od výsledků oficiálního validátoru (vyjadřují soukromý názor autora) XHTML - kompletní průvodce - úplný rozbor normy a praktické nasazení jednotlivých elementů (česky) Soumrak nad moderním X Zamyšlení nad XHTML Proč nepoužívám XHTML - článek na Interval.cz Proč používám XHTML - článek na Interval.cz Jak používám XHTML - článek na Interval.cz Citováno z „http://cs.wikipedia.org/wiki/XHTML“ XML Z Wikipedie, otevřené encyklopedie Skočit na: Navigace, Hledání XML (eXtensible Markup Language, česky rozšiřitelný značkovací jazyk) je obecný značkovací jazyk, který byl vyvinut a standardizován konsorciem W3C. Umožňuje snadné vytváření konkrétních značkovacích jazyků pro různé účely a široké spektrum různých typů dat. Jazyk je určen především pro výměnu dat mezi aplikacemi a pro publikování dokumentů. Jazyk umožňuje popsat strukturu dokumentu z hlediska věcného obsahu jednotlivých částí, nezabývá se sám o sobě vzhledem dokumentu nebo jeho částí. Prezentace dokumentu (vzhled) se potom definuje připojeným stylem. Další možností je pomocí různých stylů provést transformaci do jiného typu dokumentu, nebo do jiné struktury XML. Původní jazyk pro publikování HTML již přestal vyhovovat především pro svou složitost, která vznikla jeho postupným (a svévolným) rozšiřováním. Jazyk XML nemá žádné předdefinované značky (tagy, názvy jednotlivých elementů) a také jeho syntaxe je podstatně přísnější, než HTML. Obsah [skrýt] 1 Vlastnosti XML o 1.1 Standardní formát pro výměnu informací o 1.2 Mezinárodní podpora o 1.3 Vysoký informační obsah o 1.4 Snadná konverze do jiných formátů o 1.5 Automatická kontrola struktury dokumentu o 1.6 Hypertext a odkazy 2 Syntaxe XML 3 Aplikace XML 4 Verze XML 5 Externí odkazy 6 Literatura Vlastnosti XML Standardní formát pro výměnu informací V dnešní době již není možné zasílat dokumenty v nějakém tvaru, který vyžaduje speciální software některé firmy, jako je např. formát DOC, XLS nebo T602. Je používána celá řada operačních a informačních systémů a není záruka, že každý uživatel vlastní příslušný software. Je tedy potřeba používat nějaký jednoduchý otevřený formát, který není úzce svázán s nějakou platformou nebo proprietární technologií. Tím může být právě XML, který je založen na jednoduchém textu a je zpracovatelný (v případě potřeby) libovolným textovým editorem. Specifikace XML konsorcia W3C je zdarma přístupná všem. Každý tak může bez problémů do svých aplikací implementovat podporu XML. To je velký rozdíl oproti firemním formátům, k nimž není k dispozici žádná dokumentace a navíc se jedná v porovnání s XML o velice složité, často binární, formáty. Mezinárodní podpora XML hned od samého počátku myslel na potřeby i jiných jazyků než je angličtina. Jako znaková sada se implicitně používá ISO 10646 (také Unicode). V XML proto můžeme vytvářet dokumenty, které obsahují texty v mnoha jazycích najednou – můžeme přepínat mezi různými jazyky v jednom dokumentu. Současně je přípustné i jiné libovolné kódování (např. windows-1250, iso-8859-2), musí však být v každém dokumentu přesně určeno. Odpadají tak problémy s konverzí z jednoho kódování do druhého. Vysoký informační obsah Pomocí XML značek (tagů) vyznačujeme v dokumentu význam jednotlivých částí textu. Dokumenty tak obsahují více informací, než kdyby se používalo značkovaní zaměřené na prezentaci (vzhled) – definice písma, odsazení a podobně. XML dokumenty jsou informačně bohatší. To lze samozřejmě s výhodou využít v mnoha oblastech. Největší přínos bude samozřejmě pro prohledávání, kdy můžeme určit i jaký význam má mít hledaný text. Snadná konverze do jiných formátů Při používání XML dokumentu potřebujeme také dokument zobrazit. XML samo o sobě žádné prostředky pro definici vzhledu nenabízí. Existuje ale několik stylových jazyků, které umožňují definovat, jak se mají jednotlivé elementy zobrazit. Souboru pravidel nebo příkazů, které definují, jak se dokument převede do jiného formátu, se říká styl. Jeden vytvořený styl můžeme aplikovat na mnoho dokumentů stejného typu, stejně tak můžeme na jeden dokument aplikovat několik různých stylů. Výsledkem může být např. PostScriptový soubor, HTML kód nebo XML s obsahem původního dokumentu. Stylových jazyků existuje dnes několik. Mezi nejznámější patří asi kaskádové styly (CSS). Ty lze použít pouze pro jednoduché formátování, které dobře poslouží pro zobrazení dokumentu na obrazovce. Další možností je rodina jazyků XSL (eXtensible Stylesheet Language). Ta umožňuje dokument různě upravovat a transformovat – vybírat části dokumentu nebo generovat obsahy a rejstříky. Automatická kontrola struktury dokumentu XML neobsahuje předdefinované značky (tagy), je třeba definovat vlastní značky, které budeme používat. Tyto značky je možné (nepovinně) definovat v souboru DTD (Document Type Definition). Potom je možné automaticky kontrolovat, zda vytvářený XML dokument odpovídá této definici. Program, který tyto kontroly provádí, se nazývá parser. Při vývoji aplikací můžeme parser použít, a ten za nás detekuje většinu chyb v datech. DTD není jediný definiční jazyk pro XML. Neobsahuje možnost kontrolovat typy dat (čísla, měnové údaje, údaje o datu a čase). To je vlastnost, která chybí při zpracování dat databázového charakteru. V současné době se pod názvem XML schémata pracuje na půdě konsorcia W3C na vytvoření jednotného standardu, který tyto kontroly umožní. Pro různé standardní aplikace byla postupně vytvořena schémata, která definují značky (názvy elementů) pro konkrétní typy dokumentů. Příkladem může být DocBook, který definuje struktury pro vytváření knih, článků, vědeckých publikací a podobně. Výhodou takových aplikací je, že současně s definičními soubory DTD je dodávána sada stylů (XSL souborů) pro následné zpracování a přípravu pro tisk, nebo pro převod do jiných standardních tvarů (PostScript, HTML atd.). Další vlastností XML je, že v jednom dokumentu můžeme používat najednou nezávisle na sobě několik druhů značkovaní pomocí jmenných prostorů (namespaces). To umožňuje kombinovat v jednom dokumentů několik různých definic ve formě DTD nebo schémat bez konfliktů v pojmenování elementů. Hypertext a odkazy XML stejně jako HTML umožňuje vytváření odkazů v rámci jednoho dokumentu i mezi dokumenty, má však více možností. Je možné vytvářet i vícesměrné odkazy, které spojují více dokumentů dohromady. Tvorba odkazů je popsána ve třech standardech – XLink, XPointer a XPath. XPath (XML Path Language) je jazyk, který umožňuje adresovat jednotlivé části dokumentu. XPointer (XML Pointer Language). Je rozšířením XPath. Používá k určování jednotlivých částí dokumentu ve stylu: „zajímá mě první odstavec třetí kapitoly“. Není nutné ty části dokumentu, na které chceme odkazovat, explicitně označovat pomocí návěstí jako v HTML. XLink (XML Linking Language) je samotný jazyk pro tvorbu odkazů. Jednotlivé dokumenty se určují pomocí jejich URL adresy, za kterou lze uvést ještě XPointer pro přesnější určení části dokumentu. Syntaxe XML XML dokument je text, vždy Unicode, v Česku obvykle kódovaný jako UTF-8, ale jsou přípustná i jiná kódování. Na rozdíl od např. HTML, efektivita XML je silně závislá na struktuře, obsahu a integritě. Aby byl dokument považován za správně strukturovaný („well-formed“) [1], musí mít nejméně následující vlastnosti: Musí mít právě jeden kořenový (root) element. Neprázdné elementy musí být ohraničeny startovací a ukončovací značkou. Prázdné elementy mohou být označeny tagem „prázdný element“. Všechny hodnoty atributů musí být uzavřeny v uvozovkách – jednoduchých (') nebo dvojitých ("), ale jednoduchá uvozovka musí být uzavřena jednoduchou a dvojitá dvojitou. Opačný pár uvozovek může být použit uvnitř hodnot. Elementy mohou být vnořeny, ale nemohou se překrývat; to znamená, že každy (ne kořenový) element musí být celý obsažen v jiném elementu. Jména elementů v XML rozlišují malá a velká písmena: např. „<Příklad>“ a „</Příklad>“ je pár, který vyhovuje správně strukturovanému dokumentu, pár „<Příklad>“ a „</příklad>“ je chybný. Jednoduchý recept v XML jako příklad by mohl vypadat takto: <?xml version="1.0" encoding="UTF-8"?> <recept jméno="chleba" čas_přípravy="5 minut" čas_vaření="3 hodiny"> <titulek>Jednoduchý chleba</titulek> <přísada množství="3" jednotka="šálky">Mouka</přísada> <přísada množství="0,25" jednotka="unce">Kvasnice</přísada> <přísada množství="1,5" jednotka="šálku">Horká voda</přísada> <přísada množství="1" jednotka="kávová lžička">Sůl</přísada> <instrukce> <krok>Smíchejte všechny přísady dohromady a dobře prohněťte.</krok> <krok>Zakryjte tkaninou a nechejte hodinu v teplé místnosti.</krok> <krok>Znovu prohněťte, umístěte na plech a pečte v troubě.</krok> </instrukce> </recept> Aplikace XML Příklady aplikace XML: XHTML – Nástupce jazyka HTML. RDF – Resource Description Framework, specifikace, která umožňuje popsat metadata, např. obsah a anotace HTML stránky. RSS – je rodina XML formátů, sloužící pro čtení novinek na webových stránkách SMIL – Synchronized Multimedia Integration Language, popisuje multimedia pomocí XML. MathML – Mathematical Markup Language je značkovací jazyk pro popis matematických vzorců a symbolů pro použítí na webu. SVG – Scalable Vector Graphics je jazyk pro popis dvourozměrné vektorové grafiky, statické i dynamické (animace). DocBook – Sada definic dokumentů a stylů pro publikační činnost Jabber – Protokol pro Instant messaging SOAP – Protokol pro komunikaci mezi Webovými službami OpenDocument – Souborový formát určený pro ukládání a výměnu dokumentů vytvořených kancelářskými aplikacemi Verze XML Aktuální verze XML je 1.1 (od 16. srpna 2006). První verze XML 1.0 existuje ve čtvrté revizi. Obě verze se liší v požadavcích na použité znaky v názvech elementů, atributů atd. Verze 1.0 dovolovala pouze užívání znaků platných ve verzi Unicode 2.0, která obsahuje většinu světových písem, ale neobsahuje později přidané sady jako je Mongolština a podobně. Verze XML 1.1 zakazuje pouze řídící znaky, což znamená, že mohou být použity jakékoli jiné znaky. Je třeba poznamenat, že omezení ve verzi 1.0 se vztahuje pouze na názvy elementů a atributů. Jinak obě verze dovolují v obsahu dokumentu jakékoli znaky. Verze 1.1 je tedy nutná, pokud potřebujeme psát názvy elementů v jazyku, který byl přidán do Unicode později. Další menší změna mezi XML 1.0 a 1.1 je, že řídící znaky se nyní mohou vkládat jen jako escape sekvence, a se speciálními znaky „form-feed“ se musí zacházet jako s bílými znaky. Všechny dokumenty verze 1.0 budou platné ve verzi 1.1 s jednou výjimkou: dokumenty deklarované s kódováním ISO-8859-1, které jsou ve skutečnosti v kódu Windows CP1252, nemusejí být nyní platné. Důvodem je, že CP1252 používají blok řídících znaků pro speciální zobrazení, jako jsou znaky €, Œ, and ™. Dokumenty s deklarací CP1252 zůstávají platné. Externí odkazy ZVON – Vše o XML a jak tvořit XML www.w3.org/XML/ – Specifikace, pracovní skupiny W3C atd. Slabikář XML (česky) Kurz XML XML Document Authoring Tools XML-DEV Mailing List Python Z Wikipedie, otevřené encyklopedie Skočit na: Navigace, Hledání Charakter jazyka: víceparadigmatický Objevil se: 1990 Navrhl jej: Guido van Rossum Vývoj realizuje: Python Software Foundation Poslední verze: 2.5 Datum verze: Typová kontrola: Hlavní implementace: Dialekty: Ovlivněn jazyky: 19. září 2006 silná, dynamická CPython, Jython, IronPython, PyPy -ABC, Perl, Lisp, Smalltalk, Tcl Ovlivnil jazyky: Operační systém: Ruby, Boo, Groovy různé platformy Licence: Python Software Foundation License Website: www.python.org Python je interpretovaný objektově orientovaný programovací jazyk navržený v roce 1990 Guidem van Rossumem. Python je vyvíjen jako open source projekt, který zdarma nabízí instalační balíky pro většinu běžných platforem (Unix, Windows, Mac OS); ve většině distribucí systému Linux je Python součástí základní instalace. Obsah [skrýt] 1 Vlastnosti 2 Zen of Python 3 Související projekty 4 Spolupráce s jinými programovacími jazyky o 4.1 C a C++ o 4.2 Java o 4.3 Prostředí .NET/Mono 5 Výkon 6 Spolupráce s jinými aplikacemi 7 Příklady 8 Charakteristika a použití jazyka o 8.1 Proměnná je pojmenovaným odkazem na objekt o 8.2 Funkce se uchovává jako objekt o 8.3 Do složených datových struktur se ukládají odkazy o 8.4 Proměnné není nutné deklarovat o 8.5 Členské proměnné tříd mohou vznikat až za běhu o 8.6 Typy nelze libovolně míchat o 8.7 Ortogonalita operátorů 9 Externí odkazy Vlastnosti Python je dynamický interpretovaný jazyk. Někdy bývá zařazován mezi takzvané skriptovací jazyky. Jeho možnosti jsou ale větší. Python byl navržen tak, aby umožňoval tvorbu rozsáhlých, plnohodnotných aplikací (včetně grafického uživatelského rozhraní). Python je hybridní jazyk (nebo také víceparadigmatický), to znamená, že umožňuje při psaní programů používat nejen objektově orientované paradigma, ale i procedurální a v omezené míře i funkcionální, podle toho komu co vyhovuje nebo se pro danou úlohu hodí nejlépe. Python má díky tomu vynikající vyjadřovací schopnosti. Kód programu je ve srovnání s jinými jazyky krátký a dobře čitelný. K význačným vlastnostem jazyka Python patří jeho jednoduchost z hlediska učení. Bývá dokonce považován za jeden z nejvhodnějších programovacích jazyků pro začátečníky. Tato skutečnost je dána tím, že jedním z jeho silných inspiračních zdrojů byl programovací jazyk ABC, který byl jako jazyk pro výuku a pro použití začátečníky přímo vytvořen. Python ale současně bourá zažitou představu, že jazyk vhodný pro výuku není vhodný pro praxi a naopak. Podstatnou měrou k tomu přispívá čistota a jednoduchost syntaxe, na kterou se při vývoji jazyka hodně dbá. Význačnou vlastností jazyka Python je produktivnost z hlediska rychlosti psaní programů. Týká se to jak nejjednodušších programů, tak aplikací velmi rozsáhlých. U jednoduchých programů se tato vlastnost projevuje především stručností zápisu. U velkých aplikací je produktivnost podpořena rysy, které se používají při programování ve velkém, jako jsou například přirozená podpora prostorů jmen, používání výjimek, standardně dodávané prostředky pro psaní testů (unit testing) a dalšími. S vysokou produktivností souvisí dostupnost a snadná použitelnost široké škály knihovních modulů, umožňujících snadné řešení úloh z řady oblastí. Python se snadno vkládá do jiných aplikací (embedding), kde pak slouží jako jejich skriptovací jazyk. Tím lze aplikacím psaným v kompilovaných programovacích jazycích dodávat chybějící pružnost. Jiné aplikace nebo aplikační knihovny mohou naopak implementovat rozhraní, které umožní jejich použití v roli pythonovského modulu. Jinými slovy, pythonovský program je může využívat jako modul dostupný přímo z jazyka Python (tj. extending, viz sekce Spolupráce s jinými aplikacemi). Mimo jiné je v něm implementován aplikační server Zope, instalátor operačního systému RedHat Linux (Anaconda) nebo většina konfiguračních nástrojů operačního systému RedHat Linux. Spolupráce s jinými programovacími jazyky C a C++ Klasický Python je implementován v jazyce C (označuje se někdy jako CPython). V něm probíhá další vývoj jazyka Python. Verze jazyka Python jsou zveřejňovány jak v podobě zdrojového kódu, tak v podobě přeložených instalačních balíků pro různé cílové platformy. Dostupnost zdrojového kódu a vlastnosti jazyka C umožňují zabudovat interpret jazyka Python do jiné aplikace psané v jazycích C nebo C++. Takto zabudovaný interpret jazyka Python pak představuje nástroj pro pružné rozšiřování funkčnosti výsledné aplikace zvenčí. Existuje i projekt pro užší spolupráci s C++ nazvaný Boost.Python Z těchto důvodů — a s přihlédnutím k obecně vysokému výkonu aplikací psaných v jazyce C — je CPython nejpoužívanější implementací jazyka Python. Java Existuje implementace Pythonu v jazyce Java, která se jmenuje Jython. Kód napsaný v Jythonu běží v JVM Javy a může používat všechny knihovny prostředí Java. V Javě lze naopak používat všechny knihovny napsané v Jythonu. Nevýhodou Jythonu je, že je několik verzí pozadu za implementací CPython. Například v době vypuštění verze CPython 2.4.3 (březen 2006) byla k dispozici teprve verze Jython 2.1. Řada význačných vlastností jazyka Python se přitom objevuje až od verze 2.2. Při používání Jython z javovských aplikací ale nemusí být otázka nedostupnosti novějších rysů tak palčivá. Výkon Výkon aplikací napsaných v Pythonu je dobrý, protože výkonově kritické knihovny jsou implementovány v jazyce C, s kterým Python výborně spolupracuje. I samotný jazyk je na tom v porovnání s jinými interpretovanými jazyky dobře. Je např. 3 až 5 krát rychlejší než PHP. Pro Python navíc existuje snadno použitelná knihovna Psyco, která transparentně optimalizuje kód Pythonu na výkon. Některé operace jsou pomocí Psyco urychleny až řádově. Spolupráce s jinými aplikacemi Jak již bylo řečeno, Python se snadno vkládá do jiných aplikací, kde pak slouží jako jejich skriptovací jazyk. Lze ho najít např. v 3D programu Blender, v kancelářském balíku OpenOffice.org, v textovém editoru Vim. Lze jej alternativně použít jako skriptovací jazyk aplikace GIMP, existují pythonovská aplikační rozhraní pro celou řadu dalších projektů — například pro ImageMagick. Varianta Jython (implementace Pythonu v Javě — viz dále) jej umožňuje používat jako skriptovací jazyk všude tam, kde lze používat skripty v Javě — například v editoru jEdit. Příklady Ukázkový program Hello world vypadá velmi jednoduše: print "Hello, World!" Program pro výpočet obsahu kruhu ze zadaného poloměru by mohl vypadat například takto: # toto je komentář a interpret jej ignoruje import math # zpřístupní modul s matematickými funkcemi a konstantami (sin, cos, pi atp.) vstup = raw_input("Zadejte polomer: ") # zobrazí výzvu a načte nějaký řetězec r = float(vstup) # převede řetězec na desetiné číslo S = r**2 * math.pi # umocní r na 2 a vynásobí jej pi print "Výsledek je: ", S # zobrazí výsledek Výpočet faktoriálu v porovnání s jazykem C: Program v jazyce Python def factorial(x): if x <= 0: return 1 else: return x * factorial(x - 1) Odpovídající program v jazyce C int factorial(int x) { if (x <= 0) return 1; else return x * factorial(x - 1); } Charakteristika a použití jazyka Proměnná je pojmenovaným odkazem na objekt Každá proměnná se chápe jako pojmenovaný odkaz na objekt. Přesněji řečeno, jméno proměnné je svázáno s jinak bezejmenným objektem. Příkaz přiřazení nezajistí okopírování hodnoty navázaného objektu. Provede se pouze svázání nového jména s původním objektem. a = [1, 2] b = a Jména a i b jsou nyní svázána se stejným objektem. Pokud objekt může být měněn, pak se změna provedená přes jméno b projeví i při následném přístupu přes jméno a. Příklad – zrušíme první prvek seznamu přes jméno b a zobrazíme obsah seznamu přes jméno a: del b[0] print a Zobrazí se [2] Funkce se uchovává jako objekt Funkce se chová jako běžný objekt, dokud není zavolána. def funkce(): print 'Python' f = funkce p = [1, 2, 'test', f] p[3]() Lze s ní manipulovat, ukládat do proměnných, polí, objektů. Přesněji řečeno, manipuluje se s odkazem na objekt funkce. S objektem funkce je možné podle potřeby svázat i nové jméno. Do složených datových struktur se ukládají odkazy Do složených datových struktur se ukládají odkazy na objekty, nikoliv objekty samotné. Typ objektu není svázán s odkazem. Z toho vyplývá, že například do jednoho seznamu je možné současně uložit odkazy na objekty libovolného typu: a = [1, 2, 'pokus', u"UNICODE", ('a tak', u'dále…'), {'4':44, 5:55}] Proměnné není nutné deklarovat V jiných jazycích se při deklaraci proměnné uvádí souvislost jména proměnné s typem ukládané hodnoty. V jazyce Python je proměnná jen pojmenovaným odkazem na nějaký objekt. Typ objektu je ale vázán na odkazovaný objekt, nikoliv na jméno. Potřeba deklarace proměnné ve významu určení souvisejícího typu dat tedy odpadá. Existence, či neexistence jména přímo nesouvisí s existencí či neexistencí hodnotového objektu. Význam deklarace proměnné ve smyslu popisu existence související hodnoty tedy rovněž odpadá. Proměnná, jako pojmenovaný odkaz, vzniká v okamžiku, kdy se jméno objeví na levé straně přiřazovacího příkazu. Jméno proměnné může být později svázáno dalším přiřazením s jiným objektem zcela jiného typu. p = 1 p2 = "" p3 = p Členské proměnné tříd mohou vznikat až za běhu Mezi běžné praktiky při vytváření objektu patří i založení používaných členských proměnných. Tento obrat se ale v jazyce Python chápe jako užitečná technika, nikoliv jako nutnost. Členské proměnné (čili proměnné uvnitř objektu) mohou vznikat až za běhu. class pokus: pass #prázdná třída obj = pokus() obj.field1 = 33 obj.field2 = 'str' Existují ale techniky, které umožňují prostředky jazyka zamezit možnost dodatečného přidávání členských proměnných. Typy nelze libovolně míchat Při operacích nad objekty se provádí silná typová kontrola. Narozdíl od kompilovaných jazyků se ale provádí až za běhu aplikace. Ortogonalita operátorů Při vývoji jazyka se kladl a klade důraz na to, aby operátory nebyly vázány na specifické datové typy (pokud je to možné). Přípustnost použití operátoru pro konkrétní operandy se navíc vyhodnocuje až za běhu. Prakticky to znamená, že například následující funkci, která v těle používá operátor plus, je možné předat jednak číselné a jednak řetězcové argumenty: def dohromady(a, b): return a + b dohromady(2, 3) # vrátí 5 dohromady("ahoj", ' nazdar') # vrátí 'ahoj nazdar' Nejde jen o zajímavou hříčku. Běžné pythonovské funkce tím získávají vlastnosti, kterými se zabývá generické programování. Externí odkazy Projekt Wikibooks nabízí knihu v angličtině na téma: Python www.python.org – Domovská stránka projektu (anglicky, některé česky) www.py.cz – PyCZ, komunitní český web Python vs. Python Psyco – Benchmark Boost.Python — C++ knihovna pro spolupráci mezi C++ a Pythonem Alternativní implementace: Jython IronPython Dokumentace, učebnice: Originální tutorial – anglicky Originální dokumentace – anglicky Učebnice jazyka Python (aneb Létající cirkus) – český překlad Létající cirkus, PDF – Seriál na ROOT.CZ, 21 dílů, Jak se naučit programovat (překlad Learning to Program) aktuální pracovní verze Python – programování zábavou – kvalitní český web o Pythonu, základy, ukázky, praxe SQL Z Wikipedie, otevřené encyklopedie Skočit na: Navigace, Hledání SQL (někdy vyslovováno anglicky es-kjů-el /ɛs kjʊː ɛɫ/ IPA, někdy též síkvl /siːkwəl/ IPA) je standardizovaný dotazovací jazyk používaný pro práci s daty v relačních databázích. SQL je zkratka anglických slov Structured Query Language (strukturovaný dotazovací jazyk). Obsah [skrýt] 1 Historie SQL 2 Popis jazyka o 2.1 Příkazy pro manipulaci s daty o 2.2 Příkazy pro definici dat o 2.3 Příkazy pro řízení dat o 2.4 Ostatní příkazy 3 Externí odkazy Historie SQL V 70. letech 20. století probíhal ve firmě IBM výzkum relačních databází. Bylo nutné vytvořit sadu příkazů pro ovládání těchto databází. Vznikl tak jazyk SEQUEL (Structured English Query Language). Cílem bylo vytvořit jazyk, ve kterém by se příkazy tvořily syntakticky co nejblíže přirozenému jazyku (angličtině). K vývoji jazyka se přidaly další firmy. V r. 1979 uvedla na trh firma Relational Software, Inc. (dnešní Oracle Corporation) svůj relační databázový systém Oracle. IBM uvedla v roce 1981 nový systém SQL/DS a v roce 1983 systém DB2. Dalšími systémy byly např. Progress, Informix a SyBase. Ve všech těchto systémech se používala varianta jazyka SEQUEL, který byl přejmenován na SQL. Relační databáze byly stále významnější, a bylo nutné jejich jazyk standardizovat. Americký institut ANSI původně chtěl vydat jako standard zcela nový jazyk RDL. SQL se však prosadil jako de facto standard a ANSI založil nový standard na tomto jazyku. Tento standard bývá označován jako SQL-86 podle roku, kdy byl přijat. V dalších letech se ukázalo, že SQL-86 obsahuje některé nedostatky a naopak v něm nejsou obsaženy některé důležité prvky týkající se hlavně integrity databáze. V roce 1992 byl proto přijat nový standard SQL-92 (někdy se uvádí jen SQL2). Zatím nejnovějším standardem je SQL3 (SQL99), který reaguje na potřeby nejmodernějších databází s objektovými prvky. Standardy podporuje prakticky každá relační databáze, ale obvykle nejsou implementovány vždy všechny požadavky normy. A naopak, každá z nich obsahuje prvky a konstrukce, které nejsou ve standardech obsaženy. Přenositelnost SQL dotazů mezi jednotlivými databázemi je proto omezená. Popis jazyka SQL příkazy se dělí do čtyř základních skupin. Příkazy pro manipulaci s daty Jsou to příkazy pro získání dat z databáze a pro jejich úpravy. Označují se zkráceně DML – Data Manipulation Language („jazyk pro manipulaci s daty“). SELECT – vybírá data z databáze, umožňuje výběr podmnožiny a řazení dat. INSERT – vkládá do databáze nová data. UPDATE – mění data v databázi (editace). DELETE – odstraňuje data (záznamy) z databáze. EXPLAIN PLAN FOR – speciální příkaz, který zobrazuje postup zpracování SQL příkazu. Pomáhá uživateli optimalizovat příkazy tak, aby byly rychlejší. Příkazy pro definici dat Těmito příkazy se vytvářejí struktury databáze – tabulky, indexy, pohledy a další objekty. Vytvořené struktury lze také upravovat, doplňovat a mazat. Tato skupina příkazů se nazývá zkráceně DDL – Data Definition Language („jazyk pro definici dat“). CREATE – vytváření nových objektů. ALTER – změny existujících objektů. DROP – odstraňování objektů. Příkazy pro řízení dat Do této skupiny patří příkazy pro nastavování přístupových práv a řízení transakcí. Označují se jako DCL – Data Control Language („jazyk pro ovládání dat“), někdy také TCC – Transaction Control Commands („jazyk pro ovládání transakcí“). GRANT – příkaz pro přidělení oprávnění uživateli k určitým objektům. REVOKE – příkaz pro odnětí práv uživateli. BEGIN – zahájení transakce. COMMIT – potvrzení transakce. ROLLBACK – zrušení transakce, návrat do původního stavu. Ostatní příkazy Do této skupiny patří příkazy pro správu databáze. Pomocí nich lze přidávat uživatele, nastavovat systémové parametry (kódování znaků, způsob řazení, formáty data a času apod.). Tato skupina není standardizována a konkrétní syntaxe příkazů je zavislá na databázovém systému. V některých dialektech jazyka SQL jsou přidány i příkazy pro kontrolu běhu, takže lze tyto dialekty zařadit i mezi programovací jazyky. Externí odkazy Seriál tipů a triků pro SQL SQL – Structured Query Language – průvodce SQL Návod pro PosgreSQL (česky) PL/SQL (Procedural Language/Structured Query Language) je procedurální nadstavba jazyka SQL od firmy Oracle založená na programovacím jazyku Ada. Pomocí PL/SQL je možné vytvářet: uložené procedury a funkce programové balíky (packages) triggery uživatelsky definované datové typy Tato nadstavba se rozšířila a její deriváty převzaly i jiné relační databáze. Sybase a Microsoft SQL Server mají Transact-SQL, PostgreSQL má PL/pgSQL a IBM DB2 má SQL PL. Existuje též projekt Fyracle, jehož cílem je umožnit spouštění PL/SQL v relační databázi Firebird. MySQL MySQL vyvíjí MySQL AB 5.0.37 Enterprise (placená), 5.0.27 (GPL) (listopad 2006) připravovaná verze Beta 5.1.17 (únor aktuální verze 2007) MySQL je databázový systém, vytvořený švédskou firmou MySQL AB. Jeho hlavními autory jsou Michael „Monty“ Widenius a David Axmark. Je považován za úspěšného průkopníka dvojího licencování – je k dispozici jak pod bezplatnou licencí GPL, tak pod komerční placenou licencí. OS typ softwaru licence web multiplatformní RDBMS GPL nebo komerční licence www.mysql.org MySQL je multiplatformní databáze. Komunikace s ní probíhá – jak už název napovídá – pomocí jazyka SQL. Podobně jako u ostatních SQL databází se jedná o dialekt tohoto jazyka s některými rozšířeními. Pro svou snadnou implementovatelnost (lze jej instalovat na Linux, MS Windows, ale i další operační systémy), výkon a především díky tomu, že se jedná o volně šiřitelný software, má vysoký podíl na v současné době používaných databázích. Velmi oblíbená a často nasazovaná je kombinace MySQL, PHP a Apache jako základní software webového serveru. MySQL bylo od počátku optimalizováno především na rychlost, a to i za cenu některých zjednodušení: má jen jednoduché způsoby zálohování, a až donedávna nepodporovalo pohledy, triggery, a uložené procedury. Tyto vlastnosti jsou doplňovány teprve v posledních letech, kdy začaly nejčastějším uživatelům produktu – programátorům webových stránek – již poněkud scházet. Přehled podporovaných vlastností: cizí klíče (od verze 3.23 podporovány v tabulkách typu InnoDB) transakce (od verze 3.23 podporovány v tabulkách typu InnoDB) podpora různých znakových sad a časových pásem v datech (od verze 4.1) poddotazy (od verze 4.1) uložené procedury (od verze 5.0) triggery (od verze 5.0) pohledy (od verze 5.0) Uložiště dat MySQL nabízí několik typů databázových tabulek (storage engine), které se liší svými možnostmi, použitím a způsobem ukládání dat do souborů: MyISAM - nejpoužívanější, bez podpory transakcí InnoDB - podpora transakcí BerkeleyDB (BDB) MEMORY - práci s daty v paměti NDB Cluster - uložiště pro clusterované databáze (od verze 5.0) ARCHIVE - komprimované tabulky, bez podpory indexů CSV - ukládání dat v prostých textových souborech www.mysql.org – Oficiální stránky Český seriál o MySQL na serveru Linuxsoft Český MySQL manuál Visual Basic Z Wikipedie, otevřené encyklopedie Skočit na: Navigace, Hledání Visual Basic je dialektem programovacího jazyka BASIC od společnosti Microsoft. Výhody: Jazyk je jednoduchý a snadno pochopitelný pro začátečníka (jako klíčová slova se obvykle používají popisné výrazy v angličtině). Návrh aplikací je velmi rychlý, zejména pokud se týče jednodušších databázových aplikací a tvorby grafického uživatelského rozhraní. Nevýhody: U starších verzí (do 6.0) se jednalo o částečně interpretovaný jazyk, což mělo za následek nižší výkonnost v něm napsaných aplikací. Tato nevýhoda byla odstraněna v jazyce Visual Basic .NET, který se stejně jako všchny .NET jazyky překládá do MSIL a výkon .NET aplikace tedy nezáleží na jazyce, v němž byla napsána. VBScript Z Wikipedie, otevřené encyklopedie Skočit na: Navigace, Hledání VBScript je skriptovací jazyk Microsoft Visual Basic Scripting Edition určený pro vkládání kódu do webových stránek a běžné skriptování ve WSH (Interpreter skriptů nazývaný Windows Scripting Host), založený na jazyce Visual Basic. Vznik jazyka je spolu se vznikem jazyka JScript (taktéž WSH a CScript - neplést s JavaScriptem) považován za odpověď firmy Microsoft na vznik jazyka JavaScript — viz například Jazyk VBS je mezi hackery oblíbený pro psaní virů (např.: "W32.LoveLetter" známý jako "ILoveYou" a mnoho dalších), mimo jiné proto, že malé skripty lze spouštět na většině současných verzí windows s wsh a dokáže přes VBA API (Aplikační rozhraní „Visual Basic For Aplications“) přistupovat k velkému množství programů na počítači oběti a rozesílat se tak např. pomocí e-mailu jejím známým a vytahovat z počítače důvěrná data. Jazyk VBS je dobře použitelný i v kladném smyslu. Např: ve HTA Html Application. VBS je po JavaScriptu nejpoužívanější script, hlavně díky podobnosti Visual Basicu a téměř neomezeným schopnostem, které zajišťuje WMI. Na spuštění VBS je potřeba nainstalovaný Windows Scripting Host. JavaScript: How Did We Get Here?. MSDN: Visual Basic Script U starších verzí (do 6.0) se nejednalo o plně objektový jazyk a nebylo možno v něm používat všechny techniky objektově orientovaného programování. I tato nevýhoda byla odstraněna ve Visual Basic .NET Velká popisnost jazyka způsobuje, že kód zapsaný ve VB je na počet znaků obsáhlejší a méně „elegantní“, než zápis ve většině jiných jazyků (zejména v jazyce C). Na druhou stranu, právě tato popisnost znamená, že význam kódu zapsaném ve Visual Basicu snáze pochopí i programátor, který tento jazyk neovládá, stačí znát angličtinu. Externí odkazy http://www.vbasic.cz/ http://www.vbnet.cz/ Visual Basic Developer Center na MSDN AJAX Z Wikipedie, otevřené encyklopedie AJAX (Asynchronous JavaScript and XML) je obecné označení pro technologie vývoje interaktivních webových aplikací, které mění obsah svých stránek bez nutnosti jejich znovunačítání. Na rozdíl od klasických webových aplikací poskytují uživatelsky příjemnější prostředí, ale vyžadují použití moderních webových prohlížečů. Tyto aplikace jsou vyvíjeny s využitím technologií: HTML (nebo XHTML) a CSS pro prezentaci informací; DOM a JavaScript pro zobrazování a dynamické změny prezentovaných informací; XMLHttpRequest pro asynchronní výměnu dat s webovým serverem (typicky je užíván formát XML, ale je možné použít libovolný jiný formát včetně HTML, prostého textu, JSON či EBML). Podobně jako DHTML, LAMP nebo SPA, Ajax ve skutečnosti není konkrétní jednotlivá technologie, ale pojem označující použití několika technologií dohromady s určitým cílem. Historie Termín AJAX se poprvé veřejně objevil v dubnu 2005 v článku Jesse James Garretta, nazvaném Ajax: A New Approach to Web Applications (Ajax: Nový přístup k webovým aplikacím). Myšlenky, na kterých je AJAX založen, jsou však výrazně starší: mezi začátky lze zařadit zavedení elementu IFRAME v Microsoft Internet Explorer 3.0 z roku 1996, elementu LAYER v Netscape Navigator 4.0 z roku 1997 (tento element byl opuštěn na počátku vývoje Mozilly). Také Macromedia Flash od verze 4 umožňoval komunikaci se serverem na pozadí, bez překreslení stránky. V roce 1998 představil Microsoft novou technologii nazvanou Remote Scripting [1], ve které v klientském prohlížeči běžel Java applet komunikující se serverem, přičemž tento aplet poskytoval služby JavaScriptovým funkcím. Tato technika fungovala v MSIE od verze 4 i v Netscape Navigatoru od verze 4. V páté verzi IE zavedl Microsoft objekt XMLHttpRequest, který v roce 2000 využil v novém programu Outlook Web Access, který poskytuje webové rozhraní pro přístup k e-mailům na Microsoft Exchange Server. Velká popularita a rozšíření AJAXu začala několika službami společnosti Google (nejdříve Gmail, posléze Google Maps a další). Výhody a nevýhody Mezi výhody patří odstranění nutnosti znovunačtení a překreslení celé stránky při každé operaci, které jsou nutné u klasického modelu WWW stránek. Pokud například uživatel klikne na tlačítko pro udělení hlasu v nějaké anketě, celá stránka se musí znovu načíst ze serveru, třebaže se na ní jen například aktualizují výsledky hlasování a veškerý zbytek obsahu zůstává stejný. Prostřednictvím AJAXu proběhne odeslání hlasu uživatele na pozadí, server zašle jen ty části stránky, které se změnily, a jen tyto části se uživateli na stránce aktualizují a překreslí. Uživatel tak má pocit mnohem větší plynulosti práce, která se blíží běžným desktopovým aplikacím. Z toho vyplývá také potenciál snížit zátěž na webové servery a síť obecně. Jelikož není potřeba při každém požadavku sestavit celý HTML dokument, ale pouze provedené změny, je množství vyměňovaných dat výrazně nižší a teoreticky to může mít příznivý vliv i na zátěž databázových serverů či dalších backendových systémů. AJAX však naopak může zvýšit počet vyměňovaných HTTP požadavků, třebaže přenášejí nižší množství dat tak při nevhodné implementaci zátěž neklesne. Mezi nevýhody patří hlavně změny v paradigmatu používání webu: webové stránky se chovají jako plnohodnotná aplikace se složitou vnitřní logikou, nikoli jako posloupnost stránek, mezi kterými se lze navigovat i pomocí tlačítek Zpět a Další. Moderní AJAXové aplikace jsou schopny funkce těchto tlačítek (přinejmenším částečně) obnovit za použití různých technik (např. využití části adresy za znakem # či pomocí neviditelných IFRAMEs). Problémem AJAXových aplikací také může být síťová latence: potřeba komunikace přes Internet má negativní dopady na rychlost odezvy a interaktivitu uživatelského rozhraní. Pokud uživateli není jasně signalizováno, že aplikace zpracovává jeho požadavek (a na pozadí komunikuje se serverem), jediné, co zaregistruje, je zpožděná reakce (mezitím se dokonce může snažit operaci spustit znovu, neboť se domnívá, že systém jeho příkaz ignoroval). Další nevýhodou AJAXu je nutnost používat moderní grafické prohlížeče, které podporují potřebné technologie. (Všechny dnešní běžné prohlížeče však tyto technologie alespoň v základu podporují.) Externí odkazy AJAX: Getting Started – Úvodní tutoriál na Mozilla Developer Center (anglicky) Ajax Tool Kits – Seznam různých toolkitů pro AJAX Ajax - teoreticky i prakticky - Začátky s Ajaxem (česky) Ajax - návod pro začátečníky - Na začiatok jednoduchý skript (česky) Citováno z „http://cs.wikipedia.org/wiki/AJAX“ Kategorie: Programování | World Wide Web
Podobné dokumenty
1 Identifikační údaje GYMNÁZIUM JAROSLAVA HEYROVSKÉHO
kompetencí není konečná, nýbrž tvoří základ pro další celoživotní učení a orientaci
v každodenním životě. Jsme si vědomi i velikosti rozsahu celé problematiky, jakož
i provázanosti
a spojitosti
mno...
ZX Spectrum + (užívateľská príručka) - Softhouse
tzv. počítačový program. Nabízíme vám několik krátkých programů, které prověří schopnosti vašeho počítače. Vše, co v této chvíli zbývá ještě udělat, je vložit program přesně tak,
jak je uvedeno v u...
databáze
formuláře pro vizuálně přívětivé zadávání hodnot. Uživatel si může např. nadefinovat rozložení jednotlivých
vstupních polí z dané tabulky, popisky atd.
• sestavy nebo též reporty – podobně jako u f...
Uèební text - střední škola elektrotechnická, ostrava, na jízdárně 30, po
Uživatel (budoucí programátor) musí zvládnout definovat své požadavky a pokud
možno formulovat je v podobě vývojového diagramu. Potom by měl být schopen toto ve
vybraném programovacím jazyce převés...
Webový systém pro správu mapových aplikací digitálních modelů
Python používá dynamickou typovou kontrolu, z čehož plyne, že proměnné mohou
během vykonávání programu nabývat hodnot o různých datových typech. Při operacích je
však uplatňována silná typová kontr...
1 Identifikační údaje GYMNÁZIUM JAROSLAVA HEYROVSKÉHO
kompetencí není konečná, nýbrž tvoří základ pro další celoživotní učení a orientaci
v každodenním životě. Jsme si vědomi i velikosti rozsahu celé problematiky, jakož
i provázanosti a spojitosti mno...
Vývoj číselných soustav - black
Pro počı́tánı́ v pozičnı́ soustavě je nutné znát výsledek početnı́ch operacı́ s nulou. Indičtı́ matematici
patrně jako prvnı́ formulovali pravidla pro počı́tánı́ s nulou. Slovně uvedl...
Počítačové programy pro správu citací výzkumníka
Mendeley se osvědčuje při prozkoumávání databází stovek milionů zdrojů,
které shromáždili jeho uživatelé. Při tomto prozkoumávání se přesvědčíme,
kolik jiných výzkumníků zařadilo určitou práci do s...