ziua1 iasi

Upload: kenshin

Post on 03-Mar-2016

233 views

Category:

Documents


0 download

DESCRIPTION

programming c#

TRANSCRIPT

  • 7/21/2019 Ziua1 Iasi

    1/64

    Limbajul C

  • 7/21/2019 Ziua1 Iasi

    2/64

    .NET este un cadru (Framework) de dezvoltare software unitar carepermite realizarea, distribuirea irularea aplicaiilordesktop Windows i

    aplicaiilorWEB.Tehnologia .NET pune laolaltmai multe tehnologii (ASP, XML, OOP,SOAP, WDSL, UDDI) i limbaje de programare (VB, C++, C#, J#)asigurnd, totodat, att portabilitatea codului compilat ntre diferitecalculatoare cu sistem Windows, ct ireutilizarea codului n programe,

    indiferent de limbajul de programare utilizat.Pentru a dezvolta aplicaii pe platforma .NET avem trei componenteeseniale:un set de limbaje (C#, Visual Basic .NET, J#, Managed C++, Perl etc);

    un set de medii de dezvoltare (Visual Studio .NET, Visio);

    o bibliotecde clase pentru crearea serviciilor Web, aplicaiilorWeb iaplicaiilordesktop Windows.

  • 7/21/2019 Ziua1 Iasi

    3/64

    Componenta .NET Framework st la baza tehnologiei .NET, este ultimainterfantre aplicaiile.NET isistemul de operare iactualmente conine:Limbajele C#, VB.NET, C++ iJ#. Pentru a fi integrate n platforma .NET, toateaceste limbaje respectnitespecificaiiOOP numite Common Type System(CTS). Ele au ca elemente de baz: clase, interfee,delegri, tipuri valoare ireferin,iar ca mecanisme:motenire,polimorfism itratarea excepiilor.

    Platforma comun de executare a programelor numit Common LanguageRuntime(CLR), utilizatde toate cele 4 limbaje. CTS face parte din CLR.Ansamblul de biblioteci necesare n realizarea aplicaiilor desktop sau Web,numit Framework Class Library (FCL).

  • 7/21/2019 Ziua1 Iasi

    4/64

    Etape:

    1. Editarea codului surs

    2. Compilareatransformarea n limbajul MSIL (Microsoft Intermediate LanguageCommon language runtime)

    Un program scris ntr-unul dintre limbajele .NET conform Common Language Specification(CLS) este compilat n Microsoft Intermediate Language (MSIL sau IL). Codul astfel obinut

    are extensia "exe", dar nu este direct executabil, ci respectformatul unic MSIL.3. Rularea transformarea n limbajul cod main corespunztor sistemului pe

    care va rula aplicaia(JITJust In Time)CLR include o mainvirtualasemntoarecu o mainJava, ce execut instruciunile ILrezultate n urma compilrii. Mainafoloseteun compilator special JIT (Just In Time).Compilatorul JIT analizeaz codul IL corespunztor apelului unei metode i produce codul

    mainadecvat ieficient. El recunoatesecvenelede cod pentru care s-a obinutdeja codulmain adecvat, permind reutilizarea acestuia fr recompilare, ceea ce face ca, peparcursul rulrii,aplicaiile.NET sfie din ce n ce mai rapide.Faptul c programul IL produs de diferitele limbaje este foarte asemntor are ca rezultatinteroperabilitatea ntre aceste limbaje. Astfel, clasele iobiectele create ntr-un limbaj specific.NET pot fi utilizate cu succes n altul.

  • 7/21/2019 Ziua1 Iasi

    5/64

    C# este un limbaj simplu, cu circa 80 de cuvinte cheie, i 12tipuri de date predefinite. El permite programarea structurat,modular i orientat obiectual, conform perceptelor moderne aleprogramriiprofesioniste.

    Limbajul C#

    n primul rnd pentru cne oferinstrumente pe care le putem folosii n alte programe, ofer acces uor la baze de date, permite

    realizarea desenelor sau a altor elemente grafice.Spaiul de nume System.Windows.Forms conine instrumente(controale) ce permit implementarea elementelor interfeeigrafice cuutilizatorul. Folosind aceste controale, puteiproiecta idezvolta rapidi interactiv, elementele interfeei grafice. Tot .NET v ofer clase

    care efectueaz majoritatea sarcinilor uzuale cu care se confruntprogramele icare plictisesc ifur timpul programatorilor, reducndastfel timpul necesar dezvoltriiaplicaiilor.

  • 7/21/2019 Ziua1 Iasi

    6/64

    Limbajul C# motenetesintaxa iprincipiile de programare dinC++. Utilizmo serie de tipuri noi de date sau funciunidiferite aledatelor din C++, iar n spiritul realizriiunor secvenede cod sigure

    (safe), unele funciuni au fost adugate (de exemplu, interfee idelegri),diversificate (tipul struct), modificate (tipul string) sau chiareliminate (motenireamultiplipointerii ctrefuncii).

    Unele funciuni (cum ar fi accesul direct la memorie folosindpointeri) au fost pstrate,dar secvenelede cod corespunztoarese

    considernesigure.

  • 7/21/2019 Ziua1 Iasi

    7/64

  • 7/21/2019 Ziua1 Iasi

    8/64

    O aplicaieC# este formatdin una sau

    mai multe clase, grupate n spaii denume(namespace). Este obligatoriu cadoar una din aceste clase sconinunpunct de intrare (entry point), ianume metoda (funcia) Main.

    Primele patru linii reprezint directivecare specific faptul c se vor folosiclase incluse n spaiul de numeSystem. n cexemplul nostru se vafolosi clasa Console folosit pentru

    operaiilede

    intrare/ieirei

    seapeleaz

    metoda WriteLine din aceast clas,pentru afiareamesajului dorit pe ecran.Orice program C# conine una sau maimulte clase.

    Spaiul

    nostru denume

  • 7/21/2019 Ziua1 Iasi

    9/64

    Spaiu de

    nume

    Clas

    Metod

    Cod

    n C#, un program poate fiprivit ca avnd mai multe straturi:avem cod n interiorul metodelor,care la rndul lor se afl ninteriorul claselor, aflate n interiorul

    namespaces-urilor.O clas este format din date imetode (funcii).

    Apelarea unei metode n cadrul clasei n care a fost definitaceasta presupune specificarea numelui metodei. Apelul unei metode

    definite n interiorul unei clase poate fi invocat i din interiorul alteiclase, caz n care este necesarspecificarea clasei iapoi a metodeiseparate prin punct. Dacn plus, clasa aparineunui spaiude numeneinclus n fiierul curent, atunci este necesar precizarea tuturorcomponentelor numelui: spaiu.clas.metod

    sau spaiu.spaiu.clas.metod etc.

  • 7/21/2019 Ziua1 Iasi

    10/64

    Cnd creai o aplicaie consol se

    genereaz un fiier cu extensia .cs.Redenumirea lui se poate realiza din fereastraSolution Explorer pe care o putei afia cuajutorul combinaiei de taste Ctrl+W sau dinmeniul View.

    Clasa (class), n termeni simplificai, reprezint principalul elementstructural ide organizare n limbajele orientate spre obiecte, grupnd datect ifunciicare prelucreazrespectivele date.Spaiul de nume (Namespaces): din raiuni practice, programele mari, suntdivizate n module, dezvoltate separat. Din acest motiv, existposibilitatea de aaprea identificatori cu acelai nume. Pentru a evita erori furnizate din acest

    motiv, fiecare mulimede definiiidintr-o librriesau program este grupat ntr-un spaiu de nume, existnd astfel posibilitatea de a avea ntr-un programdefiniiicu nume identic, dar situate n alte spaiide nume. n cazul n care, ntr-o aplicaie,unele clase sunt deja definite, ele se pot folosi importnd spaiiledenume care conindefiniiileacestora.

  • 7/21/2019 Ziua1 Iasi

    11/64

    Prin numedat unei variabile, clase, metode etc. nelegemo succesiunede caractere care

    ndeplineteurmtoarele

    reguli:

    numele trebuie snceapcu o litersau cu unul dintre caracterele _i@; primul caracter poate fi urmat numai de litere, cifre sau un caracter de

    subliniere;

    numele care reprezintcuvinte cheie nu poate fi folosit n alt scop dect acelapentru care a fost definit;

    cuvintele cheie pot fi folosite n alt scop numai dacsunt precedate de @ dounume sunt distincte dacdiferprin cel puinun caracter.

    n cazul numelor claselor, metodelor, a proprietilor, enumerrilor, interfeelor,spaiilorde nume, fiecare cuvnt care compune numele ncepe cu majuscul;

    n cazul numelor variabilelor, dac numele este compus din mai multe cuvinte,primul ncepe cu minuscul,celelalte cu majuscul.

  • 7/21/2019 Ziua1 Iasi

    12/64

    Cuvintele cheie sunt identificatoripredefinii

    cusemnificaie

    special pentru compilator. n general, aceste cuvinte nu pot fifolosite n programele pe care le scriem cu o alt semnificaie. ncazul n care, totui,dorim sle dmo altsemnificaieva trebui sle scriem cu simbolul @ca prefix.

    abstract as base bool breakbyte case catch char checkedclass const continue decimal defaultdelegate do double else enumevent explicit extern false finallyfixed float for foreach gotoif implicit in int interfaceinternal is lock long namespacenew null object operator out

    override params private protected publicreadonly ref return sbyte sealedshort sizeof stackalloc static stringstruct switch this throw truetry typeof uint ulong uncheckedunsafe ushort using virtual voidvolatile while

  • 7/21/2019 Ziua1 Iasi

    13/64

    n C# exist dou modaliti de declarare a constantelor: folosind

    const sau folosind modificatorul readonly. Constantele declarate cuconsttrebuie sfie iniializatela declararea lor.Exemple:const int pr_v1=3;

    readonly int x;

    Constantele declarate cu ajutorul lui readonly sunt doar variabilelemembre ale claselor, ele putnd fi iniializatedoar de ctreconstructoriiclaselor respective.

  • 7/21/2019 Ziua1 Iasi

    14/64

    Prin expresie se nelege o secven format din operatori i

    operanzi. Un operator este un simbol ce indic aciunea care seefectueaz, iar operandul este valoarea asupra creia se executoperaia.Tabelul de prioriti:

    Prioritate Tip Operatori Asociativitate

    0 Primar ( ) [ ] f() . x++ x-- new typeofsizeof checked unchecked ->

    1 Unar + - ! ~ ++x --x (tip) true false &

    sizeof

    2 Multiplicativ * / % 3 Aditiv + - 4 De deplasare > 5 Relaional < > = is as 6 De egalitate == != 7 AND (SI) logic & 8 XOR (SAU

    exclusiv) logic^

    9 OR (SAU) logic | 10 AND (SI)

    condiional&&

    11 OR (SAU)condiional

    ||

    12 Condiional(ternar)

    ?:

    13 De atribuire = *= /= %= += -= ^= &= = |=

  • 7/21/2019 Ziua1 Iasi

    15/64

  • 7/21/2019 Ziua1 Iasi

    16/64

    Pentru a avea control asupra modului de afiare a informaiei numerice sepoate folosi urmtoareaforma lui WriteLine():

    WriteLine("sir",var1,var2,, varn);unde " sir" este format din douelemente: caracterele afiabileobinuiteconinuten mesaje; specificatorii de format ce au forma general{nr_var, width:fmt} unde nr_var

    precizeaznumrulvariabilei (parametrului) care trebuie afiatncepnd cu

    0,width stabiletelimeacmpului de afiare,iar fmtstabileteformatul.Exemple:

    Exemplu de afiare a unui numr cu trei zecimale

  • 7/21/2019 Ziua1 Iasi

    17/64

    n C# existdoutipuri de conversii numerice: implicite; explicite.

    Conversia implicit se efectueaz (automat) doar dac nu esteafectatvaloarea convertit.

    Exemplu de efectuare a unei conversii implicite:

    static void Main(string[] args){

    byte a = 13; // byte intreg fara semn pe 8 bitibyte b = 20;long c; //intreg cu semn pe 64 bitic = a + b;

    Console.WriteLine(c);Console.ReadLine();

    }

  • 7/21/2019 Ziua1 Iasi

    18/64

    din n

    sbyte short, int, long, float, double, decimal

    byte short, ushort, int, uint, long, ulong, float, double, decimal

    short int, long, float, double, decimal

    ushort int, uint, long, ulong, float, double, decimal

    int long, float, double, decimal

    uint long, ulong, float, double, decimal

    long float, double, decimal

    char ushort, int, uint, long, ulong, float, double, decimal

    float double

    ulong float, double, decimal

  • 7/21/2019 Ziua1 Iasi

    19/64

    din n

    sbyte byte, ushort, uint, ulong, char

    byte sbyte, char

    short sbyte, byte, ushort, uint, ulong, char

    ushort sbyte, byte, short, char

    int sbyte, byte, short, ushort, uint, ulong, char

    uint sbyte,byte, short, ushort, int, char

    long sbyte, byte, short, ushort, int, uint, ulong, char

    ulong sbyte, byte, short, ushort, int, uint, long, char

    char sbyte, byte, short

    float sbyte, byte, short, ushort, int, uint, long, ulong, char, decimal

    double sbyte, byte, short, ushort, int, uint, long, ulong, char, float, decimal

    decimal sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double

  • 7/21/2019 Ziua1 Iasi

    20/64

    Conversia dintipul numeric n irde caractere serealizeaz cu metoda ToString aclasei Object

  • 7/21/2019 Ziua1 Iasi

    21/64

    Datoritfaptului cn C# toate tipurile sunt derivate din clasa Object(System.Object), prin conversiile boxing (mpachetare) i unboxing(despachetare) este permistratarea tipurilor valoare drept obiecte ireciproc.Prin conversia boxing a unui tip valoare, care se pstreaz pe stiv, seproduce ambalarea n interiorul unei instanede tip referin,care se pstreazn memoria heap, la clasa Object.

    Unboxingpermite conversia unui obiect n tipul valoare echivalent.

    Exemplu: Prin boxing variabila ieste asignata unui obiect ob.Se poate determina tipul pentru care s-afcut mpachetarea folosind operatorul is:

  • 7/21/2019 Ziua1 Iasi

    22/64

    Limbajul C# ofer posibilitatea efecturii de conversii ntre numere iiruri de caractere.Sintaxa pentru conversia numr n ir de caractere:numr ir + numr

    Pentru conversia invers, adic din ir de caractere n numr, sintaxaeste:ir int int.Parse(ir) sau Int32.Parse(ir)ir long long.Parse(ir) sau Int64.Parse(ir)ir double double.Parse(ir) sau Double.Parse(ir)

    ir float float.Parse(ir) sau Float.Parse(ir)

  • 7/21/2019 Ziua1 Iasi

    23/64

    Sintaxa limbajuluiConversii ntre numere i iruri de

    caractere

  • 7/21/2019 Ziua1 Iasi

    24/64

    Sintaxa limbajuluiTipuri de date

    n C# exist dou categorii de tipuri de date:

    tipuri valoaretipul simple: byte, char, int, floatetc.tipul enumerare - enumtipul structur - struct

    tipuri referintipul clas - classtipul interfa - interfacetipul delegat - delegate

    tipul tablou - arrayPentru tipurile valoare, declararea unei variabile implic i alocarea de spaiu.

    Pentru tipurile referin,declararea unei variabile nu implicautomat alocareade spaiu: iniial,referinele sunt null itrebuie alocatexplicit memorie pentruobiectele propriu-zise.

  • 7/21/2019 Ziua1 Iasi

    25/64

  • 7/21/2019 Ziua1 Iasi

    26/64

    Toate tipurile de datesunt derivate din clasaSystem.Object.Toate tipurile

    valoare sunt derivatedin clasaSystem.ValueType,derivat la rndul eidin clasa Object(alias pentruSystem.Object).Limbajul C# conine

    un set de tipuri

    predefinite (int, booletc.) i permitedefinirea unor tipuriproprii (enum, struct,class etc.).

    Sintaxa limbajuluiTipuri de date

    Tip Descriere Alias pentru tipul struct din

    spaiul de nume Systemobject rdcinaoricruitipstring secvende caractere Unicode System.Stringsbyte tip ntreg cu semn, pe 8 bii System.Sbyteshort tip ntreg cu semn, pe 16 bii System.Int16int tip ntreg cu semn pe, 32 bii System.Int32long tip ntreg cu semn, pe 64 de bii System.Int64byte tip ntreg frsemn, pe 8 bii System.Byteushort tip ntreg frsemn, pe 16 bii System.Int16uint tip ntreg frsemn, pe 32 bii System.Uint32ulong tip ntreg frsemn, pe 64 bii System.Uint64float tip cu virgulmobil,simplprecizie,

    pe 32 bii (8 pentru exponent, 24pentru mantis)

    System.Single

    double tip cu virgul mobil, dubl precizie,

    pe 64 bii (11 pentru exponent, 53pentru mantis)

    System.Double

    bool tip boolean System.Booleanchar tip caracter din setul Unicode, pe 16

    biiSystem.Char

    decimal tip zecimal, pe 128 bii (96 pentrumantis),28 de cifre semnificative

    System.Decimal

  • 7/21/2019 Ziua1 Iasi

    27/64

    Domeniul de valori pentru tipurile numerice:

    Sintaxa limbajuluiTipuri de date

    Tip Domeniul de valori

    sbyte -128; 127short -32768; 32767int -2147483648; 21447483647

    long -9223372036854775808; 9223372036854775807byte 0; 255ushort 0; 65535uint 0; 4294967295ulong 0; 18446744073709551615float -3.402823E+38; 3.402823E+38double -1.79769313486232E+308; 1.79769313486232E+308

    decimal -79228162514264337593543950335;79228162514264337593543950335

  • 7/21/2019 Ziua1 Iasi

    28/64

    O valoare se asigneaz dup urmtoarele reguli:

    Sintaxa limbajuluiTipuri de date

    Sufix Tip

    nu are int, uint, long, ulongu, U uint, ulongL, L long, ulongul, lu, Ul, lU, UL, LU, Lu ulong

    Exemplu:float g = 1.234F;double h = 1.234;long b = 13L; double i = 1.234D;ulong c = 12; bool cond1 = true;

    ulong d = 15U; bool cond2 = false;ulong e = 16L; decimal j = 1.234M;ulong f = 17UL;

  • 7/21/2019 Ziua1 Iasi

    29/64

    Tipul enumerare asemntor cu cel din C++, se definete de ctre utilizator.Acest tip permite utilizarea numelor care, sunt asociate unor valori numerice. Orice

    enum este derivat automat din clasa System.Enum, derivat dinSystem.ValueType.

    n cazul n care nu se specific tipul enumerriiacesta este considerat implicitint.

    [atribute][modificatori]enum NumeEnumerare [: Tip]

    {lista

    }

    Folosirea tipului enumerare impune urmtoareleobservaii: n mod implicit valoarea primului membru al enumerrii este 0, iar fiecare

    variabil care urmeaz are valoarea (implicit) mai mare cu o unitate dectprecedenta; valorile folosite pentru iniializritrebuie s facparte din domeniul de valori altipului enum;

    nu se admit referinecirculare.

    Sintaxa limbajuluiTipuri de date

  • 7/21/2019 Ziua1 Iasi

    30/64

    Sintaxa limbajuluiTipuri de date

  • 7/21/2019 Ziua1 Iasi

    31/64

    Instruciunea ifare sintaxa:

    if (conditie) Instructiuni_A;else Instructiuni_B;

    Exemplu:

    Sintaxa limbajului

    Instruciuni condiionale, de iteraie i de control

  • 7/21/2019 Ziua1 Iasi

    32/64

    Aplicaie:

    Sintaxa limbajuluiInstruciuni condiionale, de iteraie

    i de control

  • 7/21/2019 Ziua1 Iasi

    33/64

  • 7/21/2019 Ziua1 Iasi

    34/64

    n cazul instruciuniiswitchn C/C++, dacla finalul instruciunilordintr-o

    ramurcasenu existbreak, se trece la urmtorulcase.n C# se semnaleazeroare. Existiaici posibilitatea de a face verificrimultiple (n sensul de a trece la verificarea urmtoarei condiii din case)doar daccase-ul nu conineinstruciuni.Instruciuneaswitchadmite n C# variabilde tip irde caractere care s

    fie comparatcu irurilede caractere din case-uri.

    Evaluare expresie

    Sintaxa limbajului

    Instruciuni condiionale, de iteraie i de control

  • 7/21/2019 Ziua1 Iasi

    35/64

    Instruciunea whileare sintaxa:while (condiie) Instruciuni;

    Sintaxa limbajului

    Instruciuni condiionale, de iteraie i de control

    Aplicaii:1. Determinai cte cifre pare are un numr natural introdus de la

    consol?2. nlocuii cifrele pare ale unui numr natural introdus de la

    consol cu cifra impar imediat urmtoare. Numrul astfel

    obinutva fi afiattot la consol.

    Instruciuneadowhilearesintaxa:

    doInstruciuni;while(condiie);

  • 7/21/2019 Ziua1 Iasi

    36/64

    Instruciuneaforare sintaxa:for(iniializareCiclu; condiieFinal; pas)

    Instruciuni;

    Sintaxa limbajului

    Instruciuni condiionale, de iteraie i de control

    Programul urmtor verific dac un numr citit de la tastatur este sau

    nu prim.

  • 7/21/2019 Ziua1 Iasi

    37/64

    Aplicaie: Programul urmtor afieaz ultima cifr a numrului 2n,

    unde n este introdus de la consol.static void Main(string[] args)

    {int n, k;

    n = Convert.ToInt32(System.Console.ReadLine());

    if (n == 0) System.Console.WriteLine("ultima cifra este 1");

    else

    {

    k = n % 4;

    switch (k)

    {

    case 1: System.Console.WriteLine("ultima cifra este 2"); break;

    case 2: System.Console.WriteLine("ultima cifra este 4"); break;case 3: System.Console.WriteLine("ultima cifra este 8"); break;

    case 0: System.Console.WriteLine("ultima cifra este 6"); break;

    }}

    }

    Sintaxa limbajului

    Instruciuni condiionale, de iteraie i de control

  • 7/21/2019 Ziua1 Iasi

    38/64

    O instruciune nou, pe care o aduce limbajul C#, este

    foreach. Aceast instruciune enumer elementele dintr-o colecie,executnd o instruciune pentru fiecare element. Elementul care seextrage este de tip read-only, nu poate fi transmis ca parametru inicinuipoate schimba valoarea.Exemple:

    Sintaxa limbajului

    Instruciuni condiionale, de iteraie i de control

  • 7/21/2019 Ziua1 Iasi

    39/64

    Exemplu:

    mprirea unui ir de caractere n cuvinte. Se va afia numrul decuvinte i fiecare cuvnt n parte.

    Sintaxa limbajului

    Instruciuni condiionale, de iteraie i de control

  • 7/21/2019 Ziua1 Iasi

    40/64

    Instruciuneacontinuepermite reluarea iteraiei celei mai apropiateinstruciuni switch, while, dowhile, forsau foreach.

    Exemplu:

    Sintaxa limbajuluiInstruciuni condiionale, de iteraie

    i de control

  • 7/21/2019 Ziua1 Iasi

    41/64

    Instruciunile try-catch-finally i throwPrin excepiesenelegeun obiect carencapsuleazinformaiidespre situaiianormale. Ea se folosetepentru a semnala contextul n care apare o situaiespecial.Exemple: erori la deschiderea unor fiierea crornume este greit,mprirela0 etc. Aceste erori se pot manipula astfel nct programul s nu seprbueasc.

    Cnd o metodntlnete o situaie dintre cele menionate mai sus, se vaaruncao excepiecare trebuie sesizatitratat.C# poate arunca ca excepiiobiecte de tip System.Excepionsau derivate aleacestuia. Aruncarea excepiilorse face cu instruciuneathrowthrow new System.Exception();

    Prinderea itratarea excepiilorse face folosind un bloc catch. Pot exista mai

    multe blocuri catch, fiecare dintre ele prinde itrateazo excepiePentru a garanta cun anumit cod se va executa indiferent dactotul decurgenormal sau apare o excepie,acest cod se va pune n blocul finallycare se vaexecuta n orice situaie.

    Sintaxa limbajuluiInstruciuni condiionale, de iteraie

    i de control

  • 7/21/2019 Ziua1 Iasi

    42/64

    Sintaxa limbajului

    Instruciuni condiionale, de iteraie i de control

  • 7/21/2019 Ziua1 Iasi

    43/64

    Si t li b j l i T bl i

  • 7/21/2019 Ziua1 Iasi

    44/64

    La declararea unui tablou, se creeazo instana clasei .NET,System.Array. Compilatorul va traduce operaiile asupra

    tablourilor, apelnd metode ale clasei System.Array.Declararea unui tablou unidimensional se realizeazastfel:Tip[] nume;

    Prin aceastdeclarare nu se alocispaiupentru memorare.Pentru aceasta tabloul trebuie instaniat:

    nume = new Tip[NumarElemente];Se pot face n acelaitimp operaiilede declarare, instanierei

    iniializare:int[] v = new int[] {1,2,3};

    sauint[] v = {1,2,3};

    Sintaxa limbajuluiTablouri

  • 7/21/2019 Ziua1 Iasi

    45/64

    n cazul tablourilor cu mai multe dimensiuni facem distincie ntretablouri regulate itablouri neregulate (tablouri de tablouri)

    Declararea n cazul tablourilor regulate se face astfel:Tip[,] nume;

    iar instanierea:nume = new Tip[Linii,Coloane];

    Declararea instaniereaiiniializareaint[,] mat = new int[,] {{1,2,3},{4,5,6},{7,8,9}};

    sauint[,] mat = {{1,2,3},{4,5,6},{7,8,9}};

    Sintaxa limbajuluiTablouri

  • 7/21/2019 Ziua1 Iasi

    46/64

    n cazul tablourilor neregulate (jagged array)declararea se face:Tip [][] nume; //tablou neregulat cu doua dimensiuni

    iar instaniereaiiniializarea:Tip [][] nume = new Tip[][]

    {

    new Tip[] {sir_0},

    new Tip[] {sir_1},

    ...

    new Tip[] {sir_n}

    };

    sauTip [][] nume = {

    new Tip[] {sir_0},

    new Tip[] {sir_1},

    ...

    new Tip[] {sir_n}

    };

    Sintaxa limbajuluiTablouri

    S

  • 7/21/2019 Ziua1 Iasi

    47/64

    Sintaxa limbajuluiTablouri

    Si t li b j l i T bl i

  • 7/21/2019 Ziua1 Iasi

    48/64

    Sintaxa limbajuluiTablouri

    n cazul tablourilor cu mai multe dimensiuni facem distincientre tablouri

    regulateitablouri neregulate (tablouri de tablouri)Declarare n cazul tablourilor regulate bidimensionale:Tip[,] nume;

    Instaniere:nume = new Tip[Linii,Coloane];

    Acces:

    nume[indice1,indice2]

    Si t li b j l i T bl i

  • 7/21/2019 Ziua1 Iasi

    49/64

    Declarare n cazul tablourilor neregulate bidimensionale:Tip[][] nume;

    Instaniere:nume = new Tip[Linii],[];

    nume[0]=new Tip[Coloane1]

    ...

    nume[Linii-1]=new Tip[Coloane

    Linii-1

    ]Acces:nume[indice1][indice2]

    Exemple:int[][] mat = new int[][] {

    new int[3] {1,2,3},

    new int[2] {4,5},

    new int[4] {7,8,9,1}};

    sauint[][] mat={new int[3] {1,2,3},new int[2] {4,5},new int[4] {7,8,9,1}};

    Sintaxa limbajuluiTablouri

    Si t li b j l i T bl i

  • 7/21/2019 Ziua1 Iasi

    50/64

    Vectorii 3-D sunt utilizai frecvent n aplicaiile grafice.Exemple:int[,,] vect=new int[2,3,5];

    sauint [,,] vect=new int[6,2,4,8];

    Sintaxa limbajuluiTablouri

    Si t li b j l i i i d t

  • 7/21/2019 Ziua1 Iasi

    51/64

    Se definesc dou tipuri de iruri:regulate;de tip verbatim.Tipul regulat conine ntre

    ghilimele zero sau mai multe

    caractere, inclusiv secveneescape.

    Secvenele escape permitreprezentarea caracterelor carenu au reprezentare grafic

    precum i reprezentarea unorcaractere speciale: backslash,caracterul apostrof, etc.

    Sintaxa limbajuluiiruri de caractere

    Secven

    escape

    Efect

    \ apostrof\ ghilimele\\ backslash\0 null\a alarm\b backspace\f form feedpaginnou\n new linelinie nou\r carriage return nceput

    de rnd\t horizontal tab tab

    orizontal

    \u caracter unicode\v vertical tabtab vertical\x caracter hexazecimal

    Si t li b j l i i i d t

  • 7/21/2019 Ziua1 Iasi

    52/64

    n cazul n care folosim multe secveneescape, putem utiliza irurileverbatim. Aceste iruri pot s conin orice fel de caractere, inclusivcaracterul EOLN. Ele se folosesc n special n cazul n care dorim sfacem referiri la fiiereila regitri. Un astfel de irncepe ntotdeaunacu simbolul@naintea ghilimelelor de nceput.

    string a = "un sir de caractere";

    string b = "linia unu \nlinia doi";string c = @"linia unu

    linia doi";

    string d = "c:\\exemple\\unu.cs";

    string e = @"c:\exemple\unu.cs";

    Console.WriteLine(a); Console.WriteLine(b);Console.WriteLine(c); Console.WriteLine(d);

    Console.WriteLine(e); Console.ReadLine();

    Sintaxa limbajuluiiruri de caractere

    Si t li b j l i i i d t

  • 7/21/2019 Ziua1 Iasi

    53/64

    Funcii importante pentru iruri

    Sintaxa limbajuluiiruri de caractere

    Numele funciei Descriere

    CompareTo Compar valorile caracterelor individuale dindouiruri

    Concat Copiazun irla sfrituliruluicurent

    Equals Returneaz valoarea true dac dou iruriconinaceleaicaractere

    Insert Insereazun irn irulcurentRemove tergecaracterele specificate dintr-un ir

    Substring Returneazo parte din irulcurent

    ToLower ntoarce o copie a irului,scriscu litere mici

    ToUper ntoarce o copie a irului,scriscu litere mari

    Sinta a limbaj l i ir ri de caractere

  • 7/21/2019 Ziua1 Iasi

    54/64

    FunciaSubstring folosetedoi parametri, primul indicpoziiadin irde unde ncepe extragerea subirului, iar al doilea cte caractereextrage.string a, b = "Functii importante pentru siruri";

    a = b.Substring(8, 10);System.Console.WriteLine("a={0}", a);

    a = a.ToUpper();System.Console.WriteLine("a={0}", a);

    De data aceasta a-i apelat funcia ToUpper i a-i observatschimbrileproduse asupra variabilei a.Completnd n continuare funcia main cu urmtoarea linie de

    program, veiavea posibilitatea de a observa cum se apeleazicum

    lucreazfunciaEquals.if (Equals(a, b)) System.Console.WriteLine("sunt egale");

    else System.Console.WriteLine("nu sunt egale");

    Sintaxa limbajuluiiruri de caractere

    Sintaxa limbajului iruri de caractere

  • 7/21/2019 Ziua1 Iasi

    55/64

    Un string este o clas n C# . Variabilele clase din C# sunt tratate ca tipuri simple.Astfel transmiterea valorii lor ca parametri nu difer cu nimic fa de ceea ce tiai de ladatele simple de pn acum.

    Se observ din listingul de mai jos c o funcie poate returna un string la fel cumreturneaz orice tip de dat simpl.static void Main(string[] args)

    {string a = "prima valoare";schimb1(a);a = schimb2();

    System.Console.WriteLine(a);}static void schimb1(string b){

    System.Console.Write("am preluat ");System.Console.WriteLine(b);

    b = " a doua valoare";System.Console.WriteLine(b);}static string schimb2(){

    return (" ultima valoare");}

    Sintaxa limbajuluiiruri de caractere

    Sintaxa limbajului iruri de caractere

  • 7/21/2019 Ziua1 Iasi

    56/64

    Compararea irurilorde caracterePentru a compara douiruride caractere vom utiliza operatorii ==

    i!=.Definiie:dou iruri se consideregale dac sunt amndou null,

    sau dac amndou au aceeai lungime i pe fiecare poziie aucaractere respectiv identice. n caz contrar irurile se considerdiferite.Pentru a compara dou iruri, unul dintre ele trebuie convertit la

    object.

    Sintaxa limbajuluiiruri de caractere

    Exemplu

    string a = "Informatica", b = (string)a.Clone();Console.WriteLine("a==b: {0}", a == b);Console.WriteLine("(object)a==b:{0}",(object)a == b);

    Sintaxa limbajului iruri de caractere

  • 7/21/2019 Ziua1 Iasi

    57/64

    Concatenarea irurilorPentru a concatena irurile vom folosi operatorul +:

    string a = "Invat" + " " + " informatica";Inserare subir n irs1= "programarea este usoara";s2= "in C#";

    Console.WriteLine(s1.Insert(12, s2));Cutare nlocuire subirs1 = "programarea in C# este usoara"; s2 = s1.Replace("C#", "Pascal");

    Console.WriteLine(s2);

    Copiere irs1= "string; s2 = string.Copy(s1); Console.WriteLine(s2);Extragere subirs1 = "Stringurile din C# ofera facilitati puternice"; s2 = s1.Substring(16);Console.WriteLine(s2);Eliminare spaii nceput sfrit

    s1= " fara spatii de inceput si sfarsit " ; s2= s1.Trim();Console.WriteLine(s2);tergere subirs1 = "Stringurile din C# ofera facilitati puternice"; s2= s1.Remove(12,7);Console.WriteLine(s2);

    Sintaxa limbajuluiiruri de caractere

    Sintaxa limbajului iruri de caractere

  • 7/21/2019 Ziua1 Iasi

    58/64

    Alte funcii care permit prelucrarea irurilor de caractere

    Sintaxa limbajuluiiruri de caractere

    Funcia Descrierea

    string ToUpper() convertete toate caracterele irului lamajuscule

    string ToLower() convertete toate caracterele irului laminuscule

    int IndexOf(int c) returneaz indicele primei apariii acaracterului c n irint IndexOf(string s) returneaz indicele primei apariii a

    subiruluisstring Concat(string u,

    string v)concateneazirurileu iv

    string Substring(int index) returneazun nou ircare este un subiral iruluiinialncepnd cu indicele index

    string (char[] c) mparte un irn funciede delimitatorii c

    Sintaxa limbajului Stocarea informaiilor n fiiere

  • 7/21/2019 Ziua1 Iasi

    59/64

    Administrarea fiierelor

    Tehnica de citire iscriere a datelor n idin fiiere,utilizatpentru apstraaceste informaii,reprezintadministrarea fiierelor.Pentru accesarea unui fiierde pe disc se folosesc funciidin spaiul

    de nume System.IO.

    n acest spaiu exist mai multe clase: File, StreamWriter,

    BinaryReader iBinaryWriter.Aceste clase sunt folosite pentru operaiilede intrare-ieirecu fiiere.Obiectul File este o reprezentare a unui fiierde pe disc, iar pentru a-l

    utiliza trebuie sl conectmla un flux(stream).Pentru a scrie datele pe disc, se ataeaz unui flux un obiect File.

    Astfel se face administrarea datelor.Limbajul C# oferdoutipuri de fiiere: fiiere text(stocheaztext) i

    fiierebinare(stocheazdate n format binar valid).

    Sintaxa limbajuluiStocarea informaiilor n fiiere

    Sintaxa limbajului Stocarea informaiilor n fiiere

  • 7/21/2019 Ziua1 Iasi

    60/64

    Scierea icitirea datelor din fiieretext

    Fiierelede ieirenecesitutilizarea unui obiect StreamWriter.FunciaCreateText(), ce face parte din clasa File, deschide un fiieri

    creeazobiectul StreamWriter.

    Sintaxa limbajuluiStocarea informaiilor n fiiere

    Sintaxa limbajului Stocarea informaiilor n fiiere

  • 7/21/2019 Ziua1 Iasi

    61/64

    Exemplustring[] a = { "primul", " fisier", "creat", "de mine", };//deschiderea unui fisier si atasarea lui la un fluxStreamWriter outputFile = File.CreateText("dana1.txt");foreach (string b in a){

    outputFile.WriteLine(b);//scrierea textului in fisier

    }outputFile.Close();

    //deschidem din nou fisierul de data aceasta pentru a citi din elStreamReader inputFile = File.OpenText("dana1.txt");//definim o variabila string care va parcurge fisierul pana la finalstring x;while ((x = inputFile.ReadLine()) != null)

    {System.Console.WriteLine(x);

    }inputFile.Close();

    Sintaxa limbajuluiStocarea informaiilor n fiiere

    Sintaxa limbajului Stocarea informaiilor n fiiere

  • 7/21/2019 Ziua1 Iasi

    62/64

    Scrierea icitirea datelor din fiierebinare

    Fiierelebinare pot conineorice numrbinar valid. Datele majoritiiprogramelor sunt stocate n acest format binar.

    Dac la fiierele text tipul de flux folosit era StreamWriter, la celebinare, pentru scrierea datelor programul creeazun obiect FileStream,la care trebuie ataatiun obiect BinaryWriter.

    Sintaxa limbajuluiStocarea informaiilor n fiiere

    Sintaxa limbajului Stocarea informaiilor n fiiere

  • 7/21/2019 Ziua1 Iasi

    63/64

    Exemplu:{int i, j, x;int[,] a = new int[10, 10];

    //se creeaza un fisier si un fluxFileStream f = new FileStream("dana2.dat", FileMode.CreateNew);

    // se creeaza un scriitor binar si il ataseaza la flux

    //acesta traduce datele fluxului in format binar

    BinaryWriter outputFile = new BinaryWriter(f);

    for (i = 1; i

  • 7/21/2019 Ziua1 Iasi

    64/64

    //incepe citirea datelor din fisierul creat anterior

    //se creeaza un obiect FileStream

    FileStream g = new FileStream("dana2.dat", FileMode.Open);//se creeaza un obiect BinaryReader

    BinaryReader inputFile = new BinaryReader(g);

    bool final;

    for (final = false, i = 1; !final; i++)

    { for (final = false, j = 1; !final; j++)

    {//se apeleaza functia PeekChar care face parte din clasa BinaryReader si examineazaurmatorul caracter din flux, daca acesta este diferit de -1 atunci se executa citireaurmatorului caracter din flux prin functia ReadInt32()

    if (inputFile.PeekChar() != -1)

    {

    x = inputFile.ReadInt32();

    System.Console.Write("{0} ", x);

    }

    }

    System.Console.Write("\n");

    }

    inputFile.Close(); g.Close();}

    Sintaxa limbajuluiStocarea informaiilor n fiiere