Professional Documents
Culture Documents
OBJEKTNO ORIJENTISANO
PROGRAMIRANJE
C# programski jezik
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
in (generic modifier)
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
void
volatile
while
System;
System.Collections.Generic;
System.Linq;
System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Prva aplikacija kod C# programiranja!");
Console.ReadKey();/*trai se pritiskanje nekog tastera
prekid rada programa*/
}
}
}
za
Komentari
Slue za objanjenja u toku pisanja programa. Pomou komentara program postaje itljiviji za
oveka, prevodiocu (kompajleru) je potpuno sve jedno da li postoji sto hiljada linija
komentara ili ni jedna jedina. Komentar poinje znakovima /* , a zavrava se znakovima */
pr: /* ovo je KOMENTAR u jednom
ili
u vie redova */
Pri raunanju vrednosti izraza x+a dolazi do implicitne konverzije podatka a u tip double
(10.0) jer su promenljive x (double) i a (int) razliitog tipa.
Primer:
int x=15, y=4, a1, a2;
double b1, b2, z=15.0;
Poto su promenljive x i y (int) istog tipa, vrednost izraza x/y je takoe int (3), pa je
vrednost promenljive a1 3, a vrednost promenljive b1 3.00 (pri dodeli celobrojne
vrednosti realnoj promenljivoj dolazi do implicitne konverzije).
b2 = z/y;
// a2 = z/y;
Pri izraunavanju vrednosti izraza z/y dolazi do implicitne konverzije promenljive y u tip
double, jer je promenljiva z tipa double a promenljiva y tipa int, pa je rezultat izraza 3.75.
Promenljiva b2 je tipa double pa je njena vrednost jednaka vrednosti izraza 3.75. U
ranijim verzijama programskog jezika C bilo je mogue promenljivoj celobrojnog tipa
dodeliti vrednost izraza koja je realan broj, kao u redu pod komentarom, pri emu je
promenjiva a2 tipa int dobijala vrednost 3 (implicitna konverzija vrednosti izraza 3.75 u
ceo broj). U programskom jeziku C# takva konverzija nije dozvoljena.
2) Eksplicitna konverzija - Eksplicitnom konverzijom programer od kompajlera zahteva
traenu konverziju. Eksplicitna konverzija se ostvaruje korienjem operatora cast ili
korienjem klase Convert. Operator cast koristimo tako to u zagradama navedemo
tip u koji elimo da konvertujemo vrednost izraza koji sledi za operatorom cast.
Korienjem eksplicitne konverzije moe doi do gubitka informacija, tj. do suavanja
podataka, kada je skup vrednosti u koji se podatak konvertuje podskup skupa vrednosti
podatka koji konvertujemo. Dozvoljene eksplicitne konverzije numerikih tipova
podataka, korienjem operatora cast, date su u tabeli 3.
Primer:
Posmatrajmo sledei kod:
int a;
double b=12.78;
a = b;
Da bi se ostvarila uspena dodela vrednosti tipa double promenljivoj tipa int, neophodno
je izvriti eksplicitnu konverziju na sledei nain:
a=(int)b;
Po izvravanju ove komande, promenljiva a dobija vrednost 12. Pri konverziji podatka
tipa double (float, decimal) u tip int, dolazi do odsecanja decimalnog dela podatka.
6
Kako su promenljive a i b tipa int, pri raunanju vrednosti izraza a/b ne dolazi do implicitne
konverzije i vrednost izraza je ceo broj 2, ime je dolo do gubitka decimalnog dela rezultata
(2.75). Pri dodeli vrednosti izraza a/b tipa int promenljivoj x tipa double, dolazi do implicitne
konverzije (int u double) i vrednost promenljive x je 2.0. Ako u izrazu a/b upotrebimo
operator cast
x=(double)a/b;
onda se prvo izvrava eksplicitna konverzija vrednosti promenljive a u tip double. Sada su
operandi razliitog tipa pa se vri implicitna konverzija vrednosti promenljive b iz tipa int u
tip double. Posle izvrenih konverzija, rauna se vrednost izraza i dodeljuje promenljivoj x.
Po zavretku operacije dodele, vrednost promenljive x je 2.75. U ovom primeru korienjem
eksplicitne konverzije postigli smo preciznije raunanje vrednosti izraza. Dozvoljene
eksplicitne konverzije numerikih tipova podataka, korienjem operatora cast, date su u
tabeli 3.
Prevoenjem sledeeg koda
int x=212;
string s=(string)x;
string p="123";
int y=(int)p;
jer navedene eksplicitne konverzije nije mogue izvesti operatorom cast, prema taneli 3.
Navedene konverzije, i jo mnoge druge, mogue je obaviti korienjem statikih metoda
klase Convert kojima se podaci osnovnog tipa konvertuju u drugi osnovni tip. Svaki od
metoda konverzije poziva se tako to se navodi ime metoda, a zatim u zagradama izraz ija se
vrednost konvertuje. Korienjem metoda klase Convert prethodni primer moemo zapisati na
sledei nain:
int x = 212;
string s = Convert.ToString(x);
string p = "123";
int y = Convert.ToInt32(p);
Osim navedenih, u programskom jeziku C# postoje i drugi naini konverzija koji se koriste
kod referentnih tipova, ali ih u ovom trenutku neemo razmatrati.
Tabela 2. Implicitna konverzija tipova u C#
Tip
Konverzija
sbyte
byte
short, ushort, int, uint, long, ulong, float, double ili decimal
short
ushort
int
uint
long
char
float
double
ulong
byte
ushort
int
uint
long
ulong
char
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
System;
System.Collections.Generic;
System.Linq;
System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string ime;
string prezime;
Console.WriteLine("Unesi svoje ime:");
ime = Console.ReadLine();
Console.WriteLine("Unesi svoje prezime:");
prezime = Console.ReadLine();
Console.WriteLine("Zdravo {0} {1}!", ime, prezime);
//ili isto to samo realizovano na drugaciji nacin:
Console.WriteLine("Zdravo " + ime + " " + prezime + "!");
Console.ReadKey();
}
}
}
System;
System.Collections.Generic;
System.Linq;
System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int prvi, drugi, rezultatS, rezultatO, rezultatD, ostatak;
string string1, string2;
Console.WriteLine("\nUneti prvi broj ");
string1 = Console.ReadLine();
//konvertovanje unetog broja u int
prvi = Convert.ToInt32(string1); // ili prvi =
int.Parse(string1);
Console.WriteLine("\nUneti drugi broj ");
string2 = Console.ReadLine();
10
11
ili viestruko
if (uslov1)
{
// Radi neto
}
else
{
if (uslov2)
{
// Radi neto drugo
}
else
{
if (uslov3)
{
// Radi neto drugo
}
else
{
// Radi neto drugo
}
}
}
Primer 3. Napisati konzolnu aplikaciju u kojoj se na osnovu broja poena koje je student
osvojio na pismenom ispitu izracunava ocena prema sledecoj tabeli:
poeni
91..100
81.. 90
71.. 80
61.. 70
51.. 60
0.. 50
using
using
using
using
ocena
10(deset)
9 (devet)
8 (osam)
7 (sedam)
6 (est)
5 (pet)
System;
System.Collections.Generic;
System.Linq;
System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int poeni, ocena;
string korisnickoIme;
12
switch izraz
switch (operand)
{
case operand1:
kod za izvrsavanje;
break;
case operand2:
kod za izvrsavanje;
break;
. . .
case operandN:
13
Primer 4. Napisati konzolnu aplikaciju u kojoj se za uneti mesec ispisuje broj dana u
mesecu.
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int mesec;
string korisnickoIme;
string prestupna;
Console.WriteLine("Unesi svoje ime:");
korisnickoIme = Console.ReadLine();
Console.WriteLine("Zdravo {0}!", korisnickoIme);
Console.WriteLine("Uneti redni broj meseca");
mesec = Convert.ToInt32(Console.ReadLine());
switch (mesec)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
Console.WriteLine("Ovaj mesec ima 31 dan");
break;
case 4:
case 6:
case 9:
case 11:
Console.WriteLine("Ovaj mesec ima 30 dana");
break;
case 2:
Console.WriteLine("Da li je godina prestupna
(da/ne)?");
prestupna = Console.ReadLine();
if (prestupna == "da")
Console.WriteLine("Posto je godina prestupna, ovaj
mesec ima 29 dana");
else
Console.WriteLine("Posto godina nije prestupna ovaj
mesec ima 28 dana");
break;
14
Ciklusi
for ciklus
Opti oblik for ciklusa je:
for(inicijalizacija; uslov; iteracija)
izraz;
Opti oblik for ciklusa koji ima oblik izraza koji treba da se izvre:
for(inicijalizacija; uslov; iteracija)
{
niz izraza;
}
System;
System.Collections.Generic;
System.Linq;
System.Text;
namespace ConsoleApplication1
{
class MainClass
{
public static void Main()
{
int n, sum = 0;
int fact = 1;
string korisnickoIme;
Console.WriteLine("Unesi svoje ime:");
korisnickoIme = Console.ReadLine();
Console.WriteLine("Zdravo {0}!", korisnickoIme);
Console.WriteLine("\nUneti broj do koga
(odredjuje faktorijel) ");
n = Convert.ToInt32(Console.ReadLine());
15
se
vrsi
sabiranje
while ciklus
Ovaj ciklus se koristi u sluaju kada je nepoznat broj iteracija (ponavljanja) ciklusa. Opti
oblik while ciklusa je:
while(uslov) izraz;
Primer 6. Napisati konzolnu aplikaciju za unos nekog celog broja i ispisivanje stepena
od 1 do n zadatog broja.
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
namespace ConsoleApplication1
{
class MainClass
{
public static void Main()
{
int i, e, n, broj;
int rezultat;
string korisnickoIme;
Console.WriteLine("Unesi svoje ime:");
korisnickoIme = Console.ReadLine();
Console.WriteLine("Zdravo {0}!", korisnickoIme);
Console.WriteLine("\nUneti broj ciji se stepen trazi ");
broj = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Uneti stepen n do koga se trazi stepenovanje
zadatog broja");
n = Convert.ToInt32(Console.ReadLine());
for (i = 0; i < n; i++)
{
rezultat = 1;
e = i;
//stepenovanje brojeva od 1 do i
while (e > 0)
{
rezultat *= broj;
16
do while ciklus
do-while ciklus se mora izvriti bar jednom. Opti oblik ovog ciklusa je:
do {
izrazi;
} while(uslov);
Primer 7. Napisati konzolnu aplikaciju za unos celog broja i ispisivanje tog broja u
inverznom poretku.
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
namespace ConsoleApplication1
{
class MainClass
{
public static void Main()
{
string korisnickoIme;
int broj;
int sledecaCifra;
Console.WriteLine("Unesi svoje ime:");
korisnickoIme = Console.ReadLine();
Console.WriteLine("Zdravo {0}!", korisnickoIme);
Console.WriteLine("\nUnesi neki viecifreni celi broj");
broj = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Uneti broj je: " + broj);
Console.Write("Broj u inverznom poretku je: ");
do
{
sledecaCifra = broj % 10;
Console.Write(sledecaCifra);
broj = broj / 10;
} while (broj > 0);
17
foreach ciklus
foreach ciklus se koristi za adresiranje svakog elemena u nizu koristei sledeu sintaksu:
foreach (<osnovni tip elemenata niza> <prom> in <niz>)
{
koriscenje <prom> za pristup svakom elementu niza <niz>
}
Ovim ciklusom se postie iteracija kroz svaki pojedinaan element niza <niz>, ija vrednost
se dodeljuje promenljivoj prom, sve dok se ne doe do kraja niza. Na ovaj nain se elementi
niza mogu koristiti u programu, pri emu se ne mora voditi rauna o tome koliko ima
elemenata u nizu.
Primer 8. Napisati konzolnu aplikaciju za primenu foreach ciklusa.
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
namespace Ciklusi
{
class Program
{
static void Main(string[] args)
{
string[] imenaStudenataKursa = { "Milan Nedic", "Jovan Stojic",
"Dragana Avramovic" };
Console.WriteLine("Ovo su {0} studenata kursa objektno
orijentisanog programiranja u C#:", imenaStudenataKursa.Length);
foreach (string ime in imenaStudenataKursa)
{
Console.WriteLine(ime);
}
Console.ReadKey();
}
}
}
18
System;
System.Collections.Generic;
System.Linq;
System.Text;
namespace EnumerisaniTipoviPodataka
{
enum StraneSveta
{
istok = 1,
zapad = 2,
sever = 3,
jug = 4
}
class Program
{
static void Main(string[] args)
{
StraneSveta mojaStrana = StraneSveta.istok;
Console.WriteLine("Strana sveta je {0}", mojaStrana);
}
}
}
19