c i .net framework 4.0 preview

Upload: markoosijek

Post on 05-Jul-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/16/2019 C i .NET Framework 4.0 Preview

    1/22

  • 8/16/2019 C i .NET Framework 4.0 Preview

    2/22

    autor:

    Silvije Davila; Marko Petričević

    urednica:

    Ana Rutar, prof.

    naslov:

    C# I .NET FRAMEWORK 4.0

    stručni recezent:

    mr. sc. Goran Đambić 

    lektorica:

    Anka Munić 

    grafički urednik:

    Krešimir Pletikosa, ACE 

    nakladnik:

    Algebra d.o.o., 2010.

    za nakladnika:

    mr.sc. Mislav Balković 

    mjesto i godina izdavanja:

    Zagreb, 2010

    Sva prava pridržana. Niti jedan dio oveknjige ne smije se reproducirati ili prenositiu bilo kojem obliku, niti na koji način.Zabranjeno je svako kopiranje, citiranje teupotreba knjige u javnim i privatnimedukacijskim organizacijama u svrhuorganiziranih školovanja, a bez pisanogodobrenja nositelja autorskih prava.

    Copyright © Algebra d.o.o.

    CIP zapis dostupan u računalnom kataloguNacionalne i sveučilišne knjižnice u Zagrebu

    pod brojem 744148

     

    ISBN 978-953-322-034-5 

  • 8/16/2019 C i .NET Framework 4.0 Preview

    3/22

    Sadržaj: 1. Poglavlje:

     ...... UVOD ...................................................................................................................... 3 1.1  Kratki pregled razvoja programskih jezika ........................................................................ 4 

    1.1.1  Strojno zavisni jezici ..................................................................................................... 4 1.1.2

     

    Programski jezici više razine ........................................................................................ 5 

    1.2 

     Algoritmi ............................................................................................................................ 6 

    1.2.1 

    Rješavanje problema primjenom računala ................................................................... 6 

    1.2.2 

    Pojam i karakteristike algoritma ................................................................................... 7 

    2. Poglavlje: ...... OBJEKTNO ORIJENTIRANO PROGRAMIRANJE ............................................... 9 

    2.1 

    Osnovni principi ............................................................................................................... 10 

    2.2 

    Klasa, objekt, struktura.................................................................................................... 11 

    2.2.1 

    Klasa, objekt (svojstva, metode – događaji, operatori) .............................................. 11 

    2.2.2 

    Strukture ..................................................................................................................... 14 

    2.2.3 

    Osnovni tipovi podataka ............................................................................................. 14 

    2.2.4  Deklaracija i definicija varijable .................................................................................. 17 2.2.5

     

    Izrazi, operatori, konverzije ........................................................................................ 19 

    2.2.6 

     Aritmetički operatori ................................................................................................... 19 

    2.2.7 

    Relacijski operatori ..................................................................................................... 20 

    2.2.8 

    Logički operatori ......................................................................................................... 21 

    2.2.9 

    Tekstualni operator .................................................................................................... 22 

    2.2.10 

    Operator dodjele ................................................................................................... 22 

    2.2.11 

    Konverzije podataka .............................................................................................. 24 

    3. Poglavlje: 

    ...... 

    UVOD U .NET FRAMEWORK .............................................................................. 27 

    3.1 

    Osnovni principi ............................................................................................................... 28 

    3.2 

    Hello World – pisanje prve aplikacije .............................................................................. 29 

    4. Poglavlje: ...... VISUAL STUDIO .NET 2010 (VS2010) ................................................................ 31 

    4.1 

    Visual studio .NET 2010 (VS2010) – pokretanje aplikacije ............................................. 32 

    4.2  Hello World – pisanje aplikacije u VS2010 ..................................................................... 33 4.3  Objašnjenje sučelja ......................................................................................................... 34 

    4.3.1 

    InteliSense ................................................................................................................. 34 

    4.3.2 

    Solution Explorer ........................................................................................................ 36 

    4.3.3 

    Ostali okviri (paneli) u VS2010 ................................................................................... 36 

    5. Poglavlje: 

    ...... 

    OSNOVNI TIPOVI PODATAKA ........................................................................... 37 

    5.1 

    Varijable .......................................................................................................................... 38 

    5.1.1 

    Matematički operatori ................................................................................................. 38 

    5.1.2 

    Varijable ..................................................................................................................... 38 

    5.1.3 

    Učitavanje podataka s tipkovnice ............................................................................... 39 

    5.1.4 

    Metoda Parse ............................................................................................................. 40 

    5.2 

    Uvjetno grananje ............................................................................................................. 41 

    5.2.1  Naredba If ................................................................................................................ 41 5.2.2

     

    Naredba Switch .......................................................................................................... 44 

    5.2.3 

    Strukturirano upravljanje greškama ........................................................................... 46 

    5.2.4  Logički operatori ......................................................................................................... 47 5.2.5

     

    Ostatak pri cjelobrojnom dijeljenju ............................................................................. 49 

    5.3 

    Cikličke petlje .................................................................................................................. 49 

    5.3.1 

    Petlja For .................................................................................................................... 50 

    5.3.2 

    Petlja While ................................................................................................................ 52 

    6. Poglavlje: 

    ...... 

    NIZOVI .................................................................................................................. 55 

    6.1 

    Nizovi (Arrays) ................................................................................................................. 56 

    6.2 

    Objekt ArrayList ............................................................................................................... 57 

    6.2.1 

    Petlja Foreach ............................................................................................................ 58 

    7. Poglavlje: 

    ...... 

    PROCEDURE (METODE) .................................................................................... 61 7.1  Procedure (metode) ........................................................................................................ 62 

    7.2  Potprogrami ..................................................................................................................... 63 7.3

     

    Funkcije ........................................................................................................................... 66 

    8. Poglavlje: ...... OBJEKTI ............................................................................................................... 69 

    8.1 

    Svojstva, metode, događaji (Properties, Methods, Events) ............................................ 70 

    8.1.1 

    Objekti ........................................................................................................................ 70 

    8.1.2 

    Klase .......................................................................................................................... 70 

    8.1.3 

    Svojstva (Properties) .................................................................................................. 74 

    8.2 

    Doseg varijabli ................................................................................................................. 80 

    8.2.1 

    Metode Static ............................................................................................................. 81 

    8.2.2 

    Prosljeđivanje varijabli po vrijednosti i po referenci.................................................... 83 

    8.3 

    Nasljeđivanje ................................................................................................................... 85 

    8.3.1 

    Premošćivanje (override) ........................................................................................... 88 

    8.3.2 

    Kolekcija objekata ...................................................................................................... 88 

    8.4 

    ClassLibrary (dll) ............................................................................................................. 90 

    8.4.1 

    Kreiranje ClassLibrary projekta .................................................................................. 90 

    8.5 

    Događaji .......................................................................................................................... 93 

  • 8/16/2019 C i .NET Framework 4.0 Preview

    4/22

    9. Poglavlje: 

    ...... 

    RAD S TEKSTOM ................................................................................................ 97 

    9.1 

    Klasa String ..................................................................................................................... 98 

    9.1.1 

    Metode ToLower i ToUpper ....................................................................................... 98 

    9.1.2 

    Metoda SubString ...................................................................................................... 98 

    9.1.3 

    Metoda Replace ......................................................................................................... 98 

    9.1.4  Metoda Split .............................................................................................................. 99 

    9.1.5 

    Svojstvo Length .......................................................................................................... 99 

    9.2 

    String, char ...................................................................................................................... 99 

    10. Poglavlje: 

    .... 

    DATOTEKE ........................................................................................................ 101 

    10.1 

    System.IO namespace .................................................................................................. 102 

    10.1.1 

    Klase FileStream, StreamReader, StreamWriter ................................................ 102 

    10.1.2 

    Klase Path, File, Directory ................................................................................... 104 

    11. Poglavlje: 

    .... 

    DATUMI .............................................................................................................. 107 

    11.1  DateTime struktura........................................................................................................ 108 11.1.1  Uspoređivanje datuma ........................................................................................ 108 11.1.2

     

    Važnije metode ................................................................................................... 109 

    11.2 

    TimeSpan struktura ....................................................................................................... 109 

    12. Poglavlje: .... ENUMERACIJE .................................................................................................. 113 

    12.1 

    Enumeracije .................................................................................................................. 114 

    13. Poglavlje: 

    .... 

    INTERFEJSI ....................................................................................................... 115 

    13.1 

    Interfejsi ......................................................................................................................... 116 

    14. Poglavlje: 

    .... 

    POPIS KLJUČNIH RIJEČI ................................................................................. 119 

  • 8/16/2019 C i .NET Framework 4.0 Preview

    5/22

    U ovom poglavlju naučiti ćete:

      Osnovne principe objektnog programiranja

      Što je klasa, objekt, struktura?

    2. Poglavlje: OBJEKTNO ORIJENTIRANOPROGRAMIRANJE

  • 8/16/2019 C i .NET Framework 4.0 Preview

    6/22

     Str.10§  §2. Poglavlje: OBJEKTNO ORIJENTIRANO PROGRAMIRANJE 

    Tel: 01 2332 861, Fax: 01 2305 004 e-mail: [email protected]  §  www.algebra.hr   § 

    2.1 Osnovni principi

    Kod objektno orijentiranog programiranja programer polazi od objekata izrealnoga svijeta. Njegov je posao napraviti model tog objekta u programu.U tom modeliranju osnovni je alat apstrakcija. Apstrakcija je kontrolirano

    uključivanje i isključivanje nekih detalja o objektima koji su bitni, odnosnonisu bitni u programu. Ti objekti iz realnoga svijeta posjeduju stati č ke  idinami č ke osobine. Uzmimo primjer automobila. Za njega možemo reći daima određenu boju, određen broj sjedišta, određenu kubikažu – stati č keosobine. Međutim, automobil se može kretati, stati, okrenuti se – dinami č keosobine. Vidimo, dakle, da su akcije koje objekt može napraviti zapravosastavni dio samog objekta. Objektno orijentirano programiranje vodi seovim činjenicama, pa stoga objekti imaju svoja unutrašnja stanja –svojstva, ali i skup akcija – metoda  koje objekt može izvršiti. Samoprogramiranje je sklapanje više objekata u cjelinu.Općenito, u radu s računalom osnovna misao vodilja jest automatizacijaposlova. Tako je i kod objektnog programiranja objekte iste vrste prirodnotretirati na isti način. Stoga govorimo o klasama. Klasa je dakle apstrakcija(uopćenje) konkretnih objekata iste vrste. Svaki objekt u programu jestobjekt određene klase. Klasa objekta određuje dakle njegovo interfejs, tj.njegova svojstva, metode  i događaje preko kojih možemo komunicirati snjim u programu. Kažemo da je taj objekt instanca te klase.Objekti  su osnova modularnosti i strukturiranosti objektno orijentiranogprogramiranja. Oni predstavljaju samostalne cjeline koje možemo sklapati sdrugim objektima u skladu s potrebama, te tako rješavati složenijeprobleme. Svaki objekt može primati poruke, a može ih i slati drugimobjektima. Korisnici nekog objekta ne mogu mijenjati unutrašnja stanja imetode objekata. To se svojstvo zove enkapsulacija.  Bilo kojem objektu

    može se pristupiti samo preko njegova interfejsa, koristeći samo njegove javne metode.Nasljeđivanje  je također važna osobina objektno orijentiranogprogramiranja. Ono je posljedica generalizacije. Dakle, ako krenemo odnaše klase  Automobil , pa zatim uzmemo klasu Brod , generalizacija bimogla rezultirati nastankom klase vozilo.Obrnuta operacija naziva se specijalizacija. Sve klase nastalespecijalizacijom zatim nasljeđuju sve atribute i metode polazne ili generi č ke klase.Generalizacijom i specijalizacijom može doći do pojave da ista metodadjeluje na različite načine, ovisno o objektu na koji se primjenjuje, što seonda naziva polimorfizmom.

    Vezano uz to, možete uočiti i potrebu uvođenja apstraktnih  klasa. Naprimjer, pogledajte klasu cestovna vozila, pri čemu možete govoriti onasljeđivanju svojstava i metoda iz klase vozila. Ali, ta klasa zapravo nerezultira konkretnim objektom - vozilom. Umjesto toga, bolje bi bilo napravitipotklase  Automobili   ili Kamioni  pa tek iz njih instancirati konkretne objektekoji će zatim naslijediti sva svojstva i metode apstraktne klase Cestovnavozila.Iz svega opisanog možemo zaključiti da korištenje objektno orijentiranogprogramskog jezika omogućuje modeliranje sustava na visokoj raziniapstrakcije, onako kako on u prirodi i postoji, bez razmišljanja kako će se ina kojem stroju realizirati.

  • 8/16/2019 C i .NET Framework 4.0 Preview

    7/22

     Str.11§  §C# I .NET FRAMEWORK 2.0 

    Zagreb - Maksimirska 58a §  A L G E B R A   § 

    2.2 Klasa, objekt, struktura

    2.2.1 Klasa, objekt (svojstva, metode – događaji, operatori)

    Pogledajte opet primjer automobila u kontekstu voznog parka neke tvrtke.Vozni park čine objekti klase  Automobil . Do klase se dolazi polazeći odpojedinačnih objekata. Promatranjem svih automobila uočavaju se njihovazajednička svojstva  (marka automobila, boja, kubikaža, godinaproizvodnje, registracija...). Također, svim automobilima možete pridružitiiste "akcije" (kreni, stani...). Te akcije u okviru klase nazivaju se metodama klase, a njima se opisuje funkcionalnost objekata te klase.Dakle, klasa  Automobil   je uopćenje (apstrakcija) pojedinačnih automobilanašeg voznog parka. Svaki taj pojedinačni automobil zapravo je  primjerak  (instanca, objekt ) klase  Automobil , a opisan je skupom vrijednostisvojstava te klase. Vrijednost svojstva marka za konkretan automobil jenpr. "Mercedes", a vrijednost svojstva godina proizvodnje je 2005."Mercedes" i 2005. su pojedinačni podaci.Iako se svaki od tih podataka u memoriji čuva u obliku nizova 0   i 1  (bezobzira na to je li to broj, slovo, slika ili zvuk), jasno je da se različite vrstepodataka registriraju   na različite načine i da su nad različitim vrstamapodataka dopuštene različite operacije. Stoga računalu morate datiinformaciju o tome koja je vrsta podataka registrirana da bi ga ono na pravinačin tumačilo i obrađivalo. To se postiže tipom podataka.Tipom podataka definiran je:

    •  način registriranja podataka u memoriji•  skup mogućih vrijednosti podataka•  skup mogućih akcija nad podacima.

    Može se reći da su vrijednosti atributa - svojstava  (marka, godinaproizvodnje) podaci na najnižoj razini apstrakcije i za njihovo definiranjekoriste se  primitivni tipovi podataka. Klasa je, pak, tip podataka na višojrazini apstrakcije, jer opisuje skup objekata koji imaju zajednička svojstva i jednako se ponašaju.Klasu definirate navođenjem ključne riječi class  iza koje slijedi ime klase. Ako formirate klasu koja nasljeđuje neku prethodno definiranu klasu, ondaposlije imena navodite dvotočku (':'), a zatim slijedi ime klase koja senasljeđuje. Nakon toga, u vitičastim zagradama definirate članove klase(svojstva i metode):

    class imeKlase :imePrethodnoDefiniraneKlase

    {opis / definicija č lanova klase

     }

    U ovom primjeru klasu automobila možete definirati na sljedeći način:

    class Automobil{

     // Svojstvastring markaAutomobila;int godinaProizvodnje;string boja;int brojSjedišta;int brojVrata;

  • 8/16/2019 C i .NET Framework 4.0 Preview

    8/22

     Str.12§  §2. Poglavlje: OBJEKTNO ORIJENTIRANO PROGRAMIRANJE 

    Tel: 01 2332 861, Fax: 01 2305 004 e-mail: [email protected]  §  www.algebra.hr   § 

    string registracija;double KS; // konjskih snaga

     // Metodevoid Kreni(){... }void OtvoriVrata(Vrata x){... }double KSuKW(){... }

     }

    Svojstva  se definiraju navođenjem njihova tipa (koji mora biti prethodnodefiniran) i imena. Pristup svojstvima u programskom jeziku C#   realiziratenavođenjem imena objekta, zatim točke ('.'), pa imena svojstva.Na primjer, ako je  A1  objekt klase  Automobil , tada svojstvumarkaAutomobila pristupate ovako:

     A1.markaAutomobila

    Svojstvima opisujete osobine objekta i njihove vrijednosti definiraju njegovostanje.

    Metoda klase je imenovani blok naredbi koji se sastoji od zaglavlja  i tijela metode. U zaglavlju navodite  povratni tip (ili riječ void  ako nema povratnevrijednosti), a zatim ime metode. Slijede zagrade. U zagradama se, akopostoje, navode zarezima odvojeni  parametri . Za svaki parametar navodise tip i ime. Poslije zaglavlja u vitičastim zagradama navodite tijelo metodekoje se sastoji od odgovarajućih naredbi programskog jezika C# .Metodama opisujete ponašanje objekta u određenoj situaciji i pododređenim uvjetima (Kreni, OtvoriVrata), ali i određujete nove vrijednosti natemelju osobina koje objekt posjeduje (KSuKW ). Na taj način opisujetefunkcionalnost objekta:

     povratniTip imeMetode (listaParametara)

    {tijelo metode

     }

    U programskom jeziku C#   metodu nekog objekta pozivate na sljedećinačin:

    imeObjekta.imeMetode (lista stvarnih parametara)Na primjer, ako je A1 objekt klase Automobil , tada metodu Kreni  pozivate

     A1.Kreni()

  • 8/16/2019 C i .NET Framework 4.0 Preview

    9/22

     Str.13§  §C# I .NET FRAMEWORK 2.0 

    Zagreb - Maksimirska 58a §  A L G E B R A   § 

    a metodu OtvoriVrata

     A1.OtvoriVrata(V1)

    gdje je V1 objekt klase Vrata.

    Neke od metoda automatski se pokreću kao reakcija na događaje kojinastaju tijekom izvršavanja aplikacije, pa se takve metode i nazivajudogađajima (engl. events).Svaka klasa sadrži metode koje omogućuju kreiranje objekata(konstruktora) na više načina, kao i metodu koja "uništava" objekt(destruktor ).

    Unutar programskog kôda možete upisivati kratke komentare navođenjemdviju kosih crta ("//"). Tada sve što napišete do kraja linije kompajliranjem programa biva ignorirano i ne izvršava se. Kada želite napisati duljikomentar, koji će se protezati kroz više linija, ograničit ćete ga na sljedeći

    način:

     /* ... komentar ... */

    Jedan od osnovnih koncepata objektno orijentiranog programiranja jestkontroliranje pristupa članovima objekta. Za svaki član klase (svojstva imetode) morate definirati razinu pristupa  (dostupnosti). U programskom jeziku C#  postoji više razina pristupa, a najosnovnije su privatna ( private) i javna ( public ). Privatni članovi klase dostupni su samo metodama te klase ito je najviša razina zaštite. Suprotno tome,  public   članovima klase možepristupiti bilo koji drugi objekt.Primijetite da se svi dosad spomenuti članovi klase konkretiziraju tek

    instanciranjem objekta, odnosno tek kada stvorite novi objekt, možetekoristiti njegova svojstva i metode.Međutim, pri definiranju članova klase poslije razine pristupa možetenavesti i ključnu riječ static kojom omogućujete postojanje i korištenje togčlana bez kreiranja konkretnih instanci. Takvim članovima pristupatenavođenjem imena klase umjesto imena objekta. Tada bez obzira na brojinstanci klase koja sadrži static   svojstvo postoji točno jedna kopija togsvojstva u aplikaciji. Statičko svojstvo je zapravo svojstvo klase, a nesvojstvo objekta.U programskom jeziku C#   postoje klase koje sadrže uglavnom statičkečlanove (Math, Convert, Array ...). Konkretne objekte takvih klasa nemožete čak ni instancirati, već  vam one omogućuju korištenje sistemskih

    metoda koje se mogu primjenjivati na objektima različitog tipa.

     Ako novu klasu nasljeđujete od neke već postojeće, treba dodati da novaklasa od postojeće nasljeđuje sva njezina svojstva i metode, a vamapreostaje samo da definirate nove i predefinirate postojeće. Ovamogućnost programskog jezika C#   izuzetno ubrzava i olakšava kreiranjeaplikacija.Za klasu se kaže da je referentni   tip podataka  jer, kad se tijekomizvršavanja aplikacije kreira novi objekt određene klase, prostor za njegovoregistriranje odvija se u memoriji računala izvan aplikacije (u heapu  –dinamičkoj memoriji), a aplikacija s njim komunicira preko njegove adrese –

    reference.

  • 8/16/2019 C i .NET Framework 4.0 Preview

    10/22

     Str.14§  §2. Poglavlje: OBJEKTNO ORIJENTIRANO PROGRAMIRANJE 

    Tel: 01 2332 861, Fax: 01 2305 004 e-mail: [email protected]  §  www.algebra.hr   § 

    2.2.2 Strukture

    Budući da je svaki objekt primjerak neke klase, a svaka klasa sadržisvojstva koja mogu biti objekti neke druge klase, jasno je da morajupostojati neki osnovni (temeljni) podaci na kojima objekt (a samim tim iaplikacija) počiva.

    U programskom jeziku C#   osnovni podaci su predstavljeni strukturama.Strukture se definiraju na sljedeći način:

    struct imeStrukture{

    definicija atributa u metoda strukture }

    Članovima strukture možete definirati razinu pristupa kao i kod klasa. Ali,za razliku od klasa, strukturu ne možete naslijediti iz druge strukture iliklase, niti iz nje može biti naslijeđena druga struktura ili klasa. Isto tako,struktura je vrijednosni  tip podataka, a klasa referentni.

    C#   sadrži ugrađene (sistemske) biblioteke klasa i struktura, gdje su, kaostrukture, definirani i osnovni tipovi podataka (cijeli brojevi, decimalnibrojevi, tekstualni i logički tip). Stoga su svi osnovni tipovi vrijednosni tipovipodataka.

    2.2.3 Osnovni tipovi podataka

    Kako smo već  spomenuli, navođenjem tipa podataka  određujete načinregistriranja podataka u memoriji, skup mogućih vrijednosti tog podatka teskup mogućih akcija nad podatkom.

    Cijeli brojevi predstavljaju se u binarnom  brojevnom sustavu određenimbrojem bitova. U N  bitova možemo registrirati "neoznačene" cijele brojeveod 0   do 2 N -1, odnosno "označene" cijele brojeve od -2 N-1  do 2 N-1. Prematome razlikujemo više cjelobrojnih tipova.

  • 8/16/2019 C i .NET Framework 4.0 Preview

    11/22

     Str.15§  §C# I .NET FRAMEWORK 2.0 

    Zagreb - Maksimirska 58a §  A L G E B R A   § 

    Tip Dopuštene vrijednosti Veličinasbyte od -128 do 127 (od -27 do 27-1) 1 bajt (8 bita)byte od 0 do 255 (od 0 do 28-1) 1 bajt (8 bita)short od -32 768 do 32 767 (od -215 do 215-1) 2 bajta (16 bita)

    ushort od 0 do 65 535 (od 0 do 216

    -1) 2 bajta (16 bita)int od -2 147 483 648 do 2 147 483 647(od -231 do 231-1)

    4 bajta (32 bita)

    uint od 0 do 4 294 967 295 (od 0 do 232-1) 4 bajta (32 bita)long od -9 223 372 036 854 775 808

    do 9 223 372 036 854 775 807(od -263 do 263-1)

    8 bajta (64 bita)

    ulong od 0 do 18 446 744 073 709 551 615(od 0 do 264-1)

    8 bajta (64 bita)

    Realni su brojevi u programskom jeziku C#   predstavljeni trima tipovimapodataka:

    1. float  2. double 3. decimal. 

    Oni se razlikuju po skupu dopuštenih vrijednosti i po broju značajnihdecimala (preciznosti).

    Tip Dopuštene vrijednosti Preciznost Veličinafloat od ±1,5 x 10-45 

    do ±3,4 x 1038 7 decimala 4 bajta (32 bita)

    double od ±5,0 x 10-324 do ±3,4 x 10308 

    15-16decimala

    8 bajta (64 bita)

    decimal od ±1,0 x 10-28

     do ±3,4 x 1028 

    28-29decimala 16 bajta (128 bita)

    Osim osnovnih brojevnih tipova, postoje još dva tipa:1. char  2. bool. 

  • 8/16/2019 C i .NET Framework 4.0 Preview

    12/22

     Str.16§  §2. Poglavlje: OBJEKTNO ORIJENTIRANO PROGRAMIRANJE 

    Tel: 01 2332 861, Fax: 01 2305 004 e-mail: [email protected]  §  www.algebra.hr   § 

    Tip Dopuštene vrijednosti Veličinachar pojedinačni Unicode znak

    cijeli broj od 0 do 655352 bajta (16 bita)

    bool true, false  1 bajt

    Konstante tipa char   pišu se navođenjem znaka između apostrofa ('A', 'b','1' ...).Neki znakovi nemaju svoju grafičku interpretaciju (tab, novi red ...), pa ih ukodu zapisujemo pomoću određene specijalne oznake, tzv. escapesekvence.

    Escape sekvenca Znak\' jednostruki navodnik\" dvostruki navodnik\\ obrnuta kosa crta (backslash)\n novi red

    \t tab

    Svi navedeni osnovni tipovi podataka realizirani su sistemskim strukturama. 

    Tip Sinonimna strukturasbyte System.Sbytebyte System.Byteshort System.Int16ushort System.UInt16int System.Int32

    uint System.UInt32long System.Int64ulong System.UInt64float System.Singledouble System.Doubledecimal System.Decimalchar System.Charbool System.Bool

    U kodu je svejedno koristimo li ime tipa ili ime odgovarajuće strukture.

    Posebno mjesto među tipovima podataka zauzima znakovni tip string  koji je zapravo niz charova. Stoga je on, za razliku od ostalih osnovnih tipova,realiziran referentnim tipom – sistemskom klasom System.String.  Brojznakova u stringu nije ograničen, pa tako ni količina memorije koju zauzimastring nije unaprijed određena.Konstante tipa string  pišu se između znakova navoda ("A", "Ovo je string","" ).

  • 8/16/2019 C i .NET Framework 4.0 Preview

    13/22

     Str.17§  §C# I .NET FRAMEWORK 2.0 

    Zagreb - Maksimirska 58a §  A L G E B R A   § 

    2.2.4 Deklaracija i definicija varijable

    Varijabla  je ime (identifikator) memorijske lokacije u kojoj aplikacija čuvavrijednost. To ime (identifikator) mora biti jedna riječ  sastavljena od slovaengleske abecede, znamenki ili znaka za podvlačenje ("_"). Ime mora

    početi slovom ili znakom "_".Evo primjera ispravno imenovanih varijabli:

    imeOsobe, osoba1, prezime_osobe, _spol...

    No, ovo nisu imena varijabli:

    ime Osobe, prezime-osobe, 1osoba...

    Programski jezik C#   razlikuje velika i mala slova ("Case Sensitive"), pastoga varijable ImeOsobe i imeOsobe nisu iste.

    U programskom jeziku C#  postoje dvije vrste varijabli:1. vrijednosne2. referentne.

    Memorijska lokacija imenovana varijablom vrijednosnog tipa direktno sadrživrijednost, a lokacija imenovana varijablom referentnog tipa sadrži adresulokacije u dinamičkoj memoriji u kojoj se čuva informacija. Za podatkeosnovnih tipova (int, double, char, bool... – sistemske strukture) samo imepredstavlja vrijednost pa su to vrijednosne varijable. S druge strane, zaobjekte sistemskih i programerski definiranih klasa ime varijable predstavljaadresu (referencu) memorijske lokacije u dinamičkoj memoriji gdje objektegzistira, pa su to referentne varijable.

    Deklaracija varijable:

    imeTipa imeVarijable...;

    Primjer 2.2.4.1 – primjeri deklaracija

    int x,y;char a,b;Osoba osoba1, osoba2;

    Deklaracijom varijable vrijednosnog tipa odvaja se u memoriji sav prostorpotreban za registriranje podatka zadanog tipa, a deklaracijom varijablereferentnog tipa odvaja se samo prostor za registriranje adrese memorijskelokacije na kojoj će se nalaziti objekt.Samom deklaracijom varijabli se ne dodjeljuje vrijednost, nego ju je jošpotrebno i inicijalizirati .

  • 8/16/2019 C i .NET Framework 4.0 Preview

    14/22

     Str.18§  §2. Poglavlje: OBJEKTNO ORIJENTIRANO PROGRAMIRANJE 

    Tel: 01 2332 861, Fax: 01 2305 004 e-mail: [email protected]  §  www.algebra.hr   § 

    Inicijalizacija  varijable vrijednosnog tipa obavlja se pomoću operatora dodjele ("=") na sljedeći način:

    varijabla = izraz.

    Tip vrijednosti izraza mora se poklapati s tipom varijable.

    Primjer 2.2.4.2

    int x,y; x=1;y=x+3;

    Inicijalizacija varijable referentnog tipa obavlja se pomoću operatora new :

    new imeKlase (listaParametara)

    U dinamičkoj memoriji odvaja se prostor za registriranje objekta klaseimeKlase, a operator new   vraća adresu tog prostora koju onda možetedodijeliti referentnoj varijabli.

    Primjer 2.2.4.3

    mojaKlasa x; x = new mojaKlasa();Osoba o1;

    o1 = new Osoba("Marko", "Markovi ć "); 

    Možete primijetiti da nakon operatora new   zapravo slijedi poziv metodekoja nosi isto ime kao i sama klasa. Ta metoda (može ih biti i više) nazivase konstruktor  i sastavni je dio svake klase. Pozivom konstruktora nastajenovi objekt te klase.

    Dakle, definicija varijable uvijek se sastoji od dva koraka: deklaracije iinicijalizacije. U programskom jeziku C#   zgodno je što se ta dva korakamogu objediniti.

    Primjer 2.2.4.4

    int x = 1, y;mojaKlasa = new mojaKlasa();Osoba o1 = new Osoba("Marko", "Markovi ć "); 

  • 8/16/2019 C i .NET Framework 4.0 Preview

    15/22

     Str.19§  §C# I .NET FRAMEWORK 2.0 

    Zagreb - Maksimirska 58a §  A L G E B R A   § 

    2.2.5 Izrazi, operatori, konverzije

    Tijekom implementiranja vašeg programskog algoritma stalno se događada na podatke primjenjujete različite operacije kojima nastaju novevrijednosti. Niz varijabli i konstanti, međusobno povezanih operatorima,

    eventualno odvojenih zagradama, koji kao rezultat daju nekakvu novuvrijednost naziva se izrazom.

    Primjer 2.2.5.1 – primjeri izraza

    123'a'a + 4 * b"Moje ime je "+ime x > y + 5(x +1) * y

    Izrazi se, s obzirom na tipove podataka i operatore koji u njima sudjeluju,mogu podijeliti kao u sljedećoj tablici:

    Izrazi Tipovi podataka Operatoriaritmetički svi numerički tipovi + – * / %relacijski svi usporedivi tipovi == != < > =logički logički tip ! && ||tekstualni tekstualni tipovi +

    Svaki od navedenih operatora karakteriziraju sljedeće osobine:•  arnost  operatora (koliko izraza povezuje – unarni, binarni, ternarni )•  tip izraza na koje se primjenjuje i tip vrijednosti rezultata•   prioritet  operatora u odnosu na druge operatore•  asocijativnost  (određuje redoslijed izvršavanja operacija istog

    prioriteta).

    2.2.6 Aritmetički operatori

    Operatori +, –, *, /  predstavljaju osnovne računske operacije. To subinarni  operatori, s tim da se +  i – mogu koristiti i kao unarni   (predznak).Operatori *  i /  višeg su prioriteta od operatora +  i –. Binarni operator %

    vraća ostatak pri cjelobrojnom dijeljenju.Svi aritmetički operatori su lijevo asocijativni   (operacije istog prioritetaizvode se slijeva nadesno).

  • 8/16/2019 C i .NET Framework 4.0 Preview

    16/22

     Str.20§  §2. Poglavlje: OBJEKTNO ORIJENTIRANO PROGRAMIRANJE 

    Tel: 01 2332 861, Fax: 01 2305 004 e-mail: [email protected]  §  www.algebra.hr   § 

    Primjer 2.2.6.1

     x + y * z

    Prvo se računa y * z  jer je operator * većeg prioriteta od operatora +, a tekonda se provodi zbrajanje.

    Primjer 2.2.6.2

     x * y / z

    Prvo se računa x * y , a zatim se rezultat dijeli sa z  (lijeva asocijativnost).

    2.2.7 Relacijski operatori

    Svi relacijski operatori su binarni i vraćaju rezultat true ili false (istina ili laž ).Oni služe za uspoređivanje vrijednosti operanada. Relacijski operatori su

    nižeg prioriteta od aritmetičkih operatora.

    Primjer 2.2.7.1

     x + 5 * y > y -2

    Prvo se računa vrijednost aritmetičkog izraza s lijeve strane relacijskogoperatora >, zatim vrijednost aritmetičkog izraza s njegove desne strane, itek tada se te dvije vrijednosti uspoređuju.

    Operator == ispituje jesu li vrijednosti operanada iste, ali samo ako se radio operandima vrijednosnog tipa ili tipa string. Ako su operandi referentnog

    tipa, onda taj operator ispituje pokazuju li oni na isti objekt.

    Primjer 2.2.7.2

     Ako je definirano

    int x = 1, y = 2;

    tada je vrijednost izraza

     x == y – 1

    true jer su vrijednosti izraza s lijeve i s desne strane operatora == iste.

    Primjer 2.2.7.3

     Ako je definirano

    string ime1 = "Marko";string ime2 = "Marko"; 

  • 8/16/2019 C i .NET Framework 4.0 Preview

    17/22

     Str.21§  §C# I .NET FRAMEWORK 2.0 

    Zagreb - Maksimirska 58a §  A L G E B R A   § 

    tada je vrijednost izraza

    ime1 == ime2

    true jer su vrijednosti obiju varijabli iste.

    Primjer 2.2.7.4

     Ako je definirano

    Osoba o1 = new Osoba("Marko", "Markovi ć ");Osoba o2 = new Osoba("Marko", "Markovi ć ");

    tada je vrijednost izraza

    o1 == o2

    false jer, bez obzira na to što su definirana dva objekta klase Osoba s istimulaznim parametrima, operator new   je svakom dodijelio novu memorijskulokaciju.

    Primjer 2.2.7.5

     Ako je definirano

    Osoba o1 = new Osoba("Marko", "Markovi ć ");Osoba o2 = o1; 

    tada je vrijednost izraza

    o1 == o2

    true jer sada o1 i o2  pokazuju na isti memorijski prostor.

    Suprotno operatoru ==, operator != na isti način ispituje različitost svojihoperanada.

    2.2.8 Logički operatori

    Binarni logički operatori && i || služe za povezivanje logi

    čkih vrijednostisvojih operanada. Operator && povezuje po pravilu logičke konjunkcije 

    (logika "i" ), a operator || logičke disjunkcije (logi č ko "ili" ). Ovi operatori imaju jako nizak prioritet (niži od relacijskih operatora).

    Primjer 2.2.8.1

    izraz1 && izraz2

    ima vrijednost true  samo ako i izraz1  i izraz2   imaju vrijednost true. Usuprotnome, taj izraz ima vrijednost false.

  • 8/16/2019 C i .NET Framework 4.0 Preview

    18/22

     Str.22§  §2. Poglavlje: OBJEKTNO ORIJENTIRANO PROGRAMIRANJE 

    Tel: 01 2332 861, Fax: 01 2305 004 e-mail: [email protected]  §  www.algebra.hr   § 

    Primjer 2.2.8.2

    izraz1 || izraz2

    ima vrijednost false  samo ako i izraz1  i izraz2   imaju vrijednost false. Usuprotnome, taj izraz ima vrijednost true.

    Unarni logički operator ! negira logičku vrijednost na koju se primjenjuje i on je operator najvišeg prioriteta.

    Primjer 2.2.8.3

    !izraz

    ima vrijednost false ako izraz  ima vrijednost true.

    2.2.9 Tekstualni operator

     Ako binarnim operatorom + djelujete na operande od kojih je barem jedantekstualnog tipa, tada se radi o konkatenaciji  (spajanju) stringova. Tada se ieventualni numerički operand automatski konvertira u svoj tekstualni oblik.

    Primjer 2.2.9.1

     Ako je definirano

    string ime = "Marko";string prezime = "Markovi ć ";

    int starost = 21; 

    tada je vrijednost izraza

    "Ja se zovem " + ime + " " + prezime + " i imam " + starost + " godinu."

     jednaka

    Ja se zovem Marko Markovi ć  i imam 21 godinu.

    2.2.10 Operator dodjele

    U prethodnim primjerima moglo se zaključiti da operator dodjele  ("=") imanajniži prioritet. Ponovimo još jednom kako se odvija inicijalizacija varijable:

    varijabla = izraz

    Dakle, prvo se izračunava vrijednost izraza, a zatim se ta vrijednostdodjeljuje varijabli. Iz toga dalje možete zaključiti da je operator dodjele desno asocijativan.

  • 8/16/2019 C i .NET Framework 4.0 Preview

    19/22

     Str.23§  §C# I .NET FRAMEWORK 2.0 

    Zagreb - Maksimirska 58a §  A L G E B R A   § 

    Primjer 2.2.10.1

     Ako je definirano

    int x, y;

    bool p;string ime, recenica; 

    tada su izrazi

     x = 5; x = x + 1; x = x * 2 + 1; p = (x > 5) && (y < x)ime = "Marko";recenica = "Ja se zovem " + ime; 

    primjeri ispravno upotrijebljenog operatora dodjele ("=").

    Napomena: Programski jezik C#  dopušta i korištenje specifičnih operatoradodjele op=, gdje je op neki od aritmetičkih operatora.

    Primjer 2.2.10.2

     Ako je definirano

    int x = 2;

    tada operacija

     x += 1

    vrijednost varijable x  povećava za 1 (ekvivalentno operaciji x = x + 1). Čak iako se radi o često potrebnom povećavanju ili smanjivanju vrijednosti nekevarijable za 1, mogu se koristiti i unarni operatori ++ i -- koji imaju postfiksnu  i  prefiksnu  notaciju ( x++, ++x, x--, --x ). Kad je u pitanjupostfiksna notacija, rezultat je vrijednost varijable prije operacije, a kad je upitanju prefiksna notacija, rezultat je vrijednost varijable poslije operacije.

    Primjer 2.2.10.3

     Ako je definirano

    double x = 1.5, y;y = x++; 

    tada su vrijednosti

     x = 2.5y = 1.5  

  • 8/16/2019 C i .NET Framework 4.0 Preview

    20/22

     Str.24§  §2. Poglavlje: OBJEKTNO ORIJENTIRANO PROGRAMIRANJE 

    Tel: 01 2332 861, Fax: 01 2305 004 e-mail: [email protected]  §  www.algebra.hr   § 

    no ako je definirano

    double x = 1.5, y;y = ++x;

    vrijednosti su

     x = 2.5y = 2.5

    2.2.11 Konverzije podataka

    Konverzija podataka  je prevođenje podataka iz jednog tipa u drugi. Uprogramskom jeziku C#   konverzija se može raditi automatski (implicitna konverzija) ili pod kontrolom programera (eksplicitna konverzija).

    2.2.11.1 Implicitna konverzija

    Dvije su situacije u kojima se primjenjuje implicitna konverzija:

    1. pri izračunavanju vrijednosti izraza2. pri dodjeljivanju vrijednosti varijabli.

    Primjer 2.2.11.1

    double x = 12.34;int y = 10; x = x + y; 

    U gornjem primjeru pri računanju vrijednosti  x + y   dolazi do implicitnekonverzije podatka  x   u tip double. Obrnuta konverzija u programskom jeziku C#  nije dopuštena, jer se inače ne bi sačuvala preciznost podataka.Implicitne konverzije najčešće se primjenjuju kod numeričkih tipovapodataka.

    Tip Može se implicitno konvertirati usbyte short, int, long, float, double, decimalbyte short, ushort, int, uint, long, ulong, float, double, decimalshort int, long, float, double, decimalushort int, uint, long, ulong, float, double, decimalint long, float, double, decimaluint long, ulong, float, double, decimal

    long float, double, decimalchar ushort, int, uint, long, ulong, float, double, decimalfloat doubleulong float, double, decimal

    2.2.11.2 Eksplicitna konverzija

    Eksplicitna konverzija provodi se operatorom cast   ili korištenjem klaseConvert .

    Primjer 2.2.11.2

     Ako pokušate prevesti sljedeći kod

    int x;

  • 8/16/2019 C i .NET Framework 4.0 Preview

    21/22

     Str.25§  §C# I .NET FRAMEWORK 2.0 

    Zagreb - Maksimirska 58a §  A L G E B R A   § 

    double y = 5.32; x = y; 

    kompajler će javiti grešku:

    Cannot implicitly convert type 'double' do 'int'

    Ovaj problem možete riješiti eksplicitnom konverzijom pomoću operatoracast :

     x = (int)y;

    ali morate biti svjesni da tu može doći do gubitka informacije jer, naravno,kad podatak tipa double  konvertiramo u tip int , njegov decimalni dio jednostavno se odbacuje.Dakle, operator cast  upotrebljava se tako da se u zagradama navede tip ukoji želimo konvertirati vrijednost izraza koji slijedi za operatorom.

    Dopušteno "kastanje"  numeričkih tipova podataka slijedi u tablici:

    Tip Može se eksplicitno konvertirati u

    sbyte byte, ushort, uint, ulong, charbyte sbyte, charshort sbyte, byte, ushort, uint, ulong, charushort sbyte, byte, short, charint sbyte, byte, short, ushort, uint, ulong, charuint sbyte, byte, short, ushort, int, charlong sbyte, byte, short, ushort, int, uint, ulong, charulong sbyte, byte, short, ushort, int, uint, long, charchar sbyte, byte, shortfloat sbyte, byte, short, ushort, int, uint, long, ulong, char, decimaldouble sbyte, byte, short, ushort, int, uint, long, ulong, char, float,

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

    double

    Primjer 2.2.11.3

    int x = 1;string s1 = (string) x;string s2 = "2";

    int y = (int)s2; 

    Prevođenjem navedenog koda dobili biste sljedeće poruke o greškama:

    Cannot convert type 'int' to 'string'Cannot convert type 'string' to 'int'  

    Eksplicitne konverzije iz ovog primjera nije moguće provesti operatoromcast , već morate upotrijebiti neku od metoda klase Convert .

  • 8/16/2019 C i .NET Framework 4.0 Preview

    22/22

     Str.26§  §2. Poglavlje: OBJEKTNO ORIJENTIRANO PROGRAMIRANJE 

    U skladu s tim, prethodni primjer mogli biste prepraviti na sljedeći način:

    int x = 1;string s1 = Convert.ToString(x);string s2 = "2";int y = Convert.ToInt32(s2); 

    Naravno, eksplicitna konverzija Convert.ToInt32(s2) bit će uspješna samoako string s2   predstavlja ispravno zapisani cijeli broj. KonverzijuConvert.ToString(x), pak, niste ni morali striktno provoditi, jer zapravo svestrukture kojima su predstavljeni osnovni tipovi sadrže metodu ToString .

    Primjer 2.2.11.4

    int x = 1;string s = x.ToString();