49
Visoka tehnička škola Niš Studijski program: Savremene računarske tehnologije Prof. dr Zoran Veličković, dipl. inž. el. 2019/2020. Predmet: .NET tehnologije

Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

  • Upload
    others

  • View
    15

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Visoka tehnička škola Niš

Studijski program: Savremene računarske tehnologije

Prof. dr Zoran Veličković, dipl. inž. el.

2019/2020.

Predmet: .NET tehnologije

Page 2: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

.NET tehnologije

Osnove jezika C#

Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske direktive

(4)

Prof. dr Zoran Veličković, dipl. inž. el.

Page 3: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Sadržaj Osnovni jezika C#

Tipovi, klase i objekti u C#

Blokovi u C#

Promenljive u C#

Znakovni nizovi u C#-u

Svojstvo i metode za stringove

Primeri korišćenja metode za stringove

Regularni izrazi

Upravljanje programskim tokom u C#-u

Poziv metode – bezuslovni skok

Naredba uslovnog skoka: if - else

Switch naredba

Naredba ponavljanja: for i foraech

Naredbe break i comtinue

Operatori u C#-u

Relacioni operatori

Ternarni operator

Operator is

Pretprocesorske direktive

Page 4: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Tipovi, klase i objekti u C#

TIPOVI su osnova OO programiranja i uobičajeno predstavljaju neku stvar.

Tip zapravo definiše OPŠTA SVOJSTVA i PONAŠANJE stvari.

Kao i Javi, tip se u C# definiše pomući KLASA, a svaka pojedinačna insatnaca klase se

naziva OBJEKT.

Pored klasa, postoje i drugi tipovi kao što su NABRAJANJA (engl. enumerations),

STRUKTURE i DELEGATI.

PONAŠANJE KLASE (objekta) se definiše METODAMA ČLANICAMA klase, dok se

SVOJSTVIMA određuje stanje klase.

C# sadrži veliki broj osnovnih - UGRAĐENIH tipova definisanih CLS platformom.

Objekti jednog tipa se mogu KONVERTOVATI u objekte drugog tipa (implicitno ili

eksplicitno).

PROMENLJIVE su skladišta za čuvanje VREDNOSTI određenog tipa.

Page 5: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Blokovi u C#

BLOKOVIMA koda se u C# definišu određene PROGRAMSKE CELINE kao što su

imenski prostor, klase, metode ili programski iskazi, a definišu se vitičastim

zagradama "{" i "}".

Rečnik c#-a se sastoji od ključnih reči (79+25), simbola i ogromnog broja TIPOVA.

using System;

namespace ConsoleApp4_NET_Framework

{

class Program

{

static void Main(string[] args)

{

System.Console.WriteLine("Zdravo Svete");

System.Console.ReadKey();

}

}

}

Blok Ključne reči –

označene plavom

bojom

Blokovi

unutar

blokova

Page 6: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Promenljive u C# NAREDBE u C# predstavljaju celovitu programsku instrukciju i završavaju se slično

kao u C-u i Javi oznakom (;).

int x; // 1. naredba deklaracije (tip i ime promenljive)

x = 23; // 2. naredba dodeljivanja vrednosti promenljive

int y = x; // 3. naredba deklaracije i dodeljivanja

Konstante u C#:

x = 32; // zašto postoje dva oblika deklaracije?

const int FreezingPoint = 32; // Navedite razlike!

NABROJIVI TIPOVI (enum) predstavljaju grupu povezanih konstanti, primer:enum Temperature

{

Najniža_zabeležena_temperatura = 0,

Tačka_topljenja_leda = 32,

Prolećna_temeperatura = 60,

Letnja_temperatura = 72,

Tačka_ključanja_vode = 212,

};

Za koju temperaturnu skalu je dati primer?

Ime povezanih konstatnti

[F0]

T(°C) = (T(°F) - 32 °F)/1,8

Page 7: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Intellisense i nabrojivi tipovi u VS-u

Intellisense:

Pomoć VS-a pri pozivu već

deklarisanog nabrojivog tipa

podataka

Page 8: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Primer: konstante u C#

class Values

{

enum Temperatures

{

WickedCold = 0,

FreezingPoint = 32,

LightJacketWeather = 60,

SwimmingWeather = 72,

BoilingPoint = 212,

};

static void Main()

{

System.Console.WriteLine("Freezing point of water: {0}",(int) Temperatures.FreezingPoint);

System.Console.WriteLine("Boiling point of water: {0}", (int) Temperatures.BoilingPoint);

}

}

Simboličko ime konstanti

Temperatures enum tippromenljive

Farenhajtova skala, 1714. god.

JAVA: System.out.println("Hello World!");

Kada se želi prikaz konstante, mora se eksplicitno

konvertovati u int tip primenom CAST opratora.

Page 9: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Znakovni nizovi - Stringovi u C#

ZNAKOVNI NIZ predstavlja OBJEKT (pogledaj u Javi, kasnije nešto više o tome) koji se

sastoji od niza znakova i u programskim jezicima se naziva STRING.

Dekleracija STRINGA u C#-u je sledeća:

string myString;

Dekleracija i DODELJIVANJE vrednosti STRING-u u C#:

string myString = "Hello World";

STRINGOVI pojednostavljuju pisanje programa i za njih je u C#-u obezbeđen SKUP

METODA koje olakšavaju manipulaciju sa njima:

Concat(), Clone(), CompareTo(), Trim(), Split(), Join(), IndexOf(),

Insert(), Equals(), Remove(), Substring() ...

Rad sa METODAMA vezanim za string biće posebno obrađene i koristiće se u

vežbama.

Page 10: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Svojstvo i metode za stringove/ Objašnjenje/ član

Page 11: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Svojstvo i metode za stringove

/ Objašnjenje/ član

Page 12: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Primer1: metode za stringoveusing System;namespace String_primeri{

class Program{

static void Main(string[] args){

string myString = "This is a test string ";string myString1 = myString.Trim();string myString2 = myString1.Substring(0, 4);string myString3 = myString2.ToUpper();string myString4 = myString3.Replace("IS", "AT");

Console.WriteLine(myString + " - dužina stringa je " + myString.Length + " karaktera");Console.WriteLine(myString1 + " - dužina stringa je " + myString1.Length + " karaktera");

Console.WriteLine("Substring: " + myString2);Console.WriteLine("ToUpper: " + myString3);Console.WriteLine("Replace: " + myString4);

Console.ReadLine();

}}

}

Page 13: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Primer 2: metode za stringoveusing System;namespace String_primer2{

class Program{

static void Main(string[] args){

string myString = "Ovo je test string";char[] separator = { ' ' };string[] myWords;

myWords = myString.Split(separator);

foreach (string word in myWords){

Console.WriteLine("{0}", word);}

Console.ReadLine();}

}}

Objašnjenje foreachnaredbe u nastavku

Page 14: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Regularni izrazi

KLASA .NET-a koja pruža DODATNE MOGUĆNOSTI za manipulaciju stringovima se nalazi

u BIBLIOTECI KLASA u imenskom prostoru System.String.

MANIPULISANJE stringovima i PODUDARANJE uzoraka stringova se najčešće obavlja

REGULARNIM IZRAZIMA (engl. regular expression).

Mogu se RAVNOPRAVNO KORISTITI tipovi string i tipovi dobijeni KLASOM System.String (i

malo s i veliko početno slovo S).

ZAPAMTITE, jednom definisana vrednost promenljive string (ili String) je NEIZMENLJIVA,

što često OTEŽAVA RAD sa stringovima.

Za komforniji rad sa stringovima koristi se OBJEKTI klase StringBuilder koja omogućava

rad sa stringovima PROMENLJIVE DUŽINE.

STRINGOVI mogu da sadrže i ESCAPE SEKVENCE (o njima je bilo više reči u Javi, a

koriste se na ISTI način i u C#).

Page 15: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Regularni izrazi i stringovi

REGULARNI IZRAZI se primenjuju na znakovne nizove, a veoma često se znakovnim

nizom smatra ČITAV TEKSTUALNI DOKUMENT.

REGULARNI IZRAZI se sastoje od DVE vrste znakova:

LITERALA (znak ili sekvenca znakova koji se traže) i

METAZNAKOVA (služi kao komanda za rasčlanjivanje):

^ $ . | { } [ ] ( ) * + ? \.

Primer regularnog izraza je dat u nastavku, a za njegovo tumačenje se koristi

mehanizam koji se naziva rasčlanjivač.

^(From|To|Subject|Date):

Ovaj izraz odgovara svakom podskupu sa rečima “From”, “To”, “Subject”, “Date” ako

su na početku novog reda (^), a završavaju se dvotačkom (:).

Za ove potrebe razvijena je SINTAKSA REGULARNIH IZRAZA, u IMENSKOM PROSTORU

System.Text.RegularExpressions klasom Regex.

Page 16: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Metode Regex klase

Metode klase Regex omogućavaju

izvršenje sledeći operacija:

Utvrđivanje da li se regularni

obrazac izraza pojavljuje u ulaznom

tekstu pozivanjem metode

Regex.IsMatch.

Utvrđuje jednu ili sve pojave teksta

koji odgovaraju obrascu regularnog

izraza pozivanjem Regex.Match ili

Regex.Matches metode.

Zamena teksta koji odgovara

obrascu regularnog izraza

pozivanjem metode Regex.Replace.

Page 17: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Primer 1: regularni izrazising System;

using System.Text.RegularExpressions;

using System.Text;

namespace Regularni_izrazi

{

class Program

{

static void Main(string[] args)

{

string pattern = @"\b\d+(,\d{3})*\.\d{2}\b";

string input = "16.32\n194.03\n1,903,672.08";

foreach (Match match in Regex.Matches(input, pattern))

Console.WriteLine(match.Result("$$ $&"));

Console.ReadLine();

}

}

}

Dodaj simbol $ i razmak ispred

svakog broja koji sadrži dve cifre

iza decimalne tačke.

Page 18: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Primer 2: regularni izrazi (1)

using System;

using System.Text.RegularExpressions;

using System.Text;

namespace Regularni_izrazi

{

class Program

{

static void Main(string[] args)

{

string pattern = @"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" +

@"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-0-9a-z]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))$";

string[] emailAddresses = {"[email protected]", "[email protected]",

"[email protected]", "[email protected]",

"[email protected]", "js#[email protected]",

"j_9@[129.126.118.1]", "[email protected]",

"js*@proseware.com", "[email protected]",

"[email protected]", "[email protected]",

"\"j\\\"s\\\"\"@proseware.com", "js@contoso.中国" ,

"[email protected]",

};

Ispitivanje validnosti

e - mail adrese.

Page 19: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Primer 2: regularni izrazi (2)

foreach (var emailAddress in emailAddresses)

{

if (Regex.IsMatch(emailAddress, pattern))

Console.WriteLine($"Valid: {emailAddress}");

else

Console.WriteLine($"Invalid: {emailAddress}");

}

Console.ReadKey();

}

}

}

Page 20: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Struktura uzorka@"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" +

@"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-0-9a-z]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))$";

Uzorak ^

Uzorak (?(")

Uzorak (?(")(".+?(?<!\\)"@)

Uzorak |(([0-9a-z]

Uzorak (\.(?!\.))

Uzorak |[-!#\$%&'\*\+/=\?\^`\{\}\|~\w]

Uzorak ((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*

Uzorak @

Uzorak (?<=[0-9a-z])

Uzorak (?(\[)

Uzorak (\[(\d{1,3}\.){3}\d{1,3}\])

Uzorak |(([0-9a-z][-0-9a-z]*[0-9a-z]*\.)+

Uzorak [a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))

Uzorak $

Page 21: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Karakteri regularnih izraza

Page 22: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Regularni izrazi, primeri

Page 23: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Visoka tehnička škola Niš

Upravljanje programskim tokom u C#

Page 24: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Programski tokovi/skokovi

LINEARNI TOK izvršavanja programskog koda može se menjati NAREDBAMA za

PROGRAMSKE SKOKOVE.

U C# postoje DVE VRSTE programskih skokova:

Uslovni i

Bezuslovni.

Pored programskih skokova, na tok programa utiču i naredbe tipa PROGRAMSKIH

PETLJI i ITERACIJE.

BEZUSLOVNI programski skok se može implementirati na dva načina:

Pozivanjem METODE na izvršenje;

Pomoću REZERVISANIH REČI za bezuslovni programski skok: goto, break, continue, return i

throw (o njoj više kasnije).

USLOVNI programski skokovi se implementiraju rezervisanim rečima:

if , else, switch.

Page 25: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Vizualizacija kontrolnih naredbi (1)

[t]-true-istina

[f]-false-laž

Page 26: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Poziv metode – bezuslovni skok

using System;

class Functions

{

static void Main( )

{

Console.WriteLine("In Main! Calling SomeMethod( )...");

SomeMethod( );

Console.WriteLine("Back in Main( ).");

}

static void SomeMethod( )

{

Console.WriteLine("Greetings from SomeMethod!");

}

}

Izlaz:

In Main! Calling SomeMethod( )...

Greetings from SomeMethod!

Back in Main( ).

Pozivanjemetoda,

kojih?

Definisanje metode

O’REILLY

ALIAS

Page 27: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Naredba uslovnog skoka: if-else

if (izraz )

naredba 1;

[else

naredba2; ]

....................

if ( vrednostJedan > vrednostDva )

Console.WriteLine( "VrednostJedan: {0} veća nego vrednostDva: {1}",

vrednostJedan, vrednostDva);

else

Console.WriteLine( " vrednostDva : {0} veća od vrednostJedan: {1}",

valueTwo,valueOne);

....................O’REILLY

Opciono !

Obavezno !

Samo po jedan programski iskaz!

Šta ako ima potrebe za VIŠE

programskih iskaza – BLOK!

Page 28: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Blok naredbi

O’REILLY

if(neki_uslov)

{

Naredba_Jedan;

Naredba_Dva;

Naredba_Tri;

}

else

{

Naredba_Četiri;

Naredba_Pet;

Naredba_Šest;

Naredba_Šedam;

}

... nastavak ...

uslov

ispunjen ?

da

ne

... nastavak ...

...

PRVI BLOK

naredbi je oivičen

vitičastim

zagradama!

DRUGI BLOK

naredbi je oivičen

vitičastim

zagradama!

da

ne DRUGI

blok

naredbi

PRVI

blok

naredbi

Page 29: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Ugnežđene if-else naredbe

O’REILLY

using System;

class Values

{

static void Main( )

{

int temp = 32;

if (temp <= 32)

{

Console.WriteLine("Warning! Ice on road!");

if (temp == 32)

{

Console.WriteLine( "Temp exactly freezing, beware of water.");

}

else

{

Console.WriteLine("Watch for black ice! Temp: {0}", temp);

}

} // <=32 } // main } // class

Šta treba prepraviti u kodu da

bi se koristila Celziusova skala?

Page 30: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Switch naredba (1)

Često se ugnežđene if naredbe TEŠKO ČITAJU, naročito ako ima više nivoa

ugnežđavanja.

Zbog toga se koristi naredba SWITCH kako bi se čitanje programa učinilo preglednijim.

Opšti oblik switch naredbe:

switch (neki_izraz)

{

case konstantan-izraz:

naredba;

naredba skoka

[default: naredba ]

}

Evo jednog “političkog” primera iz USA!

Page 31: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Switch naredba (2)

using System;

class Values

{

static void Main( )

{

const int Democrat = 0;

const int LiberalRepublican = 1;

const int Republican = 2;

const int Libertarian = 3;

const int NewLeft = 4;

const int Progressive = 5;

int myChoice = Libertarian;

switch (myChoice)

{

case Democrat:

Console.WriteLine("You voted Democratic.\n");

break;

case LiberalRepublican: // fall through

//Console.WriteLine("Liberal Republicans vote Republican\n");

Ispitivana vrednost nema

zaseban skup naredbi

Page 32: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Switch naredba (3)

case Republican:

Console.WriteLine("You voted Republican.\n");

break;

case NewLeft:

Console.WriteLine("NewLeft is now Progressive");

goto case Progressive;

case Progressive:

Console.WriteLine("You voted Progressive.\n");

break;

case Libertarian:

Console.WriteLine("Libertarians are voting Republican");

goto case Republican;

default:

Console.WriteLine("You did not pick a valid choice.\n");

break;

}

Console.WriteLine("Thank you for voting.");

}

}Zastarela goto naredba!?

Labela (oznaka)O’REILLY

Page 33: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Regularni izrazi, primena

Page 34: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Naredba ponavljanja: while Kada se unapred NE ZNA broj prolazaka kroz petlju koristi se naredba while.

Opšti oblik ove naredbe je: while (izraz) prog_iskaz;

using System;

public class Tester

{

public static int Main( )

{

int i = 0;

while (i < 10)

{

Console.WriteLine("i: {0}",i);

i++;

}

return 0;

}

}

O’REILLY

Page 35: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

using System;

public class Tester

{

public static int Main( )

{

int i = 11;

do

{

Console.WriteLine("i: {0}",i);

i++;

} while (i < 10);

return 0;

}

}

Naredba ponavljanja: do...while

O’REILLY

Koliko puta će se izvršiti ovaj

blok naredbi?

Koje su osnovne razlika

između while i do while

naredbe?

Page 36: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

using System;

public class Tester

{

public static int Main( )

{

for (int i=0; i<100; i++)

{

Console.Write("{0}", i);

if (i%10 == 0)

{

Console.WriteLine("\t{0}", i);

}

}

return 0;

}

}

Naredba ponavljanja: for

O’REILLY

Izlaz:

0 0

1 2 3 4 5 6 7 8 9 10 10

11 12 13 14 15 16 17 18 19 20 20

21 22 23 24 25 26 27 28 29 30 30

31 32 33 34 35 36 37 38 39 40 40

41 42 43 44 45 46 47 48 49 50 50

51 52 53 54 55 56 57 58 59 60 60

61 62 63 64 65 66 67 68 69 70 70

71 72 73 74 75 76 77 78 79 80 80

81 82 83 84 85 86 87 88 89 90 90

91 92 93 94 95 96 97 98 99

Page 37: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

/*Primer za ilustraciju foreach petlje*/

class PrimerForEach

{

public static void Main()

{

int [] myValues = {2, 4, 3, 5, 1};

foreach (int counter in myValues)

{

System.Console.WriteLine("counter = " + counter);

}

}

}

Naredba ponavljanja: foreach

O’REILLY

Izlaz:

Counter = 2

Counter = 4

Counter = 3

Counter = 5

Counter = 1

NOVO:

foreach - naredba

omogućava iterativni

pristup svakom elementu

niza!

Deklaracija i

inicijalizacija niza

Štampanje svih članova

niza myValues foreach

naredbom

Deklaracija INTERNE promenljive

counter koja uzima vrednosti iz

int niza myValues

Page 38: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

class PrimerBraek

{

public static void Main()

{

int total = 0;

for (int counter = 1; counter <= 10; counter++)

{

System.Console.WriteLine("counter = " + counter);

total += counter;

if (counter == 5)

{

System.Console.WriteLine("break from loop");

break;

}

}

System.Console.WriteLine("total = " + total);

}

}

Prekidanje petlje: break

O’REILLY

Izlaz:

Counter = 1

Counter = 2

Counter = 3

Counter = 4

Counter = 5

break from loop

total =15

Trajno prekida

programsku if naredbu i

for petlju. Kontrola se

prenosi na prvu naredbu

izvan for pelje

Page 39: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

class PrimerContinue

{

public static void Main()

{

int total = 0;

for (int counter = 1; counter <= 10; counter++)

{

if (counter == 6)

{

System.Console.WriteLine(“Continue from loop start");

continue;

}

System.Console.WriteLine("Counter = " + counter);

total += counter;

}

System.Console.WriteLine("total = " + total);

}

}

Preskakanje ostatka petlje: continue

O’REILLY

PRESKAČE preostali kod u telu petlje i vraća prog.

kontrolu na početakpetlje.

Izlaz:

Counter = 1

Counter = 2

Counter = 3

Counter = 4

Counter = 5

Continue from loop

start

Counter = 7

Counter = 8

Counter = 9

Counter = 10

Counter = 49

Page 40: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Operatori C#-a Operatori su simboli koji dovode do neke akcije!

Jednostavni ARITMETIČKI operatori su +, -, *, /.

Operator moduo (%) daje ostatak deljenja 17 % 4 = 1!

Operatori PREČICE – Objedinjeni operatori

mojaZarada += 5000; // mojaZarada = mojaZarada + 5000

mojaZarada *= 5000; // mojaZarada = mojaZarada * 5000

mojaZarada -= 5000; // mojaZarada = mojaZarada - 5000

Operatori INKREMENTIRANJA/DEKREMENETIRANJA:

prvaVrednost = drugaVrednost++; // sufix

prvaVrednost = ++drugaVrednost; // prefixO’REILLY

Page 41: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

-- Operatori ++using System;

class Values

{

static void Main( )

{

int vrednostPrva = 10;

int vrednostDruga;

vrednostDruga = vrednostPrva++;

Console.WriteLine("Posle postfix-a: {0}, {1}", vrednostPrva, vrednostDruga);

vrednostPrva = 20;

vrednostDruga = ++vrednostPrva;

Console.WriteLine("Posle prefix-a: {0}, {1}", vrednostPrva, vrednostDruga);

}

}O’REILLY

Izlaz:

Posle postfix-a: 11, 10

Posle prefix-a: 21, 21

Prvo se izvrši dodeljivanje,

a zatim inkrementiranje!

Prvo se izvrši inkrementiranje,

a zatim dodeljivanje!

Page 42: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Relacioni operatori

O’REILLY

Ime Operator Primer

Jednako == Vrednost == 100

Nije jednako != Vrednost != 100

Veće od > Vrednost > 100

Veće od ili jednako >= Vrednost >= 100

Manje od < Vrednost < 100

Manje od ili jednako <= Vrednost <= 100

Page 43: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Relacioni operatori

O’REILLY

Ako je x=5 i y=7, onda su vrednosti izraza dati u tabeli:

Ime Operator Primer Vr. izraza

I && (x==3) && (y==7) False

Ili || (x==3) || (y==7) True

Ne ! ! (x==3) True

Page 44: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Ternarni operator ? : (1)

Ternarni operator je operator sa tri operanda (?:).

Ovaj operator računa uslovni_izraz, a zatim izvršava izraz_1 ili izraz_2 u zavisnosti

od vrednosti uslovnog izraza.

uslovni_izraz ? izraz_1 : izraz_2

Ako je ovo tačno, uradi (izračunaj vrednost) izraz_1, u suprotnom uradi izraz_2.

Pogledajte sledeći primer:

Page 45: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Ternarni operator ? : (1)

using System;

class Values

{

static void Main( )

{

int vrednostPrva = 10;

int vrednostDruga = 20;

int maxVr = vrednostPrva > vrednostDruga ? VrednostPrva : vrednostDruga;

Console.WriteLine(“vrednostPrva: {0}, vrednostDruga: {1}, maxVr.: {2}",

vrednostPrva, vrednostDruga, maxVr.);

}

}

MaxVr = 10 > 20 ? 10 : 20

Izlaz:

vrednostPrva: 10, vrednostDruga: 20, maxVr.: 20

Page 46: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Operator “is”

Operatorom is se proverava da li je promenljiva ODGOVARAJUĆEG TIPA!

Class Primer_is

{

public static void Main()

{

int myInt = 0;

bool compatible = myInt is int;

System.Console.WriteLine("myInt is int = " + compatible);

compatible = myInt is long;

System.Console.WriteLine("myInt is long = " + compatible);

compatible = myInt is float;

System.Console.WriteLine("myInt is float = " + compatible);

}

}

Izlaz:

myInt is int = True

myInt is long = False

myInt is float = False

Page 47: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Pretprocesorske direktive (1)

Pre procesa kompajliranja u C# se prvo pokreće PRETPROCESOR.

PRETPROCESOR priprema program za prosleđivanje kompajleru.

Programer zadaje instrukcije pretprocesoru putem DIREKTIVA koje postavljaju u

zaseban programski red koji počinje sa #.

Najčešće se koriste u procesu DEBAGOVANJA.

PRETPROCESORSKE DIREKTIVE se stavljaju u izvorni kod, a ispred nih se postavlja

znak #.

U primeni su sledeće direktive:

#if, #else, #elif, #endif, #define, #undef, #warning, #error, #line,

#region, #endregion, #pragma, #pragmawarning, #pragma checksum

Direktive se odnose se na IDE i prikazivanje dela koda (oivičenog ovim

direktivama) aplikacije koji je generisao sam IDE.

Page 48: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

#region/endregion

Page 49: Visoka tehnička škola Niš · 2019-10-31 · .NET tehnologije Osnove jezika C# Tipovi, klase, objekti, promenljive, operatori, regularni izrazi, naredbe grananja i pretprocesorske

Pretprocesorske direktive (2)#define DEBUG

class Example4_16

{

public static void Main()

{

int total = 0; int counter = 0;

myLabel:

counter++; total += counter;

System.Console.WriteLine("counter = " + counter);

if (counter < 5)

{

#if DEBUG

System.Console.WriteLine("goto myLabel");

#endif

goto myLabel;

}

System.Console.WriteLine("total = " + total);

}

}

#define definiše preprocesorski simbol

DEBUG, završetak direktive bez (;)

Provera postojanja definicije

simbola DEBUG. Kompajler

prevodi ovaj deo koda.

Preprocesorska direktiva

#undef DEBUG

poništava definiciju

simbola