Professional Documents
Culture Documents
C# Console Uvod PDF
C# Console Uvod PDF
SADRAJ VEBI
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. NASLEIVANJE, POLIMORFIZAM
8. DODATNE TEHNIKE OOP
II WINDOWS PROGRAMIRANJE
9. OSNOVNO WINDOWS PROGRAMIRANJE (DUGMII, LABELE, TEXTBOX, ...)
10. NAPREDNE WINDOWS FORME (MENIJI, TOOOLBAR, KREIRANJE
APLIKACIJA I KONTROLA)
1
Nastanak C#
ta je .NET Framework?
Objekat je primerak (instanca) klase. Klasa predstavlja skup podataka i instrukcija koje se
izvode na nekim podacima. Klasa je skup pravila koji odreuju kako e se formirati neki
objekat. Svaka klasa ima svoje lanove i to su podaci i kod. Podaci koji se definiu u klasi
obino se nazivaju polja (fields). Ovde se koriste termini kao to su funkcija (metoda) koja
predstavlja kod programa koji se izvrava nad podacima. Metodi su ustvari podprogrami i oni
mogu imati svojstva, dogaaje i konstruktore. Metodi se izvravaju nad poljima koja su
definisana u klasi.
Kljune rei u C#
2
sealed short sizeof stackalloc
static string struct switch
this throw true try
typeof uint ulong unchecked
unsafe ushort using virtual
void volatile while
Pri kreiranju konzolne aplikacije izabere se opcija sa padajueg menija FileNew Project.
Zatim se u okviru panela Templates izabere Console Application. Potom se dobija sledee:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
}
}
}
3
Da bi aplikacija bilo ta radila potrebno je dodati bar jednu liniju koda ispod glavne funkcije
static void Main(string[] args).
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Prva aplikacija kod C# proogramiranja!");
Console.ReadKey();/*trai se pritiskanje nekog tastera za prekid rada programa*/
}
}
}
Ovaj program se unosi izborom opcije New Project, pa se bira u okviru Online Template
opcija Empty Project. Na padajuem meniju se izabere opcija Build Build Solution (F6), a
potom sa padajueg menija Debug Start Without Debugging. (Ukoliko je u padajuem
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 mogunost preimenovanja.
Pri izvravanju aplikacije pojavie se u komand propmptu tekstualna poruka:
Jednostavan C# program.
4
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. Moe se
odnositi na vie linija koda ili na jednu liniju. Zbog toga se koriste komentari za blokove ili
linijski komentari. Komentari za blok instrukcija se piu tako to poinju sa "/*" nakon ega
sledi tekst komentara, a zavravaju se sa"*/". Ovakvi komentari se obino piu u vie redova.
Ukoliko se komenar pie u jednom redu, on poinje sa "//" a zavrava 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 obino obojeni zeleno.
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 sadraj 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,
drugiBroj, prviBroj + drugiBroj);/*sa {0}, {1} i {2} su predstavljena mesta za tri
promenljive*/
Console.WriteLine("Razlika {0} i {1} je {2}.",
5
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();
}
}
}
Konvertovanje promenljivih
6
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
7
Tabela 4. Funkcije u C# za eksplicitnu konverziju
Funkcija Objanjenje
Convert.ToBoolean(argument) argument konvertuje u bool
Convert.ToByte(argument) argument konvertuje u byte
Convert.ToChar(argument) argument konvertuje u char
Convert.ToDecimal(argument) argument konvertuje u decimal
Convert.ToDouble(argument) argument konvertuje u double
Convert.ToInt16(argument) argument konvertuje u short
Convert.ToInt32(argument) argument konvertuje u int
Convert.ToInt64(argument) argument konvertuje u long
Convert.ToSByte(argument) argument konvertuje u sbyte
Convert.ToSingle(argument) argument konvertuje u float
Convert.ToString(argument) argument konvertuje u string
Convert.ToUInt16(argument) argument konvertuje u ushort
Convert.ToUInt32(argument) argument konvertuje u uint
Convert.ToUInt64(argument) argument konvertuje u ulong
goto
goto izraz se koristi kada je neophodno da se preskoi neki deo koda ili da se vrati na
prethodni. Programska linija se na neki nain obelei (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 moe dobiti kod koji je teko razumljiv.
8
}
}
}
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
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
Console.WriteLine("Suma brojeva od 1 do {0} je {1} ",n, sum);
Console.WriteLine("Faktorijel je " + fact);
}
}
}
while ciklus
Ovaj ciklus se koristi u sluaju kada je nepoznat broj iteracija (ponavljanja) ciklusa. Opti
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--;
}
do while ciklus
do-while ciklus se mora izvriti bar jednom. Opti oblik ovog ciklusa je:
do {
izrazi;
} while(uslov);
10
Primer 6. Napisati konzolnu aplikaciju na primeru prorauna broja godina do koje treba
odreeni 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;
} while (broj > 0);
11
Console.WriteLine();
}
}
}
foreach ciklus
foreach ciklus se koristi za adresiranje svakog elemena u nizu koristei sledeu sintaksu:
foreach (<osnovni tip> <ime> in <niz>)
{
moe se koristi <ime> za svaki element
}
Ovaj ciklus ide kroz svaku promenljivu i postavlja je u promenljivu <ime>. Ne mora se voditi
rauna koliko je elemenata u nizu npr.:
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 vraa
void ili int, a moe se ukljuiti string[] args parametar, pa su mogue sledee 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 obezbeuje nain za dobijanje informacija izvan
aplikacije.
Funkcije u C# predstavljaju blokove koda koji se mogu izvravati u bilo kom delu aplikacije.
Kod OOP funkcije se nazivaju metode, ali taj termin e se kasnije koristiti kod klasa. Tako na
12
primer, ako se u trai ispis nekog teksta, moe se pozvati funkcija u bilo kom delu aplikacije,
a dovoljno je samo jednom da se napie. Funkcije utiu na itljivost koda.
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 pie telo
funkcije (ono to funkcija treba da uradi). Funkcija se poziva u glavnom programu
navoenjem imena funkcije i eventualno prosleivanjem parametara.
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();
}
}
}
namespace Funkcija
{
class Program
{
static void Main(string[] args)
{
Osoba("Ana");
Osoba("Marija", "Marko", "Nikola");
Console.ReadKey();
}
13
}
}
14