Си тіліндегі жады ұғымы. Жады кластары

Автор работы: Пользователь скрыл имя, 11 Марта 2012 в 14:44, реферат

Описание

Программадағы барлық айнымалылар тек тип бойынша емес, сонымен қатар жады класы бойынша да жіктеледі. Си программалау тілінде төрт жады класы бар:
1. Автоматты (automatic);
2. Регистрлі (register);
3. Статистикалық (static);
4. Сыртқы (external);

Работа состоит из  1 файл

Жады класы.doc

— 103.50 Кб (Скачать документ)


Си тіліндегі жады ұғымы. Жады кластары

Жады класы – жадыдағы объектілердің орналасу тәртібін анықтайды.

Программадағы барлық айнымалылар тек тип бойынша емес, сонымен қатар жады класы бойынша да жіктеледі. Си программалау тілінде төрт жады класы бар:

1.      Автоматты (automatic);

2.      Регистрлі (register);

3.      Статистикалық (static);

4.      Сыртқы (external);

І. Автоматты айнымалылар

Программада автоматты айнымалыларды мына түрде жазуға болады:

auto A; auto char c1; auto int x= 125;

Біз программада «auto» қолданбауымыздың себебі «auto» автоматты түрде қосылатын функция. Автоматты айнымалының орындалу зонасы блокпен немесе белгіленген функциямен шектеледі. Ол функция жүктелгеннен кейін қосылып, функциядан шыққаннан кейін жойылады. Сол себепті автоматты фйнымалы жады көлемін алмайды. Автоматты функция мәнін басқа функция өзгерте алмайды, ол функция айнымалысы сол атпен жазыла алады.

Мысалы:

#include <stdio.h>

#include <conio.h>

main ()

{

int t;

         {

          int t=3;

                 {

                    int t=5;

                    printf("%d\n",t);

                 }

          printf("%d\n",t);

         }        

         getch();

}

 

Жауабы:

Бұл программада t айнымалысы бірнеше блокта жазылған, ол әрбір блокта бір-біріне тәуелсіз әр түрлі мәнге ие бола адады. Онымен әр түрлі операциялар орындала алады. Біздің программамызда t айнымалысының мәні экранға шығады. Біздің жағдайда 3,2,2 сандары экранға шығады. Мұндағы соңғы 2 саны «мусор» себебі оған 1-ші блокта мән енгізілмеген.

ІІ. Регистрлі айнымалылар

Регистрлі айнымалылар программада «register» кілтті сөзінің көмегімен жариаланады. Ол Си тілі авторының ойы бойынша ЭЕМ-ның регисторларында сақталуы керек. Оны автоматты айнымалы сияқты қолданады. Программаның жұмыс істеуін тездетуде қолдану көп жағдайда күмәнді болып табылады.

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

Программада статистикалық айнымалыларды мына түрде жазуға болады:

static char c; static int a=1;

Статистикалық айнымалылар автоматты айнымалылардай жарияланған функцияға немесе блогқа тиісті болады. Статистикалық айнымалының бір ерекшелігі  функция (блог) жұмысын аяқтағаннан кейін ол ешқайда жоғалмайды, оның мәні келесі шақырылатын функциялар үшін сақталады.

Мысалы:

#include <conio.h>

#include <stdio.h>

int plus()

{

    static int x=0;

    x=x+1;

    printf("x=%d\n",x);

}

main()

{

       plus();

         plus();

           plus();

       getch();

}

 

Жауабы:

 

 

Бастапқы нөлге тең мән х  айнымалыға тек бір рет беріледі. Содан кейін main программасында plus1() функциясы бірнеше рет жүктеледі. Функцияның әрбір жүктелуінде х аргументі өзгермейді, оған алдыңғы функцияның мәні қалдырылғандықтан plus1() функциясының әрбір жүктелуінде х айнымалысы 1 санына өзгеріп отырады 1,2,3 ...  

ІV. Сыртқы айнымалылар

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

Мысал №1:

#include <stdio.h>

#include <conio.h>

int x=145;/*сыртқы айнымалы */

main()

{

              extern int x,y;

              printf("x=%d y=%d \n",x,y);

              getch();

}

int y=541; /*сыртқы айнымалы */

 

Жауабы:

 

 

Сыртқы айнымалыларды кез-келген функциядан тыс жазуға болады, сонда да анық жады бөлінеді. Кез-келген басқа функцияда бұл айнымалыларға жүктелген кезде оларды жариялау қажет. Ол әрине «extern» жариялаушы арқылы жарияланады. Қайтсе де сыртқы айнымалыларды пайдаланудан аулақ болу қажет, себебі олар қиын табылатын қателер қатарына жатады.

Мысал №2:

#include <conio.h>

#include <stdio.h>

     int x=3; /*сыртқы айнымалы */

     /*х-қа үлкею */

     int plus1()

     {

          x=x+1;

          printf("Birdi kosami: x=%d\n",x);

     }

     /*x-қа азаю */

     int minus1()

     {

          x=x-1;

          printf("Birdi azaitamiz: x=%d\n",x);

     }

     int main()

     {

          printf("Bastapki man x=%d\n",x);

          plus1();

          minus1();

          minus1();

          printf("Songi man x=%d \n", x);

          getch();

     }

 

Жауабы:

 



Информация о работе Си тіліндегі жады ұғымы. Жады кластары