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



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


10.2. Typedef құралы 
 
Си тілінде мәндер типіне жаңа атау беруге болатын құрал  - typedef құралы бар. 
    Мысалы: 
   typedef  int  butun;  
 
Мұндағы  butun  int    типінің  синонимі.  Мұны  сипаттау  барысында  төмендегідей 
қолдануға болады: 
    Butun i,k; 
    Butun Massiv[]; 
 
Сол секілді: 
 
    Typedef char  * String; 
 

79 
 
 Мұнда  String    сhar  *  синонимі,  яғни  char  типті  элементке  сілтеуіш  секілді 
анықталады,   қолданылуы: 
 
String p, pt[M]; 
 
Мұндағы  типтер  атауы  ерекшелеу  мақсатында  үлкен  әріптен  басталады.  Бұл 
құрал жаңа тип құрмайды, тек бұған дейін бар типке жаңа ат береді.  
Бұл құралды қолданудағы басты мақсаттар мынадай: 
1)  Программаны  басқа  машинаға  көшіруге  байланысты  мәселелерді  шешуге 
қажетті  параметрлерді  анықтау;  яғни  typedef  арқылы  машинадан  тәуелді  болатын 
типтерді  сипаттасақ,басқа  машинаға  программаны  көшіру  барысында  тек  typedef-ті 
ғана қайта анықтай қоямыз. 
2)  Программа  текстін  түсінітірек  болсын  деген  мақсатқа  байланысты,  яғни 
мысалы  Treeptz(tree-дерево,  pointeг-сілтеуіш)  атауы-ағылшын  атауы  күрделі 
структураға көрсеткіш түрінде  анықталған типке қарағанда түсініктірек; 
 
10.3. Биттік өрістер 
 
Жады  жетіспеген  жағдайда  бірнеше  обьектіні  машинаның  бір  сөзіне  сиғызу 
қажет болуы мүмкін. 
  Осы  жағдайда  Си-де  сөз-дегі  өрістерді  анықтау  және  тікелей  мәлімет  алмасу 
мүмкіндігін қолдануға болады. 
  Сонымен, биттік өріс дегеніміз - жадының “сөз” деп аталатын бірлігінің ішіне 
енетін биттер жиынтығы.Өрістерді анықтау және онымен мәлімет алмасу мүмкіндігі 
структура арқылы анықталады.  
Мысалы: 
 
      struct { 
            unsigned  int is_keyword:1; 
            unsigned  int is_txtern:1; 
            unsigned  int is_static:1; 
            } flags; 
 
Бұл  жазбада    flags  үш  бірбитті  өрістерден  тұрады,  мұндағы  (:)-ден  кейінгісін 
өрістер  енін  анықтайды.  Ал,  өрістер    unsigned  int  түрінде  сипатталуы  -  таңбасыз 
шама ретінде анықталу қажет екенін көрсетеді. 
Жеке өрістерін: flags.is_keyword 
                            Flags.is_static 
Түрінде қолданамыз. 
Өрістерді арифметикалық өрнектерде “бүтіндер” секілді қолдануға  болады.  
Мысалы: 
     Flags.is_Extern=flags.is_static=1        /*сәйкес биттерге 1-ді орнатады.*/ 
     Flags.is.extern=flags.is_static=0          /*оларды 0-ге айналдырады.*/ 
     If (flags.is_extern= =0)                         /* тексеру*/ 
Өрістерге  қатысты  мәселелер  жүзеге  асыру  барысында  туындайды,  мысалы, 
өрістің  сөз  шекарасынан  шығып  кетуі...,  өрісті  атаусыз  қолдануға  болады  (:ені 

80 
 
көрсетілген),  мұнда  қажетті  мөлшерде  разрядтар  тастап  кетуге  болады.  Кейбір 
машиналарда  өрістер  солдан  оңға  қарай,  кейбірінде-оңнан  солға  қарай 
орналастырады. Өрістерді іnt типімен сипаттауға болады, олар массив бола алмайды 
және адрестері болмайды, сондықтан  & операторы өрістерге қолданылмайды. 
Мысалы,  компиляторға  арналған  символдар  кестесін  өңдеу  есебінде  кездесетін 
ситуацияның бірі - бірбиттік флажактар біріктіруді қарастырайық.  
Символдар 
таблицасын басқаратын фрагмент, яғни компилятор фрагментін қарастырсақ:  
Программаның  әрбір  идентификаторы  нақты  бір  информацияны  білдіреді; 
мысалы бұл қызметші сөз бе? 
Айнымалы қандай класқа жатады, статикалық н/емесе сыртқы т.б. 
Осындай  информацияларды  кодтау  тәсілінің  ең  тиімдісі  -  char  немесе  int  типті 
сөзде бірбиттік флажактар қою болып табылады.                               
 
Бақылау сұрақтары: 
1.  Typedef құралы қолдаылуына мысал келтіріңіз. 
2.  Біріктіру айнымалысына жадыдан бөлінетін орын неден тәуелді? 
3.  Биттік өрістер не үшін қарастырылады? 
 
Әдебиеттер:  [1-10],[16]. 
 
 
Дәріс №11. ГРАФИКА 
 
Дәріс мақсаты:   С/С++  тілінің  графикалық  мүмкіндіктеріне  қысқаша  шолу 
жасау. Графикалық мәліметтерді өңдеу программаларын құруға бағыт бағдар жасау. 
 
Кілттік сөздер:   Графика,  графикалық  режим,  графикалық  режимді  орнату, 
графикалық  функциялар  тақырыптық  файлы,  графикалық  функциялар,  графикалық 
драйвер, экранның координаталық жүйесі, пиксел.  
 
Жоспары: 
11.1. 
Графикалық режимде жұмыс жасау туралы. 
11.2. 
Графикалық жүйені инициализациялау.  
11.3. 
Қателерді өңдеу. Режимдердің ауысуы. 
 
 
11.1.  Графикалық режимде жұмыс жасау туралы 
Дербес  компьютер  экраны  текстік  және  графиктік  режимдердің  бірінде  жұмыс 
істейді. Графикалық режимде жұмыстың қалай жүргізілетінін қарастырайық. 

81 
 
Қазіргі  ДК-де,  негізінен,  растрлық  дисплейлер  қолданылады.  Олардағы 
бейненің ең кіші элементі болып нүкте – pixel (ағылш., picture element) табылады. 
Дисплейдің  мүмкіндігі  –  бұл  көлденең  және  тік  орналасқан  пикселдер  саны 
(стандартты  разрешение  –  640*480  нүкте).  Дисплейде  бейнеленетін  сурет  орталық 
процессор  жадысының  бейнежады  (видеопамять)  деп  аталатын  арнайы  облысында 
кодталып  сақталады.  Мәліметтер  периодты  түрде  осы  облыстан  оқылып, 
бейнесигналдарға  түрлендіріледі  де  экранда  бейнеленеді.  Сурет  кодтарын 
бейнесигналдарға  түрлендіруді  арнайы  электрондық  схема  –  бейнеадаптар 
(видеоадаптер) жүзеге асырады. Ең кең тараған адаптерлер VGA және SVGA.
  
C++ тілінде бейнежадының дербес бөліктеріне енуге, түстерді басқаруға, әр түрлі 
формада графикалық бейнелер тұрғызуға, текстік хабарламалар шығаруға, курсорды 
басқаруға  мүмкіндік  беретін  көптеген  функциялардын  тұратын  графикалық 
кітапхана  бар.  Бұл  функциялардың  нақты  бейнеадаптерлермен  жұмысқа  баптау 
қажетті  графикалық  драйверді  қосу  арқылы  қол  жеткізіледі.  Драйвер  –  бұл  ДК-дің 
құрылғыларын басқаруға арналған арнайы программа. 
Адаптерлердің барлық түрлері үшін графикалық драйверлер Borland International 
фирмасымен  құрастырылған.  Олар  BGI  (Borland  Graphics  Interface)  кеңеймесімен 
жеке  файлдарда  орналасқан.  Графикалық  драйверді  қосу  үшін  арнайы  initgraph() 
функциясы қолданылады. 
Көптеген  графикалық  функциялар  ағымдағы  позиция  көрсеткіші  деген  ұғымды 
қолданады. Ол таңдалған пикселді білдіреді және екі бүтін сан арқылы сипатталады: 
экранның горизонталь және вертикаль координаттары. Нумерация солдан оңға және  
жоғарыдан төмен қарай жүргізіледі (нольден бастап).  
Мысалы,    EGA  үшін  640*480  режимінде  экран  бұрышы  мен  оның  центрінің 
координаттары мынадай болады: 
 
 
 
 
 
11.2. Графикалық жүйені инициализациялау 
 
1. Драйверді және графикалық режимді таңдау 
detectgraph (&gd, &gm) 
функция арқылы орындалады. 
2. Драйверді жүктеу, графикалық жүйені инициализациялауды  
initgraph (&gd, &gm, "BGI-файлдың жолы") 
функциясы  атқарады,  мұндағы  gd  және  gm  айнымалылары  қажет  драйвер  мен 
графикалық режимнің номерлері.  
Егер  ВGI-файлдар  ағымдағы  директорияда  орналасса,  онда  initgraph() 
функциясының үшінші параметрі ретінде бос жолды беруге болады 
initgraph (&gd, &gm, " "); 

82 
 
Графикамен жұмыс жаса барысында мына әрекеттер тізбегі арқылы графиктік 
режимді орнату жолдары жазылады: 
#include  
#include  
#include  
void main ( ) 
{ int gd, gm, error; 
detectgraph (&gd, &gm); 
initgraph (&gd, &gm,” ”); 
error=graphresult ( ); 
if (error !=grOk ) 
{ puts ("ошибка графики"); 
           puts (grapherrormsg (error)); 
           exit (1); 
        } 
……………………………. // Тело программы 
   closegraph ( ); 
   exit (0) ; 

 
 
11.3.  Қателерді өңдеу.  Режимдердің ауысуы 
 
3. Графикамен жұмыс жасағанда қате жағдайларды өңдеу үшін  
graphresult ( ); 
функциясы  қолданылады.  Ол  соңғы  қолданылып  отырған  графикалық  функцияның 
аяқталу кодын қайтарады. Қате болмаса, «0» қайтарылады. 
Әр түрлі қателер типі үшін өздерінің аяқталу коды қарастырылған: 
 
Кесте 3.1. Тұрақтылар кесетесі. 
 
Тұрақтылар 
Қате коды 
Хабарлама 
GrOK 

Қате жоқ 
GrNoInitGraph 
 
-1 
 
Графика инициализацияланбаған 
GrNoLoadMcm 
 
-5 
 
Драйверді 
жүктеуге 
жадының 
жеткіліксіздігі 
GrFontNotFound  -8 
Шрифт файлы табылмаған  
 
Қате кодының сәйкес мәнін экранға шығару мүмкіндігі бар. Бұл үшін  
grapherrormsg (қате коды); 
функциясы  қолданылады.  Ол  аргумент  ретінде  берілген  аяқталу  кодының 
сипаттамасынан тұратын жолға көрсеткіш қайтарады. 
4.  Режимдерді  ауыстыру.  Дисплейлік  адаптердің  текстік  режиміне  уақытша 
ауысу үшін мына функция қолданылады: 

83 
 
restorecrtmode (); 
Қайтадан графикалық режимге ауысу  
setgraphmode (gm); 
функциясымен жүзеге асырылады. 
Ағымдағы драйвер үшін графикалық режимнің максимал мәнінің номерін                
     getmaxmode (); 
функциясы арқылы анықтауға болады. 
Графикалық  жүйемен  жұмыс  жасап  болған  соң,  графикаға  бөлінген  жадыны 
босату,  бейнеадаптер  буферін  тазарту,  алдыңғы  текстік  режимді  қалпына  келтіру 
керек. Барлық әрекеттерді 
closegraph (); 
функциясы жүзеге ауыстырады. 
5.  Түстерді,  шрифттерді  сызықтардың  стилін  және  бояу  стилін  тағайындау. 
Түстерді  көрсету  үшін  констандаларды  пайдалануға  болады.    Стандартты  түстер 
палитрасы: 
 
BLACK 

Черный 
DARKGRAY 

темно-серый 
BLUE 

Синий 
LIGHTBLUE 

светло-синий 
GREEN 

Зеленый 
LIGHTGREEN 
10 
светло-зеленый 
GRAY 

Серый 
LIGHTCYAN 
11 
светло-
бирюзовый 
RED 

Красный 
LIGHTRED 
12 
светло-красный 
MAGENTA  5 
Малиновый 
LIGHTMAGENT

13 
светло-
малиновый 
BROWN 

Коричневый  YELLOW 
14 
Желтый 
LIGHTGRA


светло-
серый 
WHITE 
15 
Белый 
 
  Графиктік  мәліметтер  нақты  бір  бейнелер  арқылы  берілетіні  мәлім.  Тілде 
бейнелерді  тұрғызуға  арналған  арнайы  функциялар  қолданылады.  Оларды 
лабораториялық  сабақтарда  нақты  қарастырамыз.  Немесе  лабораториялық  жұмыс 
№11- дегі әдістемелік нұсқауларды қараңыз. 
 
Бақылау сұрақтары: 
1.  Растрлық графика дегеніміз не? 
2.  Растрлық және векторлық графика айырмашылығы неде? 
 
Әдебиеттер: [5-10], [16-17]. 
 
 
Дәріс №12. ФАЙЛДАРМЕН МӘЛІМЕТ АЛМАСУ МҮМКІНДІКТЕРІ 
 

84 
 
Дәрістің  мақсаты:  С/С++  тіліндегі  программаларда  файлдармен  мәлімет 
алмасу  тәсілдері  мен  мүмкіндіктерін  түсіндіру.  Файлдармен  байланыс  орнату, 
оларға енгізу-шығару, басқару жолдарын үйрету. 
 
Кілттік  сөздер:  Файл,  FILE  структурасы,  файлдық  көрсеткіш,  файлдан  оқу, 
файлға жазу, файлдармен мәлімет алмасу режимдері, тексттік режим, екілік режим, 
ағымды көрсеткіш, файл соңы, файлды басқару функциялары. 
Жоспары: 
12.1. 
Файлдық  типті  айнымалыларды  сипаттау.    Файлды  қолдану 
режимдері. 
12.2. 
Файлдық енгізу-шығару. 
 
 12.1. Файлды сипаттау.  
 
С тілінде: 
Файлдан  оқу  және  файлға  енгізу  үшін  ең  алдымен  файл  fopen  функциясының 
көмегімен  ашылуы  тиіс.  Бұл  функция  операциялық  жүйе  арқылы  орындалатын 
әрекеттерді  ұйымдастыру  жұмысын  орындайды  және  файлмен  мәлімет  алмасуға 
арналған көрсеткішті  қайтарады. 
Ал,  файлға  көрсеткіш  файл  туралы  информациялардан  тұратын  құрылымға 
(жазбаға)  сілтейді.  Мұндағы  информация  мынадай  сұрақтарының  жауабынан 
тұрады:  
 буфер адресі,  
 буфердегі ағымды литердің күйі,  
 файлдан оқуға немесе жазуға ашық па?,  
 файлдың соңғы таңбасы кездесті ме?  
 
Мұндай  құрылым  сипаттамасы    кітапханасындағы  FILE  типінде 
беріледі. Қолдану үшін мынадай декларация берілсе жеткілікті: 
FILE * fp; 
FILE * fopen (char * name, char * m);  
Мұндағы: fp – FILE типіндегі көрсеткіш, ал fopen FILE – ге көрсеткішті қайтарады. 
Fopen функциясы мына түрде қолданылады: 
fp = fopen (name, m); 
Мұндғы: name – файлдың атын меншіктейтін жол; 
 ал,  m  –  файлды  қолдану  режимі;  яғни  бұл  да  жол,  қолданушы  файлды  қалай 
қолданатынын білдіреді, төмендегідей мәндердің бірін иелене алады: 
" r " – (read)  оқу режимі; 
w "- ( write) жазу; 
a "- ( apprnd) толықтыру; 
Кейбір  жүйеде  тексттік  және  бинарлық  файлдар  болып  жіктеледі,  бұл  жағдайда 
режим жолына "в" (binary – бинарлық) немесе “t”(тексттік) таңбасы тіркеледі. 
Файлмен  жұмыс  жасау  барысында  қате  кездессе,  онда    fopen  функциясы  NULL 
мәнін қайтарады. 

85 
 
 
     Мысалы,      
FILE*fin, * fout; 
 
    fin=fopen (“PRIMER.dat”,”’r”); 
 
    fout=fopen (“RESULT.dat”, “w”); 
 
1-ші  жолда  2:fin,fout  –  файл  көрсеткіші  құрылады,  ал  төменгі  жолдарда 
сәйкесінше оқуға және жазуға арналған файлдар ашылады.  
 
Fopen() функциясы файлдың аталған көрсеткішін қабылдайды, программаның 
орындалу  барысында  олардың  мәндері  жасанды  өзгертілмеуі  тиіс.  Мұндай 
файлдағы  2-ші  параметр  файлдарымен  мәлімет  алмасу  режимін  анықтайды.  Файл 
мынадай режимдерде ашылуы мүмкін: 
-  текстік; 
-  екілік; 
Текстік  режимде  ашу  үшін  режимді  көрсеткенде  қасына  «t»  символын  тіркеу 
арқылы жүзеге асады; 
Режимдер кестесі: 
 
Режим 
Сипаты 
 
а 
 
а+ 
 

 
r+ 

w+ 
 
Файл мәндерімен толықтырылуы үшін ашылады. Егер файл 
жоқ болса,  ол құрылады. Жаңа мән соңына тіркеледі; 
 
Жоғарыдағы секілді, тек оқұға да болады; 
 
Файлды тек оқу үшін ашады, файл жоқ болса, ашылмайды; 
 
Файлды оқуға да, жазуға да болады; 
Жаңа файл ашады, бұрын бар болса, мәнін өшіреді. 
Жаңа  файлды  мән  жазуға  да,  одан  оқуға  да  мүмкіндік 
береді. Файл болса, мәні тазартылады. 
  
 
 
R+,w+,a+  режимдерін  қолдануда,  яғни  оған  оқуды  және  жазуды  бір  уақытта 
орындалу  барысында  файл  көрсеткішінің          Fsetpos(),    fseek(),    немесе    rewind()  
файлдары көмегімен ағымды позицияларын модификациялау  керек. 
 
Порграмма  жұмысы  аяқталғанда  Си-де  автоматты  түрде  барлық  ашық 
файлдар жабылады, ал файлды жабу үшін fclose(fin) қолданылады.  
С++ тілінде: 
Файлмен  мәлімет  алмасу  мақсатында  ifstream  және  ofstream  кластарын 
қолданған тиімді. Ол үшін < fstream. h >  тақырыптық файлы ашылуы  тиіс. 
Мұнда, сәйкесінше, ifstream класының объектісі myof және ostream класының 
mygf лектері құрылып көрсетілген файлмен байланысады.  
Мысалы,     Ifstream myof(“prim.in”,ios::in); 
Ofstream mygf(“prim.out”,ios::out); 

86 
 
  Бір  объектімен  тізбектеп  бірнеше  лекті  байланыстыру  қажет  болса,  онда  ол 
төмендегідей ретпен орындалады: 
Ifstream  myof; 
.  .     . 
myof(“prim.in”); 
.   .   . 
myof.close(); 
myof.open (“prim2.in”); 
.   .   . 
myof.close(); 
  Файлмен  мәлімет  алмасу  мүмкіндігінің  режимін  өзгерту  –  файлдық  объектінің 
сипатындағы екінші аргументін өзгерту арқылы жүзеге асады. 
Мысалы,    Ofsetream  myof  (  “prim.in”,ios::app  |  ios::nocreate);  -  мұндағы  файл  бар 
болса  ғана  myof  объектісі  құрылып,  байланыс  орнатылады,  себебі  ios::nocreate 
аргументі  берілген,  яғни  файл  болмаса,  объект  құрылмайтынын  білдіреді.  Ал, 
ios::app  аргументі  файлға  шығарылатын  мәндер  файлдың  соңына  қосылатынын 
анықтайды.  
Флаг-аргументтер  биттік  |  -  «немесе»  амалының  көмегімен  біріктіріліп 
анықтала алады. 
Файлдық  лекті  анықтау  барысында  қолданылатын  аргументтерді  анықтайтын 
флагтар төмендегідей: 
флаг 
Мағынасы 
ios::in 
Файл оқуға ашылады 
ios::out 
Файл жазуға ашылады 
ios::ate 
Объект  құрылған  соң,  ағымды  көрсеткіш  файлдың 
соңына орнатылады 
ios::app 
Мәндер файлдың соңына жазылады 
ios::trunc 
Егер файл бар болса, ол тазартылады 
ios::nocreate 
Файл болмаса, онда объект құрылмайды 
ios::noreplace 
Файл бар болса, онда объект құрылмайды 
ios::binary 
Файл  екілік  режимде  ашылады  (қалыпты  жағдайда 
тексттік режим) 
 
feоf (FILE * fp) – функциясы файлдың соңын анықтайды. 
Файлды жабу үшін: 
Int  fclose(FILE  *fp)  функциясы  қолданылады,  яғни  файлдық  көрсеткішпен 
орнатылған байланысты үзеді. 
  Файлмен мәлімет алмасу үшін fstream класының объектісі де қолданылады: 
Fstream  io(“update.dat”,  ios::in|ios::app);  -  бұл  жағдайда  көрсетілген  файл  мәліметті 
оқуға және жазуға ашылады.  
  Seekg()  файлдан  оқу  ал,  seekp()  файлға  жазу  барысында  функциялары  файлдың 
ағымды позициясының маркерін басқаруға қолданылады. 
 Мысалы, 
  
io.seekg(5,  ios::cur)  –  оқу  барысында  маркерді  ағымды  орынынан  5  байтқа  
жылжыту; 

87 
 
io.seekg(-7, ios::end);    -  маркерді соңынан бастап 7 байтқа жылжыту 
керектігін білдіреді. 
Аргументтер: 
Io::cur –  ағымды орынынан; Io::beg –  файл басынан;    
Io::end -  файл соңынан жылжытылатынын білдіреді. 
   Файлдық лектің күйін анықтау функциялары: 
Функция 
Түсініктеме 
eof() 
Файл соңын кездестірсе, 0-дік емес мән қайтарады 
fail() 
Лекте қате кездессе 0- ден өзге мән қайтарады 
bad() 
Енгізу-шығару барысында мағыналы қате кетсе, нөлден өзге 
мән қайтарады, онда лекпен жұмыс тоқтатылғаны дұрыс. Лек 
күйінің биттік мәндері анықталмаса, 0-ге тең емес мән береді. 
rdstate() 
Мына тұрақтылардың бірін, яғнм лектің ағымды күйін 
анықтайтын мәнді қайтарады: 
Ios::goodbit  - қате жоқ 
Ios::eofbit – файл соңына жетті 
Ios::failbit – форматтау немесе түрлендіру қатесі 
Ios::badbit - маңызды қате 
clear() 
0-ге тең болса тазарту 
 
 
12.2. Файлдық енгізу-шығару 
 
Файлдан оқығанда Pascal-дағы секілді, 
   
      fprinf(fin,’формат’, <айнымалы>); 
 
      fscanf(fin,'формат', <айнымалы>); 
 
      fseek()  функциясы: 
Жалпы форматы: 
   Int fseek (FILE *str, long offset, int orig) 
         М, fseek (f, K, r) 
Fseek  функциясы  f  Көрсеткіші  арқылы  берілген  файлдағы  ағымды  көрсеткішті  К 
байтқа жылжытады. Жылжыту: 
-  файлдың басынан (r=0) 
-  ағымды көрсеткіш тұрған (r=1) 
-  файлдың аяғынан (r=1) басталуы мүмкін. 
Си- де r-дің мәні ретінде көрсету үшін  қолданылатын 3 const қарастырылған: 
    SEEK_SET (файл басынан жылжу) 
    SEEK_CUR(ағымдағы позициядан бастау) 
    SEEK_END(файл соңынан) 
Fseek() функциясы қызметі сәтті аяқталса 0-ді, әйтпесе EOF мәнін қайтарады. 
 

88 
 
  Ftell()-функциясы файл басынан бастап ығысқан шамамен анықталады, яғни long 
типті мән қайтарады, ағымды көрсеткіштің рынын анықтайды.  
Ж.Т:    long ftell(FILE*str) 
            Ftell(f) 
  Rewind функциясы ағымды көрсеткішті файлдың басынан орындайды.        
    rewind(FILE*str); 
    rewind(f) мынаған сәйкес мәнді қайтарады; 
    fseek(f, ol, seek_set);  
 
Мысалы: 
# include  
void main() 
FILE *pf;               “tect.dat”-да=”ABCD” 
Char c; 
Long l;   {С тілінде 64 кб-өлшенді файлдармен жұмыс жасауға 
                 болады,   сондықтан L-long типті. } 
pf=fopen (“test.dat”, “r+t”); 
c=f getc (pf); {“A”-ны алады} 
putchar (c);{“A”-ны экранға шығару} 
с=f getc(pf);{“B”-ны оқу} 
putchar (c);{“B”-ны экранға шығару} 
l=ftell(pf);{ағымы көрсеткіш мәнін меншіктейді,в-оқылғандықтан,L=2} 
C= f getc(pf); {c-ны оқып экранға шығару} 
putchar(c); 
fseek  (pf,l,o);{ағымды  көрсеткіш”Д”-да  тұрған  жерінен  “С”-ны  көрсетуге 
көшеді,себебі функция басынан 2 бт жылжиды } 
с=f getc(pf);  
putchar(c);            {экранға ''C''-ны экранға шығарады } 
fseek  (pf,l,o);{ағымды  көрсеткіш  қайтадан  “С''-ға  сілтейді,енді  оның  орнына  “Е” 
файлға жазылады} 
fputc (‘E’,pf); 
fseek  (pf,l,o);    {ағымды  көрсеткіш  файл  басына  l=2  байтқа  байланысты  жылжиды, 
яғни “E”-ні көрсетеді} 
с=f getc(pf); {экранға “Е''-ні шығарады} 
putchar (c); 
rewind (pf); {ағымды көрсеткіш файл басына көшіріледі.} 
c=f getc (pf);  
putchar (C);{С-ға файлдан «А» оқылады, экранға шығарады} 
нәтижесінде:ABCCEA 
get c () –берілген потоктан бір символды оқиды.  
 
Бақылау сұрақтары: 
1.  Файл дегеніміз не? 
2.  Файлдық лекті сәйкестендіруді қалай түсінесіз? 

89 
 
3.  Файл  бойынмен  жылжу,  ағымдық  көрсеткішті  басқару  функциялары 
қандай? 
 
Әдебиеттер:  [1-10],[16]. 
 
 

90 
 
Дәріс №13. ОБЪЕКТІЛІ-БАҒЫТТАЛҒАН ПРОГРАММАЛАУ (ОБП) 
 
Дәрістің мақсаты: 
 Объектілі-бағытталған программалау негіздеріне және 
негізгі түсініктеріне анықтамалық мәліметтер беру. Машиналық бағытталған тілдегі 
объектілерді басқару жолдарын үйрету. 
 
Кілттік 
сөздер: 
Объект, 
қасиеттері, 
тұқым 
қуалау, 
инкапсуляция, 
полиморфизм,  ОБП,  кластар,  кластар  иерархиясы,  класс  экземпляры,    конструктор, 
деструктор. 
 
Жоспары: 

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




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

    Басты бет