- •[Gl]Дәріс №1. Си тілі негіздері.[:] Си тілі негіздері.
- •Жалпы түсініктер
- •Cи тілінің алфавиті
- •2. Си тілінің алфавиті
- •[Gl] Дәріс №2. Тілдің қарапайым объектілері.[:]
- •Тілдің қарапайым объектілері.
- •[Gl]Дәріс №3. Стандартты функциялар.[:] Стандартты функциялар.
- •1. Printf және scanf функциялары
- •2. Спецификациялардың түрлері.
- •[Gl]Дәріс №4. Си тілі операторлары[:] Си тілі операторлары
- •4. Келтіру операциясы
- •5. Логикалық оператор
- •[Gl]Дәріс №5. Цикл операторлары.[:] Цикл операторлары.
- •3.For цикл операторы
- •Int n; // көбейткіш
- •Int p; // көбейтінді
- •5 Санының көбейту кестесі
- •4. Do while цикл операторы
- •[Gl]Дәріс №6. Көшу операторлары[:] Көшу операторлары
- •2. Continue операторы
- •3. Goto операторы
- •[Gl]Дәріс №7. Си тілі элементтері.[:] Си тілі элементтері.
- •Switch ауыстырғыш операторы
- •Эем жадының кластары және айнымалылардың қолданылу аймағы
- •1. Switch ауыстырғыш операторы
- •2. Эем жадының кластары және айнымалылардың қолданылу аймағы
- •[Kgl]Дәріс №8. Cи тіліндегі функциялар.[:] Cи тіліндегі функциялар
- •2. Функция түрлері.
- •Return операторы.
- •[Gl]Дәріс №9. Сөз тіркестерін өңдеу.[:] Сөз тіркестерін өңдеу.
- •2. Сөз тіркестерін өңдеу
- •[Gl]Дәріс №10. Сөз тіркестерін өңдейтін басқа функциялар.[:] Сөз тіркестерін өңдейтін басқа функциялар
- •1. Сөз тіркестерін енгізу-шығару функциялары.
- •2. Сөз тіркестерін өңдейтін басқа функциялар.
- •1. Сөз тіркестерін енгізу-шығару функциялары
- •2.Сөз тіркестерімен жұмыс істейтін басқа функциялар
- •Программалау технологиясы пәні бойынша тест тапсырмалары
2. Эем жадының кластары және айнымалылардың қолданылу аймағы
Айнымалылар типтерден бөлек жады кластары-мен де сипатталады. Осы уақытқа дейін кластарды көрсетпеуіміз олардың алдын ала келісім бойынша сипатталуына байланысты болды. Айнымалылар компьютер жадында немесе процессор регистрлері-нің бірінде сақталады. Ол үшін айнымалы кластары анықталады.
ЭЕМ жадының класы (storage class) айнымалылар-дың қолданылу аймағын (жедел жады немесе регис-трлер) және осы айнымалының ЭЕМ жадында сақ-талу ұзақтығын анықтайды.
Жалпы жағдайда айнымалыны немесе функцияны анықтап сипаттағанда, соған сәйкес түйінді сөз арқылы жады класын көрсетуге болады.
Функциядар ішінде қолданылған айнымалылар локальді болып саналады және олар осы функция-лардың ішінде ғана анықталған болып саналады.
Кейбір айнымалыларды бірнеше функцияларда қолдану үшін оларды сыртқы айнымалылар ретінде сипаттау қажет. Функцияның сыртында анықталған айнымалылар сыртқы айнымалылар болып табыла-ды және олардың қолданылу аймағы глобальді болады.
Әрбір айнымалы анықталған бір типке және жа-дының бір класына жатуы тиіс (жалпы ЭЕМ жад-ында не регистрлерде). Си тілінде ЭЕМ жадының 4 түрлі класы бар және оларды сипаттау үшін 4 түй-інді сөз қолданылады:
· auto – автоматты класты сипаттау үшін қолданылады,
· extern – сыртқы класты сипаттау үшін қолданылады,
· static – статикалық класты сипаттау үшін қолданылады,
· regisrter – регистрлік класты сипаттау үшін қолданылады.
Автоматтық айнымалылар функция ішінде сипатталған айнымалылар, егер жады класының басқа айқын сипатталуы болмаса, онда олар auto класына жататын болып саналады, яғни келісім бойынша функцияның ішінде сипатталған айнымалы автоматтық айнымалы болып саналады. Кейбір жағдайларда берілген айнымалылар тек осы функцияның ішінде ғана сипатталған болса және осында ғана қолданылса, олар auto түйінді сөзі арқылы айқын сипаттала алады.
Мысалы:
auto int m;
auto int b=12345;
auto float d=123.45;
auto char c;
Автоматтық айнымалыларды осындай етіп міндетті түрде сипаттау қажет емес. Егер айнымалы бір блок (функция басында) ішінде сипатталатын болса және оның класы көрсетілмесе, ол келісім бойынша автоматтық айнымалы болып саналады.
Автоматтық айнымалылар сол блокта ғана, яғни бір функция ішінде қолданылып, оның әсер ету аймағы локальді болады және осы айнымалылар сипатталған функция шақырылғанда ғана, көрсетілген автоматтық айнымалылар жұмыс істейді, яғни активтендіріледі (екпінді күйде пайдаланылады). Функцияның жұмысы аяқталғанда автоматтық айнымалылар жойылады да, оларға бөлініп берілген жадының ұяшықтарын басқа айнымалылар үшін қайтадан қолдануға болады.
Сыртқы айнымалылар.
Функцияның сыртында сипатталатын айнымалылар сыртқы болып табы-лады. Олар функция ішінде қайта қолданылатын бол-са, extern түйінді сөзі арқылы сол айнымалы қайта сипатталатын болады. Олардың әсер ету аймағы гло-бальді болып саналады.
Мысалы:
int t;
main()
{extern int t;
scanf(“%d”,&t);
while(t!=50)
pr();
printf(“Поиск завершен\n”);
}
pr()
{extern int t;
printf(“ввод следующего числа\n”);
scanf(“%d”,&t);
}
Егер pr()функциясында t айнымалысының сипат-талуы келтірілмесе де, t атты сыртқы айнымалы pr()функциясында келісім бойынша белгілі болып саналады. Егер main() және pr()функцияларында extern түйінді сөзі сол функциялар ішіндегі t ай-нымалысының сипатталуында келтірілмесе, онда t атты жаңа автоматты айнымалы пайда болады. Сонымен t атты сыртқы айнымалы бұл функциялар-да белгілі болмайды. Егер pr() функциясында t айнымалысының сипатталуында extern деген сөз жазылмаса, онда main()функциясында орналасқан t айнымалысы ешқашан жаңа мән қабылдай алмайды.
Статикалық айнымалылардың қолданылу аймағы локальді болады, ал оның автоматтық айнымалылардан өзгешелігі: егер осы айнымалыны сипаттаған функция өз жұмысын аяқтаса да, статикалық айнымалылар мәні жо-йылмайды. Функцияны бір шақырғаннан оны келесі ша-қырғанға дейін компилятор статикалық айнымалының бұрынғы мәндерін есте сақтайды.
Мысалы:
#include <stdio.h>
int fun()
{ int av=1;
static int stv=1;
printf("av=%d stv=%d\n",av++,stv++);
}
main()
{ for(int k=1; k<=3; k++)
{ printf("%d-шы адым: ",k); fun(); }
getch();
}
Бұл программаның жұмыс нәтижесі:
1-адым: av=1 stv=1
2-адым: av=1 stv=2
3-адым: av=1 stv=3
Регистрлік айнымалыларды register түйінді сөзі анықтайды. Әдетте программада сипаттала-тын айнымалылар ЭЕМ жадында сақталады,ал регистрлік айнымалылар процессордағы регистр-лерде сақталады. Осындай айнымалыларды пай-даланғанда, программаның жұмысы жылдамырақ орындалуы тиіс.
Жалпы жағдайда регистрлік айнымалылар автоматтық айнымалыға ұқсас. Егер регистрлік айнымалы программада сипатталса, осы сәтте бір регистр бос болса, онда компилятор керекті мәнді осы регистрде сақтайды деп саналады. Ал егер келтірілген талапты орындауға мүмкіндік болмаса, онда регистрлік айнымалы автоматтық айнымалы ретінде пайдаланылады.[kgl]
