Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК _АСДиП_ 25-06-2012 kz.doc
Скачиваний:
61
Добавлен:
25.05.2015
Размер:
1.94 Mб
Скачать

Паскаль тiлiнде типтер қарапайым және күрделi болып бөлiнедi.

Массивті сипаттау келесі түрде беріледі:

TYPE<тип_аты>=ARRAY[<1индекс типі_>, ... ,<Lиндекс типі_>] OF <компонент_типі>;

L индексінің саны массив өлшемін анықтайды. Содан соң массив типінің айнымалылары программаның VAR бөлігінде сипатталады.

Массив типін сипаттау келесі түрде беріледі:

TYPE <тип_аты>= ARRAY[<тип_аты 1>,< тип_аты2 >] OF < тип_комп >;

Осыдан соң массив типті айнымалылар программаның VAR бөлімінде сипатталады, мысалы:

TYPE mas2= ARRAY[1..5,1..5] OF INTEGER;

VAR A,B,C: mas2;

Массив типті айнымалыларды программаның VAR бөлімінде келесі түрде сипаттауға да болады:

VAR A,B,C: ARRAY[1..M,1..N] OF REAL;

Мұнда M және N массивтің жолдарының және бағанының санын анықтайтын тұрақты сандар.

Компьютердің жадысында массивтің элементтері кіші адрестен үлкен адреске өткенде массивтің оңыншы индексі жылдам өзгеретіндей болып орналасқан.

Егер программада массивті сипаттаудың келесі түрі берілсе:

VAR A: ARRAY[1..3,1..2] OF BYTE;

BEGIN

A[1,1]:=1; A[2,1]:=2; A[3,1]:=3;

A[1,2]:=4; A[2,2]:=5; A[3,2]:=6;

END.

онда компьютер жадысында бірінен соң бірі 1,4,2,5,3,6 мәндерін алып байттар тізбектеле орналасады.

Берілген зертханалық жұмыста екі өлшемді массив қолданылатын есептер қарастырылады. Төменде екі өлшемді массивті енгізу және шығару үшін программа фрегменттері келтірілген.

{А [N,N] массивін енгізу, мұнда N–тұрақты}

FOR I:=1 TO N DO

 FOR J:=1 TO N DO

         READ (A[I,J]);

{А [N,N] массивін жол бойынша шығару}

FOR I:=1 TO N DO

 BEGIN

FOR J:=1 TO N DO

WRITE (A[I,J:4]);

 WRITELN;

END.

Негізгі әдебиет: 1[104-107]

Қосымша әдебиет: 6[73-80], 7[227-265].

Бақылау сұрақтары

  1. Массив типі қандай түрде анықталады?

  2. Бір өлшемді массивтердің енгізу-шығарылуы қалай орындалады?

  3. Екі өлшемді массивтердің енгізу-шығарылуы қалай орындалады?

  4. Қандай жағдайда бір массивтің барлық элементтері басқа массивке берілуі мүмкін?

  5. Массив индекстерінің типтері қандай типке жатады?

5 –дәріс. Массивтерді іздеу мен сұрыптаудың әдістері мен алгоритмдері

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

1. Таңдау бойынша сұрыптау алгоритмі

a1, a2, a3, …, an бүтін немес нақты сандар массивын қарастырып көрейік. Элементтердің орнын ауыстырғанда осы массив элементтерінің ауысуы кему реті бойынша емес (өсу реті бойынша емес) реттелуі керек. Массивтегі бірінші орында – ең кіші элемент, екінші орында – қалған элементтердің арасындағы ең кіші элемент және т.б. орналасуы қажет. Алгоритм келесідей болады: массивтің ең кіші мәнді элементті табу, бірінші элементпен орнын ауыстыру. Осы қадамды екінші элементтен бастап қайта қайталау.

2. Айырбастау бойынша сұрыптау алгоритмі.

a1, a2,a3, …, an сандарын тізбектеп қарастырып, a[i] > a[ i+1] болатындай ең кіші i-ды табу. a[i] және a[ i+1] орындарын ауыстыру, a[ i+1] және т.б. элементтерін қарастыруды қайта бастау. Осылай ең үлкен сан соңғы орынға орналасады. Қарастырылып отырылған элементтердің санын бірге азайту арқылы келесі қарастыруларды қайтадан басынан бастау. Масив тек қана бірінші және екінші элемент қатысқан қарастырудан кейін реттеледі.

3. Қарапайым ендірмелер арқылы сұрыптау алгоритмі.

a2, a3, …, an реттін қарастырып, a[i] әр жаңа әлементтін a1, a2, a3, …, a[i-1] реттелген жиынының қолайлы орнына орналастыру. Бұл орын a[i]-мен a1, a3, …, a[i-1] реттелген элементтерін тізбектік салытыруымен анықталады.

Бір өлшемді массивті кемуі реті бойынша айырбастау сұрыптау әдісі көмегімен сұрыптаудың мысалы.

Program sortmass;

Const n= ;

Var

a: array [1..n] of integer;

i, j, c: integer;

begin

{ массивті толтыру }

randomize;

for i:=1 to n do

a[i]:=random (n);

{ массивті баспаға шығару}

for i:=1 to n do

write(a[i]:4);

writeln;

for i:=1 to n-1 do

for j:=i+1 to n do

if a[j] > a[i] then

begin

c:=a[i];

a[i]:= a[j];

a[j]:=c;

end;

{сұрыпталған массивті баспаға шығару }

for i:=1 to n do

write(a[i]:4);

end.

Негізгі әдебиет:1 [104-107]

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]