Úvod do JavaScriptu Jaroslav BURDYS 4T 10.01.2017.

Slides:



Advertisements
Podobné prezentace
Pro začátek něco lehčího
Advertisements

(instance konkrétní třídy)
ŘÍDÍCÍ STRUKTURY - PODMÍNKY
Základy programování v JavaScriptu
Dynamické dokumenty na straně klienta Informatika pro ekonomy II.
Programování funkcí v Excelu
Vstupy a výstupy v JavaScriptu Vstup: použitím metody prompt objektu window čtením hodnot z položek formuláře Výstup : použitím metody alert objektu window.
Dynamické dokumenty na straně klienta Informatika pro ekonomy I přednáška 5, 6.
Dynamické dokumenty na straně klienta Informatika pro ekonomy I přednáška 5, 6.
Třída Array Je součásti balíčku java.util Účelem je usnadnit práci s poli Metody – nejpoužívanější equel(),fill(),sort() a binarySearch() equels() Slouží.
Programování v Pascalu Přednáška 5 RNDr. Hana Havelková.
Algoritmizace a programování Datové typy v Delphi - 05
C# pro začátečníky Mgr. Jaromír Osčádal
If-else, do-while, switch, operátory
Algoritmizace a programování
Druhé cvičení Vytváření identifikátorů Datové typy
Programování v Pascalu Přednáška 7
JavaScript - 5. část Pole Ústav automatizace inženýrských úloh a informatiky FAST VUT v Brně 0U2 - Základy informatiky a výpočetní techniky 2.
Materiály k přednášce Úvod do programování Ondřej Čepek.
MATLAB® ( část 3 - scripty).
J a v a Začínáme programovat Lucie Žoltá pole řetězec debugr.
J a v a Začínáme programovat Lucie Žoltá. Odkazy - oficiální stránky (překladače, help, metody, vývojové prostředí NetBeans,...)
Hashovací tabulky v Lua
PHP PHP – základy syntaxe (část 1) - 03 Mgr. Josef Nožička IKT PHP
Procedury a funkce Základní charakteristika a použití v programu.
Datové typy a práce s nimi
ActionScript Moderní počítačové aplikace. Charakteristika Je odvozen od JavaScriptu Integruje do Flashe interaktivní ovládání Umožňuje vytvořit přehledné.
Počítače a programování 1 8.přednáška. Obsah přednášky Řetězce - deklarace a vytvoření Základní metody pro práci s řetezci Znaky - třída Character Základní.
Počítače a programování 1
Proměnné v PHP Každý programovací jazyk pracuje s nějakými hodnotami. To, do čeho se tyto hodnoty ukládají, se nazývá proměnné. Každý programovací jazyk.
JavaScript Podmínky, cykly a pole.
Cvičení.
Návrh a tvorba WWW Cvičení 4
VISUAL BASIC PRALG.
Datové typy a struktury
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
Hlášky Hlášky v JavaScriptu jsou trojího typu: Hlášky v JavaScriptu jsou trojího typu: Alert Alert Prompt Prompt Confirm Confirm Alert – zobrazí upozorňovací.
AJAX nejmodernější webová technologie… seminář pro učitele ZŠ a SŠ Mgr. Marek Osuchowski Ostravská univerzita © 2011.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Úvod do PHP IZI 228.
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Datové typy a operátory. Co jsou datové typy  Charakterizují proměnnou nebo konstantu – jaká data obsahuje  Data jsou v počítači ukládána jako skupiny.
ZÁKLADNÍ POJMY. ZDROJOVÝ TEXT PROGRAMU Tvoří: klíčová slova komentáře identifikátory.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
4. Typ pole 4.1 Jednorozměrná pole
Počítače a programování 1 2.přednáška. Základní lexikální struktura programu Program v jazyce Java je tvořen symboly a oddělovači Program Java je psán.
Úvod do programování2 Vyučující: Mgr. Vítězslav Jersák Web: xjv.webnode.cz.
JavaScript úvod. Jazyky webového vývojáře Dynamická stránka  aktivně mění svůj obsah v reakci na činnost uživatele  zpracování na straně serveru (PHP,
Jaroslav BURDYS 4IT.  Čistě OOP jazyk (objektově orientovaný programovací jazyk)  Objekty založeny na tzv. objektových typech: Struktura (struct)
PROGRAMOVÁNÍ 3ITA,3ITB Jaroslav Burdys Hlavní zdroj:
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY Datové typy a operátory Základní programové.
Překladače 6. Sémantická analýza
Programování ÚVOD, PROMĚNNÉ, OPERÁTORY A PODMÍNĚNÝ PŘÍKAZ ERIK KRÁL.
Programování v jazyce C++ Speciality jazyka C++, úvod do OOP.
Jaroslav BURDYS 3IT.  Vytvořen Brendanem Eichem ze společnosti Netscape v roce 1995  Nemá nic společného s pr.j. JAVA (snad jen, že jsou oba jazyky.
Makra v Excelu syntaxe. Zápis nahraného makra SubEnd Sub O klíčová slova Sub a End Sub – začátek a konec makra O komentáře O text za znakem ', až do konce.
Programovací jazyk JavaScript
Úvod do Pythonu – IO operace se soubory.
Programovací jazyk JavaScript
Výukový materiál zpracován v rámci projektu
Programovací jazyk C Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN.
Algoritmizace a programování
Ovládání interaktivity
Internetové publikování Dynamické HTML
TNPW1 JavaScript Ing. Jiří Štěpánek.
C# přehled vlastností.
Kinematika hmotný bod: těleso s nekonečně malými rozměry, ale nenulovou hmotností, tj. žádné otáčení, žádná deformace atd. = bodová hmotnost popis pohybu.
Tvorba webových stránek
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
CU01 Informatika II 2/13 Základy algoritmizace
Transkript prezentace:

Úvod do JavaScriptu Jaroslav BURDYS 4T 10.01.2017

Charakteristika jazyka

Historie Vytvořen Brendanem Eichem ze společnosti Netscape v roce 1995 Nemá nic společného s pr.j. JAVA (snad jen, že jsou oba jazyky založené na pr.j. C) Název použit pouze z marketingových důvodů (Java byla v té době již poměrně populární) Dnes jeden z nejrozšířenějších pr.jazyků

účel Nativně určen pro práci ve webovém prohlížeči (kód je vykonáván přímo prohlížečem, není třeba pluginu => urychlení) Primárně tedy klient-side skriptovací jazyk (dnes lze i server-side p-cí knihovny Node.js) Původně čistě skriptovací jazyk se vyvinul v poměrně plnohodnotný programovací jazyk.

Použití Interaktivita webových stránek Kontrola formulářů Nekonečné scrollování stránek Parallaxe a jiné animace (knihovna Parallax.js) Ukázka: matthew.wagerfield.com/parallax/ Vývoj webových 2D i 3D her běžících v prohlížeči (knihovna 3D.js) Ukázka: helloracer.com/racer-s/ Gameengine Unity3D a interaktivní 3D applikace: Ukázka: www.shapespark.com IoT (Internet věcí), roboti, wearable technika… Vývoj mobilních aplikací (technologie HTML5, PhoneGap/Cordova) (mnoho knihoven: JQuery.js, Angular.js...)

vlastnosti Objektově orientovaný skriptovací jazyk (objekty založené na prototypech, nikoliv na třídách!) Multiplatformní Multiparadigmatický: imperativní i deklarativní procedurální i funkcionální Specifikace ECMAScript (stejně jako ActionScript)

Základy JavaScriptu

komentáře // - toto je jednořádkový komentář /* - toto je mnohem delší text a proto je uzavřen do víceřádkového komentáře - */

Datové typy (červeně označeny hodnoty) Number (dle specif. ECMAScript 64bitové s dvojitou přesností ) => Celá čísla (int, short …) Reálná čísla (float, double …) Znaménková (signed …) Kladné a záporné nekonečno NaN (Not a Number) String Řetězce (string) Znaky (char) Boolean true false Undefined (neinicializované proměnné) undefined Null null (inicializuje proměnné jako: „nemá žádnou hodnotu“, narozdíl od ´undefined´ se při vyhodnocování výrazů imlicitně konvertuje na nulu a nevyvolá tak chybové hlášení) Object (=kolekce vlastností: předchozí datové typy, jiné objekty, funkce) ZJIŠTĚNÍ DATOVÉHO TYPU PROMĚNNÉ/VÝRAZU typeof();

Přetypování Implicitní: Explicitní: 4 + „5“ // => „4“ + „5“ => „45“ null + 5 // => 0 + 5 => 5 Explicitní: Number(false); // => 0 Number(null); // => 0 Number(„0“); // => 0 Number(„ “); // => 0

POZOR !!! Problematika Nan ALE (protože NaN != NaN): Příklady, kdy se vrací NaN: Math.abs(„Jana“) // => NaN Number(„Jana“) // => NaN Použití isNaN(): isNaN(NaN); // => true isNaN(undefined); isNaN({ }); isNaN(“Jana”); isNaN(“25”); // => false isNaN(true); isNaN(null); isNaN(„“); isNaN(„ „); POZOR !!! var prvni; první = true; první == první; // => true ALE (protože NaN != NaN): první = NaN; první == první; // => false

Operátory Matematické: +, -, *, /, % Relační: Logické: &&, II, ==, !=, <=, >=, <, > 4 == „4“; //=> true ===, !== 4 === „4“; //=> false , musí se shodovat i datovým typem! Logické: &&, II,

Deklarace Slabě typovaný jazyk (datový typ se určuje za běhu podle toho, jakého typu je aktuální hodnota v proměnné): var Identifikator; Identifikator = 58; //číslo Identifikator = „Jana se má fajn“; //řetězec Identifikator = [ ]; //pole: literál prázdného pole Identifikator = { }; //objekt: literál prázdného objektu Identifikator = function(){ /* zde následuje tělo f-ce */}; //funkce: tzv.deklarace výrazem p-cí tzv.anonymní (nepojmenované) f-ce, volání této f-ce by pak bylo: Identifikator(); Pozor na tzv. ZDVIHÁNÍ PROMĚNNÝCH

POLE Vlastnosti: Deklarace: Použití: Mutabilní Heterogenní => při deklaraci nezadáváme rozsah pole Heterogenní var MojePole = [25, “Jana”, [], {}, true]; Deklarace: 1) var MojePole = new Array(); // NEDOPORUČUJE SE 2) var MojePole = [25, “Jana”, [], {}, true]; // literál pole Použití: 1) přes indexy (začíná od 0) 2) asociativně (přes klíče) //pak je ale lépe použít objekty !

funkce Deklarace: 1) deklarací: function Identifikator() { /* zde následuje tělo f-ce */} 2) výrazem: var Identifikator = function(){ /* zde následuje tělo f-ce */}; volání: Identifikator(); 3) konstruktorem: //nedoporučuje se! var Identifikator = new Function(„ /* zde následuje tělo f-ce */“); Opět pozor na tzv. ZDVIHÁNÍ PROMĚNNÝCH => doporučuje se varianta 1)

Řídící příkazy Podmínky Cykly if() else while() do while(); for(inicializace_iteratoru; podmínka; krok (= inkrementace/dekrementace iterátoru)) for(i=1; i<=100; i++){ alert(“Toto je ” + i + ”.krok ze sta”);} for( var klic in objekt/pole)

OOP v javascriptu

objekty Objekty jsou v JavaScriptu vlastně kolekce (seznamy) vlastností objektu =>

Toto je první způsob vytvoření objektu: objekty Objekty jsou v JavaScriptu vlastně kolekce (seznamy) vlastností objektu => var MujObjekt = {}; Toto je první způsob vytvoření objektu: pomocí literálu objektu vytváříme přímo konkrétní objekt (tedy rovnou instanci) Druhý způsob pomocí prototypu (konstruktoru daného typu) viz dále

Toto je první způsob vytvoření objektu: objekty Objekty jsou v JavaScriptu vlastně kolekce (seznamy) vlastností objektu => var MujObjekt = {}; Toto je první způsob vytvoření objektu: toto je prázdný objekt

objekty Objekty jsou v JavaScriptu vlastně kolekce (seznamy) vlastností objektu => var MujObjekt = { vlastnost01: hodnota, vlastnost02: hodnota, /* toto je metoda */ vlastnost03: funkce() }; Vlastnosti jsou v seznamu v těle objektu zaváděny ve dvojicích jako klíč:hodnota Mohou být jakéhokoliv typu a to včetně funkcí - tzv. metod objektu (klíč:funkce)

objekty Objekty jsou v JavaScriptu vlastně kolekce (seznamy) vlastností objektu => var MujObjekt = { vlastnost01: hodnota, vlastnost02: hodnota, /* toto je metoda */ vlastnost03: funkce() }; Vlastnosti jsou v seznamu v těle objektu zaváděny ve dvojicích jako klíč:hodnota Mohou být jakéhokoliv typu a to včetně funkcí - tzv. metod objektu

V těle objektu je seznam vlastností typu: KLÍČ : HODNOTA Objekty - příklad Uchování dat neobjektově: var napojDruh = „káva“; var napojCena = 25; var napojHorky = true; Uchování dat objektově: var napoj = { druh: „káva“, cena: 25, horky: true }; V těle objektu je seznam vlastností typu: KLÍČ : HODNOTA

V těle objektu je SEZNAM vlastností typu: KLÍČ : HODNOTA Objekty - příklad Uchování dat neobjektově: var napojDruh = „káva“; var napojCena = 25; var napojHorky = true; Uchování dat objektově: var napoj = { druh: „káva“, cena: 25, horky: true }; V těle objektu je SEZNAM vlastností typu: KLÍČ : HODNOTA

Stejně se tvoří i metody objektu: KLÍČ : FUNKCE Objekty - METODY Uchování dat objektově s metodou: var napoj = { druh: „káva“, cena: 25, horky: true ohrat: function(){ if (!napoj.horky) { napoj.horky=true; alert(“Váš nápoj byl ohřán”); } }; Stejně se tvoří i metody objektu: KLÍČ : FUNKCE

Objekty – přístup k položkám var napoj = { druh: „káva“, cena: 25, horky: true, ohrat: function(){ if (!napoj.horky) { napoj.horky=true; alert(“Váš nápoj byl ohřátý”); } }; Přes tečkovou notaci (jako u objeků): napoj.cena = 30; napoj.ohrat(); Přes klíče (jako u asociativního pole): napoj[”cena”] = 30; //v tomto případě lze jako klíč použít proměnnou!

Objekty – prototyp JavaScript nepoužívá k vytváření instancí objektů třídy ale tzv. prototypy Jedná se o konstruktor objektu – tj. f-ce, která se volá při vytváření objektu a může zároveň inicializovat jeho položky již v době jeho vzniku

Objekty – prototyp function Friend(jmeno,vek){ var marek = { }; }; Přímé vytvoření pomocí literálu objektu Sériové vytvoření instancí pomocí prototypu Friend() function Friend(jmeno,vek){ this.jmeno = jmeno; this.vek = vek; this.muz; }; var marek = { jmeno:”Marek”, vek:15, muz:true }; var lenka = { jmeno:”Lenka”, vek:25, muz:false var jan = { jmeno:”Jan”, vek:10, PROTOTYP

Objekty – prototyp function Friend(jmeno,vek){ var marek = { }; }; Přímé vytvoření pomocí literálu objektu Sériové vytvoření instancí pomocí prototypu Friend() function Friend(jmeno,vek){ this.jmeno = jmeno; this.vek = vek; this.muz; }; var marek = { jmeno:”Marek”, vek:15, muz:true }; var lenka = { jmeno:”Lenka”, vek:25, muz:false var jan = { jmeno:”Jan”, vek:10, PROTOTYP

Objekty – prototyp function Friend(jmeno,vek){ var marek = { }; }; Přímé vytvoření pomocí literálu objektu Sériové vytvoření instancí pomocí prototypu Friend() function Friend(jmeno,vek){ this.jmeno = jmeno; this.vek = vek; this.muz; }; var marek = { jmeno:”Marek”, vek:15, muz:true }; var lenka = { jmeno:”Lenka”, vek:25, muz:false var jan = { jmeno:”Jan”, vek:10, PROTOTYP

Objekty – prototyp function Friend(jmeno,vek){ var marek = { }; }; Přímé vytvoření pomocí literálu objektu Sériové vytvoření instancí pomocí prototypu Friend() function Friend(jmeno,vek){ this.jmeno = jmeno; this.vek = vek; this.muz; }; var marek = { jmeno:”Marek”, vek:15, muz:true }; var lenka = { jmeno:”Lenka”, vek:25, muz:false var jan = { jmeno:”Jan”, vek:10, PROTOTYP

Objekty – prototyp function Friend(jmeno,vek){ var marek = { }; }; Přímé vytvoření pomocí literálu objektu Sériové vytvoření instancí pomocí prototypu Friend() function Friend(jmeno,vek){ this.jmeno = jmeno; this.vek = vek; this.muz; }; var marek = { jmeno:”Marek”, vek:15, muz:true }; var lenka = { jmeno:”Lenka”, vek:25, muz:false var jan = { jmeno:”Jan”, vek:10, PROTOTYP

Objekty – prototyp function Friend(jmeno,vek){ var marek = { }; }; Přímé vytvoření pomocí literálu objektu Sériové vytvoření instancí pomocí prototypu Friend() function Friend(jmeno,vek){ this.jmeno = jmeno; this.vek = vek; this.muz; }; var marek = { jmeno:”Marek”, vek:15, muz:true }; var lenka = { jmeno:”Lenka”, vek:25, muz:false var jan = { jmeno:”Jan”, vek:10, PROTOTYP

Objekty – prototyp function Friend(jmeno,vek){ var marek = { }; }; Přímé vytvoření pomocí literálu objektu Sériové vytvoření instancí pomocí prototypu Friend() function Friend(jmeno,vek){ this.jmeno = jmeno; this.vek = vek; this.muz; }; var marek = { jmeno:”Marek”, vek:15, muz:true }; var lenka = { jmeno:”Lenka”, vek:25, muz:false var jan = { jmeno:”Jan”, vek:10, PROTOTYP

Objekty – prototyp function Friend(jmeno,vek){ var marek = { }; }; Přímé vytvoření pomocí literálu objektu Sériové vytvoření instancí pomocí prototypu Friend() function Friend(jmeno,vek){ this.jmeno = jmeno; this.vek = vek; this.muz; }; var marek = { jmeno:”Marek”, vek:15, muz:true }; var lenka = { jmeno:”Lenka”, vek:25, muz:false var jan = { jmeno:”Jan”, vek:10, PROTOTYP

Objekty – prototyp function Friend(jmeno,vek){ var marek = { }; }; Přímé vytvoření pomocí literálu objektu Sériové vytvoření instancí pomocí prototypu Friend() function Friend(jmeno,vek){ this.jmeno = jmeno; this.vek = vek; this.muz; }; var marek = { jmeno:”Marek”, vek:15, muz:true }; var lenka = { jmeno:”Lenka”, vek:25, muz:false var jan = { jmeno:”Jan”, vek:10, PROTOTYP

Objekty – prototyp function Friend(jmeno,vek){ var marek = { }; }; Přímé vytvoření pomocí literálu objektu Sériové vytvoření instancí pomocí prototypu Friend() function Friend(jmeno,vek){ this.jmeno = jmeno; this.vek = vek; this.muz; }; var marek = { jmeno:”Marek”, vek:15, muz:true }; var lenka = { jmeno:”Lenka”, vek:25, muz:false var jan = { jmeno:”Jan”, vek:10, PROTOTYP

Objekty – prototyp function Friend(jmeno,vek){ var marek = { }; }; Přímé vytvoření pomocí literálu objektu Sériové vytvoření instancí pomocí prototypu Friend() function Friend(jmeno,vek){ this.jmeno = jmeno; this.vek = vek; this.muz; }; var marek = { jmeno:”Marek”, vek:15, muz:true }; var lenka = { jmeno:”Lenka”, vek:25, muz:false var jan = { jmeno:”Jan”, vek:10, PROTOTYP

Objekty – prototyp function Friend(jmeno,vek){ var marek = { }; }; Přímé vytvoření pomocí literálu objektu Sériové vytvoření instancí pomocí prototypu Friend() function Friend(jmeno,vek){ this.jmeno = jmeno; this.vek = vek; this.muz; }; var marek = new Friend(”Marek”,15); marek.muz=true; var lenka = new Friend(”Lenka”, 25); lenka.muz=false; var jan = new Friend(”Jan”, 10); jan.muz=true; var marek = { jmeno:”Marek”, vek:15, muz:true }; var lenka = { jmeno:”Lenka”, vek:25, muz:false var jan = { jmeno:”Jan”, vek:10, OBJEKT1 PROTOTYP OBJEKT2 INSTANCE PROTOTYPU 1 OBJEKT3 INSTANCE PROTOTYPU 2 INSTANCE PROTOTYPU 3