Статикалық айнымалылар



Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..3
1.1 Статикалық айнымалылар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...4
1.2 Статикалық локальді айнымалылар ... ... ... ... ... ... ... ... ... ... ... ... ... .5
1.3 Статикалық глобальді айнымалылар ... ... ... ... ... ... ... ... ... ... ... ... ...8
2.1 Класстың статикалық мүшелері ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 10
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..15
Қолданылған әдебиеттер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 16
Программалық жабдықтамалар жасаудың дағдарысы программаның өмір-
лік циклі барысында – оны жазу жоспары пайда болғаннан бастап қолданудан алып тастағанға дейінгі кезеңде – программалар құрудың жалпы шығындарын азайтатын жаңа тəсіл табу қажеттілігіне алып келді. Мұндай технология өткен ғасырдың 70-ші ж. Басында пайда болып, құрылымдық программалау деген атауға ие болды. Оның негізін программалау теориясы мен жоғары білікті мамандардың жеке тəжірибесінің дамуын ескеру, сонымен қатар программаларға қойылатын соңғы талаптар мен оларды жасаудың өндірістік сипат алуын есепке алу құрайды.
Құрылымдық программалау – бұл белгілі бір ережелерге сүйене отырып,
программаның жасалу уақыты мен қателер санын азайтуға, сондай-ақ оны
түрлендіруді жеңілдетуге мүмкіндік беретін программалар құру техноло-
гиясы. Құрылымдық тəсіл жоба құрудың барлық сатыларын қамтиды, олар: специ фикациялау, жобалау, программалаудың өзі жəне оны тесттен өткізу
С++ тілінде программалау барысында белгілі бір тəртіпке жүгінудің маңызы аса зор. Бұл тілдің икемділігі мен мүмкіндіктерінің кеңдігі соншалықты, егер бастан-аяқ өзіңізді белгіленген бір шекаралық аймақта ұстамасаңыз, программа тез арада түзету мен басқаруға келмейтін бір ірі «құбыжыққа» айналып кетеді.
1. Интернет мәләметтер: http://www.c-cpp.ru/books
2. « С/С++. Жоғарғы деңгейлі тілде программалау » (Т. А. Павловская)

Мазмұны
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3
1.1 Статикалық айнымалылар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 4
1.2 Статикалық локальді айнымалылар ... ... ... ... ... ... ... ... ... ... ... ... ... .5
1.3 Статикалық глобальді айнымалылар ... ... ... ... ... ... ... ... ... ... ... ... ...8
2.1 Класстың статикалық мүшелері ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .10
Қорытынды ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..15
Қолданылған әдебиеттер ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ... ... ... ... 16

Кіріспе
Программалық жабдықтамалар жасаудың дағдарысы программаның өмір-
лік циклі барысында - оны жазу жоспары пайда болғаннан бастап қолданудан алып тастағанға дейінгі кезеңде - программалар құрудың жалпы шығындарын азайтатын жаңа тəсіл табу қажеттілігіне алып келді. Мұндай технология өткен ғасырдың 70-ші ж. Басында пайда болып, құрылымдық программалау деген атауға ие болды. Оның негізін программалау теориясы мен жоғары білікті мамандардың жеке тəжірибесінің дамуын ескеру, сонымен қатар программаларға қойылатын соңғы талаптар мен оларды жасаудың өндірістік сипат алуын есепке алу құрайды.
Құрылымдық программалау - бұл белгілі бір ережелерге сүйене отырып,
программаның жасалу уақыты мен қателер санын азайтуға, сондай-ақ оны
түрлендіруді жеңілдетуге мүмкіндік беретін программалар құру техноло-
гиясы. Құрылымдық тəсіл жоба құрудың барлық сатыларын қамтиды, олар: специ фикациялау, жобалау, программалаудың өзі жəне оны тесттен өткізу
С++ тілінде программалау барысында белгілі бір тəртіпке жүгінудің маңызы аса зор. Бұл тілдің икемділігі мен мүмкіндіктерінің кеңдігі соншалықты, егер бастан-аяқ өзіңізді белгіленген бір шекаралық аймақта ұстамасаңыз, программа тез арада түзету мен басқаруға келмейтін бір ірі құбыжыққа айналып кетеді.

Статикалық айнымалылар

Статикалық айнымалылар қолданыстағы файл немесе функция үшін берік айнымалылар болып табылады. Олар глобальдік айнымалылардан айрықшаланады, өйткені функция мен файлдан тыс олар белгісіз болады, бірақ өз мәндерін шақыру кезінде сақтап тұрады. Бұндай қасиет универсалды функция немесе кітапхана функцияларын жазған кезде ғана,
бағдарламалаушылар үшін өте тиімді және пайдалы болып табылады. Static пайдалану әсері глобальді және локальді айнымалылар үшін әртүрлі болғандықтан, біз оларды жеке қарап көрейік.
Статикалық локальді айнымалылар

Локальді айнымалы үшін static қолданылған кезде, компилятор айнымалы үшін ұзақ мерзімді сақтау аймағын, глобальді айнымалы үшін сияқты жасайды. Статикалық локальді және глобальді айнымалылар арасындағы негізгі айырмашылық, статикалық локальді айнымалы тек ол жарияланған аймағында ғана белгілі болып табылады. Жай сөзбен айтқанда, статикалық локальді айнымалы - функция арасындағы шақырылу кезінде, өз мәнің сақтатайтын айнымалы.
Бағдарламаның ішінде статикалық локальді айнымалылардың болуы, жеке функцияларды құрған кезде өте маңызды. Өйткені бағдарламаның ішінде шақырылу кезінде өз мәнің сақтатйтын әр түрлі типтегі кіші бағдарламалар болады. Егер статикалық локальді айнымалыларды қолдануға мүмкіндік болмаған кезде глобальді айнымалыларды қолдану керек, бірақ олар жанама әсерлерді туғызуы мүмкін. Төменде, статикалық локальді айнымалының count() функцияның ішінде қалай қолданылуы көрсетілген:

#include stdio.h
#include conio.h
int count (nti ) ;
int main(void)
{
do {
count(0);
}
while(!kbhit());
printf("count called %d times", count (1));
return 0;
}
int count (nti )
{
static int c=0;
if(i) return c;
else c++;
return 0;
}
Кейде, бағдарламаның жұмысы кезінде, функцияның қаншалықты шақырылатындығын білу қажет. Бұны глобальды айнымалыны қолдану арқылы білуге болады, бірақ ең жақсы тәсіл ол - өз ішінде ақпаратты сақтайтын функцияларды пайдалану. Мысалдағы count() функциясында көрсетілген. Бұл мысалда count() функциясы 0 мәнімен шақырылса, онда с айнымалы артады. (Мүмкін кейбір бағдарламаларда бұл функция басқада пайдалы жұмыс атқаруы мүмкін). Егер count() басқа мәнмен шақырылса, онда ол функцияның қанша рет шақырылуын көрсетеді. Функцияның шақырылу санын санау, бағдарлама жасау кезінде қажет болады.
Статикалық локальді айнымалының пайдалануды талап ететін функцияйның тағы бір жақсы үлгісі, реттік нөмірлерді жасайтын генератор. Оның жұмысы ескі санға негізделіп жаңа сан жасау. Мұны глобальді аныймалыны пайалану арқылы да жасауға болады. Алайда, функция бағдарламада қолданылғанда, глобальді айнымалыны жариялауды естен шығармау керек жене басқа айнымалылармен қайшыласпауын қадағалау керек. Сонымен қатар глобальді айнымаланы пайдалану, функцияны кітапхана функция ішіне орналастыру қиындыққа әкеледі. Ең тиімді шешім ол - static саны бар айнымалыны қолдану. Мысалда көрсетілгендей:
int series(void)
{
static int series_num;
series_num = series_num+23;
return(series_num);
}

Бұл мысалда, series_num айнымалысы функциялар арасындағы шақырулар үшін құрылған, ал ол жай локальді айнымалы сияқты болса, онда ол қайтан құрылып және жойылып тұрушы еді. Бұл дегеніміз әр бір шақырылу кезінде series() жаңа серия мүшесін, оған дейінгі мүшеге негізделіп, глобальды айнымалының жариялаусыз да жасауы мүмкін.
Series() функциясында ерекше нәрсені көруге болады. Series_num статикалық айнымалысында мән берілмеген. Бұл дегеніміз series_num бірінші шақырылу кезінде мәні 0-ге тең болады. Кейбір бағдарламалар үшін қолайлы болғандығымен, реттік генераторлардың көбісі бастапқы мәнді талап етеді. Бұл әрекетті орындау үшін, series()-тің бірінші шақырылуына дейін series_num-ға мән беру керек, егер series_num глобальді айнымалы болса бұл әрекет оңай орындалады. Алайда series_num-ды глобальді айнымалы ретінде пайдаланудан аулық болу керек, өткені ол static-тің екінші әдісіне әкеледі.
Статикалық глобальді айнымалылар

Static спецификаторы глобальді айнымалы ретінде қолданылғанда, компиляторға глобальді анйымалының мәнің жасау туралы тапсырыс береді, ол мән тек статикалық глобальді айнымалы жарияланған файлдың ішінде ғана белгілі болады. Ол дегеніміз, егер айнымалы глобальді болғанымен басқа файлдың ішіндегі кіші бағдарламал ол туралы білмей тұрады. Осылайша жанама әсерлердің пайда болуына мүмкіндік болмайды. Кейбір жағдайларда статикалық локальді айнымалылар сәйкес келмегенде, сіз жаңа компиляцияланатын файлды құрастырып, жанама әсерлердің пайда болуынан қорқпай жұмыс істеуінізге болады.
Статикалық глобальді айнымалыларды қолданылуын түсіну үшін, алдындағы тақырыптағы мысал өзгертілген. Енді бұл жерде бастапқы мән арқылы екінші функция қосылып мәндер сериясын жасауды іске қосады. Төменде, құрамында series(), series_start() және series_num бар файл көрсетілген:

* барлығы бір файлда болуы тиіс *
static int series_num;

int series(void) ;
void series_start(int seed);

series(void)
{
series_num = series_num + 23;
return(series_num);
}

* series_num баптандырылуы *
void series_start (int seed)
{
series_num = seed;
}

Кейбір белгілі бүтін сандармен series_start()-ты шақыра отырып, біз реттік генераторды іске қосамыз. Одан кейн series()-тің шақырылуы, генератордың келесі санды жасауды іске қосады.
Статикалық локальді айнымалылардың аттары, олар жарияланған функция немесе блок кодына ғана белгілі. Ал статикалық глобальді айнымалылардың аттары тек олар орналасқан файл ішінде ғана белгілі. Ол дегеніміз, егер series() және series_start() функцияларын бөлек файлға орналастырсақ, оларды қолдануға болады, бірақ series_num айнымалысына жолуға болмайды. Ол бағдарламаның басқа кодынан жасырылған. Шын мәнінде, сіз жаңадан series_num айнымалысын жариялап, бағдарламаның ішінде(басқа файлда) қорықпай қолдануынызға болады. Шын мәнінде static модификаторы өзге де функцияларды бұзбай, функцияның айнымалыны ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Математикалық модельдерге қойылатын талаптар
Меншіктеу операторы, барлық тілде пайдаланылатын негізгі оператор
Динамикалық айнымалылар құрылымы
Техникалық жүйелердің математикалық негіздері пәнінен алынған білімді автоматтандыру
Дельфи ортасында тізімдермен жұмыс істейтін компоненттер
Логикалық функцияларды ЭЕМ-де іске асыру, логикалық элементтер ЭЕМ-де сандарды көрсету әдістері
Деректерді қайта құру және полиморфизм. Полиморфизмді қолдану
Алгоритмдер және деректер структурасы
Java туралы жалпы түсiнiк
Молекулалық сутегі иондарының поляризациясы
Пәндер