Catedra Automatică și Tehnologii Informaționale. Introducere in.net si C#

Size: px
Start display at page:

Download "Catedra Automatică și Tehnologii Informaționale. Introducere in.net si C#"

Transcription

1 Catedra Automatică și Tehnologii Informaționale Disciplina MIDPS l.u. Boleac Ruslan Introducere in.net si C# Structura unei aplicatii C#. O aplicatie C# (.Net in general) este formata din una sau mai multe clase, grupate in spatii de nume (namespaces)*. Este obligatoriu ca una din aceste clase (si numai una) sa contina un "punct de intrare" (entry point), si anume metoda Main**. O parte din clasele folosite de aplicatie sunt deja definite. Folosirea acestora se face fie "importand" spatiile de nume care contin definitia acestora, fie apeland clasa folosind numele complet. Prima metoda este folosita atunci cand clasele dintr-un namespace sunt folosite de mai multe ori. //"Importarea" spatiilor de nume ce vor fi folosite. using System; //Definirea unui nou namespace namespace FirstApplication //Definirea unei clase public class FirstClass //Definitiile si declaratiile variabilelor si metodelor

2 ... //Metoda Main Fig. : Structura unei aplicatii foarte simple *Nu exista restrictii la alegea numelor pentru clase si fisiere (cum exista in Java), fisierele putand avea orice nume si contine definitia a mai mult de o singura clasa. Singura restrictie este sa nu existe ambiguitati (sa nu existe doua clase cu acelasi nume in acelasi spatiu de nume, etc.) **De fapt punctul de intrare intr-o aplicatie poate fi modificat (sa fie diferit de metoda Main); acest lucru poate fi facut manipuland direct codul MSIL. Metoda Main Metoda Main este punctul de intrare in aplicatie - este functia care se executa atunci cand aplicatia este pornita. La fel ca si in C++, metoda Main poate avea mai multe signaturi, fiecare dintre acestea fiind corecta. La fel ca orice alta metoda C# (.Net) Main nu poate fi globala. Ea trebuie definita ca fiind membru intr-o clasa. public class FirstClass... static void Main()... static int Main()... static void Main (string[] args)... static int Main (string[] args) Fig. : Singnaturile metodei Main Se observa ca metoda Main trebuie sa fie statica (Puteti explica de ce?). De asemenea poate intoarce o valoare intreaga. Acea valoare reprezinta rezultatul executiei programului (la fel ca in C++). Prin conventie, daca un program intoarce valoarea inseamna ca s-a executat cu succes. O valoare diferita de inseamna eroare, si codurile de eroare sunt definite de programator. (La fel ca si in C++ aceasta este doar o conventie si nu un standard.) Intr-o aplicatie nu poate exista mai mult de un singur punct de intrare (mai multe definiri ale metodei Main, fie si in clase diferite). Definirea in mai multe locuri va genera erori la compilare. Daca Main este definita cu parametru (string[] args), atunci aplicatia poate accepta parametri. Acestia vor fi trimisi functiei in parametrul args.

3 Spatii de nume Toate clasele, interfetele, etc. existente in.net Framework formeaza o ierarhie. La baza acestei ierarhii sta spatiul de nume System. Aici sunt unele clase des folosite (ex: clasa Console pentru lucrul cu tastatura si afisarea la ecran.). Alte namespace-uri importante sunt: System.IO - pentru lucrul cu dispozitivele input/output (ex: accesul la fisiere) System.Collections - pentru lucrul cu colectii de obiecte de acelasi tip (liste, stive, etc.) System.Xml - pentru manipularea datelor in format xml System.Windows.Forms - pentru lucrul cu forme windows (controale windows) Prima aplicatie Fie urmatoarea aplicatie C#: using System; namespace Laborator public class HelloWorld static void Main () Console.Write ("Hello World!"); Fig. : Aplicatia "Hello World" In programul anterior am definit o clasa HelloWorld (pe care am pus-o in spatiul de nume Laborator) care contine o singura metoda: Main. Functia Main apeleaza, la randul sau, functia Write din clasa Console. Clasa Console este definita in spatiul de nume System si contine functii pentru lucrul cu iesirea/intrarea standard (consola). O parte dintre aceste medode sunt statice (Puteti da un exemplu? ) astfel nefiind necesara declararea unui obiect de tip Console. In cazul in care ar fi lipsit linia din program ("importarea" unui namespace) ar fi trebuit sa apelam functia Write folosind numele ei complet (si anume: System.Console.Write ("Hello World!")) MSIL - Microsoft Intermediate Language Unul din marile avantaje ale platformei.net este interoperabilitatea interlimbaj. Acest lucru a fost incercat si anterior dar cu un succes limitat. Un exemplu in acest sens il reprezinta COM-ul.

4 In COM este posibil sa creezi o componenta intr-un limbaj (de exemplu Visual Basic) si sa o folosesti in alt limbaj (de exemplu C++). Totusi COM-ul nu permite mostenirea unei clase definita intr-un limbaj in alt limbaj..net framework permite acest lucru. Pentru a intelege cum este posibila interoperabilitatea interlimbaj trebuie urmarit ce se intampla atunci cand se compileaza o aplicatie. La compilare nu este creat un fisier binar care poate apoi fi executat, ci un fisier (sau mai multe) care contine (printre altele) cod MSIL. Acest cod MSIL seamana destul de mult cu assembler-ul (dar nu este assembler). Fisierul obtinut dupa compilare are tot extensia exe, la fel ca orice binar normal. Cand aplicatia este rulata, codul MSIL este incarcat si executat de CLR (Common Language Runtime). Pentru a intelege mai bine se poate spune ca CLR-ul este un fel de Masina Virtuala Java (cu observatia ca CLR ofera mult mai multe servicii codului executat decat JVM. Desi se poate face o paralela intre cele doua medii de executie acestea nu trebuiesc confundate sau considerate echivalente.) Fisierul obtinut in urma compilarii unui program.net este un assembly. Un assembly contine, pe langa cod MSIL si metadata si resurse. In metadata sunt incluse toate informatiile despre tipurile din assembly (signaturile tuturor metodelor, claselor, etc.) Pentru ca in orice moment signatura unei clase este cunoscuta (indiferent daca avem codul sursa sau un assembly care contine clasa) aceasta poate fi extinsa prin mostenire din orice limbaj. Datorita metadatei nu mai este nevoie de bibliotecile de tipuri, folosite foarte mult in COM, pentru ca metada actioneaza ca o biblioteca de tipuri. Cu alte cuvinte crearea componentelor in.net este mult mai simpla. Pentru a vedea cum arata codul MSIL putem face o decompilare a aplicatiei anterioare folosind utilitarul ildasm.exe (care se instaleaza o data cu.net Framework).class public beforefieldinit HelloWorld extends object.method public hidebysig specialname rtspecialname instance void.ctor() cil managed // Code Size: byte(s).maxstack L_: ldarg. L_: call instance void object::.ctor() L_: ret.method private hidebysig static void Main() cil managed.entrypoint // Code Size: byte(s).maxstack L_: ldstr "Hello World!" L_: call void [mscorlib]system.console::write(string) L_a: ret

5 Fig. : Codul MSIL pentru aplicatia HelloWorld.exe La o privire sumara asupra codului de mai sus se remarca doua lucruri:. Clasa HelloWorld este derivata din clasa Object (la linia avem extends object imediat dupa declararea clasei.). In.Net toate tipurile mostenesc clasa Object. Aceasta derivare nu trebuie facuta in mod explicit de programator, compilatorul adaugand automat codul necesar.. Clasa HelloWorld contine doua metode, desi in codul C# am definit numai una. Compilatorul a adaugat si un constructor (constructorul implicit), identificat cu numele.ctor (linia ). Trebuie amintit ca toti constructorii de instanta sunt identificati in codul MSIL cu numele.ctor, In cazul de fata constructorul nu face nimic altceva decat sa apeleze constructorul clasei de baza (linia ). Manipularea parametrilor aplicatiei Aplicatiile.Net pot primi parametri de la tastatura. Asa cum se arata in figura, functia Main are signaturi cu parametru (liniile si ). Acel parametru este un vector de string-uri si va contine parametrii aplicatiei care pot fi accesati folosind indici: args[], args[], etc. string[] este tip si, in consecinta, poate avea metode si date membru. Lungimea vectorului args poate fi obtinuta folosind astfel de date membru. args.length va contine lungimea vectorului args. Tipuri de date fundamentale in.net In.Net tipurile se impart in doua categorii, si anume tipuri valoare si tipuri referinta. Cele mai importante doua tipuri referinta sunt object si string. Acestea sunt cele mai importante pentru ca sunt folosite intens in orice aplicatie. Asta nu inseamna ca celelalte nu sunt importante. Atunci cand un obiect este de tipul referinta, pe stiva nu este pusa valoarea acelui obiect, ci o referinta la el. Obiectul va avea memorie alocata in heap si pe stiva este pusa o referinta catre zona de memorie ocupata in heap. In consecinta referinta este un pointer type-safe - adica avem siguranta ca la adresa de memorie de pe stiva avem un obiect de tipul corect (sau valoarea null). Urmatoarele tipuri sunt tipuri referinta: clasele, array-urile, interfetele si tipurile delegat.

6 Pe de alta parte o variabila de tip valoare va contine pe stiva direct valoarea, si nu o referinta. Exista mai multe tipuri valoare predefinite in.net printre care se numara structurile (struct), enumeratile (enum) si tipurile primitive* (int, byte, short, long, double, etc.) Principala diferenta intre class si struct este ca primul e tip referinta si cel de-al doilea e tip valoare. Din acest motiv nu erste recomandat sa se creeze structuri care au o dimensiune mare. *Tipurile primitive sunt toate niste structuri, numele mai sus mentionate fiind niste alias-uri. Astfel int este un alias pentru System.Int, short pentru System.Int, byte pentru System.Int, long pentru System.Int, etc. Folosirea numelui complet al tipului sau al aliasului nu produce decat o diferenta sintactica, codul MSIL aratand la fel. Tip CTS C# Alias Descriere System.Object object Tipul de baza pentru toate tipurile CTS. System.String string String System.Sbyte Sbyte Valoare intreaga pe biti (cu semn). System.Byte byte Valoare intreaga pe biti (fara semn). System.Int short Valoare intreaga pe biti (cu semn). System.UInt ushort Valoare intreaga pe biti (fara semn). System.Int int Valoare intreaga pe biti (cu semn). System.UInt uint Valoare intreaga pe biti (fara semn). System.Int long Valoare intreaga pe biti (cu semn). System.UInt ulong Valoare intreaga pe biti (fara semn). System.Char char Caracter unicode (pe biti). Numar in virgula mobila pe biti, conform System.Single float IEEE. Numar in virgula mobila pe biti, conform System.Double double IEEE. System.Boolean bool Valoare booleana (true/false) Valoare pe de biti care retine de zecimale semnificative, folosit in calcule unde System.Decimal decimal este necesara o precizie mare (ex: calcule finaciare)

7 C#. Tipuri de date. Instructiuni de control. Colectii Colectii - clasele Array si ArrayList Clasa Array, definita in spatiul de nume System, este clasa de baza pentru vectori in.net. Desi este o clasa abstracta, furnizeaza o metoda CreateInstance pentru crearea de vectori. De asemenea furnizeaza metode pentru manipulare, cautare si sortare. Proprietate IsFixedSize IsReadOnly IsSyncronized Length Rank SyncRoot Descriere Intoarce o valoare booleana care indica daca dimensiunea vectorului poate fi modificata. Intoarce o valuare booleana care indica daca vectorul e readonly sau nu. Indica daca vectorul e thread-safe. Numarul total de elemente din vector (numarand toate dimensiunile). Intoarce numarul de dimensiuni ale vectorului. Intoarce un obiect folosit pentru a sincroniza accesul la elementele vectorului. Fig. : Proprietatile clasei Array Moduri de creare a unui array: Declararea unui vector de intregi. int[] intregi; //Initializarea vecatorului intregi = new int[],, ; //Creeaza un vector cu doua dimensiuni. Array nume = Array.CreateInstance( typeof(string),, ); //Alta metode a crea un vector cu doua dimensiuni, si initializare //Un vector declarat astfel se numeste vector rectangular string[,] altenume = "Ion", "Vasile", "Popescu", "Ionescu" ; string[,] adrese = new string[, ]; //Jagged Arrays - elementele unui astfel de array sunt array-uri int[][] altiintregi = new int[][]; altiintregi[] = new int[]; altiintregi[] = new int[]; Fig. : Moduri de decrare si initializare a vectorilor

8 .Net Framework pune la dispozitia programatorilor mai multe clase folosite pentru manipularea colectiilor de obiecte de acelasi tip*. Acestea sunt definite in spatiul de nume System.Collection. ArrayList este clasa cel mai des folosita atunci cand se lucreaza cu liste de obiecte. ArrayList lucreaza intern cu un Array de object. Pe masura ce obiecte noi sunt adaugate in lista, array-ul este redimensionat. Redimensionarea este facuta doar atunci cand este necesar. In acest mod este furnizat un mecanism de acces rapid la elemente. //Creem doua obiecte de tipul ArrayList ArrayList nume = new ArrayList(); ArrayList prenume = new ArrayList(); //Adaugam valori in aceste liste nume.add ("Ionescu"); nume.add ("Popescu"); prenume.add ("Ion"); prenume.add ("Vasile"); prenume.add ("Cristi"); //Afisam la consola continutul listelor for (int i = ; i < prenume.count; i++) Console.WriteLine (prenume[i]); //O metoda mai eleganta de parcurgere a listelor foreach (string str in nume) Console.WriteLine (str); Fig. : ArrayList in actiune. La linia din figura am folosit proprietatea Count pentru a prelua numarul de elemente din lista. Aceasta nu trebuie confundata cu proprietatea Size care intoarce dimensiunea array-ului folosit intern de ArrayList. Size reprezinta numarul de elemente care pot fi retinute fara a se mai face o redimensionare a array-ului (Obs: aceasta redimensionare este transparenta pentru programator, facandu-se automat cand se adauga un nou element si nu mai este loc). La linia am folosit o noua metoda de acces a elementelor unei liste, si anume instructiunea foreach. Instructiunea foreach poate fi folosita doar asupra tipurilor care implementeaza interfata IEnumerable. Aceasta interfata este implementata de toate colectiile din.net precum si de clasa Array. Desi in exemplul anterior am lucrat doar cu stringuri, intr-un ArrayList pot fi adaugate elemente de orice tip (pentru ca toate sunt de tipul object). *Pentru a face colectiile cat mai generale, acestea vor lucra intern cu tipul object. Cum toate tipurile sunt derivate din tipul object colectiile pot lucra cu orice tip definit de programator. Acest lucru are atat avantaje cat si dezavantaje. Accesori

9 Accesorii sunt modalitati de acces la variabilele membru ale unui obiect intr-un mod sigur. Accesorii mai sunt numiti si proprietati ale unei clase (a se vedea figura cu proprietatile clasei Array). Sintaxa pentru definirea unei proprietati este urmatoarea: public class Student string m_nume; string m_prenume; int m_nota; //getter si setter public string Nume get return m_nume; set m_nume = value; //setter public string Prenume set m_prenume = value; //getter public string NumeComplet get return m_nume + " " + m_prenume; public static void Main () Student student = new Student(); //setam numele si penumele studentului student.nume = "Popescu"; student.prenume = "Vasile"; //Afisam numele studentului pe ecran Console.WriteLine (student.numecomplet); //Pe ecran se va afisa: Popescu Vasile

10 Fig. : Accesori La definire accesorii au sintaxa asemanatoare cu a unei metode, si la apel se foloseste sintaxa unei variabile membru. Accesorii simplifica foarte mult sintaxa pentru obtinerea unor valori ale datelor membru sau setarea lor, si nu numai. Daca pentru a pune o anumita variabila membru pe o valoare folosim proprietati, putem face niste verificari inainte. De exemplu la setarea numelui unui student putem testa daca numele nu contine caractere interzise (cum ar Asemenea teste erau posibile si in alte limbaje, dar trebuie construite functii speciale atat pentru setarea valorii (ex: SetName.), iar pentru obtinerea valorii trebuia implementata alta functie (ex: GetName). Introducerea accesorilor a simplificat mult sintaxa. Proprietatile pot fi numai read-only (este definit numai getter-ul - cum este NumeComplet), writeonly (este definit numai setter-ul - cum este Prenume) sau atat read cat si write (cand este definit atat getter-ul cat si setter-ul - cum este Nume). In exemplul de mai sus, daca incercam sa obtinem doar valoarea pentru prenume (ex: string prenumestudent = student.prenume;) vom obtine o eroare la compilare. Pentru a seta valoarea, accesorii au un parametru spcial: value (liniile si ). Acesta contne valoarea care urmeaza sa fie setata (e un fel de parametru al unei functii, doar ca nu e declarat explicit). Acesta are ca tip tipul proprietatii (string in cazul de mai sus). Indexatori Indexatorii sunt o alta modalitate de a usura scrierea unui program. Indexatorii permit accesul la un obiect folosind indici, la fel ca in cazul vectorilor. Programului de mai sus i-am putea adauga urmatorul indexator: public class Student...

11 //Definirea indexatorului public string this[string camp] get if (camp == "nume") return m_nume; else if (camp == "prenume") return m_prenume; else return null; set if (camp == "nume") m_nume = value; else //fa ceva... public static void Main ()... Console.WriteLine (student["nume"]);//pe ecran se va afisa: Popescu student["nume"] = "Ionescu";//Am schimbat numele studentului :)

12 Fig. : Indexatori Implementarea indexatorului este similara cu cea a unei proprietati, putand avea numai setter, getter sau pe amandaua. Indexatorul din figura primeste un parametru de tip string (intre parantezele patrate - la linia ). Nu este obligatoriu ca acel parametru sa fie de tipul string, el putand avea orice alt tip, ramanand in sarcina programatorului utilizarea lui corecta. (In figura la linia am folosit un indexator - implementat de ArrayList - care primea ca parametru in paranteza patrata o valoare de tipul int) Instructiuni de control if for foreach while switch goto return Operatori C# Categorie Operatori Asociativitate (x), x.y, f(x), a[x], x++, x--, new, Primari typeof, sizeof, checked, unchecked Unari +, -,!, ~, ++x, --x, (T)x Operatori de multiplicitate *, /, % stanga Operatori de adunare +, - stanga Shiftare <<, >> stanga Relationali <, >, <=, >=, is stanga Egalitate == stanga SI logic & stanga XOR logic (sau exclusiv) ^ stanga SAU logic stanga SI conditional && stanga SAU conditional stanga Operator conditional?: dreapta =, *=, /=, %=, +=, -=, <<=, >>=, &=, Asignare dreapta ^=,?= Fig. : Operatorii C#

13 In tabelul de mai sus sunt prezentati operatorii C#, precedenta fiind de sus in jos (operatorii cu precedenta cea mai mare sunt cei primari, si operatorii cu precedenta cea mai mica sunt operatorii de asignare). String-uri Clasa System.String (sau string) reprezinta un sir de caractere imutabil - adica valoarea unui string nu poate fi modificata dupa creare. Metodele care par sa modifice un string creaza de fapt un alt sir de caratere care contine modificarile si nu-l modifica pe primul. In afara de clasa strin.net Framework ofera si alete clase pentru lucrul cu siruri de caractere: StringBuilder, StringFormat, StringCollection etc. care ofera metode pentru comparare, inserare, indexare, cautare, joining, splitting, inlocuire, copiere, formatare etc. a sirurilor de caractere. Figura urmatoare prezinta formatatorii pentru stringuri folosind exemple: string.format ();// string.format ("", );// string.format (":D", );// string.format (",,",, );//Aliniere la dreapta: " " string.format (",-,-",, );//Aliniere la stanga: " " string.format (",-:D,-:D",, );//" " string.format (":C", );//$,. string.format (":C", );//$,. string.format (":D", );// string.format (":D", );// string.format (":E", );//.E+ string.format (":E", );//.E+ string.format (":F", );//. string.format (":F", );//. string.format (":G", );// string.format (":G", );//.E string.format (":N", );//,. string.format (":N", );//,. string.format (":P", );//,,. % string.format (":P", );//,,. % string.format (":X", );//E string.format (":X", );//E Fig. : Formatarea stringurilor.

14 . Implementati interfata IList din spatiul de nume System.Collections. Implementarea se va face in fiecare din urmatoarele doua clase: SimpleList - lista de stringuri, in sensul obisnuit, in care adaugarea unui element se face la sfarsitul listei. SortedList - lista va contine stringuri sortate alfabetic, in care adaugarea unui element se face la pozitia corespunzatoare ordinii alfabetice. Se cere implementarea tuturor metodelor interfetei IList, pentru ambele clase, cu functionalitatea specifica fiecareia. Proiectati o functie Main cu urmatorul schelet: se declara o variabila de tip IList utilizatorul opteaza pentru unul din cele doua tipuri de liste in functie de optiune, se face instantierea variabilei de tipul IList declarate mai sus se adauga stringuri in lista se apeleaza celelalte functii implementate. se afiseaza lista folosind iteratori. Observatie: interfata IList mosteneste interfata IEnumerable (care permite iterarea asupra elementelor din lista)! Windows Forms Exceptii Unul din scopurile principale ale CLR este acela de a elimina erorile furnizand mecanisme pentru managementul automat al memoriei si resurselor precum si prin prinderea erorilor la compilare, dat fiind faptul ca limbajele.net sunt puternic tipizate (un tip nu poate minti "spunand" ca este altceva decat ceea ce este). Pornind cu aceste concepte erori de genul buffer underrun sau buffer overrun, folosirea unui obiect dupa ce memoria ocupata de el a fost dealocata nu mai sunt posibile. Totusi unele erori (care tin de logica programului) nu pot fi tratate decat la rulare (la runtime): erori de genul impartire la zero, anumite fisiere solicitate de aplicatie nu exista, etc. Pentru tratarea acestor erori sunt folosite exceptii. Pentru tratarea corecta a exceptiilor trebuie facuta diferenta intre o exceptie si un eveniment asteptat. De exemplu daca este citit continutul unui fisier si este gasit sfarsitul fisierului (adica nu se mai poate citi mai departe din acel fisier) am intalnit un eveniment asteptat si nu o exceptie

15 (faptul ca nu mai putem citi nu este o exceptie.). In cazul in care in timpul citirii din fisier sistemul de operare raporteaza ca nu mai poate citi pentru ca exista o eroare pe disc am intalnit o exceptie (nu ne asteptam sa nu mai putem citi din cauza unei erori pe disc). Notiunii de exceptie trebuie sa-i asociem si un context. Si anume daca incercam sa ne conectam la alt computer din retea si nu reusim (adica primim o exceptie) contextul acestei exceptii este motivul pentru care nu am reusit conexiunea: username/password nu erau corecte, computerul respectiv nu exista in retea, computerul exista in retea dar nu accepta conexiuni la programul nostru, etc. Avand aceste informatii suplimentare (adica contextul exceptiei) putem sa gasim o solutie pentru problema (ex: daca username/password nu sunt corecte putem sa cerem utilizatorului sa le mai introduca o data). Folosirea exceptiilor in C# are la baza cuvinte cheie: throw, try, catch si finally. Atunci cand executia unei metode nu mai poate continua din cauza unei situatii exceptionale aceasta va "arunca" o exceptie. In exemplul urmator este prezentata o functie care verifica daca executia programului poate continua. In cazul in care gaseste o eroare grava o exceptie de tipul BigErrorException este aruncata (linia ). public void CheckForErrors () if (bigerror) throw new BigErrorException(); else ContinueExecution(); Fig. : O functie care arunca o exceptie. Prinderea unei astfel de exceptii este facuta intr-o instructiune de tipul try...catch... finally. public void ExecuteProgram () try //do something CheckForErrors(); Console.WriteLine ("Everything looks fine. No errors... yet!"); //do something else catch (BigErrorException ex) Console.WriteLine ("A big error occured. Panic [y/n]?"); //Do something to solve the error, if possible. //All the necessary information about the error should be in the 'ex' object. catch (Exception ex) Console.WriteLine ("Unknown error!"); //do something here return;

16 finally Console.WriteLine ("Done! With or without errors."); Fig. : Prinderea unei exceptii. Existenta blocului finally este optionala. In cazul in care acesta exista se va executa indiferent daca o exceptie a aparut sa nu. In cazul in care apare o exceptie CLR-ul verifica tipul acelei exceptii pentru a selecta care bucata de cod se va ocupa de tratarea ei. Daca exceptia este de tipul BigErrorException codul de la liniile - se va ocupa de tratarea ei. Daca exceptia aparuta e de un alt tip va fi tratata de codul de la liniile -. In.Net toate exceptiile sunt derivate din clasa Exception. Din acest motiv instructiunea catch de la linia va prinde toate exceptiile neprinse pana in acel moment. (Ordinea in care declarati blocurile te tip catch este importanta!). La linia se remarca o instructiune return. Executia acestei instructiuni nu inseamna iesirea imediata din functie. Iesirea din functie va avea loc doar dupa executia blocului finally. Tot ca o observatie relativ la iesirea dintr-o functie, instructiunea return este ilegala intr-un bloc de tip finally. Ce se intampla in cazul in care nu exista nici o instructiune pentru prinderea unei exceptii intr-un cod care poate genera exceptii? Cum poate fi rescrisa linia din figura pentru a prinde toate exceptiile fara a ne mai folosi de tipul Exception? Exceptii customizate In.Net programatorul are posibilitatea sa-si creeze propriile exceptii, specifice aplicatiei pe care o face. Pentru a crea propria exceptie tot ce trebuie sa faca un programator este sa creeze o clasa

17 derivata din Exception sau ApplicationException. Este recomandat ca un programator sa-si deriveze propriile exceptii din ApplicationException, facand-use astfel distinctie intre exceptiile customizate si cele definite in BCL (Base Class Library). Delegati si evenimente O alta mare noutate existenta in CTS (Common Type System) o reprezinta tipurile numite generic delegates. Din punctul de vedere al cuiva care foloseste delegati, acestia sunt tipuri referinta care incapsuleaza o metoda cu o anumita signatura. (Atentie: un delegat nu este o functie, ci un tip referinta!!!). In.Net delegatii sunt folositi pentru a furniza functionalitatea de callback precum si tratarea in mod asincron a evenimentelor. Folosita in mod intensiv in programarea windows, functionalitatea de callback permite trimiterea unui pointer la o functie altei functii (ca parametru). De exemplu functia EnumWindows (aflata in API-ul Win), enumera toate ferestrele deschise si pentru fiecare fereastra apeleaza o functie pe care a primit-o ca paramatru. Figura urmatoare prezinta modul de declarare si folosire a delegatilor. public delegate void WorkDoneDelegate (string name); public class Supervisor private string m_name; public Supervisor (string name) m_name = name; public void EmployeeWorkDone (string name) Console.WriteLine (": has finished his work.", m_name, name); public class Employee public WorkDoneDelegate workdone; private string m_name; public Employee (string name) m_name = name; public void Work() //do work. if (workdone!= null) workdone(m_name); public class TestApplication

18 static void Main () Supervisor boss = new Supervisor ("Boss"); Employee worker = new Employee ("John"); worker.workdone = new WorkDoneDelegate (boss.employeeworkdone); worker.work(); Fig. : Declararea si folosirea delegatilor. La linia din figura anterioara am declarat tipul delegat. Desi pare ca am dclarat o functie WorkDoneDelegate este o clasa derivata din clasa System.MulticastDelegate. Compilatorul C# adauga codul necesar pentru aceasta, sintaxa de mai sus fiind doar syntactic sugar. De fapt, acest tip va contine o metoda care are signatura de la linia. Tipul Employee contine ca data membru o instanta de tipul WorkDoneDelegate. Inainte de terminarea executiei funtiei Work este apelat acest delegat (in cazul in nu care exista nimeni interesat ca acest worker si-a terminat treaba - adica testul de la linia intoarce false - nu se face nici un apel - nu exista listeneri). In exemplul anterior totul pare OK. Cand "John" isi va termina treaba seful va fi instiintat. Dar ce se inampla in cazul in care si presedintele vrea sa fie instiintat de acet lucru? Adaugand instructiunea worker.workdone = new WorkDoneDelegate (president.employeeworkdone)

19 nu se va obtine efectul dorit pentru ca este suprascris listenerul sefului, si seful nu va mai fi instiintat. Solutia este ca tipul Employee sa declasenze un eveniment atunci cand isi termina treaba. public class Employee... public event WorkDoneDelegate workdone;... public class TestApplication static void Main () Supervisor boss = new Supervisor ("Boss"); Supervisor president = new Supervisor ("President"); Employee worker = new Employee ("John"); worker.workdone += new WorkDoneDelegate (boss.employeeworkdone); worker.workdone += new WorkDoneDelegate (president.employeeworkdone); worker.work(); Fig. : Evenimente. Se observa ca acum dupa ce workdone a devenit eveniment adaugarea listenerilor nu se mai face folosind operatorul = ci operatorul +=. Asfel oricine doreste sa asculte la acel eveniment isi poate adauga propriul listener, fara sa interfereze cu ceilalti listeneri. Acum workdone va mentine o lista cu toti listenerii. In momentul in care este declansat acest eveniment este apelat fiecare listener din lista. Ordinea de apelare este aceeasi cu cea a adaugarii lor in lista. Eliminarea unui listener din lista se face folosind operatorul -=. ADO.Net ADO.Net este o multime de biblioteci orientate obiect care permit interactiunea cu sistemele de stocare a informatiilor. De obicei aceste sisteme sunt reprezentate de bazele de date, dar pot fi si fisiere text, fisiere XML, fisiere Excel, etc. In continuare ne vom ocupa de interactiunea cu bazele de date.

20 Un server de baze de date pe care se pot rula exemplele urmatoare este MSDE (Microsoft Desktop Engine ) si poate fi descarcat gratuit de pe site-ul Microsoft. Data Provider ADO.Net permite interactiunea cu diverse tipuri de baze de date. Totusi nu exista un singur set de clase care sa pemita acest lucru. Deoarece fiecare tip de baza de date foloseste alte protocoale trebuie sa gasim o metoda sa folosim protocolul corect in fiecare caz. Unele sisteme mai vechi folosesc protocolul ODBC, altele mai noi, folosesc protocolul OleDb, etc. ADO.Net furnizeaza metode asemanatoare de comunicare cu fiecare sistem de stocare a informatiilor, dar fiecare este implementata separat intr-o biblioteca. Aceste biblioteci sunt numite Data Providers si poarta numele protocolului sau sistemului cu care permite interactiunea. Tabelul urmator prezinta o lista cu o parte dintre acesti provideri. Provider Prefix API Descriere ODBC Data Provider OleDb Data Provider Odbc OleDb Data Sources care folosesc protocolul ODBC (in mod normal baze date mai vechi). Data Sources care expun interfata OleDb (Access, Excel, etc.) Oracle Data Provider Oracle Pentru bazele de date Oracle. SQL Data Provider Sql Pentru Microsoft Sql Server si MSDE Borland Data Provider Fig. : Data Providers Bdp Ofera acces la mai multe tipuri de baze de date cum ar fi Interbase, SQL Server, IBM DB si Oracle. Obiectele ADO.Net SqlConnection Primul lucru pe care un programator trebuie sa-l faca atunci cand vrea sa comunice cu o baza de date este sa deschide o conexiune la aceasta. Conexiunea "spune" celorlalte obiecte cu ce baza de date lucreaza. Conexiunea se ocupa de logica low-level asociata protocolului. Acest lucru usureaza foarte mult munca unui programator, acesta neavand decat sa instantieze obiectul conexiune, sa deschida conexiunea, sa faca operatiile de care are nevoie asupra bazei de date si apoi sa inchida conexiunea. Datorita modului in care celelalte clase ADO.Net sunt implementate uneori este nevoie de chiar mai putin decat atat.

21 Desi folosirea conexiunilor este mult simplificata in ADO.Net, programatorul trebuie sa le inteleaga foarte bine pentru a lua deciziile corecte. O conexiune este o resursa foarte importanta. Daca aplicatia va fi folosita pe o singura masina, asupra unei singure baze de date, importanta acestei resurse este mai putin clara. Dar daca este vorba de o aplicatie enterprise, folosita simultan de multi utilizatori asupra aceleiasi baze de date importanta conexiunii este mult mai clara. Fiecare conexiune reprezinta overhead pentru server si nu exista nici un server care sa suporte overhead infinit. Un obiect SqlConnection este la fel ca orice alt obiect C#. de cele mai multe ori declararea si instantierea se face in acelasi timp: SqlConnection sqlconn = new SqlConnection( "Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI"); Conectarea folosind un cont anume SqlConnection sqlconn = new SqlConnection( "Data Source=DatabaseServer;Initial Catalog=Northwind;User ID=YourUserID;Password=YourPassword"); //sau pentru OleDb OleDbConnection oledbconn = new OleDbConnection( "Provider=Microsoft.Jet.OLEDB..;Data Source=MyDatabase.mdb"); Fig. : Instantierea unui obiect de tipul SqlConnect Obiectul SqlConnection de mai sus este instantiat folosind un constructor care primeste ca parametru un string. Acest argument este stringul de conectare. Parametru al stringului de conectare Data Source Initial Catalog Integrated Security User ID Password Descriere Identifica masina server. Poate sa fie masina locala, numele unui computer din domeniu sau o adresa IP. Numele bazei de date. Setat la valoarea SSPI pentru a face conexiunea folosind contul windows al utilizatorului. Numele de utilizator configurat pe serverul SQL. Parola atasata utilizatorului de la User ID. Fig. : Stringurile de conectare contin perechi de tipul cheie/valoare despre modul in care se

22 va face conectarea la baza de date. Scopul instantierii unui obiect de tip SqlConnection este ca alte obiecte ADO.Net sa poata lucra cu baza de date. Alte obiecte, cum ar fi SqlDataAdapter si SqlCommand, au constructori care primesc obiectul conexiune ca parametru. Atunci cand se lucreaza cu o baza de date trebuie urmati pasii:. Instantierea unui obiect SqlConnection;. Deschiderea conexiunii;. Trimiterea conexiunii ca parametru altor obiecte ADO.Net;. Realizarea operatiunilor asupra bazei de date;. Inchiderea conexiunii. Exemplul urmator prezinta modul de folosire a unei conexiuni, pas cu pas: using System; using System.Data; using System.Data.SqlClient; // Prezinta modul de lucru cu un obiect SqlConnect class SqlConnectionDemo static void Main() //. Instantiaza conexiunea SqlConnection conn = new SqlConnection( "Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI"); SqlDataReader rdr = null; try Customers", conn); inregistrari //. Deschide conexiunea conn.open(); //. Trimite conexiunea altui obiect ADO.Net SqlCommand cmd = new SqlCommand("SELECT * FROM // //. Realizarea operatiunilor asupra bazei de date // // Obtine rezultatul interogarii rdr = cmd.executereader(); // Afiseaza valoarea CustomerID a fiecarei while (rdr.read())

23 Console.WriteLine (rdr[]); finally // inchide reader-ul if (rdr!= null) rdr.close(); //. Inchide conexiunea if (conn!= null) conn.close();

24 Fig. : Folosirea unui obiect obiect de tipul SqlConnect Asa cum se vede la linia deschiderea conexiunii se face apeland metoda Open() a instantei SqlConnection. Orice operatii asupra unei conexiuni care nu a fost inca deschisa genereaza o exceptie. Inainte de a folosi conexiunea trebuie sa instiintam celelalte obiecte ADO.Net despre care conexiune este vorba. Facem acest lucru la linia din figura, trimitand ca parametru constructorului SqlCommand obiectul conn. Orice operatie pe care o va face instanta cmd va folosi aceasta conexiune. Obiectul care foloseste conexiunea este cmd, de tipul SqlCommand. Acesta face o interogare in baza de date adupra tabelului Customers. Rezultatul este intors intr-un obiect de tipul SqlDataReader, iar in bucla while este afisat continutul primei coloane din fiecare rand din tabelul obtiunut (noi stim ca aceasta coloana este coloana CustomerID). Important de retinut este ca obiectele SqlCommand si SqlDataReader folosesc un obiect de tipul SqlConnection, si astfel stiu cu care baza de date sa lucreze. Atunci cand am terminat de folosit obiectul conn inchidem conexiune (linia ). Lasarea conexiunii deschise are implicatii grave in performanta aplicatiei. SqlCommand Obiectele de tipul SqlCommand permit specificare tipului de actiune asupra bazei de date. De exemplu se poate face o interogare, inserare, modificare sau stergere. Instantierea unui obiect de tipul SqlCommand se face ca la linia din figura. Aceste este modul cel mai des intalnit de instantiere. Ia ca parametru un string, care este comanda ce va fi executata, si o referinta la un obiect de tipul SqlConnect.

25 Atunci cand faci o interogare in baza de date, obtii un tabel rezultat care trebuie sa poata fi vizualizat. Pentru a obtine acest lucru folosind obiecte SqlCommand este folosita metoda ExecuteReader care intoarce un obiect de tipul SqlDataReader. Exemplul de mai jos arata modul de obtinere a unei instante SqlDataReader. //. Instantiaza o noua comanda cu o fraza select si o conexiune SqlCommand cmd = new SqlCommand ("SELECT CategoryName FROM Categories", conn); //. Executa interogarea SqlDataReader rdr = cmd.executereader(); Fig. : Realizarea unei interogari in baza de date. Pentru a insera valori intr-o baza de date trebuie apelata functia ExecuteNonQuery pe un obiect SqlCommand. Exemplul urmator arata modul de inserare intr-o baza de date. // pregateste stringul comanda string insertstring INTO Categories (CategoryName, Description) VALUES ('Miscellaneous', 'Whatever doesn''t fit elsewhere')"; //. Instantiaza o noua comanda SqlCommand cmd = new SqlCommand (insertstring, conn); //. Apeleaza ExecuteNonQuery pentru a executa comanda cmd.executenonquery(); Fig. : Inserarea intr-o baza de date. Modificarea si stergerea datelor dintr-o baza de date se face la fel ca si inserarea, dar ca punem primul parametru al constructorului SqlCommand pe valoarea corespunzatoare. Uneori avem nevoie dintr-o baza de date doar de o singura valoare, care poate fi suma, media, etc. inregistrarilor dintr-un tabel. Apeland ExecuteReader si apoi calculand acea valoare in program nu este cea mai eficienta metoda de a ajunge la rezultat. Cea mai buna metoda este sa

26 lasam baa de date sa faca ceea ce este necesar si sa intoarca o singura valoare. Acest lucru il face metoda ExecuteScalar: //. Instantiaza o noua comanda SqlCommand cmd = new SqlCommand ("SELECT count(*) FROM Categories", conn); //. Apeleaza ExecuteScalar pentru a executa comanda int count = (int) cmd.executescalar(); Fig. : Obtinerea unei singure valori. SqlDataReader Tipul SqlDataReader este folosit pentru a citi date in cea mai eficienta metoda posibila. NU poate fi folosit pentru scriere. O data citita o informatie nu mai poate fi citita inca o data. SqlDataReader citeste secvential date. Datprita faptului ca citeste doar inainte (forward-only) permite acestui tip de date sa fie foarte rapid in citire. Overhead-ul asociat este foarte mic (overhead generat cu inspectarea rezultatului si a scrierii in baza de date). Daca intr-o aplicatie este nevoie doar de informatii care vor fi citite o singura data, sau rezultatul unei interogari este prea mare ca sa fie retinut in memorie (caching) SqlDataReader este solutia cea mai buna. Obtinerea unei instante de tipul SqlDataReader este putin diferita de instantierea normala - trebuie apelata metoda ExecuteDataReader. Daca pentru instantiere este folosit operatorul new veti obtine un obiect cu care nu puteti face nimic pentru ca nu are o conexiune si o comanda atasate. SqlDataReader obtine datele intr-un stream secvential. Pentru a citi aceste informatii trebuie apelata metoda Read; aceasta citeste un singur rand din tabelul rezultat. Metoda clasica de a citi informatia dintr-un SqlDataReader este de a itera intr-o bucla while asa cum se vede in figura la liniile -. Metoda Read intoarce true cat timp mai este ceva de citit din stream. SqlDataReader implementeaza si indexatori (am obtinut prima coloana in exemplul din figura folosind indexatori numerici). In exemplul din figura nu este foarte clar pentru cineva care citeste codul ca acolo este vorba de coloana CustomerID (decat daca s-a uitat si in baza de date). Din aceasta cauza este preferata utilizarea indexatorilor de tipul string. In acest caz codul devine: // Obtine rezultatul interogarii rdr = cmd.executereader(); // Afiseaza valoarea CustomerID a fiecarei inregistrari while (rdr.read())

27 Console.WriteLine (rdr["customerid"]); Fig. : Folosirea indexatorilor asupra unui SqlDataReader. Valoeare indexului trebuie sa fie numele coloanei din tabelul rezultat. Indiferent ca se foloseste un index numeric sau unul de tipul string indexatorii intorc totdeauna un obiect de tipul object fiind necesara conversia. Dupa ce un reader nu mai este folosit acesta trebuie inchis apeland metoda Close (linia din figura ) SqlDataAdapter Pana acum am vazut cum putem efectua operatii asupra unei baze de date folosind obiecte de tipul SqlCommand si SqlDataReader. Problema cu aceasta abordare este ca pe parcursul intregii tranzactii conexiunea trebuie sa fie deschisa. Voi prezenta in continuare o metoda care nu necesita o conexiune permanenta la o baza de date - si anume folosind obiecte de tipul DataSet si SqlDataAdapter. Un DataSet este o reprezentare in memorie a unui data store (un sistem de stocare si obtinere a datelor). Un DataSet contine o multime de tabele asupra carora se pot executa diverse operatii. Un DataSet doar retine informatii si nu interactioneaza cu un data source. SqlDataAdapter este cel care se ocupa administrarea conexiunilor cu data source si ofera comportamentul de lucru in mod deconectat. SqlDataAdapter deschide o conexiune doar atunci cand este nevoie si o inchide imediat ce si-a terminmat treaba. De exemplu SqlDataAdapter realizeaza urmatoarele operatiuni atunci cand trebuie sa populeze un DataSet:. deschide conexiunea;. populeaza DataSet-ul;. inchide conexiunea; si urmatoarele operatiuni atunci cand trebuie sa faca update in baza de date:. deschide conexiunea;. scrie modificarile din DataSet in baza de date;. inchide conexiunea; Intre operatiunea de populare a DataSet-ului si cea de update conexiunile la data source sunt inchise. Intre aceste operatii in DataSet se poate scrie sau citi. Acestea sunt mecanismele de a lucra in mod deconectat. Pentru ca aplicatia tine deschisa conexiunea la baza de date doar atunci cand este necesar, devine mai scalabila.

28 Crearea unui obiect de tipul DataSet se face folosind operatorul new DataSet dscustomers = new DataSet (); Fig. : Instantierea unui DataSet. Constructorul unui DataSet nu necesita parametri. Exista totusi o supraincarcare a acestuia care primeste ca parametru un string, si este folosit atunci cand trebuie sa se faca o serializare a datelor intr-un fisier XML. In acest moment avem un DataSet gol si avem nevoie de un SqlDataAdapter pentru a-l popula. Un obiect SqlDataAdapter contine mai multe obiecte SqlCommand si un obiect SqlConnection pentru a citi si scrie date. SqlDataAdapter dacustomers = new SqlDataAdapter ("SELECT CustomerID, CompanyName FROM Customers", conn); Fig. : Instantierea unui SqlDataAdapter. Codul de mai sus creaza un obiect de tipul SqlDataAdapter, dacustomers. Comanda SQL specifica cu ce date va fi populat un DataSet, iar conexiunea conn trebuie sa fi fost creata anterior, dar nu si deschisa. Responsabilitatea deschiderii conexiunii revine adapterului in la apelul metodelor Fill si Update. SqlDataAdapter contine mai multe obiecte comanda: cate unul pentru inserare, update, delete si select. Prin intermediul constructorului putem instantia doar comanda de interogare. Instantierea celorlalte se face fie prin intermediul proprietatilor pe care le expune SqlDataAdapter, fie folosind obiecte de tipul SqlCommandBuilder. SqlCommandBuilder cmdbldr = new SqlCommandBuilder (dacustomers); Fig. : Instantierea unui SqlCommandBuilder. La initializarea unu SqlCommandBuilder am apelat un constructor care primeste ca parametru un adapter, pentru care vor fi construite comenzile. SqlCommandBuilder are limitari: nu poate construi decat comenzi simple si care se aplica unui singur tabel. Atunci cand trebui ca sa facem comenzi care vor folosi mai multe tabele este recomandata construirea separata a comnezilor si apoi atasarea lor adapterului folosind proprietati. O data ce avem cele doua instante, DataSet si SqlDataAdapter, putem sa populam DataSet-ul. dacustomers.fill (dscustomers, "Customers"); Fig. : Popularea unui DataSet.

29 Metoda Fill din exemplul anterior primeste doi parametri: un DataSet pe care-l va popula si un string care va fi numele tabelului (nu numele tabelului din baza de date, ci al tabelului rezultat in DataSet) care va fi creat. Scopul acestui nume este identificarea ulterioara a tabelului. In cazul in care nu este specificat nici un nume de tabel, acestea vor fi adaugate in DataSet sub numele Table, Table,... Un DataSet poate fi folosit ca data source pentru un DataGrid atat in ASP.Net cat si pentru cel din Windows Forms. Mai jos este prezentat un exemplu de legare a unui DataSet la un DataGrid: DataGrid dgcustomers = new DataGrid(); dgcustomers.datasource = dscustomers; dgcustomers.datamembers = "Customers"; Fig. : Legarea unui DataSet la un DataGrid. La linia setez un DataSet ca DataSource pentru un DataGrid. Acest lucru ii spune grid-ului ce informatii sa afiseze. Un grid stie sa afiseze mai multe tabele dintr-un DataSet, afisand un semn "+" permitandu-i utilizatorului sa aleaga care tabel sa fie afisat din cele disponibile. Pentru a suprima afisarea acelui semn "+" din GUI am setat si proprietatea DataMembers pe numele tabelului care va fi afisat. Numele tabelului este acelasi care l-am folosit ca parametru in apelul metodei Fill Dupa ce au fost facute modificari intr-un DataSet acestea trebuie scrise si in baza de date. Actualizarea se face prin apelul metodei Update dacustomers.update (dscustomers, "Customers"); Fig. : Actualizarea bazei de date. SqlParameter Atuci cand lucrati cu bazele de date veti avea nevoie, de cele mai multe ori sa filtrati rezultatul dupa diverse criterii. De obicei acest lucru se face in functii de niste criterii pe care utilizatorul le specifica (ex: vreti sa vedeti doar clientii anume oras). Dupa cum am vazut, o interogare asociata unui obiect SqlCommand este un simplu string. Cea mai simpla metoda de filtrare a rezultatelor este sa construiti acel string in mod dinamic, dar aceasta metoda nu este recomandata. // sa nu faceti asa!! SqlCommand cmd = new SqlCommand( "SELECT * FROM Customers WHERE city = '" + inputcity + "'";

30 Fig. : Un exemplu despre construirea nerecomandata a interogarii. Motivul pentru care o astfel de construire a unei interogari este nerecomandata este ca nu se poate avea incredere in input-ul utilizatorului. De obicei inputcity este introdus de utilizator intr-un TextBox. Folosind acel TextBox un utilizator rau intentionat poate sa introduca cod care poate duce la coruperea bazei de date, accesarea informatiilor confidentiale, etc. In loc sa construiti dinamic stringul de interogare folositi interogari cu parametri. Orice valoare pusa intr-un parametru nu va fi tratata drept cod SQL, ci ca valoare a unui camp, facand aplicatia mai sigura. Pentru a folosi interogari cu parametri urmati pasii:. Construiti stringul pentru SqlCommand folosind parametri;. Creati un obiect SqlParameter asignand valorile corespunzatoare;. Adaugati obiectul SqlParameter la obiectul SqlCommand, folosind proprietatea Parameters. Deci primul pas este construirea unui string de interogare parametrizat. Pentru a specifica locul unde vor fi inserate valorile parametrilor folositi Sintaxa este urmatoarea: //. Declarati un obiect SqlCommand care are stringul de interogare parametrizat SqlCommand cmd = new SqlCommand( "SELECT * FROM Customers WHERE city conn); Fig. : Obiect comanda cu stringul de interogare parametrizat. In contructorul din exemplul anterior stringul de interogare contine un Atunci cand comanda va fi executata in va fi inlocuit cu valoarea aflata in obiectul SqlParameter atasat. In exemplul din figura folosim o interogare cu un singur parametru, dar pot exista oricati parametri, si pentru fiecare din acestia trebuie sa asociem un obiect SqlParameter. In cazul in care pentru un parametru din stringul de interogare nu avem asociata o instanta de tipul SqlParameter vom obtine o eroare la rulare. Acelasi lucru se intampla si daca avem mai multe instante SqlParameter pentru un parametru. Acum trebuie sa declaram o instanta de tipul SqlParameter: //. Definiti parametrii utilizati in stringul de interogare SqlParameter param = new SqlParameter(); param.parametername = "@City"; param.value = inputcity; Fig. : Declararea unei instante de tipul SqlParameter. Si acum trebuie sa adaugam acet parametru obiectului comanda:

31 //. Adauga parametrii definiti obiectului comanda cmd.parameters.add(param); Fig. : Adaugararea parametrilor obiectului comanda.

Ghid pentru salvarea mail-urilor folosind un client de mail

Ghid pentru salvarea mail-urilor folosind un client de mail Ghid pentru salvarea mail-urilor folosind un client de mail Tutorialul de fata se adreseaza acelora care utilizeaza posta de mail a Universitatii Tehnice folosind unul din urmatoarii clienti de mail: 1.

More information

Chat (Chat Room) Setarea modului de vizualizare a mesajelor în camera de chat

Chat (Chat Room) Setarea modului de vizualizare a mesajelor în camera de chat Chat (Chat Room) Această unealtă poate fi utilizată pe orice site pentru a crea și utiliza camere de chat. Una dintre camere este cea implicită, dar deținătorul site-ului mai poate crea și altele. Rolul

More information

Instalarea MetaTrader Data Center

Instalarea MetaTrader Data Center Instalarea MetaTrader Data Center Introducere Una dintre tehnologiile inovative ale MetaQuotes Software Corp. este un server-proxy special pentru terminalele client denumit MetaTrader Data Center. Acest

More information

Controlul aplicaţiilor ce funcţionează pe sisteme Windows prin intermediul dispozitivelor Android

Controlul aplicaţiilor ce funcţionează pe sisteme Windows prin intermediul dispozitivelor Android Revista Română de Interacţiune Om-Calculator 5 (3) 2012, 81-96 MatrixRom Controlul aplicaţiilor ce funcţionează pe sisteme Windows prin intermediul dispozitivelor Android Cristina Şerban, Irina Grosu,

More information

5. LIMBAJUL SQL 5.1 Prezentare generală neprocedural declarativ extensii dialect implementarea limbajului SQL apelare directă modulară încapsulată

5. LIMBAJUL SQL 5.1 Prezentare generală neprocedural declarativ extensii dialect implementarea limbajului SQL apelare directă modulară încapsulată 5. LIMBAJUL SQL 5.1 Prezentare generală SQL (Structured Query Language) este în prezent, unul din cele mai puternice limbaje structurate pentru interogarea bazelor de date relaţionale. Pronunţia oficială:

More information

Road Traffic Information and Monitoring System

Road Traffic Information and Monitoring System Acta Technica Napocensis: Civil Engineering & Architecture Vol. 57, No. 1 (2014) Journal homepage: http://constructii.utcluj.ro/actacivileng Road Traffic Information and Monitoring System Mihai Iliescu

More information

PROGRAME DE CALCUL TABELAR. MS EXCEL 2010

PROGRAME DE CALCUL TABELAR. MS EXCEL 2010 PROGRAME DE CALCUL TABELAR. MS EXCEL 2010 Scopul protocolului - la sfârșitul acestui laborator veți avea următoarele cunoștințe: -să deschideți şi să salvați fișiere cu programul Microsoft Excel -să efectuați

More information

jeudi 22 octobre 15 Limbajul SQL

jeudi 22 octobre 15 Limbajul SQL Limbajul SQL Principiile SQL O interogatie se termina prin ; Instructiunile sunt in majuscule (conventie) Numele câmpurilor sau a tabelelor - scriere exacta Numele nu pot depasi 128 caractere 2/ 21 Gestiunea

More information

BAZE DE DATE LECTOR DR. ADRIAN RUNCEANU

BAZE DE DATE LECTOR DR. ADRIAN RUNCEANU Universitatea Constantin Brâncuşi din Târgu-Jiu Facultatea de Inginerie Departamentul de Automatică, Energie şi Mediu BAZE DE DATE LECTOR DR. ADRIAN RUNCEANU 03.03.2013 Curs 2 - BAZE DE DATE 2 Curs 2 Sistemul

More information

Quality Research by Using Performance Evaluation Metrics for Software Systems and Components

Quality Research by Using Performance Evaluation Metrics for Software Systems and Components 8 Revista Inforatica Econoică nr.3(39)/2006 Quality Research by Using Perforance Evaluation Metrics for Software Systes and Coponents Asist. Ion BULIGIU, prof.dr. Georgeta ŞOAVĂ Facultatea de Econoie şi

More information

Online stock trading platform

Online stock trading platform Revista Informatica Economică, nr.4 (40)/2006 77 Online stock trading platform Prof.dr. Ion LUNGU, prep. Vlad DIACONIŢA, asist. Adela BÂRA Catedra de Informatică Economică, A.S.E. Bucureşti The Internet

More information

Manual pentru Instalarea Certificatului Digital Calificat DigiSign

Manual pentru Instalarea Certificatului Digital Calificat DigiSign Manual pentru Instalarea Certificatului Digital Calificat DigiSign Versiunea 2.1 În vederea folosirii corespunzătoare a certificatului digital calificat emis de DigiSign, vă rugăm să urmați instrucțiunile

More information

Manual pentru Instalarea Certificatului Digital Calificat DigiSign

Manual pentru Instalarea Certificatului Digital Calificat DigiSign Manual pentru Instalarea Certificatului Digital Calificat DigiSign Versiunea 3.0 În vederea folosirii corespunzătoare a certificatului digital calificat emis de DigiSign, vă rugăm să urmați instrucțiunile

More information

SISTEMUL DE OPERARE WINDOWS XP

SISTEMUL DE OPERARE WINDOWS XP SISTEMUL DE OPERARE WINDOWS XP Sistemele de operare din familia Windows sunt sisteme de operare bazate pe o interfaţă grafică în care fiecare aplicaţie (program) care este deschisă primeşte drept zonă

More information

Modulul 4 Calcul tabelar

Modulul 4 Calcul tabelar Modulul 4 Calcul tabelar Primii pasi cu foile de calcul Pornirea unei aplicatii de calcul tabelar Pentru a porni aplicatia de calcul tabelar - Microsoft Excel deschideti meniul Start si din optiunea Programs

More information

II. JavaScript date şi operatori

II. JavaScript date şi operatori II. JavaScript date şi operatori Tipuri de date Date numerice Booleene String Null Numere întregi Virgulă mobilă -2 53... 2 53 ±1.7976931348e 308... ±5e -324 True, false Orice text Lipsa unei valori Secvenţe

More information

ASP.NET Programming with C# and SQL Server

ASP.NET Programming with C# and SQL Server ASP.NET Programming with C# and SQL Server First Edition Chapter 8 Manipulating SQL Server Databases with ASP.NET Objectives In this chapter, you will: Connect to SQL Server from ASP.NET Learn how to handle

More information

Profesor univ. dr. Maria BOLDEA Lector univ. dr. Bogdan Ion BOLDEA. EXCEL 2007 Teorie şi aplicaţii

Profesor univ. dr. Maria BOLDEA Lector univ. dr. Bogdan Ion BOLDEA. EXCEL 2007 Teorie şi aplicaţii Profesor univ. dr. Maria BOLDEA Lector univ. dr. Bogdan Ion BOLDEA EXCEL 2007 Teorie şi aplicaţii Editura MIRTON Timişoara, 2010 EXCEL 2007 Teorie şi aplicaţii CUPRINS Capitolul 1. PROGRAME DE CALCUL TABELAR

More information

S7-200. 1. Privire de ansamblu asupra automatelor programabile din familia SIMATIC. Fig 1: Privire de ansamblu

S7-200. 1. Privire de ansamblu asupra automatelor programabile din familia SIMATIC. Fig 1: Privire de ansamblu S7-200 1. Privire de ansamblu asupra automatelor programabile din familia SIMATIC. Fig 1: Privire de ansamblu 2. Prezentare generala Seria S7-200 reprezinta o linie de micro-plc (micro - programmable logic

More information

TL-WR841N TL-WR841ND Router Wireless N

TL-WR841N TL-WR841ND Router Wireless N TL-WR841N TL-WR841ND Rev: 3.0.3 1910010264 COPYRIGHT & TRADEMARKS Specificatiile pot fi modificate fara o notificare prealabila. este o marca inregistrata a TP-LINK TECHNOLOGIES CO., LTD. Alte marci si

More information

Applying TwoStep Cluster Analysis for Identifying Bank Customers Profile

Applying TwoStep Cluster Analysis for Identifying Bank Customers Profile BULETINUL UniversităŃii Petrol Gaze din Ploieşti Vol. LXII No. 3/00 66-75 Seria ŞtiinŃe Economice Applying TwoStep Cluster Analysis for Identifying Bank Customers Profile Daniela Şchiopu Petroleum-Gas

More information

MANUAL DE INSTALARE SI UTILIZARE

MANUAL DE INSTALARE SI UTILIZARE MANUAL DE INSTALARE SI UTILIZARE Sistem de alarma wireless cu apelator telefonic integrat PNI 2700A Pagina 1 Inainte sa conectati sau sa utilizati acest produs, va rugam sa cititi cu atentie aceste instructiuni

More information

Seminar 2. Diagrama SIPOC. Harta proceselor. Studiu de caz pentru un ansamblu de procese. Scop. Durată. Obiective CUPRINS. A. Diagrama SIPOC pag.

Seminar 2. Diagrama SIPOC. Harta proceselor. Studiu de caz pentru un ansamblu de procese. Scop. Durată. Obiective CUPRINS. A. Diagrama SIPOC pag. Seminar 2 Diagrama SIPOC. Harta proceselor. Studiu de caz pentru un ansamblu de procese Scop - Realizarea de către studenți a diagramei SIPOC și a hărții proceselor (HP) pentru o companie Durată Obiective

More information

DATA STORAGE METHOD FOR SYSTEMS WITH 8 BIT MICROPROCESSORS OR MICROCONTROLLERS

DATA STORAGE METHOD FOR SYSTEMS WITH 8 BIT MICROPROCESSORS OR MICROCONTROLLERS BULETINUL INSTITUTULUI POLITEHNIC DIN IAŞI Publicat de Universitatea Tehnică Gheorghe Asachi din Iaşi Tomul LIV (LVIII), Fasc. 3-4, 200 Secţia AUTOMATICĂ şi CALCULATOARE DATA STORAGE METHOD FOR SYSTEMS

More information

The Analysis of Currency Exchange Rate Evolution using a Data Mining Technique

The Analysis of Currency Exchange Rate Evolution using a Data Mining Technique Petroleum-Gas University of Ploiesti BULLETIN Vol. LXIII No. 3/2011 105-112 Economic Sciences Series The Analysis of Currency Exchange Rate Evolution using a Data Mining Technique Mădălina Cărbureanu Petroleum-Gas

More information

Arhitectura Sistemelor de Calcul

Arhitectura Sistemelor de Calcul UNIVERSITATEA DIN ORADEA FACULTATEA DE ȘTIINȚE Arhitectura Sistemelor de Calcul [suport de curs] Lect. univ. dr. Horea Oros [] [Lucrarea reprezintă suportul de curs pentru disciplina Arhitectura Sistemelor

More information

Interfata administrare webhosting Plesk 2007 RCS-RDS SA

Interfata administrare webhosting Plesk 2007 RCS-RDS SA Interfata administrare webhosting Plesk Interfata administrare webhosting Plesk 2 Cuprins 0 I. Introducere 1 Autentificarea... in Plesk 6 Daca ati uitat parola... 6 2 Familiarizarea... cu interfata Plesk

More information

Ghidul utilizatorului de software

Ghidul utilizatorului de software Ghidul utilizatorului de software Seria QL de la Brother Conţinutul acestui manual şi specificaţiile acestui produs sunt supuse modificărilor fără notificare. Brother îşi rezervă dreptul de a efectua modificări,

More information

ReviSal - Manual Utilizare

ReviSal - Manual Utilizare ReviSal - Manual Utilizare Aplicatia ReviSal este o componenta a aplicatiilor ITM si permite inregistrarea salariatilor si contractelor de munca ale acestora pentru un anumit angajator dupa adaugarea sa

More information

Decline in prolonged hormone replacement therapy in women aged 45 years or more, and impact of a centralised database tool

Decline in prolonged hormone replacement therapy in women aged 45 years or more, and impact of a centralised database tool 5 Review Article Decline in prolonged hormone replacement therapy in women aged 45 years or more, and impact of a centralised database tool MARTINA TEICHERT, FEDOR BAART AND PETER A.G.M. DE SMET REZUMAT

More information

SISTEMUL DE POŞTĂ ELECTRONICĂ E-MAIL

SISTEMUL DE POŞTĂ ELECTRONICĂ E-MAIL UNIVERSITATEA DUNĂREA DE JOS GALAŢI FACULTATEA DE INGINERIE ELECTRICĂ ŞI ŞTIINŢA CALCULATOARELOR SPECIALIZAREA: CALCULATOARE - Anul 5 - SISTEMUL DE POŞTĂ ELECTRONICĂ E-MAIL Îndrumător: Segal Cristina Student:

More information

A Practical Implementation of a Data Mining Technique

A Practical Implementation of a Data Mining Technique BULETINUL Universităţii Petrol Gaze din Ploieşti Vol. LIX No. 1/2007 51-56 Seria Matematică - Informatică - Fizică A Practical Implementation of a Data Mining Technique Elia Petre Universitatea Petrol-Gaze

More information

privat <office@hotelbeta-cluj.ro> - 0264/450290 Montag, den 01. Februar 2010 um 00:00 Uhr - Aktualisiert Montag, den 05. März 2012 um 10:18 Uhr

privat <office@hotelbeta-cluj.ro> - 0264/450290 Montag, den 01. Februar 2010 um 00:00 Uhr - Aktualisiert Montag, den 05. März 2012 um 10:18 Uhr Hotel Beta 2* Restaurant Hotel Beta Camera Hotel Beta Hostel Beta Type: Hotel Agent Name: privat Address: Str.Giordano-Bruno 1-3 Town: Cluj Postcode: 400243 Phone: 0264/455290 Email and Webadress: office@hotelbeta-cluj.ro,

More information

Studiu privind influenţa luminilor stroboscopice asupra percepţiei

Studiu privind influenţa luminilor stroboscopice asupra percepţiei Studiu privind influenţa luminilor stroboscopice asupra percepţiei Autori: Cruceanu Victor-Daniel Florea Raluca-Alexandra Matei Andrei-Daniel Mitroi Cristian-Andrei Stefan Madalin-Catalin Ungureanu Vladimir-Teodor

More information

Setare DVR pentru acces prin internet

Setare DVR pentru acces prin internet Setare DVR pentru acces prin internet Setarea retelei pentru accesul dintr-o alta locatie este un proces relativ usor, insa trebuie sa intelegeti conceptul de port forwarding iar experienta in calculatoare

More information

Cutting Systems. Dispozitive de siguranţă pentru gaze tehnice

Cutting Systems. Dispozitive de siguranţă pentru gaze tehnice Dispozitive de siguranţă pentru gaze tehnice Trei variante pentru o siguranţă optimă 2 Contaţi pe siguranţa certificată! Dispozitivele de siguranţă pentru gazele tehnice oferă o protecţie sigură împotriva

More information

THE NEED TO USE DATA MINING TECHNIQUES IN E-BUSINESS

THE NEED TO USE DATA MINING TECHNIQUES IN E-BUSINESS NECESITATEA UTILIZĂRII TEHNICILOR DATA MINING ÎN E-BUSINESS Claudia Elena Dinucă Facultatea de Economie şi Administrarea Afacerilor, Universitatea din Craiova clauely4u@yahoo.com THE NEED TO USE DATA MINING

More information

CORRELATIVE STUDY OF PMA SCORING IN A GROUP OF ROMANIAN PATIENTS SUBMITTED TO TOTAL HIP REPLACEMENT

CORRELATIVE STUDY OF PMA SCORING IN A GROUP OF ROMANIAN PATIENTS SUBMITTED TO TOTAL HIP REPLACEMENT Rev. Med. Chir. Soc. Med. Nat., Iaşi 2012 vol. 116, no. 3 SURGERY ORIGINAL PAPERS CORRELATIVE STUDY OF PMA SCORING IN A GROUP OF ROMANIAN PATIENTS SUBMITTED TO TOTAL HIP REPLACEMENT Carmen Grierosu 1,

More information

GHID DE UTILIZARE MICROSOFT OFFICE 2007. Versiunea documentului 2.0

GHID DE UTILIZARE MICROSOFT OFFICE 2007. Versiunea documentului 2.0 GHID DE UTILIZARE MICROSOFT OFFICE 2007 Versiunea documentului 2.0 septembrie 2008 CUPRINS Cuprins... 2 Tabela de Figuri... 9 1. Introducere... 11 2. Microsoft Office 2007... 11 2.1. FORMATAREA PAGINII...

More information

SISTEM INFORMATIC UNIC INTEGRAT AL ASIGURĂRILOR DE SĂNĂTATE DIN ROMÂNIA

SISTEM INFORMATIC UNIC INTEGRAT AL ASIGURĂRILOR DE SĂNĂTATE DIN ROMÂNIA SISTEM INFORMATIC UNIC INTEGRAT AL ASIGURĂRILOR DE SĂNĂTATE DIN ROMÂNIA Versiune document: 2.5 RELEASED Creat: 12.09.2007 Ultima actualizare: 30.01.2012 Acest document a fost realizat şi avizat de: Nume

More information

Romana. Manual de utilizare Telefon mobil GSM Model Q1 G3T

Romana. Manual de utilizare Telefon mobil GSM Model Q1 G3T Romana Manual de utilizare Telefon mobil GSM Model Q1 G3T 1 Romana Cuprins 1. Masuri de siguranta 5 1.1. PTR. SIGURANAT DVS 5 1.2. MASURI DE SECURITATE 6 1.3. INTRETINERE 6 2. Telefonul Dvs. 7 3. Utilizare

More information

INSTRUCŢIUNI PENTRU COMPLETAREA FORMULARULUI DS 160

INSTRUCŢIUNI PENTRU COMPLETAREA FORMULARULUI DS 160 INSTRUCŢIUNI PENTRU COMPLETAREA FORMULARULUI DS 160 IMPORTANT: acest formular se completează doar electronic, de la un PC care are o conexiune bună la internet. 1. INTRODUCERE + GENERALITĂŢI 2. INSTRUCŢIUNI

More information

Using IRDB in a Dot Net Project

Using IRDB in a Dot Net Project Note: In this document we will be using the term IRDB as a short alias for InMemory.Net. Using IRDB in a Dot Net Project ODBC Driver A 32-bit odbc driver is installed as part of the server installation.

More information

Website for Human Resources Management in a Public Institution Using Caché Object-Oriented Model

Website for Human Resources Management in a Public Institution Using Caché Object-Oriented Model Petroleum-Gas University of Ploiesti BULLETIN Vol. LXII No. 3/2010 85-94 Economic Sciences Series Website for Human Resources Management in a Public Institution Using Caché Object-Oriented Model Aurelia

More information

Construirea şi studiul unor probleme duale prin intermediul funcţiei de scalarizare

Construirea şi studiul unor probleme duale prin intermediul funcţiei de scalarizare Sinteza rezultatelor obţinute în cadrul contractului Funcţii de scalarizare şi multiplicatori Lagrange în probleme de optimizare ID 379-13/28.09.2007 -Raport 2009- Obiectivele contractului pe anul 2009

More information

The Flow of Funds Into and Out of Business

The Flow of Funds Into and Out of Business BULETINUL Universităţii Petrol Gaze din Ploieşti Vol. LX No. 2/2008 69-76 Seria Ştiinţe Economice The Flow of Funds Into and Out of Business Mihail Vincenţiu Ivan Petroleum-Gas University of Ploieşti,

More information

UNIVERSITATEA TEHNICĂ GHEORGHE ASACHI DIN IAŞI FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI

UNIVERSITATEA TEHNICĂ GHEORGHE ASACHI DIN IAŞI FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI UNIVERSITATEA TEHNICĂ GHEORGHE ASACHI DIN IAŞI FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI PROIECT DE DISERTAŢIE CONDUCĂTOR, CONFERENŢIAR DOCTOR INGINER, Luminiţa Scripcariu MASTERAND,

More information

INFOGRAFICĂ. Aplicatii cu AUTOCAD

INFOGRAFICĂ. Aplicatii cu AUTOCAD INFOGRAFICĂ Aplicatii cu AUTOCAD Infografică aplicaţii cu AUTOCAD 1 CUPRINS CAPITOLUL I INTRODUCERE.. 1.1. Lansarea programului AutoCAD şi descrierea ecranului de lucru 1.2. Crearea unui desen în AutoCAD

More information

Curs 3. CATIA V5R20. Prezentare generală. Generalităţi

Curs 3. CATIA V5R20. Prezentare generală. Generalităţi 1 Curs 3 CATIA V5R20. Prezentare generală. Generalităţi Fabricația asistată de calculator s-a dezvoltat ca răspuns la problema materializării unui model geometric existent pe planşeta proiectantului. Primul

More information

A Decision Tree for Weather Prediction

A Decision Tree for Weather Prediction BULETINUL UniversităŃii Petrol Gaze din Ploieşti Vol. LXI No. 1/2009 77-82 Seria Matematică - Informatică - Fizică A Decision Tree for Weather Prediction Elia Georgiana Petre Universitatea Petrol-Gaze

More information

Queuing Theory and Patient Satisfaction: An Overview of Terminology and Application in Ante- Natal Care Unit

Queuing Theory and Patient Satisfaction: An Overview of Terminology and Application in Ante- Natal Care Unit Petroleum-Gas University of Ploiesti BULLETIN Vol. LXII No. 1/2010 1-11 Economic Sciences Series Queuing Theory and Patient Satisfaction: An Overview of Terminology and Application in Ante- Natal Care

More information

Project manager s pocket guide. Ghidul de buzunar al managerului de proiect

Project manager s pocket guide. Ghidul de buzunar al managerului de proiect The Ninth International Conference 159 Project manager s pocket guide Ghidul de buzunar al managerului de proiect Codin CARAGEA OTP Bank, Bucharest, Romania e-mail: codin.caragea@otpbank.ro Gabriela POPA,

More information

UNIVERSITATEA DE VEST DIN TIMISOARA

UNIVERSITATEA DE VEST DIN TIMISOARA UNIVERSITATEA DE VEST DIN TIMISOARA FACULTATEA DE SOCIOLOGIE SI PSIHOLOGIE, Cu suportul Institutului Roman de Educatie a Adultilor Bvd. V. Parvan, 4, Timisoara tel/ fax: 0256-592167, 592320 sau 592658

More information

DESIGNING A DRIP IRRIGATION SYSTEM USING HYDROCALC IRRIGATION PLANNING PROIECTAREA UNUI SISTEM DE IRIGAŢII PRIN PICURARE UTILIZÂND PROGRAMUL HYDROCALC

DESIGNING A DRIP IRRIGATION SYSTEM USING HYDROCALC IRRIGATION PLANNING PROIECTAREA UNUI SISTEM DE IRIGAŢII PRIN PICURARE UTILIZÂND PROGRAMUL HYDROCALC DESIGNING A DRIP IRRIGATION SYSTEM USING HYDROCALC IRRIGATION PLANNING PROIECTAREA UNUI SISTEM DE IRIGAŢII PRIN PICURARE UTILIZÂND PROGRAMUL HYDROCALC Abstract: The competitive demand of available water

More information

Multi Channel AV Receiver (Receptor AV multicanal)

Multi Channel AV Receiver (Receptor AV multicanal) 4-287-974-11(1) (RO) Multi Channel AV Receiver (Receptor AV multicanal) Instrucţiuni de utilizare STR-DA5700ES AVERTISMENT Pentru a reduce riscul de incendiu, nu acoperiţi orificiul de ventilare al aparatului

More information

AD A O.N. ET E Access Data Object

AD A O.N. ET E Access Data Object ADO.NET Access Data Object ADO.NET Conjunto de classes que permitem o acesso à base de dados. Dois cenários: Connected Os dados provenientes da base de dados são obtidos a partir de uma ligação que se

More information

Furnizarea de servicii hosting la limita dintre content şi comunicaţii electronice

Furnizarea de servicii hosting la limita dintre content şi comunicaţii electronice Furnizarea de servicii hosting la limita dintre content şi comunicaţii electronice Monica Adriana Banu Consilier Juridic Octombrie 2007 La întrebarea ce înseamnă hosting se răspunde de cele mai multe ori

More information

GHID DE INSTRUCTIUNI PENTRU EMITEREA BILETELOR BLUE AIR

GHID DE INSTRUCTIUNI PENTRU EMITEREA BILETELOR BLUE AIR GHID DE INSTRUCTIUNI PENTRU EMITEREA BILETELOR BLUE AIR A. INTRODUCERE Compania BLUE AIR foloseste un sistem de rezervari pe internet Open Booking, care se remarca prin simplitate, usurinta de folosire

More information

Manual de utilizare Evolio Hi-Speed 5.0

Manual de utilizare Evolio Hi-Speed 5.0 Manual de utilizare Evolio Hi-Speed 5.0 Important Pentru ca acest produs sa functioneze in modul Navigatie este necesar sa aveti semnal la satelit. Se poate sa intampinati situatii, in casa sau in cladiri,

More information

Regresia liniară simplă

Regresia liniară simplă Regresia liniară simplă Introducere Să presupunem că suntem interesaţi să facem un studiu cu privire la relaţia dintre nivelul cunoştinţelor de matematică al studenţilor la psihologie şi rezultatele la

More information

Chair of Software Engineering. Java and C# in depth. Carlo A. Furia, Bertrand Meyer. C#: Persistence

Chair of Software Engineering. Java and C# in depth. Carlo A. Furia, Bertrand Meyer. C#: Persistence Chair of Software Engineering Carlo A. Furia, Bertrand Meyer C#: Persistence Outline C# Serialization Connecting to a RDBMS with ADO.NET LINQ (Language Integrated Queries) NoSQL Solutions for C# and Java

More information

Smartbox - Router wireless. Manual de utilizare

Smartbox - Router wireless. Manual de utilizare Smartbox - Router wireless Manual de utilizare CUPRINS 1 Avertismente și precauţii... 1-1 2 Conectarea cablurilor și instrucţiuni elementare... 2-1 2.1 Conectarea cablurilor...2-1 2.2 Pornirea HG658...2-2

More information

SOFTWARE RELIABILITY PREDICTION MODEL USING RAYLEIGH FUNCTION

SOFTWARE RELIABILITY PREDICTION MODEL USING RAYLEIGH FUNCTION U.P.B. Sci. Bull., Series C, Vol. 73, Iss. 4, 2011 ISSN 1454-234x SOFTWARE RELIABILITY PREDICTION MODEL USING RAYLEIGH FUNCTION Ana Maria VLADU 1 Predicţia fiabilităţii produselor software poate determina

More information

RESEARCH ON SOIL CONSOLIDATION USING CONSOLIDATION CELL UNDER CONSTANT RATE OF STRAIN

RESEARCH ON SOIL CONSOLIDATION USING CONSOLIDATION CELL UNDER CONSTANT RATE OF STRAIN BULETINUL INSTITUTULUI POLITEHNIC DIN IAŞI Publicat de Uniersitatea Tehnică Gheorghe Asachi din Iaşi Tomul LX (LXIV), Fasc. 4, 014 Secţia CONSTRUCŢII. ARHITECTURĂ RESEARCH ON SOIL CONSOLIDATION USING CONSOLIDATION

More information

DIGITIZAREA PARCELELOR AGRICOLE FERMIER CARE A SOLICITAT PLATA UNICĂ PE UNITATE DE SUPRAFAŢĂ (S.A.P.S.) IN CAMPANIILE ANTERIOARE (2007-2013)

DIGITIZAREA PARCELELOR AGRICOLE FERMIER CARE A SOLICITAT PLATA UNICĂ PE UNITATE DE SUPRAFAŢĂ (S.A.P.S.) IN CAMPANIILE ANTERIOARE (2007-2013) DIGITIZAREA PARCELELOR AGRICOLE FERMIER CARE A SOLICITAT PLATA UNICĂ PE UNITATE DE SUPRAFAŢĂ (S.A.P.S.) IN CAMPANIILE ANTERIOARE (2007-2013) 2014 IPA ON-LINE Este un instrument pus la dispozitia fermierilor

More information

NUMERICAL ANALYSIS OF COMPOSITE STEEL CONCRETE STRUCTURAL SHEAR WALLS WITH STEEL ENCASED PROFILES

NUMERICAL ANALYSIS OF COMPOSITE STEEL CONCRETE STRUCTURAL SHEAR WALLS WITH STEEL ENCASED PROFILES BULETINUL INSTITUTULUI POLITEHNIC DIN IAŞI Publicat de Universitatea Tehnică Gheorghe Asachi din Iaşi Tomul LV (LIX), Fasc. 3, 2009 Secţia CONSTRUCŢII. ĂRHITECTURĂ NUMERICAL ANALYSIS OF COMPOSITE STEEL

More information

Praktikum im Bereich Praktische Informatik Entwicklung eines Ray-Tracing Systems. computer graphics & visualization

Praktikum im Bereich Praktische Informatik Entwicklung eines Ray-Tracing Systems. computer graphics & visualization Praktikum im Bereich Praktische Informatik Entwicklung eines Ray-Tracing Systems Organizational Weekly Assignments + Preliminary discussion: Tuesdays 15:30-17:00 in room MI 02.13.010 Assignment deadline

More information

DESIGN OF AN EXPERT SYSTEM FOR EFFICIENT SELECTION OF DATA MINING METHOD

DESIGN OF AN EXPERT SYSTEM FOR EFFICIENT SELECTION OF DATA MINING METHOD BULETINUL INSTITUTULUI POLITEHNIC DIN IAŞI Publicat de Universitatea Tehnică Gheorghe Asachi din Iaşi Tomul LIV (LVIII), Fasc. 2, 2008 Secţia AUTOMATICĂ şi CALCULATOARE DESIGN OF AN EXPERT SYSTEM FOR EFFICIENT

More information

SEMANTIC CLASSIFICATION OF VERY HIGH RESOLUTION EARTH OBSERVATION IMAGE CONTENT BASED ON TOPOLOGICAL INFORMATION

SEMANTIC CLASSIFICATION OF VERY HIGH RESOLUTION EARTH OBSERVATION IMAGE CONTENT BASED ON TOPOLOGICAL INFORMATION U.P.B. Sci. Bull., Series C, Vol. 74, Iss. 3, 2012. ISSN 1454-234x SEMANTIC CLASSIFICATION OF VERY HIGH RESOLUTION EARTH OBSERVATION IMAGE CONTENT BASED ON TOPOLOGICAL INFORMATION Corina VĂDUVA 1, Inge

More information

Romanian entrepreneurial environment, key aspect in investment decision. Mediul intreprenorial în România, aspect cheie în decizia de investiţii

Romanian entrepreneurial environment, key aspect in investment decision. Mediul intreprenorial în România, aspect cheie în decizia de investiţii 24 The Ninth International Conference Romanian entrepreneurial, key aspect in investment decision Mediul intreprenorial în România, aspect cheie în decizia de investiţii Ciprian NICOLESCU The Bucharest

More information

Manual de instalare, programare si utilizare pentru sistemul de alarma wireless cu apelator GSM ARLS-GSM-004.

Manual de instalare, programare si utilizare pentru sistemul de alarma wireless cu apelator GSM ARLS-GSM-004. Manual de instalare, programare si utilizare pentru sistemul de alarma wireless cu apelator GSM ARLS-GSM-004. 1. Acest sistem inglobeaza ultimile noutati in proiectarea si fabricarea sistemelor de alarma.

More information

MANUAL PENTRU Windows 7

MANUAL PENTRU Windows 7 MANUAL PENTRU Windows 7 1 2 3 Mai mult de un miliard de oameni folosesc Microsoft Windows în fiecare zi. Când este utilizat în moduri cat mai semnificative, ca să şi câştige existenţa. Când este utilizat

More information

Analele Universităţii Constantin Brâncuşi din Târgu Jiu, Seria Economie, Nr. 1/2009

Analele Universităţii Constantin Brâncuşi din Târgu Jiu, Seria Economie, Nr. 1/2009 UTILIZAREA PRODUSULUI SOFTWARE MICROSOFT OFFICE EXCEL ÎN MODELAREA DECIZIEI FINANCIARE USING THE SOFTWARE MICROSOFT OFFICE EXCEL FOR FINANCIAL MODELING DECISION Lect. univ. dr. Bălăcescu Aniela Universitatea

More information

Project Portfolio Management Software

Project Portfolio Management Software Revista Informatica Economică, nr. 2 (38)/2006 115 Project Portfolio Management Software Lect. dr. Paul POCATILU Catedra de Informatică Economică Academia de Studii Economice, Bucureşti In order to design

More information

ASOCIAȚIA DE ACREDITARE DIN ROMÂNIA ORGANISMUL NAȚIONAL DE ACREDITARE

ASOCIAȚIA DE ACREDITARE DIN ROMÂNIA ORGANISMUL NAȚIONAL DE ACREDITARE ASOCIAȚIA DE ACREDITARE DIN ROMÂNIA ORGANISMUL NAȚIONAL DE ACREDITARE INSTRUCTIUNEA PENTRU VALIDAREA METODELOR UTILIZATE ÎN RENAR Cod: I-1 Ediția 1 Revizia: 0 DATA: 11.007 APROBAT: drd. ing. Cristian Dorin

More information

I. Rolul ratelor de dobândă în determinarea cursului de schimb. Paritatea ratelor de dobândă

I. Rolul ratelor de dobândă în determinarea cursului de schimb. Paritatea ratelor de dobândă I. Rolul ratelor de dobândă în determinarea cursului de schimb. Paritatea ratelor de dobândă A. Considerăm că rata dobânzii aferentă unor titluri de stat emise în U.K. este 10% anual. Cursul spot în prezent

More information

Aplicação ASP.NET MVC 4 Usando Banco de Dados

Aplicação ASP.NET MVC 4 Usando Banco de Dados Aplicação ASP.NET MVC 4 Usando Banco de Dados Neste exemplo simples, vamos desenvolver uma aplicação ASP.NET MVC para acessar o banco de dados Northwind, que está armazenado no servidor SQL Server e, listar

More information

Money and the Key Aspects of Financial Management

Money and the Key Aspects of Financial Management BULETINUL Universităţii Petrol Gaze din Ploieşti Vol. LX No. 4/2008 15-20 Seria Ştiinţe Economice Money and the Key Aspects of Financial Management Mihail Vincenţiu Ivan*, Ferenc Farkas** * Petroleum-Gas

More information

- suport de curs - INFORMATICĂ APLICATĂ ÎN PSIHOLOGIE FACULTATEA DE PSIHOLOGIE ŞI ŞTIINŢELE EDUCAŢIEI

- suport de curs - INFORMATICĂ APLICATĂ ÎN PSIHOLOGIE FACULTATEA DE PSIHOLOGIE ŞI ŞTIINŢELE EDUCAŢIEI FACULTATEA DE PSIHOLOGIE ŞI ŞTIINŢELE EDUCAŢIEI DISCIPLINA: Informatică aplicată în psihologie (disciplină obligatorie, de specialitate) PROGRAMUL DE STUDIU: PSIHOLOGIE CICLUL DE STUDII: I diplomă de licenţă,

More information

Curs 1 - Introducere.

Curs 1 - Introducere. Curs 1 - Introducere. 1. Enterpri Resource Planning (ERP). Definiții. Definiția 1: Un sistem ERP (Enterprise Resource Planning) reprezintă un complex de module software prin intermediul cărora se obține

More information

Crash Course in Java

Crash Course in Java Crash Course in Java Based on notes from D. Hollinger Based in part on notes from J.J. Johns also: Java in a Nutshell Java Network Programming and Distributed Computing Netprog 2002 Java Intro 1 What is

More information

ASSURING QUALITY IN IT SERVICE MANAGEMENT

ASSURING QUALITY IN IT SERVICE MANAGEMENT U.P.B. Sci. Bull., Series D, Vol. 70, No. 1,2008 ISSN 1454-2358 ASSURING QUALITY IN IT SERVICE MANAGEMENT Dan DUMITRIU 1 Adoptarea unui system informational este astazi crucial in mediul competitional

More information

HP Officejet Pro 8610 e-all-in-one/hp Officejet Pro 8620 e-all-in-one/hp Officejet Pro 8630 e-all-in-one. Ghidul utilizatorului

HP Officejet Pro 8610 e-all-in-one/hp Officejet Pro 8620 e-all-in-one/hp Officejet Pro 8630 e-all-in-one. Ghidul utilizatorului HP Officejet Pro 8610 e-all-in-one/hp Officejet Pro 8620 e-all-in-one/hp Officejet Pro 8630 e-all-in-one Ghidul utilizatorului Informaţii despre drepturile de autor 2014 Hewlett-Packard Development Company,

More information

Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies)

Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies) Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies) Duration of Course: 6 Months Fees: Rs. 25,000/- (including Service Tax) Eligibility: B.E./B.Tech., M.Sc.(IT/ computer

More information

OPEL INSIGNIA. Infotainment System

OPEL INSIGNIA. Infotainment System OPEL INSIGNIA Infotainment System Conţinut Introducere... 4 Aparatul radio... 30 CD player... 47 Intrarea AUX... 54 Portul USB... 56 Cadrul imaginilor digitale... 60 Sistemul de navigaţie... 63 Recunoaşterea

More information

Cuprins 1 Avertismente şi precauţii...1-1 2 Informaţii generale despre produs...2-1 3 Instalarea produsului şi operaţiuni iniţiale...

Cuprins 1 Avertismente şi precauţii...1-1 2 Informaţii generale despre produs...2-1 3 Instalarea produsului şi operaţiuni iniţiale... Cuprins 1 Avertismente şi precauţii... 1-1 2 Informaţii generale despre produs... 2-1 2.1 Aplicaţie de reţea... 2-1 2.2 Indicatori, interfeţe şi butoane... 2-2 2.2.1 Indicatori... 2-2 2.2.2 Interfeţe şi

More information

NOUTĂŢI PRIVIND MODIFICAREA POLITICII CONTABILE REFERITOARE LA METODA DE EVALUARE A ACTIVELOR IMOBILIZATE

NOUTĂŢI PRIVIND MODIFICAREA POLITICII CONTABILE REFERITOARE LA METODA DE EVALUARE A ACTIVELOR IMOBILIZATE NOUTĂŢI PRIVIND MODIFICAREA POLITICII CONTABILE REFERITOARE LA METODA DE EVALUARE A ACTIVELOR IMOBILIZATE Dr. Alexandrina Teodora BORFOAIA Direcţia de Legislaţie şi Reglementări Contabile Ministerul Finanţelor

More information

Quality Assurance Review for Higher Education

Quality Assurance Review for Higher Education for Higher Education The quality of the Romanian International Master s Programs. Liliana Donath Quality Assurance Review, Vol. 3, Nr. 2, Septembrie 2011, p. 147 154 Publicat de: Consiliul Agenþiei Române

More information

Duminica, 10 iulie Sambata, 16 iulie Varsta: 9 16 ani. COST: $300 CAD - all inclusive. Formular de Inregistrare

Duminica, 10 iulie Sambata, 16 iulie Varsta: 9 16 ani. COST: $300 CAD - all inclusive. Formular de Inregistrare Episcopia Ortodoxa Romana din America Vicariatul CANADEI Tabara de Vara Sf. Antonie cel Mare 2016 The Valley of the Mother of God Centru Crestin al Bisericii Ortodoxe Copte 953376 7th Line, Mono, Orangeville,

More information

Laborator Electronică Digitală Circuite Logice TTL şi CMOS. Circuite Logice TTL şi CMOS

Laborator Electronică Digitală Circuite Logice TTL şi CMOS. Circuite Logice TTL şi CMOS 1. Parametrii circuitelor logice Principalii parametrii ai unui circuit logic indicaţi în foaia de catalog (data sheet) sunt prezentaţi în fig. 1. Fig.1. Parametrii unui circuit logic În cele ce urmează:

More information

Using Principal Component Analysis in Loan Granting

Using Principal Component Analysis in Loan Granting BULETINUL Universităţii Petrol Gaze din Ploieşti Vol. LXII No. 1/2010 88-96 Seria Matematică - Informatică - Fizică Using Principal Component Analysis in Loan Granting Irina Ioniţă, Daniela Şchiopu Petroleum

More information

ANDROID GHID RAPID DE UTILIZARE Android Mobile Technology Platform

ANDROID GHID RAPID DE UTILIZARE Android Mobile Technology Platform ANDROID GHID RAPID DE UTILIZARE Android Mobile Technology Platform www.dualstore.ro 1 Bun venit la Android Despre Android Android este cea mai recentă versiune a sistemului de operare preferat din lume

More information

ASPECTS REGARDING THE HUMAN RESOURCES MANAGEMENT AT S.C. VINIFRUCT COPOU S.A. IAŞI

ASPECTS REGARDING THE HUMAN RESOURCES MANAGEMENT AT S.C. VINIFRUCT COPOU S.A. IAŞI ASPECTS REGARDING THE HUMAN RESOURCES MANAGEMENT Cercetări Agronomice în Moldova Vol. XLIII, No. 4 (144) / 2010 ASPECTS REGARDING THE HUMAN RESOURCES MANAGEMENT AT S.C. VINIFRUCT COPOU S.A. IAŞI Carmen

More information

Analele Universităţii Constantin Brâncuşi din Târgu Jiu, Seria Economie, Nr. 4/2010

Analele Universităţii Constantin Brâncuşi din Târgu Jiu, Seria Economie, Nr. 4/2010 UTILIZAREA METODEI COSTURILOR TINTA IN STABILIREA PRETURILOR Prep univ. drd. Aurelian Ionut CEAUSESCU Universitatea Constantin Brancusi din Targu-Jiu,FSEGA Conf.univ.dr. Cecilia VADUVA Universitatea Constantin

More information

Mobile Wi-Fi Modem. ghid de instalare

Mobile Wi-Fi Modem. ghid de instalare Mobile Wi-Fi Modem ghid de instalare bun venit Vă mulţumim că aţi ales Orange și Mobile Wi-Fi Modem. Dispozitivul dumneavoastră Mobile Wi-Fi Modem utilizează cea mai modernă tehnologie mobilă pentru a

More information

Access Data Object (cont.)

Access Data Object (cont.) ADO.NET Access Data Object (cont.) What is a Dataset? DataTable DataSet DataTable DataTable SqlDataAdapter SqlConnection OleDbDataAdapter Web server memory Physical storage SQL Server 2000 OleDbConnection

More information

Manual de utilizare. Telefon mobil GSM. Model M6 STARK

Manual de utilizare. Telefon mobil GSM. Model M6 STARK Manual de utilizare Telefon mobil GSM Model M6 STARK 1 2 CUPRINS 1. Masuri de siguranta.3 1.1. PTR. SIGURANTA DVS.3 1.2. MASURI DE SECURITATE 4 1.3. INTRETINERE 4 2. Telefonul Dvs.5 3. Utilizare...5 3.1.

More information

COMMUNICATION B2C COMMUNICATION IN ROMANIA, BASED ON CTA AND KEYWORD RESEARCH

COMMUNICATION B2C COMMUNICATION IN ROMANIA, BASED ON CTA AND KEYWORD RESEARCH B2C IN ROMANIA, BASED ON CTA AND KEYWORD RESEARCH Lako Cristian, Assistant, PhD Student, Petru Maior University of Tîrgu Mureş Abstract: The paper discusses B2C communication strategies, based on statistical

More information

DIGITIZAREA PARCELELOR AGRICOLE FERMIERI CARE NU AU MAI SOLICITAT PLATA UNICĂ PE UNITATE DE SUPRAFAŢĂ (S.A.P.S.) ÎN CAMPANIILE ANTERIOARE (2007-2013)

DIGITIZAREA PARCELELOR AGRICOLE FERMIERI CARE NU AU MAI SOLICITAT PLATA UNICĂ PE UNITATE DE SUPRAFAŢĂ (S.A.P.S.) ÎN CAMPANIILE ANTERIOARE (2007-2013) DIGITIZAREA PARCELELOR AGRICOLE FERMIERI CARE NU AU MAI SOLICITAT PLATA UNICĂ PE UNITATE DE SUPRAFAŢĂ (S.A.P.S.) ÎN CAMPANIILE ANTERIOARE (2007-2013) IPA ON-LINE Este un instrument pus la dispozitia fermierilor

More information

Tudor Damian IT Solutions Specialist Virtual Machine MVP tudy.tel

Tudor Damian IT Solutions Specialist Virtual Machine MVP tudy.tel IaaS, Private Cloud și Virtualizare Tudor Damian IT Solutions Specialist Virtual Machine MVP tudy.tel Agenda Private Cloud și IaaS - introducere Arhitecturi de virtualizare Soluții existente Type 1 (bare-metal)

More information