You are on page 1of 40

Maturski rad iz informatike

Tema:
Veb prezentacija programskog jezika C#
Maturski rad Veb prezentacija programskog jezika C#

Sadraj
I. Uvod u C# .........................................................................................................................................................4
I - 1. ta je .NET okruenje? ................................................................................................................................................... 4
I - 2. ta se nalazi unutar .NET okruenja? ............................................................................................................................ 4
I - 3. Kako napisati aplikaciju koristei .NET okruenje? ....................................................................................................... 4
MSIL i JIT ......................................................................................................................................................................4

Sklopovi .......................................................................................................................................................................4

Upravljivi kd ................................................................................................................................................................4

Sakupljanje otpada .........................................................................................................................................................4


Uklapanje u cjelinu..........................................................................................................................................................4

Povezivanje...................................................................................................................................................................4

ta je C#? .....................................................................................................................................................................4

Kakve aplikacije moemo pisati u C#-u? ................................................................................................................................5

I - 4. Visual Studio.NET ...................................................................................................................................5


Rjeenja u Visual Studio-u .................................................................................................................................................5

Pisanje programa u jeziku C# .............................................................................................................................................5

Razvojno okruenje u Visual Studio .NET ...............................................................................................................................6

Konzolna aplikacija..........................................................................................................................................................6

II. Elementi programskog jezika C# .......................................................................................................................7


II - 1. Promjenljive i izrazi ...........................................................................................................................7
II - 1- 1. Osnove C# sintakse ........................................................................................................................................7

II - 1- 2. Osnove strukture C# konzolne aplikacije ..............................................................................................................7


II - 1- 3. Promjenljive .................................................................................................................................................7

Prosti tipovi promjenljivih .................................................................................................................................................7

Imenovanje promjenljivih, konvencije i vrijednosti literala ..........................................................................................................8

Pravila imenovanja..........................................................................................................................................................8

Vrijednosti literala ..........................................................................................................................................................9

String literali .................................................................................................................................................................9

Odreivanje i dodjeljivanje vrijednosti promjenljivim ................................................................................................................9

II - 1- 4. Izrazi ........................................................................................................................................................10

II - 1- 5. Matematiki operatori ..................................................................................................................................10

II - 1- 6. Operatori dodjeljivanja .................................................................................................................................10

II - 1- 7. Prvenstvo operatora .....................................................................................................................................11

II - 1- 8. Imenovani prostori.......................................................................................................................................11

II - 2. Kontrola toka programa .................................................................................................................12


II - 2 - 1. Bulova logika ..............................................................................................................................................12

II - 2 - 2. Iskaz goto ..................................................................................................................................................13

II - 2 - 3. Grananje ...................................................................................................................................................13

Ternarni operator .........................................................................................................................................................13

II - 2 - 4. Iskaz IF .....................................................................................................................................................13

II - 2 - 5. Iskaz switch................................................................................................................................................14

II - 2 - 6. Petlje .......................................................................................................................................................14

Petlja do while .............................................................................................................................................................14

Petlja while .................................................................................................................................................................15

Petlja for ....................................................................................................................................................................15

Dino Dedi 2
Maturski rad Veb prezentacija programskog jezika C#

Prekidanje petlji ...........................................................................................................................................................15

Beskonane petlje ........................................................................................................................................................16


Funkcije ..................................................................................................................................................................16
II - 3 - 1. Definisanje i koritenje funkcija .......................................................................................................................16

II - 3 - 2. Povratne vrijednosti .....................................................................................................................................17

II - 3 - 3. Parametri ..................................................................................................................................................17

II - 3 - 4. Nizovi parametara .......................................................................................................................................17


II - 3 - 5. Prijenos parametara po referenci i vrijednosti ......................................................................................................18

II - 3 - 6. Izlazni parametri..........................................................................................................................................18

II - 3 - 7. Opseg vaenja promjenljive ............................................................................................................................19

II - 3 - 8. Opseg vaenja promenljive u drugim strukturama .................................................................................................20

II - 3 - 9. Parametri i povratne vrijednosti nasuprot globalnim podacima .................................................................................21

II - 3 - 10. Funkcija Main() ...........................................................................................................................................21

Funkcije lanice struktura ...............................................................................................................................................22


Preoptereenje funkcija..................................................................................................................................................22

Delegati .....................................................................................................................................................................22

II - 3 - 11. Dogaaji ...................................................................................................................................................23

ta je dogaaj? ............................................................................................................................................................23

Koritenje dogaaja ......................................................................................................................................................24

Definisanje dogaaja .....................................................................................................................................................25

Vienamjenske rutine za obradu dogaaja ...........................................................................................................................26

Povratne vrijednosti i rutina za obradu dogaaja ...................................................................................................................27

Osobine .....................................................................................................................................................................29

III - 1 - 3 - 1. Kontrola Button ......................................................................................................................................31

III - 1 - 3 - 2. Kontrole Label i LinkLabel ..........................................................................................................................31

III - 1 - 3 - 3. Kontrola TextBox .....................................................................................................................................32

III - 1 - 3 - 4. Kontrole RadioButton i CheckBox .................................................................................................................32

III - 1 - 3 - 5. Kontrola CheckBox ...................................................................................................................................33

III - 1 - 3 - 6. Kontrola GroupBox ..................................................................................................................................33

III - 1 - 3 - 7. Kontrola RichTextBox ...............................................................................................................................33

III - 1 - 3 - 8. Kontrola ListBox i Kontrola CheckedListBox .....................................................................................................34

III - 1 - 3 - 9. Kontrola ComboBox .................................................................................................................................35

III - 1 - 3 - 10. Kontrola ListView ....................................................................................................................................36

III - 1 - 3 - 11. Metode klase ListView ..............................................................................................................................37

III - 1 - 3 - 12. Kontrola ImageList ...................................................................................................................................37

III - 1 - 3 - 13. Kontrola StatusBar ...................................................................................................................................38

III - 1 - 3 - 14. Kontrola TabControl .................................................................................................................................38

III. Zakljuak ........................................................................................................................................................39


IV. Literatura .......................................................................................................................................................40

Dino Dedi 3
Maturski rad Veb prezentacija programskog jezika C#

I. Uvod u C#
I - 1. ta je .NET okruenje?
Projektno okruenje .NET je nova platforma za razvoj aplikacija napravljena od strane Microsoft-a, a
dizajnirano je tako da se moe koristiti od strane bilo kog programskog jezika. Ovo ukljuuje C#, kao i C++, Visual
Basic i Jscript. Svi ovi programski jezici imaju pristup projektnom okruenju .NET i mogu meusobno da
komuniciraju. Sasvim je mogue kod programiranja u C# koristiti kd napisan u Visual Basic.NET, kao i obrnuto.
I - 2. ta se nalazi unutar .NET okruenja?
Projektno okruenje .NET najveim dijelom se sastoji od ogromne biblioteke kodova koju upotrebljavamo
preko klijentskih jezika. Ova biblioteka podijeljena je na razliite module koje koristimo u zavisnosti od naeg
zadatka. Neki moduli su podijeljeni u razliite podmodule.
I - 3. Kako napisati aplikaciju koristei .NET okruenje?
Pisanje aplikacija unutar .NET projektnog okruenja u stvari znai pisanje koda uz pomo .NET biblioteke
koda. Preporuuje se korienje Visual Studio-ja za programiranje. Prednost ovog okruenja je lakoa kojom se
mogunosti .NET tehnologije mogu integrisati u na kd. Da bi se C# kd izvrio neophodno ga je prevesti u izvorni
ili originalni kd (kompajliranje kda). Unutar .NET okruenja ta operacija ima dvije faze.
MSIL i JIT
Kada kompajliramo kd koristei biblioteku .NET okruenja mi kompajliramo u kd Microsoftovog
posrednog jezika (Microsoft Intermediate Language - MSIL).
Da bi se program izvrio potrebno je jo rada. Za taj posao zaduen je kompajler pravo-na-vrijeme (engl.
Just-In-Time - JIT), koji prevodi MSIL u izvorni kd. Tek tada OS moe izvriti program. Dio imena pravo-na-
vrijeme odnosi se na to da se MSIL kd kompajlira samo kada je to potrebno.
Sklopovi
Kada kompajliramo aplikaciju MSIL kd se smijeta u posebne programske skupove. Takvi skupovi sadre i
izvrne programske datoteke. Programski skupovi pored MSIL-a sadre i takozvane meta informacije (dodatne
podatke koje koristi MSIL, kao to su zvukovi i slike). Meta podatci dozvoljavaju programskim skupovima da budu
potpuno samoopisujui. Ne trebaju nam nikakve dodatne informacije da bi smo koristili programske skupove. Ovo
u stvari zani da je razvoj aplikacija jednostavan.
Upravljivi kd
CLR vodi rauna o naoj aplikaciji kroz upravljanje memorijom, obezbjeivanjem sigurnosti, dozvoljava
meujeziko otklanjanje greaka itd. Suprotno ovome, aplikacije koje ne rade pod kontrolom CLR-a nazivaju se
neupravljive. U C# moemo napisati samo onaj kd koji radi pod upravljivim okruenjem.
Sakupljanje otpada
Jedna od najvanijih mogunosti upravljivog koda je sistem kolekcije otpada. Ovo je metod .NET-a koji se
brine o tome da memorija koju je aplikacija koristila tokom svog izvrenja bude obavezno ispranjena kada
aplikacija vie nije u upotrebi.
Uklapanje u cjelinu
Da bi smo napravili .NET aplikaciju potrebno je:
1. Kd za aplikaciju napisati koristei .NET jezik kao to je C#.
2. Ovaj kd se kompajlira u MSIL, koji je smjeten u programski skup.
3. Kd koji se izvrava mora se predhodno kompajlirati kroz JIT kompajler u izvorni kd.
4. Izvorni kd se izvrava preko upravljive metode CLR.
Povezivanje
C# kd koji se kompajlira u MSIL u koraku 2. ne mora da bude smjeten u jednu datoteku. Mogue je
podijeliti kd aplikacije u razliite datoteke koje e se tokom kompajliranja objediniti u programski skup odnosno
assembly. Razlog ove podjele je taj to je mnogo lake raditi sa vie manjih datoteka nego sa jednom ogromnom.
ta je C#?
C# je jedan od jezika koji slui za izradu aplikacija koje mogu raditi pod .NET CLR-om. To je evolucija C i C++
jezika koju je kreirao Microsoft da bi se radilo sa .NET okruenjem.
Dino Dedi 4
Maturski rad Veb prezentacija programskog jezika C#

Programiranje aplikacije u C# je jednostavnije nego u C++, jer je sintaksa prostija. Kd C# je malo razumljiviji
od C++ koda. Kod koda je jednostavnije otkloniti greke, .NET u svakom trenutku moe odrediti kojem tipu pripada
traeni podatak. C# je samo jedan od jezika koji omoguava rad sa .NET razvojnim okruenjem.
Kakve aplikacije moemo pisati u C#-u?
C# nema ogranienja u vezi toga kakve sve aplikacije moemo napraviti. C# koristi okruenje i samim tim
nema ogranienja u vezi sa moguim aplikacijama. Tipovi najee pravljenih aplikacija su:
Windows aplikacije To su aplikacije tipa Microsoft Office-a koje imaju izgled standardnih Windows
aplikacija. Ovo je pojednostavljeno koritenjem modula Windows obrazaca unutar .NET okruenja, koji u stvari ini
biblioteka kontrola (kao to su dugmii, palete alatki, meniji i tako dalje), a koje nam koriste pri izradi Windows
korisnikog interfejsa (UI).
Web aplikacije To su web strane koje moemo videti kroz bilo koji web pretraiva. Ovaj sistem se naziva
Active Server Pages.NET (ASP.NET), a C# moemo koristiti za izradu ASP.NET aplikacija uz pomo web obrazaca.
Web servisi Oni su nov i uzbudljiv nain izrade aplikacija koje su razmenljive prirode. Koristei web servie
preko Interneta moemo razmenjivati bilo koju vrstu podataka, koristei prostu sintaksu, ne vodei rauna o tome
u kom jeziku je napisana aplikacija niti na kom sistemu je postavljena.
I - 4. Visual Studio.NET
Visual Studio.NET (VS) koristi se za izradu aplikacija sastavljenih od prostih linijskih komandi pa sve do
kompleksnih tipova projekata. VS nije neophodan za programiranje u C#, ali nam mnogo olakava stvari. Slijedi
kratka lista razloga zbog kojih je VS pravi izbor za .NET razvojno okruenje:
VS tekst editor je povezan sa jezicima VS-a (ukljuujui C#) i to tako da omoguava pametnu detekciju
greaka i sugerie odgovarajui kd na pravom mestu dok mi tipkamo.
VS sadri i dizajnerske alate za aplikacije koje ukljuuju Windows obrasce, kao i web obrasce, a koji vam
omoguavaju prost drag-and-drop dizajn UI elemenata.
VS sadri nekoliko arobnjaka ili vodia koji vam automatizuju zadatke opte namjene, koji mogu dodati
odgovarajui kd postojeim datotekama, a da mi o tome ne brinemo.
Rjeenja u Visual Studio-u
Kada koristimo VS za razvoj aplikacija, to radimo kreiranjem rjeenja. Rjeenja sadre projekte koji mogu biti
zasnovani na Windows formularima, Web formularima itd. Rjeenja mogu sadrati i vie projekata, tako da
moemo grupisati srodan kd na jedno mesto, iako e se oni kompajlirati u razliite sklopove na razliitim mjestima
na disku.
Pisanje programa u jeziku C#
VS je ogroman i komplikovan proizvod. Prva aplikacija koja se uobiajeno kreira je jednostavna aplikacija
koja se pokree iz komandne linije. Kompleksnije aplikacije su bazirane na Windows formularima i njihova sintaksa
je mnogo komplikovanija.

Dino Dedi 5
Maturski rad Veb prezentacija programskog jezika C#

Razvojno okruenje u Visual Studio .NET


Ukoliko prvi put pokreete VS biti e vam predstavljena lista sa vrijednostima namijenjena za korisnike sa
iskustvom u radu na prethodnim izdanjima ovog razvojnog okruenja.
Izgled VS okruenja je u potpunosti prilagodljiv.
Glavni prozor je onaj u kome se prikazuje cijeli na kd. Ovaj prozor je podijeljen na kartice tako da moemo
lako prelaziti sa jedne na drugu datoteku. Ovaj prozor ima i druge funkcije: moe prikazati grafiki korisniki
interfejs koji dizajniramo za na projekat, iste tekstualne datoteke, HTML, kao i razliite alate ugraene u VS.
Iznad glavnog prozora nalaze se palete sa alatkama, kao i VS meni. Ovde moete nai nekoliko razliitih
paleta sa alatkama rangiranih po funkcionalnosti.
Konzolna aplikacija
Za kreiranje konzolne aplikacije potrebno je otvoriti C#, kliknuti na New Project, odabrati Console
Application i zatim kliknuti na OK.
Poslije par trenutaka se otvara prozor za pisanje koda sa ve ispisanim kosturom aplikacije. Potrebno je
obratiti panju na liniju static void Main(string[] args). Ona definie glavnu "Main" funkciju koja se prva pokree
Slika 1. Startna stranica Visual Studio-a C# 2010 Express
prilikom pokretanja programa. U tijelo ove funkcije treba upisati kd koji je potrebo izvriti. Tijelo ove funkcije je
definisano poetnom { i zavrnom } velikom zagradom i to je poetak i kraj svih segmenata u C# jeziku.
Da biste probali jednostavan ispis na ekranu, u okviru velikih zgrada upiite tekst tano kao to je prikazan:
class Program
{
static void Main(string[] args)
{
Console.WriteLine ("Moja prva C# aplikacija");
Console.ReadKey ();
}
}
C# razlikuje mala i velika slova!
Pokretanje aplikacije vri se pomou tastera F5 na tastaturi. Ako je kd ispravno napisan pojavljuje se
prozor komandne linije sa ispisanim tekstom:

Slika 2. Primjer prozora komandne linije

Dino Dedi 6
Maturski rad Veb prezentacija programskog jezika C#

II. Elementi programskog jezika C#


II - 1. Promjenljive i izrazi
Raunarski program je serija operacija koja manipulie podacima. Skriven od pogleda korisnika i taj skup
operacija se uvijek odvija u pozadini.
Ako je raunarski program u osnovi izvoenje operacija nad podacima, nama je potreban nain na koji
moemo snimiti neke podatke, kao i utvrivanje metoda manipulacije njima. Ove dvije funkcije se obezbjeuju
preko promjenjivih i izraza. Prethodno je potrebno znati osnovu sintakse C#.
II - 1- 1. Osnove C# sintakse
Izgled C# vrlo je slian C++-u. C# kompajler ne obraa panju na dodatne razmake unutar koda. C# kd je
sastavljen od niza iskaza, a svaki od njih se zavrava takom-zarez - ;. Savreno je prihvatljivo da se jedan iskaz
unese u vie redova. C# spada u jezike sa blokovskom strukturom. Ovi blokovi koji su ogranieni vitiastom
zagradom { i } mogu da sadre bilo koju vrstu iskaza. Vitiaste zagrade ne zahtjevaju taku-zarez iza sebe. Npr.
blok C# koda moe izgledati ovako:
{
<red koda 1, iskaz 1 >;
<red koda 2, iskaz 2 >
}
Ovdje nije prikazan pravi izgled C# koda. Prikazano je samo gdje bi trebalo staviti C# iskaze.
Svaki blok koda ima svoj stepen uvlaenja. Blokovi koda mogu biti jedan u drugom i u tom sluaju se
ubaeni blokovi uvlae jo vie:
{
<red koda 1>;
{
<red koda 2>;
}
<red koda 4>;
}

U C# kodu poeljno je pisati komentare, koji uopte nisu dio C# koda, ali postoje unutar njega. Komentari
omoguavaju da se lake snalazimo u kodu C#. Postoje dva naina pisanja komentara, a to su:
/* Ovo je komentar */
/* Takoer...
... i ovo */
// Ovo je druga vrsta komentara.

II - 1- 2. Osnove strukture C# konzolne aplikacije


Iz sljedeeg primjera moemo odmah uoiti sve elemente sintakse. Najvaniji dio koda za sada je:
static void Main(string[] args)
{
Console.WriteLine ("Moja prva C# aplikacija");
Console.ReadKey ();
}

Ovaj dio koda se izvrava prilikom pokretanja konzolne aplikacije. Jedini red koda koji e neto uraditi jeste
onaj koji smo dodali automatski generisanom kodu.

II - 1- 3. Promjenljive
Promjenljive nam slue da u njih pohranimo podatke. Promjenljive imaju vie tipova. Glavni razlog za ovakav
nain raspodjele po tipovima lei u tome to postoje razliiti tipovi podataka kojima se na drugaiji nain
manipulie. Da bismo koristili promjenljive one moraju biti deklarisane. To znai da moramo da im dodjelimo ime i
tip. Da bi se promjenljiva navela u jeziku C# koristi se tip. Npr.:
<tip> <ime>;
Promjenljiva koja nije deklarisana ili kojoj nije dodjeljena vrijednosti nee se kompajlirati.
Prosti tipovi promjenljivih
Prosti tipovi su brojane ili logike vrijednosti (tano ili netano). Veina prostih tipova su brojevi. Razlog za
podjelu tipova brojnih promjenljivih lei u samom mehanizmu smetanja brojeva kao nizova jedinica i nula u

Dino Dedi 7
Maturski rad Veb prezentacija programskog jezika C#

memoriju raunara. Za cjelobrojne vrijednosti jednostavno uzimamo odreen broj bitova (nezavisnih cifri koje
mogu biti jedinice ili nule) i predstavljamo na broj u binarnom formatu. Promjenljiva koja smjeta N bitova
dozvoljava nam da preko nje prikaemo bilo koji broj izmedu 0 i . Bilo koji broj iznad ove vrijednosti bie
prevelik da se smjesti u promjenljivu.
Tabela 1. Opseg vrijednosti u odnosu na tip podataka

Tip Dozvoljene vrijednosti


sbyte cijeli broj izmeu -128 i 127.
byte cijeli broj izmeu 0 i 255.
short cijeli broj izmeu -32768 i 32767.
ushort cijeli broj O i 65535.
int cijeli broj izmeu -2147.483.648 i 2147.483.647.
uint cijeli broj izmeu 0 i 4294967295
long cijeli broj izmeu -9223.372.036.854.775.808 i 9223.372.036.854.775.807.
ulong cijeli broj izmeu 0 i 1846.744.073.709.551.615.

Znak u koji stoji ispred imena nekih promjenljivih oznaava da u taj tip promjenljivih ne moemo smjetati
negativne brojeve, to se moe vidjeti iz kolone dozvoljenih vrijednosti u tabeli.

Imenovanje promjenljivih, konvencije i vrijednosti literala


Za ime promjenljive ne moe se koristiti bilo koji niz znakova. Osnovna pravila pri imenovanju promjenljivih
su da prvi znak imena promjenljive mora biti ili slovo ili znak podvlaenja _ ili @, a naredni znakovi mogu biti slova,
znakovi podvlaenja ili brojevi. C# je osjetljiv na koritenje velikih i malih slova. Na primer, ovo su sve razliite
promenljive:
myVariable
MyVariable
MYVARIABLE

Pravila imenovanja
Programeri su do sada shvatili da je najbolje imenovati promjenljivu prema njenoj namjeni. U VS-u dovoljno
je da pokaziva mia namjestimo na ime promjenljive kojoj elimo da otkrijemo tip i ispisae se poruka koja nas o
tome obavjetava. Preporuka Microsoft-a je da koristimo konvenciju PascalCase.
Npr :
PrezimeUcenika
ZimaNasegNezadovoljstva
Tabela 2. Prefiksi tipova podataka

Tip podataka Prefiks Primjer vrijednosti


Boolean bln blnUlogovan
Byte byt bytGodiste
Char chr chrLozinka
Decimal dec decProdato
Double dbl dblRezultatIzracunavanja
Integer int intBrojacPetlje
Long lng lngIdKupca
Object obj objWord
Short sho shoTotalnaVrednost
String str strIme

Tabela 3. Prefiksi promjenjivih po podruju vaenja


Podruje vaenja Prefiks Primjer vrijednosti
Global g g_strSnimiPutanju
Private to class m m_blnPromenaVrijednosti

Dino Dedi 8
Maturski rad Veb prezentacija programskog jezika C#

Vrijednosti literala

U prethodnom primjeru vidjeli smo dvije vrijednosti literala - cjelobrojnu i znakovnu. I drugi tipovi
promjenljivih takoe mogu imati vrijednosti literala, to e biti prikazano u sljedeoj tabeli. Mnogi od njih ukljuuju
sufikse, odnosno nizove znakova koji se dodaju na kraju literala da bi se naznaio eljeni tip. Neki literali imaju vie
razliitih tipova koje na osnovu konteksta odreuje kompajler za vrijeme kompajliranja:

Tabela 4. Sufiksi literala kod tipova podataka


Tip/ovi Kategorija Sufiks Primjer - dozvoljene vrijednosti

bool logika nema true ili false


int,uint, long, ulong cjelobrojna nema 100
uint,ulong cjelobrojna u ili U 100U
long, ulong cjelobrojna l ili L 100L
ulong cjelobrojna ul, uL, Ul,lu, 100UL
float realna f ili F 1.5F
double realna nema, d ili D 1.5
decimal realna m ili M 1.5M
char znakovna nema a, ili escape sekvenca
string niz znakova nema a..a, moe se ukljuiti escape sekvenca

String literali
Tabela 5. Escape sekvence
Escape sekvence Znak koji pravi Vrednost znaka u unicode-u
\` jednostruki navodnik 0x0027
\" dvostruki navodnik 0x0022
\\ obrnuta kosa crta 0x005C
\0 nula 0x0000
\a alarm(pravi pitanje) 0x0007
\b unazad za jedan znak 0x00080
\f prelazak na sledeu stranicu 0x000C
\n novi red 0x000A
\r prenos u novi red 0x000D
\t horizontalni tabulator 0x0009
\v vertikalni tabulator 0x000B

Posljednja kolona ove tabele prikazuje Unicode vrijednosti. Za svaki Unicode znak moemo navesti
odgovarajuu escape sekvencu, kao u tabeli. Sekvenca se uvijek sastoji od znaka \ iza koga slijedi etvorocifrena
heksadecimalna vrijednost. To znai da su sljedea dva stringa ekvivalentna:
"Petar\s string."
"Petar\u0027s string"

Odreivanje i dodjeljivanje vrijednosti promjenljivim


Promjenljive deklariemo koristei njihov tip i ime. Npr.:
int godiste;

Potom smo joj dodjelili vrijednost uz pomo operatora dodjele :


godiste = 25;

Promjenljive moraju biti inicijalizovane pre nego to ih upotrijebimo. Moemo navesti vie razliitih
promjenljivih istog tipa u isto vrijeme ako ih odvojimo zarezom:
int xVelicina, yVelicina;

Druga tehnika koju ete sretati jeste dodjeljivanje vrijednosti promjenljivim dok ih deklariemo:
int godiste = 25;

Dino Dedi 9
Maturski rad Veb prezentacija programskog jezika C#

Moemo koristiti i obje tehnike zajedno:


int xVelicina =4, yVelicina = 5;

Ovdje su xVelicina i yVelicina razliitih vrijednosti.


int xVelicina, yVelicina = 4;

II - 1- 4. Izrazi
C# kd sadri vei broj operatora koji slue manipulaciji promjenjivih, ukljuujui i operator dodeljivanja.
Kombinovanjem operatora sa promenljivima i literalima moemo formirati izraze.
Postoji irok spektar operatora. Prosti ukljuuju sve osnovne matematike operacije, kao to je operator +
za sabiranje, a oni komplikovaniji manipulaciju nad sadrajem promenljive. Postoje i logiki operatori koji slue u
radu sa logikim promenljivima. Operatori se mogu grubo podeliti na tri kategorije:
unarni operatori koji rade samo sa jednim operandom
binarni operatori koji rade sa dva operanda
ternarni operatori koji rade sa tri operanda
II - 1- 5. Matematiki operatori
U donjoj tabeli navedeni su svi operatori zajedno sa kratkim primjerom njihove upotrebe i rezultatima.
Tabela 6. Operatori
Operator Kategorija Kategorija Rezultat
+ binarni var1 = var2 + var3; var1 je dodjeljena vrijednost sume
- binarni var1 = var2 - var3; var1 je dodejljena vrijednost razlike
* binarni var1 = var2 * var3 var1 je dodjeljena vrijednost proizvoda
/ binarni var1 = var2 /var3 var1 je dodjeljena vrijednost dijeljenja
% binarni var1 = var2 % var3 var1 je dodjeljena vrijednost koja je ostatak dijeljenja
+ unarni var1 = + var2 var1 je dodjeljena vrijednost var2
- unarni var1 = - var2 var1 je dodjeljena vrijednost var2

Tabela 7. Operatori inkrementiranja i dekrementiranja


Operator Kategorija Primer izraza Primer izraza
++ unarni var1 = ++var2 var1 je dodjeljena vrijednost. var2+1,
var2 je uveana za 1.
-- unarni var1 = --var2 var1 je dodjeljena vrijednost. var2-1,
var2 je umanjena za 1.
++ unarni var1 = var2++ var1 je dodjeljena vrijednost var2.
var2 je uveana za 1
-- unarni var1 = var2-- var1 je dodjeljena vrijednost var2.
var2 je umanjena za 1.

Operator ++ uvijek uveava svoj 1 operand za 1, a - - ga uvijek umanjuje za 1. Stavljanje operatora prije
operanda znai da se operand mijenja prije nego to se izvre dalja izraunavanja i obrnuto.
II - 1- 6. Operatori dodjeljivanja
U donjoj tabeli navedeni su operatori dodjeljivanja zajedno sa primjerom njihove upotrebe i rezultata.
Tabela 8. Operatori dodeljivanja

Operator Kategorija Primer izraza Rezultat


= binarni var1=var2; var1 je dodjeljena vrijednost var2
+= binarni var1+=var2 var1 je dodjeljena vrijednost koja ini sumu var 1 var 2
-= binarni var1-=var2; var1 je dodjeljena vrijednost razlike var1 i var2
*= binarni var1*=var2; var1 je dodjeljena vrijednost proizvoda var1 i var 2
/= Binarni var1/=var2; var1 je dodjeljena vrijednost djeljenja var1 i var2
%= binarni var1%=var2; var1 je dodjeljena vrijednost ostatka djeljenja var1 i var2

Dino Dedi 10
Maturski rad Veb prezentacija programskog jezika C#

II - 1- 7. Prvenstvo operatora
Kada raunar obrauje izraz, on izvrava svaki operator prema redoslijedu. To ne znai da se operatori
uvijek izraunavaju s lijeva na desno. Jednostavan primjer gdje se prvo izvrava operator + pa tek onda = :
var1 = var2 + var3;

Postoje i druge situacije kada prvenstvo izvoenja operatora nije oigledno, na primjer:
var1 = var2 + var3 * var4;

Ovdje je redoslijed izvravanja sljedei: prvo operator * , zatim + i na kraju =. Tu moemo odrediti prvenstvo
izvravanja koristei zagrade. Npr. :
var1 = (var2 + var3) * var4;

Redoslijed po kome se izvravaju operatori prikazan je u tabeli.


Tabela 9. Prvenstvo operatora
Primer izraza Rezultat
var1=var2; var1 je dodjeljena vrijednost var2
var1+=var2 var1 je dodjeljena vrijednost koja ini sumu var 1 var 2
var1-=var2; var1 je dodjeljena vrijednost razlike var1 i var2
var1*=var2; var1 je dodjeljena vrijednost proizvoda var1 i var 2
var1/=var2; var1 je dodjeljena vrijednost djeljenja var1 i var2
var1%=var2; var1 je dodjeljena vrijednost ostatka djeljenja var1 i var2

II - 1- 8. Imenovani prostori
Imenovani prostori se takoer koriste i prilikom kategorisanja objekata .NET okruenja. C# kd sadri u
globalnim imenovanim prostorima. To znai da se tom kodu moe pristupiti iz nekog drugog koda koji je unutar
globalnih imenovanih prostora tako to se navede njegovo ime. Moemo koristiti i kljunu rije namespace, da
bismo definisali imenovani prostor u bloku koda. Takva imena moraju biti kvalifikovana, ukoliko e ih koristiti kd
izvan imenovanog prostora.
Kvalifikovano ime je ono koje sadri sve informacije o svojoj hijerarhiji. Kvalifikovana imena koriste znak (.)
izmeu nivoa imenovanog prostora.
namespace LevelOne
{
//kd u imenovanom prostoru LevelOne
//ime "NameOne" definisano
}
//kd u globalnom imenovanom prostoru

Ovaj kd definie jedan imenovani prostor LevelOne kao i jedno ime u njemu, NameOne. Kd napisan
unutar LevelOne imenovanog prostora poziva ovo ime upotrebom "NameOne. Kd u globalnom imenovanom
prostoru mora pozivati ovo ime na sljedei nain: "LevelOne.NameOne".
U okviru imenovanih prostora moemo definisati ugnjedene imenovane prostore, takoer koristei
kljunu rije namespace. Ugnjedeni imenovani prostori se pozivaju preko svoje hijerarhije. Npr. :
namespace LevelOne
{
//kd u imenovanom prostoru LevelOne
namespace LevelTwo
{
//kd u imenovanom prostoru LevelOne.LevelTwo
//ime "NameTwo" definisano
}
}
//kd u globalnom imenovanom prostoru

Ovdje se NameTwo mora pozivati kao "LevelOne.LevelTwo.NameTwo" iz globalnog imenovanog prostora.


Vano je naglasiti da su imena jedinstveno definisana od strane njihovih imenovanih prostora. Mogli bismo
definisati ime "NameThree" u imenovanim prostorima LevelOne i LevelTwo:

Dino Dedi 11
Maturski rad Veb prezentacija programskog jezika C#

namespace LevelOne
{
//ime "NameThree" definisano
namespace LevelTwo
{
//ime "NameThree" definisano
}
}
Ovdje smo definisali dva imena, LevelOne.NameThree i LevelOne.LevelTwo.NameThree, koja se mogu
koristiti nezavisno jedno od drugoga. Kada definiemo imenovani prostor, moemo pojednostaviti pristup imenima
koje sadre pomou iskaza using. Npr. u sljedeem kodu iz imenovanog prostora LevelOne treba da imamo pristup
imenima u imenovanom prostora LevelOne.LevelTwo bez klasifikacije:
namespace LevelOne
{
using LevelTwo;
namespace LevelTwo
{
//ime
"LevelTwo" definisano
}
}

Sada iz imenovanog prostora LevelOne moemo pozvati ime LevelTwo.NameTwo pomou "NameTwo".
II - 2. Kontrola toka programa
Postoje dvije metode kontrole toka programa, odnosno redosljeda izvrenja redova u C# kodu.
Grananje gdje se izvrava kd uslovno u zavisnosti od rezultata nekog poreenja.
Petlje - ponavljanje izvrenja istih iskaza (odreeni broj puta do unaprijed zadatog
uslova).
II - 2 - 1. Bulova logika
Tip bool moe sadrati samo dvije vrijednosti: true ili false. Uglavnom se tipovi bool koriste da snimi rezultat
nekog poreenja. Poreenje zahtjeva upotrebu relacionih operatora koji su prikazanih u donjoj tabeli.
Tabela 10. Operatori poreenja
Operator Kategorija Primjer izraza Rezultat
var1 je dodjeljena vrijednost true ako je
== binarni var1=var2== var3;
var2 jednaka var3, u suprotnom false.
var1 je dodjeljena vrijednost true ako je
!= binarni var1=var2!= var
var2 nije jednaka var3, u suprotnom false.
var1 je dodjeljena vrijednost true ako je
< binarni var1=var2< var3
var2 manja od var3, u suprotnom false.
var1 je dodjeljena vrijednost true ako je
> binarni var1=var2>var3;
var2 vea od var3, u suprotnom false.
var2 manja ili jednaka var3, u suprotnom
<= binarni var1=var2<= var3;
false.
var2 vea ili jednaka var3, u suprotnom
>= binarni var1=var2>= var3;
false.

Postoje i logiki operatori koji su namjenjeni iskljuivo radu sa logikim vrijednostima:


Tabela 11. Logiki operatori
Operator Kategorija Primjer izraza Rezultat
var 1 je dodeljena vrednost true ako je var2 false, ili
! unarni var1 = !var2;
vrednost false ako je var2 true (logiko NE).
var1 je dodeljena vrednost true ako var2 i var3 imaju
& binarni var1 = var2 & var3;
vrednost true u suprotnom false (logiko I).
var1 je dodeljena vrednost true ako var2ima vrednost
true ili var3 ima vrednost true ili obe promenljive imaju
| binarni var1 = var2|var3;
vrednost true, u suprotnom dobija vrednost false (logiko
ILI).

Dino Dedi 12
Maturski rad Veb prezentacija programskog jezika C#

var1 je dodeljena vrednost true ako var2 ima vrednost


true ili var3 ima vrednost true, ali ne i ako obe
^ binarni var1=var2 ^ var3;
promenljive imaju vrednost true, u suprotnom false
(Logiko ekskluzivno ILI).

Operatori & i I imaju dva slina operatora:


Tabela 12. Logiki operatori
Operator Kategorija Primjer izraza Rezultat
var1 je dodjeljena vrijednost true ako var2 i var3 imaju
&& binarni var1=var2&&var3;
vrednost true, u suprotnom false (logiko I)
var1 je dodeljena vrednost true ako var2 ili var3 (ili obje
|| binarni var1=var2||var3; promenljive) imaju vrednost true, u suprotnom var1
dobija vrednost false (logiko ILI)

Njihov rezultat je potpuno isti kao & i |, ali postoji bitna razlika u nainu na koji se dobija njihov rezultat, to
moe dati bolje performanse programa. Oba operatora prvo ispituju vrijednost prvog operanda (var2, pa na
osnovu vrijednosti ovog operanda moda nee biti potrebno da se ispita drugi operand (var 3).
II - 2 - 2. Iskaz goto
Jezik C# dozvoljava da se odreeni dijelovi koda obiljee i da se na ta mesta direktno skae pomou iskaza
goto. Galvna korist je u tome to moemo na jednostavan nain kontrolisati ta se u kodu izvrava i kada. Iskaz
goto se koristi na sljedei nain:
goto <imeOznake>;

Npr.:
int myInteger = 5;
goto myLabel;
myInteger +=10;
myLabel;
Console.WriteLine("myInteger = {0}", myInteger);

Program se izvrava na sljedei nain:


Promjenjiva mylnteger je deklarisana kao tip int i dodjeljena joj je vrijednost 5.
Iskaz goto prekida normalan tok programa i prebacuje kontrolu na red obiljeen sa
myLabel.
Vrijednost mylnteger se ispisuje na konzoli.
II - 2 - 3. Grananje
Grananje je kontrola toka. Red na koji se prelazi zavisi od uslovnog iskaza. Taj uslovni iskaz biti e zasnovan
na poreenju dvije ili vie vrijednosti sa koritenjem Bulove logike. Postoje tri tehnike grananja :
tenarni operator
iskaz if
iskaz switch
Ternarni operator
Najjednostavniji nain da se izvede poreenje jeste pomou ternarnog uslovnog operatora ? : . Sintaksa je
sljedea:
<test> ? <resultIfTrue> : <resultIfFalse>

Ovdje se ispituje <test> da bi se dobila logika vrednost, pa je rezultat operator <resultIfTrue> ili
<resultIfFalse> u zavisnosti od te vrijednosti.
II - 2 - 4. Iskaz IF
Iskaz if je mnogo bolji nain za donoenje odluka. Ovaj iskaz koristimo da uslovno izvrimo druge iskaze.
Najjednostavnije koritenje iskaza if je sledee:

Dino Dedi 13
Maturski rad Veb prezentacija programskog jezika C#

If (<test>):
<kd se izvrava ako je test istinit >;

Ovdje se <test> izraunava (mora biti logika vrednost da bi se kd kompajlirao), a iskaz ispod se izvrava
ako uslov <test> ima vrednost true. Nakon izvrenja tog koda, ili ukoliko <test> imao rezultat false, program se
nastavlja od sledeeg reda koda.
Moemo navesti i dodatni kd koristei iskaz else u kombinaciji sa iskazom if. Ovaj iskaz se izvrava ako
<test> ima vrednost false:
if (<test>)
<kd se izvrava ako je <test> true>;
else
<kd se izvrava ako je <test> false>;
Da bi ste probali jednostavan ispis na ekranu u okviru velikih zgrada upiite tekst tano kao to je prikazano:
static void Main(string[] args) {
string poredjenje;
Console.WriteLine("Dobar dan.");
Console.WriteLine("Unesite prvi broj");
double prvi = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("Unesite drugi broj");


double drugi = Convert.ToDouble(Console.ReadLine()); Slika 3. Rezultat izvravanja navedenog
if (prvi > drugi) programa
Console.WriteLine("Prvi broj je veci od drugog.");
else
Console.WriteLine("Drugi broj je veci od prvog.");
Console.ReadKey();
}
Ako je kd ispravno napisan, pojavljuje se prozor komandne linije sa ispisanim tekstom:
II - 2 - 5. Iskaz switch
Iskaz switch je vrlo slian iskazu if po nainu uslovnog izvravanja koda na osnovu neke vrijednosti dobijene
iz testa. Switch nam dozvoljava da ispitamo vie razliitih vrijednosti test promenljive (selektorske vrijednosti)
odjednom. Osnovna struktura switch iskaza je sljedea:
switch (<testProm>)
{
case <constIzraz11>:
<kd koji se izvrava ako je <testProm> == <constIzraz11> > break;
case <constIzraz12>:
<kd koji se izvrava ako je <testProm> == <constIzraz12> > break;
default::
<kd koji se izvrava ako je <testProm> != <constIzrazi> break;
}

Vrijednost u promenljivoj <testProm> poredi se sa svakom od vrijednosti <constIzrazX> (navedenim u iskazu


case) i ako postoji poklapanje onda se izvrava kd predvien za to. Ukoliko ne, onda se izvrava kd u dijelu
default. Na kraju koda svake sekcije imamo dodatnu komandu break da kd programa moga da pree u sledei
case iskaz.
II - 2 - 6. Petlje
Petlje predstavljaju ponavljanje izvrenja iskaza. Moemo ponavljati isti kd onoliko puta koliko mi elimo.
Petlja do while
Kd koji je obiljeen unutar bloka do while petlje se izvrava, a zatim se izvodi logiki test, pa se kd izvrava
ponovo ako je rezultat tog testa true i tako dalje.
Iz petlje se izlazi kada je rezultat testa false. Struktura do petlje izgledao ovako (gdje je <test> logika
vrednost) :
do {
<kd koji se ponavlja u petlji>
}
while (<test>);

Da biste probali jednostavan ispis na ekranu upiite tekst tano kao to je prikazano:

Dino Dedi 14
Maturski rad Veb prezentacija programskog jezika C#

class Program
{
static void Main(string[] args)
{
int i = 1;
do {
Console.WriteLine(i++);
}
while (i < 11);
Console.ReadKey(); Slika 4. Rezultat izvravanja
} navedenog programa
}
Ako je kd ispravno napisan, pojavljuje se prozor komandne linije sa ispisanim tekstom:
Petlja while
Kod while petlji logiki test se izvrava na poetku. Ukoliko je rezultat testa false, ciklus petlje se nikad ne
izvri, nego se prelazi na red koda koji se nalazi iza petlje. Petlje while se definiu na sledei nain:
while (<test>)
{
<kd unutar petlje>
}
int i=1;

Da biste probali jednostavan ispis na ekranu upiite tekst tano kao to je prikazano:
class Program
{
static void Main(string[] args)
{
int i = 1;
while (i <= 11) {
Console.WriteLine(i++);
}
Console.ReadKey();
}
} Slika 5. Rezultat izvravanja
navedenog programa
Ako je kd ispravno napisan, pojavljuje se prozor komandne linije sa
ispisanim tekstom:
Petlja for
Petlja for se izvrava unapred odreeni broj puta i odrava svoj sopstveni broja. Ako elimo petlju sa
brojaem koji se poveava od 1 do 10 u koracima po jedan, poetna vrednost je 1 - uslov je da broja bude manji ili
jednak 10, a operacija koja se izvodi na kraju svakog ciklusa je poveavanje brojaa za jedan.
int i;
for (i=1; i<=10; ++ i) {
Console.Writeline(i); }
Da biste probali jednostavan ispis na ekranu upiite tekst tano kao to je prikazano:
class Program {
static void Main(string[] args) {
int i;
for (i = 1; i <= 10; ++i) {
Console.WriteLine(i); }
Console.ReadKey();
}

Ako je kd ispravno napisan, pojavljuje se prozor komandne linije sa


ispisanim tekstom:
Slika 6. Rezultat izvravanja for petlje
Prekidanje petlji
Jezik C# obezbjeuje etiri komande koje nam pomau u prekidu petlji. Tri od njih smo ve vidjeli u dragim
situacijama:
break - trenutno zavrava petlju

Dino Dedi 15
Maturski rad Veb prezentacija programskog jezika C#

continue - trenutno zaustavlja ciklus petlje (izvravanje se nastavlja od sledeeg ciklusa)


goto - dozvoljava iskakanje iz petlje na obiljeeno mjesto u kodu
return - iskae iz petlje i iz funkcije koja je sadri.
Komandom break se jednostavno izlazi iz petlje i nastavlja izvrenje prvog reda koda poslije petlje. Npr. :
int i = 1;
while (i <=10)
{
if (i ==6)
break;
Console.WriteLine(i++);
}

Kd e ispisati brojeve od 1 do 5, zatim e komanda break prouzrokovati izlaz kada bude jednako 5.
Continue zaustavlja samo trenutni ciklus, a ne cijelu petlju. Npr. :
int i = 1;
for (i=l; i<=10; i++) {
if ( (i. % 2)==0)
continue;
Console.WriteLine(i) ;
}
Trei metod je koritenje iskaza goto kao to smo videli ranije, na primjer:
int i = 1;
while (i <=10) {
if (i == 6)
goto TackaIzlaza;
Console.WriteLine i++) ;
}
Console.WriteLine ("Ovaj kd se nikad nee izvriti .);
TackaIzlaza;
Console.WriteLine ("Ovaj kd se izvrava kad se iz petlje izae uz pomo goto. ");

Izlazak iz petlje sa goto je dozvoljen, ali nije dozvoljeno uskakanje u petlju.

Beskonane petlje

Mogue je (grekom ili namjerno), definisati petlje koje se nikada ne zavravaju, tzv. beskonane petlje. Kao
vrlo jednostavan primjer pogledajte sledee:
while (true)
{
// kd u petlji
}

Funkcije
Izvoenje operacije nad podacima podrazumijevalo je postavljanje koda na tano odreeno mesto gde on
treba da funkcionie.Takva programska struktura je ograniena. Ovaj problem rjeavamo uz pomo funkcija.
Funkcije u jeziku C# predstavljaju sredstva kojima se obezbjeuje blok koda koji moe biti izvren na bilo kom
mjestu u aplikaciji.
Potrebno je da samo jednom napiemo kd, i svaka promjena koju unesemo odrazie se na sva mesta na
kojima se kd izvrava. Koristei funkcije smanjujemo glavni dio kda u aplikaciji, zato to se sporedni delovi
izvravaju izvan glavnog.
II - 3 - 1. Definisanje i koritenje funkcija
Da biste probali jednostavan ispis na ekranu, u okviru velikih zgrada upiite tekst tano kao to je prikazano:
class Program {
static void Main(string[] args {
Write();
Console.ReadKey();
}
static void Write() {
Slika 7. Rezultat izvravanja funkcije programa

Dino Dedi 16
Maturski rad Veb prezentacija programskog jezika C#

Console.WriteLine("Dobar dan");
Console.WriteLine("Ovo je tekst iz funkcije.");} }
Ako je kd ispravno napisan, pojavljuje se prozor komandne linije sa ispisanim tekstom:
II - 3 - 2. Povratne vrijednosti
Najjednostavniji nain za razmjenu podataka sa funkcijom jeste koritenje povratne vrijednosti. Povratne
vrijednosti kao i promenljive imaju svoj tip. Npr. moemo imati funkciju sa imenom getString() ija je povratna
vrijednost tipa string. To moemo koristiti u kodu na sljedei nain:
string mojString;
mojString = getString() ;

Kada funkcija vraa vrijednost moramo je izmijeniti na dva naina:


Moramo navesti tip povratne vrijednosti u deklaraciji funkcije, umesto kljune rei void.
Moramo koristiti kljunu rije return da bi smo zavrili funkciju i prenijeli povratnu
vrijednost u pozivajui kd.
static double getVa() {
return 3.2;
}

Povratne vrijednosti su obino rezultat prorauna izvedenog unutar funkcije. Kada doe do iskaza return,
izvravanje programa se vraa na pozivajui kd. Redovi unutar funkcije koji se nalaze iza ovog iskaza nee biti
izvreni. To ne znai da se return mora postaviti na kraj funkcije. Iskaz return moemo koristiti prije toga.

II - 3 - 3. Parametri
Kada funkcija treba da prihvati parametre, moramo navesti listu parametara koje funkcija prihvata, (zajedno
sa njihovim tipovima unutar definicije funkcije) i odgovarajuu listu parametara u svakom pozivu funkcije. Npr.
prosta funkcija moe imati dva parametra tipa double i vratiti njihov proizvod:
static double product (double param1, double param2) {
return param1 * param2;
}

II - 3 - 4. Nizovi parametara
C# nam dozvoljava da definiemo samo jedan poseban parametar za funkciju. Ovaj parametar poznat je
kao niz parametara. Nizovi parametara dozvoljavaju nam da pozivamo funkcije koristei promenljivu koliinu
parametara, a definisani su kljunom rei params.
Nizovi parametara mogu biti korisni za pojednostavljivanje koda, jer ne moramo prosljeivati nizove iz
naeg pozivajueg koda. Sljedei kd je potreban da bi se definisala funkcija koja koristi niz parametara:
static <returnType> <functionName>(<p1Type><p1Name>, . . . , params <type> []
<name>) {
.....
.....
return <returnValue>;
}

Ovu funkciju moemo pozvati sa:


<functionName>(<p1>,...,<val1><val2>,...)

Ovdje su <val1>, <val2> vrijednosti tipa <type> koji je koriten da bi se inicijalizovao niz <name>. Ne postoji
ogranienje u broju parametara koje moemo navesti, jedino ogranienje je da su svi tipa <type>.
Da biste probali jednostavan ispis na ekranu, u okviru velikih zgrada upiite tekst tano kao to je prikazano:
class Program
{
static int sumProm(params int[] vals) {
int sum = 0;
foreach (int prom in vals) {
sum += prom; Slika 8. Rezultat izvravanja funkcije
} kojoj se prosljeuju nizovi parametara
return sum;
}
static void Main(string[] args) {
Dino Dedi 17
Maturski rad Veb prezentacija programskog jezika C#

int sum = sumProm(1, 5, 2, 9, 8);


Console.WriteLine("Dobar dan");
Console.WriteLine("Vrijednost sume je :", sum);
Console.ReadKey();
}
}
Ako je kd ispravno napisan, pojavljuje se prozor komandne linije sa ispisanim tekstom:
II - 3 - 5. Prijenos parametara po referenci i vrijednosti
Funkcije koje smo do sada naveli koristile su u prenos parametara po vrijednosti. Podrazumjeva se da smo,
koristei parametre, prosljeivali njihove vrijednosti u promenljive koje koristi funkcija. Bilo koja promjena nad
promjenljivom unutar funkcije nema nikakvog efekta na parametre navedene u pozivu funkcije. Npr. razmotrite
funkciju koja udvostruuje i prikazuje vrijednost prosljeenog parametra:
static void DupliranaVrijed(int prom) {
prom *=2;
Console.WriteLine("Duplirana promenjiva = (0)", prom);
}
Ovdje je parametar prom udvostruen unutar funkcije. Ako je pozovemo na sljedei nain:
int mojBroj = 5;
Console.WriteLine("MojBroj = ", mojBroj);
DupliranaVred (mojBroj) ;
Console.WriteLine("MojBroj = ", mojBroj);
Na konzoli e se pojaviti tekst:
mojBroj = 5
duplirana promenljiva = 10
mojBroj = 5
Pozivanje funkcije DupliranaVrijed() sa promenljivom mojBroj kao parametrom, ne utie na vrijednost
mojBroj unutar bloka Main(), iako je parametar val koji joj je dodjeljen udvostruen. Ako poelimo da se vrijednost
promenjive mojBroj promijeni, eto problema. Moemo koristiti funkciju koja vraa novu vrijednost za mojBroj, a
pozivamo je sa:
int mojBroj = 5;
Console.WriteLine{"MojBroj =", mojBroj);
MojBroj = DupliranaVrijed(mojBroj) ;
Console.WriteLine("MojBroj =", mojBroj);
Ovaj kd se nee izboriti sa promjenom vrijednosti za vie promjenljivih koje se koriste kao parametri.
Umjesto toga, elimo da proslijedimo parametar po referenci. To znai da e funkcija raditi sa potpuno istom
promjenjivom kao u pozivu funkcije, a ne samo sa promjenjivom koja ima istu vrijednost. Sve promjene koje se
deavaju toj promjenljivoj odrazit e se na promjenljivu koja se koristi kao parametar. Da bi se ovo uradilo, treba
jednostavno upotrebiti kljunu re ref za navoenje parametra:
static void DupliranaVred (ref int prom) {
prom *= 2;
Console.WriteLine("duplirana promenljiva = (0)", prom);
}
Ponovimo to u pozivu funkcije (to je obavezno, jer je parametar tipa ref dio potpisa same funkcije):
int mojBroj = 5;
Console.WriteLine("MojBroj =", mojBroj);
DupliranaVrijed (ref mojBroj);
Console.WriteLine("MojBroj =", mojBroj);
Tada bi izlazni tekst na konzoli bio sledei:
mojBroj = 5
duplirana promenljiva = 10
mojBroj = 10

II - 3 - 6. Izlazni parametri
Moemo definisati da je dati parametar izlazni parametar, preko kljune rei out koja se koristi na isti nain
kao i kljuna re ref (kao modifikator parametra u definiciji funkcije, i pri njenom pozivanju). Rezultat toga je isto
ponaanje kao i kod referentnog parametra, u smislu da se vrijednost parametra na kraju funkcije vraa
promjenjivoj koja je upotrebljena u njenom pozivu. Meutim, postoje i vane razlike. Dok za parametre tipa ref
nije dozvoljeno koristiti promjenljive kojima nije dodijeljena vrijednost, kod parametara out to moemo raditi.
Pored toga, out parametar se mora tretirati kao da mu nije dodijeljena vrijednost od strane funkcije koja ga koristi.

Dino Dedi 18
Maturski rad Veb prezentacija programskog jezika C#

To znai da, iako je dozvoljeno koristiti promjenljivu kojoj je dodijeljena vrijednost kao izlazni parametar, vrijednost
koju ona sadri u pozivu funkcije biti e izgubljena nakon izvrenja te funkcije.
Na primer, razmotrite proirenje funkcije MaxVrednost() koja vraa najveu vrijednost u nizu. Izmijenit
emo funkciju tako da vrati indeks elementa sa najveom vrijednosti unutar niza. Da bi bilo jednostavnije vratit
emo samo indeks prve pojave najveeg elementa, ukoliko ih ima vie. Da bismo ovo uradili dodajemo izlazni
parametar mijenjajui funkciju na sljedei nain:
static int MaxVrijednost(int[] intArray, out in maxIndex) {
int maxProm = intArray [0];
maxIndex =0;
for (int i = 1; i < intArray.Length; i++)
{
if (intArray[i] > maxProm)
}
maxProm = intArray [i] ;
maxIndex = i;
return maxProm;
}
Moemo koristiti funkciju na sljedei nain:
int [] myArray = (1, 8, 3, 6, 2, 5, 9, 3, 0, 2);
int maxIndex
Console.Write("Maksimalna vrijednost u nizu myArray je {0)", MaxVrijednost(myArray, out maxIndex);
Console.WriteLine{"Maksimalna vrijednost niza je (0) element u nizu", maxindex+1);
Rezultat ovoga je:
Maksimalna vrednost u nizu myArray je 9
Maksimalna vrednost niza je 7 element u nizu
Ovde je vano naglasiti da se kljuna rije out mora upotrijebiti u pozivu funkcije, ba kao i kljuna rije ref.
Upamtite daje vrijednosti maxIndex dodato jedan, i vraa se ovde dok je ispisujemo na ekran. To je zato da bismo
indeks preveli u razumljiviji oblik, tako da se prvi element u nizu ne oznaava sa 0 ve sa 1.
II - 3 - 7. Opseg vaenja promjenljive
Moda ste se upitali zato je uopte potrebna razmjena podataka sa funkcijama. Razlog je taj to se
promjenljivama u C#-u moe pristupiti samo iz lokalnih regiona koda. Za datu promjenljivu kae se da ima opseg
vaenja unutar koga joj se moe pristupiti. Opseg vaenja promjenljive je vana tema i najbolje emo je predstaviti
preko primjera..
Da biste probali jednostavan ispis na ekranu, u okviru velikih zgrada upiite tekst tano kao to je prikazano:
class Program {
static void Write() {
string mojString = "Sada definisan je u Write()";
Console.WriteLine("Sada je u Write()");
Console.WriteLine("mojString = ", mojString);
}
static void Main(string[] args) {
string mojString = "Sada je definisan u Main().";
Write();
Console.WriteLine("");
Console.WriteLine("Sada je u Main().");
Console.WriteLine("mojString = ", mojString);
Console.ReadKey();
}
}
Ako je kd ispravno napisan, pojavljuje se prozor komandne linije sa ispisanim tekstom:
Operacije koje izvodi ovaj kd su sledee:
Main() definie i inicijalizuje
promjenjivu tipa string sa imenom
mojString.
Main() prebacuje kontrolu na
Slika 9. Rezultat izvravanja funkcije i opseg vaenja
funkciju Write(). promjenljive
Write() definie i inicijalizuje

Dino Dedi 19
Maturski rad Veb prezentacija programskog jezika C#

promjenjivu tipa string sa imenom mojString, koja nije isto to i promjenjiva mojString
definisana u funkciji Main().
Write() ispisuje niz znakova na konzolu koji sadri vrijednost mojString definisan unutar
funkcije Write().
Write() vraa kontrolu funkciji Main().
Main() ispisuje na konzolu vrijednost koju sadri mojString definisan unutar funkcije
Main().
Promjenljive iji opseg vaenja na ovaj nain pokriva samo jednu funkciju, poznate su kao lokalne
promenljive. Takoer je mogue imati globalne promenljive, iji opseg vaenja pokriva vie funkcija. Izmjenite kd
na sljedei nain:
class Class1 {
static string mojString;
static void Write() {
string mojString = "Sada je definisan u Write()";
Console.WriteLine("Sada je u Write()");
Console.WriteLine("Lokalna mojString = String definisan u Write()", mojString);
Console.WriteLine("Globalna mojString = Globali string", Class1.mojString);
}
static void Main(string[] args) {
string mojString = "Sada je definisan u Main().";
Write();
Console.WriteLine("");
Console.WriteLine("Sada je u Main().");
Console.WriteLine("Lokalna mojString = String definisan u Write()", mojString);
Console.WriteLine("Globalna mojString = Globali string", Class1.mojString);
Console.ReadKey();
}
}
Ako je kd ispravno napisan, pojavljuje se prozor komandne linije sa ispisanim tekstom:

Slika 10. Rezultat izvravanja funkcije i opseg vaenja globalnih promjenljivih

Ovde smo dodali jo jednu promjenljivu pod imenom mojString, ovaj put na viem nivou hijerarhije imena.
Ova promjenljiva je definisana na sljedei nain:
static string mojString;

Primjetiete da opet koristimo kljunu re static. U konzolnim aplikacijama, prilikom navoenja globalnih
promjenjivih u ovom obliku, moramo koristiti kljune rei static ili const. Ako elimo da mijenjamo vrijednost
globalne promjenljive, moramo navesti static, jer const zabranjuje mijenjanje vrijednosti promjenljive.
Da bismo napravili razliku izmeu ove promjenljive i lokalnih promjenjivih istog imena u funkcijama Main() i
Write(), moramo se obratiti promjenljivoj koristei puno kvalifikovano ime. Ovde se globalnoj promjenljivoj
obraamo sa Class1.mojString. To je neophodno samo kada imamo globalne i lokalne promjenljive sa istim
imenom.
II - 3 - 8. Opseg vaenja promenljive u drugim strukturama
Opseg vaenja promjenljivih ukljuuje blok koda u kom su definisane i bilo koje direktno ugnijedene
blokove koda. To se odnosi i na druge blokove koda, kao to su grananja i petlje.
Da biste probali jednostavan ispis na ekranu, u okviru velikih zgrada upiite tekst tano kao to je prikazano:
class class1 {
static void Main(string[] args) {
int i;
string text = " ";

Dino Dedi 20
Maturski rad Veb prezentacija programskog jezika C#

for (i = 0; i < 10; i++) {


text = "Linija" + Convert.ToString(i);
Console.WriteLine(" ", text);
}
Console.WriteLine("Posljednji tekst je definisan u petlji : ", text);
Console.ReadKey();
}
}
Ako je kd ispravno napisan, pojavljuje se prozor komandne linije sa ispisanim tekstom:

Slika 11. 3. Opseg vaenja promenljive u drugim strukturama

II - 3 - 9. Parametri i povratne vrijednosti nasuprot globalnim podacima


U ovom dijelu emo blie pogledati razmjenu podataka sa funkcijama preko globalnih podataka i preko
parametara i povratnih vrijednosti. Da se podsjetimo - govorimo o razlici izmedu koda kao to je:
class class1 {
static void DupliranaVrijed(ref int prom) {
prom *= 2;
Console.WriteLine("Duplirana promjenjiva = ", prom);
}
static void Main(string[] args) {
int prom = 5;
Console.WriteLine("Promjenjiva = ", prom);
DupliranaVrijed (ref prom);
Console.WriteLine("Promjenjiva = ", prom);
Console.ReadKey();
}
}
Ako je kd ispravno napisan, pojavljuje se prozor komandne linije sa ispisanim tekstom:

Slika 12. 4. Parametri i povratne vrijednosti nasuprot globalnim podacima


II - 3 - 10. Funkcija Main()
Rekli smo za funkciju Main () da je ulazna taka za C# aplikaciju i da izvrenje ove funkcije prati izvrenje
same aplikacije. Takoer smo vidjeli da ova funkcija ima parametar string[ ] args, ali jo nismo videli ta taj
parametar predstavlja. Videt emo ta je ovaj parametar i kako se upotrebljava.
Postoje etiri razliita potpisa koja moemo koristiti za funkciju Main():
static void Main(),
static void Main(string[] args),
static int Main(),
static int Main(string [] args).
Moemo izostaviti argument args koji je ovde naveden. Trea i etvrta verzija vraaju vrijednost tipa int,
koju moemo koristiti da oznaimo kako e se zavriti aplikacija, a esto se koristi da bi ukazala na greku. Vraena
vrijednost 0 oznaava da se program normalno zavrio (odnosno, da se aplikacija izvrila i da se moe zaustaviti na
siguran nain).
Dino Dedi 21
Maturski rad Veb prezentacija programskog jezika C#

Parametar args funkcije Main() je metod za prihvatanje informacija izvan aplikacije, navedenih u toku
izvrenja programa. Ova informacija uzima oblik parametara komandne linije.
Kada izvravamo aplikaciju preko komandne linije, esto smo u mogunosti da direktno navedemo
informaciju kao to je datoteka koja se uitava u izvrenju aplikacije. Npr. pogledajte aplikaciju Notepad u
Windowsu. Moemo je pokrenuti tako to upiemo notepad u komandnu liniju, ili u okviru prozora koji se
pojavljuje kada odaberemo opciju Run iz Windows menija Start. Takoe, moemo uneti neto nalik na notepad
"myfile.txt" na ovim lokacijama. Rezultat e biti to da e Notepad uitati datoteku "myfile.txt" kada se pokrene, ili
e ponuditi da napravi ovu datoteku. Ovde je "myfile.txt" argument komandne linije. Moemo napisati konzolnu
aplikaciju koja radi na slian nain koristei parametar args.
Kada se konzolna aplikacija pokrene, svaki parametar komandne linije koji je naveden smeta se u niz args.
Zatim te parametre moemo koristiti u aplikaciji.
Funkcije lanice struktura
Tip struct slui za smjetanje razliitih elemenata podataka na jedno mesto. Strukture su sposobne i za
mnogo vie od toga. Vana dodatna sposobnost koju nude jeste mogunost da sadre funkcije isto kao i podatke.
Ovo na prvi pogled moe djelovati udno, ali je u stvari izuzetno korisno.
Npr. pogledajmo sljedeu strukturu:
struct ImeKupac
{
public string Ime, Prezime;
}
Ako imamo promjenljivu tipa ImeKupac, a elimo da ispiemo njeno puno ime na konzoli, morat emo da
napravimo ime iz sastavnih delova. Moemo koristiti sledeu sintaksu za promenljivu tipa ImeKupac sa imenom
kupac, na primer:
ImeKupac mojKupac;
mojKupac.Ime = "Petar";
mojKupac.Prezime = "Petrovi";
Console.WriteLine("{0} {1} ", kupac.Ime, kupac.Prezime);
Dodajui funkciju strukturi, ovo moemo pojednostaviti tako to emo centrirati obradu standardnih
zadataka kao to je ovaj. Toj strukturi moemo dodati odgovarajuu funkciju na sledei nain:
struct ImeKupac
{
public string Ime, Prezime;
public string ImePrezime() {
return Ime + " " + Prezime;
}
}

Ovo lii na bilo koju funkciju koju smo do sada vidjeli, osim to nije koriten modifikator static. Treba znati
da ova kljuna re nije potrebna za funkcije lanice struktura. Tu funkciju moemo koristiti na sljedei nain:
ImeKupac mojKupac;
mojKupac.Ime = "Petar";
mojKupac.Prezime = "Petrovi";
Console.WriteLine (kupac.ImePrezime());

Sintaksa je mnogo jednostavnija i razumljivija u odnosu na prethodnu. Vano je naglasiti da funkcija


ImePrezime() ima direktan pristup lanovima strukture Ime i Prezime. Oni se unutar strukture ImeKupac mogu
smatrati globalnim.
Preoptereenje funkcija
Vidjeli smo da moramo sloiti potpis funkcije kada je pozivamo. To znai da je potrebno imati dvije funkcije
koje vre operacije nad razliitim tipovima promjenljivih. Preoptereenje operatora prepoznaje ovu situaciju i
omoguava da napravimo vie razliitih funkcija sa istim imenom, koje rade sa razliitim tipovima parametara.
Delegati
Delegat je tip koji omoguava uvanje referenci u funkcijama. Mehanizam je vrlo jednostavan.
Delegati se deklariu slino kao i funkcije, ali bez tijela funkcije i uz upotrebu kljune red delegate.
Deklaracija delegata definie potpis funkcije koji sadri povratni tip i listu parametara. Nakon definisanja delegata,
moemo deklarisati promenljivu sa tipom tog delegata. Zatim moemo inicijalizovati promenljivu tako da sadri

Dino Dedi 22
Maturski rad Veb prezentacija programskog jezika C#

referencu na bilo koju funkciju koja ima isti potpis kao i delegat. Kada to uradimo, moemo pozvati funkciju
koristei promenljivu delegata kao da je funkcija.
Kada imamo promjenjivu koja pokazuje na funkciju, moemo izvesti druge operacije koje bi bilo nemogue
izvesti nekom drugom metodom. Npr. moemo proslijediti delegat nekoj funkciji kao parametar, zatim ta funkcija
moe pomou delegata pozvati funkciju na koju on ukazuje, ne znajui koja e to funkcija biti sve do izvrenja.
Da biste probali jednostavan ispis na ekranu, u okviru velikih zgrada upiite tekst tano kao to je prikazano:
class Class1
{
delegate double procesDelegati (double param1, double param2);
static double Pomnozi(double param1, double param2) {
return param1 * param2;
}
static double Podjeli(double param1, double param2) {
return param1 / param2;
}
static void Main(string[] args) {
procesDelegati process;
Console.WriteLine("Dobar dan.");
Console.WriteLine("Unesite dva broja odvojena zarezom.");
string ulaz = Console.ReadLine();
int pozZareza = ulaz.IndexOf(" , ");
double param1 = Convert.ToDouble(ulaz.Substring(0,pozZareza));
double param2 = Convert.ToDouble(ulaz.Substring(pozZareza + 1, ulaz.Length-pozZareza - 1));
Console.WriteLine(" Pritisnite taster M za mnoenje ili taster D za djeljenje.");
ulaz = Console.ReadLine();
if (ulaz == "N") {
process = new procesDelegati(Pomnozi);
Console.WriteLine("Rezultat je : (0}", process(param1, param2));
}
else
if (ulaz == "D") {
process = new procesDelegati(Podjeli);
Console.WriteLine("Rezultat je : (0}", process(param1, param2));
}
else
Console.WriteLine("Utipkali ste pogresnu tipku, pokusajte ponovo.");
}
}
}
Ako je kd ispravno napisan, pojavljuje se prozor komandne linije sa ispisanim tekstom:

Slika 13. prosljediti delegat nekoj funkciji kao parametar, zatim ta funkcija moe
pomou delegata pozvati funkciju na koju on ukazuje
II - 3 - 11. Dogaaji
ta je dogaaj?
Dogaaji su slini izuzetcima u tome to su aktivirani od strane objekata, a mi moemo obezbjediti kd koji
reaguje na njih. Meutim, postoje i neke razlike. Jedna od najvanijih je da nema ekvivalentne try. . . catch
strukture za obradu dogaaja. Umesto toga, moramo se prijaviti na dogaaj. Prijavljivanje na dogaaj
podrazumjeva pisanje koda koji e se izvriti kada je dogaaj aktiviran, u obliku rutine za obradu dogaaja.
Dogaaj moe imati vie rutina za obradu dogaaja, koje e sve biti pozvane kada je dogaaj aktiviran.
Rutine za obradu dogaaja mogu biti dio iste klase kojoj pripada objekat koji aktivira dogaaj, a mogu pripadati i
nekim drugim klasama. Rutine za obradu dogaaja su jednostavne funkcije. Jedina restrikcija za ove funkcije jeste
ta da se potpis (tip podatka koji se vraa i parametri) mora podudarati sa onim to zahtjeva dogaaj. Ovaj potpis je
dio definicije dogaaja odreen od strane delegata.
Dino Dedi 23
Maturski rad Veb prezentacija programskog jezika C#

Upravo zato to se koristi u dogaajima, delegat je mono oruje.


Sekvenca obrade izgleda ovako:
Prvo - aplikacija kreira objekt koji moe aktivirati dogaaj. Npr. neka je aplikacija zaduena za instant
poruke, i objekt koji ona kreira predstavlja vezu sa udaljenim korisnikom. Objekt veze moe aktivirati dogaaj, npr.
kada stigne poruka od udaljenog korisnika.

Creates
Application Connection

Drugo - aplikacija se prijavljuje na dogaaj. Ovo bismo mogli postii definisanjem funkcije koja bi se koristila
sa delegat tipom koji je odredio dogaaj i koja bi imala parametar - referencu na dogaaj. Rutina za obradu
dogaaja moe biti metoda na nekom drugom objektu. Neka to bude, npr. objekt koji predstavlja ureaj za prikaz
instant poruke.

Application Connection

Creates
Subscribes to
Display

Kada je dogaaj aktiviran, aplikacija je obavjetena. Kada stigne instant poruka kroz objekat veze, bude
pozvana rutina za obradu dogaaja na ureaju za prikaz. Poto koristimo standardnu metodu, objekt koji aktivira
dogaaj moe proslijediti kroz parametre bilo koju relevantnu informaciju pravei tako raznovrsne dogaaje. U
naem sluaju, jedan parametar moe biti tekst iz instant poruke. Ovaj tekst moe se prikazati pomou rutine za
obradu dogaaja na ureaju za prikaz.

Application Connection

Creates

Display
Calls
Pozdrav

Koritenje dogaaja
Za obradu dogaaja neophodno je prijaviti dogaaj, to znai obezbjediti rutinu za obradu dogaaja iji se
potpis podudara sa delegatom koji koristi dogaaj. Pogledajmo primjer koji koristi jednostavan objekat Timer koji
aktivira dogaaj, posle ega e biti pozvana rutina za obradu dogaaja.
Da biste probali jednostavan ispis na ekranu, u okviru velikih zgrada upiite tekst tano kao to je prikazano:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
namespace Dogadjaji1 {
class Calss1 {
static int brojac = 0;
static string displayString ="Ovo je string koji se ponavlja poslije zavrsetka prikaza teksta, a prekida
poslije 100 milsec.";
static void Main(string[] args) {
Timer mojTimer = new Timer(100);
mojTimer.Elapsed += new ElapsedEventHandler(WriteChar);
mojTimer.Start();
Console.ReadLine();
}
static void WriteChar(object source, ElapsedEventHandler e) {
Dino Dedi 24
Maturski rad Veb prezentacija programskog jezika C#

Console.Write(displayString[brojac++ % displayString.Length]);
}
}
}
Ako je kd ispravno napisan, pojavljuje se prozor komandne linije sa ispisanim tekstom:

Slika 14. Za obradu dogaaja neophodno je prijaviti dogaaj, to znai obezbjediti rutinu za obradu dogaaja iji se
potpis podudara sa delegatom koji koristi dogaaj
Definisanje dogaaja
Pogledajmo kako da definiemo i koristimo nae sopstvene dogaaje. Implementirat emo verziju primjera
za instant poruke. Kreiraemo objekat Konekcija koji aktivira dogaaje obraene od strane objekta Display.
Da biste probali jednostavan ispis na ekranu, u okviru velikih zgrada upiite tekst tano kao to je prikazano:
namespace Dogadjaji2 {
public delegate void MessageHandler(string messageText);
public class Konekcija {
public event MessageHandler MessageArrived;
private Timer pollTimer;
public Konekcija() {
pollTimer = new Timer(100);
pollTimer.Elapsed += ElapsedEventHandler(PromjeraPoruke);
}
public void Connect() {
pollTimer.Start();
}
public void Disconnect() {
pollTimer.Stop();
}
static void PromjeraPoruke(object source, ElapsedEventHandler e) {
Console.WriteLine("Provjera nove poruke.");
Random random = new Random();
if ((random.Next(9) == 0) && (MessageArrived != null)) {
MessageArrived("#### Pozdrav MAMA ####");
}
}
}
}
Dodajte novu klasu Display u Display.cs:
namespace Dogadjaji2 {
public class Display {
public void DisplayMessage(string poruka) {
Console.WriteLine("Poruka koj je stigla : ", poruka);
}
}
Izmjenite kodu Class1.cs:
{
class Class1 {
static void Main(string[] args) {
Konekcija mojaKonekcija = new Konekcija();
Display myDisplay = new Display();
mojaKonekcija.MessageArrived += new MessageHandler(myDisplay.DisplayMessage);
mojaKonekcija.Connect();
Console.ReadLine();
}
}
}

Ako je kd ispravno napisan, pojavljuje se prozor komandne linije sa ispisanim tekstom:

Dino Dedi 25
Maturski rad Veb prezentacija programskog jezika C#

Slika 15. Objekat Konekcija aktivira dogaaje obraen od strane objekta Display
Vienamjenske rutine za obradu dogaaja
Potpis koji smo videli ranije za dogaaj Timer.Elapsed, sadri dva parametra iji se tipovi esto sreu u
rutinama za obradu dogaaja. Ti parametri su:
object source - referenca na objekat koji aktivira dogaaj.
ElapsedEventArgs e - parametri koje alje dogaaj.
Razlog zbog kojeg koristimo parametar tipa object za ovaj dogaaj, kao i za mnoge druge dogaaje, je to
emo esto htjeti da koristimo jednu rutinu za obradu dogaaja za vie identinih dogaaja aktiviranih od strane
razliitih objekata. Na ovaj nain moemo tano znati koji objekt aktivira dogaaj.
Da biste probali jednostavan ispis na ekranu, u okviru velikih zgrada upiite tekst tano kao to je prikazano:
using System;
namespace Dogadjaji3 {
public class MessageAmvedEventArgs : EventArgs {
private string poruka;
private string Poruka; {
get {
return poruka;
}
}
public class MessageAmvedEventArgs() {
Poruka = "Niti jedna poruka nije poslata;
}
public class MessageAmvedEventArgs(string novaPoruka){
poruka =novaPoruka;
}
}
}
Izmjenite Connection.cs:
using System.Text;
using System.Timers;
namespace Dogadjaji3 {
public delegate void MessageHandler(Konekcija source, MessageArrivedEventArgs e);
public class Konekcija {
public event MessageHandler MessageArrived;
private string naziv;
private string Naziv; {
get {
return naziv;
}
Set {
naziv = value;
}
}
private Timer pollTimer;
public Konekcija() {
pollTimer = new Timer(100);
pollTimer.Elapsed += ElapsedEventHandler(PromjeraPoruke);
}
public void Connect() {
pollTimer.Start();

Dino Dedi 26
Maturski rad Veb prezentacija programskog jezika C#

}
public void Disconnect() {
pollTimer.Stop();
}
static void PromjeraPoruke(object source, ElapsedEventHandler e) {
Console.WriteLine("Provjera nove poruke.");
Random random = new Random();
if ((random.Next(9) == 0) && (MessageArrived != null)) {
MessageArrived(this, new MessageArrivedEventArgs "#### Pozdrav MAMA
####");
}
}
}
}
Izmjenite Display.cs:
namespace Dogadjaji3 {
public class Display {
public void DisplayMessage(Konekcija source, MessageArrivedEventArgs e) {
Console.WriteLine("Poruka koj je stigla : ", source.Naziv);
Console.WriteLine("Tekst poruke : ", e.Poruka);
}
}
Izmjenite Class1.cs:
static void Main(string[] args) {
Konekcija mojaKonekcija1 = new Konekcija();
mojaKonekcija1.naziv = "Prva konekcija.";
Konekcija mojaKonekcija1 = new Konekcija();
mojaKonekcija2.naziv = "Druga konekcija.";
Display myDisplay = new Display();
mojaKonekcija1.MessageArrived += new MessageHandler(myDisplay.DisplayMessage);
mojaKonekcija2.MessageArrived += new MessageHandler(myDisplay.DisplayMessage);
mojaKonekcija1.Connect();
mojaKonekcija2.Connect();
Console.ReadLine();
}
}
}
Ako je kd ispravno napisan, pojavljuje se prozor komandne linije sa ispisanim tekstom:

Slika 16. rutinu za obradu dogaaja za vie identinih dogaaja aktiviranih od strane
razliitih objekata
Povratne vrijednosti i rutina za obradu dogaaja
Svi moduli koje smo do sada vidjeli imali su povratni tip void. Mogue je obezbjediti neki drugi tip, ali to
dovodi do problema zato to neki dogaaj moe imati za posljedicu pozivanje nekoliko rutina za obradu dogaaja.
Ako sve ove rutine vrate neku vrijednost postaje nejasno koju od vrijednosti uzimamo.
Sistem rjeava problem tako to dozvoljava pristup samo posljednjoj vraenoj vrijednosti. Ovo je vrijednost
koju vraa posljednja rutina za obradu dogaaja koja se odnosi na neki dogaaj.

Dino Dedi 27
Maturski rad Veb prezentacija programskog jezika C#

III - 1. Koritenje kontrola za Windows formulare


Posljednjih godina Visual Basic pruao je programerima alate za kreiranje detaljnih korisnikih interfejsa,
kroz intuitivni dizajner formulara. Ovaj dizajner sa svojim alatima, zajedno sa programskim jezikom lakim za
uenje, predstavljao je moda najbolje okruenje za razvoj velikih aplikacija. Jedna od stvari koje Visual Basic radi,
kao i neki dragi alati za razvoj aplikacija (npr. Delphi), jeste obezbjeivanje pristupa predefinisanim kontrolama,
koje moe brzo ugraditi u korisniki interfejs aplikacije.
U centru veine Visual Basic Windows aplikacija nalazi se dizajner formulara. Korisniki interfejs se kreira
tako to se kontrole prevlae iz okvira za alate i sputaju na obrazac tamo gde elimo da stoje kada se program
izvrava. Dvostrukim pritiskom na kontrole dodaju se rutine za obradu kontrola. Microsoftove unapred definisane
kontrole, zajedno sa standardnim kontrolama, predstavljaju nov izvor potpuno testiranog koda, koji se moe uvijek
koristiti. Ono to je bilo najvanije u Visual Basicu sada je kroz Visual Studio .NET dostupno C# programerima.
Veina kontrola .NET-a bile su, i jo uvek jesu, specijalni COM objekti, poznatiji kao ActiveX kontrole. Ove
kontrole su se prikazivale i za vrijeme dizajniranja i za vrijeme izvravanja programa. Svaka kontrola ima odreena
svojstva, doputajui programeru izvjestan nivo prilagoavanja, kao to je podeavanje boje pozadine, naslova i
njegove pozicije u formularu. Ovi .NET sklopovi mogu biti dizajnirani tako da se koriste u bilo kojem od jezika Visual
Studio-a.
III - 1 - 1. Dizajner Windows formulara
Poet emo kratkim pregledom Windows dizajnera formulara. Ovo je centralno mesto za kreiranje
korisnikog interfejsa. Potpuno je mogue kreirati formulare bez koritenja Visual Studio .NET-a, no dizajniranje
interfejsa u Notepadu moe biti teak posao.
Pokrenite Visual Studio .NET i kreirajte novi C# Windows Form Application projekt, tako to ete izabrati
New Project, zatim Windows Form Application i pritisnite OK .
To bi trebalo da kreira prozor slian ovome ispod:

Slika 17. Prozor za kreiranje Windows Form Application projekata


Ako ste upoznati sa dizajnerom formulara iz Visual Basica, primetit ete odreene slinosti. U centru samog
prozora nalazi se formular koji dizajniramo. Kontrole se mogu prevlaiti iz okvira sa alatima i sputati na formular.
Okvir sa alatima se trenutno ne vidi na slici iznad.
Pomjerite pokaziva mia skroz u lijevo, iznad jezika kartice Toolbox i pojavie se okvir sa alatima. Moete
da pritisnete pribadau u gornjem desnom uglu panela da ga "otvorite". Ovo e promjeniti izgled radnog prostora,
tako da se okvir sa alatima uvijek vidi i nee smetati samoj formi. Takoe, na lijevoj strani, moe biti skriven i
Dino Dedi 28
Maturski rad Veb prezentacija programskog jezika C#

Server Explorer, a predstavljen je ikonama na kojoj su nacrtani raunari, iznad jezika kartice Toolbox. Ovo se moe
posmatrati i kao kraa verzija Windows Control Panela. Odavde moete pretraivati mreu, dodavati ili uklanjati
veze sa bazama podataka i jo mnogo toga drugog.
Sa desne strane prozora nalaze se dva panela. Gornji je Solution Explorer i pregled klasa. U Solution
Explorer-u moete vidjeti sve otvorene projekte i njihove pridruene datoteke. Ako pritisnete na karticu pri dnu
Solution Explorer-a, aktivirate Class Viewer (pregled klasa). Ovdje moete pregledati sve klase koritene u
projektima, kao i sve izvedene klase. U donjem desnom dijelu prozora nalazi se panel Properties. Ovaj panel sadri
sva svojstva izabranog objekta, koja se lako mogu proitati ili izmeniti, tj. dopuniti.
Takoe, u ovom panelu vidi se i kartica Dynamic Help. Ovde se prikazuju svi savjeti i uputstva za izabrani
objekt ili kd, ak i dok tipkate.
III - 1 - 2. Okvir sa alatima
Pogledajmo malo bolje okvir sa alatima - Toolbox. Ako ve to
niste uradili, pomjerite pokaziva mia do okvira na lijevoj strani
ekrana, i pritisnite pin u gornjem desnom uglu panela, tako da cijeli
panel bude vidljiv.
Ako sluajno pritisnete umesto pribadae i tako uklonite okvir
sa alatima, moete ga ponovo vratiti u prozor. Izaberite Toolbox iz
menija View, ili pritisnite tastere Ctrl+Alt+X.

Okvir sa alatima sadri sve kontrole dostupne .NET programerima.


Okvir sadri sve kontrole za programere Windows aplikacija.
Slika 18. Kako pristupiti okviru sa alatima
III - 1 - 3. Kontrole
Veina kontrola u .NET-u izvedene su iz klase System.Windows.Forms.Control. Ova klasa definie osnovno
funkcionisanje kontrola, zbog ega su mnogi dogaaji i osobine kontrola identini. Mnoge od ovih klasa su osnovne
klase za druge kontrole, kao to je to sluaj sa klasama Label i TextBoxBase:

Object

MarshalByRefObject

Component

Control

Label LastView TextBoxBase ............

LinkLabel TextBox RichTextBox

Osobine
Sve kontrole imaju odreene osobine koje odreuju kako e se neka kontrola ponaati. Osnova klasa za
veinu kontrola Control sadri odreen broj svojstava koje kontrole ili direktno nasleuju ili redefiniu u sluaju da
se eli neko drugaije ponaanje kontrole.
Tabela ispod pokazuje najvanije osobine klase Control.

Dino Dedi 29
Maturski rad Veb prezentacija programskog jezika C#

Ime osobine Dostupnost Opis


Ovo svojstvo definie ponaanje kontrole kada kontejner koji sadri
Anchor itanje/upis
kontrolu mijenja svoju veliinu.
BackColor itanje/upis Boja pozadine kontrole.
Bottom itanje/upis Odreuje razdaljinu od vrha prozora do dna kontrole.
Dock itanje/upis Doputa da kontrola bude pripojena uz ivicu prozora.
Podesiti svojstvo Enabled na true (tano) obino znai da kontrola moe
Enabled itanje/upis da primi unos od strane korisnika. Podeeno na false (netano) obino
znai da ne moe.
ForeColor itanje/upis Boja prednjeg plana kontrole.
Height itanje/upis Udaljenost od vrha do dna kontrole.
Left itanje/upis Udaljenost lijeve ivice kontrole od lijeve ivice prozora.
Name itanje/upis Ime kontrole. Ime se koristi za pristup kontroli u kodu.
Parent itanje/upis Roditelj kontrole.
Right itanje/upis Udaljenost desne ivice kontrole od lijeve ivice prozora.
Redosljed promjene kontrola u kontejneru koji ih dri prilikom pritiska
TabIndex itanje/upis
na taster Tab.
Tabstop itanje/upis Odreuje da li kontrola moe biti dostupna pritiskanjem tastera Tab.
Ovu vrijednost ne koristi sama kontrola, ve slui programerima za
Tag itanje/upis smjetanje informacija o kontroli. Ovoj osobini moe se dodijeliti jedino
vrijednost u formi stringa.
Top itanje/upis Udaljenost gornje ivice kontrole od vrha prozora.
Visible itanje/upis Odreuje da li je kontrola vidljiva u toku izvravanja programa.
Width itanje/upis irina kontrole.
Svojstva Anchor i Dock

Ove dvije osobine su naroito korisne kada dizajnirate obrazac. Osigurati da prozor normalno izgleda poslije
promjene veliine prozora nije lako. Mnogi programi rjeavaju ovaj problem tako to ne dozvoljavaju da se mijenja
veliina prozora. Svojstva Anchor i Dock omoguavaju vam da rijeite ovaj problem bez pisanja koda. Svojstvo
Anchor odreuje kako se kontrola ponaa kada korisnik promijeni veliinu prozora u kojem se kontrola nalazi.
Svojstvo Dock je povezano sa svojstvom Anchor. Odreuje da li kontrola treba da bude pripojena uz ivicu prozora
kojem pripada. Ukoliko korisnik promijeni veliinu prozora, kontrola e i dalje biti pripojena uz ivicu.
Dogaaji

Kada korisnik programa pritisne dugme ili taster, programer bi htio da zna da se to zaista desilo. Da bi ovo
bilo mogue kontrole koriste dogaaje. Klasa Control definie brojne dogaaje koji su zajedniki za kontrole.
Tabela ispod opisuje neke od ovih dogaaja MSDN biblioteka :

Ime dogaaja Opis


Click Deava se kada se pritisne na kontrolu ili kada pritisne taster Enter.
Doubleclick Deava se kada se kontrola dva puta pritisne.
DragDrop Deava se kada se zavri operacija prevlaenja i sputanja.
DragEnter Deava se kada dovueni objekt ue u granice kontrole.
DragLeave Deava se kada dovueni objekt naputa granice kontrole.
DragOver Deava se kada dovueni objekt prelazi preko kontrole.
KeyDown Deava se kada se taster pritisne dok kontrola ima fokus.
Key Press Deava se kada se taster pritisne dok kontrola ima fokus.
KeyUp Deava se kada se taster pusti dok kontrola ima fokus.
GotFocus Deava se kada kontrola primi fokus.
LostFocus Deava se kada kontrola izgubi fokus.
MouseDown Deava se kada se pokaziva mia nalazi iznad kontrole i kada se taster mia pritisne.
MouseMove Deava se konstantno dok mi prelazi preko kontrole.
MouseUp Deava se kada je pokaziva mia na kontroli i kada se taster mia oslobodi.
Paint Deava se kada se kontrola iscrtava.
Ovaj dogaaj se deava kada se kontrola sa CausesValidation osobinom podeenom na true,
Validated sprema da primi fokus. Poinje kada se zavri dogaaj Validating i pokazuje da je validacija
zavrena.
Ovaj dogaaj se deava kada se kontrola sa CausesValidation osobinom podeenom na true,
Validating sprema da primi fokus. Kontrola nad ijim sadrajem se vri validacija jeste ona kontrola koja gubi
fokus, a ne ona koja ga prima.

Dino Dedi 30
Maturski rad Veb prezentacija programskog jezika C#

III - 1 - 3 - 1. Kontrola Button


Postoje tri vrste dugmadi u Visual Studio .NET-u. To je zato to su radio-dugmad i polja za potvrdu, takoe
dugmad. Zbog ovoga klasa Button nije direktno izvedena iz klase Control ve iz klase ButtonBase koja je izvedena iz
Control. Kontrola Button postoji na svakom okviru za dijalog. Button se koristi za obavljanje tri vrste zadataka:
Za zatvaranje okvira za dijalog
Za izvravanje neke akcije nad podacima unijetim u okviru za dijalog
Za otvaranje nekog drugog okvira za dijalog ili aplikacije
Rad sa kontrolom Button je veoma jednostavan. Obino se sastoji od stavljanja kontrole u formular,
dvostrukog pritiska na kontrolu za dodavanje koda za dogaaj Click.

Svojstva kontrole Button

Opisat emo osobine kao lanove klase Button. Samo one najee koritene opisane su u tabeli.

Ime osobine Dostupnost Opis


Izgled dugmeta moe biti izmijenjen pomou ove osobine. Ako namjestite
FlatStyle itanje/upis stil na PopUp, dugme e biti ravno sve dok se pokaziva mia ne pomjeri na
njega. Tada se dugme pojavljuje u normalnom, 3D obliku.
Podeavanje Enabled osobine na false znai da dugme postaje sivo i nita se
Enabled itanje/upis
ne deava kada se pritisne.
Omoguava biranje slike (bitmape, ikone itd.) koja e se pojaviti na
Image itanje/upis
dugmetu.
Uz pomo ove osobine moete da izaberete poloaj slike na
ImageAlign itanje/upis
dugmetu.

Dogaaji kontrole Button

Najkoriteniji dogaaj dugmeta jeste dogaaj Click. Deava se kada korisnik pritisne na dugme. Takoe, do
dogaaja Click dolazi kada je dugme u fokusu i kada korisnik pritisne taster Enter. Ako imate dugme na formularu,
uvijek treba obraditi ovaj dogaaj.

III - 1 - 3 - 2. Kontrole Label i LinkLabel


Kontrola Label se najee koristi od svih kontrola. Visual Studio .NET sadri dvije kontrole za oznake, koje
se predstavljaju korisnicima na dva razliita naina:
Label, standardna Windows oznaka
LinkLabel, oznaka slina standardnoj, ali predstavlja sebe kao internet vezu (hiperveza).
Ne morate dodavati nikakav upravljaki kd za dogaaje kada je u pitanju standardna labela. U sluaju
kontrole LinkLabel potreban je dodatni kd ako elite da omoguite korisniku da pritisne na ovu oznaku to e mu
omoguiti otvaranje Web stranice. Veina njih je izvedena iz klase Control, ali postoje i neke nove. Tabela koja
slijedi opisuje najee koritene.

Ime osobine Dostupnost Opis


BorderStyle itanje/upis Omoguava da izaberete date ivice oznake. Podrazumijeva se da nema ivica.
Samo za LinkLabel: boja koju e kontrola LinkLabel imati kada je korisnik
DisabledLinkColor itanje/upis
pritisne.
Definie izgled kontrole. Ako podesite ovu osobinu na PopUp, kontrola e biti
FlatStyle itanje/upis ravna sve dok pokaziva mia ne pomerite na kontrolu. Tada e se kontrola
izdii.
Image itanje/upis Omoguava biranje slike (bitmape, ikone itd.) koja e se pojaviti na oznaci.
ImageAlign itanje/upis Odreuje poloaj slike na oznaci.
LinkArea itanje/upis Samo za LinkLabel: opseg teksta koji e biti prikazan kao veza.
LinkColor itanje/upis Samo za LinkLabel: Boja hiperveze.
Samo za LinkLabel: kontrola LinkLabel moe da dri vie od jedne
Links itanje/upis veze. Ovo svojstvo omoguava vam da pronaete vezu koju hoete. Kontrola
vodi rauna o vezama koje se nalaze u tekstu.
Samo za LinkLabel: obavjetava da li je neka hiperveza prethodno posjeena ili
LinkVisited itanje/upis
ne.

Dino Dedi 31
Maturski rad Veb prezentacija programskog jezika C#

Text itanje/upis Tekst koji se pojavljuje u oznaci.


TextAlign itanje/upis Odreuje poloaj teksta na kontroli.

III - 1 - 3 - 3. Kontrola TextBox


Okvir za tekst trebalo bi da bude koriten kada oekujete od korisnika unos teksta. Osnovna funkcija okvira
za tekst jeste da omogui korisniku da unese tekst, pri emu se moe unijeti bilo koji znak i sasvim je mogue
primorati korisnika da unese samo numerike vrijednosti. U .NET okruenju postoje dvije osnovne kontrole koje
mogu primati tekst kao ulazni podatak: TextBox i RichTextBox. Obje kontrole izvedene su iz klase TextBoxBase.
Klasa TextBoxBase omoguava osnovnu funkcionalnost za obradu teksta u okvirima za tekst, kao to su izbor,
isjecanje i kopiranje teksta.
Svojstva kontrole TextBox

Postoji mnogo svojstava kontrole TextBoxBase. Ovo su samo one najvanije:

Ime kontrole Dostupnost Opis


Causes Validation itanje/upis Odreuje da li e kontrola TextBox mijenjati slova u mala ili velika.
CharacterCasing itanje/upis Q Normal: nee biti nikakvih promena.
Upper: sva unijeta slova biti e konvertovana u velika slova.
MaxLength itanje/upis Vrijednost koja odreuje maksimalan broj karaktera u tekstu koji je
unijet u TextBox.
Pokazuje da li je ovo kontrola sa vie redova. Kontrola sa vie redova
MultiLine itanje/upis
moe da prikae vie redova teksta.
Odreuje da li karakter lozinke treba da zamijeni stvarne karaktere koji su
PasswordChar itanje/upis
unijeti u okvir za tekst sa jednim redom..
Readonly itanje/upis Logika vrijednost koja pokazuje da li je tekst samo za itanje.
ScrollBars itanje/upis Odreuje da li tekst u vie redova treba da ima traku za pomjeranje.
SelectedText itanje/upis Tekst koji je izabran u okviru za tekst.
Broj izabranih karaktera u tekstu. Ako je ova vrijednost vea od ukupnog
SelectionLength itanje/upis broja karaktera u tekstu, onda kontrola resetuje ovu vrijednost na ukupan
broj karaktera minus vrijednost koja se nalazi u svojstvu SelectionStart.
SelectionStart itanje/upis Poetak izabranog teksta u okviru za tekst.
Odreuje da li u okvirima za tekst sa vie redova rije koja premauje
Wordwrap itanje/upis
irinu kontrole treba automatski da bude prebaena u novi red.

Dogaaji kontrole TextBox

Kontrola TextBox obezbeuje dogaaje (svi koji su izvedeni iz klase Control):

Ime dogaaja Opis


Enter
Ovih est dogaaja deavaju se redom kojim su ovdje navedeni. Poznati su kao "dogaaji fokusa" i
GotFocus
aktiviraju se uvijek kada se mijenja fokus kontrole, uz dva izuzetka.
Leave
Dogaaji Validating i Validated deavaju se samo kada kontrola koja prima fokus ima svojstvo
Validating
CausesValidation podeeno na true.
Validated
Primer za ovo je kada korisnik pritisne Help dugme.
LostFocus
KeyDown Sljedea tri dogaaja su poznatija kao "taster dogaaji. Oni omoguavaju da pratite i mijenjate ono
KeyPress to je unijeto u kontrolu. KeyDown i KeyUp primaju kd tastera koji je pritisnut. Na ovaj nain moete
KeyUp vidjeti da li su pritisnuti specijalni tasteri, kao sto su Shift, Control ili F1. KeyPress, sa druge strane,
Change prima karakter koji odgovara tasteru. To znai da vrijednost za slovo "a" nije ista kao i za slovo "A".

III - 1 - 3 - 4. Kontrole RadioButton i CheckBox


Kontrole RadioButton i CheckBox koriste istu osnovnu klasu kao i kontrola Button, s tim da im se izgled i
koritenje razlikuju. Radio dugme se prikazuje kao oznaka sa kruiem na lijevoj strani. Radio dugme bi trebalo
koristiti kada elite od korisnika da bira izmeu meusobno iskljuivih opcija. Da bi ste grupisali vie radio dugmadi
kako bi ona inila logiku jedinicu koristite kontrolu GroupBox.
Kontrola CheckBox se predstavlja kao oznaka sa kvadratiem na lijevoj strani. Koristite polja za potvrdu kada
elite da omoguite korisniku da bira jednu ili vie opcija.
Svojstva kontrole RadioButton

Ovdje emo opisati samo nekoliko svojstava.

Dino Dedi 32
Maturski rad Veb prezentacija programskog jezika C#

Ime osobine Dostupnost Opis


Radio dugme se pojavljuje kao oznaka sa kruiem lijevo, u sredini ili desno od
Appearance itanje/upis oznake ili kao standardno dugme. U poslednjem sluaju dugme se prikazuje kao
pritisnuto ako je izabrano, odnosno u 3D obliku ako nije.
Ako je ovo svojstvo podeena na true, znak za potvrivanje se pojavljuje kada korisnik
AutoCheck itanje/upis pritisne na radio dugme. Kada je ovo svojstvo podeeno na false, podrazumijeva se
da se znak za potvrivanje ne pojavljuje.
CheckAlign itanje/upis Odreuje poloaj radio dugmeta.
Checked itanje/upis Pokazuje status kontrole.

Dogaaji kontrole RadioButton

Dogaaji su prikazani u tabeli.

Ime Opis
Ovaj dogaaj se alje kada se mijenja potvrda radio dugmeta. Ako ima vie kontrola RadioButton na
CheckChanged formularu ili unutar jednog grupnog okvira ovaj dogaaj se alje dva puta: prvo kontroli koja je bila
potvrena, a sada vie nije, a zatim i kontroli koja postaje potvrena.
Click Ovaj dogaaj se alje svaki put kada se pritisne na radio dugme. Ovo nije isto kao i dogaaj
CheckChanged.

III - 1 - 3 - 5. Kontrola CheckBox


Svojstva kontrole CheckBox

Osobine i dogaaji ove kontrole su slini onima za RadioButton ali tu su i dvije nove:
Ime osobine Dostupnost Opis
Polje za potvrdu moe imati tri statusa: Checked, Indeterminate i Unchecked
CheckState itanje/upis
(potvreno, neodreeno i nepotvreno).
Ako je ovo svojstvo podeeno na false korisnik nee moi da izmijeni status kontrole
ThreeState itanje/upis
na Indeterminata, ali moe izmijeniti status u kodu.

Dogaaji kontrole CheckBox

Ime Opis

CheckedChanged Deava se kada se mijenja svojstvo Checked kontrole. Kod kontrola sa osobinom ThreeState
podeenom na true mogue je pritisnuti na polje za potvrdu bez promene Checked osobine.
Deava se kada se mijenja svojstvo CheckedState kontrole. Kako su Checked i Unchecked mogue
CheckedStateChanged vrijednosti za svojstvo CheckedState, ovaj dogaaj e biti poslan uvijek kada se mijenja svojstvo
Checked.

III - 1 - 3 - 6. Kontrola GroupBox


Ova kontrola se obino koristi zajedno sa kontrolama RadioButton i CheckBox, da bi napravila okvir i
zaglavlje za grupu kontrola koje su logiki povezane. Grupni okvir se jednostavno dovue na formular, a zatim se
stavljaju ostale kontrole unutar tog okvira. To za efekat ima da roditelj kontrola postaje grupni okvir, to znai da
moe biti izabrano vie kontrola RadioButton u isto vrijeme
Kada se kontrola stavi na formular kae se da je formular roditelj kontrole, odnosno kontrola je dete
formulara. Kada stavite grupni okvir na formular, grupni okvir postaje dete formulara. Kako grupni okvir sadri
nove kontrole, on postaje roditelj za te kontrole. Ovo znai da, kada pomjerite grupni okvir, pomjeraju se i sve
kontrole koje se nalaze u tom okviru.
III - 1 - 3 - 7. Kontrola RichTextBox
Kontrola RichTextBox izvedena je iz klase TextBoxBase. Zbog toga ovi okviri imaju neke slinosti, ali je
kontrola RichTextBox mnogo sadrajnija. Okvir za tekst koristimo za unos kratkih nizova znakova, dok obogaeni
tekstualni okvir koristimo za prikazivanje i unos formatiranog tekst. Ovo postiemo koritenjem standarda za
formatirani tekst koji se zove Rich Text Format ili RTF.
Svojstva kontrole RichTextBox

RichTextBox ima nove osobine. Sljedea tabela opisuje neke najee koritene osobine:
Ime osobine Dostupnost Opis
Vrijednost ove osobine je true, ako neto to je poniteno moe biti
CanRedo Samo itanje
ponovljeno, u suprotnom je false.

Dino Dedi 33
Maturski rad Veb prezentacija programskog jezika C#

Vrijednost ove osobine je true, ako je mogue izvriti akciju Undo na


CanUndo Samo itanje
obogaeni okvir za tekst, u suprotnom je false.
RedoAc t i onName Ovo svojstvo sadri ime akcije koja e biti koritena da bi se ponovo uradila
Samo itanje
neka prethodno ponitena radnja u obogaenom okviru za tekst.
Podesite ovu osobinu na true ako elite da kontrola detektuje URL adrese i da
DetectUrls itanje/upis
ih formatira.
Rtf itanje/upis Ovo odgovara svojstvu Text, s tim to je tekst u RTF formatu.
SelectedRtf itanje/upis Koristite ovu osobinu da biste dobili ili podesili izabrani tekst na RTF format.
Kao i SelectedRtf, moete dobiti ili podesiti izabrani tekst. Za razliku od
SelectedText itanje/upis
prethodne osobine, pri kopiranju tekst ne zadrava svoj format.
Ovo svojstvo predstavlja nain poravnavanja izabranog teksta.
SelectionAlignment itanje/upis
Moe biti Center, Left ili Right.
Uz pomo ove osobine moete saznati da li je neki dio teksta formatiran sa
SelectionBullet itanje/upis
simbolom za nabrajanje, a moete ubecivati ili uklanjati simbol za nabrajanje.
Koristite ovu osobinu da odredite za koliko piksela treba uvui simbol za
Bulletlndent itanje/upis
nabrajanje.
SelectionColor itanje/upis Doputa vam da mijenjate boju izabranog teksta.
SelectionFont itanje/upis Doputa vam da mijenjate font izabranog teksta.
SelectionLenght itanje/upis Uz pomo ove osobine moete podesiti ili saznati duinu izabranog teksta.
Ovo svojstvo sadri informacije o izabranom dijelu. Rei e vam da li je
SelectionType Samo itanje
izabran neki objekat ili je izabran samo tekst.
Ako podesite ovo svojstvo na true, margina e se pojaviti na lijevoj strani
ShowSelectionMargin itanje/upis
kontrole RichTextBox. Ovo omoguava lake biranje teksta.
UndoAc t i onName Samo itanje Uzima ime akcije koja e se koristi ako korisnik eli da poniti neku radnju.
Ako podesite ovu osobinu na true, moete odrediti da se odreeni dio teksta
SelectionProtected itanje/upis
ne mijenja.

Dogaaji kontrole RichTextBox

Veina dogaaja koji se koriste u obogaenim okvirima za tekst isti su kao i za obine okvire za tekst. Ima i
nekoliko novih:

Ime osbine Opis


LinkedClick Ovaj dogaaj se alje kada korisnik pritisne vezu unutar teksta.
Protected Ovaj dogaaj se alje kada korisnik pokua da promijeni tekst koji je kao zatien.
Ovaj dogaaj se alje kada elite neto da izmijenite u izabranom tekstu. Ako iz bilo kojih
SelctionChanged razloga ne elite da dopustite korisniku da mijenja izabrani tekst moete ga spreiti pomou
ovog dogaaja.

III - 1 - 3 - 8. Kontrola ListBox i Kontrola CheckedListBox


Okvir sa listom koristi se za prikaz liste stringova od kojih jedan ili vie moe biti izabrano. Kao kod polja za
potvrdu i radio dugmeta, okvir sa listom trai od korisnika da izabere jednu ili vie moguih opcija. Okvir liste
trebalo bi da koristite kada u toku kreiranja aplikacije ne znate taan broj opcija koje korisnik moe izabrati. Klasa
ListBox je izvedena iz klase ListControl. CheckedListBox je izvedena iz klase ListBox.
Svojstva kontrole ListBox

Sve osobine opisane u tabeli koja slijedi vae i za ListBox i za CheckedListBox, osim ako nije drugaije
naznaeno:

Ime osobine Dostupnost Opis


Vrijednost koja pokazuje indeks izabranog elementa u okviru liste. Ako okvir liste
SelectedIndex itanje/upis doputa da vie elemenata bude izabrano odjednom ovo svojstvo uzima indeks
prvog izabranog elementa.
ColumnWidth itanje/upis U okvirima sa vie kolona ovo svojstvo odreuje irinu kolona.
Items Samo itanje Kolekcija Items sadri sve elemente liste
Ovo svojstvo je kolekcija koja sadri indekse izabranih elemenata pri emu
Selectedlndices Samo itanje
indeksiranje poinje od nule.
U listi koja doputa biranje samo jednog elementa ovo svojstvo sadri taj
Selectedltem itanje/upis element. Ako se u listi moe izabrati vie elemenata svojstvo sadri prvi izabrani
element.
Selectedltems Samo itanje Ovo svojstvo je kolekcija koja sadri sve trenutno izabrane elemente.
Postoje etiri naina biranja elemenata u listi:
- None: nijedan element ne moe biti izabran.
SelectionMode itanje/upis
- One: samo jedan element moe biti izabran.
- MultiSimple: vie elemenata moe biti izabrano.

Dino Dedi 34
Maturski rad Veb prezentacija programskog jezika C#

- MultiExtended: vie elemenata moe biti izabrano i moe se koristiti


Ctrl, Shift i tasteri sa strjelicama za biranje.
Ako podesite ovu osobinu na true kontrola ListBoxce sortirat e elemente po
Sorted itanje/upis
abecednom redu.
Ako podesite Text osobinu okvira liste ona e tragati za elementom koji ima to
Text itanje/upis
ime i izabrae ga.
Samo za kontrolu CheckedListBox: ovo svojstvo sadri sve indekse elemenata koji
Checkedlndicies Samo itanje
su potvreni ili koji imaju neodreen status.
Samo za kontrolu CheckedListBox: ovo je kolekcija koja sadri sve elemente koji
CheckedItems Samo itanje
su potvreni ili koji imaju neodreen status.
Samo za kontrolu CheckedListBox: ako je ovo svojstvo podeeno na true, element
CheckOnClick itanje/upis
menja stanje kad god korisnik pritisne na njega.
Samo za kontrolu CheckedListBox: podeavanjem ove osobine moete birati da li
ThreeDCheckBoxes itanje/upis
e polja za potvrdu biti ravna ili normalna.

Metode kontrole ListBox

Tabela koja slijedi opisuje samo najee koritene metode. Metode vae i za kontrolu ListBox i za
CheckedListBox osim ako nije drugaije naznaeno:

Ime Opis
ClearSelected Ponitava izbor u okviru liste.
FindString Pronalazi prvi string u listi koji poinje eljenim stringom.
FindstringExact Kao i FindString s tim to se kompletan string mora podudarati.
GetSelected Vraa vrijednost koja pokazuje da li je element izabran ili nije.
SetSelected Podeava da element bude izabran ili brie element iz liste izabranih elemenata.
ToString Vraa trenutno izabrani element.
GetltemChecked Samo za kontrolu CheckedListBox: vraa vrijednost koja pokazuje da li je elemant
potvren ili ne.
SetltemCheckState Samo za kontrolu CheckedListBox: vraa vrijednost koja pokazuje stanje
elemenata.
SetltemChecked Samo za kontrolu CheckedListBox: podeava odreeni element tako da bude
potvren.
SetltemCheckState Samo za kontrolu CheckedListBox: podeava stanje elementa.

Dogaaji kontrole ListBox

Dogaaji kojih elite da budete svjesni dok radite sa kontrolama ListBox i CheckedListBox jesu oni
dogaaji koji se odnose na izbor korisnika:

Ime Opis
ItemCheck Samo za kontrolu CheckedListBox: deava se prilikom mijenjanja stanja elementa.
SelectedlndexChanged Deava se prilikom mjenjanja indeksa izabranog elementa.

III - 1 - 3 - 9. Kontrola ComboBox


Kontrola ComboBox (kombinovani okvir) sadri nekoliko kontrola: kontrole TextBox, Button i ListBox. U
kontroli ComboBox nije mogue izabrati vie od jednog elementa liste, ali je mogue unijeti nove elemente
otkucavanjem njihovih imena u polju TextBox kombinovanog okvira. Uobiajeno je da se kontrola ComboBox
koristi kada elimo da utedimo prostor u dijalogu.
Kada korisnik pritisne na dugme sa strjelicom desno od tekstualnog okvira pojavljuje se okvir liste u kojem
korisnik moe izabrati odreeni element. im korisnik izabere neki element okvir liste nestaje, a izabrani element
se pojavljuje u tekstualnom okviru tako vraajui normalan izgled dijalogu.
Svojstva kontrole ComboBox

Kako kontrola ComboBox posjeduje mogunosti kontrola TextBox i ListBox, mnoge osobine kombinovanog
okvira mogu se nai i u dvije pomenute kontrole. Zbog ovoga postoji ogroman broj svojstava i dogaaja kontrole
ComboBox.

Ime osobine Dostupnost Opis


Kombinovani okvir moe biti prikazan u tri razliita stila:
- DropDown: korisnik moe upisivati u tekstualni okvir, ali mora pritisnuti
na dugme sa strjelicom za prikaz kompletne liste elemenata.
DropDownStyle itanje/upis
- Simple: isto kao i DropDown s tim to je lista uvijek vidljiva
- DropDownList: korisnik ne moe upisivati novi element u tekstualni okvir i
mora pritisnuti na dugme sa strjelicom za prikaz liste elemenata.
Dino Dedi 35
Maturski rad Veb prezentacija programskog jezika C#

Pokazuje da li je lista prikazana ili nije. Ako podesite ovu osobinu na true, lista e se
DropDown itanje/upis
prikazati.
Items Samo itanje Kolekcija koja sadri sve elemente liste iz kombinovanog okvira.
Podeavanjem ove osobine na broj vei od nule, odreujete maksimalan broj
MaxLength itanje/upis
karaktera koji je mogue uneti u tekstualni dio kontrole.
Selectedlndex itanje/upis Pokazuje indeks trenutno izabranog elementa liste.
Selectedltem itanje/upis Pokazuje trenutno izabrani element liste.
SelectedText itanje/upis Predstavlja tekst koji je izabran u tekstualnom dijelu kontrole.
Predstavlja indeks prvog karaktera dijela teksta koji je izabran u tekstualnom dijelu
SelectionStart itanje/upis
kontrole.
SelectionLength itanje/upis Predstavlja duinu izabranog teksta u tekstualnom dijelu kontrole.
Ako podesite ovu osobinu na true kontrola e sortirati elemente liste po
Sorted itanje/upis
abecednom redu.
Ako podesite ovu osobinu na vrednost null nita nee biti izabrano. Ako podesite na
Text itanje/upis vrijednost koja postoji u listi ta vrijednost e biti izabrana. Ako traena vrijednost
ne postoji u listi tekst e biti prikazan u tekstualnom dijelu kontrole

Dogaaji kontrole ComboBox

Postoje tri osnovne akcije u kombinovanom okviru:


Kada se promijeni izbor
Kada se mijenja stanje liste (da li je prikazana ili nije)
Kada se mijenja tekst
Da biste obradili ove tri akcije morate se prijaviti za jedan ili vie od sljedeih dogaaja:
Ime Opis
DropDown Deava se prilikom prikazivanja dijela sa padajuom listom.
SelectedlndexChanged Deava se kada se umesto jednog elementa u listi izabere neki drugi element.
KeyDown
Ovi dogaaji deavaju se kada se pritisne taster dok tekstualni dio kontrole ima fokus.
KeyPress
Pogledajte objanjenja ovih dogaaja za tekstualni okvir.
KeyUp
TextChanged Deava se prilikom mijenjanja svojstva Text.

III - 1 - 3 - 10. Kontrola ListView


Lista iz koje moete birati datoteke u standardnom Windows dijalogu zove se kontrola ListView. Sve to
moete uraditi vezano za prikaz u standardnom dijalogu moete uraditi i u kontrolama ListView koje su sastavni
deo Visual Studio .NET-a. Podatke koje kontrola sadri mogue je prikazati razliitim ikonama u kolonama i
redovima ili u jednoj koloni. Kontrola ListView je najkompleksnija kontrola.
Svojstva kontrole ListView

Ime osobine Dostupnost Opis


Koritenjem ove osobine moete kontrolisati kako korisnik aktivira elemente iz
kontrole ListView. Ne bi trebalo mijenjati vrijednost osobine ukoliko nemate dobar
razlog za promjenu, zato to se promjena podeene vrijednosti odnosi na cijeli
Activation itanje/upis sistem. Mogue vrijednosti su:
- Standard: ona vrijednost koju je korisnik ve izabrao za cijeli sistem.
- OneClick: jedan pritisak miem aktivira element.
- TwoClick: dvostruki pritisak miem aktivira element.
Ovom osobinom reguliete poravnanje elementa u kontroli ListView. etiri mogue
vrijednosti su:
- Default: element ostaje tamo gde ga je korisnik prevukao i spustio.
Alignment itanje/upis
- Left: elementi su poravnati po lijevoj ivici kontrole ListView.
- Top: elementi su poravnati po gornjoj ivici kontrole ListView.
- SnapToGrid: ListView kontrola ima nevidljivu mreu po kojoj su elementi poravnati.
Ako podesite ovu osobinu na true dozvoljavate korisniku da mijenja redosljed kolona.
AllowColumn
itanje/upis Ako to uradite morate imati rutine koje e valjano ubacivati elemente u listu, bez
Reorder
obzira na to da li je redosljed kolona promenjen ili nije.
Ako podesite ovu osobinu na true element e zauzeti poloaj prema vrijednosti
AutoArrange itanje/upis svojstva Alignment. Podeavanje ove osobine ima efekta samo ako je svojstvo View
podeeno na Largelcon ili Smalllcon.
Ako podesite ovu osobinu na true svaki element u listi imat e polje za potvrdu lijevo
CheckBoxes itanje/upis od sebe. Podeavanje ove osobine ima efekta samo ako je svojstvo View podeeno na
Details ili List.
Checkedlndices Samo itanje Ova dva svojstva daju pristup kolekcijama koje sadre indekse i elementi koji su

Dino Dedi 36
Maturski rad Veb prezentacija programskog jezika C#

Checkedlterns potvreni.
Kontrola ListView moe imati kolone. Ovo svojstvo obezbeuje pristup kolekciji
Columns Samo itanje
kolona kroz koju moete dodavati ili uklanjati kolone.
Focusedltem Samo itanje Ovo svojstvo sadri element koji ima fokus. Ako nita nije izabrano, vrednost je nula.
Ako je ovo svojstvo podeeno na true, kada se pritisne na neki element, onda e cijeli
FullRowSelect itanje/upis red u kom se element nalazi biti naglaen. Ako je podeenona false samo e element
biti naglaen.
Podeavanjem ove osobine na true pokazat e se linije mree izmeu redova i kolona.
GridLines itanje/upis
Podeavanje ove osobine ima efekta samo ako je svojstvo view podeeno na Details.
Moete kontrolisati kako e biti prikazano zaglavlje kolone. Postoje tri stila:
- Clickable: zaglavlje kolone se ponaa kao dugme.
HeaderStyle itanje/upis
- NonClickable: zaglavlje kolone ne reaguje na pritisak miem.
- None: zaglavlja kolona nisu prikazana.
Kada je ovo svojstvo podeeno na true korisnik moe izabrati element postavljanjem
HoverSelection itanje/upis
mia na element.
Kada je vrijednost ovog svojstva podeena na true korisnik moe ureivati sadraj
LabelEdit itanje/upis
prve kolone u prikazu Details.
Kada je ovo svojstvo podeeno na true oznake e se protezati na koliko god je redova
LabelWrap itanje/upis
potrebno za prikazivanje cijelog teksta.

III - 1 - 3 - 11. Metode klase ListView


Za kompleksnu kontrolu kakva je ListView postoji mali broj metoda. Sve su opisane u sljedeoj tabeli:
Ime Opis
Pozivanjem ove metode zaustavljate osveavanje slike sve dok se ne pozove metoda EndUpdate.
BeginUpdate Ovo moe biti korisno pogotovu ako ubacujete veliki broj elemenata odjednom - sprijeava se
treptanje prikaza i znaajno se poveava brzina.
Clear Kompletno uklanja sve elemente i kolone kontrole ListView.
Ovu metodu pozivate poslije metode BeginUpdate. Kada je pozovete svi elementi e biti iscrtani u
EndUpdate
kontroli ListView.
EnsureVisible Kada pozovete ovu metodu lista e se pomejriti do onog elementa iji je indeks proslijeen metodi.
GetltemAt Vraa element u listi koji se nalazi na poziciji x, y.

Dogaaji kontrole ListView

Sljedea tabela opisuje dogaaje koje moete pozivati za kontrolu ListView:


Ime Opis
AfterLabelEdit Ovaj dogaaj nastaje poslije ureivanja oznake.
BeforeLabelEdit Ovaj dogaaj nastaje prije nego to korisnik zapone ureivanje oznake.
ColumnClick Ovaj dogaaj nastaje kada je kolona pritisnuta.
ItemActivate Deava se kada se element aktivira.

Klasa ListViewltem

Element liste je uvijek objekat klase ListViewltem. Klasa ListViewltem sadri informacije kao to su tekst i
indeks ikone koje treba prikazati. Sadri kolekciju koja se zove SubItems. Ova kolekcija sadri objekte klase
ListViewSubItems. Ovi podelementi su prikazani ako je kontrola ListView u reimu Details. Svaki od podelemenata
predstavlja kolonu. Osnovna razlika izmeu elementa i podelementa jeste ta to podelement ne moe prikazati
ikonu.
Klasa ColumnHeader

Za prikazivanje zaglavlja kolona dodajete objekte klase ColumnHeader kontroli ListView kroz kolekciju
Columns. Klasa ColumnHeader obezbjeuje zaglavlje za kolone koje e se prikazati kada je ListView u reimu
Details.
III - 1 - 3 - 12. Kontrola ImageList
Kontrola ImageList obezbjeuje kolekciju koja se koristi za smetanje slika koje mogu biti koritene u
drugim kontrolama. U liste slika mogu se stavljati slike bilo koje veliine, s tim da se u okviru jedne kontrole mogu
nai samo slike iste veliine. U sluaju kontrole ListView potrebne su dvije kontrole ImageList za smetanje malih i
velikih slika. ImageList ne prikazuje svoj sadraj u vrijemenu izvravanja programa. Kada dovuete ovu kontrolu na
formular za vrijeme dizajniranja, ona ne postaje dio samog formulara ve se nalazi u bloku ispod formulara koji
smeta sve sline objekte. Ovo zanimljivo svojstvo ne doputa kontrolama koje nisu dio grafikog interfejsa da
zatrpavaju dizajner formulara. Kontrolom ImageList se rukuje kao i svakom drugom kontrolom, ali je ne moete
pomerati.

Dino Dedi 37
Maturski rad Veb prezentacija programskog jezika C#

III - 1 - 3 - 13. Kontrola StatusBar


Statusna linija se najee koristi za prikazivanje uputstva za izabrani element ili za informaciju o akciji koja
se trenutno izvodi. Kontrola StatusBar se postavlja u dnu ekrana kao to je to sluaj sa MS Office aplikacijama.
Visual Studio.NET statusna linija se koristi za prikazivanje teksta.

Svojstva kontrole StatusBar

Moete podesiti svojstvo Text statusne linije za prikazivanje nekog teksta ali je mogue praviti panele u iste
svrhe:
Ime osobine Dostupnost Opis
Backgroundlmage itanje/upis Mogue je dodijeliti sliku statusnoj liniji koja e se iscrtati u pozadini.
Ovo je kolekcija panela u statusnoj liniji. Koristite ovu kolekciju za dodavanje i
Panels itanje/upis
uklanjanje panela.
ShowPanels itanje/upis Ako hoete da prikaete panele ovo svojstvo mora biti podeeno na true.
Kada ne koristite panele ovo svojstvo sadri tekst koji e se prikazati na
Text itanje/upis
statusnoj liniji.

Dogaaji kontrole StatusBar

Nema mnogo novih dogaaja za statusnu liniju, ali ako crtate panel runo dogaaj DrawItem je od velike
vanosti:
Ime Opis
Deava se kada panel sa OwnerDraw stilom treba ponovo iscrtati. Morate prijaviti ovaj dogaaj
DrawItem
ako elite sami da crtate sadraj panela.
PanelClick Deava se prilikom odabira panel.

Klasa StatusBarPanel

Svaki panel u statusnoj linije je objekat klase StatusBarPanel. Ova klasa sadri informacije o svim panelima
kolekcije Panels. Moe se podeavati tekst, poloaj teksta u panelu, ikone ili stil panela. Ako elite sami da crtate
panel morate podesiti svojstvo panela Style na OwnerDraw i obraditi dogaaj DrawItem kontrole StatusBar.
III - 1 - 3 - 14. Kontrola TabControl
Kontrola TabControl obezbjeuje lagan nain organizovanja dijaloga u logike jedinice kojima se moe
pristupiti kroz jezike kartica na vrhu kontrole. Kontrola TabControl sadri kontrole TabPages koje su sline
grupnim okvirima.
Postoje dva reda koja sadre jezike kartica u vrhu kontrole. Pritiskom na bilo koji od njih prikazat e se
drugaija selekcija kontrola u ostatku dijaloga. Ovo je dobar primejr kako grupisati informacije koje su u nekoj vezi
jedna s drugom pa tako olakavajui korisniku da pronade eljenu informaciju. Koritenje kontrole TabControl je
veoma lako. Jednostavno dodate jezike za kartice koje elite prikazati u kolekciju TabPages, a zatim ubacujete
ostale kontrole u odgovarajue strane.
Svojstva kontrole TabControl

Osobine kontrole TabControl se uglavnom koriste za podeavanje izgleda kontenjera u kome se nalaze
kontrole TabPages tj. za izgled kartica:

Ime osobine Dostupnost Opis


Kontrolie se gdje se na kontroli pojavljuju jezici kartica. Podrazumeva se da su na
Alignment itanje/upis
vrhu.
Appearance itanje/upis Kontrolie se kako su prikazani jezici kartica. Mogu biri kao dugme ili ravni.
Ako je ovo svojstvo podeeno na true izgled jezika kartice se menja kada pokaziva
HotTrack itanje/upis
mia prelazi preko njega.
Ako je ovo svojstvo podeeno na true mogue je imati nekoliko redova sa jezicima
Multiline itanje/upis
kartica.
RowCount itanje/upis Sadri broj redova sa jezicima kartica koji su trenutno prikazani.
Selectedlndex itanje/upis Vraa ili podeava indeks trenutno izabranog jezika kartice.
TabCount itanje/upis Sadri ukupan broj kartica.
Ovo je kolekcija objekata TabPages. Koristite ovu kolekciju za dodavanje ili uklanjanje
TabPages itanje/upis
kartica.

Dino Dedi 38
Maturski rad Veb prezentacija programskog jezika C#

III. Zakljuak
C# je objektno orjentisan programski jezik kojeg su razvili Andres Hejlsberg i drugi pripadnici Microsoft
firme. C# je evolucija C i C++ programskog jezika. U odnosu na C i C++ sintaksa C# je dosta prostija, greke je
jednostavnije otkloniti i sam kod je dosta razumljiviji.
Prema TIOBE-ovoj statistici C# je rangiran na 5. mjesto kao jedan od koritenijih programskih jezika, dok C i
C++ zauzimaju prva tri mjesta.
Ovaj maturski rad je obuhvatio samo dio onoga to programski jezik C# i .NET Framework pruaju. Sam
framework sadri hiljade klasa koje moete iskoristiti u svojim programima. Za detaljan opis svih klasa, njihovih
metoda te moguih naina upotrebe, trebalo bi biti napisane desetine hiljada stranica. Sam jezik C# nudi jo puno
elemenata i metoda koje vam mogu olakati posao programiranja. Posao programera zahtijeva konstantno uenje i
usavravanje, razumijevanje kako odreene mogunosti mogu olakati ivot, ali u nekim sluajevima i oteati.
Samo razumijevanje programerskih ideja, algoritama i principa, predstavlja samo poetni korak prema razvoju
kvalitetnih sistema..

Dino Dedi 39
Maturski rad Veb prezentacija programskog jezika C#

IV. Literatura
Internet :
http://www.scribd.com/doc/27049359/C-Programiranje-skripta
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 2.5.2012.
http://hr.wikipedia.org/wiki/C_Sharp 2.5.2012.

Dino Dedi 40

You might also like