Professional Documents
Culture Documents
Seminarski Rad Programiranje U C
Seminarski Rad Programiranje U C
Sadržaj
1. Uvod...............................................................................................................................................2
2. Programski jezik C#.........................................................................................................................3
3. Osnove programiranja u C#............................................................................................................5
3.1. Tipovi podataka, deklaracija i definicija promenljive.............................................................5
3.2. Klasa, objekat.........................................................................................................................8
4. .NET Framework...........................................................................................................................12
4.1. Objektno - orijentisano programiranje (Klase, objekti i metode).........................................12
4.2. Ključne reči u C#...................................................................................................................12
4.3. Kreiranje konzolnih aplikacija u Microsoft Visual C# 2010 Express.......................................13
5. Programiranje Windows aplikacija u C#.......................................................................................15
5.1. Visual Studio.........................................................................................................................16
6. Zaključak.......................................................................................................................................21
7. Literatura......................................................................................................................................21
1|Strana
Programiranje Windows aplikacija u C#
1. Uvod
Programski jezik C spada u proceduralne programske jezike koji je razvijen u ranim 70-
im godinama 20. stoljeća. Autor ovog programskog jezika je Dennis Ritchie, no značajan
doprinos nastanku C-a dali su Ken Thompson kao autor programskog jezika B i Martin
Richards, autor programskog jezika BCPL. Dennis Ritchie je stvorio ovaj programski jezik za
rješavanje praktičnih problema kodiranja sistemskih programa i jezgre operacijskog
sustava UNIX, koji je praktički u cijelosti napisan u C-u.
Programski jezik C dosta se mijenjao tokom godina te je u više navrata neformalno i
formalno standardiziran. Prva važnija inačica poznata je pod nazivom "K&R C", što je engl.
kratica prezimena dvaju autora najpoznatijeg C priručnika "The C Programming Language", a
to su Brian Kernighan i Dennis Ritchie. Prvo izdanje te vrlo sažeto i precizno
pisane knjige koje datira iz 1978. godine ujedno je de facto standardiziralo jezik u 70-ima.
Drugo izdanje iz 1988. godine opisuje "ANSI C", standard kojeg je 1983. godine
definirao američki nacionalni institut za standardizaciju, a koji je i danas najbolje podržan.
Donedavni je standard bio ISO/IEC standard skraćeno poznat kao "C99", no krajem 2011.
usvojen je ISO/IEC 9899:2011, poznat kao "C11", za koji su kompajleri još u razvoju.
Kao jedan od najvažnijih jezika u povijesti komercijalne računalne industrije, C je do danas
ostao jedini programski jezik prilagođen za sve računalne platforme, od malih sustava pa do
mrežnih superračunala. Programi napisani u njemu vrlo su bliski načinu rada hardvera te u
načelu zahtijevaju od programera dobro razumijevanje rada procesora, memorije, ulazno-
izlaznih sklopova itd. No, rad s registrima procesora i adresiranje memorije apstrahirani su
pomoću koncepta varijabli i pokazivača što uz eksplicitne kontrolne strukture i funkcije
znatno olakšava programiranje u odnosu na izravno programiranje u strojnim jezicima.
Tokom 1980-ih, Bjarne Stroustrup zajedno s drugim istraživačima u Bell Labs
proširuje C dodavajući sposobnosti objektno orijentiranog programiranja, a naziv ovog novog
programskog jezika je C++. Nažalost, ta je 100%-na kompatibilnost ujedno i razlog što su
problemi koje programiranje u C-u nosi sa sobom naslijeđeni u C++-u. Efikasno i sigurno
programiranje u C-u vrlo je zahtjevna vještina koja traži višegodišnje iskustvo pa je
stoga C jezik koji se ne preporučuje početnicima, posebice ako im programiranje nije
primarni posao.
Mnogobrojni problemi vezani prije svega za upravljanje memorijom koje programer mora
sam eksplicitno kodirati razlog su da je danas većina novih korisničkih aplikacija napisana u
nekom modernijem jeziku koji ima ugrađeno automatsko upravljanje memorijom (engl.
garbage collection), ne dopušta izravan rad s memorijom pomoću pokazivača te ima podršku
za upravljanje kodom odnosno njegovom okolinom za vrijeme njegova izvođenja. Danas se
relativno rijetko ukazuje potreba za pisanjem novih korisničkih aplikacija izravno u C-u, pa
čak i u vrlo malim sustavima kao što su primjerice mobilni telefoni. Glavno područje njegove
uporabe su sistemski programi na strani poslužitelja (engl. servers), programi prevoditelji
(engl. compilers) i jezgre operativnih sustava (engl. operating system kernels), gdje je
2|Strana
Programiranje Windows aplikacija u C#
2. Programski jezik C#
C# je zreo programski jezik koji omogućava izradu aplikacija za Web sa svom potrebnom
funkcionalnošću. Osim što pruža programski okvir za razvoj softvera, omogućava i podršku za
pristupanje brojnim bazama podataka. On predstavlja jedan od jezika koji služe za izradu
aplikacija koje mogu raditi pod .NET okruženjem. Kako predstavlja evoluciju jezika C i C++,
kao takav je kreiran uz korišćenje svih prednosti ostalih jezika i otklanjanje njihovih mana.
Sam razvoj aplikacije je jednostavniji u C# jeziku, a sam jezik je izuzetno moćan. S vremena
na vreme njegov kod je mnogo razumljiviji u odnosu na druge jezike, ali je nešto robusniji i
jednostavnije je otkloniti greške u njemu. Sam jezik nema ograničenja u pogledu toga kakve
se aplikacije mogu napraviti u njemu, on koristi okruženje i samim tim nema ograničenja u
vezi sa mogućim aplikacijama. Za programiranje u C# korišćen je Visual Studio .NET, koji je u
mnogome olakšao razvoj same aplikacije. Visual Studio .NET pored toga što sadrži
dizajnerske alatke za aplikacije, alatke za prikazivanje i navigaciju elemenata projekta,
omogućava jednostavniju distribuciju i prilagođavanje projekta klijentimai obezbeđuje
napredne tehnike otklanjanja grešaka pri razvoju projekta.
3|Strana
Programiranje Windows aplikacija u C#
{
Console.WriteLine("Pozdrav!");
}
}
Nakon izvođenja ovog programskog koda, na ekranu se ispisuje poruka "Pozdrav!".
Using System; je kompajlerska naredba koja mu govori da aplikacija koristi skup elemenata
pod nazivom System. Na ovaj način sve funkcije i klase unutar prostora (namespace)
System postaju izravno dostupne unutar aplikacije. Na primjer, korištena klasi Console u
našem primjeru pristupa se direktno iako se ona nalazi unutar klase System.
4|Strana
Programiranje Windows aplikacija u C#
3. Osnove programiranja u C#
Programski jezik C# je nastao 2002. godine u „radionici“ čuvene kompanije Microsoft kao
proizvod želje da se napravi objektno orijentisani programski jezik (poput Jave) koji
omogućava relativno lako kreiranje aplikacija u grafičkom korisničkom okruženju (poput
programskog jezika Borland Delphi). Ovaj programski jezik je jezik opšte primene i namenjen
je izradi aplikacija za Microsoft .NET platformu.
abstract, as, base, bool, break, byte, case, catch, char, checked, class, const, continue,
decimal, default , delegate, do, double, else, enum, event, explicit, extern, false, finally,
fixed, float, for, foreach, goto, if, implicit, in, int, interface, internal, is, lock, long,
namespace, new, null, object, operator, out , override, params, private, protected, public ,
readonly, ref, return, sbyte, sealed, short, sizeof, stackalloc, static, string, struct, switch,
this, throw, true, try, typeof, uint, ulong, unchecked, unsafe, ushort, using, virtual, volatile,
void, while
U ovom dijelu seminarsko rada govori se o tipovima podataka kojima C# manipuliše kao i sa
građenjem osnovnih sintaksnih i semantičkih konstrukcija ovog programskog jezika.
5|Strana
Programiranje Windows aplikacija u C#
nad tim podatkom. Računaru moramo dati informaciju koja vrsta podatka je registrovana da
bi ga na pravi način tumačio i obrađivao.
Potrebne informacije saopštavamo računaru tipom podataka. Tipom podataka definisan je:
o način registrovanja podataka u memoriji;
dok
nisu identifikatori.
Važno je napomenuti da C# (poput programskog jezika C) razlikuje velika i mala slova tako
da identifikatori GodisnjeDoba i godisnjeDoba nisu isti.
6|Strana
Programiranje Windows aplikacija u C#
int x,y;
char p,q;
Ucenik ucenik1,ucenik2;
način: <promenljiva>=<izraz>;
Tip vrednosti izraza mora se poklapati sa tipom promenljive (ili se implicitnom konverzijom
može konvertovati u tip promenljive).
int x,y;
x=5;
y=!145+x;
char p;
p=’A’;
Primer:
mojRefTip x;
x= new mojRefTip();
Ucenik a;
7|Strana
Programiranje Windows aplikacija u C#
U programskom jeziku C# je data mogućnost objedinjavanja ova dva koraka, što vrlo često
koristimo.
int x=32, y;
Dve referentne promenljive mogu sadržati adresu iste vrednosti, pa operacije nad jednom
referentnom promenljivom mogu uticati na vrednost na koji referiše druga promenljiva.
Takođe, objektima možemo pridružiti iste „akcije“ koje u okviru klase nazivamo metodima
klase. Njima opisujemo funkcionalnosti objekata klase. Klasu definišemo navođenjem
rezervisane reči class iza koje sledi identifikator klase (ime klase). Posle imena, ako
formiramo klasu koja nasleđuje neku, prethodno definisanu klasu, navodimo ’:’ a zatim sledi
ime klase iz koje je izvedena. Zatim u vitičastim zagradama {} definišemo članove klase
(atributi i metodi).
Na primer, klasu učenika iz uvodnog primera možemo intuitivno definisati na sledeći način:
class Ucenik
8|Strana
Programiranje Windows aplikacija u C#
DateTime datumRodjenja;
int razred;
int SkolskaGodina;
double prosek()
void uci(Lekcija X)
U programskom jeziku C#, po navođenju “//“, pišemo komentare napisanog koda. Počev od
“//“ pa do kraja linije napisani komentar se pri prevođenju programa ignoriše. Ukoliko
pišemo opširniji komentar, koji obuhvata više redova, od ostalog dela koda odvajamo ga na
početku sa “/*“ a na kraju sa
“*/“.
9|Strana
Programiranje Windows aplikacija u C#
osnovu osobina koje objekat poseduje (npr. metod prosek). Na taj način opisujemo
funkcionalnost objekta.
Metod klase je imenovani blok naredbi koji se sastoji iz zaglavlja i tela metoda. U zaglavlju
navodimo povratni tip (ako metod ne proizvodi vrednost koju vraća, navodimo rezervisanu
reč void), zatim ime metoda za kojim sledi u malim zagradama spisak parametara metoda. Za
svaki parametar navodi se tip kome taj parametar pripada kao i ime parametra. Posle
zaglavlja u vitičastim zagradama navodimo telo metoda koje se sastoji iz odgovarajućih
naredbi programskog jezika C#.
{ <telo metoda> }
Svi atributi konkretnog objekta dostupni su i vidljivi svim metodima tog objekta i traju dok
traje objekat. Za razliku od njih, promenljive deklarisane u okviru nekog od metoda (lokalne
promenljive), nastaju izvršavanjem tog metoda, vidljive su samo u okviru njega, i gase se
završetkom tog metoda. Zato, ako je potrebno da koristimo vrednost u okviru više metoda
jedne klase (ili u više izvršavanja jednog metoda), možemo je definisati kao atribut klase.
Neki od metoda se pokreću kao reakcija na događaje koji nastaju tokom izvršavanja
aplikacije. Za takve metode kažemo da obrađuju događaje(engl. event handler).
Kada u toku izvršavanja aplikacije pritisnemo dugme za izlazak iz programa u naslovnoj liniji
prozora u kome se izvršava aplikacija, automatski se pokreće metod Closing u okviru koga
možemo programirati akcije koje će sprečiti izlazak iz programa ukoliko uslovi za to nisu
ispunjeni. Vrlo često u toku izvršavanja Windows aplikacija korisnik ima mogućnost da
klikom na dugme usmeri dalje izvršavanje aplikacije. Tok izvršavanja aplikacije nakon klika
na dugme programer definiše metodom Click. Poziv metoda objekta u programskom jeziku
C# realizujemo na sledeći način:
x.prosek()
a metod uci
x.uci(L)
Svaka klasa sadrži metode koji omogućavaju kreiranje objekta, a može sadržati i metod koji
„uništava“ objekat (destruktor). Metode koje kreiraju objekte zovemo konstruktorima.
Konstruktori su sastavni deo svake klase i nose njeno ime. Pozivom konstruktora objekat
počinje svoj život. Klasa može imati jedan ili više konstruktora koji se razlikuju po listi
10 | S t r a n a
Programiranje Windows aplikacija u C#
A=new Ucenik("Pera","Peric");
U programskom jeziku C# postoje više nivoa pristupa a mi ćemo, u početku, koristiti privatni
(private) i javni (public ) pristup. Neki članovi klase mogu da se koriste interno, samo u
metodima klase, i metodi drugih klasa im ne mogu pristupiti. Za takve članove klase kažemo
da su privatni i pri njihovom definisanju navodimo rezervisanu reč private. Privatnim
članovima klase mogu pristupati samo metodi te klase i to je najviši nivo zaštite.
Pri opisu javnih članova klase navodimo rezervisanu reč public . Takvi članovi klase su
dostupni svetu van klase i pristup tim članovima je potpuno slobodan. Podrazumevani
pristup članovima klase je privatni, što znači da su članovi klase za koje nije naveden nivo
pristupa, privatni članovi. Uobičajeno je da su atributi privatni, a metodi javni članovi klase.
Takvim članovima pristupamo navođenjem imena klase umesto imena objekta. Bez obzira na
broj instanci klase koja sadrži atribut static, postoji tačno jedna kopija tog atributa u
aplikaciji. U navedenom primeru klase Ucenik, član SkolskaGodina možemo definisati kao
static jer je vrednost ista za sve učenike, i u tom slučaju tom atributu pristupamo
Ucenik.SkolskaGodina.
4. .NET Framework
11 | S t r a n a
Programiranje Windows aplikacija u C#
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.
12 | S t r a n a
Programiranje Windows aplikacija u C#
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
13 | S t r a n a
Programiranje Windows aplikacija u C#
class Program
Da bi aplikacija bilo šta radila potrebno je dodati bar jednu liniju koda ispod glavne funkcije
static void Main(string[] args).
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
class Program
14 | S t r a n a
Programiranje Windows aplikacija u C#
namespace predstavlja .NET način da se kod i njegov sadržaj jedinstveno identifikuju. Takođe
se koristi za kategorizaciju elemenata u .NET Framework. namespace je deklarisan za kod
aplikacije koja se u ovom slučaju naziva ConsoleApplication1.
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.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.
Jednostavan C# program.
Čim počnemo sa korišćenjem VS-a uvidećete da nije potrebno mnogo znati o njemu da
bismo se poigrali sa C# kodom. Kasnije ćemo videti neke mnogo komplikovanije operacije
koje je moguće izvesti u VS-u, ali za sada su dovoljna osnovna znanja.
15 | S t r a n a
Programiranje Windows aplikacija u C#
Pošto zavirimo u VS, sastavićemo dve proste aplikacije. Za sada se nećemo mnogo
opterećivati kodom, samo ćemo se upoznati sa tim koje su procedure potrebne da bi se
aplikacija napravila i da bi funkcionisala kako treba, mada će sve to uskoro postati sporedno.
Prva aplikacija koju ćemo napraviti biće jednostavna konzolna aplikacija. Konzolne aplikacije
ne koriste grafičko okruženje Windowsa, tako da ne moramo da brinemo o dugmadima,
menijima, interakciji sa pokazivačem miša i tako dalje. Umesto toga, pokrenućemo aplikaciju
iz komandne linije i komunicirati sa njom na mnogo prostiji način. Druga aplikacija će biti
bazirana na Windows formularima. Njen izgled, kao i rad sa njom, biće vrlo prepoznatljiv
onima koji su koristili Windows i njeno kreiranje ne zahteva ništa vise rada nego prethodna.
Ipak, sintaksa njenog koda je mnogo komplikovanija, mada često nećemo morati da vodimo
računa o detaljima.
Ukoliko prvi put pokrećete VS biće vam predstavljena lista sa vrednostima namenjena za
korisnike sa iskustvom u radu na prethodnim izdanjima ovog razvojnog okruženja.
Automatski odabrani element! su sasvim u redu, za sada ih prihvatite jer tu nema ničega što
se kasnije ne može promeniti.
Izgled VS okruženja je u potpunosti prilagodljiv, ali su nam sasvim dovoljne već postavljene
vrednosti. One su sređene na sledeći način:
16 | S t r a n a
Programiranje Windows aplikacija u C#
Glavni prozor, koji prikazuje uvodnu „početnu stranu" kada se VS pokrene, jeste onaj u kome
se prikazuje ceo naš kod. Ovaj prozor je podeljen na kartice tako da možemo lako skakati sa
jedne na drugu datoteku tako što ćemo pritisnuti mišem njihovo ime. Ovaj prozor ima i
druge funkcije: može prikazati grafički korisnički interfejs koji dizajniramo za naš projekat,
čiste tekstualne datoteke, HTML, kao i različite alate ugrađene u VS.
Iznad glavnog prozora nalaze se palete sa alatkama, kao i VS meni. Ovde možete naći
nekoliko različitih paleta sa alatkama rangiranih po funkcionalnosti - od alatki za snimanje i
učitavanje datoteka, preko izgradnje i pokretanja projekta, do kontrola za otklanjanje
grešaka. O svima njima ćemo pričati kada nam budu zatrebali. Slede kratki opisi glavnih
karakteristika VS-a, koje ćete najčešće koristiti:
Server Explorer i Toolbox paleta sa alatkama izbacuju sopstvene menije kada se preko njih
prede mišem, i otvaraju nam nove dodatne mogućnosti, kao što su pristup i podešavanje
karakteristika i servisa samog servera, i pristup korisničkom interfejsu za izradu elemenata
Windows aplikacija.
17 | S t r a n a
Programiranje Windows aplikacija u C#
Task List and Output prozor prikazuje informacije prilikom kompajliranja projekta zajedno sa
zadacima koji treba da se izvrše (slično listi zadataka u Microsoft Outlooku). Ovi zadaci se
mogu uneti ručno, a mogu biti i automatski generisani od VS-a.
Primjer:
Napravite novi projekat konzolne aplikacije birajući File | New | Project... iz menija:
Izaberite Visual C# Projects direktorijum unutar prozora Project Types:, i tip projekta Console
Application u okviru prozora Templates: (za ovo ćete morati malo da pomerite prozor na
dole). U okviru za tekst Location: promenite putanju u
C:\Temp\SoftIng\LecturesCode\Vezba1 (ovaj će direktorijum biti automatski napravljen
ukoliko već ne postoji), i ostavite podrazumevani tekst u okviru za tekst Name: Pozdrav
Svete.
18 | S t r a n a
Programiranje Windows aplikacija u C#
Pritisnite mišem na dugme OK. Kada se projekat inicijalizuje dodajte sledeće redove u
datoteku koja se bude pojavila u glavnom prozora:
Izaberite Debug | Start Without Debbuging iz menija. Posle nekoliko trenutaka trebalo bi da
vidite sledeće:
Odaberite Start | Programs | Microsoft Visual Studio .NET 2003 | Visual Studio .NET Tools |
Visual Studio .NET Command Prompt. Pojaviće se komandni prozor i biće definisane sve
promenljive okruženja potrebne prevodiocima i alatkama Visual Studija. Ako se pokrene
obično komandno okruženje, bez zadavanja tih promenljivih, .NET alatke neće raditi.
19 | S t r a n a
Programiranje Windows aplikacija u C#
Posle otvaranja komandnog prozora .NET-a uđite u folder u kome ste sačuvali ovu konzolnu
aplikaciju. Unesite u komandnom prozoru sledeću komandu, koja prevodi kod konzolne
aplikacije:
Naravno programiranje pod celim Visual Studio .NET je tkz. Case Sensity, osetljiv velika i mala
slova. Tako da morate da obratite pažnju pri kucanju koda. Ovde to nije slučaj, ali nije
naodmet da se navikavate na velika i mala slova. Prvo ćete dobiti obaveštenje o verziji
prevodioca i izvršnog okruženja, a zatim i o autorskim pravima. Pokrenute program i bićete
pozdravljeni na sledeći način:
C:\> Class1
C:\>
Funkcija Console.WriteLine() dodaje tekstu indikator novog reda (engl. Newline character). U
windowsu je to kombinacija znaka za početak reda i znaka za prelazak u novi red. Da biste u
nekoliko iskaza pisali u istom redu, koristite funkciju Write(). Ona zahteva da sami dodate
indikator novog reda. Sada u prethodnom programu zamenite iskaz WriteLine() sledećim
iskazima:
Obrnuta kosa crta (\) ispred znaka je signal prevodiocu da je u pitanju izlazna sekvenca
(engl. escape sequence). Iz sledeće tabele vidi se da C# koristi iste izlazne znake kao i C++.
Ako iza obrnute kose crte stavite neki dragi znak, dobićete od prevodioca poruku da nije
prepoznao izlazni znak.
20 | S t r a n a
Programiranje Windows aplikacija u C#
6. Zaključak
Kreiran kako bi se iskoristile ogromne mogućnosti .NET platforme, C# se ubrzo pokazao kao
nevjerovatno univerzala programski jezik sposoban da zadovolji zahtjeve kako najsloženijih
programskih zadataka kakvi se sreću na serverima, radnim stanicama i superačunarima pa
sve do malih mobilnih uredjaja. Njegova sposobnost da direktno upravlja hardverom čini ga
veoma moćnim sredstvom pri kreiranju novih i modifikovanju postojećih operativnih
sistema. Uprkos svim svojim prednostima i sposobnostima, C# kao i njegove prethodnika
karakteriše složenosti sintakse i samog procesa programiranja. Zbog toga, on predstavlja
jezik više klase namijenje za rad iskusnim, vrhunskim programerima koji su u stanju pravilno i
u punoj mjeri iskoristiti njegove mogućnosti.
7. Literatura
21 | S t r a n a