Massivin doldurulması və işlənməsi. Delphi mühitində birölçülü massivlərlə hərəkətlər. Birölçülü massivlər. Massivin formalaşdırılması və onun elementlərinin göstərilməsi Massivdə ardıcıl axtarış

İndiyə qədər biz sadə məlumat növləri ilə işləmişik - məntiqi (boolean), tam (tam, söz, bayt, longint), real (real), simvol (char). Bu dörd əsas tipdən istifadə etməklə istənilən alqoritm proqramlaşdırıla bilər. Lakin müxtəlif real dünya haqqında məlumatları emal etmək üçün daha mürəkkəb struktura malik məlumatlar tələb olunur. Ən sadə skalyar tiplərə əsaslanan belə mürəkkəb konstruksiyalar strukturlar adlanır. Struktur əsas skalyar verilənlərdən ibarət olan bəzi kompozit verilənlər növüdür.Əgər struktur təsvir olunduğu proqramın bütün icrası ərzində strukturunu dəyişməzsə, belə struktur statik adlanır.

Massiv – elementlərin homojen toplusu

Demək olar ki, bütün proqramlaşdırma dillərində həyata keçirilən ən ümumi struktur massivdir.

Massivlər məhdud sayda komponentlərdən ibarətdir və massivin bütün komponentləri əsas tip adlanan eyni tipə malikdir. Massiv quruluşu həmişə vahiddir. Massiv tam, real və ya char tipli elementlərdən və ya eyni tipli digər elementlərdən ibarət ola bilər. Bununla belə, buradan belə nəticəyə gəlmək olmaz ki, massiv komponentləri yalnız skalyar tipə malik ola bilər.

Massivin başqa bir xüsusiyyəti ondan ibarətdir ki, onun hər hansı bir komponentinə istənilən yolla daxil olmaq mümkündür. Bunun mənası nədi? Proqram öz seriya nömrəsi (indeks) ilə lazım olan elementi dərhal əldə edə bilir.

Massiv indeksi

Massiv elementinin nömrəsi çağırılır indeks. İndeks kimi təyin olunan sıra tipli qiymətdir indeks növü bu massivdən. Çox vaxt bu tam ədəddir (tam ədəd, söz və ya bayt), lakin məntiqi və xarakterli də ola bilər.

Paskalda massivin təsviri. Paskalda massivin tipi xüsusi sözdən istifadə edilməklə müəyyən edilir massiv(İngilis dili – massiv) və onun proqramdakı bəyanı belə görünür:

Növ< имя _ типа >= T massivi [I];

burada I massiv indeks tipi, T onun elementlərinin növüdür.

Siz dərhal massiv tipli dəyişənləri təsvir edə bilərsiniz, yəni. dəyişən təsviri bölməsində:

Var a,b: T massivi [ I ];

Tipik olaraq, bir indeks növü hər hansı bir sıra tipinin müəyyən bir dəyər diapazonu ilə xarakterizə olunur: I 1 .. I n . Məsələn, indekslər 1..20 və ya " a ".." n " diapazonunda dəyişə bilər.

Bu halda Paskal massivinin uzunluğu aşağıdakı ifadə ilə xarakterizə olunur:

ord (I n)- ord (I 1)+1.

Burada, məsələn, iki növ bəyannamə var: 10 tam ədəddən ibarət Paskal massivi kimi vektor və 256 simvoldan ibarət sətir:

Növ
Vektor=tam ədəd massivi;
Stroka=xarakter massivi;

Massiv indeksindən istifadə etməklə siz istənilən massivin ayrı-ayrı elementlərinə adi dəyişən kimi daxil ola bilərsiniz: siz həmin elementin qiymətini əldə edə, ona ayrıca qiymət təyin edə və ifadələrdə istifadə edə bilərsiniz.

Vektor və sətir tiplərinin dəyişənlərini təsvir edək:

Paskal Massivi İndeksinin hesablanması

Paskalda massivin indeksinin açıq şəkildə göstərilməsinə ehtiyac yoxdur. Siz massiv indeksi kimi indeks növünə uyğun dəyişən və ya ifadədən istifadə edə bilərsiniz. Başqa sözlə, indekslər hesablana bilər.

Bu mexanizm çox güclü proqramlaşdırma vasitəsidir. Lakin bu, ümumi bir səhv yaradır: hesablamanın nəticəsi etibarlı indeks dəyərləri diapazonundan kənarda ola bilər, yəni mövcud olmayan elementə daxil olmaq üçün cəhd ediləcəkdir. Bu ümumi xəta "hüduddan kənar massiv" adlanır.

Paskal massivi xətası olan proqram nümunəsi

Proqram primer_error;
Növ
vektor=söz massivi;
var
n:tam;
a:vektor;
başlamaq
n:=45;
a:=25;
son.

Baxmayaraq ki, bu proqram dilin sintaksisinə tam uyğun gəlsə və tərcüməçi onu “keçəcək”, Paskal massivində həddən artıq xəta baş verəcək. n = 45, n * 2 = 90 ifadəsi olduqda, kompüter a massiv elementinə daxil olmağa çalışacaq, lakin 80 ölçülü bir massiv təsvir edildiyi üçün belə element yoxdur.

Fərz edək ki, yaxşı proqram mövcud olmayan massiv elementlərinə daxil olmağa cəhd edərsə, xəbərdarlıq mesajı verməlidir. Massivin həm sağ, həm də sol sərhədlərindən mümkün kənarlaşmaları yoxlamaq artıq olmaz, çünki ifadənin qiymətinin hesablanması nəticəsində sərhədin solunda yerləşən ədədin nəticədə olması mümkündür. Paskal massivi.

Bütün bunlardan belə nəticəyə gələ bilərik: proqramçı massiv indeksləri ilə işləyərkən çox diqqətli olmalıdır.

Paskal massivləri ilə əsas əməliyyatlar

Bildiyiniz kimi, məlumat növünün müəyyən edilməsi, icazə verilən dəyərlərin diapazonunu, kompüterdə daxili təmsili, habelə bu tip verilənlər üzərində icazə verilən əməliyyatlar toplusunu məhdudlaşdırmaq deməkdir. Biz verilənlərin tipini Paskal massivi kimi təyin etdik. Bu məlumat növü üzərində hansı əməliyyatlar müəyyən edilir? Bütün massivlərdə və yalnız massivlər eyni tipdə olduqda yerinə yetirilə bilən yeganə hərəkət təyinatdır. Əgər proqram eyni tipli iki dəyişəni təsvir edirsə, məsələn,

Var
a , b: real massiv;

sonra dəyişəndən istifadə edə bilərsiniz a dəyişənə dəyər təyin edin b(a:= b). Bu halda massivin hər bir elementi a massivdən müvafiq qiymət təyin olunacaq b. Paskal massivlərində bütün digər hərəkətlər element-element yerinə yetirilir (vacibdir!) .

Paskal massivinin girişi

Massiv elementlərinin qiymətlərini daxil etmək üçün indeks dəyərini ardıcıl olaraq birincidən sonuncuya qədər dəyişməli və müvafiq elementi daxil etməlisiniz. Bu hərəkətləri həyata keçirmək üçün müəyyən sayda təkrarlama ilə bir döngədən istifadə etmək rahatdır, yəni. sadə arifmetik dövrə, burada loop parametri dəyişən olacaq - Paskal massivinin indeksi. Element dəyərləri klaviaturadan daxil edilə bilər və ya təyinat operatorundan istifadə edərək təyin edilə bilər.

Paskal massivinin daxiletmə proqramının nümunə fraqmenti

Var
A: tam ədəd massivi;
Başlayın
i üçün:=1-dən 10-a qədər
Readln(a[i]); (i-ci element klaviaturadan daxil edilir)

İndi Paskal massivinin təsadüfi ədədlərlə avtomatik doldurulması halını nəzərdən keçirək; bunun üçün funksiyadan istifadə edəcəyik. təsadüfi (N).

Paskal massivini təsadüfi ədədlərlə doldurmaq üçün proqramın nümunə fraqmenti

Var
I: bayt; (dəyişən I massiv indeksi kimi daxil edilir)
Başlayın
i üçün:=1-dən 10-a qədər
A[i]:= təsadüfi(10); (Massivin i-ci elementinə 0-dan 10-a qədər "təsadüfi" tam ədəd verilir)

Paskal massivinin çıxışı

Paskalda massivin çıxışı həm də element-element, döngədə həyata keçirilir, burada parametr birincidən sonuncuya qədər ardıcıl olaraq bütün dəyərləri götürərək massiv indeksidir.

Paskal massivinin çıxış proqramının nümunə fraqmenti

Var
A: tam ədəd massivi;
I: bayt; (dəyişən I massiv indeksi kimi daxil edilir)
Başlayın
i üçün:=1-dən 10-a qədər
Yazın(a[i]," "); (massiv sətirə çıxarılır, hər elementdən sonra boşluq çap olunur)

Çıxış da müvafiq indeksi göstərən bir sütunda edilə bilər. Amma bu halda nəzərə almaq lazımdır ki, massiv böyükdürsə, bütün elementlər ekrana sığmaya bilər və sürüşmə baş verəcək, yəni. Ekranın bütün sətirləri doldurulduqda, növbəti element çap olunacaq və yuxarı element ekrandan kənara köçürüləcək.

Paskal massivini sütunda göstərmək üçün nümunə proqram

Var
A: tam ədəd massivi;
I: bayt; (dəyişən I massiv indeksi kimi daxil edilir)
Başlayın
i üçün:=1-dən 10-a qədər
Writeln("a[", i,"]=", a[i]); (massiv elementlərinin bir sütunda göstərilməsi)

Ekranda, məsələn, aşağıdakı dəyərləri görəcəyik:

a =2
a =4
a =1 və s.

Paskal massivlərindən istifadə etməklə məsələnin həlli nümunəsi

Tapşırıq: iki n ölçülü vektor verilmişdir. Bu vektorların cəmini tapın.

Problemin həlli:

  • Bu problemdə daxil edilən məlumatlar iki birölçülü massiv olacaq. Bu massivlərin ölçüsü ixtiyari ola bilər, lakin müəyyəndir. Bunlar. biz qəsdən böyük massivi təsvir edə bilərik və proqramda əslində neçə elementin istifadə olunacağını müəyyən edə bilərik. Bu massivlərin elementləri tam ədədlər ola bilər. Sonra təsvir belə görünəcək:

    var a, b: tam ədəd massivi;

  • Çıxış yaranan massivin elementləri olacaq, onu c adlandıraq. Yaranan massivin növü də tam ədəd olmalıdır.
  • Üç massivdən əlavə, bizə dəyişən lazım olacaq - dövrə parametri və massiv indeksi, gəlin onu i adlandıraq, eləcə də hər massivdə elementlərin sayını müəyyən etmək üçün n dəyişəni.

Problemin həllində irəliləyiş:

  • Massivlərin elementlərinin sayını (ölçüsü) təyin edək, n qiymətini daxil edək;
  • a massivini təqdim edək;
  • b massivini təqdim edək;
  • i indeksinin dəyərlərini 1-dən n-ə qədər təkrarlayan bir döngədə c massivinin elementlərinin dəyərlərini düsturdan istifadə edərək ardıcıl olaraq hesablayırıq:

    c [ i ]= a [ i ]+ b [ i ];

  • Nəticə olan massivi ekranda göstərək.

Proqram mətni:

Nümunə vektor cəmi proqramı

proqram xülasəsi;
Var
a, b, c: tam ədədlər massivi;
I, n: bayt;
Başlayın
Write("massiv ölçüsünü daxil edin:");
Readln(n);
i:=1 üçün n etmək
Readln(a[i]); (a massiv girişi)
i:=1 üçün n etmək
Readln(b[i]); (massiv girişi b)
i:=1 üçün n etmək
C[i]:=a[i]+b[i]; (massivlərin cəminin hesablanması)
i:=1 üçün n etmək
yaz (c[i]," "); (massiv çıxışı ilə)
son.

Proqramlaşdırmada massiv eyni tipli (eyni tipli) elementlər toplusudur.

Bir neçə növ massiv var - birölçülü(vektor) və çoxölçülü.

Massivdəki elementlər öz adları və seriya nömrələri - indeksləri ilə xarakterizə olunur.

İndeks massivdəki elementin sıra nömrəsidir.

Paskalda hər bir elementə elementin massivdəki mövqeyini təsvir edən bir və ya bir neçə indeks təyin edilir.

Birölçülü massiv

Paskalda massiv sintaksisi belədir:

Var a: array Of integer ;
Harada:
1 - alt yazı
10 - yuxarı işarə
A – massiv dəyişəninin adı
- dəyərlər diapazonu
Tam ədəd - məlumat növü
A[ i ] – Paskalda massiv elementinə daxil olmaq

Massiv elementlərinin növü fayllardan (hətta massivdən) başqa Paskalda istənilən etibarlı tip ola bilər.

Massiv nümunəsi: A = (1,-5,230,55,-88,0,100)

Massiv elan edildikdə, onun üst yazısı ciddi şəkildə müəyyən edilməlidir.

Massivi təsvir edərkən yaddaş ayrılır və kompilyator təsvir olunan massiv üçün nə qədər yaddaşın ayrılması lazım olduğunu bilməlidir.

Paskal massivində indekslərin sayında heç bir məhdudiyyət yoxdur. Bununla belə, massivin özü 65537 baytdan böyük olmamalıdır.

Massiv, həmçinin tip elanı bölməsində elan edilə bilər:

Növ kütləvi = real massiv ; Var a,b,c: kütlə ;
Massiv elementlərinə dövrədə daxil olur.

Paskalda massiv elementlərini emal etməyin ən səmərəli üsulu parametrli dövrə operatorudur.

sizcə niyə? Bəli, çünki biz massivdə sonlu sayda elementləri bilirik.

Paskalda massivi doldurmaq üçün alqoritmlər

  1. Kompüterdən istifadə edərək massiv elementlərinin daxil edilməsi aşağıdakı konstruksiyadan istifadə etməklə həyata keçirilir:

    i üçün:= 1-dən 10-a qədər oxuyun(A[i]);

  2. Massivin təsadüfi qurulması.

    Massiv təsadüfi dəyişən sensordan istifadə edərək təsadüfi olaraq təyin edilə bilər.

    Paskalda təsadüfi dəyişən sensoru işə salmaq üçün xüsusi konstruksiya yazmalısınız - Randomize edin;

    Yeni dəyər Random(n) funksiyasından istifadə etməklə yaradılır, burada n tam ədəddir. Bu zaman diapazonu 0-dan n-ə qədər olan istənilən ədəd yaradılır.

    K:= Təsadüfi(100);
    Random funksiyası parametrsiz istifadə olunarsa, o, 0 diapazonunda həqiqi ədəd (real tip) yaradır.< X < 1

    X:= Təsadüfi;

Massivin təsadüfi doldurulması

Paskalda bu konstruksiya massivin təsadüfi doldurulmasını həyata keçirir.

Randomize; i üçün:= 1-dən 10-a Başlayın A[i] := təsadüfi*100-70 ; yaz (A[i]:6:2); Son;

Serialdan dərs: " Proqramlaşdırma dili Pascal»

Massivi elan etdikdən sonra onunla işləyə bilərsiniz. Məsələn, massiv elementlərinə dəyərlər təyin edin və ümumiyyətlə onları adi dəyişənlər kimi qəbul edin. Müəyyən elementə daxil olmaq üçün siz kvadrat mötərizədə massiv identifikatorunu (ad) və element indeksini göstərməlisiniz.

Məsələn, Mas, A girişi MAS massivinin ikinci elementinə və A massivinin onuncu elementinə daxil olmağa imkan verir. İkiölçülü massivlə işləyərkən n-ölçülü massivlə iki indeks müəyyən edilir - n. indekslər.

Məsələn, Matr girişi M massivinin dördüncü sütununun dördüncü sətirində yerləşən elementin dəyərini emal etmək üçün əlçatan edir.

Massivin indekslənmiş elementləri indekslənmiş dəyişənlər adlanır. Siz massivin hüdudlarından kənara çıxa bilməzsiniz. Yəni Mas massivində beş element varsa, o zaman altıncı və ya səkkizinci elementə daxil olmaq xəta ilə nəticələnəcək.

Birölçülü massivlərlə işləyərkən yaranan tipik əməliyyatlara baxaq.

Birölçülü massivin dəyərlərlə doldurulması

Massivin doldurulması və çıxarılması yalnız element-element edilə bilər, yəni əvvəlcə birinci elementə dəyər təyin edə bilərsiniz, sonra ikinci və s, onu ekranda göstərməklə eyni - biz birinci, ikinci, üçüncü, və s. sonuna qədər.

Paskalda massiv elementlərinin eyni vaxtda daxil/çıxış vasitələri yoxdur, ona görə də dəyərlər element-element daxil edilir. Dəyərlər təyinat operatorundan istifadə edərək massiv elementinə təyin edilə bilər və ya Read və ya Readln operatorlarından istifadə edərək klaviaturadan daxil edilə bilər. For döngəsində massivin bütün elementlərini təkrarlamaq çox rahatdır.

Birölçülü massivləri doldurmağın yolları:

  1. Klaviaturadan dəyərin daxil edilməsi.
  2. Təsadüfi nömrə generatorundan istifadə edərək təyinetmə operatorunda dəyərlərin təyin edilməsi. Massivdə çoxlu element olduqda bu üsul daha rahatdır (klaviaturadan onların dəyərlərini daxil etmək çox vaxt aparır).
  3. Düsturdan istifadə edərək dəyərlərin təyin edilməsi.
  4. Fayldan massiv elementlərinin daxil edilməsi

1. Massiv elementlərinin qiymətlərinin klaviaturadan daxil edilməsi. Readln operatorundan istifadə edildiyi üçün hər bir dəyər yeni sətirə daxil ediləcək.

2. Massivin doldurulması intervaldan təsadüfi yaradılan ədədlər. Təsadüfi bir ədəd sensoru - təsadüfi funksiyanı bağlayırıq.

3. Doldurma massiv formuluna görə. Hər bir massiv elementinə düsturla hesablanmış bir dəyər verilir. Massivin hər bir elementi onun sıra nömrəsinin (indeksinin) üçqat dəyərinə bərabərdirsə, prosedur belə görünəcək:

4. Fayldan rəqəmlərin oxunması. Əvvəlcədən hər birində 30 ədəd olan bir neçə sətir yazan mətn faylı yaratmalısınız.

Massiv elementlərinin qiymətlərinin ekranda göstərilməsi

Nəticə element dəyərləri massiv ekrana daxiletmə, giriş kimi, dövrədə element-element yerinə yetirilir. Çıxış üçün Write və ya Writeln operatorlarından istifadə edəcəyik. Giriş parametrləri olaraq birincidən başlayaraq təkcə massivi deyil, həm də buraxılması lazım olan elementlərin sayını prosedura keçirəcəyik (massivdə elementləri çıxarıb əlavə etdikdə bu bizə lazım olacaq).

Misal 1. Klaviaturadan massivi doldurun və ekranda göstərin.

Həll.

Proqram iki prosedurdan istifadə edəcək: Init1 proseduru (klaviaturadan massivi doldurmaq) və Çap proseduru (massivin ekranda göstərilməsi).

Misal 2. Mətn faylından massivi doldurun və onu ekranda göstərin. Mətn faylında bir neçə sətir var, hər sətirdə 30 rəqəm var.

Siz birölçülü massivi necə doldurmağı və onu ekranda göstərməyi öyrəndiniz.

Növbəti dərsdə birölçülü massivlərin işlənməsi alqoritmləri ilə tanışlığı davam etdirəcəyik.

Dərsdə Paskalda birölçülü massivlərlə necə işləmək, təsadüfi ədədlər generatorundan - funksiyadan necə istifadə etmək izah edilir. təsadüfi Paskalda. Fibonaççi ədədlərinin əldə edilməsi nümunəsi nəzərdən keçirilir.


Saytdakı materiallar Paskal proqramlaşdırma dilinin praktiki mənimsənilməsinə yönəlib. Qısa nəzəri məlumat mövzu ilə bağlı materialın tam əhatə olunduğunu iddia etmir; Lazımi məlumatları İnternetdə böyük miqdarda tapmaq olar. Tapşırıqlarımıza Paskalda praktiki proqramlaşdırma bacarıqları əldə etmək imkanı vermək daxildir. Həll edilmiş vizual nümunələr və tapşırıqlar artan mürəkkəblik ardıcıllığı ilə təqdim olunur ki, bu da materialı sıfırdan öyrənməyi asanlaşdıracaq.

Massiv bəyannaməsi

Paskalda iki növ massiv var: birölçülü və ikiölçülü.
Paskalda birölçülü massivin təyin edilməsi belə səslənir: birölçülü massiv eyni verilənlər növünə aid olan, eyni ada malik olan müəyyən sayda elementdir və hər bir elementin öz indeksi - seriya nömrəsi var.
Paskalda massivin təsviri (bəyannamə) və onun elementlərinə çıxış aşağıdakı kimidir:

Massiv bəyannaməsi

var uzunluğu: massiv [ 1 .. 3 ] tam ədəd; başlanğıc uzunluğu[ 1 ] : = 500 ; dlina[ 2 ] : = 400 ; dlina[ 3 ] : = 150 ; ...

var uzunluğu: tam ədəd massivi; başlanğıc uzunluğu:=500; uzunluq:=400; uzunluq:=150; ...

  • dlina — massiv identifikatoru (ad);
  • bəyannamə üçün Array xidmət sözündən istifadə olunur (ingilis dilindən “massiv” və ya “dəst” kimi tərcümə olunur);
  • - birinci elementin nömrəsi (indeksi) kvadrat mötərizədə, sonra iki nöqtə və massivin sonuncu elementinin indeksi, yəni. mahiyyət etibarilə elementlərin sayı göstərilir; massivdəki elementlərin sayı deyilir massiv ölçüsü
  • of integer (ingilis dilindən "tam ədədlərdən") - massivin hansı növ olduğunu göstərir, burada köməkçi sözdür.
  • elan et ölçüsü sabit vasitəsilə istifadə edilə bilər:

    Massivin işə salınması

    Bundan əlavə, serialın özü də ola bilər Sabit, yəni. proqramda onun bütün elementləri əvvəlcədən müəyyən edilmişdir. Belə bir massivin təsviri belə görünür::

    const a: massiv [ 1 .. 4 ] tam ədəd = (1 , 3 , 2 , 5 );

    const a:tam ədəd massivi = (1, 3, 2, 5);

    Ardıcıl rəqəmlərlə doldurma:

    Nəticə: A = 8, A = 9, A = 10, ..., A[N] = A + 1

    Klaviatura girişi:

    Misal: Paskalda massivin necə daxil edildiyinə baxaq:

    writeln("elementlərin sayını daxil edin:"); readln(n); (əgər kəmiyyət əvvəlcədən məlum deyilsə, biz bunu xahiş edirik) for i:= 1 to n do begin write("a[", i, "]="); oxumaq(a[i]); ...son; ...


    ✍ Nümunə nəticə:

    Elementlərin sayını daxil edin: 3 a=5 a=7 a=4

    Massiv Elementlərinin Çapı

    Misal: Paskalda massivin necə göstərilməsinə baxaq:

    1 2 3 4 5 6 7 8 9 10 11 12 13 var a: massiv [ 1 .. 5 ] tam ədəd; (beş elementdən ibarət massiv) i:integer ; başlanğıc a[ 1 ] : = 2 ; a[ 2 ] : = 4 ; a[ 3 ] : = 8 ; a[ 4 ] : = 6 ; a[ 5 ] : = 3 ; writeln("A massivi:"); i üçün: = 1-dən 5-ə qədər yazın (a[ i] : 2 ); (massiv elementlərinin çıxışı) son.

    var a: tam ədəd massivi; (beş elementdən ibarət massiv) i: tam ədəd; başlamaq a:=2; a:=4; a:=8; a:=6; a:=3; writeln("A massivi:"); i:= 1-dən 5-ə qədər yazın(a[i]:2); (çıxış massivinin elementləri) sonu.

    ✍ Nümunə nəticə:

    A massivi: 2 4 8 6 3

    Massivlərlə işləmək üçün ən çox Paskalda parametrlə istifadə olunur, çünki siz adətən massivdə neçə elementin olduğunu bilirsiniz və elementlərin indeksləri kimi dövrə sayğacından istifadə edə bilərsiniz.

    Massiv 0 tapşırığı. Siz ölçülərin real massivini göstərməlisiniz 6 (yəni altı element); massivi giriş dəyərləri ilə doldurun və elementləri ekranda göstərin. İki döngədən istifadə edin: birincisi elementləri daxil etmək üçün, ikincisi çıxış üçün.


    Bir ölçülü massivlə işləməyin bu nümunəsində açıq bir narahatlıq var: elementlərə dəyərlər təyin etmək.

    Paskalda massivlərin işlənməsi, eləcə də massivin doldurulması adətən for loopundan istifadə etməklə baş verir.

    Paskalda təsadüfi funksiya

    Massiv elementlərinin qiymətlərini daim tələb etməmək üçün Random funksiyası tərəfindən həyata keçirilən Paskalda təsadüfi ədədlər generatorundan istifadə olunur. Əslində, psevdo-təsadüfi nömrələr yaradılır, amma məsələ bu deyil.

    0-dan n-ə qədər ədədlər yaratmaq üçün (n-in özünün dəyəri daxil deyil, tam ədəd intervalında tam ədədlər; i:integer; start randomize; i:=1-dən 10-a qədər f[i]:=random(10) başlayır; ( interval ) yaz (f[i]," "); son; son.

    ✍ Nümunə nəticə:

    9 8 9 2 0 3 6 9 5 0

    İntervaldakı həqiqi ədədlər üçün və ekranda elementləri göstərin: hər bir elementi göstərmək üçün üç mövqe müəyyənləşdirin.

    Paskalda Fibonaççi nömrələri

    Massivlə işləməyin ən ümumi nümunəsi Paskalda bir sıra Fibonaççi ədədlərinin çıxışıdır. Gəlin bunu nəzərdən keçirək.

    Misal: Fibonacci nömrə seriyası: 1 1 2 3 5 8 13…

    f[ 0 ] : = 1 ; f[ 1 ] : = 1 ; f[ 2 ] : = 2 ; ...

    f:=1; f:=1; f:=2; ...

    f[ 2 ] : = f[ 0 ] + f[ 1 ] ; f[ 3 ] : = f[ 1 ] + f[ 2 ] ;
    f[ i] : = f[ i- 2 ] + f[ i- 1 ] ;

    f[i]:=f+f;

    Seriyanın elementləri üçün düstur aldıq.

    Misal:İlk 20 Fibonaççi rəqəmini hesablayın və çap edin.

    1 2 3 4 5 6 7 8 9 10 11 var i: integer ; f: massiv [0 .. 19] tam ədəd; başlanğıc f[ 0 ] : = 1 ; f[ 1 ] : = 1 ; i üçün: = 2-dən 19-a qədər başlayır f[ i] : = f[ i- 1 ] + f[ i- 2 ] ; writeln (f[ i] ) sonu ; son.

    var i:integer; f:arrayof integer; başlamaq f:=1; f:=1; i:=2-dən 19-a qədər f[i]:=f+f başlayır; writeln(f[i]) sonu; son.

    Bu misalda ədəd seriyası ilə işləmə prinsipi aydın olur. Adətən, bir sıra sırasını əldə etmək üçün bu seriyanın hər bir elementini təyin etmək üçün bir düstur tapılır. Beləliklə, Fibonaççi ədədləri vəziyyətində bu düstur-qayda f[i]:=f+f kimi görünür. Buna görə də massiv elementlərini formalaşdırarkən for loopunda istifadə edilməlidir.

    Massiv 2 tapşırığı. 10 sıra verilir ixtiyariədədlər: a, a, ... , a (random() funksiyasından istifadə edin). Qonşu ədədlərin üçlüklərinin cəmini hesablayın və çap edin: a+a+a , a+a+a , a+a+a , …… , a+a+a

    Psevdokod:

    Maksimum elementi indeksinə görə tapmaq:


    Array_min tapşırığı: Massivin minimum elementini tapın. Elementi və onun indeksini çap edin.

    Massiv 4 tapşırığı. 10 tam elementdən ibarət massiv verilmişdir. Mənfi olanların sayını tapın və nömrəni ekranda göstərin.

    Massiv 5 tapşırığı. Daxil edilmiş n ədədin (massiv) minimum və maksimumunu tapın. Bu elementlər arasındakı məsafəni təyin edin. 3 2 6 1 3 4 7 2 >>> min=1, maksimum=7, məsafə=3

    Massiv 6 tapşırığı.Ölçüdə tam ədəd massivi verilmişdir N. Bu massivdə olan bütün cüt ədədləri indekslərinin azalma ardıcıllığı ilə çap edin K. N=4 mas: 8 9 2 5 >>> 2 8 kəmiyyət= 2

    Massiv 7 tapşırığı. Klaviaturadan 5 elementdən ibarət massiv daxil edin, orada iki maksimum elementi və onların nömrələrini tapın.

    Misal:

    İlkin massiv: 4 -5 10 -10 5 maksimum A=10, A=5

    Massivdə axtarın

    Birölçülü massivlərlə işləməyin mürəkkəb nümunəsinə baxaq:

    Misal: 10 ədəddən ibarət massiv verilmişdir. İstifadəçinin daxil etdiyi nömrənin massivdə olub-olmadığını müəyyənləşdirin. Əgər varsa, çıxış "tapıldı", Əgər olmasa - "tapılmadı".
    Tapşırıqın çətinliyi sözləri çap etməkdir "tapıldı" və ya "tapılmadı" bir dəfə lazımdır.


    Bu problemi həll etmək üçün döngədən çıxmaq üçün fasilə ifadəsinə ehtiyacınız olacaq.
    Həll variantı 1. Döngü üçün:

    Həllini göstərin

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 var f: massiv [ 1 .. 10 ] tam ədəd; bayraq:boolean ; i, c: tam ədəd; təsadüfiləşdirməyə başlayın; i üçün: = 1-dən 10-a qədər başlayır f[ i] : = random(10 ) ; yaz (f[ i] , " " ); son; bayraq: = false ; yazın( "nümunə daxil edin"); readln(c); i üçün: = 1-dən 10-a qədər do əgər f[ i] = c sonra writeln ("tapıldı" ) başlasın; bayraq: = true ; fasilə ; son; əgər bayraq= false onda writeln ("tapılmadı" ); son.

    var f: tam ədəd massivi; bayraq:boolean; i,c:tam; təsadüfiləşdirməyə başlayın; i:=1-dən 10-a qədər başlayır f[i]:=təsadüfi(10); yaz (f[i]," "); son; bayraq:=false; writeln("nümunə daxil edin"); readln(c); i:=1-dən 10-a qədər edin, əgər f[i]=c, onda başlamaq writeln("tapıldı"); bayraq:=true; fasilə; son; if flag=false then writeln("tapılmadı"); son.

    Gəlin nəzərdən keçirək effektiv həll:

    Tapşırıq: massivdə X-ə bərabər olan elementi tapın və ya onun mövcud olmadığını müəyyənləşdirin.

    Alqoritm:

    • 1-ci elementdən başlayın (i:=1);
    • əgər növbəti element (A[i]) X-ə bərabərdirsə, axtarışı bitirin, əks halda növbəti elementə keçin.

    Paskal variantı 2-də həll. while döngüsü:

    Sizi massivdə elementin axtarışının ətraflı video analizinə baxmağa dəvət edirik (effektiv alqoritm):

    Massiv 8 tapşırığı. 10 elementdən ibarət massivi intervalda təsadüfi ədədlərlə doldurun və X-ə bərabər olan bütün elementlərin nömrələrini çap edin.

    Misal:

    İlkin massiv: 4 0 1 2 0 1 3 4 1 0 Nə axtarırıq? 0 A, A, A

    Tsiklik sürüşmə

    Misal: massiv elementlərini 1 mövqe sola sürüşdürün, birinci element sonuncunu əvəz edir.



    Həll:

    Alqoritm:
    A:=A; A:=A;... A:=A[N];

    Proqram:

    Massiv 9 tapşırığı. 10 elementdən ibarət massivi [-10..10] intervalında təsadüfi ədədlərlə doldurun və sola tsiklik sürüşmə həyata keçirin. birinci element olmadan.
    Misal:İlkin massiv: 4 -5 3 10 -4 -6 8 -10 1 0 Nəticə: 4 3 10 -4 -6 8 -10 1 0 -5

    Massivdə elementlərin yenidən təşkili

    Bir massivin necə yenidən təşkil edildiyinə və ya tərsinə çevrilməsinə baxaq.

    Misal: massiv elementlərini tərs qaydada yenidən təşkil edin


    Həll:

    Alqoritm:

    Psevdokod:

    Proqram:

    Massiv 10 tapşırığı. 10 elementdən ibarət massivi [-10..10] intervalında təsadüfi ədədlərlə doldurun və sonuncudan başqa bütün elementləri tərsinə çevirin.
    Misal: Mənbə massivi: -5 3 10 -4 -6 8 -10 1 0 4 Nəticə: 0 1 -10 8 -6 -4 10 3 -5 4

    Elementlərin seçilməsi və başqa massivdə saxlanması

    Misal: massivdə bəzi şərti təmin edən elementləri tapın (məsələn, mənfi) və onları başqa massivə köçürün

    Həll:

    Həll: sayma sayğacından istifadə edərək tapılan elementlərin sayını hesablayın, B yerində növbəti elementi quraşdırın. Dəyişəndən istifadə edərək saymaq təyin edilməlidir 1 .


    B massivinin çıxışı:

    writeln("Seçilmiş elementlər"); i:=1 üçün saymaq-1 yazmaq (B[i], " ")

    Massiv tapşırığı 11. Massivi intervalda təsadüfi ədədlərlə doldurun və 0 ilə bitən bütün ədədləri başqa massivə yazın.
    Misal: Mənbə massivi: 40 57 30 71 84 0 ilə bitir: 40 30

    Massiv elementlərinin çeşidlənməsi

    Bubble çeşidlənməsi

    • Bu çeşidləmə növündə massiv su kimi təmsil olunur, kiçik elementlər suda yuxarıya doğru üzən qabarcıqlardır (ən yüngül).
    • Döngənin ilk iterasiyası zamanı massivin elementləri cüt-cüt bir-biri ilə müqayisə edilir: sonuncu ilə sonuncu, sondan əvvəlki ilə son və s. Əvvəlki element sonrakı elementdən daha böyükdürsə, onlar dəyişdirilir.
    • Döngənin ikinci iterasiyası zamanı sonuncu elementi sondan əvvəlki elementlə müqayisə etməyə ehtiyac yoxdur. Son element artıq yerindədir, ən böyüyüdür. Bu o deməkdir ki, müqayisələrin sayı bir az olacaq. Eyni şey hər bir sonrakı iterasiya üçün də gedir.

    Paskalda icra:

    1 2 3 4 5 6 7 8 i üçün: = 1-dən N- 1-ə qədər j üçün başlayın: = N- 1-dən i-yə qədər edin, əgər A[ j] > A[ j+ 1 ] olarsa, onda : = A[ j] ; A[ j] : = A[ j+ 1 ] ; A[ j+ 1 ] : = с; son; son;

    i:=1-dən N-1-ə qədər j üçün başlayır:=N-1-dən i-yə qədər A[j] > A olarsa, onda:= A[j]-dan başlayır; A[j] := A; A := c; son; son;

    Massiv 12 tapşırığı. 10 elementdən ibarət massivi intervalda təsadüfi ədədlərlə doldurun və massivin birinci yarısını artan, ikincisini isə azalan ardıcıllıqla çeşidləyin (“Bubble” metodundan istifadə etməklə). Misal: Mənbə massivi: 14 25 13 30 76 58 32 11 41 97 Nəticə: 13 14 25 30 76 97 58 41 32 11

    Seçimlə çeşidləmə

    • minimum element massivdə axtarılır və birinci yerdə yerləşdirilir (A ilə yerlər dəyişdirilir);
    • Qalan elementlər arasında ikinci yerdə (A ilə yerləri dəyişdirilmiş) yerləşdirilmiş minimum üçün də axtarış aparılır.

    başlamaq c: = A[ i] ; A[ i] : = A[ dəq] ; A[ dəq] : = c; son; son;

    i:= 1-dən N-1-ə qədər min:= i başlayır; j:= i+1 üçün N üçün A[j] edin< A then min:=j; if min <>i sonra başlayıram c:=A[i]; A[i]:=A; A:=c; son; son;

    Massiv 13 tapşırığı: 10 elementdən ibarət massivi intervalda təsadüfi ədədlərlə doldurun və onu rəqəmlərin cəminə görə artan qaydada çeşidləyin Misal: Mənbə massivi: 14 25 13 12 76 58 21 87 10 98 Nəticə: 10 21 12 13 14 25 76 58 87 98

    Tez çeşidləmə və ya tez çeşidləmə

    Alqoritm:

    Paskalda icra:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 prosedur QSort ( birinci, sonuncu: tam ); var L, R, c, X: tam ədəd; birinci olarsa başlayın< last then begin X: = A[ (first + last) div 2 ] ; L: = first; R: = last; while L <= R do begin while A[ L] < X do L: = L + 1 ; while A[ R] >X do R: = R - 1 ; əgər L<= R then begin c: = A[ L] ; A[ L] : = A[ R] ; A[ R] : = c; L: = L + 1 ; R: = R - 1 ; end ; end ; QSort(first, R) ; QSort(L, last) ; end ; end .

    prosedur QSort(birinci, sonuncu: tam ədəd); var L, R, c, X: tam ədəd; birinci olarsa başlayın< last then begin X:= A[(first + last) div 2]; L:= first; R:= last; while L <= R do begin while A[L] < X do L:= L + 1; while A[R] >X do R:= R - 1; əgər L<= R then begin c:= A[L]; A[L]:= A[R]; A[R]:= c; L:= L + 1; R:= R - 1; end; end; QSort(first, R); QSort(L, last); end; end.

    Massiv 14 tapşırığı:
    10 elementdən ibarət massivi [-50..50] diapazonunda təsadüfi ədədlərlə doldurun və onu sürətli çeşidləmə alqoritmindən istifadə edərək çeşidləyin.

    1 Metod (klaviatura doldurulması. Dinamikgirişdata)

    M:tam ədədlər massivi;

    Mən üçün:=1 - 10 Başlayın

    Write("Enter ",I," value ");

    2 Metod (təsadüfi ədəd generatorundan istifadə etməklə)

    M: tam ədəd massivi;

    Mən üçün:=1 - 25 Başlayın

    M[I]:=Təsadüfi(50);

    3 Metod (statik məlumat girişi)

    M: tam ədəd massivi = (31,28,31,30,31,30,31,31,30,31,30,31);

    Mən üçün:=1-dən 9-a qədər

    1.4 Problemin həlli nümunələri

    1. Massiv elementlərinə qiymətlərin axtarışı və təyin edilməsi alqoritmləri

    1. Klaviaturadan daxil edilmiş tam ədədlərlə doldurulmuş n ölçülü massivin emalı üçün proqram yaradın. Müsbət massiv elementlərinin indekslərini və qiymətlərini çap edin.

    A: ARRAY OF INTEGER;

    (Massivin doldurulması)

    I ÜÇÜN:=1 EDƏN NƏ BAŞLAYIN

    Write("Enter ",I," massiv elementi "); ReadLn(A[I]);

    (Masiv Elementlərinin Emalı)

    I ÜÇÜN:=1 EDƏN NƏ

    IF A[I]>0 THEN WriteLn("Müsbət element = ",A[I]," indeksi = ",I);

    2. Y=sin(x-1)/2x funksiyasının qiymətlərinin hesablanması və çapı üçün proqram yaradın. 6 elementdən ibarət X massivində arqument dəyərlərini təyin edin. Funksiya dəyərlərini Y massivinə yazın.

    X,Y:REAL MASSİVİ;

    MƏN ÜÇÜN:=1-dən 6-ya kimi başlayın

    Write("Daxil edin ",I," arqument dəyəri "); ReadLn(X[I]);

    MƏN ÜÇÜN:=1-dən 6-ya kimi başlayın

    Y[I]:=SIN(X[I]-1)/(2*X[I]);

    WriteLn(" X= ",X[I]:4:1," Y=",Y[I]:5:2);

    3. 30 elementdən ibarət M massivi verilmişdir. Massiv elementləri ixtiyari tam ədədlərdir. Hər beşinci və müsbət elementin dəyərini göstərin. Göstərilən elementləri sətirə çıxarın.

    M:BÜTÜN SAYILI;

    ClrScr; Randomize;

    WriteLn("Masivi element qiymətləri");

    I ÜÇÜN:=1-dən 30-a qədər BAŞLAYIN

    M[I]:=Təsadüfi(20)-4; Write(M[I]:3);

    WriteLn("Hər beşinci və müsbət massiv elementinin dəyərləri");

    Mən isə<=30 DO Begin

    ƏGƏR M[I] > 0 OLARSA Write(M[I]:3);

    Müstəqil həllər üçün nümunələr:

      Klaviaturadan daxil edilmiş tam ədədlərlə və N dəyəri ilə doldurulmuş 10 ölçülü birölçülü massiv verilmişdir. Mənfi elementləri N ilə əvəz edin. Dəyişdirilmiş massivi bir sətirdə göstərin.

      -15 ilə 20 aralığında təsadüfi ədədlərlə doldurulmuş N ölçüsünün birölçülü massivi verilmişdir. Mütləq dəyəri >10 olan massiv elementlərinin dəyərlərini göstərin.

      Təsadüfi ədədlərlə doldurulmuş N ölçüsünün birölçülü massivi verilmişdir. Element mənfi olarsa, massivin hər üçüncü elementinin kvadratını çəkin. Dəyişdirilmiş massivi ekranda göstərin.

      Y=(sinx+1)cos4x funksiyasının qiymətlərinin hesablanması və çapı üçün proqram yaradın. Arqument dəyərlərini 10 elementdən ibarət X massivində təyin edin. Funksiya dəyərlərini Y massivinə yazın.

      25 elementdən ibarət A massivinin elementlərindən qaydaya uyğun olaraq eyni ölçülü D massivi əmələ gətirir: ilk 10 element Di=Ai+i, qalanları isə Di=Ai düsturu üzrə tapılır. -i.