Нұсқауыш типтерді қолдану

1. Кіріспе
2. Негізгі бөлім
2.1 Нұсқауыш типтері туралы қажеттері
мәліметтер
2.2 Бір байланысты тізім
2.3 Бір байланысты тізбек түріндегі
жолдың көрінісі
2.4 Жол тізбектерге операция жасау

Қорытынды
Кез келген программалық объектілер тек қана жадының көп бөлігін ала отырып, программаның барлық орындалу бағытында емес, сонымен қазіргі программалық тілде статикалық объектілермен байланысында көрсетілген кемшіліктерін болдырмас үшін динамикалық объектілерді қолдану орналастырылған. Осындай қиыншылықтардың бірі программа орындалу барысында динамикалық объектілер пайда болады, ал оларға іс-әрекетті беру - программа жазу барысында немесе орындау барысында беріледі. Бұл қиыншылықты жеңу үшін динамикалық объектілермен жұмыс барысында арнайы тип қарастырылған. Ол «нұсқауыш» тип. Басқа сөзбен айтқанда «нұсқауыш» тип кез келген программалық объектінің нұсқауышы болып келеді және осы нұсқауыш арқылы керекті объектілерге қол жеткізуге болады.
Бұндай жағдайларда динамикалық объектілерде іс-әрекеттің орындалуы барлық жағдайда программалық объектілерді статикалық айнымалының «нұсқауыш» типі арқылы беріледі, ал олар ауыспалы терминдерде динамикалық объектілердің іс-әрекетімен сипатталады. Бұл программа айнымалы «нұсқауыш» тип, программа орындалу барысында анықталады, ал осындай мағынада жеткілікті құруға сәйкес келетін тиімді жабдықтар қарастырып отырмыз.
1 Подбельский В.В., Фомин С.С. Программирование на языке Си:
Учеб. пособие. – 2- е доп. изд. – М.: Финансы и статистика, 2002
1 Подбельский В.В. Язык С ++: Учеб. пособие. – 3- е изд. Дораб . - М.: Финансы и статистика, 1998
2 Культин Н.Б. С/ С++ в задачах и примерах. – СПб.: БХВ – Петербург, 2004
3 Мартынов Н.Н. Программирование для Windows на С/ С++. Том.1.- М.: ООО “ Бином – Пресс”, 2004
4 Шиманович Е.А. С/ С++ в примерах и задачах. – Мн. : Новое знание, 2004
5 Ахо А.В., Хопкрофт Д.Э., Ульман Д.Д. - Структуры данных и алгоритмы, Издательство “Вильямс”, Москва, 2000
6 Седжвик Р. Фундаментальные алгоритмы на С++. Части 1-4, Издательство “ДиаСофт”, Москва, 2001
        
        Жоспар
1. Кіріспе
2. Негізгі бөлім
2.1 Нұсқауыш типтері туралы қажеттері
мәліметтер
2.2 Бір байланысты тізім
2.3 Бір байланысты тізбек түріндегі
жолдың көрінісі
2.4 Жол ... ... ... ... ... ... тек қана жадының көп бөлігін ала
отырып, программаның барлық ... ... ... ... қазіргі
программалық тілде статикалық объектілермен байланысында ... ... үшін ... объектілерді қолдану
орналастырылған. Осындай қиыншылықтардың бірі ... ... ... ... ... ... ал оларға іс-әрекетті беру - программа
жазу барысында немесе орындау ... ... Бұл ... жеңу ... ... жұмыс барысында арнайы тип қарастырылған. Ол
«нұсқауыш» тип. Басқа сөзбен ... ... тип кез ... ... ... болып келеді және осы нұсқауыш арқылы
керекті объектілерге қол жеткізуге ... ... ... ... ... ... ... программалық объектілерді статикалық айнымалының «нұсқауыш»
типі арқылы ... ал олар ... ... ... іс-әрекетімен сипатталады. Бұл программа айнымалы «нұсқауыш»
тип, программа ... ... ... ал осындай мағынада
жеткілікті құруға сәйкес келетін тиімді жабдықтар қарастырып отырмыз.
2.1 ... ... ... ... мәліметтер
Менің курстық жұмысымда, нұсқаушы типті ... және осы ... ... обьектісін жеткілікті толығырақ қарастырып өтемін.
Бізге белгілі кеңістікті толтыру үшін және сенімді ... ... ... ... ... ... процесті шешуде
пайдаланады.
С/С++ тілдерінің әмбебаптығы және икемділігі ... ... өте ... ... ... қабылдауға және қолдануға
мүмкіндік береді. Әсіресе нұсқауыш типті ... және ... ... ... ... ... ... нысандарды - кез-келген
динамикалық құрылымдарды жеңіл жасаудың тәсілдерін қарастырамын..
Іс жүзінде ... ... жиі ... ... стектар, әр түрдегі тізімдік ... ... ... ... ... кем дегенде екі өрістен тұрады:
бірінші өрісінде – атрибуттар, ... ...... ... ... ... нұсқауыш тұрады. Сонымен динамикалық объект бір атпен
берілген нысан әртекті мәліметтердің жиынынан құралады, struct ... ... ... тип. Енді ... ... ... ... тізімдер, кестелер және т.б. динамикалық объектілер
құрастыруға болады .
Ендігі жерде ... ... ... ... тек ... ... берілу және өңдеу тәсілдерін түсінуге қолайлы
сұрақтарды қарастырамын..
Сонымен tagName структуралық типін ... ... ... ... int k;
char str ... ... ... тип С++ ... ... ... ... tagName st1, ... Си ... ... ... struct ... ... ... керек:
struct tagName st1, st2;
typedef кілттік сөзі Си тілінде синтаксистік хабарлама ... ... ... struct ... int ... str ... d;
int ar[2][3];
} STRUCTNAME;
осыдан кейін ... ... ... ... ... ... st1, ... айнымалыны функцияға фактілік параметрлер «мән бойынша»
жіберуге яғни көшірмесін жіберуге ... ... ... ... ... ... ... және st1 ... ... ... *pst = & ... операциясы құрылымдық айнымалының өрістеріне нұсқау
арқылы қол жеткен іске ... ... pst → k Осы ... «нүкте»
операциясын да жақсы қолдануға болады: ( * pst ) . k .
Осы мысалдан pst ... ... ‘*’ ... ... ... ... ... ‘.’-операциясы к айнымалысына кіруді қамтамасыз
етеді. Өрнекте жақшалар міндетті, ‘*’ операциясынан ‘.’ ... ... ... типі нұсқаушысынан көрі басқа типов нұсқаушысын
пайдаланып құрылымдық өріс айнымалысына “жетуге” ... ... char ... ... ... онда ... операциясы оның мағынасына
(адрес жадысы) тек бір бірлікке көбейгенін көрсетеді. Осындай нұсқаушысының
арқасында кез-келген жады диапазоны ... ... ... шығуға болады,
шешілмейтін мәселемен әрқашан ... ... тип ... түзеуге
болады.
char *p = (char*) &st1;
Нұсқаушы функциясының түрін құрылымның айнымалыға беруге, осы функция
үшін айнымалының көшірмесін емес өзін ... ... ... Құрылымның денесі анықтау үшін анықталатын құрылымға нұсқаушы
типтес өрістерді қолдану қажет болады:
struct tagName
{ ... *p; ... Бір ... ... ... ... - жалпы мақсатты икемді динамикалық құрылым.
Бір ... ... құру үшін С/С++ ... ... мен
құрылымдарынан алған білімімді пайдаланамын.
Бір байланысты тізімдер де массивтер сияқты ... ... ... Массивтерден бір байланысты тізімдердің айырмашылығы
ақпараттардың элементтерінің ... ... ... Яғни олар ... ... ... табылады.
Бір байланысты тізімдер әрқайсысында осы түйін туралы ақпарат және келесі
түйін нұсқауышы сақталатын «түйіндерден» (ағылшынша - nodes) ... ... ... ... ... ... да одан бостап келесі түйіндерді
жүріп өтуге болады. ... ... ... ... оның ішіндегі
сақталатын ақпараттар мәндерін шығарып алуға болады. Соңғы түйін ... ... ... ... ... бір байланысты тізім жасау дегеніміз – тізімдегі ... ... саны ... және ... (NULL) ... ... «пайдалы» мәндер сақталатын ең бірінші түйінді жасау.
Бұдан кейін келесі жаңа түйіндерді ... ... ... қосуға
мақсатталған динамикалық процесс жүреді. Әр ... ... ... түрде жасалынып одан кейін осы түйіннің ақпараттық міндерімен
нұсқауыштық өрістері алдыңғы бір байланысты тізімге ... ... ... Әрине, бір байланысты түйіндер құрылған ... ... ... жадындағы оған бөлінген орынды босатуға мүмкіндік болу
керек. Енді тізімді өңдемейтін бірақ бір ... ... ... жұмысы іске асыратын программаға мысал келтірейік.
Тізбек түйіні құрылымдық айнымалы типін ұсынады..
struct Node
{ int val; // ... ... *pNode; ... түйіннің нұсқауышы
};
Жаңа түйіндерді бастапқы жұмыс жасап тұрған тізбекке қосу үшін ... ... ... ... ... үшін – Print() ... ... үшін – Remove() функциясы қолданылады.
#include
#include
#include
struct Node
{ int ... * ... ... ... Add (Node **ppStart, int newVal);
void Print (Node * pStart);
void Remove (Node ... main ... int ... *pN = ... (&pN, 5);
Add ( &pN, 6);
Add ( &pN, 7);
Print ( ... (& ... ( ... ... Add (Node ... int ... Node *p = ... (p==NULL)
//тізбектің бірінші элементін құрамыз
{ *ppStart = (Node*)malloc (sizeof(Node));
( *ppStart) → val = newVal;
(*ppStart) → pNode = NULL;
return;
}
while ( p != ... If (p → pNode == NULL) ... = p → ... → pNode = ... ... → pNode) → val = ... → pNode) → pNode = NULL;
}
void Print ( Node *pStart)
{ Node *p = ... (p != ... printf ... = %d \n”, p → val );
p = p → ... (“\n Тізім толығымен шығарылған! \n”);
}
void Remove (Node **ppStart)
{
Node *p;
p = *ppStart;
if ( *ppStart == NULL) // бос ... ( p→ pNode != ... ... соңғы элемент емес
{ if(p →pNode)→pNode==NULL)
//соңғы екі элемент
// р ... ... free (p → ... → pNode = NULL;
p = *ppStart;
continue;
}
else
p = p → pNode;
}
// соңғы элементті және нұсқауышты жоямыз
// ... ... ... ... (* ... = NULL;
}
Бұл программада «тізбек басының нұсқуышын» Add() және ... ... ... яғни оның ... ... осы ... алу үшін оның стектағы көшірмесі өзгеріссіз қалпында орындалады.
Мысалы, Remove (&pN) ... ... ... мәні жоқ ... алуға
болады, нақты түріндегі тізбек бос сигналын алуға болады. Мысалы, ... ... ... ... осы ... ... ... алмыз, бұл
тізімнің бос екенін анық көрсетеді. Жады мен динамикалық жұмыс кезінде
malloc() және free() ... ... ... осындай new/delete
жұптар операциясын С++ ... ... ... ... Бір ... тізбек түріндегі жолдың көрінісі
Векторлық жолдың көрінісі әдеттегі «келесі элемент» түсінігі алдыңғы
элементке ... ... ... тығыз байланысты, жолдық тізбек
түріндегі (бір байланысты, екі бағытты және ... ... ... ... ... бір тізбек элементтерінің байланысу
әдісі орындалады.
Жолдар мен жұмыс жасау техникасы үшін тізбек ... ... ... ... ... ... арасында нүктесі жоқ және нүктемен
аяқталалатын бос емес ... «А» ... кіру ... ... ... біздің мақсатымыз тиімді программа алу емес тек жай ғана
тізбекпен жұмыс істеу техникасын ... Ол үшін ... ... ... ... ... және оны бір ... тізім түрінде көрсету.
2 Берілген символдың және сөздің енгізілген санын анықтау.
3 ... ... ... ... объектілермен жұмыс істеуге тура келетіндіктен
құрылымдық типтің келесі қолданылуын енгіземіз:
struct Node
{ char ... ... сан ... ... ... айтқанда оның бірінші түйініне
сілтеме жасау үшін сәйкес нұсқауышты қолданысқа ... ... ... ... ... ... қалыптасқан буынды
жалғау үшін көмекші нұсқауыш қажет болады. Оны қолданыста берілуі ... ... ... ... буын ... ... ... нұсқауышы үшін қолдананамыз
p = p → ... ... ... ұйымдастыруға байланысты тағы бір
ескеретін жағдай бар. Мәселе тізбегіндегі ... ... ... ... ... өтуде.
Басты буын енгізбеген жағдайда бірінші буынды басқа буындардан өзгеше
қалыптастыруға тура келеді. Сондай-ақ осындай ... ... ... ... ... ... ... айрықшаланады.
Басты буынсыз программаға мәтін келтірсек:
#include
#include
#include
#define sum ‘A’
struct Node
{
char lit;
Node *next;
};
int main (void)
{ Node *first, ... ... ... ... ... p - ... ... ch;
int к; // к– жолдағы символдың ... ... ... ... (“ \n ... ... ”);
scanf (“% c”, &ch);
first = (Node*) malloc (sizeof ... → lit = ... → next = ... к ... ... ... ... дайындау
p = first;
//литерлер жолдарының тізбегін өңдеу циклі
while (ch!=’.’)
{ printf (“\n ... ... ... ”);
scanf (“% c”, &ch);
p = p → next = (Node*) malloc (sizeof ... → lit = ... → next = ... Бір ... ... ... бастапқы сөзді көрініс береді. Енді
түйін тізбегін баспаға жібереміз */
p = first;
putchar(‘\n’);
while (p)
{ printf(“% c”, p → ... = p → ... ... sum ... кіру ... ... ... (p)
{ if (p → lit = = sum) k++;
p = p→ next;
}
// ... ... ... % Символы жолға %d рет кіреді”, sum, k);
getch( );
return 0;
}
Енді next өрісіне тізімнің бастапқы, «нөлдік» ... ... ... ... жол туралы басқа қосымша ақпаратты сақтауға қолданамыз:
#include
#include
#include
#define sуm ‘A’
struct Node
{ char lit;
Node * next;
};
int main ... *first, ... ... ... ... түйінді қалыптастыру
first = (Node*)malloc(sizeof(Node));
p = first;
p → next = NULL;
printf(“\n Жолдың бірінші сөзін енгізіңіз:”);
scanf(“% c”, &ch);
// егер сөз бос ... онда ... ... өңдеру керек
while (ch !=’.’)
{
р = p → next = (Node*)malloc(sizeof(Node));
p → lit = ch;
p → next = NULL;
printf (“\n ... ... ... ... &ch”);
}
/*Назар аударыңыз, есептің бірінші нұсқасында тізбектің соңғы
түйінінде нүкте ... ... ... нүкте жоқ */
//тізбек мазмұнының қорытындысын
putchar (‘\n’);
p = first → next;
// р нұсқауышын бірінші түйінге адрестейміз
while ( p)
{ printf (“% c”, p → ... = p -> ... ... ... ... в ... заданного символа
k = 0;
}
// нәтижені баспаға шығарамыз
printf(“\n символы % с қатарға шығады % d бір”, sуm, к);
getch ( ... ... Жол ... ... ... ... ... өрнектелетін жолдарға жасалатын негізгі
операция қарастырамыз. Әр кезде әрі қарай оқи ... ... ... буын ... яғни ... ... ... бос) қатар (өрістің бос
next жолында басты буын NULL болады).
Берілген элементті жолдық қатарда іздеу
Осы амалды ... ... ... ... ... ... жолдағы алғашқы берілген элементін анықтайтын және сәйкесінше
тізімдегі сілтемені қайтарады.
Осындай функцияның жазылу түрі мынандай:
Node *search (char ch, Node ... Node *q = ... q – ... көрсеткіші
// көрсеткіштің мәні first
Node *result = ... = q → ... ... ... ... бос емес
{ if (q → lit == ch)
{ result = q;
break;
}
q = q → next;
}
return resu ... ... бірі ... ... ... ... пайда болады, ал оларға ... беру - ... ... ... ... ... ... Бұл қиыншылықты жеңу үшін
динамикалық ... ... ... ... тип ... ... тип. ... сөзбен айтқанда «нұсқауыш» тип кез ... ... ... ... ... және осы нұсқауыш арқылы
керекті объектілерге қол ... ... ... ... және икемділігі соншалықты, оның
базасына өте ... ... ... ... және қолдануға
мүмкіндік береді. ... ... ... ... және ... ... ... шығару алгоритімі жинақталатын нысандарды - кез-келген
динамикалық құрылымдарды жеңіл жасаудың тәсілдерін қарастырдым.
Қорыта кетсем, кез ... ... ... тек ... көп ... ала отырып, программаның барлық орындалу бағытында
емес, сонымен қазіргі ... ... ... ... көрсетілген кемшіліктерін болдырмас үшін ... ... ... ... да бұндай объектілерді
қолдану өзінің артынан көптеген қиыншылықтарға соқтыратыны сөзсіз. Осындай
қиыншылықтардың бірі ... ... ... ... ... ... ал оларға іс-әрекетті беру - программа жазу барысында немесе
орындау барысында беріледі.
Қолданылған әдебиеттер тізімі:
1. ... В.В., ... С.С. ... на ... ... ... – 2- е доп. изд. – М.: Финансы и статистика, 2002
1 Подбельский В.В. Язык С ++: ... ... – 3- е изд. ... . - М.:
Финансы и статистика, 1998
2 Культин Н.Б. С/ С++ в задачах и ... – СПб.: БХВ – ... ... Н.Н. ... для Windows на С/ С++. ... М.:
ООО “ Бином – Пресс”, 2004
4 Шиманович Е.А. С/ С++ в примерах и задачах. – Мн. : ... ... Ахо А.В., ... Д.Э., ... Д.Д. - Структуры данных и алгоритмы,
Издательство “Вильямс”, Москва, 2000
6 ... Р. ... ... на С++. ... 1-4, Издательство
“ДиаСофт”, Москва, 2001

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









Ұқсас жұмыстар
Тақырыб Бет саны
Көп өлшемді жиымдар4 бет
Лабораториялық жұмыстар, файлдарды пайдалану7 бет
«М.Сералин шығармашылығы»4 бет
Абай Құнанбаев - "Қазақтың бас ақыны"11 бет
Нотариустың құжат айналымын автоматтандыру53 бет
Протопласт. Цитоплазма7 бет
Пәннің оқу-әдістемелік кешені «Бизнесті моделдеу»134 бет
Пәннің оқу-әдістемелік кешенін дайындау бойынша ереже107 бет
Тарихи аңыздар, тарихи жырлар және олардың рухани маңызы туралы4 бет
цикльдік бағдарламаны ұйымдастыру20 бет


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


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

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

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

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

Email: info@stud.kz

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

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