Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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.
cpl-atm/laboratoare/laborator2.1382080050.txt.gz · Last modified: 2013/10/18 10:07 by alexandru.radovici
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0