- •1. .Net архитектурасы.Net-ке бағытталған кодтын орындалуы және компиляциясы. Microsoft Intermediate Language (msil) тілінің артықшылықтары.
- •3. С# программалау тілінің негізі. Айнымалыларды жариялау. Айнымалыларды инициялизациялау олардың көріну облысы.
- •5. Консольді енгізу-шығару үшін System.Console-ді пайдалану. Процессор директивтері.
- •6. Объекті/ ж/е типтер. Структура және кластардың өзара айырмашылық/ы. Класс мүшелері.
- •8. Конструкторлар және статикалық конструкторлар. Тек оқуға рұқсат етілген өріс.
- •9. Жекеленген кластар. Статикалық кластар. Object класы.
- •10. Мұралау. Мұралау типі. Іске асыруды (реализация) мұралау.
- •11. Мұралау. Рұқсат модификаторлары. Интерфейстер.
- •12. Жалпылау. Жалпылауға шолу. Жалпыланған кластар құру.
- •13. Жалпыланған кластар құралдары. Жалпыланған интерфейстер.
- •14. Жалпыланған структуралар. Жалпыланған әдістер.
- •15. Массивтер және кортеждер. Жай массивтер. Көпөлшемді массивтер.
- •16. Тісті массивтер. Array класы.
- •17. Массивтер параметр ретінде. Тізім бойынша санау.
- •18. Кортеждер. Құрылымдық салыстыру.
- •20. Мәліметтердің қарапайым типтерін өзара өзгерту. Қаптама(boxing) құралдарымен мәндер типін сілтеме типке өзгерту.
- •21. Сілтеме типтерді келтіру арқылы өзгерту. Стандартты операцияларды қолданушы типтер үшін асыра жүктеу.
- •Vector структурасы
- •22. Келтіру операцияларын қолданушы типтерге қосу.
- •23. Делегаттар. Лямбда-өрнектер. Уақиғалар.
- •24. Сөз тіркесін құру. Жүйелі өрнектер.
- •25. Сөз тіркесін құру. Форматтаушы өрнектер.
- •26.Интерфейстер және коллекциялар типтері. Тізім, кезек және стектермен жұмыс.
- •27. Сортталған және жүйелі тізімдермен жұмыс. Жиындар мен сөздікті пайдалану.
- •29. Қателер және ерекшеліктер. Ерекшеліктерді өңдеу.
- •30. .Net ядросы. Деректер базасына қосылу. Команданы орындау.
Vector структурасы
Vector структурасы үш өлшемді математикалық векторды қарастырады.
Үш өлшемді вектор – бұл бір нәрсенің қаншалықты алыс орналасатынын хабарлайтын үш түрлі сан. Бұл сандарды қамтитын айнымалылар x, y және z деп аталады. x –шығыс, y – батыс, z – жоғары.
Қосымша қайта жүктеулерді қосу
Векторларды бір-бірімен салыстыруға болады. Векторды скалярға көбейту оның әрбір элементін скалярға көбейтуді білдіреді. Мысалы, 2*(1.0, 2.5, 2.0) (2.0, 2.5, 4,0)-ді қайтарады.
public static static Vector operator * (double Ihs, Vector rhs )
{
return new Vector (Ihs * rhs.x, ihs * rhs.y, his *rhs.z );
}
Салыстыру операциясын қайта жүктеу
C#-та 6 салыстыру операциясы бар, оларды 3-ке бөлуге болады:
== және !=
> және <
>= және <=
22. Келтіру операцияларын қолданушы типтерге қосу.
Анық келтіруде кодта сіз анық түрде жақша ішіне типтерін көрсете отырып,меншіктейсіз.
Ing I=3;
Long I=I; //анық
Short s=(short)I; //анық емес
Алдын ала анықталған мәліметтер типіне келтірулер нәтижесінен туындаған жоғалтулар тәуекелі пайда болғанда анық келтірулер қажет болады.
Анық және анық емес қолданушы кетіру операциялары SimpleCurrency мысалымен көрсетілген.
Struct Currency
{
public uint Dollars;
public ushort Cents;
public Currency(uinit dollars,ushort cents)
{
this.Dollars=dollars;
this.Cents=cents;}
public override string ToString()
{return strong.Format(“${o}.{1,-2:00}”,Dollars,Cents);}
}}
Таңбасыз типтердің Dollar және Cents қатарларында қолданылуы Currency экземпляры тек оң мәндерді қамтитынын білдіреді.
Келтірулерді анық деп жарияласақ,сіз құрастырушыларға мәліметтер жоғалтулары болатынын ескерту қажет.Тестті мысал жазып көрейік,бізде Main()әдісі бар.Ол Currency экземплярын құрады және де бірнеше қайта өңдеуді жүзеге асырады.
Static void Main()
{
try
{Currency balance=new Currency(50,35);
Console.Writeline(balance);
Console.Writeline(“баланс равен”+balance);
Console.Writeline(“баланс равен(ToString() қолдана)”+balance.ToString());
Float balance2=balance;
Console.Writeline(“После преобразования в float=”+balance2);
Balance=(Currency)balance2;
Console.WriteLine(“После преобразования обратно вCurrency=”+balance);
Console.WriteLine(“После преобразуем значение вне допустимого диапазона”+”-$50.50 в Currency:”);
Checked{
Balance=(currency) (-50.50);
Console.WriteLine(“Результат:”+balance.ToString());
Catch (Exception e)
{Console.WiteLine(“Возникло исключение:”+e.Message);
}}
Код дұрыс жасамайтыны түсінікті.Шешімі келтіру операциясында және checked блогында.Осы өзгертулерді енгізссек,келесі кодты аламыз.
public static explicit operator Currency(float value)
{Checked {
Uint dollars=(uint) value;
Uchort cents =Convert.ToUint16((value-dollars)*100;
Return new Currency(dollars,cents);}}
Checked-келтіруді қолдану арқылы жаңа нәтижелерді көрмейміз,себебі бұл бөлімде SimpleCurrency мысалында бірнеше модификациялар қажет.
23. Делегаттар. Лямбда-өрнектер. Уақиғалар.
Делегаттар.
Делегат — бұл тәсілдерге сілтемелерді сақтауға арналған класс түрі. Делегатты кез кезген класс тәрізді параметр ретінде беруге, осыдан кейін ондағы инкапсуляцияланған тәсілді шақыруға болады.
Делегаттар оқиғаларды қолдау үшін, сонымен қатар, тілдің тәуелсіз конструкциясы ретінде қолданылады.
Делегаттың сипаттамасы оның көмегімен шақырылуы мүмкін тәсілдер сигнатурасын анықтайды:
[ атрибуттар ] [ спецификаторлар ] delegate тип аты([ параметрлер ])
Делегатты сипаттау мысалы:
public delegate void D ( int i );
Делегаттың базалық класы System.Delegate болып табылады
Делегаттар, негізінен, келесі жағдайлар үшін қолданылады:
шақырылған тәсілді компиляция кезінде емес, программаның орындалуы кезінде динамикалық түрде анықтауға мүмкіндік алу;
объектілер арасында «шығу көзі — бақылаушы» типі бойынша байланысты қамтамасыз ету;
оларға басқа тәсілдерді беруге болатындай универсалды тәсілдерді құру (кері шақырулар механизмін қолдау).
Делегатты параметрлер тізімі арқылы беру
namespace ConsoleApplication1 {
public delegate double Fun( double x ); // делегатты жариялау
class Class1 {
public static void Table( Fun F, double x, double b )
{ Console.WriteLine( " ----- X ----- Y -----" );
while (x <= b)
{ Console.WriteLine( "| {0,8} | {1,8} |", x, F(x));
x += 1; }
}
public static double Simple( double x ) { return 1; }
static void Main()
{ Table( Simple, 0, 3 );
Table( Math.Sin, -2, 2 ); // new Fun(Math.Sin)
Table( delegate (double x ){ return 1; }, 0, 3 );
}}}
Лямбда-өрнектер.
Лямбда-өрнектер – бұл өрнек ағашын немесе делегаттар типін құруға қолданылатын анонимді функция. Лямбда-өрнегі арқылы локальді функция жазуға болады, оны кейін аргумент ретінде немесе мән қайтару үшін басқа функцияларға беруге болады. Лямюда-өрнектер әсіресе LINQ сұраныстарын жазғанда пайдаланылады. Лямбда өрнекті құруда кіріс параметрлерін сол жақтан және блок мағынасы немесе басқа бағытта нәтижесі көрсетіледі. Келесі мысалдағыдай:
delegate int del(int i);
static void Main(string[] args)
{ del myDelegate = x => x * x;
int j = myDelegate(5); //j = 25}
Уақиғалар.
Оқиға — кластың басқа объектілерге (бақылаушыларға) өзінің күйінің өзгеруі туралы хабарламалар жіберуіне мүмкіндік беретін класс элементі.
Бақылаушы болу үшін объектінің оқиғалар өңдеушісі және ол оқиғалар өңдеушісін шығу көзі объектісінде тіркеу керек.
Оқиғалар механизмі
Оқиғалар делегаттар негізіде құрастырылған: делегаттардың көмегімен оқиғаларды өңдеуші тәсілдер шақырылады. Сондықтан класта оқиғаны құру келесі бөлімдерден тұрады:
оқиғалар өңдеушілерінің сигнатурасын анықтайтын делегатты сипаттау;
оқиғаның сипаттау;
Оқиғаны тудыратын тәсілді (тәсілдерді) сипаттау.
Оқиғаның синтаксисі:
[ атрибуттар ] [ спецификаторлар ] event тип аты
Оқиғаларды өңдеу хабарламаны алушы кластарда орындалады. Ол үшін осы кластарда сигнатурасы делегат типіне сәйкес келетін оқиғаларды өңдеуші әдістер сипатталады. Хабарлама алғысы келетін әрбір объект (класс емес!) жіберуші объектіде осы тәсілді тіркеуі тиіс.
Оқиға — бұл программист үшін ыңғайлы абстракция. Шын мәнінде, ол ішінде делегат экземпляры құрылатын жабық статикалық кластан және өңдеушіні осы делегат тізіміне қосуға және одан жоюға арналған екі тәсілден тұрады.
Сыртқы код оқиғалармен бір сипатта ғана жұмыс істей алады: өңдеушілерді тізімге қосу немесе тізімнен өшіру, себебі кластан тыс тек += және -= операцияларын қолдануға болады. Бұл операциялар нәтижесінің типі — void, яғни ол арифметикалық типтер үшін күрделі меншіктеу операцияларынан өзгеше болып келеді. Өңдеушілер тізіміне басқаша қатынас құру тәсілдері жоқ.
