И 08. 14/02 Қазақстан Республикасы Білім және Ғылым министрлігі


 С\С++  программалау тілдерінің тарихына қысқаша шолу



Pdf көрінісі
бет4/21
Дата09.12.2019
өлшемі3,21 Mb.
#53264
1   2   3   4   5   6   7   8   9   ...   21
Байланысты:
baibaktina 6
ДСШ баяндама

 
1.3. С\С++  программалау тілдерінің тарихына қысқаша шолу   
Си-  тілі  жүйелік  программалау  тілі,  бұл  тілді  компиляторлар  мен  операциялық 
жүйелерді жазуға және қолданбалы программаларды жазуға қолданылады. Мысалы, 
Нью–Джерси штатының Мюррей Хилл  қаласында Bell  laboratiories компаниясының 
ұйымдастыруымен  1969  жылы  UNIX  –операциялық  жүйесі  жазылды,  бұл    жүйе 
PDP-7  компьютеріне  орнатылған.  С  тілінің  негізгі  идеяларының  көпшілігі  BCPL 
тілінен алынған.  
 Жалпы Си тілінің шығу тарихына тоқталайық: 
Ең  алдымен  1960  жылы  Аlgol  тілі  пайда  болған.    Содан  кейін  CPL- 
(біріктірілген  програмамлау  тілі)  1963  жылы  жазылған.  Осы  тілдер  негізінде 
іргелендіру  арқылы  Мартин  Ричардс  ВCPL(базалық  біріккен  программалау  тілі) 
тілін  1967  жылы  дүниеге  әкелген.  Артынша  1970  жылы  Кен  Томпсон  В  тілін 
ойластырған.  Алғашқы  Си  тілі  1972  жылы  Bell  laboratiories      лабораториясында 
жазылған және оның авторы - Деннис М.Ритчи.  
1983 жылы  АNSI(Америка ұлттық стандарттау институты) институты Си тілін 
стандарттау мақсатын қойды. Себебі, Кен Томпсон  В  тілін жазып бітіргенде PDP –
11 компьютері пайда болған. Сондықтан UNIX операциялық жүйесін және В тілінің 
компиляторын жаңа машинаға сәйкестендіріп жөндеген. Бұл PDP-11 компьютерінің 
оперативті  жадысының  көлемі  -24  Кб,  мұның  16  Кб  орыны  операциялық  жүйеге 
қолданылған. Сонымен қатар, дискідегі орыны – 512 Кб болған. UNІX–ті  В тілінде 
қайта  жазу  идеясы  туындаған.  Бірақ,  В  тілі  жәй  жұмыс  жасаған  және  В  сөздермен 
жұмыс  жасауға  бағытталған.  Жалпы  BCPL  және  В  тілдері  –  «типсіз»  тілдерге 
жатады.  Сондықтан  В  тілінің  өзін  жетілдіру  қажеттілігі  туындаған.  Ізінше  1971 
жылы  жаңа  версиясын  -  Си    тілін  жаза  бастаған.  Деннис  Ритчи  тілдің  нақты  бір 
құрылғыдан тәуелсіздігін қарастырады. 
Программалау  тілдерінің  көбісін  (C,  Рascal,  Lisp  u  APL)  жеке  авторлар 
құрастырғандықтан біртұтастығымен ерекшеленеді, және көпшілік авторлар жазған 
(Ada,  PL/1  u  Algol60)  тілдеріне  қарағанда  бір  автордың  жақсы  білетін    сұрақтарын 
шешеуге мамандандырылған сипатта құрылады. 

35 
 
      Деннис  Ритчи  жүйелік  програмалау  саласында  мойындалған  ең  ірі  маман 
саналады. 
 
 С\С++  программалау тілдерінің   мүмкіндіктері мен ерекшеліктеріне шолу 
 Деннис  Ритчи  жазған  Си  тілінің  таралу  себебі:  салыстырмалы  түрде  «төмен 
деңгейлі»  тіл,  сондықтан  алгоритм  жұмысының  әрбір  бөлімін  бақылау  мүмкіндігі 
бар  және  жоғары  деңгейлі  тілдер  принцптері    енгізілгендіктен,  нақты  бір 
компьютердің архитиктурасы ерекшелітерінен тәуелсіздігін қамтамасыз ету мүмкін 
болды. 
   Жоғарғы деңгейлі тілдерден  Си тілінің ерекшелігі: 
- операторлар түрі өзгеше; 
- көрсеткіштер жиі қолданылады; 
- басқа  тілдерге  қарағанда  синтаксикалық  ережелері  аз,  нәтижесінде 
компилятор тиімді жұмыс жасау үшін 256 Кб оперативті жады жеткілікті; 
- қызметші сөздерге қарағанда операторлар мен олардың комбинациялары көп; 
- алғашқыда Си тілінде 27 қызметші сөз ғана болған. Кейін ANSI Си тіліне және 
Microsoft C тіліне қызметші сөз қосылды, жалпы саны шамамен 50;  
- Көп программалау тілдерінде бар функциялар Си тілінде жоқ; 
- Си тілінде қосалқы енгізу шығару функциялары, математикалық функциялары 
және  жолдармен  жұмыс  жасау  функциялары  жоқ,  бірақ  сол  функциялардан  және 
басқа функциялардан тұратын жеке кітапханалардан алу мүмкіндігі қарастырылған; 
- мәліметтер  типін  бақылау  жеңіл,  яғни  программаның  бір  жерінде 
айнымалыны  символ  түрінде  ,  екінші  бір  жерінде  осы  символдың  ASCII  коды 
ретінде қарастыруға болады; 
- Си тілінде қазіргі тілдері секілді барлық басқарушы конструкциялары бар(For, 
if / else,….); 
- Cи  тілінде  модулдік  программалауға  болады,  яғни  программаның  әртүрлі 
бөлігін жеке копиляциялауға болады; 
- Ассемблер тілінде жазылған ішкі программаларды шақыруға болады; 
- көрсеткіштер  яғни  жады  аймақтарынан  берілген  адрес  бойынша  қарау 
программаны  орындау  жылдамдығын  арттырады.  Көрсеткіштер  көп  тілде 
қолданылады,  ал  көрсеткіштерге  арифметикалық  амалдар  тек    Си  тілінде 
қолданылады. 
- Си  тілінде  барлық  массивтер  бір  өлшемді,  бірақ    Си  тілінде  бір  өлшемді 
массивтерден тұратын конструкциялар бар, яғни көп өлшемді массивтер құрылады; 
- тек  қажетті  кітапханалар  шақырылатын  болғандықтан  жады  тиімді 
қолданылады; 
- басқа тілдердегідей қосалқы функциялар; 
- көптеге мамандандырылған функциялар кітапханаларының жинытығы бар. 
 Кемшілігі: 
- Си  тілінде  мәліметтер  типі  қатаң  қадағаланбайды,  сондықтан    Си  тілінде 
тәжірибелі  программист  байқағанмен  жаңа  үйренуші  байқамайтын  айнымалы 
мәндеріне өзгерістер болуы мүмкін. 

36 
 
Мысалы,    бір  өрнекте  (=)  меншіктеу  операторы  бірнеше  рет  қолданылуы 
мүмкін.  Сондықтан  нәтижесінің  типі  түсініксіз  және  қиын  анықталады.  Бірақ  оны 
қолдану арқылы тілдің қуаты арттырылған.  
   С++ 
тілі 
Си 
тілінің 
толықтырылған, 
яғни 
объектілі 
бағытталған 
программалау(ОБП) құралдарымен толықтырылған жиыны деуге болады.  
Си және С++ тілдерінің айырмашылығы: 
     -құрылымдар  мен  класстар  аттары  мәләметтер    типтерінің  аттары  болып 
табылады. С- де класс түсінігі жоқ. 
 
 
 
  С/С++ тіліндегі программаның  жалпы құрылысы 
Си  тіліндегі  кез-келген  программа  main  функциясынан  тұрады.  Мұның 
орындалу  барысында  басқа  функциялар  шақырылады.  Функциялар  арасындағы 
байланыс параметрлер арқылы беріліп  функция мәнін қайтарып алу арқылы жүзеге 
асады.  
Сонымен  қатар,  Си  тілінің  компиляторында  мәселені  бірнеше  бөлікке  - 
файлдарға    бөліп,  әрқайсысын  жеке-жеке  трансляциялап,  сосын  оларды  жеке  бір 
орындалатын  файлға,  жинау  мүмкіндігі  бар.  Жинақтау  байланыс  редакторының 
көмегімен жүзеге асырылады. 
Программа құрылымы: 
Кез-келген  программа  комментарийден  басталады.  Комментарийді  Си 
тілінде «/*» , «*/» белгілеріне алынып жазылған блок түрінде беруге болады. 
Содан  кейін  препроцессор  дерективасы  орналасады.  Препроцессор 
директивасы  берілгенде  кітапханалық  файлда  –тақырыптық  файлда  орналасқан 
кодты  программаға  қою  нұсқауын  береді.  Мұндағы  .h    кеңеймелі  файлдар 
тақырыптық  файлдар  деп  аталады.  Тақырыптық  файлдарда  әртүрлі  тұрақты  мен 
таулар сипатталады. Функциялар прототиптері сақталады. 
Препроцессор  дерективасынан  кейін  main  функциясы  сипатталған  бөлігі 
орналасады.       
Main  функциясы  барлық  программада  міндетті  түрде  болуы  тиіс,  одан 
программа  орындалуы  басталып,  Return  инструкциясы  шақырылғанда  аяқталады.    
Main функциясының денесі фигуралық жақшада орналасады.  
Си  тілінде  барлық  айнымалы  оған  программаның  қандайда  бір  бөлігінен 
сілтеме жасалғанға дейін сипатталуы тиіс. 
    
Препроцессор директивалары 
Си  тілінде  жазылған  программа  текстінде  кездесетін  инструкциялар 
(нұсқаулар)  препроцессор  директивасы  (ПД)  деп  аталады.  Олар  программа 
трансляцияланғанға  дейін  орындалады  және  программаның  текстін  өзгертуге 
мүмкіндік  береді.  Мысалы  текстегі  кейбір  лексемдерді  өзгерту,  басқа  файлдан 
мәтінді қосу, мәтіннің қандай да бір бөлігін орындауға, трансляциялауға шектеу қою 
т.б.  Барлық  препроцессор  директивасы  «#»  таңбасымен  басталады  және  соңынан 
нүктелі үтір (;) қойылмайды.  
Түрлері: 

37 
 
1)  #include директивасы. 
 
 
 
Бұл 
программаға 
көрсетілген 
файлдағы 
мәліметтерді 
қосады. 
Бұл 
директиваның екі формасы бар: 
#include “файл аты“ 
# include <файл аты> 
Мұндағы,  «Файл  аты»  операциялық  жүйелер  талабына  сай  көрсетіледі,  яғни 
тек файл атынан немесе оның маршрутымен алынған атауынан тұруы мүмкін. Егер 
«файл  аты»  тырнақшада  берілсе,  онда  файл  сәйкес  көрсетілген  маршрутпен 
анықталатын орыннан, ал ол көрсетілмесе жұмысшы каталогтан ізделеді. Егер файл 
аты  бұрыштама  жақшада  (<  >)  берілсе,  онда    файл  операциялық  жүйенің  PATH 
командасы арқылы берілген, стандартты директориясынан ізделеді.  
#include  директивасы  іштестірілген  болуы    мүмкін,  яғни  қосылатын  файлда 
тағы кездесуі мүмкін. Көбінесе бұл программаға тақырыптық файлдарды қосу үшін 
қолданады,  яғни  стандартты  кітапханалық  функциялар  прототиптерінен  тұратын 
файлдарды  қосуға  мүмкіндік  береді.  Сондықтан  С  тіліндегі  программа  осы 
директивадан басталады. 
2) #define  директивасы.  
#define  –  директивасы  жиі  қолданылатын  тұрақтыларды,  қызметші  сөздерді, 
операторларды  және  өрнектерді  кейбір  идентификаторлармен    ауыстыруға 
мүмкіндік 
береді. 
Сандық 
немесе 
текстік 
тұрақтыларды 
ауыстыратын 
идентификаторларды атаулы тұрақтылар (именованные константы) деп атайды.  
Программа 
фрагменттерін 
алмастыратын 
идентификаторларды 
(макроопределения) макроанықтамалар деп атайды. 
 #define екі формасы бар: 
#define <идентификатор> <текст> 
#define <идентификатор> (программалар тізімі тексті) 
 
 
Мысалы, #define WIDTH 80 
       #define LENGTH (WIDTH+10) 
бұл директивалар программа текстіндегі әрбір WIDTH сөзін 80 санына, ал LENGTH 
сөзін (80+10) өрісіне ауыстырады.  
Макроанықтамалардағы  жақшалар  олардағы  алмастырудың  орындалу  ретін 
анықтауға  мүмкіндік  береді.  Мысалы,    жақша  болмаса  мына  өрнек:  t=length+7 
мынадай  t=80+10*7  өрнекке  ауыстырылады,  ал  қажетісі  t=(80+10)*7  болатын, 
сондықтан жақша қойған дұрыс.  
2-ші  формасында  формалды  параметрлер  тізімі  көрсетіледі,  мұнда  тізім  үтір 
арқылы    ажыратылып  көрсетіледі,  және  макроанықтама  текстіндегі  алатын 
позициясын анықтайды. 
Шақырғанда  идентификатордан  кейін  формалды  параметрлер  санына  сәйкес 
нақты аргументтер көрсетілуі тиіс.  
Мысалы,  
#define MAX(x,y) ((x)>(y))?(x):(y) 
Бұл  директива  t=MAX(i,s[i]);  фрагментін    t=((i)>(s[i])?(i):(s[i]);  фрагментіне 
ауыстырады.  
3) #undef – директивасы 

38 
 
Бұл    директива  #define  директивасы  қызметін  қайтаруға  қолданылады.  Яғни, 
көрсетілген  идентификаторларға  қолданылатын  #define  анықтамасы  қызметін 
болдыдырмайды.  
Мысалы,  
#undef  WIDTH 
 
          #undef  MAX  
Бұл  директивалар    WIDTH  атаулы  тұрақтысымен  MAX  макроанықтамасын 
болдырмайды.       
 
Тақырыптық файлдар атаулары төмендегідей: 
assert.h,  float.h,      math.h,   ctype.h,  
limits.h,  setjmp.h,   errno.h,   locale.h,  
signal.h,  stdarg.h,   stddef.h,   stdio.h,  
stdlib.h,  string.h,    time.h. 
 
 
Кейбір  тақырыптық  файлдар  мазмұны  Стандартты  кітапханалар  ретінде  жеке 
қарастырылыды, сәйкес бөлімді қараңыз. 
 
 
Бақылау сұрақтары:  
1.  С/С++ тілдері қандай программалау тілеріне жатады? 
2.  Универсалды тілдерден айырмашылығын ата? 
3.  Оперативті жадыдан тіл компиляторы қанша орынды қажет етеді? 
 
 
 
 
Әдебиеттер: [1-2], [6-7]. 
 
 
Дәріс  №2.    С/С++  ТІЛДЕРІНІҢ  ЭЛЕМЕНТТЕРІ.  ТҰРАҚТЫЛАР. 
АЙНЫМАЛЫЛАР. ТИПТЕР 
Дәріс  мақсаты:  Си  тіліннің  негізгі  элементтері:  литерлер,  символдары, 
тұрақтылар, айнымалылар, типтері т.б. таныстыру.   
Кілттік  сөздер:  литерлер,  идентификаторлар,  тип,  стрингтік  тұрақты, 
кфалификаторлар, тұрақты өрнек.  
Дәріс жоспары: 
2.1.  Тілдің элементтері 
2.2.  С/С++ тіліндегі типтер. 
2.3.  Тұрақтылар. 
2.4.  Глобалды және локалды айнымалылар.   
 

39 
 
2.1. Тілдің элементтері 
 Символдар: 
-  латын әріптері; 
-  цифрлар; 
-  арнайы символдар; 
-  пробелмен ажыратылмаған символдар комбинациясы, бір мағыналы символ 
ретінде қабылданады, Мысалы  ++,  - - ,   «»  , +=  , /-  , //. 
Идентификаторлар: 
Идентификаторлар  –  символдардан,  цифрлардан  және  «_»  таңбасынан  тұрады. 
С  компиляторы  31  символды  таниды.  С  және  С++  тілдері  символдар  регистріне 
қарайды,  яғни  компилятор  үлкен  және  кіші  символдарды  әртүрлі  символ  ретінде 
қабылдайды. 
  Мысалы,  Name_TYPE  және    name_type  идентификаторлары  әртүрлі  деп 
қарастырылады. 
  Программистер  арасында  жарияланбаған  келісім  бойынша  кезкелген 
идентификаторды сәйкес типінің бірінші әрпінен бастау ұйғарылған. 
Қызметші сөздері: 
  С  тіліндегі  қызметші  сөздер  қосалқы  идентификаторлар  болып  табылады. 
Оның әрқайсысы белгілі бір әрекет орындайды. Қызметші сөздер мағнасын өзгерту 
мүмкін  емес,  тек,  #define  препроцессор  директивасы  арқылықызметші  сөз 
псевдонимін құрып, оның әрекетін көшіруге болады.  
 
2.2. С/С++ тіліндегі типтер 
С  немесе  С++  тілдерінде  мәндер  төмендегідей  базалық    типтер  бірімен 
бейнеленеді. Олар: 
1.  char    -  бірлік  байт,  қолданылатын  литерлер  жиынтығындағы  бір  литерді 
меншітей алады. 
2.  int – бүтін. 
3.  float - 3.4E- 38 және 3.4E+38 аралығындағы нақты сандар. 
4.  double – 1.7E-308 –1.7E+308 аралығындағы жылжымалы нүктелі сандар. 
5.  Void типті, ешқандай мән қайтармайтын функцияларды қолданылады. 
6.  bool типті айнымалы С++-те true немесе false мәнін қабылдайды.  
7.  Санылымды тип. 
8.   Көрсеткіштер. 
 
Саналымды  типті  айнымалы  санап  көрсетілген  тұрақтыға  оның  атауы 
арқылы сілтейді.  
С/С++  тілі  машинадан  тәуелді  тіл  болғандықтан  аталған  типтерге  жадыдан 
бөлінетін  орындар  көлемі  нақты  атап  көрсетілмейді.  Дегенмен,  шамамен  сипаттау 
мүмкіндігі бар. 
Сонымен қатар, базалық типтерге қолданылатын бірнеше квалификаторлар бар.  
 Квалификаторлар 
short (қысқа) және long (ұзын) квалификаторлары бүтін типтерге қолданылады:  
Short int sh;  

40 
 
Long int counter; 
Бұндай сипаттауларда int сөзін жазбауға болады. Көбінесе short квалификаторы 
арқылы сипатталған бүтінге 16 бит бөлінеді, long квалификаторымен сипатталса - 32 
бит, ал int типіне - не 16, не 32 бит бөлінеді.  
Signed  (таңбалы)  және  unsigned  (таңбасыз)  квалификаторларын  char  типіне 
және кез келген бүтін типке қолдануға болады.  
Unsigned  мәні  әрқашан  оң  немесе  нөлге  тең  және  2
n
  модулі  бойынша 
арифметика заңына бағынады. Мұндағы, n- типті бейнелегендегі биттер санына тең.  
Мысалы,  char  мәніне  8  бит  бөлінсе,  онда  unsigned  char  0-ден  255-ке  дейінгі 
диапазондағы мәнге, ал signed char -128-ден 127-ге дейінгі мәнге ие.  
Барлық өлшемдегі атаулы тұрақтылар   және  стандартты 
тақырыптық файлдарында орналасады.
 
Сонымен қатар, С тілінде екі квалификатор бар: Const  және Volatile.   
Const  –  мәні  өзгермейтін  айнымалыларды,  ал  Volatile  кез  келген  уақытта  мәні 
өзгеретін айнымалыларды белгілеу үшін қолданылады. 
Const -программа орындалу барысында өзгермейтін айнымалылар  - тұрақтылар 
деп аталады.  
Сипатталуы:  
Мысалы, Const float pi=3014159; 
        Const int imin=1, isale=5; 
Тұрақтыны  сипаттаудың  екі  тәсілін  білеміз,  Const    және  define;  көпшілік 
жағдайда  екеуі  бірдей  нәтиже  береді,  бірақ  мынадай  ерекшеліктері  бар:  define  – 
макротұрақты, ал Const  арқылы айнымалы құрылады.  
Volatile    бұл  айнымалының  мәні  сыртқы  әрекеттер  әсерінен  өзгеруі  мүмкін 
екенін білдіреді.  
Мысалы, Volatile  int EV_time; 
Бұл  жағдайда  EV_time  айнымалысы  таймер,  яғни  жүйелік  құрылғы  арқылы 
өзгереді.  
  Бұл  бұл  квалификаторлар  бір  уақытта  қолданылуы  мүмкін,  мысалы,  Const 
Volatile Const EV_time; 
Мұнда  Const  EV_time  айнымалысының  мәні    программасының  денесінде 
өзгертілменгенмен, оның мәні сырттай жанартылуы мүмкін.  
 
2.3. Тұрақтылар 
 
Программаның орындалу барысында мәні өзгермейтін шама – тұрақты деп 
аталады.   
Бүтін  тұрақты,  мысалы,  1234,    int  типімен  сипатталады.  Long  типті  тұрақты  l 
немесе L әрпімен аяқталады. Мысалы, 123456789L. Таңбасыз тұрақтылар u немесе U 
әрпімен аяқталады. Ал ul немесе UL-мен аяқталатын тұрақтылар типі - unsigned long 
екенін көрсетеді.  
Сонымен  қатар,  бүтін  мән  ондық  форматта  немесе  басқа  8-дік  немесе  16-лық 
форматта  берілуі  мүмкін.  Егер  тұрақты  нөлден  басталса,  онда  ол  8-дік  форматта, 
егер  0х  немесе  0Х  болса,  онда  16-лық  форматта  көрсетілген.  Мысалы,  ондық  бүтін 
31-ді  037  немесе  0Х1F  түрінде  жазуға  болады.  8-дік  және  16-лық  тұрақтылардың 
жазылуы L және U әрпімен аяқталуы мүмкін. 

41 
 
 Мысалы, 0XFUL тұрақтысы 15 мәніне және unsigned long типіне ие.  
Жылжымалы нүктелі тұрақтылар. Егер тұрақты f немесе F әрпімен аяқталса, 
онда тип float, ал l немесе L болса, онда long double типті болғаны.  
Литерлік  тұрақтылар.  Литерлік  тұрақтылар  деп  апострафқа  алынған  литер 
түрінде жазылған бүтінде айтамыз.  
Мысалы, 'x'. Литерлік тұрақтының мәні ретінде литердің сандық коды алынады. 
Мысалы,  '0'  литерлік  тұрақты  ASCII  кодында  48  кодына  сәйкес  келеді.  Бұның  0 
мәніне  ешқандай  қатысы  жоқ.  Литерлік  тұрақтылар  көбінесе  басқа  литерлермен 
салыстыру  үшін  қолданғанымен,  олар  басқа  бүтін  типтер  сияқты  сандарға  амалдар 
қолдануға қатыса алады.  
 
Тұрақты өрнек - тек тұрақтылармен ғана өрнектелетін өрнек.  
Мұндай  өрнектер  компиляциялау  барысында  есептеледі,  сондықтан  оларды 
келген жерде қолдануға болады. 
 Мысалы: 
#define SAN 368 
char line[SAN +1]; 
 
Стрингтік тұрақты – нөл немесе қос тырнақшаға алынған литерлер. Мысалы,  
" Бұл жолдық тұрақты" 
немесе " " /* бос жол */ 
Тырнақшалар  жолдарға  кірмейді,  ол  тек  оның  шектеуі  ретінде  қолданылады. 
Жолдық  тұрақтыларды  компиляциялау  барысында  бір-біріне  жалғауға  болады. 
бөліктерге бөліп, оларды бөлек жолдарға жазуға мүмкіндік береді.  
Шын мәнінде жолдық тұрақты ол литерлер массиві. 
 Strlen(s) функциясы s жолының ұзындығын есптейді. 
/* strlen: s жолының ұзындығын қайтаратын функция мазмұны */  
int strlen(char s[ ] ) { 
int i; 
i=0; 
while ( s[i]!='\0') 
++i; 
return i; 

Жолдарға  қолданылатын  strlen  және  басқа  функциялар    стандартты 
тақырыптық файлында сипатталған.  
‘\о’ – null-литер стрингтің ішкі бейнеленуінде міндетті түрде соңына қойылады. 
Ескерту: бір литерден тұратын литерлік тұрақты мен жол бірдей емес.  
 
Саналымды тұрақты. Санау -ол бүтін тұрақтылар тізімі. 
 Мысалы, 
Enumeration – ағылшын сөзі, «санау» деген сөзді білдіреді. 
Enum boolean{ NO, YES}; 
Enum months { JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, 
AUG, SEP, OCT, NOV, DEC }; /* FEB 2, MAR 3 т.с.с. */ 

42 
 
  Әртүрлі саналымдарда атаулар әртүрлі болуы тиіс. Бір саналым ішінде мәндер 
қайталануы  мүмкін.  Enum  құралы  тұрақтыларға  ыңғайлы  аттау  беруге  мүмкіндік 
береді,  #define  препроцессоры  директивасына  қарағанда  мұндағы  тұрақтылар 
мәндері генерациялана береді.  
2.4. 
Глобалды және жергілікті айнымалылар  
Айнымалылар.    Программаланың  орындалу  барысында  мәні  өзгеретін 
шамалар айнымалылар деп аталады. 
С/С++  тілінде  кез  келген  айнымалы  оны  қолданғанға  дейін  анықталуы  керек. 
Декларацияда  айнымалылардың  қасиеттері  хабарланады.  Ол  типтің  атынан  және 
айнымалылар тізбегінен тұрады. 
 Мысалы, 
int fahr,celsius; 
int lower,upper,step; 
Мұндағы  int  типі  көрсетілген  айнымалылардың  мәні  бүтін  екенін  білдіреді,  ал, 
float бөлшек бөлігі бар мәндер. 
Бақылау сұрақтары: 
1.  С/С++ тілдеріндегі лиетр түсінігі нені білдіреді? 
2.  Типтеріне жадыдан бөлінетін орын мөлшерін нақты атауға бола ма? 
3.  Идентификаторларды неше символға дейін қабылдайды? 
4.  Литерлік тұрақты мен стрингтік тұрақты айырмашылығы неде? 
 
Әдебиеттер:[1-2], [5-10], [16-17]. 
Дәріс №3. ЕНГІЗУ-ШЫҒАРУ МҮМКІНДІКТЕРІ  
Дәріс  мақсаты:  С/С++  тілдерінің  енгізу-шығару  мүмкіндіктерімен  таныстыру. 
Жиі 
қолданылатын 
енгізу-шығару 
функцияларын 
меңгерту 
және 
негізгі 
параметрлеріне көңіл бөле отырып, қалған мүмкіндіктерін зерттеуге бағыттау. 
Кілттік  сөздер:  енгізу,  шығару,  енгізу-шығару  форматы,  функциялар,  лектер, 
буферлік  лектер,  лектік  класс,  басқару  символдары,  формат  спецификаторлары, 
флагтар. 
Жоспары: 
 
3.1. С тіліндегі енгізу-шығару құралдары 
3.2.  С++ тіліндегі енгізу-шығару құралдары 
3.3. С тілінде форматтап енгізу және шығару 
3.4. С++-тегі форматтау функциялары мен флагтар 
 
 
3.1. С тіліндегі енгізу-шығару құралдары 
 
С/С++ тілдерінде 20-дан астам мәліметтерді енгізу-шығару тәсілі бар. 

43 
 
 
Енгізу-шығару  стандартты  кітапханалық  функциялар  файлдармен  және 
әртүрлі  құрылғылармен  байланысқан  мәліметтерді  оқуға  немесе  жазуға  мүмкіндік 
береді. 
 
С тілінде файлдың қандай да бір алдын-ала анықталған структурасы жоқ.  Кез-
келген мәлімет байттар тізбегі түрінде қарастырылады. 
 
Жалпы енгізу-шығару функцияларын негізгі үш категорияға бөлуге болады: 
-  Лектік(потоктық); 
-  консолдық (консольные); 
-  төмен деңгейлі (низкоуровневые). 
Лектік  функциялар:  буферлік,  форматталған,  форматсыз  енгізу-шығару 
мүмкіншілігін жүзеге асырады. 
Буферлік  лектердің  мәліметтерді  уақытша  жазу-оқу  барысында  буферде 
сақтау  мүмкіндігі  бар.  Дискке  тікелей  жазу  уақыт  алады,  ал  буферлік  аймақты 
пайдалану процесті тездетеді. 
Лектік функциялар мәліметтерді символдар легі түрінде қабылдайды. 
Лектік  файлдар  арқылы  белгілі  бір  мөлшердегі  және  форматтағы  символдар 
блогымен алмасуға болады. 
Файлды  ашқанда  лектік  функцияны  пайдаланып  файлмен  FILE      типті 
структура  арасында  байланыс  орнатылады  да  программа  сәйкесінше  осы 
структураға сілтемені алады, ол лек көрсеткіші  немесе лек деп аталады. 
●  Сонымен  қатар  консоль  немесе  порт  арқылы  енгізу-шығару  орындалады 
(мысалы, принтер порты арқылы).  
Бұл жағдайда сәйкес функциялары мәліметтерді байттап оқып-жазады. 
 Консольмен  жұмыс  жасау  қосымша  мүмкіндіктер  береді.  Бұлар  мынадай 
қосымша мүмкіндіктерді орындайды: 
-  символдық клавиатурадан енгізілген кезеңін анықтау; 
енгізілген символдар ЭХО режимін қосу-ажырату. 
Мысалы, символдың клавиатурадан енгізілген кезеңін анықтау, т.б. 
●  Төмен  деңгейлі  категория  функциялары  тікелей  жүйелік  енгізу-шығару 
құралдарын  пайдаланады,  яғни  төмен  деңгейде  файлға  немесе  периферийлік 
құрылғыларға  жол  ашады.  Төменгі  деңгейлі  функциялар  арқылы  файл  ашқанда 
оның  дескрипторы  –  бүтін  сан  қайтарылады  да,  ол  кейін  файл  идентификаторы 
ретінде қолданылады. 
Ескерту: Лектік функция мен төмен деңгейлі функцияларды бір программада 
араластыру арқылы конфликт пайда болады. 

Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   21




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет