seminarski rad spia
DESCRIPTION
Struktura podataka i algoritmiTRANSCRIPT
SVEUČILIŠTE/UNIVERZITET „VITEZ“ TRAVNIK
FAKULTET POSLOVNE INFORMATIKE
STUDIJ I CIKLUS; GODINA STUDIJA: I CIKLUS; I GODINA
SMIJER: INFORMACIJSKE TEHNOLOGIJE
STRUKTURA C#
SEMINARSKI RAD
Travnik, mart, 2015 godine
SVEUČILIŠTE/UNIVERZITET „VITEZ“ TRAVNIK
FAKULTET POSLOVNE INFORMATIKE
STUDIJ I CIKLUS; GODINA STUDIJA: I CIKLUS; I GODINA
SMIJER: INFORMACIJSKE TEHNOLOGIJE
STRUKTURA C#
SEMINARSKI RAD
IZJAVA: Ja, Koluh Azur , student Sveučilišta/Univerziteta „Vitez“ Travnik, Indeks broj
: 0274-14/RIT , odgovorno i uz moralnu i akademsku odgovornost izjavljujem da sam ovaj
rad izradio potpuno samostalno uz korištenje citirane literature i pomoć profesora, odnosno
asistenta.
Potpis studenta: _Koluh Azur
Student: Koluh Azur
Predmet: Struktura podataka i algoritmi
Profesor: dr. Lazo Roljić
Asistent: mr.sc. Dragan Mlakić
Travnik, mart, 2015 godine
2
STRUKTURA C#
Sadržaj
1. Uvod....................................................................................................................................2
2. Programski jezik C#............................................................................................................3
3. Osnove programiranja u C#.................................................................................................5
3.1. Tipovi podataka, deklaracija i definicija promjenjive.................................................5
3.2. Klasa, objekat...............................................................................................................8
4. .NET Framework...............................................................................................................12
4.1. Objektno - orijentisano programiranje (Klase, objekti i metode)..............................12
4.2. Ključne reči u C#........................................................................................................12
4.3. Kreiranje konzolnih aplikacija u Microsoft Visual C# 2010 Express........................13
5. Programiranje Windows aplikacija u C#...........................................................................15
5.1. Visual Studio..............................................................................................................16
6. Zaključak...........................................................................................................................21
7. Literatura...........................................................................................................................21
3| S t r a n a
STRUKTURA C#
1. UVOD
Programski jezik C spada u proceduralne programske jezike koji je razvijen u ranim 70-
im godinama 20. stoljeća. Autor ovog programskog jezika je Dennis Ritchie, no značajan
doprinos nastanku C-a dali su Ken Thompson kao autor programskog jezika B i Martin
Richards, autor programskog jezika BCPL. Dennis Ritchie je stvorio ovaj programski jezik za
rješavanje praktičnih problema kodiranja sistemskih programa i jezgre operativnog
sistema UNIX, koji je praktički u potpunosti napisan u C-u.
Programski jezik C dosta se mijenjao tokom godina te je u više navrata neformalno i formalno
standardiziran. Prva važnija inačica poznata je pod nazivom "K&R C", što je engl.
kratica prezimena dvaju autora najpoznatijeg C priručnika "The C Programming Language", a
to su Brian Kernighan i Dennis Ritchie. Prvo izdanje te vrlo sažeto i precizno
pisane knjige koje datira iz 1978. godine ujedno je de facto standardiziralo jezik u 70-ima.
Drugo izdanje iz 1988. godine opisuje "ANSI C", standard kojeg je 1983. godine
definirao američki nacionalni institut za standardizaciju, a koji je i danas najbolje podržan.
Donedavni je standard bio ISO/IEC standard skraćeno poznat kao "C99", no krajem 2011.
usvojen je ISO/IEC 9899:2011, poznat kao "C11", za koji su kompajleri još u razvoju.
Kao jedan od najvažnijih jezika u povijesti komercijalne računalne industrije, C je do danas
ostao jedini programski jezik prilagođen za sve računalne platforme, od malih sustava pa do
mrežnih superračunala. Programi napisani u njemu vrlo su bliski načinu rada hardvera te u
načelu zahtijevaju od programera dobro razumijevanje rada procesora, memorije, ulazno-
izlaznih sklopova itd. No, rad s registrima procesora i adresiranje memorije apstrahirani su
pomoću koncepta varijabli i pokazivača što uz eksplicitne kontrolne strukture i funkcije
znatno olakšava programiranje u odnosu na izravno programiranje u strojnim jezicima.
Tokom 1980-ih, Bjarne Stroustrup zajedno s drugim istraživačima u Bell Labs
proširuje C dodavajući sposobnosti objektno orijentiranog programiranja, a naziv ovog novog
programskog jezika je C++. Nažalost, ta je 100%-na kompatibilnost ujedno i razlog što su
problemi koje programiranje u C-u nosi sa sobom naslijeđeni u C++-u. Efikasno i sigurno
programiranje u C-u vrlo je zahtjevna vještina koja traži višegodišnje iskustvo pa je
stoga C jezik koji se ne preporučuje početnicima, posebice ako im programiranje nije
primarni posao.
Mnogobrojni problemi vezani prije svega za upravljanje memorijom koje programer mora
sam eksplicitno kodirati razlog su da je danas većina novih korisničkih aplikacija napisana u
4| S t r a n a
STRUKTURA C#
nekom modernijem jeziku koji ima ugrađeno automatsko upravljanje memorijom (engl.
garbage collection), ne dopušta izravan rad s memorijom pomoću pokazivača te ima podršku
za upravljanje kodom odnosno njegovom okolinom za vrijeme njegova izvođenja. Danas se
relativno rijetko ukazuje potreba za pisanjem novih korisničkih aplikacija izravno u C-u, pa
čak i u vrlo malim sustavima kao što su primjerice mobilni telefoni. Glavno područje njegove
uporabe su sistemski programi na strani poslužitelja (engl. servers), programi prevoditelji
(engl. compilers) i jezgre operativnih sustava (engl. operating system kernels), gdje je potreba
za najvećom mogućom brzinom izvođenja, efikasnom kontrolom resursa i izravnom
kontrolom hardvera od primarne važnosti.
C je jezik opće namjene, što znači da se u njemu može napraviti apsolutno sve: od
rješavanja zadataka, do pisanja drivera, operacijskih sustava, tekst procesora ili igara. C, kao
jezik, ni u čemu ne ograničava. Omogućuje i uključivanje naredbi pisanih asemblerski, zbog
čega je zajedno s mogućnošću direktnog pristupa pojedinim bitovima, bajtovima ili cijelim
blokovima memorije, pogodan za pisanje sistemskog softvera. Zbog tih karakteristika C je
među popularnijim programskim jezicima i rabe ga mnogi programeri. Rezultat toga je
postojanje velikog broja prevoditelja za C i alata te stalno dostupne pomoći na internetu.
Programi pisani u C-u su prenosivi (mogu se prevoditi i izvršavati na različitim porodicama
računala uz minimalne ili nikakve ispravke) i obično su vrlo brzi. Postoje
mnogi prevoditelji za jezik C, a jedan od najšire korištenih je GNU C Compiler.
2. PROGRAMSKI JEZIK C#
C# je zreo programski jezik koji omogućava izradu aplikacija za Web sa svom potrebnom
funkcionalnošću. Osim što pruža programski okvir za razvoj softvera, omogućava i podršku
za pristupanje brojnim bazama podataka. On predstavlja jedan od jezika koji služe za izradu
aplikacija koje mogu raditi pod .NET okruženjem. Kako predstavlja evoluciju jezika C i C++,
kao takav je kreiran uz korišćenje svih prednosti ostalih jezika i otklanjanje njihovih mana.
Sam razvoj aplikacije je jednostavniji u C# jeziku, a sam jezik je izuzetno moćan. S vremena
na vreme njegov kod je mnogo razumljiviji u odnosu na druge jezike, ali je nešto robusniji i
jednostavnije je otkloniti greške u njemu. Sam jezik nema ograničenja u pogledu toga kakve
se aplikacije mogu napraviti u njemu, on koristi okruženje i samim tim nema ograničenja u
vezi sa mogućim aplikacijama. Za programiranje u C# korišćen je Visual Studio .NET, koji je
u mnogome olakšao razvoj same aplikacije. Visual Studio .NET pored toga što sadrži
dizajnerske alatke za aplikacije, alatke za prikazivanje i navigaciju elemenata projekta,
5| S t r a n a
STRUKTURA C#
omogućava jednostavniju distribuciju i prilagođavanje projekta klijentima i obezbjeđuje
napredne tehnike otklanjanja grešaka pri razvoju projekta.
Programski jezik C# (C sharp) je proizvod kompanije Microsoft i nastao je kao odgovor na nedostatke postojećih jezika kao što su C, C++ i Visual Basic, u isto vrijeme kombinujući njihove dobre strane.
C# je potpuno objektno-orijentisani programski jezik, što znači da svi elementi unutar njega predstavljaju objekt. Objekt predstavlja strukturu koja sadrži podatkovne elemente, kao i metode i njihove međusobne interakcije.
Kao primjer jednostavnog C# programa, navest ćemo sljedeći kod:
Using System;
Class Primjer{
statis void Main()
{
Console.WriteLine("Pozdrav!");
}
}
Nakon izvođenja ovog programskog koda, na ekranu se ispisuje poruka "Pozdrav!".
Using System; je kompajlerska naredba koja mu govori da aplikacija koristi skup elemenata pod nazivom System. Na ovaj način sve funkcije i klase unutar prostora (namespace) System postaju izravno dostupne unutar aplikacije. Na primjer, korištena klasi Console u našem primjeru pristupa se direktno iako se ona nalazi unutar klase System.
6| S t r a n a
STRUKTURA C#
Slika 1. Način na koji je C# dobio ime
U suprotnom bismo joj morali pristupati na sljedeći način: System.Console;
Nadalje definiramo vlastitu klasu naziva Primjer. Za ovo koristimo ključnu riječ Class, te vitičaste zagrade koje idu nakon imena klase, i definišu opseg klase. Drugim riječima, svi objekti koje definišemo unutar ovih zagrada pripadati će toj klasi.
Svaki program mora imati tačku u kojoj kreće sa izvršavanjem, i to je u C# aplikaciji funkcijaMain(). U našem primjeru ta funkcija definisana je pomoću dvije ključne riječi: static i void.
Za kraj ostaje objasniti naredbu za ispis teksta korištenu u primjeru.
Ta naredba imenom WriteLine sadržana je u klasi Console. Svim sastavnim elementima neke klase/objekta pristupamo na način da napišemo ime klase/objekta te nakon njega stavimo točku i napišemo ime elementa (varijable, funkcije...) kojem pristupamo.
Funkcija WriteLine prima jedan argument, i to upravo tekst kojeg želimo ispisati.
Konačno, naredba izgleda: Console.WriteLine("Pozdrav!");
Još je bitno napomenuti da u C# jeziku svaka linija završava tačka-zarezom (eng. semicolon)
3. OSNOVE PROGRAMIRANJA U C#
Programski jezik C# je nastao 2002. godine u „radionici“ čuvene kompanije Microsoft kao
proizvod želje da se napravi objektno orijentisani programski jezik (poput Jave) koji
7| S t r a n a
STRUKTURA C#
omogućava relativno lako kreiranje aplikacija u grafičkom korisničkom okruženju (poput
programskog jezika Borland Delphi). Ovaj programski jezik je jezik opće primjene i
namjenjen je izradi aplikacija za Microsoft .NET platformu.
Sintaksne konstrukcije programskog jezika C# su izgrađene na uobičajenoj azbuci (velika i
mala slova abecede, cifre, specijalni znaci). Kao i u svakom drugom programskom jeziku
postoje takozvane službene ili rezervisane riječi koje imaju svoje unaprijed definisano
značenje i ne mogu se koristiti za imenovanje bilo kakvih podataka od strane programera.
Ovde navodimo skup rezervisanih riječi poredanih u leksikografskom poretku:
abstract, as, base, bool, break, byte, case, catch, char, checked, class, const, continue,
decimal, default , delegate, do, double, else, enum, event, explicit, extern, false, finally,
fixed, float, for, foreach, goto, if, implicit, in, int, interface, internal, is, lock, long,
namespace, new, null, object, operator, out , override, params, private, protected, public ,
readonly, ref, return, sbyte, sealed, short, sizeof, stackalloc, static, string, struct, switch,
this, throw, true, try, typeof, uint, ulong, unchecked, unsafe, ushort, using, virtual, volatile,
void, while
U ovom dijelu seminarskog rada govori se o tipovima podataka kojima C# manipuliše kao i sa
građenjem osnovnih sintaksnih i semantičkih konstrukcija ovog programskog jezika.
3.1. TIPOVI PODATAKA, DEKLARACIJA I DEFINICIJA
PROMJENJIVE
Svakom aplikacijom obrađujemo podatke. Svi podaci čuvaju se u memoriji računara u obliku
nizova bistabilnih elemenata (0 i 1), bez obzira da li podatak predstavlja broj, riječ, sliku ili
zvuk. Različite vrste podataka registruju se na različite načine. Takođe, nad različitim
vrstama podataka su dozvoljene različite operacije. U zavisnosti od vrste podatka, mora se
odvojiti određeni prostor za njegovo registrovanje i obezbjediti izvršavanje određenih akcija
nad tim podatkom. Računaru moramo dati informaciju koja vrsta podatka je registrovana da
bi ga na pravi način tumačio i obrađivao.
Potrebne informacije saopštavamo računaru tipom podataka. Tipom podataka definisan je:
o način registrovanja podataka u memoriji;
8| S t r a n a
STRUKTURA C#
o skup mogućih vrijednosti tih podataka;
o skup mogućih akcija nad podacima.
Promjenjiva je ime (identifikator) memorijske lokacije u kojoj aplikacija čuva vrijednost.
Identifikator (ime) koji programer definiše gradi se na osnovu sledećeg pravila: Identifikator
je niz slova (velikih i malih) engleske abecede, znaka za podvlačenje (_) i cifara. Ime mora da
počne slovom ili znakom za podvlačenje.
Prema tome, primjeri identifikatora su
nazivPredmeta, ucenik1, Rezultat, radni_dan, _x, ...
dok
nazivPredmeta, godisnje-doba, 1dan, ...
nisu identifikatori.
Važno je napomenuti da C# (poput programskog jezika C) razlikuje velika i mala slova tako
da identifikatori GodisnjeDoba i godisnjeDoba nisu isti.
U programskom jeziku C# promjenjive su podjeljene u dvije kategorije: vrijednosne i
referentne promjenjive. Memorijska lokacija, imenovana promenljivom vrijednosnog tipa,
direktno sadrži vrijednost, dok lokacija imenovana promjenjivom referentnog tipa sadrži
adresu lokacije u dinamičkoj memoriji u kojoj se čuva vrijednost. Za podatke osnovnih tipova
(tj. sistemskih struktura) u programskom jeziku C# (int, double, char, bool…) ime
promjeenjive predstavlja vrijednost a za objekte sistemskih i od strane programera definisanih
klasa, ime promjenjive predstavlja adresu lokacije u dinamičkoj memoriji u kojoj su ti objekti
kreirani i gdje egzistiraju, pa se njima pristupa indirektno. Referentna promjenjiva čuva
memorijsku adresu podatka, tj. referencira na pravu vrijednost.
Imenovanje podataka u aplikaciji i definisanje tipa podataka kojem pripadaju postižemo
deklaracijom promenljivih na sledeći način:
<ime tipa><ime promjenjive1>, …, <ime promjenjiveN> ;
Deklaracijom promjenjive vrijednosnog tipa u memoriji se odvaja prostor neophodan za
registrovanje podatka zadatog tipa, a pri deklaraciji promjenjive referentnog tipa odvaja se
prostor za registrovanje adrese memorijske lokacije u kojoj će se nalaziti objekat.
9| S t r a n a
STRUKTURA C#
int x,y;
char p,q;
Ucenik ucenik1,ucenik2;
Samom deklaracijom ne dodjeljuje se vrijednost promjenjivoj vrijednosnog tipa. Ako želimo
da dodijelimo vrijednost promjenjivoj (da definišemo promjenjivu) koristimo operator =
(operator dodjele) na sljedeći
način: <promenljiva>=<izraz>;
Tip vrijednosti izraza mora se poklapati sa tipom promjenjive (ili se implicitnom konverzijom
može konvertovati u tip promjenjive).
int x,y;
x=5;
y=!145+x;
char p;
p=’A’;
Deklaracijom promjenjive referentnog tipa ne zauzima se memorija za vrednost već samo za
njenu referencu. Da bismo napravili prostor za vrednost, upotrebljavamo izraz oblika
new <ime referentnog tipa>(<lista parametara>)
Korišćenjem operatora new odvaja se u dinamičkoj memoriji prostor za registrovanje
vrijednosti tipa <ime referentnog tipa >. Ovaj operator vraća adresu dodjeljenog prostora koju
onda možemo dodjeliti referentnoj promjenjivoj.
Primer:
mojRefTip x;
x= new mojRefTip();
Ucenik a;
a=new Ucenik(“Pera”, “Peric”);
10| S t r a n a
STRUKTURA C#
Promjenjivoj referentnog tipa x, odnosno a, dodjeljujemo adrese memorijskog prostora
odvojenog korišćenjem operatora new. Pozivima metoda mojRefTip() i Ucenik(“Pera”,
“Peric”), u prostoru odvojenom korišćenjem operatora new, postavljaju se odgovarajuće
vrijednosti. Možemo zaključiti da se uvođenje promjenjive odvija u dva koraka: o
deklaracija promjenjive promjenjiva vrijednosnog tipa se pri deklaraciji ne inicijalizuje
ukoliko to nije eksplicitno navedeno: promjenjiva referentnog tipa se pri deklaraciji
inicijalizuje nulom; o inicijalizacija promjenjive za promjenjive vrijednosnog tipa eksplicitno
navodimo vrijednost ; za promjenjive referentnog tipa operator new odvaja u dinamičkoj
memoriji prostor za vrednost odgovarajućeg tipa.
U programskom jeziku C# je data mogućnost objedinjavanja ova dva koraka, što vrlo često
koristimo.
int x=32, y;
mojTip z= new mojTip();
Ucenik a=new Ucenik(“Pera”, “Peric”);
Osnovni podaci referentnog tipa u programskom jeziku C# su klase a vrijednosnog strukture i
enumeracijski tip. Promjenjiva vrijednosnog tipa direktno sadrži podatak, dok promjenjiva
referentnog tipa sadrži referencu na vrijednost koja je smještena u posebnom memorijskom
prostoru. Svaka promjenjiva vrijednosnog tipa sadrži sopstvenu kopiju podatka, pa operacije
nad jednom promjenjivom nemaju efekta na drugu promjenjivu.
Dve referentne promjenjive mogu sadržati adresu iste vrijednosti, pa operacije nad jednom
referentnom promenljivom mogu uticati na vrijednost na koji referiše druga promjenjiva.
3.2. KLASA, OBJEKAT
Do klasa dolazimo polazeći od pojedinačnih objekata. Posmatranjem objekata uočavamo
njihova zajednička svojstva koja zovemo atributima.
Takođe, objektima možemo pridružiti iste „akcije“ koje u okviru klase nazivamo metodima
klase. Njima opisujemo funkcionalnosti objekata klase. Klasu definišemo navođenjem
rezervisane riječi class iza koje slijedi identifikator klase (ime klase). Poslije imena, ako
formiramo klasu koja nasljeđuje neku, prethodno definisanu klasu, navodimo ’:’ a zatim
11| S t r a n a
STRUKTURA C#
slijedi ime klase iz koje je izvedena. Zatim u vitičastim zagradama {} definišemo članove
klase (atributi i metodi).
class <imeKlase> :<imePrethodnoDefinisaneKlase>
{
opis / definicija članova klase
}
Na primjer, klasu učenika iz uvodnog primjera možemo intuitivno definisati na sljedeći
način:
class Ucenik
{
String ime, prezime;
DateTime datumRodjenja;
int razred;
int SkolskaGodina;
char odjeljenje; int [] ocene;
double prosjek()
{
…
}
void uci(Lekcija X)
{
…
}
}
12| S t r a n a
STRUKTURA C#
Atributima opisujemo određenu osobinu objekta (ime, prezime, datum rođenja, razred,
odjeljenje). Najčešće, različiti objekti iste klase imaju različite vrijednosti atributa. Često
kažemo da vrijednosti atributa definišu stanje objekta. Pri opisu atributa moramo navesti tip
kome taj atribut pripada (cjelobrojni, realni, znakovni, Form, Button) i ime atributa. Pri tome,
navedeni tip je prethodno definisan (ugrađen u sistem ili definisan od strane programera).
int a,b; //cjelobrojni atributi a i b
Button dugme;// atribut dugme, objekat ugrađene klase Button
U programskom jeziku C#, po navođenju “//“, pišemo komentare napisanog koda. Počev od
“//“ pa do kraja linije napisani komentar se pri prevođenju programa ignoriše. Ukoliko
pišemo opširniji komentar, koji obuhvata više redova, od ostalog dijela koda odvajamo ga na
početku sa “/*“ a na kraju sa
“*/“.
Pristup atributima objekta u programskom jeziku C# realizujemo navođenjem imena objekta,
znaka tačka (‘.’), pa imena atributa. Na primer, ako je X objekat klase Ucenik, atributu razred
pristupamo sa X.razred. Metodom opisujemo ponašanje objekta u određenoj situaciji i pod
određenim uslovima (npr. metod uci), ali i određujemo nove vrijednosti na osnovu osobina
koje objekat poseduje (npr. metod prosjek). Na taj način opisujemo funkcionalnost objekta.
Metod klase je imenovani blok naredbi koji se sastoji iz zaglavlja i tijela metoda. U zaglavlju
navodimo povratni tip (ako metod ne proizvodi vrednost koju vraća, navodimo rezervisanu
riječ void), zatim ime metoda za kojim slijedi u malim zagradama spisak parametara metoda.
Za svaki parametar navodi se tip kome taj parametar pripada kao i ime parametra. Posle
zaglavlja u vitičastim zagradama navodimo tijelo metoda koje se sastoji iz odgovarajućih
naredbi programskog jezika C#.
<povratni tip><ime metoda>(<lista parametara>)
{ <tijelo metoda> }
Svi atributi konkretnog objekta dostupni su i vidljivi svim metodima tog objekta i traju dok
traje objekat. Za razliku od njih, promjenjive deklarisane u okviru nekog od metoda (lokalne
promjenjive), nastaju izvršavanjem tog metoda, vidljive su samo u okviru njega, i gase se
13| S t r a n a
STRUKTURA C#
završetkom tog metoda. Zato, ako je potrebno da koristimo vrijednost u okviru više metoda
jedne klase (ili u više izvršavanja jednog metoda), možemo je definisati kao atribut klase.
Neki od metoda se pokreću kao reakcija na događaje koji nastaju tokom izvršavanja
aplikacije. Za takve metode kažemo da obrađuju događaje(engl. event handler).
Kada u toku izvršavanja aplikacije pritisnemo dugme za izlazak iz programa u naslovnoj liniji
prozora u kome se izvršava aplikacija, automatski se pokreće metod Closing u okviru koga
možemo programirati akcije koje će spriječiti izlazak iz programa ukoliko uslovi za to nisu
ispunjeni. Vrlo često u toku izvršavanja Windows aplikacija korisnik ima mogućnost da
klikom na dugme usmjeri dalje izvršavanje aplikacije. Tok izvršavanja aplikacije nakon klika
na dugme programer definiše metodom Click. Poziv metoda objekta u programskom jeziku
C# realizujemo na sljedeći način:
imeObjekta.imeMetoda(lista vrijednosti parametara)
Na primer, ako je x objekat klase Ucenik, metod prosjek pozivamo
x.prosjek()
a metod uci
x.uci(L)
gde je L objekat klase Lekcija.
Svaka klasa sadrži metode koji omogućavaju kreiranje objekta, a može sadržati i metod koji
„uništava“ objekat (destruktor). Metode koje kreiraju objekte zovemo konstruktorima.
Konstruktori su sastavni dio svake klase i nose njeno ime. Pozivom konstruktora objekat
počinje svoj život. Klasa može imati jedan ili više konstruktora koji se razlikuju po listi
parametara. Lista parametara najčešće sadrži vrijednosti kojima inicijalizujemo svojstva
objekta, a može biti i prazna. Konstruktor neke klase pozivamo pri definisanju objekta iste
klase, korišćenjem operatora new.
Objekat A klase Ucenik možemo definisati izrazom
A=new Ucenik("Pera","Peric");
Jedan od osnovnih koncepata objektno orijentisanog programiranja jeste kontrolisanje
pristupa članovima objekta (atributima i metodima). Za svaki član klase (atribute i metode)
14| S t r a n a
STRUKTURA C#
moramo definisati nivo pristupa (vidljivosti, dostupnosti, zaštite). Na taj način definišemo
koliko je taj član klase otvoren prema „spoljašnjem“ svetu.
U programskom jeziku C# postoje više nivoa pristupa a mi ćemo, u početku, koristiti privatni
(private) i javni (public ) pristup. Neki članovi klase mogu da se koriste interno, samo u
metodima klase, i metodi drugih klasa im ne mogu pristupiti. Za takve članove klase kažemo
da su privatni i pri njihovom definisanju navodimo rezervisanu reč private. Privatnim
članovima klase mogu pristupati samo metodi te klase i to je najviši nivo zaštite.
Pri opisu javnih članova klase navodimo rezervisanu reč public . Takvi članovi klase su
dostupni svetu van klase i pristup tim članovima je potpuno slobodan. Podrazumjevani pristup
članovima klase je privatni, što znači da su članovi klase za koje nije naveden nivo pristupa,
privatni članovi. Uobičajeno je da su atributi privatni, a metodi javni članovi klase.
Ukoliko postoji potreba da se izvan klase pristupa privatnim atributima, potrebno je definisati
javne metode ili javno svojstvo (engl. property) u okviru klase koji služe za komunikaciju sa
privatnim atributom, odnosno omogućava postavljanje vrijednosti ili čitanje vrijednosti
atributa. Pri definisanju članova klase, posle nivoa pristupa, možemo navesti i službenu riječ
static kojom definišemo da odgovarajući član postoji i da se koristi i bez kreiranja konkretnih
instanci klase.
Takvim članovima pristupamo navođenjem imena klase umesto imena objekta. Bez obzira na
broj instanci klase koja sadrži atribut static, postoji tačno jedna kopija tog atributa u aplikaciji.
U navedenom primjeru klase Ucenik, član SkolskaGodina možemo definisati kao static jer je
vrijednost ista za sve učenike, i u tom slučaju tom atributu pristupamo Ucenik.SkolskaGodina.
4. .NET Framework
NET Framework je revulucionarna platofrma koju je kreirao Microsoft za razvoj aplikacija.
To je takva platforma na kojoj mogu raditi različite vrste aplikacija (Windows aplikacije, Web
aplikacije, Web servisi...). NET Framework je dizajniran tako da može koristiti bilo koji
programski jezik kao što su C++, Visual Basic, Jscript, čak i ranije verzije Cobol. Takođe je
moguće da se kombinuju pojedini delovi koda iz različitih programskih jezika. Npr. kod
napisan u C# se može kombinovati sa kodom iz Visual Basica.
NET Framework sadrži veliku biblioteku koda koji može da koristi klijentski jezik (kao što je
C#) koristeći tehnike objektno-orijentisanog programiranja. Ova biblioteka se sastoji od
15| S t r a n a
STRUKTURA C#
različitih modula, pri čemu je moguće koristiti pojedine dijelove u zavisnosti od potrebe. Tako
npr. neki moduli sadrže blokove za kreiranje windows aplikacija, drugi dio za mrežno
programiranje, a neki drugi za Web razvoj. Neki moduli su podjeljeni u neke specifičnije pod
module.
4.1. OBJEKTNO - ORIJENTISANO PROGRAMIRANJE
(KLASE, OBJEKTI I METODE)
Objekat je primjerak (instanca) klase. Klasa predstavlja skup podataka i instrukcija koje se
izvode na nekim podacima. Klasa je skup pravila koji određuju kako će se formirati neki
objekat. Svaka klasa ima svoje članove i to su podaci i kod. Podaci koji se definišu u klasi
obično se nazivaju polja (fields). Ovde se koriste termini kao što su funkcija (metoda) koja
predstavlja kod programa koji se izvršava nad podacima. Metodi su ustvari podprogrami i oni
mogu imati svojstva, događaje i konstruktore. Metodi se izvršavaju nad poljima koja su
definisana u klasi.
4.2. KLJUČNE REČI U C#
abstract as base boolbreak byte case catchchar checked class constcontinue decimal default delegatedo double else enumevent explicit extern falsefinally fixed float forforeach goto if implicitin in (generic modifier) int interfaceinternal is lock longnamespace new null objectoperator out out (generic modifier) overrideparams private protected publicreadonly ref return sbytesealed short sizeof stackallocstatic string struct switchthis throw true trytypeof uint ulong uncheckedunsafe ushort using virtualvoid volatile while
4.3. KREIRANJE KONZOLNIH APLIKACIJA U MICROSOFT
VISUAL C# 2010 EXPRESS
16| S t r a n a
STRUKTURA C#
Na slici 2 je prikazana startna strana, na kojoj se mogu odabrati ponuđene mogućnosti za
formiranje novog projekta izborom opcije New Project ili otvaranje već postojećeg projekta
izborom opcije Open Project.
Slika 2. Izgled startnog prozora Microsoft Visual C# 2010 Express
Pri kreiranju konzolne aplikacije izabere se opcija sa padajućeg menija File→New Project.
Zatim se u okviru panela Templates izabere Console Application. Potom se dobija sljedeće:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
17| S t r a n a
STRUKTURA C#
class Program
{
static void Main(string[] args)
{
}
}
}
Da bi aplikacija bilo šta radila potrebno je dodati bar jednu liniju koda ispod glavne funkcije
staticvoid Main(string[] args).
Primjer 1. Ispisati tekst na ekranu.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
classProgram
{
staticvoid Main(string[] args)
{
Console.WriteLine("Prva aplikacija kod C# proogramiranja!");
Console.ReadKey();/*traži se pritiskanje nekog tastera za prekid rada programa*/
}
18| S t r a n a
STRUKTURA C#
}
}
namespace predstavlja .NET način da se kod i njegov sadržaj jedinstveno identifikuju. Takođe
se koristi za kategorizaciju elemenata u .NET Framework. namespace je deklarisan za kod
aplikacije koja se u ovom slučaju naziva ConsoleApplication1.
using System;-predstavlja korišćenje System namespace (odnosi se na biblioteku klasa .NET
Framework, čiju biblioteku koristi C#). Za veće projekte može se kreirati sopstveni
namespaces.
classPrimer{ -definicija klase Primer. Početak klase počinje sa otvorenom vitičastom
zagradom {, a završava se sa }.
staticvoid Main()-počinje glavni metod, gde se izvršava program. Ovaj metod počinje sa
static, što znači da je statički i void - ne vraća vrednost.
Console.WriteLine("Jednostavan C# program."); -WriteLine() je funkcija koji kao rezultat
vraća string koji mu je prosljeđen. Console- podržava konzolni I/O. U kombinaciji se
kompajleru govori da je WriteLine() članica Console klase.
Izrazi u C# se zvršavaju sa tačka-zarezom (;).
Console.ReadKey();- funkcija za unos nekog znaka sa tastature (za prekid rada programa)
Ovaj program se unosi izborom opcije New Project, pa se bira u okviru Online Template
opcija Empty Project. Na padajućem meniju se izabere opcija Build →Build Solution (F6), a
potom sa padajućeg menija Debug → Start Without Debugging. (Ukoliko je u padajućem
meniju ne postoje ove opcije treba izabrati opciju Tools → Settings → Expert Settings).
Ukoliko se fajl ne snimi pod nekim imenom, dodjeljuje mu se automatski ime CodeFile1.cs.
Naravno, postoji mogućnost preimenovanja.
Pri izvršavanju aplikacije pojaviće se u komand propmptu tekstualna poruka:
Jednostavan C# program.
5. PROGRAMIRANJE WINDOWS APLIKACIJA U C#
19| S t r a n a
STRUKTURA C#
Nakon upoznavanja sa tim šta je u stvari jezik C# i kako se uklapa u .NET okruženje, došao je
trenutak da započnemo sa pisanjem koda. U tom poslu koristićemo Visual Studio .NET (VS),
pa treba da naučimo osnovne stvari o torn razvojnom okruženju. VS je ogroman i
komplikovan proizvod, tako da u prvo vrijeme korisniku može djelovati zastrašujuće, ali uz
njegovu pomoć pravljenje jednostavnih aplikacija može biti iznenađujuće prosto.
Čim počnemo sa korišćenjem VS-a uvidjećemo da nije potrebno mnogo znati o njemu da
bismo se poigrali sa C# kodom. Kasnije ćemo vidjeti neke mnogo komplikovanije operacije
koje je moguće izvesti u VS-u, ali za sada su dovoljna osnovna znanja.
Pošto zavirimo u VS, sastavićemo dvije proste aplikacije. Za sada se nećemo mnogo
opterećivati kodom, samo ćemo se upoznati sa tim koje su procedure potrebne da bi se
aplikacija napravila i da bi funkcionisala kako treba, mada će sve to uskoro postati sporedno.
Prva aplikacija koju ćemo napraviti biće jednostavna konzolna aplikacija. Konzolne aplikacije
ne koriste grafičko okruženje Windowsa, tako da ne moramo da brinemo o dugmadima,
menijima, interakciji sa pokazivačem miša i tako dalje. Umjesto toga, pokrenućemo aplikaciju
iz komandne linije i komunicirati sa njom na mnogo prostiji način. Druga aplikacija će biti
bazirana na Windows formularima. Njen izgled, kao i rad sa njom, biće vrlo prepoznatljiv
onima koji su koristili Windows i njeno kreiranje ne zahtjeva ništa više rada nego prethodna.
Ipak, sintaksa njenog koda je mnogo komplikovanija, mada često nećemo morati da vodimo
računa o detaljima.
Dodatna fleksibilnost Windows aplikacija nije neophodna da bi se naučio C# jezik, dok
jednostavnost konzolnih aplikacija omogućuje da se skoncentrišemo na učenje sintakse, a da
za to vrijeme ne brinemo o tome kako aplikacija izgleda niti kakav je osjećaj raditi sa njom.
5.1. VISUAL STUDIO
Kada prvi put učitate VS, odmah se pojavi nekoliko prozora, od kojih je većina prazna,
zajedno sa nizom elemenata menija i ikona sa paletama alatki.
Ukoliko prvi put pokrećete VS biće vam predstavljena lista sa vrijednostima namjenjena za
korisnike sa iskustvom u radu na prethodnim izdanjima ovog razvojnog okruženja.
Automatski odabrani elementi su sasvim uredu, za sada ih prihvatite jer tu nema ničega što se
kasnije ne može promjeniti.
20| S t r a n a
STRUKTURA C#
Izgled VS okruženja je u potpunosti prilagodljiv, ali su nam sasvim dovoljne već postavljene
vrijednosti. One su sređene na sljedeći način:
Slika 3. Korisnički interfejs Visual Studia paketa
Glavni prozor, koji prikazuje uvodnu „početnu stranu" kada se VS pokrene, jeste onaj u kome
se prikazuje cijeli naš kod. Ovaj prozor je podjeljen na kartice tako da možemo lako skakati sa
jedne na drugu datoteku tako što ćemo pritisnuti mišem njihovo ime. Ovaj prozor ima i druge
funkcije: može prikazati grafički korisnički interfejs koji dizajniramo za naš projekat, čiste
tekstualne datoteke, HTML, kao i različite alate ugrađene u VS.
Opisaćemo svaki, kako na njega naiđemo tokom rada.
Iznad glavnog prozora nalaze se palete sa alatkama, kao i VS meni. Ovde možete naći
nekoliko različitih paleta sa alatkama rangiranih po funkcionalnosti - od alatki za snimanje i
21| S t r a n a
STRUKTURA C#
učitavanje datoteka, preko izgradnje i pokretanja projekta, do kontrola za otklanjanje grešaka.
O svima njima ćemo pričati kada nam budu zatrebali. Slijede kratki opisi glavnih
karakteristika VS-a, koje ćete najčešće koristiti:
Server Explorer i Toolbox paleta sa alatkama izbacuju sopstvene menije kada se preko njih
pređe mišem, i otvaraju nam nove dodatne mogućnosti, kao što su pristup i podešavanje
karakteristika i servisa samog servera, i pristup korisničkom interfejsu za izradu elemenata
Windows aplikacija.
Solution Explorer prozor prikazuje informacije o trenutno učitanim rješenjima. Rješenje je po
terminologiji VS-a jedan ili više projekata zajedno sa njihovom konfiguracijom. Ovdje
možemo vidjeti različit pogled na projekte unutar rješenja, kao što su datoteke iz kojih se
sastoje i njihov sadržaj.
Properties prozor omogućuje detaljniji pogled na sadržinu projekta i dozvoljava nam da
izvedemo dodatno konfigurisanje pojedinih elemenata. Na primjer, taj prozor možemo
koristiti da promjenimo izgled dugmeta unutar Windows formulara.
Task List and Output prozor prikazuje informacije prilikom kompajliranja projekta zajedno sa
zadacima koji treba da se izvrše (slično listi zadataka u Microsoft Outlooku). Ovi zadaci se
mogu unijeti ručno, a mogu biti i automatski generisani od VS-a.
Primjer:
Napravite novi projekat konzolne aplikacije birajući File | New | Project... iz menija:
Izaberite Visual C# Projects direktorijum unutar prozora Project Types:, i tip projekta Console
Application u okviru prozora Templates: (za ovo ćete morati malo da pomjerite prozor na
dole). U okviru za tekst Location: promjenite putanju u C:\Temp\SoftIng\LecturesCode\
Vjezba1 (ovaj će direktorijum biti automatski napravljen ukoliko već ne postoji), i ostavite
podrazumjevani tekst u okviru za tekst Name: Pozdrav Svijete.
22| S t r a n a
STRUKTURA C#
Pritisnite mišem na dugme OK. Kada se projekat inicijalizuje dodajte sljedeće redove u
datoteku koja se bude pojavila u glavnom prozoru:
Izaberite Debug | Start Without Debbuging iz menija. Posle nekoliko trenutaka trebalo bi da
vidite sljedeće:
23| S t r a n a
STRUKTURA C#
Takođe samu konzolnu aplikaciju možemo pokrenuti i na drugi način:
Odaberite Start | Programs | Microsoft Visual Studio .NET 2003 | Visual Studio .NET Tools |
Visual Studio .NET Command Prompt. Pojaviće se komandni prozor i biće definisane sve
promjenjive okruženja potrebne prevodiocima i alatkama Visual Studija. Ako se pokrene
obično komandno okruženje, bez zadavanja tih promenljivih, .NET alatke neće raditi.
Poslije otvaranja komandnog prozora .NET-a uđite u folder u kome ste sačuvali ovu konzolnu
aplikaciju. Unesite u komandnom prozoru sljedeću komandu, koja prevodi kod konzolne
aplikacije:
csc Class.cs <Enter>
Naravno programiranje pod cijelim Visual Studio .NET je tzv. Case Sensity, osjetljiv na
velika i mala slova. Tako da morate da obratite pažnju pri kucanju koda. Ovdje to nije slučaj,
ali nije naodmet da se navikavate na velika i mala slova. Prvo ćete dobiti obavještenje o
verziji prevodioca i izvršnog okruženja, a zatim i o autorskim pravima. Pokrenete program i
bićete pozdravljeni na sljedeći način:
C:\> Class1
Pozdrav svijete na jeziku C# !
C:\>
Funkcija Console.WriteLine() dodaje tekstu indikator novog reda (engl. Newline character).
U windowsu je to kombinacija znaka za početak reda i znaka za prelazak u novi red. Da biste
u nekoliko iskaza pisali u istom redu, koristite funkciju Write(). Ona zahteva da sami dodate
indikator novog reda. Sada u prethodnom programu zamjenite iskaz WriteLine() sljedećim
iskazima:
24| S t r a n a
STRUKTURA C#
Console.Write ("Zdravo svijete " ) ;
Console.Write ( "na jeziku C#! \ r \n" ) ;
Obrnuta kosa crta (\) ispred znaka je signal prevodiocu da je u pitanju izlazna sekvenca (engl.
escape sequence). Iz sljedeće tabele vidi se da C# koristi iste izlazne znake kao i C++. Ako
iza obrnute kose crte stavite neki drugi znak, dobićete od prevodioca poruku da nije
prepoznao izlazni znak.
25| S t r a n a
STRUKTURA C#
6. ZAKLJUČAK
Kreiran kako bi se iskoristile ogromne mogućnosti .NET platforme, C# se ubrzo pokazao kao
nevjerovatno univerzalan programski jezik sposoban da zadovolji zahtjeve kako najsloženijih
programskih zadataka kakvi se sreću na serverima, radnim stanicama i superačunarima pa sve
do malih mobilnih uređaja. Njegova sposobnost da direktno upravlja hardverom čini ga
veoma moćnim sredstvom pri kreiranju novih i modifikovanju postojećih operativnih sistema.
Uprkos svim svojim prednostima i sposobnostima, C# kao i njegove prethodnika karakteriše
složenosti sintakse i samog procesa programiranja. Zbog toga, on predstavlja jezik više klase
namijenjen za rad iskusnim, vrhunskim programerima koji su u stanju pravilno i u punoj mjeri
iskoristiti njegove mogućnosti.
26| S t r a n a
STRUKTURA C#
7. Literatura
1. „Objektno orjentisano programiranjeu jeziku C#“, Dragan Milićev, Beogra 1996.
2. „Osnovni elementi programskog jezika C“, Skripta
3. „Programiranje u C“, Skripta, Univerzitet u Zagrebu
4. „C# - Auditorne vježbe“, Skripta, Univerzitet u Beogradu
5. „Tehnike vizuelnog programiranja u C#“, Zoran Ćirović, Ivan Dunđerski, Viša
elektrotehnička škola, Beograd, 2006.
6. „Programiranje u C#“, Skripta, Elektrotehnički fakultet „Mihajlo Pupin“, Zrenjanin
7. „Programski jezik C#“, Mario Bošnjak, Univerzitet u Zagrebu
27| S t r a n a