Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Билет №30






1. Қ ұ рылым – бұ л айнымалылармен жұ мыс істеу ың ғ айлы болу ү шін бір атауғ а топтастырылғ ан бір немесе бірнеше айнымалылыр (ә р тү рлі болуы мү мкін). Қ ұ рылымдар кү рделі мә ліметтерді (ә сіресе ү лкен программаларда) ұ йымдастыруғ а кө мектеседі жә не ө зара байланысқ ан айнымалылар тобын жиынның жеке элементіндей емес, бір тұ тас ретінде тү сіндіреді.

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

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

«Нү кте» қ ұ рлымының декларациясы келесі тү рде болады:

structpoint

{ intx; \\ декларация тізімі фигуралы жақ шада

inty;

};

point – бұ л қ ұ рылым тегі (аты) (tag – ярлык, этикетка).

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

Қ ұ рылымда тізілген айнымалылар мү шелер деп аталады. Тегтер мен мү шелердің аттары программаның кә дімгі айнымалыларының аттармен сә йкес келуі мү мкін. Мү шелердің аттары ә ртү рлі қ ұ рлымдарда кездесуі мү мкін..

Қ ұ рлым декларациясы – бұ л тип.

struct {…}x, y, z;

жазбасы қ ұ рлымдық типтің ү ш айнымалыларының сипаттамасын білдіреді.

Айнымалылар тізімінен тұ рмайтын қ ұ рылым декларациясы жадыны резервке алмайды: ол тек шаблонды немесе қ ұ рылым ү лгісін сипаттайды. Егер қ ұ рылымның тегі болмаса, онда осы тегтерді объектілерді анық тауда қ олдануғ а болады. Мысалы, struct point pt; декларациясы struct point типті pt қ ұ рылымдық айнымалыны анық тайды.Автоматты қ ұ рылымдарды (auto жады класының қ ұ рлымы) сә йкес келетін типтегі қ ұ рылым тү рінде нә тижені қ айтаратын меншіктеумен немесе функцияғ а айналдырумен инициализациялауғ а болады.

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

Қ ұ рылымдық объектілерді функцияғ а берудің ү ш тә сілі бар:

компоненттерді (мү шелерді) жеке беру;

барлық қ ұ рылымдарды тү гелдей беру;

кө рсеткішті қ ұ рылымғ а беру.

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

 

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

Келесі бірнеше жолдар * жә не & операторлары қ алай қ олданылатынын кө рсетеді.

ip=& x; // кө рсеткішке х айнымалысының адресі меншіктелген ip - х-ті кө рсетеді

y=*ip; // y енді 2-ге емес, 1-ге тең

*ip=0; // х енді 0-ге тең

ip=z; // ip - z (бастапқ ы) массивінің 0 –ші элементін кө рсетеді.

ip = & z [5]; // ip - енді z массивтің 5 элементін кө рсетеді.

Бұ дан кө рсеткіш айнымалысы декларацияның синтаксисі, бұ л айнымалы кездесуі мү мкін болатын " синтаксис” ө рнегіне бейімделеді. Кө рсетілген принципті функцияны сипаттау қ атынасында да қ олданамыз. Мысалы, double *dp, atof(char*) жазбасы *dp жә не atof (s) ө рнегі double типінен екендігін, ал atof функциясының аргументі char-дың кө рсеткіші (нақ ты тү рде, стрингті кө рсету) екенін білдіреді.

Кө рсеткішке берілген типтің объектісіне ғ ана жіберілуіне рұ қ сат етілген.

void-тың кө рсеткіші кез-келген типті объектіге сілтенуі мү мкін, бірақ мұ ндай кө рсеткішке сілтемені ашу операторын қ олдануғ а болмайды.

Кө рсеткіштердің ө зі айнымалылар болғ андық тан, мә тінде олар сілтемені ашу операторынсыз да кездесуі мү мкін.

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

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

Программада сұ рыптауды екі реттелмеген элементтердің орнын ауыстыратын swap функциясы арқ ылы орындалатынын қ арастырайық.

Егер swap функциясы келесі тү рде анық талса:

void swap (int x, int y)

{ int temp;

temp=x; x=y; y=temp;

}

онда swap(a, b)-ны шақ ыру a мен b айнымалыларына ешқ андай ә сер етпейді, swap олардың мә ндерінің кө шірмесін ғ ана алады.Нә тижеге жету ү шін алмастырулар, swap функциясының формальды параметрлері кө рсеткіш ретінде сипатталуы керек, алфункцияны шақ ырудағ ы аргументтер, swap (& a, & b)-ның сә йкес параметрлерінің адрестерімен кө рсетілуі тиіс..

void swap (int *px, int *py)

{int temp;

temp=*px; *px=*py; *py=temp;

}

3 .jok

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.