This shows you the differences between two versions of the page.
cpl-atm:laboratoare:laborator2 [2013/10/18 10:07] alexandru.radovici created |
cpl-atm:laboratoare:laborator2 [2013/10/31 08:01] (current) alexandru.radovici |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Laborator 2 ====== | + | ====== Laborator 2 - Introducere in NodeJS ====== |
Introducere in NodeJS | Introducere in NodeJS | ||
===== Instalare ===== | ===== Instalare ===== | ||
+ | Instalarea se face diferit pentru Windows si Linux. | ||
+ | |||
+ | ==== Windows ==== | ||
+ | Pentru Windows, instalarea se face folosind un kit care se poate descarca de pe pagina [[http://www.nodejs.org/download/|NodeJS]]. Trebuie doar sa alegeti varianta corespunzatoare sistemului de operare (32 sau 64 de biti). Aveti nevoie de parola de administrator doar la instalare. | ||
+ | |||
+ | Reporniti calculatorul dupa instalarea NodeJS. | ||
+ | |||
+ | |||
+ | ==== Linux ==== | ||
+ | Pentru Linux, NodeJS se poate instala fie din repository-urile distributiei (folosind apt-get sau yum), fie prin compilarea sursei de pe pagina NodeJS. Va recomandam instalarea prin compilare, deoarece versiunile din repository-uri sunt vechi. | ||
+ | |||
+ | Pentru compilare, descarcati sursele de pe pagina [[http://www.nodejs.org/download/|NodeJS]]. Aveti nevoie de gcc, g++, make, openssl, python instalate. | ||
+ | |||
+ | Compilarea se face folosind urmatoarele comenzi: | ||
+ | |||
+ | <code> | ||
+ | ./configure | ||
+ | make | ||
+ | sudo make install | ||
+ | </code> | ||
+ | |||
+ | Dupa cums e poate observa, una dintre comenzi (cea cu sudo) are nevoie de un utlizator privilegiat. Daca nu aveti asa ceva, puteti instala NodeJS in contul local: | ||
+ | |||
+ | <code> | ||
+ | ./configure --prefix=~/local | ||
+ | make | ||
+ | make install | ||
+ | </code> | ||
+ | |||
+ | Astfel veti avea un director //local// in directorul utilizatorului in care va fi instalat NodeJS. Pentru a functiona, trebuie sa adaugati o cale de cautare catre fisierele executabile ale NodeJS. Pentru acesta, adaugati in fisierul ~/.bashrc urmatoarea linie: | ||
+ | |||
+ | <code> | ||
+ | export PATH=$HOME/local/bin:$PATH | ||
+ | </code> | ||
+ | |||
+ | ===== Instalarea pachetelor ===== | ||
+ | NodeJS este doar compilatorul si cateva biblioteci pentru programare. Pentru a adauga functionalitati, trebuie sa instalati biblioteci suplimentare. Acesta se face folosind comanda //npm//. Sintaxa este urmatoarea: | ||
+ | |||
+ | <code> | ||
+ | npm [-g] install nume_biblioteca | ||
+ | </code> | ||
+ | |||
+ | Instalarea bibliotecilor se face intr-un director numit //node_modules//. Acesta este fie directorul global al NodeJS (daca parametrul //-g// este specificat) fie in directorul curent. | ||
+ | |||
+ | Pentru laboratorul de astazi avem nevoie de biblioteca //dict//. Vom instala biblioteca in directorul curent la momentul potrivit. | ||
+ | |||
+ | <code> | ||
+ | npm install dict | ||
+ | </code> | ||
+ | |||
+ | ===== IDE ===== | ||
+ | NodeJS este doar compilatorul, asa ca pentru scrierea programelor aveti nevoie de un alt program. Puteti folosi orice program, noi recomandam: | ||
+ | |||
+ | * SublimeText | ||
+ | * Nodepad++ | ||
+ | * Vim | ||
+ | |||
+ | ===== Rularea programelor ===== | ||
+ | Aveti nevoie de un terminal pentru a rula programele. NodeJS este similar cu //python// in acest sens. Un program se porneste folosind comanda: | ||
+ | |||
+ | <code> | ||
+ | node fisier_program.js | ||
+ | </code> | ||
+ | |||
+ | In Windows, proniti un terminal folosind comanda cmd.exe (atentie, nu rulati direct node.exe, acesta nu va executa un program, va pornit doar NodeJS in modul interactiv - adica asteapta instructiuni de javascript). | ||
+ | |||
+ | ===== Limbajul ===== | ||
+ | Sintaxa limbajului este similara cu cea din C. Variabilele au tip dinamic, adica tipul lor se schimba in functie de ce anume memoreaza. | ||
+ | ==== Scrierea pe ecran ==== | ||
+ | Pe ecran se poate afisa folosind functiile //console.log()// si //console.error ()//. Care este diferenta dintre acestea doua? | ||
+ | <hidden> | ||
+ | console.log afiseaza pe stdout | ||
+ | console.error afiseaza pe stderr | ||
+ | </hidden> | ||
+ | |||
+ | Exemplu: | ||
+ | <code javascript> | ||
+ | console.log ('Hello from NodeJS'); | ||
+ | </code> | ||
+ | |||
+ | ==== Declararea variabilelor ==== | ||
+ | Variabilele se declara folosind cuvantul cheie //var//. | ||
+ | |||
+ | <code javascript> | ||
+ | var a; | ||
+ | var b; | ||
+ | </code> | ||
+ | |||
+ | ==== Valorile speciale ale variabilelor ==== | ||
+ | In Javascript exista trei tipuri de valori speciale, diferite una de alta. | ||
+ | |||
+ | * //undefined// - este valoarea unei variabile care nu a primit niciodata valoare | ||
+ | * //null// - este valoarea echivalenta cu NULL din C, insa este diferita de valoarea 0 sau valoarea //undefined// | ||
+ | * //false// - este valoarea falsa din C, diferita de 0, //null// si //undefined// | ||
+ | * //true// - este valoarea adevarata | ||
+ | |||
+ | <note> | ||
+ | //false// != //null// != //undefined// != 0 | ||
+ | </note> | ||
+ | |||
+ | ==== Siruri de caractere ==== | ||
+ | Sirurile de caractere se scriu intre ghilimele //"// sau aprostroafe //'//. Acestea se pot concatena folosind //+//. | ||
+ | |||
+ | Exemplu: | ||
+ | <code javascript> | ||
+ | var a = 'Programam in'; | ||
+ | var b = a + " Javascript"; | ||
+ | |||
+ | console.log (b); | ||
+ | </code> | ||
+ | |||
+ | ==== Declararea functiilor ==== | ||
+ | Functiile sunt similare cu cele din C, insa nu au un tip de intoarcere bine definit. O functie se declara folosind cuvantul cheie //function// urmat de numele functiei, paranteza deschisa, lista de parametrii, paranteza inchisa urmata de coldul functiei intre acolade. | ||
+ | |||
+ | |||
+ | Exemplu: | ||
+ | <code javascript> | ||
+ | function egale (a, b) | ||
+ | { | ||
+ | if (a==b) return true; | ||
+ | else return false; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | O functie poate intoarce orice tip de valoare. In functie de ce tip este scris dupa cuvantul //return//, functia va intoarce un tip sau altul. De asemenea, o functie intoarce mereu o valoare. Daca nu este folosit cuvantul //return// nicaieri, functie va intoarce //undefined//. | ||
+ | |||
+ | Exemplu: | ||
+ | <code javascript> | ||
+ | function afiseaza () | ||
+ | { | ||
+ | console.log ('afiseaza'); | ||
+ | } | ||
+ | |||
+ | var n = afiseaza (); | ||
+ | </code> | ||
+ | |||
+ | Variabila n va avea valoarea //undefined//. | ||
+ | |||
+ | ==== Siruri ==== | ||
+ | Sirurile sunt alocate dinamic in Javascript. Realizarea unui sir nou se face prin folosirea parantezelor drepte. Elementele dintr-un sir pot fi de tipuri diferite. | ||
+ | |||
+ | Exemplu: | ||
+ | <code javascript> | ||
+ | // un sir vid | ||
+ | var n = []; | ||
+ | |||
+ | // un sir cu elemente omogene | ||
+ | var n = [1,2,3]; | ||
+ | |||
+ | // un sir cu elemente neomegene | ||
+ | var n = [1, 'caractere', 10.5]; | ||
+ | </code> | ||
+ | |||
+ | Sirurile pot fi folosite ca stive prin folosirea functiilor //push// si //pop//. | ||
+ | |||
+ | * push adauga un element in sir | ||
+ | * pop scoate ultimul element din sir | ||
+ | |||
+ | Dimensiunea sirului poate fi obtinuta prin variabila //length//. | ||
+ | |||
+ | Exemplu: | ||
+ | <code javascript> | ||
+ | var a = [1,2,3]; | ||
+ | |||
+ | a.push (4); // adauga 4 la in sir | ||
+ | console.log (a); | ||
+ | |||
+ | var x=a.pop (); // scoate ultimul element din sir | ||
+ | console.log (x); | ||
+ | console.log (a); | ||
+ | |||
+ | console.log ('Sirul are '+a.length+' elemente'); | ||
+ | </code> | ||
+ | |||
+ | TODO matrici | ||
+ | |||
+ | ==== Structuri ==== | ||
+ | Spre deosebire de C, unde sructurile au un sablon prestabilit, in javascript structurile sunt dinamice. Acestea se declara folosind acolade. Se pot adauga si sterge dinamic membrii. | ||
+ | |||
+ | Exemplu: | ||
+ | <code javascript> | ||
+ | var faraelemente = {}; | ||
+ | |||
+ | var masa = | ||
+ | { | ||
+ | numarPicioare: 4, | ||
+ | tip: 'lemn', | ||
+ | culoare: 'verde', | ||
+ | eticheta: '' | ||
+ | }; | ||
+ | |||
+ | console.log (faraelemente); | ||
+ | console.log (masa); | ||
+ | </code> | ||
+ | |||
+ | Am declarat doua structuri: //faraelemente// este o structura fara membrii si //masa// o structura ce defineste o masa. Putem acum adauga membrii noi amandurora: | ||
+ | |||
+ | <code javascript> | ||
+ | faraelemente.membru = 'membru'; | ||
+ | masa.lungime= 300; | ||
+ | console.log (faraelemente); | ||
+ | console.log (masa); | ||
+ | |||
+ | delete masa.eticheta; | ||
+ | |||
+ | console.log (masa); | ||
+ | </code> | ||
+ | |||
+ | O structura poate contine ca mebrii siruri sau alte structuri: | ||
+ | |||
+ | <code javascript> | ||
+ | var scaun | ||
+ | { | ||
+ | tapiterie: ['albastru','galben','verde'], | ||
+ | culoare: 'portocaliu', | ||
+ | vazator: | ||
+ | { | ||
+ | firma: 'firma', | ||
+ | pret: 299 | ||
+ | } | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | ===== Exercitii ===== | ||
+ | - Scrieti un program care va afiseaza numele pe ecran. | ||
+ | - Scrieti un program care defineste un sir si afiseaza sirul pe ecran. | ||
+ | - Scrieti un program care defineste un sir si o functie care afiseaza sirul pe ecran. | ||
+ | - Scrieti un program in care definiti o structura si ii afisati componentele. | ||
+ | - Scrieti un program care defineste un dictionar si afiseaza componentele sale. |