Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5-LEKCIYA.docx
Скачиваний:
1
Добавлен:
27.11.2023
Размер:
962.25 Кб
Скачать

Kelisim boyınsha argumentler

C++ tilinde funkciya shaqırılǵanda ayrım argumentlerdi túsirip qaldırıw múmkin. Buǵan funkciya prototipinde usı parametrlerdiń kelisim boyınsha mánislerin kórsetiw arqalı erisiw múmkin. Máselen, tómende prototipi keltirilgen funkciya hár túrli shaqırıwǵa iye bolıwı múmkin:

//funkciya prototipi

void Pútin_San(int i, bool Bayraq = true, char Blg = ’\n’);

//funkciyanı shaqırıw variantları

Pútin_San(1, false, ‘a’);

Pútin_San(2, false);

Pútin_San(3);

Birinshi shaqırıwda barlıq parametrler sáykes argumentler arqalı mánislerin qabıl etedi, ekinshi jaǵdayda i parametri 2 mánisin, Bayraq parametri false mánisin hám Blg ózgeriwshisi kelisim boyinsha ‘\n’ mánisin qabıl etedi.

Kelisim boyınsha mánis beriwdiń bir shárti bar - parametrler diziminde kelisim boyınsha mánis berilgen parametrlerden keyingi parametrler de kelisim boyınsha mániske iye bolıwı shárt. Joqarıdaǵı mısalda i parametri kelisim boyınsha mánis qabıl etken jaǵdayda, Bayraq yaki Blg parametrleri mánissiz bolıwı múmkin emes. Mısal retinde, berilgen sandı kórsetilgen anıqlıqta shıǵarıwshı programmanı qarayıq. Qoyılǵan máseleni sheshiwde sandı dárejege asırıw funkciyası - pow() hám jıljıwshı nóqatlı uzın sannan modul alıw fabs1() funkciyasınan paydalanıladı. Bul funkciyalar prototipi <math.h> baslama faylında jaylasqan (3-qosımshaǵa qarań):

#include <iostream>

#include <math.h>

void Shıǵarıw(double Numb, double Anıqlıq = 1, bool Bayraq =

true);

int main ()

{

double Mpi = -3.141592654;

Shıǵarıw(Mpi, 4, false);

Shıǵarıw(Mpi, 2);

Shıǵarıw(Mpi);

return 0;

}

void Shıǵarıw(double Numb, double Anıqlıq = 1, bool Bayraq =

true)

{

if(!Bayraq)

Numb = fabsl(Numb);

Numb = (int)(Numb * pow(10, Anıqlıq));

Numb = Numb / pow(10, Aniqliq);

cout << Numb << ‘\n’;

}

Programmada sandı túrli anıqlıqta (Anıqlıq parametri mánisi arqalı) shıǵarıw ushın hár túrli variantlarda shiǵariw() funkciyası shaqırılǵan. Programma islewi natiyjesinde ekranǵa tómendegi sanlar shıǵarıladı:

3.1415

-3.14

-3.1

Parametrdiń kelisimi boyınsha beriletuǵın mánisi turaqlı, global ózgeriwshi yaki qandayda bir funkciya tárepinen qaytarılatuǵın mánis bolıwı múmkin.

Lokal hám global ózgeriwshiler.

Ózgeriwshiler funkciya denesinde yaki onnan sırtta járiyalanıwı múmkin. Funkciya ishinde berilgen ózgeriwshilerge lokal ózgeriwshiler delinedi. Bunday ózgeriwshiler yadtaǵi programma steginde jaylasadı hám tek ózi járiyalanǵan funkciya denesinde ámelga asırıladı. Basqarıw tiykarǵı funkciyaǵa qaytıwı menen lokal ózgeriwshiler ushın ajıratılǵan yad bosatıladı (óshiriledi).

Hár qanday ózgeriwshi óziniń ámel qılıw aymaǵı hám jasaw waqtı qásiyetleri menen xarakterlenedi.

Ózgeriwshi ámel qılıw aymaǵı degende ózgeriwshini isletiw múmkin bolǵan programma aymaǵı (bólegi) túsiniledi. Bul túsinik penen ózgeriwshiniń kóriniw aymaǵı túsinigi tuwrıdan-tuwrı baylanıslı. Ózgeriwshi ámel qılıw aymaǵınan shıqqanda kórinbey qaladı. Ekinshi tárepten, ózgeriwshi ámel qılıw aymaǵında bolıwı, biraq kórinbewi múmkin. Bunda kóriniw aymaǵına ruxsat beriw ámeli «::» járdeminde kórinbes ózgeriwshige muráját etiw múmkin boladı.

Ózgeriwshiniń jasaw waqtı dep, ol bar bolǵan programma bóleginiń orınlanıwına ketken waqıt intervalına aytıladı.

Lokal ózgeriwshiler ózleri járiyalanǵan funkciya yaki blok shegarasında kóriniw aymaǵına iye. Bloktaǵı ishki bloklarda tap usı attaǵı ózgeriwshi járiyalanǵan bolsa, ishki blokta bul lokal ózgeriwshi de ámel qılmay qaladı. Lokal ózgeriwshi jasaw waqtı - blok yamasa funkciyanı orınlaw waqtı menen anıqlanadı. Bul jaǵday sonı bildiredi, túrli funkciyalarda bir-birine ulıwma baylanıslı bolmaǵan birdey attaǵı lokal ózgeriwshilerdi isletiw múmkin.

Tómendegi programmada main() hám sum() funkciyalarında birdey attaǵı ózgeriwshilerdi isletiw kórsetilgen. Programmada eki sannıń qosındısı esaplanadı hám shıǵarıladı:

#include <iostream.h>

//funkciya prototipi

int sum(int a, int b);

int main()

{

//lokal ózgeriwshiler

int x = 1;

int y = 4;

cout << sum(x, y);

return 0;

}

int sum(int a, int b)

{

//lokal ózgeriwshi

int x = a+b;

return x;

}

Global ózgeriwshiler programma tekstinde funkciya anıqlanıwınan sırtta járiyalanadı hám járiyalanǵan jerinen baslap programma aqırına shekem ámel qıladı.

#include <iostream.h>

int f1();

int f2();

int main ()

{

cout << f1() << ” ” << f2() << endl;

return 0;

}

int f1()

{

return x; //kompilyaciya qátesi júz beredi

}

int x = 10; //global ózgeriwshi járiyalanıwı

int f2()

{

return x * x;

}

Joqarıda keltirilgen programmada kompilyaciya qátesi júz beredi, sebebi f1() funkciya ushın x ózgeriwshisi belgisiz esaplanadı.

Programma tekstinde global ózgeriwshilerdi olar járiyalanǵannan keyin jazılǵan qálegen funkciyada isletiw múmkin. Sol sebepli, global ózgeriwshiler programma tekstiniń basında jazıladı. Funkciya ishinen global ózgeriwshige múráját etiw ushın funkciyada onıń atı menen birdey atta lokal ózgeriwshiler bolmawı kerek. Eger global ózgeriwshi járiyalanıwında oǵan baslanǵısh mánis berilmegen bolsa, olardıń mánisi 0 esaplanadı. Global ózgeriwshiniń ámel qılıw aymaǵı onıń kóriniw aymaǵı menen ústi-ústine tusedi (birdey).

Sonı aytıp ótiw kerek, tájiriybeli programma dúziwshiler múmkinshiligi barınsha global ózgeriwshilerdi isletpewge háreket etedi, sebebi bunday ózgeriwshiler mánisi programmanıń qálegen jerinen ózgertiw qáwpi barlıǵı sebepli programma islewinde mazmunı tárepten qáteler júzege keliwi múmkin. Bul pikirimizdi tastıyıqlaw ushın mısal kóreyik:

#include <iostream.h>

//global ózgeriwshi járiyalanıwı

int test = 100;

void Shıǵarıw(void);

int main()

{

//lokal ózgeriwshi járiyalanıwı

int test = 10;

//global ózgeriwshi shıǵarıw funkciyasın shaqırıw

Shıǵarıw();

cout << ”Lokal ózgeriwshi: “ << test <<’\n’;

return 0;

}

void Shıǵarıw(void)

{

cout << ”Global ózgeriwshi: “ << test <<’\n’;

}

Programma basında test global ózgeriwshisi 100 mánisi menen járiyalanadı. Keyin, main() funkciyasında test atı menen lokal ózgeriwshisi 10 mánisi menen járiyalanadı. Programmada Shıǵarıw() funkciyasına múráját etilgende, tiykarǵı funkciya denesinen waqtınsha shıǵıladı hám natiyjede main() funkciyasında járiyalanǵan barlıq lokal ózgeriwshilerge múráját etiw múmkin bolmay qaladı. Sol sebepli, Shıǵarıw() funkciyasında global test ózgeriwshisiniń mánisi shıǵarıladı. Tiykarǵi programmaǵa qaytılǵannan keyin, main() funkciyasındaǵı lokal test ózgeriwshisi global test ózgeriwshisin «jasıradı» hám lokal test ózgeriwshiniń mánisi shıǵarıladı. Programma islewi nátiyjesinde ekranǵa tómendegi nátiyjeler shıǵarıladı:

Global ózgeriwshi: 100

Lokal ózgeriwshi: 10

Соседние файлы в предмете Программирование на C++