Көрсеткіштер массиві

Кіріспе
• Көрсеткіштер массиві. Көпөлшемді массивтер.
• Көрсеткіштер массив инициализациясы. Көпөлшемді массивтердің орнындағы көрсеткіштер.

Негізгі бөлім
• Құрылымдар мен функциялар.
• Құрылым массивтері.

Қорытынды
• Әдебиеттер
Си-де функциялар өзінің аргументтері ретінде параметрлер мәнін қабылдайтын болғандықтан, тікелей мүмкіншілік шақырылатын функцияда айнымалыны өзгертуге болмайды.
Қажетті нәтижені алу үшін, шақырылатын программада өзгертілуі тиісті мәнге көрсеткіштерді беру қажет. Бұл жағдайда шақырылатын функция формальды параметрлердің көрсеткіштер ретінде сипатталуы қажет, бұдан параметрлердің мәніне қатынасу олар арқылы жанама түрде жүргізіледі. Формальды параметрлер – шақырылатын функцияда оның программасын шақыратын объектіге қатынасуды жүзеге асыратын көрсеткіштер және осы объектілерді өзгертуге мүмкіндік береді.
Программада сұрыптауды екі реттелмеген элементтердің орнын ауыстыратын 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;
}
Си-де көрсеткіштер мен массивтердің арасында байланыс бар, байланыс өте тығыз болғандығы соншалықты, бұл құралдарды бірге қарастырған дұрыс. Индекстеу операциясынан басқа массивтің элементтеріне қатынасу көрсеткіштерінің көмегімен орындалуы мүмкін және мұндай вариант жылдамырақ жұмыс жасайды.
1 Подбельский В.В., Фомин С.С. Программирование на языке Си:
Учеб. пособие. – 2- е доп. изд. – М.: Финансы и статистика, 2002
1 Подбельский В.В. Язык С ++: Учеб. пособие. – 3- е изд. Дораб . - М.: Финансы и статистика, 1998
2 Культин Н.Б. С/ С++ в задачах и примерах. – СПб.: БХВ – Петербург, 2004
3 Мартынов Н.Н. Программирование для Windows на С/ С++. Том.1.- М.: ООО “ Бином – Пресс”, 2004
4 Шиманович Е.А. С/ С++ в примерах и задачах. – Мн. : Новое знание, 2004
5 Ахо А.В., Хопкрофт Д.Э., Ульман Д.Д. - Структуры данных и алгоритмы, Издательство “Вильямс”, Москва, 2000
6 Седжвик Р. Фундаментальные алгоритмы на С++. Части 1-4, Издательство “ДиаСофт”, Москва, 2001
        
        Кіріспе
Си-де функциялар өзінің аргументтері ретінде параметрлер мәнін
қабылдайтын болғандықтан, ... ... ... функцияда
айнымалыны өзгертуге болмайды.
Қажетті нәтижені алу ... ... ... ... тиісті
мәнге көрсеткіштерді беру қажет. Бұл жағдайда шақырылатын функция формальды
параметрлердің көрсеткіштер ретінде сипатталуы ... ... ... қатынасу олар арқылы жанама түрде жүргізіледі. Формальды параметрлер
– шақырылатын функцияда оның программасын шақыратын ... ... ... ... және осы ... ... мүмкіндік
береді.
Программада сұрыптауды екі реттелмеген элементтердің орнын ауыстыратын
swap функциясы арқылы орындалатынын қарастырайық.
Егер swap функциясы келесі түрде ... swap (int x, int y)
{ int ... x=y; ... ... ... a мен b ... ... әсер етпейді, swap
олардың мәндерінің көшірмесін ғана алады. Нәтижеге жету үшін ... ... ... ... ... ретінде сипатталуы
керек, ал функцияны ... ... , swap (&a, ... ... адрестерімен көрсетілуі тиіс..
void swap (int *px, int *py)
{int ... *px=*py; ... ... мен ... ... ... бар, ... өте
тығыз болғандығы соншалықты, бұл құралдарды бірге қарастырған дұрыс.
Индекстеу операциясынан ... ... ... ... ... орындалуы мүмкін және мұндай вариант жылдамырақ
жұмыс жасайды.
int ar[10] декларациясы 10 өлшемді ar массивті анықтайды, яғни ... ... ... 10 ... тұратын объектілер тізбегі. ar[i]
жазбасы массивтің і-ші элементін білдіреді.
Егер pa int көрсеткіші ... яғни ... ... * ... ... ... pa=&a[0]; pa көрсеткіші ... ... ... ... басқаша айтқанда , pa ar[0] элементінің
адресінен тұрады.
x=* pa меншіктеулі; ar[0] –нің мәнін х-ке көшіреді.
Егер pa ... ... ... ... онда pa+1 анықтама бойынша
келесі элементті көрсетеді, pa+i –p-дан кейінгі i-ші элементті, ал ... ... і-ші ... көрсетеді.Бұдан, егер ра ar[0]-ді көрсетсе,
онда *( pa+1) - ... ... pa+i – ... адресі, а *(pa+i) –ar[i]-
дің мәні болады.
Бұдан, массивтің ... ... ... қою ... ... ... ... массив түрінде бейнеленеді.
Көрсеткіш - бұл айнымалы, ал массивтің аты - бұл ... ... ... ра=а ... ра++ деп ... болады, ал аr=ра немесе аr++
жазбасы қателік тудырады.
Егер массивтің аты функцияға берілсе, онда соңғысы ... ... ... элементінің адресін алады. Шақырылатын функцияның ішінде бұл
аргумент ... ... ... айнымалы болып табылады. Жалпы,
функция массивтің атын ... ... ... ... ... ... массив аты сияқты ( char s [ ], ... ... ... char *s)
ыңғайлы, және олармен сәйкес жұмыс жасайды. Функция сондай-ақ жазбаның ... ... оған бұл ... ... ... ... алады.
Көрсеткіштер массиві. Көпөлшемді массивтер.
Кез-келген басқа айнымалылар сияқты, ... ... ... Ақпараттық жүйелерде іздеу алгоритмдері және әртүрлі
табиғаттағы мәліметтерді сұрыптау, жеке ... ... ... ... ... ... ... алгоритмдері мен сұрыптаудың
тиімділігі көп жағдайда мәліметтердің көрінісін таңдаумен ... ... және ... ... бірі ... ... ... басындағы көрсеткіштер массиві болып табылады.
Жадыда жолдар бір-бірімен тығыз орналасқандықтан, әр жеке ... ... оның ... ... ... ... жүзеге асады.
Көрсеткіштердің өзін массив ... ... ... ... екі жолдарды салыстыру арқылы – ... ... ... ... ... ... ауыстыру үшін,
массивте олардың көрсеткіштерінің орнын ауыстыру жеткілікті (жолдардың ... екі ... ... ... біреуі – жадыны басқару
күрделілігімен, ал екіншісі – жолдардың өзін ... ... ... ... процессі үш кезеңге бөлінеді:
- енгізу кезінде барлық жолдарды оқу;
- енгізілген ... ... ... рет-ретімен басып шығару.
Енгізу программасы барлық жолдардағы литерлерді оқу және есте ... сол ... ... ... ... тұрғызу керек. Бұл
функция сол сияқты, енгізілген жолдардың санын есептеу ... – бұл ... және ... ... үшін ... ... ... жолдарды басып шығарумен ғана айналысады және ... ... ... сілтеме жасайтындай ретпен орындалуы керек.
Сұрыптау алгоритмі ретінде 1962 жылы К.А. Хоор ұсынған тез ... ... ... көпөлшемді массивтерді және жеке жағдайда екі өлшемді
массивтерді беру мүмкіндігі бар. ... екі ... ... ... ... ғана, ал қалған жағдайда оны басқа тілдердегідей айтуға
болады. Элементтер жолдармен есте сақталады, сәйкесінше, олар ... ... ... ... ... ... ең бірінші индексі өзгереді.
Массив фигуралы жақшамен жабылған ... ... ... екі ... ... әр жолы ... ішкі тізімдермен
инициализацияланады.
Егер екі өлшемді массив функцияға аргумент ретінде берілсе, онда оның
параметріне сәйкес декларация бағандар ... ... ... осы ... функцияға массив жолдарының сілтемесі берілетіндіктен, жолдар
саны болмайды.
Екі өлшемді массив ... ... ar[5] ... ar ... f –тің кейбір функциясына берілсе, онда бұл функцияны
келесі ... ... ... ... ... ... ... жазуға болады:
f( int array [][10]) {…}
мұнда жолдар санының маңызы жоқ болғандықтан немесе
f( int (*array )[10]) ... ... ... int ... 10 ... тұратын массивтің көрсеткіші
екенін сипаттайды. Тік [] жақшаның *-ға қарағанда приоритеті жоғарырақ
болғандықтан, мұнда ... ... ... ... ... ... int
* array[10] int-тің 10 көрсеткішінен тұратын массивті анықтайды. ... тек ... ... ... индеске сәйкес келетін) бермеуге
болады, қалған басқаларының өзгешеліктерін анықтау қажет.
Көрсеткіштер массивінің ... ... ... ... ... инициализациясының механизмін n-20 айдың атынан
тұратын, ... ... ... жасауды қайтаратын, month-name (n)
функциясының мысалында көрсетейік. Бұл ... ... ... ... үшін өте жақсы. Функцияның стринг массивтері бар, олардың
біреуіне ол ... ... ... char * month _ name (int n) – n-20 ... атын ... static char * name [] { ... емес ат”,
“Қаңтар”, “Ақпан”, “Наурыз”, “Сәуір”, “Мамыр”, “Маусым”, “Шілде”,
“Тамыз”, “Қыркүйек”, “Қазан”, ... ... (n12)? name [0]: name ... ... стрингтер тізімі қызмет атқарады, ... ... ... бір орын ... келеді. і-ші стрингтің литері
жадыда орналасқан және оларға көрсеткіш name ... есте ... ... ... өзгешеліктері анықталмағандықтан, компилятор оны берілген
бастапқы ... ... ... ... (инициализацияланатын өрнек).
Екі өлшемді массив пен көрсеткіш массивтерінің арасындағы айырмашылық
қандай? Келесі анықтамалар үшін:
int ar ... [4] ... және x[3] [4]-те int ... ... ... сілтеме
синтаксистік жағынан дұрыс болады. Бірақта ar ғана расында да екі өлшемді
массив ... ... int ... екі жүз элементі үшін жады бөлінеді, ал
ar [жол, баған] элементін жылжытып қою ... ... ... оның
тікбұрышты табиғатын ескере отырып, 20 * жол + баған, ... ... ... ... үшін 10 ғана ... ... және ол инициализациясыз.
Инициализация анық түрде – статистикалық немесе есептеу процесінде берілуі
тиіс.
Егер ... x ... бес ... массивке сілтеме жасаса, онда
нәтижесінде жадыда int типті 50 ... ... үшін және ... ... үшін ... ... ... артықшылығы мұндай массивтің жолдары әр түрлі
ұзындыққа ие бола алатындығында.
Си-ді қолдауды қамтамасыз ететін операциялық жүйеде, командалық ... ... ... ... ... ... беру
мүмкіншілігі бар. Біріншіден, әдетте argc (argument count) деп ... ... ... ... саны ... ... argv (argument
vector) аргументтердің өзі тұратын литерлік стрингтер ... ... ... ... Бұл ... ... ... үшін әдетте бірнеше
деңгейлердің көрсеткіштері ... Бір ... ... ... ... бос орынмен бөле отырып басып шығаратын, echo
(эхо) деп ... ... ...... Сонымен команда
Echo Здравствуй, мир! – ді басып шығарады.
# include
main (int argc, char*arg [])
{int i;
for (i=1; i1)?’’:’’);
printf ... 0 ... мен ... ... операциялар – бұл оларды көшіру, меншіктеу, &
операторының көмегімен аталатын адрес және ... ... ... ... Құрылымды функцияға аргумент ретінде беру және оларды
нәтиже түрінде функциялардан қайтару. Сондай-ақ ... және ... ... ... ... ... ... функцияға берудің үш тәсілі бар:
- компоненттерді (мүшелерді) жеке беру;
- барлық құрылымдарды түгелдей беру;
- көрсеткішті құрылымға беру.
Егер ... оны ... ... ... құрылым берілсе, көрсеткішті
оған беру тиімдірек.
struct point *pp; декларациясы рр - struct point типті ... ... ... рр – point құрлымына жіберілсе (одан болса), онда ... ... ал ... және ... – point құрлымының мүшелері болады. ... ... ... point origin, ... ... ... операторының приоритетінен . ... ... ... ... жақша қажет.
“Құрлымдағы көрсеткіш” түсінігімен байланысты мүшелерге қатынас жасау
үшін жазбаның қысқаша ... ... Егер р – ... ... онда ... – оның жеке ... болады. Сондықтан printf-
ты келесі түрде жазуға болады.
printf(“origin:(%d,%d)\n”,pp->x,pp->y);
Екі және -> ... ... оңға ... ... ... ... жасау. және -> операторлары функцияны шақыру
( ) және ... ... [ ] ... ... приоритеттер
иерархиясында ең жоғарғы орынға ие және ... ... ... орындалады.
Мысалы, егер декларация берілсе
struct
{ int len;
char*str;
} ... ++(р -> len) ... ... ... ... ... өзі ... ++р -> len бір мәнге len структурасының мүшесін
өсіреді.
Операциялардың орындалу тәртібін өзгерту үшін анық ... ... ... len-де len-нің мәнін алмас бұрын, программа р көрсеткішін жылжытады.
Құрылым массивтері
Си программасының мәніне кіретін әр кілттік сөздердің санын анықтайтын
программаны ... Бұл үшін біз ... ... ... ... ... ... сөздерді есептеуді бүтін массивтер түрінде
сақтай білуіміз керек болатын, варианттардың ... – бұл екі ... болу ... *keyword ... keycount [ ... ... параллелдігі, сақтаудың басқаша - құрылым массиві арқылы
ұйымдастыруды ойға салады. Әр ... ... ... ... ... ... count; жазуға болады
Мұндай жұптар массивті құрайды.
struct ... char ... ... key ... ... сипаттайды және keytab массивін анықтайды
және әйтеуір бір жерде жады ... және осы ... әр ... ... Мұны ... ... да болады:
struct key
{ char *word;
int count;
};
struct key keytab[NKEYS];
keytab массиві тұрақты аттардың жиынынан тұратындықтан, оны сыртқы
массив ретінде ... ... және ... ... бір рет
инициализациялаған дұрыс:
struct key {
char *word;
int count;
} keytab[ ]={“auto”,0,”break”,0,/*…*/”while”,0};
keytab массивтің элементтерінің саны инициализаторлардың мөлшері бойынша
есептелінеді.
Си-де компиляция кезінде ... ... sizeof, ... оператор бар. Оны
кез-келген объектінің өлшемін есептеу үшін қолдануға болады.
sizeof ... және sizeof (тип ... ... ... ... ... ... типіне тең бүтін
мәндерді береді. Объект айналымы, массив немесе құрылым ... ... ... ... ... типтің аты немесе туындылы типтің аты, мысалы
қолданылуы мүмкін.
Қолданылған әдебиеттер тізімі:
1. Подбельский В.В., Фомин С.С. Программирование на ... ... ... – 2- е доп. изд. – М.: Финансы и статистика, ... ... В.В. Язык С ++: ... пособие. – 3- е изд. Дораб . ... ... и ... ... ... Н.Б. С/ С++ в задачах и примерах. – СПб.: БХВ – Петербург,
2004
3. Мартынов Н.Н. ... для Windows на С/ С++. ... ООО “ ...... ... ... Е.А. С/ С++ в ... и задачах. – Мн. : Новое знание,
2004
5. Ахо А.В., ... Д.Э., ... Д.Д. - ... ... и алгоритмы,
Издательство “Вильямс”, Москва, 2000
6. Седжвик Р. Фундаментальные алгоритмы на С++. Части 1-4, Издательство
“ДиаСофт”, Москва, 2001
Мазмұны
Кіріспе
... ... ... ... ... ... ... Көпөлшемді массивтердің орнындағы
көрсеткіштер.
Негізгі бөлім
• Құрылымдар мен функциялар.
• Құрылым массивтері.
Қорытынды
• Әдебиеттер
Қорытынды
Массив элементтері типі ескеріліп, олардың көлеміне жеткілікті етіп ... ... ... ... орын ... ... немесе массивтің аты
осы аймақтың басына сілтейтін нұсқауыш типті ... ... ... өзін ... түрінде ұйымдастыруға болады.
Мүмкіндіктердің ... екі ... ... ...... strcmp
функцияларына көрсеткіштерді беру. Жолдардың орындарын ... ... ... ... орнын ауыстыру жеткілікті (жолдардың өзін
емес).
Бұдан екі мәселе бірдей шешіледі: ...... ... ал ...... өзін ауыстыруда жинақталған үлкен
шығындармен байланысты.
Сұрыптау процесі үш кезеңге ... ... ... ... жолдарды оқу;
- енгізілген жолдарды сұрыптау;
- оларды рет-ретімен басып шығару.

Пән: Информатика
Жұмыс түрі: Реферат
Көлемі: 8 бет
Бұл жұмыстың бағасы: 300 теңге









Ұқсас жұмыстар
Тақырыб Бет саны
C++ екі өлшемді массивтер20 бет
Delphi бағдарламасындағы массивтер12 бет
Turbo Pascal жүйесінде массивтерді ұйымдастыру технологиясы39 бет
Turbo Pascal тілінде екі өлшемді массивті орындау15 бет
«Турбо паскаль жүйесінде бір өлшемді массивтерді ұйымдастыру технологиясы»25 бет
Абсорбция және масса үрдісі7 бет
Аналитикалық модельдеу. имитациялық модельдеу. массалық қызмет көрсету жүйесін модельдеу8 бет
Астық массасын сақтау кезіндегі массаның өзгеруі8 бет
Астық массасын сақтау кезіндегі ылғалдылықтың өзгеруі6 бет
Астық массасының оздигинен қызуы36 бет


Исходниктер
Пәндер
Көмек / Помощь
Арайлым
Біз міндетті түрде жауап береміз!
Мы обязательно ответим!
Жіберу / Отправить


Зарабатывайте вместе с нами

Рахмет!
Хабарлама жіберілді. / Сообщение отправлено.

Сіз үшін аптасына 5 күн жұмыс істейміз.
Жұмыс уақыты 09:00 - 18:00

Мы работаем для Вас 5 дней в неделю.
Время работы 09:00 - 18:00

Email: info@stud.kz

Phone: 777 614 50 20
Жабу / Закрыть

Көмек / Помощь