Отчет по практике в «Манғыстаумұнайгаз»

Автор работы: Пользователь скрыл имя, 12 Сентября 2013 в 16:47, отчет по практике

Краткое описание

С++ тiлi объектi-бағдарланған бағдарламалау тiлi. Ол жоғары деңгейдегi тiлдердiң қатарына кiредi. Көптеген программистер С++ тiлi арқылы қиын есептердiң шешуiн табады. С++ тiлi кеңiнен таралған бағдарламалау тiлi болып саналады. Объектi-бағдарланған бағдарламалау программистке 3 маңызды мүмкiншiлiк бередi:
1. Программалық кодтың оңайлатылуы және оның құрылымын жақсарту. Программаларды оқу және түсiнуге жеңiл.
2. Программалардың модернизациясы өте қарапайым тапсырма болып табылады.
3. Кез-келген класста әртүрлi программаларды көп рет қолдануға болады.

Содержание

I. КIРIСПЕ……………………………………………………………….3
II. НЕГІЗГІ БӨЛІМ
1. «Манғыстаумұнайгаз» АҚ-ы жайында................................................
1.1 «Манғыстаумұнайгаз» АҚ-ның тарихы
1.2 «Манғыстаумұнайгаз» АҚ-ның жетістіктері
1.3 «Манғыстаумұнайгаз» АҚ өндірістік қызметі
1.4 «Манғыстаумұнайгаз» АҚ қызметінің негізгі түрлері
2. С++ бағдарламалау тілі
2.1 С++ тілінің негізгі түрлері
2.2 С++ тілінің ерекшеліктері
2.3 Массивтердi инициалдау ……………………………………………..
3 Көрсеткіштермен жұмыс ………………………………………………..
3.1 Структуралардың қайтылыуы …..........................................................
3.2 Файлдық құрылым ……………………………………………………..
3.3 fstream.h тақырыптар файлына қосылу ……………………………...
3.4 Файлды ашу …………………………………………………………....
4 Класстармен жұмыс...................................................................................
4.1 Конструкторлар және деструкторлар..................................................
4.2 Функция-мүшелері static және const...................................................
4.3 Мұрагерлік...............................................................................................
4.4 Абстрактты базалық класс....................................................................
4.5 Жады класстары және айнымалыларды қолдану.................................
ҚОРЫТЫНДЫ……………………………………………………………..
Қолданылған әдебиеттер тiзiмi ……………………………………….......
Қосымшалар …………………………………………………………..........

Прикрепленные файлы: 1 файл

отчет практика 4-курс.docx

— 75.51 Кб (Скачать документ)
  • Типтің айнымалысы типтің мәнімен инициализацияланады.
  • Функцияда аргумент cияқты типтің мәні берілген.
  • Типтің мәні функциядан қайтады.

Бұл көшірме конструкторлары деп  аталады және егер ол анық көрсетілмеген  болса,онда компиляторлармен генерацияланады.Мүшелік  инициялизацияның мәні жасырын болып  жатады.

Мүшелері бар класс,типі конструкторды қажет ететін,өзінің конструкторлық параметрлік тізімінен кейін анықталуына болады.Нұсқағыш үтір арқылы ,келесі қос нүктеден кейін конструктор тізімдік конструктормен қатынасады.Мүшелер атын атқарылу үшін конструктор шақырылады, параметризациялық тізіммен параметрлердіңсүйемелденуі.Конструкторлар виртуальды болуы мүмкін ,ал деструкторлар—болады.Конструкторлар мен деструкторлар туындалмайды.

 

2.9 Функциялар

 

Си және С++ бағдарламалау тiлiндегi бағдарламалар  бiрнеше функциядан тұрады. Функциялар өз алдына тәуелсiз. Бiр функция мен  екiншi функция арасындағы байланыс олардың аргументтерi немесе параметрлерi арқылы орындалады. Шақырылатын функцияға  қайтатын мән формальдi түрде мына өрнек арқылы жазылады:

return өрнек;

Кей кезде бұл сөзден кейiн  ешнәрсе жазбауға болады. кез келген функцияның мәнi аргументi арқылы берiледi. Шақырылған функция аргументтiң  мәнiнiң көшiрмесiн алады. Оның адресiн  емес, ол деген сөз аргументтiң  көшiрмелерiн жадыда жеке бiр орын алады. Шақырылған функция шақырылған бағдарламадағы мәндердiң түп нұсқасын өзгерте алмайды. Көшiрмесi жасалған мәндер жадыда жеке орын алады. Егер функцияның аргументi ретiнде массивтiң аты берiлсе, онда массивтiң басталған жерiнiң бас адресi берiледi. Ал элементтерiнiң көшiрмесi берiлмейдi. Егер ол массив болса, тек бас адресi берiледi. Функция массив элементтерiн өзгерте алады. Ендi шақырған функция мен функцияның тiзiмiндегi параметрлердiң сәйкестiн қарастырады. Мысалы, шақырушы бағдарлама функцияны былай шақырсын:

a= fun (b,c); мұнда b,c – аргументтер  мәндерi шақырылатын функцияға берiлетiн  айнымалылар.

main( ) функциясы бағдарламаның орындалуы үшiн бастапқы белгi ретiнде қолданылады. Бұл функцияны хабарлау үшiн С++ ережелерiмен сәйкестенедi. С++ компиляторлары файлдардың үлкен санынан тұратын программаларды өңдей алады.С++ тiлiндегi үлкен бағдарламалар жеке файлдар түрiнде дайындалады. Әрбiр файл – бұл модуль. Ол программамен байланысты хабарламалар мен сипаттамаларды қамтиды. С++ тiлiндегi көп жүйелер бастапқы файлдың *.с кеңейтiлуiн қолданады.

Функция—Мүшелері

 

Функция  мүшелері функцияның ішіндегі класта жарияланған ,private. protected  және public мүшелерінің класқа қатынасы.Ішкі класта --------------------------анықталған,олар inline функциясы сияқты өңделінніледі.Олар керекті жағдайда жүктелінген функциялар сияқты өнделінеді.

Int ub ( ) {return (size--1);}//жоғарғы шекара

Vect класында функциялық  мүше сияқты анықталады.Осы мысалда  функция  мүшесі 

Ub-inline және size мүшесіне privat-қа  қатынау иемденуі.

Функция-мүшелері әдетте қолданушы  операторлар “.” немесе -----> шақырылады.

Vect a(20). b; // сәйкес келетіен конструкторды шақырады.

Vect *ptr-v =&b;

Int uba =a.ub ( ).ubb; // ub мүшесін  шақырады.

Ubb =ptr_v--> ub( ); // ub мүшесін  шақырады.

Функция –мүшелері static және const.

 

Әдетте функция-мүшелері былай шақырылады

Object.mem(I, j, k);

I,j,k айқын аргументтерінің айқын тізімі және айқын емес параметрлер тізімі,

Object I мүшелерінен тұрады.This нұсқағышының қатынауы арқылы,айқын  емес параметрлерді параметрлер  тізімін есептеуге болады.This нұсқағышын  қолданушы ,басқасына қарағанда  static функция-мүшесі басқа мүшелерге  қатыныса алмайды.Өзінің айқын  емес параметрлер const функция-мүшелерін  өзгерте алмайды.

#include<iostream.h>

class salary {

private:

int b-sal;

int your-bonus;

static int all_bonus;//жариялау

public:

salary (int b):b-sal(b) {}

void calc-bonus (double perc) {your-bonus=b_sal * perc;}

static void reset_all(int p) {all_bonus=p;}

int comp_tot( ) const

{return (b_sal+your_bonus +all_bonus);}

};

int salary::all_bonus=100;//жариялау және анықтама

main ( )

{

salary w1(1000),w2(2000);

w1.calc_bonus(0.2);

w2.calc_bonus(0.15);

salary::reset_all (400);//эквивалент w1.reset_all(400);

cout <<”w1” <<w1.comp_tot( ) <<”w2.comp_tot( )

<< “\n”;

}

Статистикалық мүше all_bonus контекстік файылда жарияланады.Salary айнымалы типі спецификалық әр түрлі тәуелсіз жарияланады.Статистикалық мүшеде сілтеме былай болады:

Salary::all_bonus

Модификатор const параметрлер тізімінің аяғында және кодтар денесінің басында пайда болады.Берілген мүшелер өз мәнінде өзгермейтіндігіне нұсқау береді.Бұл кодты өте сенімді қылады.Нәтижесінде операторлармен static

Функция-мүшесі шақырылуы  мүмкін.

Демек,

Salary::reset_all(400);

W1.reset_all(400);

(&w2)--> reset_all (400);

эквиваленттілер. 

2.10 Мұрагерлік

 

Мұрагерлік—ескі кластан жаңаға туындайтын тетік.Туындайтың класты құру үшін құрылған класқа толықтырулар немесе өзгертулер енгізуге болады.Класс құрылған кластан келесі түрде туындалуы мүмкін.

Class класс аты:(public/protected/private)орт 

Базалық кластыңаты

{

мүшелерді хабарландыру

};

Әдеттегідей,түйінді сөз class-ты struct түйінді сөз өзгешелігімен  алмастыруға болады,егер бүкіл мүшелері жасырын –public.Түйінді сөз көріну public,private және protected  модификаторлары  класс мүшелері үшін қолданылады.

Public мүшесі контекстік  түрде, private мүшесі түрінде басқа  функция мүшелері үшін ішкі  меншікті классы.protected мүшесі түрінде  басқа функция

мүшелер үшін ішкі классы және кез-келген класс,одан тікелей туындалатын.Көріну модефикаторы ішкі жарияланған класта кез-келген жиілікте қолданылуы мүмкін.

Параметрлі конструкторды  иемделген базалық класс өзінен туындалған класта конструктордың болғанын талап етеді.Осындай конструктордың пішіні мына түрде берілген:

Класс аты (параметрлер тізімі):  базалықкластың аты  (базалық кластың  параметрлер тізімі)

{

 

};

базалық кластың параметрлер  тізімі базалық класқа сай конструкторды  шақыру кезінде қолданылады және туындалған кластың конструкторлық денесі орындалғаннан бұрын орындалады.

Public туындалған классы,негізгі  кластың ішкі типі болып табылады.Көп  жағдайда туындалған кластың  айнымалылары базалық кластың  типі сияқты болып өнделеді.Базалық  кластың нұсқағышы типіне жататын  нұсқағыш,туындалған кластың public типіндегі объектке нұсқайды. Туындалған  класқа сілтеме,егер ол керек  болған жағдайда, базалық класына  айқын емес қайтатуындалу сілтемесі  туындайды.Базалық класқа сілтеме  жариялауға болады және туындалған  класты public объектісімен инициализиралауға  болады.

Туындалған класқа мысал:

Class vect_bnd : public vect {

private :

Int l_bnd, u_bnd;

public :

vect_bnd ( );

vect_bnd(int,int);

int& operator[ ] (int);

int ub ( ) {return (u_bnd);}

int lb( ) {return (l_bnd);}

};

Бұл мысалда туындалған кластың  конструкторлары базалық кластың  конструкторларын параметрлер тізімінен  кейін қос нүкте деңгейін щақырыды.

Мұрагерлік жиынтығы

 

Мұрагерлік жиынтығы туындалған класқа бірден артық емес класта құрылуына  мүмкіндік береді.Кластың тақырыбының  синтаксизі негізгі кластардың тізімін  қосу үшін және оларға қатынас деңгейін кеңейту үшін керек.Мысалы:

Class  tools{

. . .

};

class parts{

. . .

};

class labor {

. . .

};

class plans : public tools,public labor {

. . .

};

Бұл мысалда plans туындалған классы барлық кластың public мүшелерін иемденеді.Бұл мұрагерліктің байланысы бағытталған графты ілгішсіз мұрагерлік деп суреттеледі.(DAG).DAG-граф типті құрылымы,бұның торабы класты суреттейді,бағытталған доғалар базалықтан туындалған класқа бағытталған бағытты көрсетеді.

Егер туындалу кезінде  әр түрлі кластардың мүшелерінің  аттары бірдей болса,онда бұл бір  мағыналықты туғызады.Бұндай мұрагерлік рұқсат етіледі,егер қолданушы мұндай мүшелерге бірыңғай сілтеме жасамаса.

Екі базалық кластың мұрагерлік жиыны жағдайында бірдей арғы тегінен  туындалуы мүмкін.Егер де екі базалық  класс бірдей тәсілден туындалған класта туындалса,бұл класс бірдей тектегі  екі ішкі объектісі болады.Егер де бұл керек емес болса көшірмен virtual  мұрагерлігін қолдану арқылы өшіруге болады.

Абстрактты базалық класс

 

Таза виртуальды функция-виртуальды функция-мүшесінің денесі анықталмаған класс ішіндегі хабарлану пішіні келесі түрде берілген:

Virtual прототип функция  =0;

Туындалған класс анықталуы  міндетті немесе әр бір таза виртуальды функцияның тікелей базалық класта бір абстракты класс болып  табылады.

Класс мүшесіне нүсқағыш

 

С мүшелердің мәнін таңдау үшін,құрылым нұсқағыш және шақырудың  қарапайым сұлбасын қолданады.С++ те класс мүшесінен нұсқағыш ерекше класс нұсқағыш.Класс мүшесіне нұсқағыш Т::*типті иемденеді,мұндағы      Т-класс аты.С++-тің класс мүшесінің нұсқағышының атын өзгерту ретінде іске асатын екі операторы бар.

* және .>*

obj.*ptr_mem мүше айнымалысын  алу үшін нұсқағыштың бірінші  атын өзгертушісі деп есептесек,онда  онын мәніне қатынауды қамтамасыз  етуге болады.

Class object {public :int a,b,c:}x,y,*q=& y;

Int object::*p=& object ::b;

x.*p //x.b алады

y.>*p //y.b. алады

Нұсқағыш THIS

 

Түйінді сөз this анық емес жарияланған  өзіндік сілтеме нұсқағышты білдіреді.This тек статистикалық емес функцияның мүшесінде қолданылуы мүмкін .келесі қолданылған оның қарапайым иллюстрациясы.

// қолданушы this нұсқаушы 

class c-pair {

private:

char c1.c2;

public:

c-pair (char b) {c1=1+(c2=b);}

c-pair increment(){c1++; c2++; return (*this);}

unsigned where_am_I ( ) {return ((unsigned) this );}

void print ( ){cout <<c1<<”\t”;}

};

функция-мүшесі increment( ) айқын емес жарияланған this нұсқағышын қолданады сол үшін с1 және с2 үлкейтілген мәнін қайта қайтару үшін функция-мүшесі where_am_I( ) берілген объектінің өз орнына қайтады.Түйінді сөз this өзіндік сілтеменің нұсқағышын білдіреді. ------------------------------------------------------------

ленттілер. 

Жады класстары және айнымалылардың қолдану ортасы

 

Әдетте Си бағдарламасы main() функциясының қолданылуын көрсетедi және керектi элементтердi орындау үшiн  басқа функцияларды шақырады. Егер бағдарлама бiр файлдан тұратын  болса, онда функциялар параметрлердi беру және функцияның мәнiнiң қайтарылуы арқылы байланыста болады. Ал егер бағдарламаның  бастапқы мәтiнi бiрнеше модульге бөлiнiп, олар бiрнеше файлдан тұрса, ондай  жағдайда ауқымды сыртқы айнымалылар  қолданылуы керек. Айнымалылардың бағдарламада анықталуы оның мәндерiне жадыда орын бөлгiзуiн туғызады.

Жадыдан орын бөлу класстары олардың жады класстар спецификаторлары арқылы анықталады. Ол спецификаторлар айнымалылардың өмiрлiк уақытын және қолдану облысын немесе көрiну облысын анықтайды. Си++  тiлiнде блок дегенiмiз { } фигуралық жақшаның iшiнде жазылған сипаттау және операторлар тiзiмдерi. Блоктың 2 түрi бар:

    1. Құрама операторлар (бiрнеше блок);
    2. Функцияның анықталуы;

Бiрiншi блоктың iшiнде құрама операторлар кiруi мүмкiн, функцияның

анықталуы кiрмейдi. Iшкi блоктың iшiне енген блок деймiз. Сыртқы блокты көлемдi қамтушы блок немесе ауқымды  блок деймiз. Өмiрiлiк уақыты дегенiмiз  ол бағдарламаның орындалу уақытының  интервалы, сол уақытта бағдарламалық  объект өмiр сүредi. Айнымалылардың өмiр сүру уақыты ауқымды және жергiлiктi болады. Жергiлiктi  өмiрлiк уақыты бар айнымалыға жадыдан белгiлi-бiр  орын алады және де сол өзi анықталған блоктың iшiнде мәнi болады. Мұндай айнымалыларға  блоктың орындалуына байланысты ылғи да жадыдан жаңа орын бөлiнiп  отырады. Ал шыққан кезде ол орын жойылып  кетедi.

Си++ - тағы барлық функциялар өмiрлiк уақыты ауқымды болады және де оның өмiрлiкуақыты бағдарлама орындалып  болғанға дейiн  болады.

Көрiну облысы дегенiмiз –  ол берiлген объектiнi қолданған бағдарламаның  бiр бөлiгi.

Информация о работе Отчет по практике в «Манғыстаумұнайгаз»