Здавалка
Главная | Обратная связь

Функциялар, main функциясы



2. Функция аргументтері

3. Мән қайтаратын функциялар

Кілттік сөздер:функция, функция прототипі, аргумент, формалды және нақты параметрлар.

Иллюстрациялық материал:слайд

 

С тілінде модульдар функциялар деп аталады. Функцияны анықтауда анықталған барлық айнымалылар локальді айнымалылар болып табылады да, олар өздері анықтаған функцияларда ғана қызмет ете алады. Көптеген функциялар параметрлер тізімінен тұрады. Параметрлар функцияларға мәлімет алмасуға мүмкіндік береді. Функция параметрлары да локальді айнымалылар

int main () k=sqrt

Көптеген функциялардан тұратын программаларда main функциясы жұмыстың негізгі бөлігін орындайтын функцияларға қатынау тобы ұйымдастырылуы керек. Программаны бірненше функцияларға бөлу- біріншіден оны бақылауға ыңғайлы; екіншіден- программада қайтатын код болмайды; үшіншіден – программа кодын функция түрінде өрнектеу оны шақыру арқылы программаның кез-келген бөлігінен орындауға мүмкіндік береді. Әрбір функция программа мақсатын қамту керек.

Функцияны сипаттау

Тип функциясы (Тип1 Параметр1, Тип2 Параметр2, Тип n Параметр n )

{Айнымалыны сипаттау ;

Функция нұсқаулары;

return (мән) }

 

Программадағы әрбір нақты параметрлардың типі функцияны жариялауда көрсетілген сәйкес параметрлердің типіне және санына сәйкес келуі тиіс. С-дің маңызды ерекшеліктерінің бірі- функция прототипіб.т. Прототип функцияны оны алғаш қолданғанға дейін жариялайды. Прототип компиляторға функциямен қайтарылатын мәліметтер типін функция қабылдайтын параметрлер саны, параметрлердің типі мен ретін хабарлайды. Прототиптің соңында міндетті түрде үтір нүкте (;) қойылады:

int maximum (int x, int y, int z);

Егерфункция мән қайтармайтын болса , оның типі void болуы керек.

9-дәріс

Тақырып. Көрсеткіштер және массивтер

Жоспар:

1. Көрсеткіштер.

2. Сілтемелер және массивтер

Кілттік сөздер:көрсеткіш, сілтеме, массив, матрица

Иллюстрациялық материал:слайд.

Көрсеткіштер.Компилятор айнымалыны анықтау операторын өңдеген кезде мысалы int i=5; int типке сәйкес жады бөлінеді және көрсетілген мәнге меншіктейді. Программадағы айнымалыны оның аты ( i ) арқылы шақыру компилятор мен айнымалының мәні сақталатын жады аймағының адресіне ауыстырылады. Программалаушы жады аймағының адресін сақтау үшін жеке меншік айнымалыларды анықтауына болады. Бұндай айнымалылар көрсеткіштер деп аталады. Сонымен көрсеткіштер жады аймағының адресін сақтауға арналған. С++ -те көрсеткіштердің үш түрі бар. Олар:

1. объектілерге арналған көрсеткіштер.

2. функцияларға арналған көрсеткіштер.

3. қасиеттерімен және амалдар жиынтығымен ерекшеленетін void-қа арналған көрсеткіштер .

Көрсеткіштер өз алдында жеке дара тип болып табылмайды. Олар әрқашанда қандай да бір нақты типпен байланысты болады. Функцияның атқарылатын коды орналасқан код сегментінде функцияға арналған көрсеткіштің адресі болады, яғни ол функцияны шақырғанда басқару берілетін адрес.

Функцияларға арналған көрсеткіштер функцияларды қосымша түрде (оның аты арқылы емес адресін сақтап тұрған айнымалыны шақыру аты) шақыру үшін және функцияның атын басқа функцияға параметр ретінде беру үшін пайдаланылады. Функцияға арналған көрсеткіштің типі мынадай болады: “берілген типтің мәнін қайтаратын және сол типтің аргументтеріне ие функция көрсеткіші”. Функцияға арналған көрсеткіштің жалпы түрі:

тип (*аты)(аргументтер типтерінің тізімі)

Мысалы:

int (*fun)(double, double)

Бұл мысал int типінің мәнін қайтаратын және double типті екі аргументтен тұратын функцияға fun атаулы көрсеткішті қайтарады.

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

тип*аты

мұндағы типсілтеме және биттік өрістен басқасының барлығы бола алады. Олар деректерді тығыздап жинауға арналған (биттік өріс). Биттік өрістен басқасының барлығы бола алады (Биттік өріс- құрылым өрістерінің ерекше түрі. Олар деректерді тығыздап жинауға арналған), сонымен қатар тип бұл кезде әлі анықталмаған бірақ, тек қана жарияланған болуы мүмкін.

Жариялаулардағы жұлдызша тек қана атауға қатысты болғандықтан, егер бірнеше көрсеткішті жариялау қажет болса, онда жұлдызшаны (*) олардың әрқайсысының атының алдына қою талап етіледі. Мысалы мына операторда

int *а, b,*с

мұнда а және с бүтін типті айнымалыға арналған екі көрсеткіш және бүтін типті b айнымалысы сипатталған. Көрсеткіштің өлшемі жады моделіне тәуелді болады. Сонымен қатар көрсеткішке арналған көрсеткішті де анықтауға болады.

Адресін сақтауға талап ететін объектінің нақты типі анықталмаған жағдайда void-қа арналған көрсеткіш пайдаланылады.(Мысалы әртүрлі уақыт кезеңінде бір ғана айнымалыға әртүрлі типтегі объектілер адресін сақтау талап етілсін). void-қа арналған көрсеткішке кез келген типтегі көрсеткіштің мәнін меншіктеуге, сонымен қатар оны кез келген көрсеткішпен салыстыруға болады. Бірақ ол сілтеме жасайтын жады облысымен қандай да бір әрекеттер орындалмай тұрып оны нақты бір типке түрлендіру қажет. Көрсеткіш тұрақты (константа) немесе айнымалы бола алады және константа немесе айнымалыға көрсете алады. Мысалы,

int i; //бүтін айнымалы

const int ci=1; //бүтін типті константа

int *pi; //бүтін айнымалыға арналған көрсеткіш

const int *km; // бүтін константаға арналған көрсеткіш

int *const cp=&i; //бүтін айнымалыға арналған – көрсеткіш константа

const int *const klm=&ci; //бүтін константаға арналған көрсеткіш константа

мысалдарда көрсетілгендей, егер const модификаторы көрсеткіштің аты мен жұлдызшаның ортасында орналасса, онда ол көрсеткіштің өзіне қатысты болады да оның өзгеруіне тиім салады. Ал егер const жұлдызшаның сол жағында орналасса, онда ол өзі көрсетіп тұрған мәннің тұрақтылығын береді.

Сілтеме сілтемені инициализациялауда көрсетілген атау синонимі түрінде көрсетіледі. Сілтемені көрсеткіш ретінде қарастыруға болады. Сілтеменің хабарлау форматы:

тип & аты;

мұндағы тип- сілтеме көрсетілген көлемнің типі, &- сілтеменің операторы, аты- көрсетілген ауыспалы сілтемелік типтің аты болады. Мысалы,

int kol;

int& pal=kol; //pal сілтемесі kol аты үшін альтернативті

const char& CR= ‘\n’; //тұрақтығы сілтеме

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

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

Массив дегеніміз- бір ғана атпен берілген бір типті айнымалылардың жиынтығы.

Массивтің элементтері тік жақшаға ([ ]) алынып жазылады, ал элементтері индекстермен беріледі. Ең соңғы элементтің индексі массивтің ұзындығын көрсетеді. С++ -те массивтің индексі 0-ден басталатындықтан оның ұзындығы көрсетілген мәннен 1-ге артық болады. Массив үшін инициализациялайтын мәндер фигуралық жақшаларда жазылады. Мәндер элементтерге рет-ретімен меншіктеледі. Егер массивтағы элементтер инициализаторлардан көп болса, онда мәндері көрсетілмеген элементтер ноль болады. Массив өлшемділігі оның элементтерінің типімен компиляция этапында орындалатын массивті орналастыру үшін қажетті жадтың көлемін анықтайды. Сондықтан өлшем бүтін оң таңбалы тұрақтымен немесе тұрақты өрнекпен берілуі мүмкін. Егер массивті сипаттау кезінде өлшем көрсетілмесе инициализатор болуы керек. Бұл жағдайда компилятор инициализацияланған мәндер саны бойынша жадты анықтайды. Массив өлшемін атаулы тұрақтылар көмегімен берген қолайлы. Мұндай өзгерту үшін программаның бір жерінде тұрақты мәнін көрсетіп қойған жеткілікті. Массивтің соңғы элементі оның өлшемін сипаттауда берілген бірге аз номерден тұратынына назар аударыңыз.

Мысалы: k, n массиві берілген. Массив элементтерінің қосындысын анықтау қажет.

# include < iostream.h>

int main (){

const int n=5;

int i,s;

int mas1[n]={1,4,15,-20,7};

for (i=0,s=0;i<n;i++)

s+=mas1[i];

cout<<”s=”<<s;

return 0 ;

}

Нәтиже s=7 болады.

 

Назар аударыңыз!

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

Көп өлшемді массив әрбір өлшемді квадрат жақшада көрсетумен беріледі. Мысалы:

int math[6][8];

Оператор алты жолдан және сегіз бағанадан тұратын екі өлшемді массивтің сипаттамасын береді, жадта мұндай массив тізбек торларында жоласты орналасады. Көп өлшемді массив келесі элементке өту кезінде соңғы элементі тезірек өзгертетіндей болып орналасады. Көп өлшемді массивтің элементтеріне ену үшін оның барлық индекстері көрсетіледі.

Динамикалық көп өлшемді массив құру үшін new операциясында оның барлық өлшемдерін көрсету керек (ені жоқ өлшем айнымалы болуы мүмкін).

Массивтен жадтың босатылуы кез келген өлшем санымен delete[] амалының көмегімен орындалады. Тұрақтыға сілтеуішті жоюға болмайды.

 

10-дәріс

 

Тақырып. Жолдармен жұмыс.

Жоспар:

1. Жол ұғымы

2. Жолдармен жұмысқа арналған функциялар.

 

Кілттік сөздер:жолдықтип, нөл-символ,жолдық функциялар.

Иллюстрациялық материал:слайд, электрондық оқулық – А.О. Алдабергенова, С++ тілінде программалу негіздері

 

Жол дегеніміз символдардың тізбегі. Си және С++ тілінде жол 0 символымен аяқталады. Жолды массив ретінде қарастырамыз

Char s[15] = «Программалау»

п р о г р а м м а л а у      

 

Char s2 [] = «Информатика»

Char *s3 = «тобы»,

 

С++ кітапханасында жолдарды немесе жеке символдарды енгізуге және шығаруға арналған <stdio.h> тақырыптық файлының gets (s) енгізу , puts(s) шығару функциялары бар.

Мысалы: puts(«1-ші жолды енгіз»);

Gets (s1);

 

С, С++ кітапханасында <string.h> тақырыптық файлының жолдық қатарды өңдейтін келесі функциялары бар:

1. strlen (s) – берілген s жолының ұзындығын анықтайды. Мысалы: n=strlen (s)

2. strcpy (s1,s2) – 2-ші жолды 1-ші жолға көшіру

3. strcat (s1, s2) – 1-ші жолды 2-ші жолға біріктіріп нәтижені 1-ші жолға шығарады

4. strcmp(s1, s2) – 2-ші жолмен 1-ші жолды салыстырады. Егер жолдар тең болса, функция 0 мәнін қайтарады. 1-ші және 2-ші жолдан кіші болсо, онда 0-ден кіші мәнін береді, ал 1-ші жол 2-ші жолдан үлкен болса, онда 0-ден үлкен мәнді қайтарады

5. strset (s,’t’) – жолды берілген символмен толтырады

6. strlwr (s) – жолдың үлкен әріптерін кіші әріптерге ауыстырады

7. strups(s) – жолдың кіші әріптерін үлкен әріптерге ауыстырады

 

<stdlib.h>

1. atof (s) – жолды нақты санға түрлендіреді

2. atoi (s) – жолды бүтін санға айналдырады

3. atoll (s) – жолды ұзын бүтін санға түрлендіреді

4. sprintf (s) – санды жолға айналдырады

 

 

Мысалы:

Екі символдық жол берілген, осы жолдарды біріктіріп олардың ұзындығын анықтау қажет.

 

#include <stdio.h>

#include <string.h>

#include <iostream.h>

int main ();

{

char s[], c[], int n;

 

gets (s);

gets (c);

strcat (s,c);

n=setlen(s);

cout<<n;

return 0;}

 

11-дәріс

Тақырып. Құрылымдар мен біріктірулер.

Жоспар:

1. Құрылымдар

2. Біріктірулер

3. Биттік өрістер

Кілттік сөздер:құрылымдар, біріктірулер, биттік өрістер.

Иллюстрациялық материал:слайд, электрондық оқулық – Алдабергенова А.О. С++ тілінде программалу негіздері

Құрылымның массивтен айырмашылығы: құрылымның элементтері әр типті бола береді. C++ құрылымдық класс түрі болып табылады және оның барлық қасиеттеріне ие.

Құрылымды сипаттау үшін struct қызметші сөзі қолданылады.

Сипатталынуы:

struct [тип аты] {

тип1элемент1;

тип2элемент2;

............................

тип n элементn ; }

[сипаттау тізімі];

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

Құрылым массивін және құрылымдағы көрсеткіштерді анықтау

struct {

char fio[30];

date, code;

double salary; }

stuff [100]*ps;

 

Егер тізім жоқ болса, құрылым сипаттамасы жаңа типті анықтайды. Ол типтің атын кейін стандартты типтермен қатар пайдалануға болады.

Мысалы. struct work {

char fio[30];

int date, code;

double salary; }

……………….

worker stuff[100]*ps;

 

Құрылым инициализациясы үшін оның элементтерінің мәнің фигуралы жақша{} ішіне олардың сипатталу реті бойынша жазылады.

struct {

 

char fio[30];

int date, code;

double salary;}

worker={“”,14,117,225,50};

Құрылым массивін инициализациялау кезінде фигуралы жақшаның ішіне массивтің әрбір элементін алу керек.

struct complex {

float k,z;}

compl [2][3]={

{{1,1},{1,2},{1,3}} //compl[0]

{{2,1},{2,2},{2,3}} //compl[1] };

Құрылым өрістеріне өту таңдау (.) амалының көмегімен жүреді. Ол үшін өріске құрылым аты немесе көрсеткіш арқылы ( ) өту керек.

Worker.fio=””;

Stuff[8].Code=2/7;

ps salary =0.74;

Мысалы .

int main () { struct { char f[25]; int gruppa;

double oplata; } Dannie={“kim”};

dannie.gruppa=311;

dannie.oplata=125000.500

cout<<”\nfio=”<<dannief;

cout<<”\ngruppa=”<<dannie.gruppa;

cout<<”\ntolem_aki=”<<dannie.oplata;

return 0; }

12-дәріс

Тақырып. Графикалық операторларды өңдеу

Жоспар:

1. Графикалық режимді тағайындау.

2. Түстер палитрасы

3. Графикалық операторлар

Кілттік сөздер:драйвер, экран кеңейтілімі, графикалық режим, графикалық операторлар.

Иллюстрациялық материал:слайд, электрондық оқулық – Алдабергенова А.О. С++ тілінде программалу негіздері

С++ те графикамен жұмыс жасау үшін Graphics.h және conio.h алғашқы файлдарын іске қосамыз және міндетті түрде conio.h құрамына кіретін getch() процедурасы болуы қажет.

Графикалық режимді тағайындау үшін драйвердің режимін анықтайтын және адаптердің жұмыс режимін тағайындайтын бүтін типті екі айнымалы болуы қажет. Графикалық режимді тағайындайтын айнымалыға міндетті түрде бас әріптермен жазылған DETECT мәні меншіктелуі қажет. Осы мәнді меншіктегенде айнымалыға үнсіз келісім бойынша 0 мәні меншіктеледі де, ол EGA.BGI драйверімен жұмыс жасайды. Осы кезде адаптердің жұмыс режимі 640x480x16 режиміне ауысады.

Графикалық режимді тағайындау процедурасы:

initgraph(&драйвер, &режим номері, ‘EGA.BGI файлының жолы’ ) Графикалық режимді жабу процедурасы- closegraph();

u putpixel(x,y,c)-putpixel(20,25,2)-нүкте салу. Мұндағы с-түсі, ол 0..15-ке дейінгі мәндерді қабылдайды немесе түстердің ағылшын тіліндегі атын үлкен әріптермен жазу керек. Мысалы putpixel(20,25,RED)- қызыл түсті нүкте шығарады.

u line(x1,y1,x2,y2)-line(20,25,45,25)-түзу салу

u moveto(x,y)- moveto(20,25)-нүктені қажетті позицияға орналастыру

u lineto (x,y)- нүктенің ағымдағы орнынан көрсетілген позицияға дейін сызық сызу

u circle(x,y,r)-шеңбер салу

u pieslice(x,y,а1,а2,r) – боялған шеңбер немесе сектор салу, мұндағы а1,а2–бастапқы және соңғы бұрыштар –pieslice(40,100,0,360,20)

u rectangle(x1,y1,x2,y2)-іші боялмайтын тіктөртбұрыш салу

u ellipse(x,y, а1,а2,r1,r2)-элипс салу

u bar(x1,y1,x2,y2)-іші боялған тіктөртбұрыш салу

u bar3d(x1,y1,x2,y2,а, ontop(onoff))- параллелепипед салу

u arc(x,y,a, b, r)- доға салу, мұндағы a, b –бастапқы және соңғы бұрыш - arc(100,50,0,180,50)

u fillellipse(x,y,xr,yr)- іші боялған эллипс салу

u outtext(“Graphica”)-мәтінді экранның сол жақ жоғарғы бұрышына шығару

u outtextxy(x,y,“Graphica”)-мәтінді x,y позициясына шығару

u setсolor(c)- осы процедурадан кейін орналасқан объектілердің жиегін берілген с түсімен бояйды. Мысалы setсolor(6); circle(200,150,50)-шеңбердің жиегі қоңыр түске боялады.

u setfillstyle(int Стиль, int түс)- бояу стилін және түсін береді. Мұндағы стиль 0.. 12 –ге дейінгі аралықты қабылдайды. Түс 0..15 аралығында. Мысалы, setfillstyle(1, 14) немесе setfillstyle(SOLD_FILL, 14)- Бұл кезде осы процедурадан кейн орналасқан іші боялатын объектілер тұтас сары түске боялады, өйткені стильдің 1 немесе SOLD_FILL мәні тұтас бояу дегенді білдіреді.

13-дәріс

Тақырып. Файлдар.

Жоспар:

1. Файлдар туралы түсінік.

2. Файлдармен жұмысқа арналған функциялар.

Кілттік сөздер:файл, файлды ашу, файлға мәлімет жазу, файл соңына мәлімет қосу..

Иллюстрациялық материал:слайд.

Файл – сыртқы есте сақтау құрылғыларында (магниттік дискілерде) орналастырылған және мәлімет өңдеу, тасымалдау, кездерінде біртұтас күйде қарастырылатын мәліметтер жиыны.

Файлдармен жұмыс істеу үшін оларды, алдымен, ашу керек, яғни файл туралы мәліметті – атын, адресін программаға белгілі ету қажет.

С тілінде файл ашу fоpen() функциясы арқылы орындалады. Ол сыртқы құрылғыдағы физикалық файлды, мысалы, A:\NUR.DAT, программадағы оның логикалық атымен байланыстырады. Логикалық ат дегенымыз - файлға нұсқауыш, яғни файл туралы мәлімет сақталатын жады аймағына сілтеме жасау. Файлға нұсқауыш сипатталуы тиіс.

Сонымен, файлдармен жұмыс істегенде нұсқауыштар қолданылады. Файлға нұсқауыш мынандай түрде сипатталады:

FILE *fr;

Мұндағы FILE типі - <stdio.h>тақырыптық файлында анықталған құрылым. Бұл нұсқауышты көрсетілген файлмен сол файл ашылғаннан бастап, байланыстырып қоюға болады. Ол үшін келесі функция пайдаланылады:

fopen(“файл адресі/аты”, “қатынасу типі”);

ол файлға нұсқауыш мәнін қайтарады немесе қате болса, NULL мәнін береді.

Мысалы, мынадай оператор орындалуы нәтижесінде

fp=fopen (“ex1.txt”,”w”);

жұмыс бумасындағы ex1.txtфайлы оғанмәлімет жазу (write) үшін ашылады, ал программада бұл файлды fpнұсқауышы арқылы пайдаланамыз (яғни fоpen()функциясы файлдың сыртқы атын оның программада қолданылатын ішкі логикалық атымен байланыстырады).

Сонымен, файлды ашатын fоpen()функциясының жалпы жазылуы:

fp = fopen (name, mode)

мұнда fp– файлға сілтейтін нұсқауыш; name– файлдың адресін де көрсетуге болатын аты, көбінесе символдық тіркес арқылы жазылады; mode– файл қандай режимде қолданылатынын көрсететін параметр, бұл да символдар тіркесімен төмендегідей түрде жазылады:

“r” –файлды оқу үшін ашу (файл бұрын ашылған болуы тиіс);

“w” –бос файлды информация жазу үшін ашу;

“a” –файл соңына мәлімет қосып жазу үшін оны ашу;

“r+” –файлдан информация оқу және оған информация жазу үшін ашу;

“w+” –бос файдан информция оқу және оған мәлімет жазу үшін файл ашу (бұрын файл болса ол өшіріледі);

“a+” –файлдан информация оқу және оның соңына информация қосып жазу үшін ашу;

“t” –файл мәтіндік (текстік) режимде ашылады, ол rt,wt,at.т.с.с. болып көрсетіле береді;

“b” –файл екілік режимде ашылады, rb,wb,ab,т.с.с. болып көрсетіле береді;

Келісім бойынша файл көбінесе мәтіндік режимде ашылады.

Файлмен жұмыс істеп болған соң, оны жабу үшін келесі функция қолданылады:

fclose( файл_нұсқауышы) .

Файлға мәлімет жазу/оқу үшін жалпы енгізу/шығару функциялары тәріздес бірсыпыра функциялар пайдаланылады:







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.