C Sharp

Из пројекта Википедија

C# је један од млађих програмских језика настао 2002. године као саставни део MS .NET Framework 1.0. C# је објектно оријентисан програмски језик као и већина модерних виших програмских језика (C++, Java...)

Представићемо укратко синтаксу и структуру овог програмског језика.

                              СЕКВЕНЦА - СЕЛЕКЦИЈА - ИТЕРАЦИЈА

су три кључне речи када се почиње са учењем неког програмског језика.

  • Секвенца представља код у коме се команде извршавају редом - онако како су написане.
  • Селекција представља код у коме се команде извршавају у зависности од неког услова.
  • Итерација (iterare-понављати) - је код у коме се једне исте команде извршавају по неколико пута у зависности од одређених параметара (тзв. петље - једна од најважнијих ствари у програмирању).

Садржај

[уреди] Коментари

У C# постоје две врсте коментара (често је потребно коментарисати одређене линије кода како би читљивост кода била већа и разумљива другима). Прва врста су коментари у једном реду, а друга коментари у више редова.

 //Komentar u jednom redu
 /* Komentar
    u vise
    redova */

[уреди] Типови података

 char        c = 'M';             //  Bilo koji ASCII karakter
 byte        b = 255;            //  0..255     
 sbyte      sb = -127;          // -128..127
 short       s = 32767;        // –32768..32767
 ushort     us = 65535;       // 0..65535
 int         i = -2000;      // –2,147,483,648 ... 2,147,484,647
 uint       ui = 12345;     // 0..2,147,484,647
 long        l = 0;  
 ulong      ul = 5;
 bool        bl = true;       //Tip koji prima samo dve vrednosti TRUE i FALSE
 float       f = 123.45F;
 double      d = -123.74;
 decimal   dec = 1.23554M;
 string    str = „Mika Zika“;
 DateTime  dat;
 object     o  = „“;           //Bilo koji tip ili bilo šta! Nedefinisano!      
 Double Val1=0,Val2=10;        //Inicijalizacija više promenljivih

Наравно постоји још типова који овде нису споменути али за почетак и ови ће бити довољни.

[уреди] Декларисање променљивих (варијабли)

Синтакса :

 <Tip> <Ime promenljive>;

дакле :

       int i;
       float f;

Горе смо дефинисали промењиву i која је целобројног типа, а у дугом реду промењиву f која је типа броја са покретним зарезом (децимални запис). Можемо закључити да се променљива у C# дефинише типом и именом променљиве а након тога следи тачка зарез.

[уреди] Наредба доделе вредности

Када некој променљивој у C# желимо да доделимо неку одређену вредност то ћемо урадити на следећи начин :

 <Ime promenljive> = <Vrednost>;

Пример:

 int i;
 i = 12345;

или

 int i;
 float f;
 i = 20;
 f = i;

Прилично једноставно....

[уреди] Блокови наредби

Понекад је програмске инструкције - команде потребно груписати у једну целину, то се постиже организовањем наредби у блок. Блок наредби у C# се пише између великих заграда :

 {
 //Ovo je blok naredbi
 }

[уреди] Алгебарске операције

Овде спадају сабирање, одузимање, множење, дељење и остатак при целобројном дељењу. Наравно ознаке су исте као и у математици...

 int x,y,z;
 x = y + z;
 x = y - z;
 x = y * z;
 x = y / z;      

Обзиром да су y и z цели бројеви знак / ће у овом случају представљати целобројно дељење.

 x = y % z; 

Остатак при целобројном дељењу

Нпр.

 x = 10;
 y = 3;
 z = 10/3; 

Броју z доделиће се вредност 3 јер 3 у 10 иде 3 пута без остатка

 z = 10 % 3 ; 

Броју z ће се доделити вредност 1 јер је 3*3 + 1 = 10

[уреди] Оператори поређења

Ако желимо да упоредимо две вредности користићемо следеће операторе:

 ==   - једнакост
 !=   - различититост
 >    - веће 
 >=   - веће или једнако
 <    - мање
 <=   - мање или једнако
 a < b; 
 a == b ; 
 a !=b 

и сл. Резултат ових операција (поређења) је типа Bool, односно ови искази могу бити тачни или нетачни (True или False).

 3 < 5     TRUE
 3 <= 3    TRUE
 5 != 5    FALSE

итд.

[уреди] Логички оператори и изрази

Логички оператори су "не", "и" i "или" који у математици представљању негацију, конјункцију и дисјункцију респективно. Користе се у комбинацији са логичким изразима.

 !  - негација
 && - конјукција (тзв. "и")
 || - дисјункција (тзв. "или")
Логичка табела
a b !a a && b a || b
false false true false false
false true true false true
true false false false true
true true false true true


Дакле, негацијом добијамо логичку вредност супротну елементу који се налази иза знака !. Конјункција (&&) захтева да су оба операнда тачни (true) да би дала резултат true, иначе даје резултат false. Дисјункција (||) даје резултат true уколико је бар један операнд тачан (true).

[уреди] Примери

Показаћемо неколико математичких израза у C#

Дефинишимо неколико променљивих

 int a,b,c;
 bool b;

Доделимо им неке вредности

 a = 10;
 b = 15; 
 c = -3;
 b = a > b;   //Dakle b ce dobiti vrednost False obzirom da 10 nije vece od 15
 b = !b      //b dobija vrednost True jer negacija od False je True
 b = (a < b ) && (c > a);  
 /*Prvi izraz je True drugi izraz je Flase a obzirom da se radi o konjunkciji      
 - potrebno je da oba izraza budu True, b ce dobiti vrednost False */

[уреди] Наредбе за испис и учитавање података

Саваки програм има следећу структуру:

             УЛАЗ --> ОБРАДА --> ИЗЛАЗ

Прецизније : Потребно је унети неке податке, потом их обрадити (решити неки проблем) и затим тако обрађене податке приказати.

  • За приказ података користи се следећа наредба :
 Console.Write(podatak); 
 или
 Console.WriteLine(podatak);

Пример:

 int i;                //Deklarisali smo promenljivu celobrojnog tipa i nazvali je i
 i = 10;              //Prom. i dodeli smo vrednost 10
 Console.Write(i);   //Prikazujemo promenljivu i na standardnom izlazu 

После извршавања програма :

 10
  • За учитавање података са стандардног улаза (тастатуре) користи се следећа наредба:
 <promenljiva> = Console.ReadLine();

Пример:

 string s;                                     //Definisali smo promenljivu s tipa string
 Console.Write("Unesi neku rec: ");           //Prikazali na ekranu odredjeni zahtev
 s = Console.ReadLine();                     //Unetu vrednost dodelili promenljivoj s
 Console.WriteLine("Napisali ste : {0}",s); //Prikaz ucitane vrednosti

После извршавања програма :

 Unesi neku rec : blabla
 Napisali ste : blabla

Уколико је потребно учитати бројну вредност код би се мало променио:

 <brojna promenljiva> = <tip>.Parse(Console.ReadLine());

Обзиром да је све унето са тастатуре, неопходно је унети стринг (ниску карактера) претворити у бројну вредност што постижемо функцијом

 <tip>.Parse(string)

Замислите да очекујемо бројчану вредност а неко са тастатуре укуца слово, карактер или било шта друго што није бројна вредност - програм би прекинуо са извршавањем, пријавио би грешку.

Пример:

 int i ;
 double d;
 i = int.Parse(Console.ReadLine());   
 //Uneti string pretvaramo u celobrojnu vrednost i dodeljujemo promenljivoj i 
 d = double.Parse(Console.ReadLine());
 //Uneti string pretvaramo u decimalni broj  i dodeljujemo promenljivoj d

[уреди] Селекција

Понекад је потребно у програму проверити односе између променљивих и у зависности од тог односа (услова) извршити једне инструкције односно у противном неке друге. Тада се користи такозвана селекција (одабирање) коришћењем if команде.

 if (uslov )      if (uslov)              if (uslov)
 {                {                       {
 //komande        //komande1              //komande1
 }                }                       }
                  else                    else
                  {                        if (uslov )
                  //komande2                 {
                  }                           //komande2
                                             }
                                            else
                                             {
                                             //komande3
                                             }

Практично се if команда може ширити у бесконачност.

Ево неких примера:

 if ( a < b )
 {
  a = a + b ;
 }
 if (a < b )
 {
 a = b;
 }
 else
 {
 b = a ;
 }
 if (a < b)
 {
 a = b;
 }
  else if ( a > c )
   {
    a = c;
   }
  else
   {
    a = a +1 ; 
   }

Понекад је потребно у програму испитати велики број услова, тада if команда није баш најпогоднија, тада је много боље решење користити тзв. switch команду која има следећу синтаксу :

 switch (promenjiva)
 {
 case izbor1 : //komande1 ; break;
 case izbor2 : //komande2 ; break;
 ...


 case izborN : //komandeN ; break;
 default:  //ostalo ; break;
 }

Пример:

 int ocena;
 ocena = 5 ; 
 switch (ocena)
 {
 case 1 : Console.WriteLine("Nedovoljan");break;
 case 2 : Console.WriteLine("Dovoljan");break;
 case 3 : Console.WriteLine("Dobar");break;
 case 4 : Console.WriteLine("Vrlo dobar");break;
 case 5 : Console.WriteLine("Odlican");break;
 default : Console.WriteLine("Nepostojeca ocena");break;
 }

Јасно је да се овај код могао реализовати и помоћу if - else наредбе али ово је практичнији начин.

[уреди] Итерација (петље)

Понекад је поједини део кода потребно извршити неколико пута. Једна од најмоћнијих ствари у програмским језицима јесу тзв. петље које програмеру омогућавају да се одређени блокови команди изврше велики број пута.

Пример: Замислите да је потребно учитати и/или исписати 1000 бројева са тастатуре. Тада би било потребно дефинисати 1000 променљивих и у још 1000 линија кода захтевати од корисника да унесе одређене вредности у те променљиве (то би био позамашан посао) - покушајте само да бројите до хиљаду, требало би вам неколико сати ....

ВРСТЕ ПЕТЉИ : постији FOR петља као и петље са предусловом (WHILE-DO) и постусловом (DO-WHILE). Објашњење следи :

  • Пример: рецимо да желимо да прикажемо бројеве од 1 - 10 на екрану. Ево како овај проблем можемо решити применом петљи.

[уреди] for петља

 for ( brojac , uslov , inkrement )
  {
   //komande
  }

Пример:

 for (int i = 1 ; i <= 10 ; i++ )
  {
     Console.WriteLine(i);
  }

[уреди] do-while петља

 do
 {
 //komande
 }
 while (uslov);

Исти пример решен помоћу ове петље:

 int i;
 i = 1;
 do
 {
 Console.WriteLine(i);
 i++;
 }
 while (i<=10);

[уреди] while-do петља

 while (uslov)
 {
 //komande
 }
 do;

Исти пример решен помоћу ове петље:

 int i;
 i = 1;
 WHILE (i<=10)
 {
 Console.WriteLine(i);
 i++;
 }
 DO;


Програмски језици
Ada | ALGOL | APL | Асемблер | AWK | BASIC | C | C++ | C# | COBOL | ColdFusion | Common Lisp | Delphi | Eiffel | Focus | Forth | FORTRAN | Haskell | IDL | Java | JavaScript | Limbo | Lisp | Lua | Modula 2 | Objective C | OCaml | Pascal | Perl | PHP | Prolog | Python | Ruby | SAS | Scheme | Smalltalk | SQL | Tcl | Visual Basic