Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_Programmalau.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
330.92 Кб
Скачать

36. Конструктор және деструктор ұғымы

Englobj мысалы класс объектісінің өрістерін инициализацияау үшін класс әдісін қолданудың екі тәсілін көрсетеді. Объект өрістерін құру кезінде программа сәйкес тәсілді шақырудан гөрі, автоматты инициализациялау ыңғайлы. Инициализациялаудың мұндай түрі – конструктор деп аталатын ерекше класс әдісінің көмегімен іске асырылады. Конструкторларда бірнеше ерекшеліктер бар. Біріншіден, конструктор аты класс атымен дәл сәйкес келеді. Екіншіден, конструкторда қайтарылушы мәні болмайды. Бұл конструктордың жүйе арқылы шақырылатындығымен түсіндіріледі. Яғни конструктордың мәнді қайтаратын программа немесе функцияның болмайтындығын көреміз. Конструктордың қызметі – класс объектісінің өрістерін инициализациялау.

Мысал : // counter. cpp # include < iostream. h> class Counter { private: unsigned int count; public: Counter ( ) : count (0) {/*пустое тело*/} void inc_count ( ) { count++;} int get_count ( ) { return count; } }; int main( ) { Counter c1, c2; cout << ”n c1 = “ < cout << ”n c2 = “ < c1. inc_count ( ); c2. inc_count ( ); cout << ”n c1 = “ < cout << ”n c2 = “ < count << endl; return 0; } Конструкторда инициализация әдіс прототипі мен функция денесінің арасында орналасқан және қос нүктемен ажыратылады. Инициализацияланатын мән өріс есімімен кейінгі жақшада орналасқан. Counter ( ) : count (0) { } Егер класс өрістерінің бірнешеуін инициализациялау керек болса, онда мәндер үтірмен бөлініп, инициализация тізімі құрылады. Программа жұмысының қорытындысы: с1=0 с2=0 с1=1 с2=2 Конструктордың дұрыс жұмыс істеп тұрғанына көз жеткізу үшін, хабарлама басуын талап етеміз: Counter ( ) : count (0) {cout << ” n Конструктор “ ;} Программа жұмысының нәтижесі: Конструктор Конструктор с1=0 с2=0 с1=1 с2=2 Объект құрыларда ерекше класс әдісі – конструктор шақырылады. Объектіні жоюда автоматты түрде шақырылатын әдіс деструктор деп аталады. Деструктор есімі конструктор есімімен сәйкес келеді және есім алдында ~ тильда белгісі қойылады. Объектілерді бірнеше тәсілмен жоя алмайтындықтан деструкторлар мәндерді қайтармайды және аргументтері болмайды. Деструктордың негізгі жұмысы – объект құруда конструктормен бөлінген жадыны босату. Class Foo { private: int data; public: Foo ( ): data (0) { } ~ Foo ( ) { } }; Келесі мысалда асыра жүктелген конструктор, әдістердің кластың сыртында анықталуы, объектілерді функцияның аргументі ретінде қабылдауы көрсетілген. // englcon. cpp # include class Distance { private: int feet; float inches; public: Distance ( ) : feet (0) , inches (0.0) { } Distance ( int ft , float in ) : feet (ft) , inches ( in) { } void getdist ( ) { cout << ” n футы енгізіңіз = “ ; cin >> feet; cout << “ n дюймды енгізіңіз = “; cin >> inches ; } void showdist ( ) { cout << feet < void add_dist ( Distanse, Distanse ); // прототип }; void Distanse: : add_dist ( Distanse d2, Distanse d3); { inches = d2. inches + d3. inches; feet = 0; if ( inches > = 12.0) { inches — = 12.0 feet ++; } feet + = d2. feet + d3. feet; } int main ( ) { Distance dist1, dist3; Distance dist2 (11, 6.25); dist1. getdist ( ); dist3. add_dist ( dist1, dist2 ); cout << ”n dist1 = “; dist1. showdist ( ); cout << ”n dist2 = “ ; dist2. showdist ( ); cout << ”n dist3 = “ ; dist3. showdist ( ); cout < return 0; } Мысалда бір Distance() есімімен берілген екі конструктор бар, сондықтан конструктор асыра жүктелген болып табылады.

37. Форматталған енгізу, шығару операторлары(С).Мұнда мәліметтердің бірнеше негізгі типтері қолданылады. Олар:

  • char (8 бит) – символдық, яғни таңбалық тип,

  • short – қысқа бүтін сан,

  • int – бүтін сан типі,

  • long – екі еселенген бүтін сан,

  • unsigned – таңбасыз бүтін сан,

  • float – нақты сан типі, яғни жылжымалы нүктелі сандар,

  • double – екі еселенген нақты сан типі,

  • long double – ұзартылған, әрі екі еселенген нақты сан типі.

Алғашқы төрт тип бүтін сандарды сипаттау үшін қолданылады. Төмендегі кестеде әр түрлі типтердің ұзындықтары көрсетілген.

Си тілінің ішкі құрамындағы мәліметтер типтері мен олардың

ені (ұзындығы) 2.5 кесте

Мәлімет типі

Ұзындығы (бит – байт)

Сандар диапазоны

char

8 бит – 1 байт

-128 ... +127

unsigned char

8 бит – 1 байт

0 ... 255

short int

16 бит – 2 байт

-32768 ... 32767

unsigned short

16 бит – 2 байт

0 ... 65 535

int

16 бит – 4 байт

-32768 ... 32767

unsigned [int]

32 бит – 4 байт

0 ... 4294967295

long

32 бит – 4 байт

-2 147 483 648 ... 2 147 483 647

unsigned long

32 бит – 4 байт

0 ... 4 294 967 295

float

32 бит – 4 байт

3.410-38 ... 3.41038

double

64 бит – 8 байт

1.710-308 ... 1.710308

long double

80 бит – 10 байт

3.410-4932 ... 3.4104932

Printf және scanf функциялары

Си тілінде сыртқы ортамен мәліметтер алмасу <stdio.h>енгізу-шы­ға­ру функция­лары кітапханасын пайдалану арқылы орындалады. Ол тақы­рып файлы ретінде былай жазылады:

#include <stdio.h>

printf() функциясы мәліметтерді экранға шығару үшін қолданы­лады. Оның жалпы жазылу түрі:

printf(<формат тіркесі>,<аргументтер тізімі>);

(<формат тіркесі> – қостырнақшамен (”) шектеліп, аргументтердің қалай бейнеленетінін көрсетіп тұрады, экранға (баспаға) шығару алдында барлық аргументтер формат специ­фикациясына сәйкес түрлендіріледі, спецификация % символымен басталады және мәліметтер типін, оларды түрлендіру тәсілін көрсететін бір әріп жазы­лады. Объектілер ретінде айнымалылар, константалар, өрнектер қолданылуы мүмкін. Мысалы:

printf (“ Пи санының мәні = %f\n”, pi);

Формат тіркесінде мыналар болады:

  1. мәтін ретінде шығарылатын символдар тіркесі;

  2. түрлендіру спецификациялары;

  3. басқару символдары.

Әрбір аргументке өз спецификациясы сәйкес келуі тиіс, олар:

%d – бүтін ондық сан шығарылуы тиіс,

%i – бүтін ондық сан шығарылуы тиіс,

%f – жылжымалы нүктелі нақты ондық сан ([-]dddd.dddd ) жазылып шығады,

%e – жылжымалы нүктелі экспоненциалды сан ([-]d.ddddedd) шығарылады,

%E – жоғарыдағы сияқты, тек е орнына Е ([-]d.ddddEdd) шығарылады,

%c – бір символ шығарылуы тиіс,

%s – символдар тіркесі (қатары) шығарылуы тиіс,

%g – нақты сан, сан ұзындығына қарай %e немесе %f қолданыла алады,

%u – таңбасыз ондық бүтін сан жазылып шығады,

%o – таңбасыз бүтін сегіздік сан шығады,

%x – таңбасыз бүтін он алтылық сан шығады.

\n – келесі жаңа жолға көшуді атқаратын басқару символы.

Мысалы:

%9i – бүтін сан ені 9 цифрдан тұрады, сан ені аз болса, оның сол жағында бос орындар орналасады.

%9.3f – нақты сан ені 9 цифрдан тұрады, оның 3 таңбасы бөлшекке беріледі, сан ені аз болса, оның сол жағында бос орындар орналасады.

Әрбір спецификация % символынан басталып, түрлендіру символымен аяқталады. Ол екеуінің ортасында мыналар тұруы мүмкін:

- минус таңбасы, аргумент мәні сол жақ шетке ығыстырылып жазылады.

- цифрлар, бүтін санның жалпы орналасу енін анықтайды. Сан осы енге немесе одан артық болып шығарылады. Егер аргумент ені көрсетілген еннен аз болса, онда ол бос орындармен толтырылып жазылады.

- нүктеге дейін санның жалпы ені, нүктеден соң бөлшек сандар ені көрсетіледі.

- L модификаторы, сәйкес аргумент мәні INT емес LONG екенін білдіреді.

scanf()енгізу функциясы жоғарыда қарастырылған түрлендіру спецификация­сының көбін пайдаланады.

scanf (<формат тіркесі>,<аргументтер тізімі>);

Аргументтер ретінде адрес нұсқауыштары пайдаланылады. Мысалы:

scanf("%d%f", &x,&y);

Кейбір айырмашылықтарын атап өтейік.

  1. %е және %f спецификациялары енгізу кезінде бірдей болып табылады;

  2. short типті бүтін санды енгізу кезінде %h спецификациясы қолданы­лады.

ЕСКЕРТУ. Айнымалы адресін беру үшін адрестерді жазғанда, айныма­лы адресін анықтау үшін & символы қолданылады. Ал тіркестік (жолдық) айнымалыны енгізгенде, & символы жазылмайды.

Енді санның дәрежесін есептейтін программа құрайық.

/* Санды дәрежелеу */

#include <conio.h>

#include <stdio.h>

#include <math.h>

main()

{

float x,y,s;

clrscr();

printf("\n х-ті және оның дәрежесін-у енгізіңіз :\n");

scanf("%f%f",&x,&y);

s=pow(x,y);

printf("\nНәтижесі s=%9.2f",s);

}

38.Форматталмаған енгізу, шығару операторлары(С++).

39.Тұрақтылар түрлері және оның сипатталуы(С/С++)Тұрақты немесе константа деп программаның орындалу барысында мәндері өзгеріссіз қалатын шамаларды айтады. Тіл ережесі бойынша бірнеше констант типтері болады, мысалы, символдық, бүтін, нақты константтар, т.б.

Айнымалылар деп программаның орындалу барысында әр түрлі мәндерді қабылдай алатын шамаларды айтады. Әрбір айнымалы мен констант программа алдында сипат­талуы тиіс. Олардың компьютер жадында алатын орны типтеріне байланысты болады. Константтар мен айнымалылар идентификатормен белгіленеді.

40. Операциялар және оның түрлері(С/С++).Арттыру және азайту операциялары: ++ және - -. Бұл операциялар кез келген операторға 1-ді қосуға немесе азайтуға мүмкіндік береді. Көрсетілген операциялардың екі формасын ажыратады, постфикстік және префикстік. Олар өз арасында тек қай кезде арттыру немесе азайту болатынына байланысты ажыратылады. Арттыру және азайту операциялары өрнектің ортасындада орындалуы мүмкін, және де осы операциялар өрнек есептелгеннен кейін де, есептелмей тұрып та орындалуы мүмкін. Мысал қарастырайық:

Мысал: L=10 болсын;

онда, х=L++; x айнымалысына 10 мәнін меншіктеу болады.

х=++b; x айнымалысына 11 мәнін меншіктеу.

Екі жағдайда да L 11-ге тең болады.

2-мысал:

Sum=a+b++;

Sum=a+ ++b;

b++ - постфикстіктүр: b айнымалысыоныңмәніқолданылғаннанкейін өзгереді.

++b - префикстіктүр: b айнымалысыоныңмәніқолданылмайтұрып өзгереді.

Біріншіжағдайда: “a және b-нықосу, нәтижесін sum-ғаменшіктеужәне b айнымалысынбіргеарттыру”.

Екіншіжағдайда: “b айнымалысынбіргеарттыру, a және b-нықосу, жәненәтижесін sum-ғаменшіктеу”.

3-мысал:

{ maіn()

іnt a, b, s=0;

a=b=g;

s=a+b++;

prіntf("%d %d\n", s, b)

s=a+ ++b;

prіntf("%d %d\n", s, b)

}

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

41. Математикалық функциялардың қолданылуы(С/С++).

Abs(x)-аргументтің абсолют шамасы (модулі)Abs(-3,5)=3,5

arcTan(X)-аргументтің радианмен алынған аргтангенсі arcTan(1)=7,8539816340E-01

cos(X)-аргументтің радианмен алынған косинусы cos(PI/3)=5.0000000000E-01

exp(X)-аргументтің экспонентасы (Е-нің Х дәрежесі)exp(1)=2.71828182852E+00

LN(X)-натуралдық логарифм LN(10)=2.3025850930E+00

PI-PIсанының мәні PI=3.14159526563E+00

Random-0 мен 1 арасындағы кездейсоқ сан

Random(x)-0 мен х арасындағы кездейсоқ сан

Sin(x)-аргументтің радианмен алынған синусы

Sqr(x)-аргументің квадраты

Sqrt(x)-аргументің квадрат түбірі

42. Мәліметтердің бүтін типтері (С/С++). Бүтін типті мәліметтер

Delphi тілінде бірнеше бүтін типтер қарастырылған. Олардың ішінде ең жиі пайдаланылатыны – Integer типі.

Мәліметтер типі

Мән аралығы

Жады форматындағы сандық көрсеткіштер

Integer

Cardinal

Shortint

Smallint

Longint

Int 64

Byte

Word

Longword

-2 147 483 648 -2 147 483 647

0-4 294 967 295

- 128 – 127

-32 768 – 32 767

-2 147 483 648 -2 147 483 647

-263 – 263 – 1

0 -255

0 -65 535

0 -4 294 967 295

32 бит

32 бит

8 бит

16 бит

32 бит

64 бит

8 бит

16 бит

32 бит

Бүтін типті айнымалылар. Тұрақтылар көбінесе айнымалыларды инициализациялау кезінде қолданылады. Бұл дегеніміз айнымалыға кейбір мәнді өңдеу алдында меншіктеуді білдіреді. Мысалы: К2=0; m2=1.

Айнымалыны суреттеу операторларына инициалдауға болады. Мысалы:

Іnt m2=15; Short k2, k3=0; Long l1=25, l2=30;

Unsіgned мәліметтер типі. Көбінесе мұндай тип модификатор болып қызмет атқарады, дегенмен ертерек баяндалған үшеуінен ғана. Мына варианттарды пайдаланылуы мүмкін: unsіgned іnt, unsіgned long. Таңбасы жоқ бүтін айнымалылар қарапайым бүтін айнымалылар сияқты баяндалады және инициалданады.

Unsіgned іnt kol; Unsіgned short s=2;

Char мәліметтертипі. Бұл тип 0-ден 255 диапазонындағы таңбасы жоқ бүтін сандарды анықтайды. Көбінесе, мұндай бүтін бір байт жадыға орналастырылады.

Машинада санды символға және керісінше аударатын бір код пайдаланылады. Көптеген компьютерлерде бұл код ASCІІ. Символдық айнымалыны баяндау үшін char кілтті сөзі қолданылады. Мысалы:

Char s2; Char s2, s3; Char sk=k;

Си тілінің стандартында қабылданған тәртіп бойынша айнымалы мәні және char типті тұрақты тек қана жалғыз символ болуы мүмкін.

Float және double мәліметтер типтері. Есептеу сипатындағы программаларда жылжымалы нүктелі сан жиі қолданылады. Си тілінде және де мәліметтер float типімен баяндалады.

Жылжымалы нүктесі бар айнымалылар бүтін типті айнымалылар сияқты сипатталады және инициалданады. Мысалы:

Float s1, s2; Double s; Float pe=7.52e-7;

Жылжымалынүктеліконстанталар.

Жылжымалы нүктелі константаларды жазудың жалпы түрі мынадай:

-1.15Е+4; 2.52Е-3.

Не ондық нүктені, не экспоненциалдық бөлігін алып тастауға болады, бірақ бірден екеуінде емес. Және де бөлшек бөлігін немесе бүтін бөлігін жазбауға болады, бірақ екеуін бірдей емес. Дұрыс жазылған константаларды көрсетейік:

3.14159; .5; 4Е12; 100.; .7Е-4.

Жылжымалы нүктелі константаны өңдеу процесінде екі еселенген дәлдікті форматта қарастырылады. Мысалға, float типті PR айнымалысы PR=4.5*2.0 операторы орындалу нәтижесінде өзінің мәнін алады деп болжайық.

Бұл жағдайда константа жадыда double типті мәлімет болып жазылады, яғни оған 64 бит орын бөлінеді. Көбейту екі еселенген дәлдікпен есептеледі және сосын float типіне байланысты мөлшерге дейін нәтижені қысқарту жүреді. Осының барлығы сіздің есептеулеріңізді максималды дәлдікті қамтамасыз етеді.

Си тілінде sіzeof деген құрылған операция бар, ол объектінің байт бойынша мөлшерін береді. Мысалы:

Prіntf(“double мәліметтер типі %d байт. \n”, sіzeof(double));

43. Мәліметтердің нақты типтері (С/С++).

Нақты типті мәліметтер

Жиі пайдаланылатын нақты тип Real. Бұндай типті мәліметтерге кез келген таңбалы, ретсіз сандық мәліметтер жатады.

Мәліметтер типі

Мәндер аралығы

Үтірден кейінгі цифрлар саны

Байттар саны

Real 48

Single

Double

Extended

Comp

Currency

Real

2.9*10-39-1.7*1038

1.5*10-45-3.4*1038

5.0*10-324-1.7*10308

3.6*10-4951-1.1*104932

-263+1-263-1

-922 327 203 685 477.5808 –

922 337 203 685 477.5807

5.0*10-324 -1.7*10308

11-12

7-8

15-16

19-20

19-20

19-20

15-16

6

4

8

10

8

8

8

44. Айнымалылардың көріну аймағы (С/С++).Айнымалылардың әрекет ету аймағы

Айнымалылардың әрекет ету аймағы – программаның ағымдағы әрекеттеріне қандай мәліметтердің қатынасуға болатынын анықтайтын қағида. Айнымалылардың үш типі болады: ауқымды, локальді (жергі­лікті) және формальды. Жергілікті айнымалылардың әрекет ету айма­ғы – олар сипатталған программа бөлігі, яғни олар сол функция тұлға­сында ғана белгілі болып табылады. Программаның осы бөлігінен шыққан соң, жергілікті айнымалылар мен олардың мәндері жоғалады.

Формальды айнымалылар – тұтынушы функциясының тақыры­бын­да көрсетілген параметрлер. Формальды параметрлер функция тұлғасында жергілікті айнымалылар сияқты қолданылады. Формальды параметрлердің әрекет ету аймағы – функция тұлғасы болып табы­латын блок.

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

Си тілінде әрбір айнымалы компьютер жадының келесі төрт класының біріне жатуы тиіс, олар – автоматты (auto), сыртқы (extern), статикалық (static), регистрлік (register). Айнымалы класын көрсету үшін оның типі спецификациясының алдына қажетті түйінді сөз (auto, extern, static, register) қоса жазылады. Мысалы, register int a;

Айнымалы үшін жады класы нақты көрсетілмеген жағдайда, ол auto класына жатқызылады.

Си тілінде функцияны шақыру барысында аргументтер өздерінің осы программадағы мәндеріне сәйкес әрекеттер атқарады, яғни функцияға аргументтердің нақты мәндері емес олардың көшірме­лері жіберіледі. Компьютер жадында (стекте) функцияның формальды параметрлері үшін орын бөлінеді және функцияны шақыру кезінде сол бөлінген орындарға нақты аргументтер мәндері орналастырылады. Содан кейін функция осы мәндерді пайдаланады, бірақ функциядан шыққан кезде олар жоғалып кетеді.

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

1- мысал.x және y мәндерінің орындарын ауыстыратын функция­ның анықталуы:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]