37
Jezik C# je deo programske arhitekture formirane oko mreyno distribuirane platforme, .NET Framework. :NET omogucava da se programi izvrsavaju pod razlicitim okruzrnjem. Dve osnovne karakteristike -CLR -biblioteka klasa. Programi se ne prevode u lokalni kod negžu u IL. Kada se porene CLR prevodi kod u lokalni kod konkretnog racunara. .NET framework definise opstu specifikaciju jezika CLS i obezbedjuje opste izvrsno okruzenje. CLR CLR predstavlja izvrsno okruzenje .NET platforme. CLR obradjuje kod prilikom izvršavanja. Kod napisan za CLR zove se kontrolisani kod. Kod prolazi proveru pre nego sto mu CLR dozvoli rad. Ne dozvoljava da nijedna aplikacija osteti memoriju, da ne pristupi memoriji koja joj ne pripada. C# koristi pokazivace ali se oni nalaze poda maskom referenci. CLR lovi situacije pristupa nedozvoljenoj memoriji i ako nadje neku takvu baca izuzeta. Jos jedna karakteristika CLR-a je skupljanje smeca. Skupljanje smeca je postupak otkrivanja nekoriscenih objekata u dinamickoj memoriji i njihovog automatskog brisanja, ukoliko se utvrdi da oni nisu dostupni. Moguce je i da sami pozovete skupljace smeca. CTS Common Type System (Sistem Opštih Tipova) je sastavni deo CLR-a. Definiše pravila za deklarisanje, korišćenje i upravljanje tipovima. Dati du svi predefinisani tipovi podataka koji su dostupni u IL-u. Podržava i vrednosne i referentne tipove.

Osnove Tipovi Naredbe Izuzeci

Embed Size (px)

DESCRIPTION

Osnovi programskog jezika C#

Citation preview

O C#

Jezik C# je deo programske arhitekture formirane oko mreyno distribuirane platforme, .NET Framework. :NET omogucava da se programi izvrsavaju pod razlicitim okruzrnjem. Dve osnovne karakteristike

-CLR

-biblioteka klasa.

Programi se ne prevode u lokalni kod negu u IL. Kada se porene CLR prevodi kod u lokalni kod konkretnog racunara.

.NET framework definise opstu specifikaciju jezika CLS i obezbedjuje opste izvrsno okruzenje.

CLRCLR predstavlja izvrsno okruzenje .NET platforme. CLR obradjuje kod prilikom izvravanja. Kod napisan za CLR zove se kontrolisani kod. Kod prolazi proveru pre nego sto mu CLR dozvoli rad. Ne dozvoljava da nijedna aplikacija osteti memoriju, da ne pristupi memoriji koja joj ne pripada. C# koristi pokazivace ali se oni nalaze poda maskom referenci. CLR lovi situacije pristupa nedozvoljenoj memoriji i ako nadje neku takvu baca izuzeta.

Jos jedna karakteristika CLR-a je skupljanje smeca. Skupljanje smeca je postupak otkrivanja nekoriscenih objekata u dinamickoj memoriji i njihovog automatskog brisanja, ukoliko se utvrdi da oni nisu dostupni. Moguce je i da sami pozovete skupljace smeca.

CTS Common Type System (Sistem Optih Tipova) je sastavni deo CLR-a.

Definie pravila za deklarisanje, korienje i upravljanje tipovima.

Dati du svi predefinisani tipovi podataka koji su dostupni u IL-u.

Podrava i vrednosne i referentne tipove.

Od tipa podataka koje promenjiva treba da sadri zavisi da li e ona biti vrednosnog ili referentnog tipa.

Object je osnovna klasa koja predstavlja bilo koji tip, odnosno iz nje se izvode svi ostali tipovi.

C# ima 15 predefinisanih tipova od kojih su 13 vrednosni, a 2 su referentni tipovi (string i object).

O C#

C# je , , , , . .

: 'Ja volim C#' . class Primer00

{

static void Main() {

System.Console.WriteLine("** Ja volim C# **");

}

}

- class je , a Primer00 je - , , Primer00

- o Main() () ; static Main() , () ; void, ;

Main() - ,

- , Main() - (source code) C# *.cs;. () , C# (C Sharp Compiler, csc):

E:\C Sharp\Kod>csc Primer00.cs

(executable program) Primer00.exe, .

- C# . , ( C# ) Main(). static Main() , , .

- C# forward , .- using System; (namespace) System Microsoft .NET Framework Class Library (MS .NET FCL). Console, koja Main() . (namespace-a). , Console.WriteLine() je System.Console.WriteLine()- \n; escape C#

- C# je o , C, , escape ka ( escape ). char string (), (), (\), escape , . \ . (backslash) . (string-) o \, o \\, a \. , , , , . escape , Unicode :

Escape sequenceOUnicode \'Je (single quote)0x0027

\" (double quote)0x0022

\\ (backslash)0x005C\0Null0x0000

\a (alert)0x0007

\bJe (backspace)0x0008

\f (form feed)0x000C

\n (new line)0x000A

\rK (carriage return)0x000D

\t (horizontal tab)0x0009

\v (vertical tab)0x000B

: (. Main) . using System;class Primer02

{

static void Main(string[] args) {

Console.WriteLine("** Primer 02 **\n");

Console.WriteLine("Argument #1: {0}", args[0]);

Console.WriteLine("Argument #2: {0}", args[1]);

}

}

- Main() , args; . args

- Console.WriteLine ; string, placeholdere, . {0}, {1} . placeholder o .

- :

E:\C Sharp\Kod>Primer02

, . :

Unhandled Exception: System.IndexOutOfRangeException: Index was outside

the bounds of the array. at Primer02.Main(String[] args)

- :

E:\C Sharp\Kod>Primer02 777

, . :

Unhandled Exception: System.IndexOutOfRangeException: Index was outside

the bounds of the array. at Primer02.Main(String[] args) in Primer02.cs:line 19

A :

E:\C Sharp\Kod>Primer02 777 AaaA BB22

, .

aritmetiki+ - * / %

logiki& | ^ ~ && || !

spajanje stringova+

inkrement, dekrement++ --

iftovanje bitova>

poreenja== ! = >= >= =, binarni +, binarni -, ^, &, |, ~, ++, --, sizeof

:

Boja boja = Boja.Crvena;

Console.WriteLine(boja++); // Zelena : ek Zaposleni imePrezime radStaz. .using System;namespace Tipovi

{ class Primer3 {

public struct Zaposleni

{

public string imePrezime;

public int radStaz;

}

static void Main()

{

Zaposleni radnik;

radnik.imePrezime=" Pera Peric";

radnik.radStaz=23;

Console.WriteLine("Ime i prezime:{0}",radnik.imePrezime);

Console.WriteLine("Godine radnog staza:{0}",radnik.radStaz);

} }}

Ime i prezime: Pera Peric

Godine radnog staza: 23

- (struct) ( ) . System.ValueType-. . struct , .- : imePrezime string radStaz t int. public .- Main radnik, koja je Zaposleni. , (.), .

- . public struct Zaposleni

{

public string imePrezime;

public int radStaz=23; // greka

}- !

- new, , (heap-)!

Zaposleni radnik=new Zaposleni();

radnik.imePrezime=" Pera Peric";

radnik.radStaz=23;- ( ) . (default) , .

- radStaz radnik , . :

Zaposleni radnik=new Zaposleni();

radnik.imePrezime=" Pera Peric";

Console.WriteLine("Ime i prezime:{0}",radnik.imePrezime);

Console.WriteLine("Godine radnog staza:{0}",radnik.radStaz); :

Ime i prezime: Pera Peri

Godine radnog staza: 0 // podrazumevana vrednost za tip int je 0

- , 0, false . string koj , null.

- !

- , :

public struct Zaposleni

{

public string imePrezime;

public int radStaz;

}

static void Main()

{

Zaposleni radnik=new Zaposleni();// alokacija memorijskog

// prostora na stek-u

metod(radnik); // poziv metode metod koja ima kao parametar

// ima strukturnu promenljivu radnik

}

static void metod(Zaposleni kopija) //deklarisanje metode metod

{

kopija.imePrezime="Marko Markovic";

kopija.radStaz=24;

} o , . ref , .

Ko : , int a double. real , real . .using System;

namespace Tipovi

{

class Primer4 {

static void Main()

{

//dodeljivanje vrednosti celobrojnoj promenljivoj

int ceoBroj=123; //realna promenljiva dobija vrednost celobrojne

//implicitna konverzija

double realanBroj=ceoBroj; Console.WriteLine("Implicitno-->(double){0}={1}",ceoBroj,realanBroj); // dodeljivanje vrednosti reanoj promenljivi

realanBroj=87.25; //celobrojna promenljiva dobija vrednost realne

//ekspicitna konverzija

ceoBroj=(int)realanBroj;

Console.WriteLine("Eksplicitno-->(int){0}= {1}",realanBroj,ceoBroj);

}

}}

Implicitno-->(double)123=123

Eksplicitno-->(int)87.25=87

. , , . , ;

, . ., ceoBroj 2 , 4 , ceoBroj , :

ceoBroj=(int)realanBroj; ;

- :

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

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

short (int, long, float, double, decimal

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

int (long, float, double, decimal

uint (long, ulong, float, double, decimal

long (float, double, decimal

ulong (float, double, decimal

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

float (double

- Ek :

sbyte (byte, ushort, uint, ulong, char

byte (sbyte, char

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

ushort (sbyte, byte, short, or char

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

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

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

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

char (sbyte, byte, short

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

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

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

- Ek Convert. val . C#, ., int Convert.ToInt32(). .NET System. :

Ko

Convert.ToBoolean (val)

Convert.ToByte(val)

Convert.ToChar(val)

Convert.ToDecimal(val)

Convert.ToDouble(val)

Convert.ToInt16(val)

Convert.ToInt32(val)

Convert.ToInt64(val)

Convert.ToSbyte(val)

Convert.ToSingle(val)

Convert.ToString(val)

Convert.ToUInt16(val)

Convert.ToUInt32(val)

Convert.ToUInt64(val)

val je bool

val je byte

val je char

val je decimal

val je double

val je short

val je int

val je longval je sbyte val je floatval je string

val je ushortval je uint

val je ulong

. :

(if switch)

(while,do, for foreach)

(goto, break continue).

Ko if : . , .using System;

namespace Naredbe

{ class primer

{ static void Main()

{

Console.WriteLine("Unesite slovo:"); //unos sa tastature je tipa string pa se vri konverzija u char

char c=Convert.ToChar(Console.ReadLine());

//provera da li je uneto slovo

if (Char.IsLetter(c)) //provera da li je malo slovo

if (Char.IsLower(c))

Console.WriteLine("Uneti znak je malo slovo abecede!");

else //ukoliko nije malo onda je veliko slovo

Console.WriteLine("Uneti znak je veliko slovo abecede!"); //ako nije ispunjen uslov prve if naredbe sledi

else

Console.WriteLine(" Uneti karakter nije slovo abecede!!!");

}

}}

Unesite jedan karakter

A

Uneti znak je veliko slovo abecede

- if a:

if () if ()

1 ( )

else // else // 2 ( )- 1 . ( Char.IsLetter(c)), , Char.IsLower(c).ko . , .- .

- if . else e o aj if ! if . if a, :

if ( 1 )

1; else if ( 2 )

2;

else

3;- , switch a.Ko switch : . .

using System;

namespace Naredbe

{ class Primer7 {

enum godStudija

{

prva=1,

druga,

treca,

cetvrta

}

static void Main()

{

Console.WriteLine("Unesite godinu studija:");

int n=int.Parse(Console.ReadLine());

switch (n)

{

case (int)godStudija.prva:

Console.WriteLine(" Na prvoj godini strudija ima 7 ispita");

break;

case (int)godStudija.druga:

Console.WriteLine("Na drugoj godini studija ima 9 ispita");

break;

case (int)godStudija.treca:

Console.WriteLine("Na trecoj godini studija ima 12 ispita");

break;

case (int)godStudija.cetvrta:

Console.WriteLine("Na cetvrtoj godini studija ima 14 ispita");

break;

default: Console.WriteLine("Studije na FON-u traju cetiri godine!\a");

break;

}

}

}}

Unesite godinu studija:

4

Na cetvrtoj godini studija ima 14 ispita

- switch , , switch, , , . : char, enum, string . switch ( selektor )

{

case konstanta1:

naredba1(blok1); break;

case konstanta2:

naredba2(blok2); break;

default:

naredba3(blok3); break;

}

- case default selektora.Kao case break .

- default case , 4, 1., default switch-.

- - switch (n) {

case 1: Console.WriteLine(" Na prvoj godini strudija ima 7 ispita");

break; ///greka

case 2,4: Console.WriteLine("Na drugoj godini studija ima 9 ispita");

break; ... - goto .

switch (n) {

case 1: Console.WriteLine(" Na prvoj godini strudija ima 7 ispita");

break; case 2: goto case 1;// u sluaju da je n 2, ispisae se kao i da je uneto 1!

... } goto !

- : switch (n) {

case 1: case 2: Console.WriteLine("Na drugoj godini studija ima 9 ispita");

break; ...

} - case 1 case 2 , case 1 break switch .

-, , default . switch (n) {

case 1: Console.WriteLine(" Na prvoj godini strudija ima 7 ispita");

break; case 1: Console.WriteLine("Na drugoj godini studija ima 9 ispita");

break; default:

default:... }- !- : char, enum, string .. while : 10.

using System;

namespace Naredbe

{ class Primer8 {

static void Main()

{

//inicijalizacija vrednosti promenljivih

int i=2;

int suma=0;

while (i