You are on page 1of 27

АНАТОМИЈА НА C#

Час 1
C♯
C♯ -- Повишен
Повишен С
С
• Воведни зборови за С# и .NET

Основни
Основни својства
својства
• Карактеристики и специфичности на програмскиот јазик

Main
Main метода
метода и
и именици
именици
• Својства и начин на примена

Идентификатори
Идентификатори
• Конвекција и правила

Основни
Основни податочни
податочни типови
типови
• Специфичности

Имплицитна
Имплицитна и
и експлицитна
експлицитна промена
промена
• Начин на работа

Enumerations
Enumerations
• Карактеристики

Оператори
Оператори
• Специфичности
C♯ - ПОВИШЕН C
- Оригиналната ознака по кој се препознава C sharp е C♯ (Unicode
znak 266F). Бидејќи симболот често не е достапен, прифатена е
ознаката C# (Unicode znak 0023). Поради овој симбол често може
овој програмски јазик да се сретне и под името C – hash;

- C♯ е модерен објектно ориентиран програмски јазик развиен во


рамките на Microsoft-овиот проект .NET опкружување (.NET
Framework). .NET е обемен збир на класи кои се користат за
програмирање на различни апликации. Сите тие класи се
групирани во посебни именувани простори (named space) за
полесна организација и поголема ефикасност во работата;

- Синтаксата на C♯ се базира на синтаксата од јазикот С++, но е


поедноставна и е многу слична со синтаксата на јазикот Java;
C♯ - ПОВИШЕН C
- Поддржува строги принципи како што се проверка на типот,
проверка на граници од низа, овозможува споредба на
неиницијализирани променливи, односно користи состав за
собирање отпад (garbаge collector);

- Наменет е за развој на компоненти кои користат дистрибуирани


опкружувања. Тоа значи дека компајлираната верзија на проектот
може да биде дистрибуирана на други луѓе или компјутери на кои
нема да им биде потребно Visual C# за да ја покренат
апликацијата ;

- Наоѓа примена за креирање апликации за големи (host) и како и за


вградени (embedded) системи (пример мобилни телефони);
ОСНОВНИ СВОЈСТВА
- C sharp е програмски јазик во кој не може да се дефинираат
глобални променливи и методи. Тоа значи дека тие мора да бидат
во телото на типовите (класи или структури);

- Локалните променливи не може да го сокријат околниот блок;

- C♯ спречува имплицитна промена, освен претворање во


пошироки типови каде (нема загуба на информации) или
изведени од базни типови, што го прави посигурен;

- Не е поддржано повеќекратно наследување на класи, иако е


можно повеќекратно наследување на интерфејс.
ОСНОВНИ СВОЈСТВА
- Еден C♯ програм се состои од:
- една или повеќе датотеки на изворниот код (source code)
- датотеки кои содржат ресурси (икони, слики, текстуални пораки)

- Изворниот код ги содржи дефинициите на типовите: класи,


структури, интерфејси;

- Типовите содржат членови: полиња, методи, својства, настани;

- Типовите се групирани во именици (namespace);

- Со преводот на C♯ се добиваат групи кои имаат наставки .exe


или .dll, во зависност од тоа дали се работи за библиотека или
апликација;
ОСНОВНИ СВОЈСТВА
- Група која има влезна точка (entry point) се нарекува апликација и
секогаш има наставка .exe;

- При отворање на апликацијата се покренува и процес за .NET


опкружување, во кој се создава домен на апликација (application
domain). Со отворање на нова инстанца за .NET апликација, се
креира и нов домен на апликацијата. На тој начин се овозможува
изолација на исти типови во различни домени бидејќи се креира
засебна копија за секој домен.

- Сите .NET апликации се активни во ист процес, па затоа и


ангажманот на оперативниот систем е помал во споредба кога
истиот би требало да покренува нов процес за секоја апликација.
MAIN МЕТОДА И ИМЕНИЦИ
- Влезна точка во секоја апликација е Main методата.

- Main методата мора да биде декларирана како дел од некоја класа


или структура. Во други јазици влезната точка е глобална
функција. Во C# не постојат таков тип на функции;

- Задолжително е оваа функција да биде статичка (static);

- Може да се употреби како функција која враќа вредност int или


да е функција која не враќа вредност void;

- Листата со аргументи може да биде празна или да прима низа од


карактери како аргумент Main (string[] args)
MAIN МЕТОДА И ИМЕНИЦИ
using System; // vklucuvame imenik System
/*
tipot go definirame
vo imenikot MojImenik:
*/
namespace MojImenik {
class Sefte {
static void Main() {
// sega ne treba polno ime (so imenikot)
Console.WriteLine("Pozdrav od Uros");
}
}
}
MAIN МЕТОДА И ИМЕНИЦИ
- Имениците ја олеснуваат организацијата на кодот;

- Со помош на имениците се избегнува судирот на имињата (name


clash) овозможувајќи два различни типа да носат исто име, но да се
декларирани во посебни именици;

- Ако декларирањето на типот се врши внатре во именикот тогаш тој е


видлив само во тој именик. Деклариран тип надвор од именикот,
значи дека тој тип ќе биде сместен во глобалниот именик. Пристапот
до типот се врши со наведување на именикот во кој пребаруваме:
 using System;
//...
Console.WriteLine(/*...*/);
или со испишување на целосниот пат до локацијата на типот
System.Console.WriteLine(/*...*/);
ИДЕНТИФИКАТОРИ
- Идентификатори се имиња на поедини елементи од кодот:
променливи, константи, класи, методи;

- Бидејќи нив ги одредува програмерот, препорачливо е елементите


да се именуваат така што ќе го опишат нивното значење;

- Како идентификатори не може да се користат клучните зборови.


Ако идентификаторот започнува со симболот @ како почетен
карактер, тогаш може да се користат клучен збор;
 string @string = “Тrpe”;
 Идентификаторите може да започнат со знакот подвлечено или со
некој дозволен Unicode знак;
 int _ocena = 5;
- Сите Unicode кои не означуваат обликување (пр. празно место)
можат да се појават во составот на идентификаторите;
ИДЕНТИФИКАТОРИ
 Постои меѓународна конвенција која е препорачливо да се
користи при формирање на идентификаторите:

- Имениците започнуваат со голема буква;


System.Windows.Forms
- Првата буква на типовите (класи, структури, енумератори) е
голема бука;
public class RabotnickaKlasa
- Голема прва буква се користи и кај идентификаторите на
методите и својствата;
public int IzleziNaTerasa()
- Полињата (fields) се именуваат со прва мала буква;
private int brojac
ИДЕНТИФИКАТОРИ
- Клучните зборови се резервирани ознаки кои имаат посебно
значење во C# и нивното користење како идентификатори може да
доведе до колизија.
abstract event new struct
as explicit null switch
base extern object this
bool false operator throw
break finally out true
byte fixed override try
case float params typeof
catch for private uint
char foreach protected ulong
checked goto public unchecked
class if readonly unsafe
const implicit ref ushort
continue in return using
decimal int sbyte virtual
default interface sealed void
delegate internal short volatile
do is sizeof while
double lock stackalloc
else long static
enum namespace string
ИДЕНТИФИКАТОРИ
- Во C# постојат одредени резервирани зборови, т.н. контекстни
клучни зборови, кои можат да се користат како идентификатори,
бидејќи не се резервирани. Дел од нив може да имаат различно
значење во различни ситуации (where и partial)

from get group


into join let
orderby partial select
set value where
yield
ОСНОВНИ ПОДАТОЧНИ ТИПОВИ

Типови
Типови

Референтни
Референтни
Вредносни
Вредносни (објектни)
(објектни)
(value
(value types)
types) (reference
(reference types)
types)

Енумератори
Енумератори
Структурни
Структурни enum
enum

Структури
Структури Целобројни
Целобројни Реални
Реални Логички
Логички
struct
struct int,
int, sbyte,
sbyte, char
char float,
float, double
double bool
bool
ОСНОВНИ ПОДАТОЧНИ ТИПОВИ
- Референтните типови на податоци се всушност инстанци на
класите;

- Во C# не постојат покажувачи, па нивната улога во


програмирањето ја правземаат референтинте податочни типови;

- Слично како и кај покажувачите, доколку се направи копија од


некоја инстанца, својствата на објектот може да ги менуваме или
од оригиналната или од инстацата добиена со копирање;

- Доколку се некоја инстанца на класата се додели на метода од


класата, промените направени врз објектот во методот ќе нема да
влијаат со повратната информација од методот.
ОСНОВНИ ПОДАТОЧНИ ТИПОВИ
ЦЕЛОБРОЈНИ ПОДАТОЧНИ ТИПОВИ
Тип Опсег на вредностите Опис

sbyte –128 до 127 8-битен цел број со предзнак

byte 0 до 255 8-битен цел број без предзнак

char U+0000 до U+ffff 16-битен Unicode знак

short –32,768 до 32,767 16-битен цел број со предзнак

ushort 0 до 65,535 16-битен цел број без предзнак

int –2,147,483,648 до 2,147,483,647 32-битен цел број со предзнак

uint 0 до 4,294,967,295 32-битен цел број без предзнак

–9,223,372,036,854,775,808 до
long 64-битен цел број со предзнак
9,223,372,036,854,775,807

ulong 0 до 18,446,744,073,709,551,615 64-битен цел број без предзнак


17
ОСНОВНИ ПОДАТОЧНИ ТИПОВИ

РЕАЛНИ БРОЕВИ

Тип Опсег на вредностите Точност Меморија

float 1,5×10-45 до 3,4×1038 7 децимали 32 бита

double 5,0×10-324 до 1,7×10308 15-16 децимали 64 бита

decimal 1,0×10-28 до 7,9×1028 28-29 децимали 128 бита

18
ОСНОВНИ ПОДАТОЧНИ ТИПОВИ
ПРИПИШАНИ (DEFAULT) ВРЕДНОСТИ
Тип Вредност
bool false
byte 0
char '\0'
decimal 0.0M
double 0.0D
float 0.0F
int 0
long 0L
sbyte 0
short 0
uint 0
ulong 0
ushort 0
19
ОСНОВНИ ПОДАТОЧНИ ТИПОВИ
- Иницијализацијата на променливите се врши со операторот за
доделување
int deset = 10;
без притоа да се користи зборчето new
int deset = new int(10);

- Реалните броеви се предодредени како double. Доколку се


иницијализира некоја променлива како float или decimal тоа треба
да се нагласи
float f = 24.3F;
decimal pi = 3.141592653589793238462643M;
Float f = 24.3; // greska: tip double ne može
// implicitno da se pretvoriti vo float
- За иницијализација може да се користат и функции
int pogolem = 24.CompareTo(12);
bool netocno = “Mina - Volove".Contains(“Ina - Love");
ИМПЛИЦИТНА И ЕКСПЛИЦИТНА ПРОМЕНА
- Имплицитна промена е возможна само доколку при промената не
постои опасност од губиток на информациите
float pi = 3.14F;
double pita = pi;

Тип Може имплицитно да се конвертира во

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
char ushort, int, uint, long, ulong, float, double, decimal
float double
ulong float, double, decimal
ИМПЛИЦИТНА И ЕКСПЛИЦИТНА ПРОМЕНА
 При експлицитна промена
Тип Може експлицитно да се конвертира во
програмерот ја превзема
sbyte byte, ushort, uint, ulong, char
одговорноста доколку
byte sbyte, char  дојде до губење на
short sbyte, byte, ushort, uint, ulong, char
информациите. Оваа
ushort sbyte, byte, short, char
промена се врши со
int sbyte, byte, short, ushort, uint, ulong, char
 помош на cast-операторот
uint sbyte, byte, short, ushort, int, char
long sbyte, byte, short, ushort, int, uint, ulong, char
long dolga = 5;
ulong sbyte, byte, short, ushort, int, uint, long, char
int kratka = (int)dolga;
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
ИМПЛИЦИТНА И ЕКСПЛИЦИТНА ПРОМЕНА
- За претворање од изведен во базен тип на податок не е потребно
нагласување со експлицитна промена бидејќи тоа е дозволено:
class Student { }
class Student: StudentNaFI{ }
StudentNaFI trpe = new StudentNaFI();
Student trpeKakoStudent = trpe;

- Претворањето во обратна насока е ризично

class Student{ }
class Student: StudentNaFI{ }
Student trpeKakoStudent = new StudentNaFI();
StudentNaFI trpe = trpeKakoStudent ; // greška!
ENUMERATIONS
- Енумератори се податочни типови кои содржат група на
именувани константи. Доколку не се зададени експлицитно
вредностите им се доделуваат започнувајќи од 0.

enum Denovi {
ponedelnik, // 0
vtornik, // 1
// ...
}

enum Denovi {
petok = 5,
četvrtok = 4,
// ...
}
ENUMERATIONS
- Константите кои се дел од еден енум можат да бидат byte, short,
int или long.

enum Denovi : byte {


ponedelnik, vtornik,
sreda, četvrtok,
petok, sabota,
nedela
}
- При вакво одредување на податочниот тип се одредува само
опсегот на вредностите. Сепак ова не дозволува имплицитна
промена

byte denes = Denovi.sreda; // грешка!


byte utre = (byte)Denovi.četvrtok;
ОПЕРАТОРИ
Категорија Оператори
Аритметички +-*/%
Логички & | ^ ! && || true false
Битовни &|^~
Неголемувачи, намалувачи ++ --
Споредбени == != < > <= >=
Доделувачи = += -= *= /= %= &= |= ^= <<= >>=
Присап на членот .
Индекси []
Доделување на тип ()
Условни оператори ?:
Додавање и одземање делегати +-
Креирање на објект new
Информација за типот is sizeof typeof
Kontrola preljeva iznimki checked unchecked
Индирекција и адреса * -> [] &
ОПЕРАТОРИ
ХИРЕАРХИЈА НА ОПЕРАТОРИТЕ
Категорија Оператори
Примарни x.y f(x) a[x] x++ x-- new typeof checked unchecked
Унарни + - ! ~ ++x --x (T)x
Аритметички * / %
Аритметички + -
Битовно поместување << >>
Споредбени и проверка на < > <= >= is as
тип
Идентичност == !=
Логочко И &
Логичко ИСКЛУЧИВО ^
Логичко ИЛИ |
Условно И &&
Условно ИЛИ ||
Условни ?:
Доделување = *= /= %= += -= <<= >>= &= ^= |=

You might also like