+ All Categories
Home > Documents > C# srpski uvod

C# srpski uvod

Date post: 24-Jun-2015
Category:
Upload: marko-copic
View: 3,001 times
Download: 12 times
Share this document with a friend
Popular Tags:
17
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
Transcript
Page 1: C# srpski uvod

C#SADRŽAJ VEŽBI

I C# JEZIK1. UVOD U C# (MICROSOFT VISUAL C# 2010 EXPRESS)2. TIPOVI PODATAKA, PROMENLJIVE, OPERATORI 3. KONTROLA TOKA PROGRAMA (GRANANJE I CIKLUSI)4. FUNKCIJE5. NIZOVI I STRUKTURE6. KLASE, METODE I OBJEKTI7. NASLEĐIVANJE, POLIMORFIZAM8. DODATNE TEHNIKE OOP

II WINDOWS PROGRAMIRANJE9. OSNOVNO WINDOWS PROGRAMIRANJE (DUGMIĆI, LABELE, TEXTBOX, ...)10. NAPREDNE WINDOWS FORME (MENIJI, TOOOLBAR, KREIRANJE

APLIKACIJA I KONTROLA)

III PRISTUP PODACIMA11. RAD SA FAJLOVIMA12. LINQ

1

Page 2: C# srpski uvod

Nastanak C#

C# je jednostavan objektno-orijentisan programski jezik opšte namene. Razvio ga je Microsof tim koji je vodio Andres Hejlsberg. Poslednja verzija C# je 4.0 koja je završena 12. Aprila 2010. god. Prva verzija (C# 1.0) se pojavila 2001.godine, pa su se ubrzo pojavljivale nove verzije ovog programskog jezika. Pošto je naslednik C i C++ jezika, dobio je ime sharp po inspiraciji muzičke notacije i znači da se napisana nota izvodi za pola koraka više. C# je naprednija verzija C++ (C++++). Fajlovi pisani u ovom jeziku imaju ekstenziju cs.

Šta je .NET Framework?

NET Framework je revulucionarna platofrma koju je kreirao Microsoft za razvoj aplikacija. To je takva platforma na kojoj mogu raditi različite vrste aplikacija (Windows aplikacije, Web aplikacije, Web servisi...). NET Framework je dizajniran tako da može koristiti bilo koji programski jezik kao što su C++, Visual Basic, Jscript, čak i ranije verzije Cobol. Takođe je moguće da se kombinuju pojedini delovi koda iz različitih programskih jezika. Npr. kod napisan u C# se može kombinovati sa kodom iz Visual Basica.NET Framework sadrži veliku biblioteku koda koji može da koristi klijentski jezik (kao što je C#) koristeći tehnike objektno-orijentisanog programiranja. Ova biblioteka se sastoji od različitih modula, pri čemu je moguće koristiti pojedine delove u zavisnosti od potrebe. Tako npr. neki moduli sadrže blokove za kreiranje windows aplikacija, drugi deo za mrežno programiranje, a neki drui za Web razvoj. Neki moduli su podeljeni u neke specifičnije pod module.

Objektno - orijentisano programiranje (Klase, objekti i metode)

Objekat je primerak (instanca) klase. Klasa predstavlja skup podataka i instrukcija koje se izvode na nekim podacima. Klasa je skup pravila koji određuju kako će se formirati neki objekat. Svaka klasa ima svoje članove i to su podaci i kod. Podaci koji se definišu u klasi obično se nazivaju polja (fields). Ovde se koriste termini kao što su funkcija (metoda) koja predstavlja kod programa koji se izvršava nad podacima. Metodi su ustvari podprogrami i oni mogu imati svojstva, događaje i konstruktore. Metodi se izvršavaju nad poljima koja su definisana u klasi.

Ključne reči u C#

2

Page 3: C# srpski uvod

Kreiranje konzolnih aplikacija u Microsoft Visual C# 2010 Express

Na slici 1 je prikazana startna strana, na kojoj se mogu odabrati ponuđene mogućnosti za formiranje novog projekta izborom opcije New Project ili otvaranje već postojećeg projekta izborom opcije Open Project.

Slika 1. Izgled startnog prozora Microsoft Visual C# 2010 Express

Pri kreiranju konzolne aplikacije izabere se opcija sa padajućeg menija File→New Project. Zatim se u okviru panela Templates izabere Console Application. Potom se dobija sledeće:

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace ConsoleApplication1{ class Program { static void Main(string[] args) { } }

3

Page 4: C# srpski uvod

}

Da bi aplikacija bilo šta radila potrebno je dodati bar jednu liniju koda ispod glavne funkcije static void Main(string[] args).

Primer 1. Ispisati tekst na ekranu.

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace ConsoleApplication1{ class Program { static void Main(string[] args) { Console.WriteLine("Prva aplikacija kod C# proogramiranja!"); Console.ReadKey();/*traži se pritiskanje nekog tastera za prekid rada programa*/ } }}

namespace predstavlja .NET način da se kod i njegov sadržaj jedinstveno identifikuju. Takođe se koristi za kategorizaciju elemenata u .NET Framework. namespace je deklarisan za kod aplikacije koja se u ovom slučaju naziva ConsoleApplication1.using System;-predstavlja korišćenje System namespace (odnosi se na biblioteku klasa .NET Framework, čiju biblioteku koristi C#). Za veće projekte može se kreirati sopstveni namespaces.class Primer{ -definicija klase Primer. Početak klase počinje sa otvorenom vitičastom zagradom {, a završava se sa }.static void Main()-počinje glavni metod, gde se izvršava program. Ovaj metod počinje sa static, što znači da je statički i void - ne vraća vrednost.Console.WriteLine("Jednostavan C# program."); -WriteLine() je funkcija koji kao rezultat vraća string koji mu je prosleđen. Console- podržava konzolni I/O. U kombinaciji se kompajleru govori da je WriteLine() članica Console klase.Izrazi u C# se zvršavaju sa tačka-zarezom (;).Console.ReadKey(); - funkcija za unos nekog znaka sa tastature (za prekid rada programa)

Ovaj program se unosi izborom opcije New Project, pa se bira u okviru Online Template opcija Empty Project. Na padajućem meniju se izabere opcija Build →Build Solution (F6), a potom sa padajućeg menija Debug → Start Without Debugging. (Ukoliko je u padajućem meniju ne postoje ove opcije treba izabrati opciju Tools → Settings → Expert Settings).Ukoliko se fajl ne snimi pod nekim imenom, dodeljuje mu se automatski ime CodeFile1.cs. Naravno, postoji mogućnost preimenovanja. Pri izvršavanju aplikacije pojaviće se u komand propmptu tekstualna poruka: Jednostavan C# program.

Primer 2. Napisati konzolnu aplikaciju za unos i sabiranje dva cela broja.

using System;using System.Collections.Generic;using System.Linq;using System.Text;

4

Page 5: C# srpski uvod

namespace ConsoleApplication2{ class Program { static void Main(string[] args) { int prvi, drugi, rezultat; string string1, string2; Console.WriteLine("Uneti prvi broj "); string1 = Console.ReadLine(); prvi = int.Parse(string1); Console.WriteLine("Uneti drugi broj "); string2 = Console.ReadLine(); drugi = int.Parse(string2); rezultat = prvi + drugi; Console.WriteLine("Rezultat sabiranja je: "); Console.WriteLine(prvi + " + " + drugi + " = " + rezultat); Console.ReadKey(); } }}

Komentari

Komentari se koriste da bi aplikaciju razumeli oni koji ne znaju šta taj program radi. Može se odnositi na više linija koda ili na jednu liniju. Zbog toga se koriste komentari za blokove ili linijski komentari. Komentari za blok instrukcija se pišu tako što počinju sa "/*" nakon čega sledi tekst komentara, a završavaju se sa"*/". Ovakvi komentari se obično pišu u više redova. Ukoliko se komenar piše u jednom redu, on počinje sa "//" a završava se sa enterom. Osnovna njihova namena je da objasne deo koda koji se nalazi u toj liniji, pa se zato nazivaju linijski komentari. Komentari u C# su obično obojeni zeleno.

Primer 3. Primena komentara u konzolnoj aplikciji.

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace ConsoleApplication1{ class Program { static void Main(string[] args) { double prviBroj, drugiBroj;//realne promenljive string korisnickoIme;//string koji se unosi Console.WriteLine("Unesi svoje ime:"); korisnickoIme = Console.ReadLine();/* sa metodom ReadLine() se unosi prvi string koji ne stoji kao argument*/ Console.WriteLine("Zdravo {0}!", korisnickoIme);/* {0} oznacava mesto gde ce se stampati sadržaj promenljive korisnickoIme*/ Console.WriteLine("Unesi prvi broj:"); prviBroj = Convert.ToDouble(Console.ReadLine());/*konvertuje string u double tip */ Console.WriteLine("Unesi drugi broj"); drugiBroj = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Zbir broja {0} i {1} je {2}.", prviBroj,

5

Page 6: C# srpski uvod

drugiBroj, prviBroj + drugiBroj);/*sa {0}, {1} i {2} su predstavljena mesta za tri promenljive*/ Console.WriteLine("Razlika {0} i {1} je {2}.", drugiBroj, prviBroj, prviBroj - drugiBroj); Console.WriteLine("Proizvod {0} i {1} je {2}.", prviBroj,drugiBroj, prviBroj * drugiBroj); Console.WriteLine("Kolicnik {0} i {1} je {2}.", prviBroj, drugiBroj, prviBroj / drugiBroj); Console.WriteLine("Ostatak deljenja {0} i {1} je {2}.", prviBroj, drugiBroj, prviBroj % drugiBroj); Console.ReadKey(); } }}

Promenljive i tipovi podataka

Promenljive se moraju na početku deklarisati pre upotreba. Tipovi podataka u C# su dati u tabeli 1.

Tabela 1. Tipovi podataka u C#Tip Značenjebool Predstavlja true/false vrednostibyte 8-bitni pozitivna celobrojna vrednostchar Znakovne vrednostidecimal Numerički tip vrednosti za finansijske obračunedouble Realne vrednosti dvostruke preciznostifloat Realne vrednostiint Celobrojne vrednosti (32 bitne)long Celobrojne vrednosti većeg opsega (64 bitne)sbyte 8-bitna celobrojna označena (+ i -) vrednostshort 16-bitna celobrojna vrednostuint Neoznačena celobrojna vrednostulong Neoznačena celobrojna vrednost većeg opsegaushort Neoznačena celobrojna vrednost manjeg opsega

Operatori mogu biti:unarni - izvršavaju se na jednom operandu (promenljivoj)binarni - koriste se u kombinaciji sa dva operandatenarni - 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, i pravila izvođenja konverzije su jednostavna.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.

Tabela 2. Implicitna konverzija tipova u C#

Tip Konverzija

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

6

Page 7: C# srpski uvod

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

short int, long, float, double ili decimal

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

int long, float, double ili decimal

uint long, ulong, float, double ili decimal

long float, double ili decimal

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

float double

ulong float, double ili decimal

Tabela 3. Eksplicitna konverzija tipova u C#

Tip Konverzija

sbyte byte, ushort, uint, ulong ili char

byte sbyte ili char

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

ushort sbyte, byte, short ili char

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

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

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

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

char sbyte, byte ili short

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

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

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

7

Page 8: C# srpski uvod

Tabela 4. Funkcije u C# za eksplicitnu konverzijuFunkcija ObjašnjenjeConvert.ToBoolean(argument) argument konvertuje u boolConvert.ToByte(argument) argument konvertuje u byteConvert.ToChar(argument) argument konvertuje u charConvert.ToDecimal(argument) argument konvertuje u decimalConvert.ToDouble(argument) argument konvertuje u doubleConvert.ToInt16(argument) argument konvertuje u shortConvert.ToInt32(argument) argument konvertuje u intConvert.ToInt64(argument) argument konvertuje u longConvert.ToSByte(argument) argument konvertuje u sbyteConvert.ToSingle(argument) argument konvertuje u floatConvert.ToString(argument) argument konvertuje u stringConvert.ToUInt16(argument) argument konvertuje u ushortConvert.ToUInt32(argument) argument konvertuje u uintConvert.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. Programska linija se na neki način obeleži (slovima ili brojevima) i navede goto slovo/broj. On ima svoje prednosti i nedostatke. Prednost je u jednostavnom prelasku sa jednog dela koda na drugi, a nedostatak što se može dobiti kod koji je teško razumljiv.

Uslovi (grananje) u programu

Kao kod C programskog jezika, 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

Page 9: C# srpski uvod

} } }

switch izraz

switch (operand){case operand1:kod za izvrsavanje;break;case operand2:kod za izvrsavanje;break;. . .case operandN:kod za izvrsavanje;break;default:kod za izvrsavanje ako ni jedan uslov nije ispunjen;break;}

Ciklusi

for ciklus

Opšti oblik for ciklusa je:for(inicijalizacija; uslov; iteracija)         izraz;

Opšti oblik for ciklusa koji ima oblik izraza koji treba da se izvrše:for(inicijalizacija; uslov; iteracija)  {    niz izraza; }

Primer 4. Napisati konzolnu aplikaciju za unos broja i određivanje sume brojeva od 1 do unetog broja i faktorijela tog broja.

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace ConsoleApplication1{ class MainClass { public static void Main() { int n, sum = 0; int fact = 1; Console.WriteLine("Uneti broj do koga se vrsi sabiranje (odredjuje faktorijel) "); n = Convert.ToInt32(Console.ReadLine()); for (int i = 1; i <= n; i++) { sum += i; // i je pomocna primenljiva fact *= i; }

9

Page 10: C# srpski uvod

Console.WriteLine("Suma brojeva od 1 do {0} je {1} ",n, sum); Console.WriteLine("Faktorijel je " + fact); } }}

while ciklus

Ovaj ciklus se koristi u slučaju kada je nepoznat broj iteracija (ponavljanja) ciklusa. Opšti oblik while ciklusa je: while(uslov) izraz;

Primer 5. Napisati konzolnu aplikaciju za unos nekog celog broja i ispisivanje stepena od 1 do n zadatog broja.

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace ConsoleApplication1{ class MainClass { public static void Main() { int i, e, n, broj; int rezultat; Console.WriteLine("Uneti broj ciji se stepen trazi "); broj = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Uneti stepen koji se trazi "); n = Convert.ToInt32(Console.ReadLine()); for (i = 0; i < n; i++) { rezultat = 1; e = i;

while (e > 0) { rezultat *= broj; e--; }

Console.WriteLine(broj + " na " + i + " je " + rezultat); } } }}

do while ciklus

do-while ciklus se mora izvršiti bar jednom. Opšti oblik ovog ciklusa je:do {izrazi;} while(uslov);

10

Page 11: C# srpski uvod

Primer 6. Napisati konzolnu aplikaciju na primeru proračuna broja godina do koje treba određeni ulog banke da naraste.

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace ConsoleApplication1{ class Program { static void Main(string[] args) { double ulog, kamatnaStopa, krajnjiUlog; Console.WriteLine("Koliki je vas ulog u banci?"); ulog = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Kolika je kamatna stopa (u %)?"); kamatnaStopa = 1 + Convert.ToDouble(Console.ReadLine()) / 100.0; Console.WriteLine("Do koje vrednosti uloga zelite da dodjete?"); krajnjiUlog = Convert.ToDouble(Console.ReadLine()); int ukupnoGodina = 0; do { ulog *= kamatnaStopa; ++ukupnoGodina; } while (ulog < krajnjiUlog); Console.WriteLine("Za {0} god. ulog ce dostici {1}.",ukupnoGodina, ulog); Console.ReadKey(); } }}

Primer 7. Napisati konzolnu aplikaciju za unos celog broja i ispisivanje tog broja u inverznom poretku.

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace ConsoleApplication1{ class MainClass { public static void Main() { int broj; int sledecibroj;

Console.WriteLine("Uneti broj"); broj = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Uneti broj je: " + broj); Console.Write("Broj u inverznom poretku je: ");

do { sledecibroj = broj % 10; Console.Write(sledecibroj); broj = broj / 10;

11

Page 12: C# srpski uvod

} while (broj > 0);

Console.WriteLine(); } }}

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>. Ne mora se voditi računa koliko je elemenata u nizu npr.:

Primer 8. Napisati konzolnu aplikaciju za primenu foreach ciklusa..

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace Ciklusi{ class Program { static void Main(string[] args) { string[] imenaGlumaca = { "Matthew McConaughey", "Brus Willis", "Al Pacino"}; Console.WriteLine("Ovo su {0} moja omiljena glumca:", imenaGlumaca.Length); foreach (string imeGlumca in imenaGlumaca) { Console.WriteLine(imeGlumca); } Console.ReadKey(); } }}

Funkcije

Kada je reč o funkcijama prvo treba objasniti funkciju Main(). Ova funkcija kao rezultat vraća void ili int, a može se uključiti string[] args parametar, pa su moguće sledeće verzije ove funkcije:static void Main()static void Main(string[] args)static int Main()static int Main(string[] args)

Opcionalni parametar args u Main() funkciji obezbeđuje način za dobijanje informacija izvan aplikacije.

12

Page 13: C# srpski uvod

Funkcije u C# predstavljaju blokove koda koji se mogu izvršavati u bilo kom delu aplikacije. Kod OOP funkcije se nazivaju metode, ali taj termin će se kasnije koristiti kod klasa. Tako na primer, ako se u traži ispis nekog teksta, može se pozvati funkcija u bilo kom delu aplikacije, a dovoljno je samo jednom da se napiše. Funkcije utiču na čitljivost koda.

Definicija i poziv funkcije

Funkcije se mogu smestiti ili pre ili posle glavne funkcije Main(), a mogu biti sa ili bez argumenata. Argumenti funkcije se navode u zaglavlju funkcije, iza čega se dalje piše telo funkcije (ono što funkcija treba da uradi). Funkcija se poziva u glavnom programu navođenjem imena funkcije i eventualno prosleđivanjem parametara.

Primer 9. Napisati konzolnu aplikaciju za formiranje funkcije Pisi() i pozivanje funkcije u glavnom programu.

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace FunkcijaZaIspisTeksta{ class Program { //Definicija funkcije Pisi() static void Pisi() { Console.WriteLine("Ovo je tekst"); } static void Main(string[] args) { Pisi();//poziv funkcije Pisi() Console.ReadKey(); } }}

Primer 10. Napisati konzolnu aplikaciju za formiranje funkcije Osoba(imena) i pozivanje funkcije u glavnom programu.

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace Funkcija{ class Program { static void Main(string[] args) { Osoba("Ana"); Osoba("Marija", "Marko", "Nikola"); Console.ReadKey(); }

static void Osoba(params string[] imena) { foreach (string ime in imena)

13

Page 14: C# srpski uvod

Console.WriteLine("Hello, " + ime); } }}

14


Recommended