Процессор директивтері

Бульдік тип

bool типі C#-та – true немесе falce бульдік мәндерін сақтау үшін қолданылады.

Аты CTS типі Таңбалар саны Мәндері
bool System.Boolean True немесе falce

bool мәндерінің бүтіндерге және керісінше анық емес құрылуы мүмкін емес. Егер айнымалы bool ретінде жарияланса, онда тек true немесе falce-ты қолдануға болады.

Символдық тип

C#-та бірлік символдарды сақтау үшін char деректер типін қолдайды.

Аты CTS типі Мәндері
char System.Char Бөлек 16-битті символды ұсынады

char типті литералдар бірлік символды тырнақша ішіне жазылады, мысалы ‘A’. Егер екілік тырнақша ішіне жазса құрастырушы қате туралы хат шығарады.

Main () әдісі

C#-тағы программалар main() әдісінен басталады. Бұл int немесе void типінің мәнін қайтаратын кластың құрылымдық әдісі болуы керек.

Көбінесе public модификаторы анық көрсетіледі, өйткені бұл әдіс анықталуы бойынша программадан тыс шақырылуы керек. Негізінен, кіріс нүктесінің әдісіне қолжетімділіктің қай дәрежесін тағайындау маңызды емес. Оны private деп белгілесе де іске қосылады.

Main()-нің көптік әдістері

C#-тың Windows-қосымшасы немесе консольдігі құрастырылып жатқан кезде (компилируется), үндеместік заңы бойынша компилятор кез-келген класта тура Main() әдісін іздейді және оны программаның кіру нуктесі етеді. Егер Main()-нің бірден көп әдісі болса, құрастырушы қате туралы хат қайтарады. Мысалы келесі DoubleMain.cs атты кодты қарастырайық:

using System;

namespace Wrox

{ class Client

{ public static int Main ()

{ MathExample.Main ();

return 0; }

}

class MathExample

{ static int Add(int x, int y)

{ return x+y; }

public static int Main ()

{ int l=Add (5,10);

Console.WriteLine (i);

return 0; }

}

}

Бұл жерде Main() әдісін қамтитын екі класс бар.


5. Консольді енгізу-шығару үшін System.Console-ді пайдалану. Процессор директивтері.

Консольді енгізу-шығару үшін System.Console-ді пайдалану

Консольді терезедегі жолдарды оқу үшін Console.ReadLine() әдісі қолданылады. Ол консольді терезедегі кіріс ағынын есептеп, қайта қайтарып отырады. Консольді терезеге жазудың екі әдісі бар. Олар:

Ø Console. Write() – берілген мәнді консольді терезеге жазады;

Ø Console. WriteLine() – ол да тура сондай, бірақ мәлімет соңына жаңа жол символын қосады.

Console. WriteLine() сонымен қатар C-ғы printf() сәйкес функциясын форматталған түрде көрсетуге рұқсат береді. Console. WriteLine()-ды қолдану үшін бірнеше параметрлер бар.Әрбір маркер параметр нөмірін көрсететін индекстен тұрады Мысалға {0} тізімнен алғашқы параметрді көрсетеді.Мысалы:

Int i=10;

Int j =20;

Console.WriteLine(“{0} қосу{1} тең{2}”, i, j, i+j);

Бұл код келесіні шығарады:

10 қосу 20 тең 30

Процессор директивтері.

Процессор директивтері кодты орындайтын командаларда ешқашан көрсетілмейді, бірақ компиляцияның процесіне әсер етеді. Басқаша айтқанда кодқа кейнге қалдырылған мәліметтен тұратын фрагменттер қойылған кезде.

Барлық процессор директивалары # белгісінен басталады.

Келесіде директивалар қолданысының қысқаша анықтамасын көрсетелік:

# define және #undef

# define директивасы “#define DEBUG” түрінде қолданылады және бұл директива компиляторға осындай атаудағы (біздің жағдайда DEBUG) символ бар екендігін хабарлайды.

#undef директивасы қарама қарсы амалын орындайды- белгілі символдарды өшіреді:

#undef DEBUG

# define және #undefдирективаларын C# алғашқы кодының бас жағында орналастыру керек.

#if, #elif, #else және #endif

Бұл дерективалар компиляторға блоктағы кодты компиляторға қажеттілігін тексереді.

#warning және #error

Олар сәйкесінше компиляторға жібергенде қате немесе ескертулерді хабарлайды.

#region және #endregion

#region және #endregion директивалары берілген блоктағы код берілген атаумен жалпы біртұтас ретінде қарастырылуын көрсетеді


6. Объекті/ ж/е типтер. Структура және кластардың өзара айырмашылық/ы. Класс мүшелері.

Объектілер.

Класс объектілері көбінесе оның экземплярлары, яғни даналары деп аталады. Объектілерді программалаушылар тікелей командалар арқылы құрады немесе оларды жүйе өздігінен автоматты түрде де жасай алады. Программалаушы класс экземплярын new операциясы арқылы құрады.

Мысалы: Demo a = new Demo(); // Demo класы // экземплярын жасау Demo b = new Demo(); // Demo класының // басқа экземплярын жасау Класс мәліметтердің сілтемелік типтеріне жатады, олар мәліметтің өзін емес, тек адресін есте сақтайды. Сілтемелік типтегі мәліметтер үйіндіде (куча - heep) сақталады. Сонымен a мен b объектілердің адрестерін сақтайды. Егер объектіні сақтауға жеткілікті жады көлемі бөлінбесе, онда new операциясы OutOfMemory-Exception ерекше жағдайын туындатады. Үлкен көлемді объектілерді пайдаланғанда, осындай жағдайды өңдеу әрекетін қарастыру керек.

Объектілерді меншіктеу және салыстыру

•b = c

•Сілтемелік типтегі шамалар тек бір жерде орналасқан мәліметтер-ге сілтеме жасап тұрса,тең болып саналады (b == c, бірақ a!= b олардың мәндері тең болса да немесе екі мәнде де null-ге тең болған жағдайда да).

Типтер.

С# тілінде мәліметтер типтерінің элементтерді сақтау тәсіліне қарай тағы екі категориясы (санаты) бар: мәндер типтері (value types) және сілтемелік типтер. Мәндер типтері дегеніміз шамаға компи-лятор бөліп берген компьютер жадындағы биттер тізбегі.

Сілтемелік типтер мәліметтердің өздерін емес, олардың адрестерін сақтайды, мұндағы мән ком-пьютердің динамикалық жадындағы басқа бір объек-тіге (үйіндіге – кучаға) сілтеу арқылы жасалады. Мәндер типтеріне логикалық тип, арифметикалық тип, құрылымдар және саналатын (перечисления) типтер жатады. Сілтемелік типтерге жиымдар, сөз тіркестері (жолдар) және кластар жатады.

Структура және кластардың өзара айырмашылық/ы.

Структура интерфейсті іске асырады және ол мұраланбайды. Структура құрылғылары мен жолдары бар әдісті анықтайды. Структура – мағыналы, ал класс – сілтемелік тип болып табылады.

Класс түрлері: негізгі, туынды, абстрактілі кластар және интерфейс. Айырмашылықтары: негізгі класс ата-аналық класс болып табылады, себебі бұл класс негізінде басқа класстар құрылады; туынды класс – негізгі кластың кейбір қасиеттерін мұралап, одан туындаған класс; абстрактілі класс – бұл базалық класс, мұның негізінде даналар құрылмайды; интерфейс – код программасындағы семантикалық және синтаксистік конструкция.

Класс мүшелері.

Негіз мүше

Негіз мүше ол класс негіздері – өріс, констант, жайттардан тұрады.Негіз мүшелері статикалық болу мүмкін.Класс мүшелері экземпляр мүшелері болуы мүмкін, бірақ ол static түрде жарияланбаса.

Өріс (field) бұл класспен ассоцирленген, алмастырылған.Сіз алғашқы мысалда PhoneCustomer классындағы өрісті көрдіңіз.

PhoneCustomer нысанындағы экземплярды құрғаннан кейін оның өрісінде Нысан синтаксисті қолдануға болады. Өріс аты келесі мысалдағыдай болады:

PhoneCustomer Customer1-new Phone Customer()

Customer1.First Name=’’Simon”

Константалар класс сияқты ауыспаларменде ассоцирленген болу мүмкін. Константа const кілт сөзі көмегімен жарияланады. Егер ол public болып жарияланса, онда ол класстан тысқары болады.

Class PhoneCustomer

Public const string DayOfSendingBill=Monday;

Public int CustomerID;

Public stringFirstName;

Public string LastName;

Жайттар – нысанды шақыртатын кілт сөздегі класс мүшесі.Мысалғы клиентте жайтты туындату үшін арнайы уілт сөзі болады,соған қатысты. Бұл 8 тарауда жақсы қаралады.

Мүше қызметтері

Мүше қызметтері – кластты манипулациялайтын кейбір қызметтік мүшелер. Олар әдістерден, құрылымдардан, констрактуралардан, финанализаторлардан, индексаторлардан, операциялардан тұрады.


7. Мән бойынша беру және сілтеме бойынша беру. Әдістің жүктелуі. Әдістер

Арнайы терминалогия функция және әдістер арасындағы айырмашылықты бөле жарады. Осы терминологияға сай қызмет мүше түсінігі өзіне әдістерді ғана емес, құрылым, класс, негізді емес мүшелерді де біріктіреді. Осыған индексаторлар, операциялар, конструкторлар, деструкторлар, және кейбір күтпеген құрылымдарда кіреді. Олар негізгі мүше өрістермен, константалармен, жайттармен бірігеді.

Әдістерді жариялау

Әдістерді жариялау әртүрлі модификаторлардан тұрады, қайтымды мғына типіндегі, онда әдіс кейін, жақшаның ішінде аргумент тізімі, пішінді жақшада әдіс негізі болады.

(модификатор) тип- қайтымды аты әдісі (параметр)

Әдіс негізі

Әрбір параметр параметр типінің атынан және әдіске бағытталатын аттан тұрады. Егер әдістің мағынасы қайтымды болса, қайтымды мағынананың орнына қайтымды операторды шығу нүктесінде қолдануға болады. Мысалғы,

Public bool IsSguare (Rectangle rect)

Return (rect.Height—rect.Width)

Бұл кодта базалық класстың бірі қолданыста тұр. NET,System,Drawing,Rectangle. Тікбұрышты көрсетеді.

Егер әдіс қайтымды болмаса, онда қайтымды тип сапасында void көрсетіледі. Алайда ол аргументті қабылдамасада әдіс өрісінің атынан кейін міндетті түрде, бос дөнгелек жақшалар болу керек. Бұл кезде әдіске қайтымды операторды қосу міндетті емес, әдіс пішінді жақшаны жапқанда өз бетімен міндетті түрде автоматты бақыланады. Ерекше айта кететін жайт, әдісте әртүрлі сандағы операторлар болады.

Public bool IsPositive (int value)

If (value <0)

Return false

Return true

Әдістерді шақыру

Келесі мысалда, MathTest класс экземплярын құру және анықтау демонстрацияланады, сомен қатар әдіс анақтамасы және оны шақыру.

Using System

Namespace Wrox

Class mainEntryPoint

Static void Main ()

Кейбір статикалық функцияларды шақыру мүмкіндіктері

Console.WritLine(“Pi тен +MathTest.Get.Pi());

Int x =MathTest.GetSguareOf (5)

Console.Write.Line (‘5 тен квдраттауда “+x)

MathTest нысанды құру

MathTest =new MathTest () экземпляр

Статикалық емес әдісті шақыру

Math.value=30

Console.writeLine (‘value өрісі ауыспалы math+math.value)

Console.WriteLIne(30 квадратта тен +math.GetSguare)

MathTestкласын анықтау, class MathTest әдісін шақыру

Public int value

Public int GetSguare ()

Return value * value

Public static int GetSguareOf (int X)

Return x*x

Public static double GetPi ()

Return 3.14159

Параметрлерді әдіске жіберу.

Жалпы жағдайда параметрлерді әдіске мағынасы бойынша немесе ауыспалы сілтеме (ссылка) бойынша жіберіледі. Егер ауыспалы сілтемемен жібергенде, шақырылған әдіс ауыспалының өзін алады. Сондықтан әдіс ішінде ұшыраған өзгерістер, соңында өз күшінде қалады. Бірақ егер де ауыспалы мағынасына қарай жіберілсе, шақырылған әдіс сол ауыспалының көшірмесін алады. Бұл барлық өзгерістердің әдістері аяқталғанда жоғалып кететінін білдіреді. Яғни мағынасына қарай жіберу кезінде көшіру керек болғандықтан, деректердің күрделі түрлері үшін сілтеме бойынша жіберулері үлкен көлемді деректер үшін тиімді.

Егер керісіншесі көрсетілмесе, онда С# бағдарламалық параметрі мағынасына қарай жіберіледі. Бірақ сілтемелік үлгілердің қатынасы түсінушілікпен және абайлықпен қарау керек. Неғүрлым ауыспалы сілтемелік үлгі тек нысанға сілтемеден тұратын болса, онда сол сілтеме ғана параметрлері жібергенде көшірілген болады. Нысан емес, яғни сол нысанда болған өзгерістер сақталады. Бұдан өзге де ауыспалы үлгі мағынасы шынында деректен тұрады, сондықтан әдіске деректердің көшірмелері жіберіледі. Бүл әдіс жасалған int-тегі өзгерістер, бастапқы нысанның мағынасын өзгертпейді. Бұған қарама –қарсы егер әдіске алап (массив) және кез-келген басқа сілтемелік үлгі жіберілсе,яғни класс, әдіс бұл сілтемеге алаптағы мағынаның өзгерістеріне қолданылады.Бұл жаңа мағына бастапқы алаптың нысанында көрінетін болады.

Жоғарыда айтылғандардың барлығы келесі мысалмен түсіндіріледі:

using System;

namespace Wrox;

{ class PrameterTest

{ static void SomeFunction(int[] ints,int i)

{ints[0]=100;

i=100;}

public static int Main()

{int i=0;

int [] ints={0,1,2,4,8}; // ағымдағы мағынасын көрсету

Console.WriteLine (”i=”+i);

Console.WriteLine(“ints[0]=”+ints[0]);

Console.WriteLine(“Вызов SomeFunction... ”);

//әдістен қайтарылған соң ints массиві өзгертіледі,ал i –өзгермейді.

SomeFunction(ints,i)

Console.WriteLine (”i=”+i);

Console.WriteLine(“ints[0]=”+ints[0]);

return 0;

}}}

Төменде бұл бағдарламаның қорытындысы көрсетілген:

ParametrTest.exe

i=0

ints[0]=0

Вызов SomeFunction…

i=0

ints[0]=100

і- дің мағынасы өзгеріссіз қалғанына назар аударыңыз,бірақ inst-тегі өзгерген мағыналарды бастапқы алапта өзгерді.

Жолдардың орналасу тәртіптері де ерекшеленеді. Себебі жолдар өзгеріссіз (жолдардың мағынасының өзгеруі, тіпті жаңа жолдардың пайда болуына алып келеді), сондықтан жолдар сілтемелік үлгілерге тән тәртіпті көрсетпейді.

Жолдың ішіндегі әдістердің кез-келген жасалған өзгеріс бастапқы жолға әсер етпейді. Бұл 9- тарауда толығырақ қарастырылады.

Әдістің жүктелуі.

С # да әдістердіңжүктелуі орынды-әртүрлі сигнатуралармен (есімімен, саныменнемес параметрлер типтерімен) әдістің бірнеше нұсқасы болуы да мүмкін.Әдісті қайта жүктеу үшін,сіз жай ғана бірдей атаумен әдістерді жариялайсыз, бірақ әртүрлі санмен немесе параметр типімен:

Class ResultDisplayer

{void DisplayResult (string result) {//реализация} void DisplayResult (int result){//реализация}}

Егер сізді міндетті емес параметрлер көңіліңізден шықпаса, дәл сондай эффектке жету үшін әдістердің қайта жүктелуін қолдануға болады:

Class MyClass { int DoSomething (int x)// таңдалған ұйғарым 10 белгісімен(со значением по умолчанию 10) 2-параметр керек{ DoSomething (x,10);}

Int DoSomething (int x, int y){//реализация}}

Орындалу уақытында басқа тілдердегі сияқты, әдістердің дұрыс жүктелмеуі қиын ұсталатын қателермен сипатталады.4бөлімде осы мәселенің алдын алудың нусқаулары жайлы айтылған. Әзірге сіз білу керек жайт, ол С # бірнешеқайта жүктелген әдістердің параметрлеріне байланысты минимальді қорғанысты қамтамасыз етеді:

· Жеткіліксіз, екі әдіс тек бір бірінен қайта оралатын ұйғарымның типімен ғана ажыратылады

· Жеткіліксіз, екі әдіс тек бір бірінен параметрлердің спецификациясы ref және out пен ғана ажыратылады.


8. Конструкторлар және статикалық конструкторлар. Тек оқуға рұқсат етілген өріс.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: