Функцияларды жариялау жне анытау

Кіріспе


Курсты жмыс тапсырамасы С++ жоары дегейлі программалау тілінде жазылан. Барлы программаа ойылатын негізгі талап – оларды спецификациясы толы йлесімде трде жмыс істеуі жне олданушыны кез келген іс-рекеттеріне дрыс жауап айтаруы болып табылады. Сонымен атар, программа крсетілген мерзімде шыуы керек жне ажетті згертулер мен толытыруларды жедел енгізуге ммкіндік беруі тиіс. Басаша айтанда, программалар сапасыны азіргі кездегі критерийлері – бл, алдымен, сенімділік, сонымен атар программаны жазып бітіру жмысы мен оны сйемелдеуді дрыс жоспарлау. Осындай масаттара ол жеткізу шін программа рылымы арапайым болып, жеіл оылуы жне жылдам згертілуі ажет. Курсты жмыс тапсырмасын, осы талаптара сай орындалуын арастырды. Тапсырмаа ойылан талап бойынша «Магазин» атты класс арылы деректер базасын ру ажет болатын. Енгізілген деректер файлда саталуы тиіс жне файлдан айта оылуы ажет. олданушы керекті дісті олдануы шін программаны басында тадау менюі шыуы тиіс. Бадарламада деректермен жасалатын бірнеше операция болады:

§ мліметтерді енгізу

§ енгізілген деректерді толыымен шыару

§ тауар аты бойынша алфавиттік реттеу

§ тауар аты бойынша толы апарат алу

§ ізделінген тауар деректер орында болмаса,ескерту шыару

§ дкендегі жалпы тауар баасын есептеу

 

Программада « Магазин » атты класты рістері:

· тауар аты – жолды тип char name [20];

· тауар баасы–бтін тип int baga [15];

· тауар саны – бтін тип int sany [15].

 

Программада олданылатын Engiz(), Shygar(), Izdeu(), Sort() жне Esep() функциялары класты ішінде болуы ажет жне бір-бірімен жйелі трде йлесімді ызмет атаруы тиіс. Функция жайлы, оларды программадаы ызметі туралы толыыра негізгі блімде сипатталады. орыта келгенде C++ тілінде деректер базасымен жмыс жасаймыз.

 

 

Негізгі блім

Олданылан айнымалыларды сипаттау

Айнымалы Сипаты, атараты ызметі, типі
Magazine класстын аты
name[20]; Тауар атын сипаттайтын ріс, жолды типті, зындыы 20 орын
sany; Тауар санын сипаттайтын ріс, бтін типті
bagasy; Тауар санын сипаттайтын ріс,бтін типті
b Тауарды жалпы ны меншіктелетін бтін типті айнымалы
m   Менюда орындалатын программа ретін крсету шін олданылатын бтін типті
a Есепте тауар жалпы баасы меншіктелген, бтін типті

Класты сипаттау

Класс олданушы анытайтын мліметтерді абстрактылы типі болып табылады, ол мліметер жне олармен жмыс істеуге арналан функциялар трінде берілген шынайы объектіні лгісін бейнелейді.
Класс мліметтері рістер (рылым рістеріне сас), ал класс функциялары дістер деп аталады. рістер мен дістерді класс элементтері деп атайды. Алашы арастырыстырудаы класс сипаттамасы тмендегідей трде болады:
class <атауы>{

[ private: ]

<жасырын элементтерді сипаттау>

Public:

<олжетімді элементтерді сипаттау>

}; //сипаттау нктелі тірмен аяталады

5

Мысалдаы private жне public спецификаторлары класс элементтеріні крінуін басарады. Private тйінді сзінен кейін сипатталан элементтер класс ішінде ана крінеді. Келісім бойынша, класта атынас руды осы трі абылданан. Класс интерфейсі public спецификаторынан кейін сипатталады. Кез келген спецификаторды рекеті келесі спецификатора дейін немесе класс соына дейін саталады. Бірнеше private жне public секцияларын беруге болады, оларды жазылу реттілігі маызды емес.

Класс рістері:

· oсы класс типінен баса кез келген типті абылдай алады (алайда, осы класа нсауыш немесе сілтемелер болуы да ммкін);

· const модификаторы кмегімен сипатталуы ммкін, мндайда олар тек бір рет ана инициалданады (конструктор арылы) жне згеруі ммкін емес;

· static модификаторыны кмегімен сипатталуы ммкін, біра auto, extern жне register модификаторлары арылы жазылмайды.

Сипаттау кезінде рістерді инициалдауа тыйым салынан.Кластар ауымды (кез келген блоктан тыс жарияланан) жне жергілікті (блок ішінде, мысалы, функцияны немесе баса класты ішінде жарияланан) болуы ммкін.

Тменде жергілікті (локалды) класты кейбір ерекшеліктері крсетілген:

· жергілікті класты ішінде зі сипатталан аймаындаы типтерді, статикалы (static) жне сырты (extern) айнымалыларды, сырты функциялар мен тізбелер элементтерін олдануа болады; осы айматаы автоматты айнымалыларды олдануа тыйым салынан;

· жергілікті класты статикалы элементтері болмайды;

· осы класты дістерін тек класты ішінде сипаттауа болады;

· егер бір класс баса класс ішінде кірістірілсе, оларды бір-біріні элементтеріне ол жеткізе алатын ерекше ммкіндіктері болмайды, олара тек орта ережелерге сйкес трде пайдаланыла алады.

Мысал: курсты жмыс барысында «Магазин» атты класын рды. Бл шін оны асиеттері (тауар саны, тауар аты, тауар саны, тауар баасы ) мен тртіптерін беруіміз керек.

class Magazine {

private:

char name[20];

int sany;

int bagasy;

};

Private спецификаторында біз негізгі типтермен атар функцияларды тадау операторы switch (n) арылы менюды шыарамыз.

олданушыа программаны аятауа жне жмыс рекетін тадау ммкіндігін беріп отырмыз. Цикл арылы р функция орындаланнан кейін switch (n) операторы кмегімен менюді айтадан шыарамыз.Негізінен switch(ауыстырыш) операторы есептеу процесін бірнеше баытта тарматауа арналан. Программа коды тмендегідей:

switch (n){

case 1 : m.Engiz(); break;

case 2 : m.Shygar(); break;

case 3 : m.Sort(); break;

case 4 : m.Izdeu(); break;

case 5 : m.Esep(); break;

case 6 : cout<<"Kosh bol";

default: printf("\nKate engizilgen/tagy engizip kor");

}

 

 

1-сурет. Меню. Switch() операторы кмегімен жасалан

 

 

БАСЫ

n=0
While (n!=0)  
cout<< “\nсанды тандa\n”;    
Енгізілген мзір саны (cin>>n )
ате
1.Engiz()
2.Shygar()
3.Sort()
4.Izdeu()
5.Esep()
Шыу
6.Жмысты аятау

 

 

 


2-сурет.Программаны негізгі блок схемасы

class Magazine {

public: //Бл блімде программалауда олданылатын функциялар тізімі жазылан

void Engiz();

void Shygar();

void Sort();

void Izdeu();

void Esep();

};

 

Класты барлы дістері жасырын рістерді тікелей пайдалана алады, басаша айтанда, класс функцияларыны тлалары класс элементтеріні private кріну аймаына кіреді.

рбір класс рамында атауы класс атауымен бірдей болып келетін кем дегенде бір діс болады. Ол конструктор деп аталады жне класс объектісін ру кезінде автоматты трде шаырылады. Конструктор объектіні инициалдау шін ажет. Конструкторды автоматты трде шаыру инициалданбаан айнымалыларды пайдалануа байланысты туындайтын ателерді алдын алуа ммкіндік береді.

 

 

Функция

Функцияларды жариялау жне анытау

Функция – бл белгілі бір аяталан рекетте орындайтын сипаттамалар мен операторларды атау берілген тізбегі. Функция параметрлерді абылдап, мн айтара алады.

С++ тіліндегі кез келген программа функциялардан трады, оларды бірі міндетті трде main деп аталуы тиіс (программаны орындалуы осы функциядан басталады). Функцияны шаыран кезде ол орындала бастайды. Кез келген функция жариялануы жне аныталуы тиіс. Функция да баса шамалар сияты бірнеше рет жариялануы ммкін, біра ол бір-а рет аныталуы тиіс. Компилятор функцияны шаыруды дрыстыын тексеруі шін программа мтінінде функцияны жариялау оны шыыруды ерте орналасуы тиіс.

Функцияны жариялау оны атын, айтарылатын мніні типін жне оан берілетін параметрлер тізімін таайындайды. Функцияны анытауда, оны жариялаумен атар, функция тласы амтылады, ол жйелі жашалар ішіндегі операторлар мен сипаттамалар тізбегінен трады:

[ класс ] типі атауы ([параметрлер_тізімі ]) [throw

( аластамалар ) ] { функция тласы }

Функцияны анытауды рама бліктерін арастырайы.

 

o Міндетті трде ажет етілмейтін класс модификаторыны кмегімен, extern жне static тйінді сздерін олдана отырып, функцияны кріну аймаын айын трде крсетуге болады.

 

· Extern –функцияны программаны барлы модульдерінде ауымды, яни глобалды (келісім бойынша) трде крінуі;

· Static –функцияны тек зі аныталан модуль шеберінде крінуі.

 

o Функцияны айтаратын мніні типі жиым мен функциядан (біра жиыма немесе функцияа нсауыш бола алады) баса кез келген тип трінде болуы ммкін. Егер функция оны шаыран программаа ешандай мн айтармайтын болса, онда void типі крсетіледі.

 

Бір функцияны аныталуындаы, жариялануындаы, шаырылуындаы параметрлерді типтері мен жазылу реттілігі бір-бірімен сйкес келуі керек. Курсты жмыста біз бірнеше функцияны атаратын ызметіне арай бліп олданды.олданылан функциялар тменде:

· Void Engizu ()фунциясында олданушы тауар саны жне оны аты, саны, баасы жайлы мліметер енгізіледі. Ол шін функция ішіне алдымен тауар санын енгізімеміз. Тауар саны белгілі боландытан forоператорыны кмегімен ( for (int i(0); i<b;i++)) жне деректерді енгізу шін файлды ашып (ifstream F; F. Open ("Magazine.txt");), енгізуді бастаймыз, бізді жадайда ол тауар аты, саны жне баасы:

Енгізіп боланнан кейін , сйкесінше fout.close(); деп файлды жабамыз.

 

3-сурет. Тауарды файла енгізу процесі

10

Engizi ();

 

 


Енгізілетін тауар саны (n)

 

 

Деректерді енгізу
int i(0); i<b;i++

 


 

 

Файла сатау


Шыу


Engiz() функциясыны блок схемасы

 

· Void Shygar ()функциясы енгізілген барлы млеметтерді экрана шыарады. Ол шін файлды ашып (ifstream F; F.open("Magazine.txt");), тауар атын, санын жне баасын шыарамыз. Функция орындалып боланнан кейін, міндетті трде файлды жабамыз F.close();

Shygar

Magazine.txt файлынан деректерді оу
Мліметтеді файлдан алу
while(!F.eof())

 

 


 

Тауар тізімін экрана шыару
Шыу
Реттеу жасау
i = 0; i < m[i]; i++

 

 


 

Shygar() функциясыны блок схемасы

 

 

4-сурет. Енгізілген тауарларды толыымен шыаруы.

Void Izdeu ()функциясы тауарды аты бойынша файлдан млеметті іздеп, оны экран бетіне шыарады. Ізделініп отыран тауар мліметін шыару шін if, for операторыны кмегімен олданушы жазан тауар атыны файлдаы тауарды аттымен салыстырамыз. Сйкес келсе, сол тауар жайлы апаратты шыарамыз:

 

5-сурет. Аты бойынша ізделінген тауар жайлы апарат

· Void Sort ()функциясы енгізілген тауар мліметтерін алфавит бойынша реттейді. Ол шін алдымен файлды ашамыз (ifstream F; F.open("Magazine.txt");), for операторы арылы барлы тауарларды аттарын бір-бірімен салыстырып, срыптау жасаймыз. Срыптау жасаланнан кейін тауар жайлы апаратты кезегімен шыарамыз.

· Void Esep().Курсты жмысты негізгі есебі, тауарларды жалпы нын анытау болатын.Ол шін тауар баасы мен санына бтін типті жаа айнымалы енгіземіз. Программа коды барлы товар санын баасына кбейтіп, осады:

 

int a,b;

a=0;b=0;

for(int j=0;j<i;j++){

a=m[j].sany*m[j].bagasy;

b=b+a;

} cout<<"Magazin zhalpy kuny "<<b; }

 

 

6-сурет. Программаны дкендегі тауарды жалпы нын есептеуі жне жмысты тотатылуы

 

Файл

Файл деп тізбектеле орналасан жеке компоненттерден тратын дискідегі біртектес мліметтерді реттелген жиынын айтады. Файл - белгілі бір масата жету жолында зіндік йымдастыру жолымен бір-бірімен логикалы байланыста растырылан мліметтерді (жазбаларды) атаулы жиыны.

Курсты жмыста біз файлды мліметтерді енгізу, сатау шін олданамыз. Ол шін алдымен стандартты кітапханалар тізіміне файл кітапханасын #include <fstream> осамыз жне деректер саталынатын текстік жатты командалы кодмен ашамыз (Magazine.txt атты текстік жат рылды)

 

ofstream fout;

fout.open("Magazine.txt",ios::app);

Функцияны орындалу барысында деректерді енгізу шін файлды ашуымыз керек жне сйкесінше функция орындалып біткеннен кейін файлды F.close();командасымен міндетті трде жабамыз.

7-сурет.Деректерді текстік файлда саталуы

Орытынды

 

Программалау технологиясы пніні курсты жмысыны тапсырмасы деректер базасымен жмыс істеуге баытталан. «Магазин» атты класс рып, деректерді енгізу, шыару, реттеу, іздеу бл негізгі тапсырмасы болса, осымша есеп берілген болатын. Тапсырманы орындау масатында С++ жоары дегейлі программалау тілін пайдаланды. С++ тіліні арасында берілген мліметтер типтеріне баылауды кшейтуге ммкіндік алды. С++ тіліні е маызды табысы обьектіге бадарланан бадарламалау тілі екендігінде.Оу процесінде С++ жоары дегейлі программалау тіліндегі операторларды, класс, функция, файлдармен жмыс жасауды, оларды программаа осуды, атаратын ызметтерін, асиеттерін жекелеп ткен болатынбыз. Курсты жмыс барысында программаа кітапхана осудан бастап, толытай бір программа жазды. Ол шін жоарыда айтылан С++ тіліні ызметтерін олданды. Натыра айтса, программаны дрыс жмыс істеуін жзеге асыратын басты функция main () олданылды. Switch () операторы арылы менюді шыарып, олданушыа жмысты ретін тадауа ммкіндік бердік. Switch () операторында Engiz(), Shygar(), Sort(), Izdeu(), Esep() атты функциялар орналасан. Бл функциялар, тапсырманы курсты жмыса ойылан талаптара сай орындалуы шін рылан. р айсысы бір-бірімен байланыса отырып, орта жмыс атарады. Мысалы, Engiz () функциясыны масаты деректерді файла енгізу болса, Shygar () функциясы сйкесінше енгізілген деректерді файлдан шыарып береді. Енгізілген деректерге реттеу жне іздеу функцияларын оса отырып, біз функция жайлы біліктілігімізді арттырды. Файл - деректер базасымен жмыс жасаан кезде маызды жат болып табылады жне программа басында файл кітапханасын осып, р функция басында командамен файлды ашып, згеріс енгізгеннен кейін айта жабу те маызды екенін ескердік. Натыра айтса, класс типінде функцияларды олданып, деректерді файла енгізіп, сатап жне шыарды. Енгізілген деректерден файл ішінен тауарды аты бойынша іздеп, табылан тауарды анытамасын шыарып, тауарларды алфавиттік ретпен орналастырды. Курсты жмыс барысындда алан нтижелерге сйене отырып келесідей тжырымдаманы шыаруа болады. Деректерді ааз жсінде сатап, реттеуге араанда, жаа технологиярды ол жетерлік арапайым ммкіншілігін пайдаланып, жмыс барысын тиімді баытта жеілдетуге болады. Бадарлама арылы жеілдетілген жмыс уаытты немдейді. Жеілдетілген жмыс жне немделген уаыт жасы нтижелерге жеткізеді.