C# SADRŽAJ VEŽBI

I C# JEZIK 1. UVOD U C# (MICROSOFT VISUAL C# 2010 EXPRESS) 2. TIPOVI PODATAKA, PROMENLJIVE, OPERATORI 3. KONTROLA TOKA PROGRAMA (GRANANJE I CIKLUSI) 4. FUNKCIJE 5. NIZOVI I STRUKTURE 6. KLASE, METODE I OBJEKTI 7. NASLEĐIVANJE, POLIMORFIZAM 8. DODATNE TEHNIKE OOP II WINDOWS PROGRAMIRANJE 9. OSNOVNO WINDOWS PROGRAMIRANJE (DUGMIĆI, LABELE, TEXTBOX, ...) 10. NAPREDNE WINDOWS FORME (MENIJI, TOOOLBAR, KREIRANJE APLIKACIJA I KONTROLA) III PRISTUP PODACIMA 11. RAD SA FAJLOVIMA 12. LINQ

1

Poslednja verzija C# je 4. drugi deo za mrežno programiranje.0) se pojavila 2001. Ključne reči u C# abstract break char continue do event finally foreach in internal namespace operator params readonly as byte checked decimal double explicit fixed goto in (generic modifier) is new out private ref base case class default else extern float if int lock null out (generic modifier) protected return bool catch const delegate enum false for implicit interface long object override public sbyte 2 . Npr. NET Framework je dizajniran tako da može koristiti bilo koji programski jezik kao što su C++. dobio je ime sharp po inspiraciji muzičke notacije i znači da se napisana nota izvodi za pola koraka više. Klasa je skup pravila koji određuju kako će se formirati neki objekat. Razvio ga je Microsof tim koji je vodio Andres Hejlsberg.0 koja je završena 12.orijentisano programiranje (Klase. C# je naprednija verzija C++ (C++++). Metodi se izvršavaju nad poljima koja su definisana u klasi. a neki drui za Web razvoj. NET Framework sadrži veliku biblioteku koda koji može da koristi klijentski jezik (kao što je C#) koristeći tehnike objektno-orijentisanog programiranja. Neki moduli su podeljeni u neke specifičnije pod module. Ova biblioteka se sastoji od različitih modula.godine.). pa su se ubrzo pojavljivale nove verzije ovog programskog jezika. Takođe je moguće da se kombinuju pojedini delovi koda iz različitih programskih jezika. Fajlovi pisani u ovom jeziku imaju ekstenziju cs. Aprila 2010. Web aplikacije.. Ovde se koriste termini kao što su funkcija (metoda) koja predstavlja kod programa koji se izvršava nad podacima. Metodi su ustvari podprogrami i oni mogu imati svojstva. Visual Basic. Šta je .Nastanak C# C# je jednostavan objektno-orijentisan programski jezik opšte namene.. Klasa predstavlja skup podataka i instrukcija koje se izvode na nekim podacima. Tako npr. čak i ranije verzije Cobol. To je takva platforma na kojoj mogu raditi različite vrste aplikacija (Windows aplikacije. objekti i metode) Objekat je primerak (instanca) klase. neki moduli sadrže blokove za kreiranje windows aplikacija. god. Podaci koji se definišu u klasi obično se nazivaju polja (fields).NET Framework? NET Framework je revulucionarna platofrma koju je kreirao Microsoft za razvoj aplikacija. Objektno . Svaka klasa ima svoje članove i to su podaci i kod. pri čemu je moguće koristiti pojedine delove u zavisnosti od potrebe. Web servisi. Pošto je naslednik C i C++ jezika. kod napisan u C# se može kombinovati sa kodom iz Visual Basica. Prva verzija (C# 1. događaje i konstruktore. Jscript.

Izgled startnog prozora Microsoft Visual C# 2010 Express Pri kreiranju konzolne aplikacije izabere se opcija sa padajućeg menija File→New Project.Linq.Generic.Text. Zatim se u okviru panela Templates izabere Console Application.Collections. System. Slika 1. na kojoj se mogu odabrati ponuđene mogućnosti za formiranje novog projekta izborom opcije New Project ili otvaranje već postojećeg projekta izborom opcije Open Project. System. System. namespace ConsoleApplication1 { class Program { static void Main(string[] args) { } } } 3 . Potom se dobija sledeće: using using using using System.sealed static this typeof unsafe void short string throw uint ushort volatile sizeof struct true ulong using while stackalloc switch try unchecked virtual Kreiranje konzolnih aplikacija u Microsoft Visual C# 2010 Express Na slici 1 je prikazana startna strana.

/*traži se pritiskanje nekog tastera za prekid rada programa*/ } } } predstavlja . using using using using System.ReadKey().ne vraća vrednost."). Naravno. Pri izvršavanju aplikacije pojaviće se u komand propmptu tekstualna poruka: Jednostavan C# program.funkcija za unos nekog znaka sa tastature (za prekid rada programa) namespace Ovaj program se unosi izborom opcije New Project. . System. Ovaj metod počinje sa static.Collections. pa se bira u okviru Online Template opcija Empty Project.Da bi aplikacija bilo šta radila potrebno je dodati bar jednu liniju koda ispod glavne funkcije static void Main(string[] args).). using System. postoji mogućnost preimenovanja. što znači da je statički i void . System. a potom sa padajućeg menija Debug → Start Without Debugging.NET način da se kod i njegov sadržaj jedinstveno identifikuju. -WriteLine() je funkcija koji kao rezultat vraća string koji mu je prosleđen. class Primer{ -definicija klase Primer.WriteLine("Jednostavan C# program. 4 .-predstavlja korišćenje System namespace (odnosi se na biblioteku klasa . U kombinaciji se kompajleru govori da je WriteLine() članica Console klase.Text. a završava se sa }. Console. Primer 1. System. Console. Ispisati tekst na ekranu. System.Text. Početak klase počinje sa otvorenom vitičastom zagradom {. using using using using System. Console. čiju biblioteku koristi C#). Ukoliko se fajl ne snimi pod nekim imenom.WriteLine("Prva aplikacija kod C# proogramiranja!").NET Framework. Primer 2. (Ukoliko je u padajućem meniju ne postoje ove opcije treba izabrati opciju Tools → Settings → Expert Settings).Collections.Linq. namespace je deklarisan za kod aplikacije koja se u ovom slučaju naziva ConsoleApplication1. System. Takođe se koristi za kategorizaciju elemenata u .cs. Console.podržava konzolni I/O.Generic. dodeljuje mu se automatski ime CodeFile1.NET Framework. Na padajućem meniju se izabere opcija Build →Build Solution (F6).ReadKey(). Izrazi u C# se zvršavaju sa tačka-zarezom (.Linq. static void Main()-počinje glavni metod. System. gde se izvršava program. Za veće projekte može se kreirati sopstveni namespaces. namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.Generic. Napisati konzolnu aplikaciju za unos i sabiranje dva cela broja.

WriteLine("Uneti prvi broj "). namespace ConsoleApplication1 { class Program { static void Main(string[] args) { double prviBroj./*sa {0}. prviBroj + drugiBroj). rezultat = prvi + drugi.WriteLine("Razlika {0} i {1} je {2}. drugi = int. string string1.Text.". Console.ReadLine().ReadLine(). 5 . string1 = Console. Ukoliko se komenar piše u jednom redu.WriteLine("Rezultat sabiranja je: ").WriteLine("Zdravo {0}!".ReadKey().ReadLine()). pa se zato nazivaju linijski komentari. using using using using System. Primer 3. {1} i {2} su predstavljena mesta za tri promenljive*/ Console.Parse(string2).Linq.Collections. korisnickoIme)./* sa metodom ReadLine() se unosi prvi string koji ne stoji kao argument*/ Console. Console. rezultat. Console.namespace ConsoleApplication2 { class Program { static void Main(string[] args) { int prvi.WriteLine("Unesi svoje ime:").//string koji se unosi Console.WriteLine(prvi + " + " + drugi + " = " + rezultat).WriteLine("Zbir broja {0} i {1} je {2}. Zbog toga se koriste komentari za blokove ili linijski komentari. prviBroj. on počinje sa "//" a završava se sa enterom.ToDouble(Console.WriteLine("Uneti drugi broj "). Console./* {0} oznacava mesto gde ce se stampati sadržaj promenljive korisnickoIme*/ Console.WriteLine("Unesi prvi broj:").ReadLine()). } } } Komentari Komentari se koriste da bi aplikaciju razumeli oni koji ne znaju šta taj program radi.WriteLine("Unesi drugi broj"). Osnovna njihova namena je da objasne deo koda koji se nalazi u toj liniji./*konvertuje string u double tip */ Console. drugi. System. korisnickoIme = Console. prviBroj = Convert. Console. Komentari u C# su obično obojeni zeleno.//realne promenljive string korisnickoIme. Ovakvi komentari se obično pišu u više redova. drugiBroj. string2. Primena komentara u konzolnoj aplikciji. drugiBroj. Console. System.ReadLine().Parse(string1).". a završavaju se sa"*/".Generic. System. string2 = Console. drugiBroj = Convert. Može se odnositi na više linija koda ili na jednu liniju. prvi = int. Komentari za blok instrukcija se pišu tako što počinju sa "/*" nakon čega sledi tekst komentara.ToDouble(Console.

float. i pravila izvođenja konverzije su jednostavna. Console. Implicitna konverzija tipova u C# Tip Konverzija sbyte short.". float. long. prviBroj . Eksplicitna konverzija-konverzija iz tipa I u tip II je moguća samo u određenim slučajevima ili su pravila za konverziju prilično komplikovana. prviBroj * drugiBroj).drugiBroj. long. } } } Promenljive i tipovi podataka Promenljive se moraju na početku deklarisati pre upotreba. Console. drugiBroj.WriteLine("Ostatak deljenja {0} i {1} je {2}.koristi se u kombinaciji sa tri operanda (kondicionalni operator a:b?c) Konvertovanje promenljivih Tipovi konverzije promenljivih mogu biti: Implicitna konverzija-konverzija iz tipa I u tip II je moguća u svim slučajevima. drugiBroj. ushort. drugiBroj. Tabela 1.ReadKey().drugiBroj). prviBroj / drugiBroj). Console. ulong. Tipovi podataka u C# Tip Značenje bool Predstavlja true/false vrednosti byte 8-bitni pozitivna celobrojna vrednost char Znakovne vrednosti decimal Numerički tip vrednosti za finansijske obračune double Realne vrednosti dvostruke preciznosti float Realne vrednosti int Celobrojne vrednosti (32 bitne) long Celobrojne vrednosti većeg opsega (64 bitne) sbyte 8-bitna celobrojna označena (+ i -) vrednost short 16-bitna celobrojna vrednost uint Neoznačena celobrojna vrednost ulong Neoznačena celobrojna vrednost većeg opsega ushort Neoznačena celobrojna vrednost manjeg opsega Operatori mogu biti: unarni . Console.koriste se u kombinaciji sa dva operanda tenarni . double ili decimal 6 . Tipovi podataka u C# su dati u tabeli 1. int. int. Tabela 2. prviBroj.". uint. prviBroj % drugiBroj).".WriteLine("Kolicnik {0} i {1} je {2}.izvršavaju se na jednom operandu (promenljivoj) binarni . prviBroj. long. prviBroj. float. double ili decimal byte short. prviBroj. double ili decimal short int.WriteLine("Proizvod {0} i {1} je {2}.

double ili decimal float. short. int ili char sbyte. ulong ili char sbyte. short. byte. char. ushort. ulong. byte ili short sbyte. byte. ushort. int. uint. ushort. int. uint. short. uint. ulong ili char sbyte ili char sbyte. double ili decimal long. uint. byte. float. long. long ili char sbyte. short. double ili decimal ushort. float. long. ushort. uint. double ili decimal double float. ulong ili char sbyte. ushort. double ili decimal Tabela 3. uint. float. double ili decimal long. float. ushort. float ili double 7 . short. short ili char sbyte. long. char. byte.ushort int uint long char float ulong int. ulong ili char sbyte. byte. char ili decimal sbyte. int. byte. Eksplicitna konverzija tipova u C# Tip Konverzija sbyte byte short ushort int uint long ulong char float double decimal byte. ulong. ushort. int. ulong. byte. short. uint. uint. ushort. long. int. float ili decimal sbyte. short. ulong. long. int. ulong. uint. ushort. byte. ulong. uint. byte.

a nedostatak što se može dobiti kod koji je teško razumljiv.ToUInt32(argument) argument konvertuje u uint Convert.ToBoolean(argument) argument konvertuje u bool Convert.ToUInt16(argument) argument konvertuje u ushort Convert. Uslovi (grananje) u programu Kao kod C programskog jezika.ToDecimal(argument) argument konvertuje u decimal Convert.ToInt64(argument) argument konvertuje u long Convert. On ima svoje prednosti i nedostatke.ToDouble(argument) argument konvertuje u double Convert.ToSByte(argument) argument konvertuje u sbyte Convert. može se koristiti jednostruko grananje if (uslov) { // Nesto se radi } ili višestruko if (uslov1) { // Radi nešto } else { if (uslov2) { // Radi nešto drugo } else { if (uslov3) { // Radi nešto drugo } else { // Radi nešto drugo 8 .ToInt32(argument) argument konvertuje u int Convert. Programska linija se na neki način obeleži (slovima ili brojevima) i navede goto slovo/broj.ToUInt64(argument) argument konvertuje u ulong Kontrola toka programa goto goto izraz se koristi kada je neophodno da se preskoči neki deo koda ili da se vrati na prethodni.ToString(argument) argument konvertuje u string Convert. Prednost je u jednostavnom prelasku sa jednog dela koda na drugi.ToByte(argument) argument konvertuje u byte Convert.ToSingle(argument) argument konvertuje u float Convert.Tabela 4.ToChar(argument) argument konvertuje u char Convert.ToInt16(argument) argument konvertuje u short Convert. Funkcije u C# za eksplicitnu konverziju Funkcija Objašnjenje Convert.

System.} } } switch izraz switch (operand) { case operand1: kod za izvrsavanje.Linq. System.. iteracija) izraz.Collections. Console. for (int i = 1. iteracija) { niz izraza. Napisati konzolnu aplikaciju za unos broja i određivanje sume brojeva od 1 do unetog broja i faktorijela tog broja.. i++) { sum += i. default: kod za izvrsavanje ako ni jedan uslov nije ispunjen. namespace ConsoleApplication1 { class MainClass { public static void Main() { int n. i <= n. n = Convert. uslov. Opšti oblik for ciklusa koji ima oblik izraza koji treba da se izvrše: for(inicijalizacija. break.ReadLine()). case operandN: kod za izvrsavanje. case operand2: kod za izvrsavanje. break.ToInt32(Console. // i je pomocna primenljiva fact *= i. int fact = 1. sum = 0. System. break. } Ciklusi for ciklus Opšti oblik for ciklusa je: for(inicijalizacija. uslov.Text. break. . } Primer 4.WriteLine("Uneti broj do koga se vrsi sabiranje (odredjuje faktorijel) "). } 9 .Generic. using using using using System.

broj.} } } Console. Console. } while(uslov).WriteLine("Faktorijel je " + fact). Primer 5.WriteLine("Uneti broj ciji se stepen trazi "). n. 10 . Console. } } } } } Console.WriteLine("Suma brojeva od 1 do {0} je {1} ". e = i. broj = Convert. using using using using System. System. sum). Napisati konzolnu aplikaciju za unos nekog celog broja i ispisivanje stepena od 1 do n zadatog broja.ReadLine()). Opšti oblik while ciklusa je: while(uslov) izraz. e--. System.ReadLine()). while (e > 0) { rezultat *= broj.n.WriteLine(broj + " na " + i + " je " + rezultat). for (i = 0. while ciklus Ovaj ciklus se koristi u slučaju kada je nepoznat broj iteracija (ponavljanja) ciklusa. e. i < n.Linq.ToInt32(Console.Collections. Opšti oblik ovog ciklusa je: do { izrazi. i++) { rezultat = 1.WriteLine("Uneti stepen koji se trazi "). namespace ConsoleApplication1 { class MainClass { public static void Main() { int i. do while ciklus do-while ciklus se mora izvršiti bar jednom.ToInt32(Console. System. Console. int rezultat.Text.Generic. n = Convert.

Console.Linq. } while (broj > 0).ReadLine()).ToDouble(Console.WriteLine("Do koje vrednosti uloga zelite da dodjete?").Write("Broj u inverznom poretku je: "). Console.Text. System. kamatnaStopa = 1 + Convert.Collections.Linq. ulog = Convert.ToDouble(Console. ++ukupnoGodina.Primer 6.ReadLine()). Console.WriteLine("Kolika je kamatna stopa (u %)?"). do { sledecibroj = broj % 10. broj = broj / 10.Generic.ReadKey(). System. krajnjiUlog. Console. do { ulog *= kamatnaStopa. krajnjiUlog = Convert.ReadLine()) / 100. System. Console. ulog).Generic.ReadLine()). System. Console. using using using using System.WriteLine("Uneti broj"). namespace ConsoleApplication1 { class Program { static void Main(string[] args) { double ulog.WriteLine("Uneti broj je: " + broj).Write(sledecibroj). } } } Primer 7. int sledecibroj.WriteLine("Za {0} god. Napisati konzolnu aplikaciju na primeru proračuna broja godina do koje treba određeni ulog banke da naraste. using using using using System.ToInt32(Console. namespace ConsoleApplication1 { class MainClass { public static void Main() { int broj. Console.". Napisati konzolnu aplikaciju za unos celog broja i ispisivanje tog broja u inverznom poretku.ToDouble(Console. int ukupnoGodina = 0.Text. Console.Collections. 11 . broj = Convert.WriteLine("Koliki je vas ulog u banci?").0. } while (ulog < krajnjiUlog). System. kamatnaStopa. Console.ukupnoGodina. System. ulog ce dostici {1}.

Funkcije u C# predstavljaju blokove koda koji se mogu izvršavati u bilo kom delu aplikacije. "Al Pacino"}. using using using using System.WriteLine(imeGlumca). ali taj termin će se kasnije koristiti kod klasa.Length). Console. } } } Funkcije Kada je reč o funkcijama prvo treba objasniti funkciju Main().WriteLine("Ovo su {0} moja omiljena glumca:". Tako na 12 . pa su moguće sledeće verzije ove funkcije: static static static static void Main() void Main(string[] args) int Main() int Main(string[] args) Opcionalni parametar args u Main() funkciji obezbeđuje način za dobijanje informacija izvan aplikacije.. "Brus Willis". System. Ova funkcija kao rezultat vraća void ili int. namespace Ciklusi { class Program { static void Main(string[] args) { string[] imenaGlumaca = { "Matthew McConaughey". Ne mora se voditi računa koliko je elemenata u nizu npr.WriteLine().: Primer 8.Text.ReadKey().Linq. foreach (string imeGlumca in imenaGlumaca) { Console. Napisati konzolnu aplikaciju za primenu foreach ciklusa. } } } foreach ciklus foreach ciklus se koristi za adresiranje svakog elemena u nizu koristeći sledeću sintaksu: foreach (<osnovni tip> <ime> in <niz>) { može se koristi <ime> za svaki element } Ovaj ciklus ide kroz svaku promenljivu i postavlja je u promenljivu <ime>. Kod OOP funkcije se nazivaju metode.Console.Generic. System. System.Collections. imenaGlumaca. a može se uključiti string[] args parametar. } Console.

//poziv funkcije Pisi() Console. } static void Main(string[] args) { Pisi(). "Nikola"). ako se u traži ispis nekog teksta. Console.Generic. } 13 . Napisati konzolnu aplikaciju za formiranje funkcije Osoba(imena) i pozivanje funkcije u glavnom programu. System. System. "Marko". namespace FunkcijaZaIspisTeksta { class Program { //Definicija funkcije Pisi() static void Pisi() { Console.primer. Funkcija se poziva u glavnom programu navođenjem imena funkcije i eventualno prosleđivanjem parametara.WriteLine("Hello. može se pozvati funkcija u bilo kom delu aplikacije. System. using using using using System. Napisati konzolnu aplikaciju za formiranje funkcije Pisi() i pozivanje funkcije u glavnom programu. System. a mogu biti sa ili bez argumenata. a dovoljno je samo jednom da se napiše.Collections.Linq. System. iza čega se dalje piše telo funkcije (ono što funkcija treba da uradi). Primer 9. System.Text.ReadKey(). Osoba("Marija".Linq. using using using using System.Collections.Text.Generic. Argumenti funkcije se navode u zaglavlju funkcije.WriteLine("Ovo je tekst"). } static void Osoba(params string[] imena) { foreach (string ime in imena) Console. namespace Funkcija { class Program { static void Main(string[] args) { Osoba("Ana"). Funkcije utiču na čitljivost koda.ReadKey(). } } } Primer 10. Definicija i poziv funkcije Funkcije se mogu smestiti ili pre ili posle glavne funkcije Main(). " + ime).

} } 14 .

Sign up to vote on this title
UsefulNot useful