Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

6-LEKCIYA

.docx
Скачиваний:
0
Добавлен:
27.11.2023
Размер:
42.24 Кб
Скачать

6-LEKCIYA. BIR ÓLSHEMLI MASSIVLER. STATIKALÍQ MASSIVLER. MASSIV ELEMENTLERIN SARALAW HÁM IZLEW USÍLLARÍ. MASSIVLER ÚSTINDE HÁR TÚRLI ÁMELLER.

Yadta izbe-iz jaylasqan bir qıylı tiptegi mánislerge massiv delinedi. Ádette massivlerge bolǵan talap, úlken kólemdegi, biraq sheklengen muǵdardaǵı hám tártiplengen mánislerdi qayta islew menen baylanıslı máselelerdi sheshiwde júzege keledi. Máselen, studentler toparınıń reyting balları menen islesiw máselesi qoyılǵan. Bunda topardıń ortasha reytingin anıqlaw, reytinglerdi kemeyiwi boyınsha tártiplestiriw, konkret studenttiń reytingi haqqında maǵlıwmat beriw hám basqa máselelerdi sheshiw zárúr bolsın. Belgilengen máselelerdi sheshiw ushın berilgenlerdiń tártiplengen izbe-izligi zárúr boladı. Bul jerde tártiplengenlik mánisi sonda, izbe-izliktiń hár bir mánisi óz ornına iye boladı. Berilgenler izbe-izligin eki túrli usılda payda etiw múmkin. Birinshi jol –hár bir reyting ushın óz aldına ózgeriwshi anıqlaw: Reyting1,…, ReytingN. Biraq, topardaǵı studentler sanı jeterli dárejede úlken bolǵanda, bul ózgeriwshiler qatnasqan programmanı dúziw úlken qıyınshılıqlardı júzege keltiredi. Ekinshi jol – berilgenler izbe-izligin jalǵız at penen anıqlap, onıń mánislerine múrájáttı, sol mánislerdiń izbe-izlikte jaylasqan ornınıń nomeri (indeksi) arqalı ámelge asırıw esaplanadı. Reytingler izbe-izligin Reyting dep atap, onıń mánislerine Reyting1,…,ReytingN kórinisinde múráját etiw múmkin. Ádette berilgenlerdiń bunday kórinisine massivler delinedi. Massivlerdi matematikadaǵı sanlar vektorına uqsatıw múmkin, sebebi vektor da óziniń individual atına iye hám ol fiksirlengen muǵdardaǵı bir tiptegi mánislerden – sanlardan ibarat.

Demek, massiv – bul fiksirlengen muǵdardaǵı ayrım mánislerdiń (massiv elementleriniń) tártiplengen jıynaǵı esaplanadı. Barlıq elementler birdey tipte bolıwı kerek hám bul tip element tipi yáki massiv ushın tayanısh tipi dep ataladı. Joqarıdaǵı keltirilgen mısalda Reyting – haqıyqıy tiptegi vektor dep ataladı.

Programmada isletiletuǵın hár bir konkret massiv óziniń individual atına iye bolıwı kerek. Bul atqa tolıq ózgeriwshi delinedi, sebebi onıń mánisi massivtiń ózi boladı. Massivtiń hár bir elementi massiv atı, hámde kvadrat qawısqa alınǵan hám element selektorı dep atalıwshı indeksti kórsetiw arqalı áshıq túrde belgilenedi.

Múráját sintaksisi:

<massiv atı>[<indeks>]

bul kóriniske jeke ózgeriwshi delinedi, sebebi onıń mánisi massivtiń óz aldına elementi. Bizlerdiń mısalda, Reyting massiviniń óz aldına komponentlerine

Reyting[1],…,Reyting[N] jeke ózgeriwshiler arqalı múráját etiw múmkin. Basqasha aytqanda bul ózgeriwshiler indeksli ózgeriwshiler dep ataladı.

Massiv indeksi sıpatında pútin san qollanıladı. Ulıwma alǵanda indeks sıpatında pútin san mánisin qabıl qılatuǵın qálegen ańlatpa isletiliwi múmkin hám onıń mánisi massiv elementi nomerin anıqlaydı. Ańlatpa sıpatında ózgeriwshi de alınıwı múmkin, ózgeriwshiniń mánisi ózgeriwi menen múráját etilip atırǵan massiv elementin anıqlawshı indeks te ózgeredi. Solay etip, programmadaǵı bir indeksli ózgeriwshi arqalı massivtiń barlıq elementlerin belgilew múmkin boladı. Máselen, Reyting[i] ózgeriwshisi arqalı i ózgeriwshiniń mánisine baylanıslı túrde Reyting massiviniń qálegen elementine múráját etiw múmkin.

Haqıyqıy tiptegi (float, double) mánisler toplamı sheksiz bolǵanlıǵı sebepli olar indeks sıpatında isletilmeydi.

C++ tilinde indeks barqulla 0 den baslanadı hám onıń eń úlken mánisi massiv járiyalanıwındaǵı uzınlıqtan birge kem boladı.

Massiv járiyalanıwı tómendegishe boladı:

< tip> <at> [<uzınlıq>]={baslanǵish mánisler}

Bul jerde <uzınlıq> - turaqlı ańlatpa. Mısallar:

int m[6] = {1, 4, -5, 2, 10, 3];

float a[4];

Massiv statikalıq hám dinamikalıqalıq bolıwı múmkin. Statikalıq massivtiń uzınlıǵı aldınnan belgili bolıp, ol yadta belgili adresten baslap izbe-iz jaylasadı. Dinamikalıqalıq massivtiń uzınlıǵı programma orınlanıw waqtında anıqlanıp, ol dinamikalıqalıq yadta usı waqıtta bos bolǵan adreslerge jaylasadı. Máselen:

int m[6];

kórinisinde járiyalanǵan bir ólshemli massiv elementleri yadta tómendegishe jaylasadı:

1-súwret. Bir ólshemli massivtiń yadtaǵı jaylasıwı.

Massivtiń i – elementine m[i] yáki *(m+i) – qurallı múráját etiw múmkin. Massiv uzınlıǵı sizeof(m) ámeli arqalı anıqlanadı.

Massiv járiyalanıwında onıń elementlerine baslanǵish mánisler beriw múmkin hám onıń bir neshe variantları bar.

1) ólshemi kórsetilgen massiv elementlerin tolıq inicializacialaw:

int t[5] = {-10, 5, 15, 4, 3};

Bunda 5 elementten ibarat bolǵan “t” atlı pútin tiptegi bir ólshemli massiv járiyalanǵan hám onıń barlıq elementlerine baslanǵısh mánisler berilgen. Bul járiyalaw tómendegi járiyalaw menen ekvivalent:

int t[5];

t[0] = -10; t[1] = 5; t[2] = 15; t[3] = 4; t[4] = 3;

2) ólshemi kórsetilgen massiv elementlerin tolıq emes inicializacialaw:

int t[5] = {-10, 5, 15};

Bul jerde tek ǵana massiv basındaǵı úsh elementke baslanǵısh mánisler berilgen. Sonı aytıp ótiw kerek, massivtiń basındaǵı yáki ortasındaǵı elementlerine mánisler bermesten, onıń aqırındaǵı elementlerge baslanǵısh mánis beriw múmkin emes. Egerde massiv elementlerine baslanǵısh mánis berilmese, onda kelisim boyınsha static hám extern modifikatorı menen járiyalanǵan massiv ushın elementleriniń mánisi 0 sanına teń dep, automatic massivler elementleriniń baslanǵısh mánisleri belgisiz esaplanadı.

3) ólshemi kórsetilmegen massiv elementlerin tolıq inicializacialaw:

int t[] = {-10, 5, 15, 4, 3};

Bul mısalda massivtiń barlıq elementlerine mánisler berilgen esaplanadı, massiv uzınlıǵı kompilyator tárepinen baslanǵısh mánisler sanına qarap anıqlanadı. Egerde massiv uzınlıǵı berilmese, baslanǵısh mánisi beriliwi shárt. Massivti járiyalawǵa mısallar:

char ch[4] = {‘a’, ‘b’, ‘c’, ‘d’}; //belgiler massivi

int in[6] = {10, 20, 30, 40}; //pútin sanlar massivi

char str[]=”abcd”; //qatar uzınlıǵı 5 ke teń, sebebi onıń

//aqırına ‘\0’ belgisi qosıladı

char str[] = {‘a’, ‘b’, ‘c’, ’d’};

//joqarıdaǵı qatardıń basqasha jazılıwı

Másele. Bir ay ishindegi kúndelik temperaturalar berilgen. Ay ushın ortasha temperaturanı esaplaw programması dúzilsin. Programma teksti:

int main()

{

const int n = 30;

int temp[n];

int i, s, temp_ortasha;

cout << “Kúnlik temperaturanı kiritiń:\n”

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

{

cout << “\n temp[“ << i << ”]=”;

cin >> temp[i];

}

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

s += temp[i];

temp_ortasha = s / n;

cout << “Kúnlik temperatura:\n”;

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

cout << “\ttemp[“ << i << ”]=” << temp[i];

cout << ”Aydaǵı ortasha temperature = “ << temp_ortasha;

return 0;

}

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