Массивтермен жұмыста көрсеткіштерді пайдалану



МАЗМҰНЫ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..2
I. КІРІСПЕ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3
II. НЕГІЗГІ БӨЛІМ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..4
1. Массивтермен жұмыста көрсеткіштерді пайдалану ... ... ... ... ... ... ... ... ..7
2. Мәліметтер структурасын қолдану арқылы программалар құру ... ... ... .8
3. Есептің қойылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..10
4. Есептің Си тілінде шығарылуы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .12
5. Есептің түсіндірілуі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 13
III. ҚОРЫТЫНДЫ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .17
ҚОЛДАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...18
“Си тілінде программалаудың негіздері“ әдістемелік нұсқауы “Бағдарламалау технололиясы” курсы бойынша лабораториялық жұмыстарға арналып құрастырылған. Нұсқау аталған курс бойынша лаборатория жұмыстарының берілуін құрайтын екі бөлімнен тұрады. Нұсқауда келтірілген лабораториялық жұмыстарды толық түрде орындау қажет. Ол студенттің Си тілінде программалауда оның жабдықтарын қолдана білуге, білімін тереңдету мен жетілдіруге септігін тигізеді.
Әдістемелік нұсқаудың бірінші бөлімінде лабораториялық жұмыстардың тақырыптары бойынша, қысқаша теориялық мәліметтер келтірілген, сондай-ақ тапсырмалар варианттары мен Си тіліндегі программаларды құрудың мысалдары келтіріледі және алғашқы алты лабораториялық жұмыстар үшін Си тілінің негізгі амалдары, нұсқаулары мен стандартты функцияларды, қарапайым программаларды құруда қолданылатын күрделі типтерді қолдану жайлы қысқаша меліметтер келтірілген, сондай-ақ бірнеше функциялардан тұратын программаларды құру мүмкіндіктері қарастырылады.
Екінші бөлімде лабораториялық жұмыстарды орындау үшін лабораториялық жұмыстардың тақырыптары бойынша қысқаша теориялық мәліметтер келтірілген, сондай-ақ тапсырмалар варианттары мен Си тіліндегі программаларды құрудың мысалдары лабораториялық жұмыстар бойынша есеп беру мазмұны келтіріледі.
Бұл бөлімде бірнеше функциялардан тұратын программаларды құрастыру. Мәліметтер структурасын өңдеу және файлдық айнымалыларды қолдану арқылы программалар құру.Сондай-ақ көрсеткіштер мен тиімді программаларды құру мақсатында сызба жабдықтарын қолдану варианттары қарастырылады.
1. Р.Уинер Язык ТурбоСи Москва “Мир” 1991
2. Абрамов С.А., Гнездилова Г.Г., Капустина Е.Н., Селюн М.И.
Задачи по программированию.-М.:Наука, 1988
3. Страуструп Б.Язык программирования С++.-СПб. М. Невский диалект- “БИНОМ”, 1998.
4. Дейтел Х., Дейтел П. Как программировать на С++.-М.:ЗАО “Издательство БИНОМ”, 1998
5. Керниган Б., Ритчи Д. И др. Язык программирования Си. Задачи по языку Си.-М. Финансы и статистика, 1985
6. Х. Дейтел, П. Дейтел. Как программировать на С. Введение в С++ и Java. М.: «Бином», 2002.
7. Введение в С++: курс программирования. М.: «Бином», 2002
8. Х. Дейтел, П. Дейтел. С++. Как программировать. М.: «Бином», 2002.

МАЗМҰНЫ

МАЗМҰНЫ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ..2
I.
КІРІСПЕ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .
... ... ... ... ... ... ... ... ... ... ... ... ... 3
II. НЕГІЗГІ
БӨЛІМ ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... .
... ... ... ... ... ... ... ... ... 4
1. Массивтермен жұмыста көрсеткіштерді
пайдалану ... ... ... ... ... ... .. ... ... 7
2. Мәліметтер структурасын қолдану арқылы программалар құру ... ... ... .8
3. Есептің
қойылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .
... ... ... ... ... ...10
4. Есептің Си тілінде
шығарылуы ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... .
...12
5. Есептің түсіндірілуі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 1 3
III. ҚОРЫТЫНДЫ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .17
ҚОЛДАНЫЛҒАН ӘДЕБИЕТТЕР
ТІЗІМІ ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ..18

Кіріспе.

“Си тілінде программалаудың негіздері“ әдістемелік нұсқауы
“Бағдарламалау технололиясы” курсы бойынша лабораториялық жұмыстарға
арналып құрастырылған. Нұсқау аталған курс бойынша лаборатория жұмыстарының
берілуін құрайтын екі бөлімнен тұрады. Нұсқауда келтірілген лабораториялық
жұмыстарды толық түрде орындау қажет. Ол студенттің Си тілінде
программалауда оның жабдықтарын қолдана білуге, білімін тереңдету мен
жетілдіруге септігін тигізеді.
Әдістемелік нұсқаудың бірінші бөлімінде лабораториялық
жұмыстардың тақырыптары бойынша, қысқаша теориялық мәліметтер келтірілген,
сондай-ақ тапсырмалар варианттары мен Си тіліндегі программаларды құрудың
мысалдары келтіріледі және алғашқы алты лабораториялық жұмыстар үшін Си
тілінің негізгі амалдары, нұсқаулары мен стандартты функцияларды, қарапайым
программаларды құруда қолданылатын күрделі типтерді қолдану жайлы қысқаша
меліметтер келтірілген, сондай-ақ бірнеше функциялардан тұратын
программаларды құру мүмкіндіктері қарастырылады.
Екінші бөлімде лабораториялық жұмыстарды орындау үшін
лабораториялық жұмыстардың тақырыптары бойынша қысқаша теориялық мәліметтер
келтірілген, сондай-ақ тапсырмалар варианттары мен Си тіліндегі
программаларды құрудың мысалдары лабораториялық жұмыстар бойынша есеп беру
мазмұны келтіріледі.
Бұл бөлімде бірнеше функциялардан тұратын программаларды құрастыру.
Мәліметтер структурасын өңдеу және файлдық айнымалыларды қолдану арқылы
программалар құру.Сондай-ақ көрсеткіштер мен тиімді программаларды құру
мақсатында сызба жабдықтарын қолдану варианттары қарастырылады.

Массивтермен жұмыста көрсеткіштерді пайдалану.

Жұмыстың мақсаты. Массивтермен жұмыста көрсеткіштерді
пайдалануға машықтану.
Көрсеткіш- басқа айнымалы адресін өзіне сақтайтын айнымалы.
Көрсеткіштер мен адрестер. Көрсеткіш объектінің адресін кұрайтын
болғандықтан, бұл бізге осы обьектіге көрсеткіш арқылы жанама түрде қарым -
қатынаста болуымызға мүмкіндік береді. Мысалға айталық х int типті
айнымалы, ал рх әлдекім құрған көрсеткіш. & ұнарлы операциясы обьектінің
адресін береді, яғни рх=&x нұсқауы px айнымалысына х адресін меншіктейді,
рх х-ке сілтейді деп атайды. &oперациясы тек қана массив элементтері мен
айнымалыларға қолданылады, ал келесідей конструкциялар &(x-1) немесе &3
заңды емес болып табылады. Сонымен қатар регистрлік айнымалылар адресін
алуға болмайды.
Массив. Паскаль программалау тілінде массивтер – бірдей типтегі
мәліметтердің жиыны. Басқаша айтқанда, массив бір атауға біріктірілген
айнымалылардың реттелген тізбегі. Массивті сипаттағанда массив
элементтерінің жалпы санын және элементтердің типін көрсету қажет.
Элементтедің индек арқылы массивтің әрбір элементін бөлек қарастыруға
болады. Массив типін келесі түрдей анықтауға болады:
TYPE тип аты=ARRAY [индекс тип тізбегі] of тип;
тип аты - дұрыс идентификатор.
индекс тип тізбегі - бір немесе бірнеше индекстік типтердің тізбегі,
үтір арқылы жазылған.
тип - элементтер типі.
Си программалау тілінде массив бірдей типтегі айнымалылардың тізбегін
бр бүтін етіп сақтай алады. Массивті хабарлау деп оның атауы мен
элементтерінің типін анықтауды айтады. Ол сондай-ақ массивтегі элементтер
санын да береді. Массив типіндегі айнымалы өрнектерде берілген
спецификациядағы тип мәніне тұрақты ретінде қолданылуы мүмкін. Егер де
сипатталатын массив типі көрсетілмесе, онда int типін қолдану ұсынылады.
Екі өлшемді массивті сипаттау синтаксисі келесі түрде болады:
[сипатталатын массив типі] айнымалы - идентификатор [тұрақты
өрнек] [тұрақты өрнек].
айнымалы – идентификатордың соңындағы квадратты жақшалар массив
типінің белгісі болып саналады. Квадраттық жақшалардағы әр тұрақты өрнек
берілген өлшеудегі массивтің элементтерінің санын анықтайды. Массивтің
элементтерін индекстеу нөлден басталады. Сонымен, массивтің соңғы
элементінің индексі массивтегі элементтер санынан 1-ге кем болады. Массивке
ның элементтерін орналастыратын жады бөлінеді. Массивтің біріншісі
элементінен соңғы элементіне дейін барлығы адрестерінің өсу реті бойынша
тізбектелген жады ұяшықтарында орналасады. Жадыда массив элементтері
арасында бос орындар жоқ.
Массивтерді сипаттағанда элементтердің типі және қажет болса компьютер
жадысының класы көрсетіледі.
Жадының класына байланысты сыртқы, статикалық, автоматтық, регистрлік
болуы мүмкін. Массивтерді сипатағанда тек сыртқы және статикалық массивтер
иницалдануы мүмкін. Сыртқы және статикалық массивтердің сипатталуы келісім
бойынша осы массивтердің элементтері нөлге тең мәндерді қабылдайтынын
ұйғарады.
Унарлы операциясы өзінің операндасын соңғы бағыттағы адрес ретінде
қарастырады және осы адрестен мәнін алуды көздейді. Бұдан мысалға у int
типті айнымалы болса, онда рх айнымалысы сілтеп тұрған адрестің мәнін
қабылдайды у=*px: Келесі екі нұсқаудың жұмысы.
Px=&x;
Y=*px;
Y=x; oперациясымен тең мағыналы. Алдымен айнымалыларды міндетті түрде
сипаттау қажет болады.
Int x, y:
Int *px;
Көрсеткішті int *px сипаттамасын қарастырайық. Бұл жерде *рх
айнымалысының типі int және көрсеткіш. Бұдан шығатыны, егер рх контекстіде
* рх болса , онда ол int типті айнымалыға эквивалентті.
Айнымалыны сипаттау синтаксисі бұл айнымалының кездесуі мүмкін
өрнектерді имитациялайды. Бұл ескертуді күрделі сипаттаулардың барлық
жағдайында ескерген жөн. Мысалы , double atof(), *DF өрнегіндегі Atof ()
*DF айнымалыларының типтері бірдей екндігін көрсетеді.
Бұл сипаттаудан көретініміз, көрсеткіш тек анықталған обьектінің
түрінде ғана сілтей алады. Көрсеткіштер өрнектерге кіре алады.Мысалы, егер
РХ бүтін типті Х-ке сілтейтін болса, онда РХ Х кездесетін кез келген
контексте кездесуі мүмкін.
8=*px + 1 Нұсқауында УХ –тен 1-ге артық мәнді меншіктейді.
Printf(“% D\N”, * PX) өрнегінің ағымдағы мәнін басады.
d=sqrt ((double )*px) өрнегі double X типіне айналдырып, X-тен квадрат
түбір алады.
Y=*px+1 өрнегін қарастырайық, ондағы * және & унарлы
операциялары арифметикалық операндаларымен салыстырғанда, өзінің
операндасымен өте тығыз байланысты болады.Сондықтан, бұл өрнек рх сілтеп
тұрған мәнді алып, ол мәнді бірге арттыра нәтижесін у-ке меншіктейді.
Көрсеткіштерді сол операнда етіп те пайдалануға болады. Егер *px=0
сілтеп тұрса, онда дегеніміз x=0, *px+=1 бірге арттырады, (*px)++ өрнегі
де соған сәйкес. Ақырғы өрнекте жақшалар міндетті түрде болуы тиіс. Егер
оларды қоймаса, онда унарлы операциялар *,++ оңнан солға орындалатындықтан,
РХ бірге артады да , ол сілтеп тұрған айнымалы сол күйінде қалады.
Соңында, көрсеткіштер айнамалы болғандықтан, басқа айнымалылар
сияқты оларға да әртүрлі амалдар қолдана аламыз. Егер көрсеткіштер бір
типті болатын болса, ру =рх дегеніміз мәндерін көшіреді, аяғында ру рх
көрсеткен адреске сілтейді.
Көрсеткіштер мен массивтер. Си тілінде көрсеткіштер мен массивтер
арасында тығыз байланыс бар. Индекстерге қолданған амалдарды көрсеткіштер
көмегімен іске асыруға болады. Олар көрсеткіштермен жұмыста тез жүзеге
асады, бірақ мағынасын түсіну қиынырақ.
Int a [10] өлшемі 10-ға тең бір өлшемді массмвті сипаттайды.
Егер ра бүтін мәнді көрсеткіш болып сипатталса, онда pa=&a[0]
дегеніміз А массивінің 0-дік элементінде ра сілтейді. Бұл деген ра өзінде А
элементінің адресін сақтайды деген сөз. Ал енді x=*pa мәнін Х өзіне
көшіреді.
Массивтің анықталған бір элементіне көрсетсін делік, егер Pa+1
болса, онда ол келесі элементті көрсетеді. Керісінше Pa-1 бір позиция кем
тұрған элементті көрсетеді, ал Pa+1 бір позиция кейін тұрған элементті
көрсетеді.
Мысалға, Ра А-ны көрсетсін делік, онда * (pa+1) мәнін A көрсетеді.
Ал көрсеткішке 1-ді қосудың және көрсеткішке басқа арифметикалық
операциялардың таралуының мағынасы мынада. Көрсеткіш көрсетіп тұрған
обьектінің өсуі жады көлемінің масштабталуына байланысты. Сондықтан, Pa+1
қосылар алдында 1 Ра көрсеткен обьекті көлеміне көбейтіледі.
Индекстеу мен көрсеткіш арифметикасы арасында өте жақын байланыс
бар. Компилятор негізінде көрсеткішті массивтің басты элементіне сілтейді.
Бұдан массив көрсеткішті болады. Яғни, көрсеткіш массив басына көрсететін
болғандықтан былай жазуға болады: pa=a.
Екінші жағынан көрсеткішті индекс арқылы *(а+і) деп сипаттағанда, ол
а(і)ге эквивалентті болатындығын көруге болады.Тек массив атауы мен
көрсеткіш арасында айырмашылық бар. Көрсеткіш айнымалы, сондықтан ра=а және
ра++орынды, ал массив атауы үшін а = ра және а++. P=&a oрынсыз, себебі
массив атауы константа.
Массив атауы функцияға берілгенде, оның бірінші элементі
орналасқан жері беріледі. Функция ішінде шақырған аргумент айнымалы болып
есептеледі, яғни массив атын көрсеткіш ретінде алуға болады. Біз бұны
STRLEN функциясын жаңадан жазғанда қолданайық.

Strlen(s) *return length of string s *
Char *s;
{ int n;
for ( n=0; *s!=’\0’;s++) n++;
return (n);
}
s++ өсу операциясы заңды, себебі айнымалысы көрсеткіш. STRLEN функциясын
шақырғанда, символдық тізбекке қатысы болмайды. Функцияны сипаттағанда,
формальді параметрлерді анықтау мынандай түрде болады.

Char s [];
Char*s;
Бұлар өзара тең мағыналы және ыңғайына қарап пайдалана аламыз.
Массивті бөліп жартысын функцияға беруге болады. Егер ішкі массив
аргументі басын көрсеткіш ретінде алсақ.
Мысалға, а массив болсын, онда f(&a[2]) және f(a+2) f функцияға
a[2] элементінің адресін береді. Себебі, &a[2], a+2, 3-I а элементіне
сілтелінген көрсеткішті өрнектер.
F Функциясына келсек, оның аргументтері тек қана үлкен массивтің
бір бөлігіне көрсетеді ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Символдық және көпөлшемді массивтертер
Массив элементтерінің түрлеріне шектеулер
Меншіктеу операторы, барлық тілде пайдаланылатын негізгі оператор
Динамикалық облыс
Бір өлшемді массивтерді сұрыптау алгоритмдері
Динамикалық айнымалылар құрылымы
Программа жұмысын басқару операторлары
Массив
Спортлото ойыны
Turbo Pascal-да программалау
Пәндер