2.4 Зертханалық жұмыс №4. Бір өлшемді жиымдар және нұсқауыштар
Жұмыстың мақсаты: есеп шығару кезінде жиым түріндегі мәліметтер құрылымын пайдаланып программалауды игеру, бір өлшемді жиымдарды дұрыс сипаттап үйрену, бір өлшемді жиымдарды өңдейтін алгоритмдерді сызба түрінде көрсету, яғни блок-сұлбасын құрып үйрену, нұсқауыш түріндегі айнымалыларды қолданып программалауды игеру.
Жалпы мағлұмат.
Жиымдар – бірдей атауларға ие, жады ұяшығындағы тізбектелген топ. Жиымның жеке элементтеріне қол жеткізу жиым атауы мен оның реттік нөмірі (индексі) арқылы ұйымдастырылады. Индекс элементтің орнын жиымның басынан бастап анықтайды.
Жиымды сипаттау кезінде мыналарды көрсету қажет:
элемент типін;
жиым атауын;
жиым өлшемін.
Жиымды сипаттаудың жалпы түрі мынадай:
типі жиым_атауы [өлшем 1][өлшем 2]….;
Бір өлшемді жиымдарды сипаттау кезінде тік жақшада жиым элементтерінің санын білдіретін бір ғана индекс көрсетіледі. Мысалы:
float A[5], B[25];
Сипаттау кезінде жиым элементтерін берілген мәндермен инициалдауға болады. Мысалы:
int D[5]={23, 45, 32, 12, 88};
Си тілінде жиым элементтері нөлден бастап нөмірленеді, яғни бірінші элементтің индексі 0-тең, ал соңғы элементтің индексі – жиым өлшемінен бірге кем болады.
Жиым мен нұсқауыштың арасындағы байланыс. Си тілінде жиымдар мен нұсқауыш бір-бірімен тығыз байланысқан.
25
Нұсқауыш – басқа айнымалының адресі немесе жады бөлігі сақталынатын айнымалы.
Нұсқауыш келесі түрде жазылады:
типі *<айнымалы атауы>;
Нұсқауыштар айнымалылар тізімінде хабарланады, бірақ олардың атының алдына * белгісі қойылады. Нұсқауыш өзі үшін хабарланған типтегі айнымалыға нұсқайды.
Кейбір айнымалыларға қолданылатын & унарлы операциясы бізге осы айнымалының мәні емес, адресі керек екенін көрсетеді. Егер uk айнымалысы нұсқауыш ретінде хабарланса, онда меншіктеу операторы uk=&x мынаны білдіреді: «х айнымалысының адресін алып және оның мәнін айнымалы-нұсқауыш uk-ға меншіктеу».
Нұсқауышқа қолданылатын * унарлы операциясы нұсқауыш сілтеме жасайтын жады ұяшығына қол жеткізуді қамтамасыз етеді. Басқаша айтқанда, адресі арқылы қатынас жасау үшін қолданылатын операция (көрсетілген адрестегі мәнді пайдалану). Мысалы, *uk-ны сөзбен былай сипаттауға болады: «uk нұсқайтын адрестегі бар мәлімет».
Жиым элементінің кез келгеніне қол жеткізу нұсқауыш арқылы орындалуы мүмкін. Егер uk – int типінде сипатталған int *uk нұсқауышы болса, онда uk=&a[0] операциясы орындалғаннан кейін uk – a[0] адресіне, ал uk+i жиымның i-нші элементіне нұсқайды. Осылайша, uk+i – a[i] -дің адресі болып табылады. Программада жиым аты оның бірінші элементінің адресіне тең болса, онда uk=&a[0] өрнегі мынаған тең: uk=a. Сондықтан, a[i]–дің мәнін былайша жазуға болады *(a+i). Жиымның осы екі элементіне адресті алу операциясын қолданып, &a[i] және a+i бірдей (тепе-тең) екенін көреміз.
Символдар жолын кері ретпен баспаға шығаратын программаның мысалын қарасырайық.
#include
main()
{
char *uk1,*uk2;
uk1=uk2="Тілдер және программалау технологиясы";
while(*uk2!='\0')
putchar(*uk2++);
putchar('\n');
while(--uk2 >= uk1)
putchar(*uk2);
putchar('\n');
}
Ең басында uk1 және uk2 нұсқауыштарына "Тілдер және программалау технологиясы" жолының бастапқы адресі меншіктеледі. Содан кейін, жол әр символы бойынша басылады және бір уақытта uk2 нұсқауышы жол бойымен жылжиды. Шығарудың соңында uk2 берілген мәтіннің соңғы символын көрсетеді. Екінші while циклында сол uk2 нұсқауышы кері бағытта өзгере
26
бастайды, жолды кері ретпен беру үшін, жиымның нөлдік элементіне дейін кему арқылы өзгеріп отырады.
Достарыңызбен бөлісу: |