Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ТехПр / СРС мал.динюстр

.docx
Скачиваний:
10
Добавлен:
24.03.2016
Размер:
53.58 Кб
Скачать

Тақырыбы: Мәліметтер және динамикалық құрылымдар.

Си тіліндегі мәліметтер құрлымы.

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

struct <r name>

{

<type> <fname>;

…………

<type> <fname>;

}

мұндағы r name - структура типінің аты, структура типінің атын көрсетпесе де болады, { } жақшада структура элементтерінің тізбегі келтірілген және әрбір элементтің типі көрсетілген. Структуралық шаблон анықталғаннан кейін структуралық айнымалының анықталуы келесі түрде жазылады:

struct <rname> <vnames>;

vnames - структуралық айнымалының аты.

Мысал:

struct sved

{

char fam[25];

char adr[20];

int gr;

};

struct sved inf;

Структуралық шаблонды функция анықталуының ішінде немесе функцияның сыртында келтіруге болады. Функцияның ішінде келтірілген шаблон осы функцияның ішінде ғана пайдаланылуы мүмкін. Егер структуралық шаблон функцияның сыртында орналасқан болса, онда бұл шаблон оның анықталуынан кейін орналасқан программаның бірнеше функцияларында қолданылуы мүмкін. Мысалы, басқа бір функцияның ішінде inf1 атты басқа структуралық айнымалыны келесі түрде анықтауға болады:

inf1 -struct sved inf1;

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

struct

45

{

char fam[25];

char adr[20];

int gr;

} inf;

Егер структуралық шаблон бір реттен көп қолданылса, онда әдетте структура типінің атымен берілетін форманы қолданады.

Структураларда инициалдау. Сыртқы және статикалық структуралық айнымалыларды инициалдауға болады. Структуралық айнымалының сыртқы типке жататыны шаблонның анықталған орнына байланысты емес, осы айнымалы программаның қандай жерінде анықталғанына байланысты. Келесі бар деп жорамалдайық:

static struct sved inf;

Бұл жағдайда статикалық жады қолданылады және структураны келесі

түрде инициалдауға болады:

static struct sved inf= {“Попов”,

“Сатпаева, 20”,

1978}

Мысал: (доступ к элементам структуры)

#include <stdio.h>

main()

{ struct

{ char fam[25];

char adr[20];

int gr;

} inf;

printf(“Введите фамилии : \n”);

gets(inf.fam); /*доступ к элементу fam*/

printf(“Введите адрес: \n”);

gets(inf.adr);

printf(“Введите год рождения : \n”);

scanf(“%d”,&inf.gr);

printf (“%s, %s , %d\n”, inf.fam, inf.adr, inf.gr); }

Структуралардан құрылған массивтер. Есептерді шығару барысында структуралардан құрылған массивте пайдаланылады, яғни структуралық айнымалы массивтің элементі болып табылады. Структуралардан құрылған массивтер келесі түрде баяндалады:

struct sved inf[10];

sved типті структура inf[10] массивтің элементі болып табылады. Структуралардан құрылған массивтің элементтерін анықтағанда бөлек алынған структура жағдайындағы сиықты структураның аты структура элементінің атынан нүкте “.” (элементті алу операциясы) символы арқылы бөлектенеді.

Тақырыбы: Мәліметтер және динамикалық құрылымдар.

Мәліметтердің динамикалық құрлымы.

Мәліметтердің динамикалық структурасы-өлшемдері программаның орындалу барысында өзгеретін (өсетін немесе кемитін) мәліметтер структурасы. Байланысқан тізім- кез келген орнында қоюды және жоюды іске асыруға болатын мәліметтер элементтерінің «тізілген қатар» жиынтығы. Стектер қою және жоюдың орындалуына тек қана стектің бір ұшынан -үстінен рұқсат береді. Кезектер деп күту сызығын айтуға болады. қою кезектің соңында, ал жою-кезектің басында іске асады. Екілік бұтағы тез іздеуді және мәліметтерді сұрыптауды жеңілдетеді, мәліметтер элементтерінің қайталануын тиімді жояды, каталогтардың файлдық структурасын және өрнектерді машиналық тілге компиляциялауды ұсынады. Өздеріне сілтемелейтін структуралар. Өздеріне сілтемелейтін структуралар элемент ретінде сол типке сілтемелейтін көрсеткішті алады.

Мысалы,

struct node {

int data;

struct node *nextptr;

};

struct node типін баяндайды. Struct node типті структура екі элементтен тұрады: бүтін data және nextPtr көрсеткіш. NextPtr элементі struct node типті структураға сілтемелейді. NextPtr элементін кейде байланыстырушы деп атайды, яғни nextPtr элементін struct node типті структураны осы типтес басқа структурамен байланыстыру үшін қолданады.

Жадыны динамикалық үлестіру. Мәліметтердің динамикалық структурасын құру және қолдану жадыны динамикалық үлестіруді талап етеді-жаңа түйіндерді сақтау және керексіз болып қалған жадылар блоктарын босату үшін орындалу процесінде қосымша жадыны алу мүмкіндіктері. Динамикалық жадымен бөлінетін максималды өлшем компьютердің мүмкіндікті физикалық жадысымен немесе виртуальді жадысы бар жүйедегі мүмкіндікті виртуальді адрестік кеңістіктікпен анықталады. Жадыны динамикалық үлестіру үшін malloc және free функцияларын, сондай-ақ sizeof операциясын қолдану қажетті. Malloc функциясын void* типті жадысына бөлінетін көосеткішті қайтару және бөлу қажетті байт санының аргументі ретінде қолданады. void* көрсеткішін кез келген айнымалы-көрсеткішке меншіктеуге болады. Malloc функциясы әдетте sizeof операциясымен бірге қолданылады. Егер жадының қажетті саны болмаса, онда malloc NULL көрсеткішін қайтарады. Free функциясы жадыны босатады, яғни жады жүйеге қайтарылады және келешекте оны қайтадан ерекшелейді(бөледі). Байланысқан тізімдер. Байланысқан тізімдер-бұл түйін деп аталаты өзіне сілтенетін структуралардың және көрсеткіш-байланыстармен біріккен сызықты жинағы. Байланысқан тізімге қатынас тізімнің бірінші түйінінде көрсеткішпен қамтамасыз етіледі. Келесі түйіндерге қатынас әрбір түйінде сақталатын байланысқан көрсеткішпен орындалады. Байланысқан көрсеткіш жалпы келісіммен тізімнің соңғы түйінінде тізімнің соңын білдіріп, NULL-мен орнатылады. Мәліметтер байланысқан тізімде сақталады, динамикалық- әрбір түйін қажеттілігіне қарай құрылады. Түйін басқа структуралармен қоса кез келген типті мәліметтерден тұра алады. Байланысқан тізім структура қанша мәліметтер элементтерінен тұратыны алдын-ала белгісіз болғанда ыңғайлы. Егер әрбір жаңа элементті сәйкес тізімнің позициясына орналастырса, онда байланысқан тізімдер сұрыпталған түрде болуы мүмкін.

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

Кезектер. Кезекте түйіндер басынан жойылады, ал кезектің соңынан (хвост) қосылады. Осы себепті жиі кезектерді соңғы келді-бірінші шықты (LIFO) типіндегі мәліметтер структурасы деп атайды.

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

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

ГЛОССАРИЙ

1. ASCII - символдар кодтарының стандартты кестесi.

2. Алгоритм - берiлген деректердiң дәйектi нәтижеге түрлену жолын

көрсететiн ережелер мен нұсқаулар.

3. Блок-схема - алгоритмнiң графиктiк бейнеленуi.

4. Жазба - әртүрлi типтi өрiстерден тұратын мәлiметтердiң тобы.

5. Компилятор - программаның мәтінін компьютерге түсiнiктi

машиналық кодтарына түрлендiретiн программа.

6. Идентификатор - әрiппен басталып, әрiптер мен цифрлар жиынынан

тұратын тiзбек.

7. Программа - алгоритмнiң компьютерге түсiнiктi таңбада жазылуы.

8. Операторлар - программаға енетiн нұсқаулар.

9. Айнымалы шамалар - программа орындалу барысында мәндерi өзеретін шамалар.

10. Тұрақтылар - алдын ала мәнi берiлетiн, программа орындалуы

барысында мәндерiн өзгертпейтiн шамалар.

11. Қосалқы программа - жеке программа түрiнде бөлек жазылған, қажет

кезiнде оған оралып, оны пайдаланып отыруға болатын негiзгi программаның

арнайы бөлігі.

12. Деректива - процессор алдындағы команда.

13. Массив - бір деңгейлі мәліметтер жиынтығы.

14. Модуль - автономды, тәуелсіз ішкі программалар кітапханасы.

15. Объект - айнымалы мен қатар, оларды өңдеу тәсілдері бар

программалық бірлік.

16. Операнд - әрекет орындалып жатқан операнд.

17. Процедура - әртүрлі әрекеттер орындалып, табылған мәнді басты

программаға қайтармайтын ішкі программа.

18. Рекурция - осы ішкі программадан программа шақыру үшін

қолданылатын программалау тәсілі.

19. Көрсеткіштер - айнымалының адресін анықтайтын айнымалы.

20. Файл - ат берілген жады бөлігі.

21. Функция - табылған мәнді басты программаға қайтаратын ішкі

программа.

22. Цикл - бірнеше ұқсас опрацияларды орындау үшін қолданылатын

программалау тәсілі.

Соседние файлы в папке ТехПр