JavaScript.

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

 Megfigyelhető, hogy amikor több elem közötti összehasonlítás történik, akkor szükség van egyszerre több értékre is, főleg akkor, ha ezek az értékek jóval.
Operációs rendszerek gyakorlat 10. Gyakorlat Vakulya Gergely.
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
Objective- C Bereczki Gréta Tamara
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
Programozás I. Horváth Ernő.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
PHP Webprogramozás alapjai
Web-grafika (VRML) 10. gyakorlat Kereszty Gábor. Script típusok Elemi típusok: szám: egész vagy lebegőpontos – int / float – 1 / 1.1 string: ‘Hello World!’
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Kliensoldali Programozás
Szombathely Dinamikus WEB programozás: PHP és JSP.
Operációs rendszerek gyakorlat sed, awk parancsok.
Lénárt Anett egyetemi adjunktus - PTE PMMK Rendszer- és Szoftvertechnológia Tanszék Előadás JavaScript Tananyag: W eb - programozás.
Vizuális és web programozás II.
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
Kivételkezelés a C++ nyelvben Bevezetés
Bevezetés a C++ programozási nyelvbe
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
A JavaScript bemutatása
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Alprogramok deklarációja, definíciója és meghívása Páll Boglárka.
Programozási nyelvek Páll Boglárka.
Ismétlés A pascal program szerkezete: program programnev; Programfej
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Operátorok Értékadások
PHP nyelv. PHP Interpreteres nyelv → parancsértelmező szükséges hozzá Rasmus Lerdorf 1995 → személyes felhasználás (internetes önéletrajzának megtekintésének.
Objektum orientált programozás a gyakorlatban
Készítette: Csíki Gyula
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Készítette: Lipp Marcell
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
PHP nyelv Mari Dániel.
Készítette Enyedi Tamás
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
Java programozási nyelv Metódusok
Objektum orientált programozás
Objektum orientált programozás
Webprogramozó tanfolyam
Objektum orientált programozás
A Visual Basic nyelvi elemei
Illés Zoltán ELTE Informatikai Kar
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
Free pascal feladatok
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
Weboldalba ágyazott interaktív feladatok GeoGebra módra Papp-Varga Zsuzsanna ELTE IK Média- és Oktatásinformatika Tanszék
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Script nyelvek előadás
Script nyelvek előadás
Programozási nyelvek típusossága.
Script nyelvek előadás
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
A CLIPS keretrendszer
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

JavaScript

Bevezetés Kezdetek Nyelvi elemek Típusok, típuskonstrukciók Vezérlési szerkezetek Alprogramok Osztály,Objektum Kivételkezelés

Kezdetek Sun és Netscape (1995) HTML kibővítése Dinamikus oldalak JavaScript nem Java Értelmezés van,nem fordítás Objektum alapú és nem OO HTML-be integrált Gyenge típusosság

Szintaxis HTML <html> <script> //Böngésző által támogatott rész </script> <noscript> //Ha nem ismeri a böngésző </noscript> <body> </body> </html>

Nyelvi elemek Jelkészlet: Unicode Azonosítók Literálok Megjegyzések Eleje: betű vagy „_” Kis és nagybetű érzékeny Literálok Egész: Decimális,Hexa,Oktális Lebegőpontos,Boolean,String(speciális karakterek) Megjegyzések Deklarálás: var név; (let)

Adattípusok Típuslekérdezés: typeof number string boolean undefined null function object Típuslekérdezés: typeof function nothing(){}; typeof nothing() == "undefined" typeof nothing == "function" typeof new nothing() == "object"

Típusok Dinamikusan tipizált nyelv Elemi típusok: Szám(3 számrendszer) Logikai(true,false) Szöveg var lit = „String literál"; var obj = new String("String objektum"); var lit2 = String(„new operátor nélkül ez is literál.");

Típuskonstrukciók Tömb Létrehozás: var longVector = new Array(1000); var shortVector = new Array(); var evens = new Array(0,2,4,6,8); var odds = [1,3,5,7,9]; function range(begin, end) { for (let i = begin; i < end; ++i) { yield i; } } var ten_squares = [i * i for each (i in range(0, 10))];

Tömbök Méret változhat. Tetszőleges adatszerkezet. „Asszociatív tömb”: NewArray = [, "második elem", , "negyedik elem"]; var twoDim = [ [11,12], [21,22] ]; Méret változhat. Tetszőleges adatszerkezet. „Asszociatív tömb”: var myArray = new Array(); myArray["a"] = 100; Hivatkozás: myArray.a == 100

Tömbök 2 Verem Sor Több egyéb művelet push() és pop() shift() és unshift() Több egyéb művelet Pl: reverse(), sort() stb.

Rekordok var v1; function f1 { // valamilyen visszatérési érték } rec = { a: "szöveg", b: f1, 7: v1; } Hivatkozás: rec.a,rec[7]

Típuskonverziók „House ”+ „M.D. ” == „House M.D.” „a” + 1 == „a1” 1 + „1” == „11” 1 + 1 == 2 5 - „3” == 2 function nothing(){}; "a"+nothing() == "aundefined"

Változók Deklarálás: var a = 1; //globális function main() { var (függvény szint) let (blokk szint) (1.7 óta) semmi (opcionális: delete változó;) const név = „valami”; var a = 1; //globális function main() { b = 1; //globális var d = 3; //main-en belül someFunction(d); } function someFunction(e) { var c = 2; //ebben a függvényben

Let 1 var x = 1, y = 0; let (x = x+5, y = 6) { print(x+y + "\n"); // let miatt lokálisak } print((x + y) + "\n"); // globális Kimenet: 12 1

Let 2 var x = 1, y = 0; document.write( let(x = x + 5, y = 6) x+y + " "<br>\n"); document.write(x+y + " "<br>\n");

Let vs. Var function varTest() { var x = 31; if (true) { var x = 71; // ugyanaz a változó alert(x); // 71 } alert(x); // 71 function letTest() { let x = 31; let x = 71; // másik változó alert(x); // 31

Operátorok Ugyanaz,mint C, Java nyelvekben.

Vezérlési szerkezetek C-ből átvett szintaxis. Destruktúrálható értékadás (mintaillesztés) Pl.: var a = 1; var b = 2; [a, b] = [b, a]; // Egyszerű swap

Vezérlési szerkezetek 2 function f() { return [1, 2]; } var a, b; [a, b] = f(); document.write ("A is " + a + " B is " + b + "\n"); -------------------------------------------------------------------- function f() { return [1, 2, 3]; } var [a, , b] = f();

var people = [ { name: "Mike Smith", family: { mother: "Jane Smith", father: "Harry Smith", sister: "Samantha Smith" }, age: 35 name: "Tom Jones", mother: "Norah Jones", father: "Richard Jones", brother: "Howard Jones" age: 25 } ]; for each (let {name: n, family: { father: f } } in people) { document.write ("Name: " + n + ", Father: " + f + "\n"); } Kimenet: Name: Mike Smith, Father: Harry Smith Name: Tom Jones, Father: Richard Jones

Elágazás if ( kifejezés ) { utasítások } else { utasítások } Pl.: var a = jegyetKap(b, c); if ( a <= 1) { document.write(„Megbuktál!"); } else if (a == 5 ) { document.write(„Kitűnő!"); else { document.write(„Átmentél!");

Switch switch (kifejezés) { case címke_1: utasítások; break; case címke_2: utasítások; break; default: utasítások; //Nem kötelező } Nincs {} a blokkoknál Kifejezés bármi lehet

Switch Pl.: switch (expr) { case "Oranges": document.write("Oranges are $0.59 a pound."); break; case "Apples": document.write("Apples are $0.32 a pound."); case "Bananas": document.write("Bananas are $0.48 a pound."); case "Cherries": document.write("Cherries are $3.00 a pound."); default: document.write("Sorry, we are out of " + expr"."); }

Ciklus C-ből átvett ciklusok: for,do…while,while Feltétel: logikai,aritmetikai (0 hamis) Break,continue NINCS végtelen ciklus! while (true) { document.print("Hello, world"); }

For ciklus for ( inicializálás, ciklusfeltétel, inkrementálás ) { ciklusmag } Objektum attribútumain is léphetünk! function dump_props(obj, obj_name) { var result = ""; for (var i in obj) result += obj_name + "." + i + "=" + obj[i] + "\n"; } return result;

For each var sum = 0; var obj = {prop1: 5, prop2: 13, prop3: 8}; for each (var item in obj) { sum += item; } print(sum); Kimenet: 26

With with(obj) statement, vagy with(obj) {...} Pl.: var a, x, y; var r = 10; with (Math) { a = PI * r * r; x = r * cos(PI); y = r * sin(PI / 2); }

Alprogramok Csak function Nem kell típus,csak név function min(a, b) { return a < b ? a : b ; } 1.8 óta Lambda-kifejezés is egyszerű esetben. function(x) { return x*x; } function(x) x*x

Paraméterátadás Függvény is lehet paraméter. Nincs túlterhelés Arguments tömb //Ismeretlen hosszúságú tömbnél function concat(separator) { var result = ""; for (var i=1; i< arguments.length; i++) result = result + arguments[i] + separator; } return result; concat (".", "egy", "kettő", "három"); Kimenet:"egy.kettő.három"

Generátor 1.7 óta function fib() { var i = 0, j = 1; while (true) { yield i; var t = i; i = j; j += t; } var g = fib(); //g generátor-iteráló objektum for (var i = 0; i < 10; i++) { document.write(g.next() + "<br>\n"); } //next hatására lefut a törzs a yield-ig és vár a következő next-re

Osztály,Objektum 2.0-ig nincs osztály! Function segítségével „szimuláljuk” function Osztalynev() { var adat; // privát változó function _setAdat(a) { // privát függvény adat = a; } function _getAdat() { //szintén privát függvény return adat; this.setAdat = _setAdat; // itt tesszük láthatóvá this.getAdat = _getAdat; var obj = new Osztalynev(); obj.setAdat(5); alert(obj.getAdat());

Objektum Az objektumot kiegészíthetjük létrehozás után var obj = new osztalynev(1, 2); var x = obj.fgv(3,4); obj.ujTag = 4; obj.ujFuggveny = function(a) { this.ujTag = a; … }

Osztály 2.0 class C { var x:integer = 3; function m() {return x} function n(x) {return x+4} } var c = new C; c.m(); // returns 3 c.n(7); // returns 11 var f:Function = c.m; // returns 3

Konstruktor class C { var a:String; constructor function C(p:String) { this.a = "New "+p } constructor function make(p:String) { this.a = "Make "+p //Konstruktor szimulálása static függvénnyel static function obtain(p:String):C {return new C(p)} var c:C = new C("one"); var d:C = C.C("two"); var e:C = C.make("three"); var f:C = C.obtain("four"); c.a; // Returns "New one" d.a; // Returns "New two" e.a; // Returns "Make three" f.a; // Returns "New four"

Megjelennek a public, private, virtual parancsok Egyszeres öröklődést támogat class C { virtual var x:integer; var y:integer; } class D extends C { override function set x(a:integer):integer {y = a*2}

Interfész Megjelenik az interface interface I { function f(int):int } class B implements I function f(i:int):int {return i*i}

Kivételkezelés Try-catch-finally szerkezet try{...} catch(e){ if(e instanceof ...) {...} else if (e instanceof ...) {...} ... } -------------------------------------------------------------------------------------------------- catch(e if e instanceof ...) {...} catch(e if e == "kivételnév") {...}

Kivételkezelés 2 Hiba dobása: throw try { throw RangeError; } catch (e) { alert(e.name); } finally { … }