Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетодАлгКП.doc
Скачиваний:
109
Добавлен:
18.02.2016
Размер:
2.27 Mб
Скачать

Практикалық жұмыс №7

Тақырыбы: Бір өлшемді массивтер

Жұмыс мақсаты: Паскал тілінде бір өлшемді массивтермен жұмыс істеу принципін меңгерту.

Жұмыстың орындалу тəртібі:

  1. Теориялық мəліметтермен танысу.

  2. Жеке нұсқада тапсырмалар орындау.

  3. Бақылау сұрақтарына жауап беру.

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

7.1 Негізгі түсініктер

Жиым (массив) – қасиеттері бірдей, бір типті айнымалылардың реттелген жиыны. Жиым элементтері ішіндегі реттік қатынас индекс арқылы беріледі. Əр элементке бір немесе бірнеше индекс тағайындалады. Егер əр элементке бір индекстен берілсе, онда бұл бір өлшемді жиым (вектор) болып саналады. Ал, екі индекс берілсе – екі өлшемді жиым (матрица) болады да, мұнда бірінші индекс элемент орналасқан жол нөмірін, ал екіншісі бағана нөмірін көрсетеді.

TYPE <идентификатор типі> = ARRAY [<индекстер типі тізімі>]

OF <тип>;

<индекс типі> :: = <қарапайым тип>

<қарапайым тип>:: = <идентификатор типі>|<идентификатор> [,<идентификатор>] | <тұрақты>. .<тұрақты>

Индекс ретінде нақты типтен басқа кез келген қарапайым тип қолданыла алады. Мұнда көбінесе бүтін типтің аралық мəндері жиі қолданылады.

Мысалы,

BYTE;

TYPE T1 = ARRAY [-10..20,1..30] OF

T2 = ARRAY [0..50] OF BOOLEAN; T3 = ARRAY [BYTE] OF INTEGER;

VAR A,B: T1; C: T2;

Z: ARRAY[1..100] OF REAL; MAS: T3;

Бұл мысалдың типтерді сипаттау бөлімінде жиымның үш

түрі келтірілген. T1 – жол нөмірі – 10-нан 20-ға дейін, ал бағана нөмірі 1-ден 30-ға дейін өзгеретін екі өлшемді жиым. T1 жиымы элементтерінің типі – 0-ден 255-ке дейінгі таңбасыз бүтін сандар. T2 – бір өлшемді жиым, элемент нөмірі 0-ден 50-ге дейін өзгеретін логикалық тип. T3 – бір өлшемді жиым, элементтері 0-ден 255-ке дейінгі таңбалы бүтін сандар.

Айнымалыларды сипаттау бөлімінде А жəне В айнымалысы T1 типті, С – Т2 типті, MAS – Т3 типті ретінде сипатталған. Типті алдын ала сипаттаудан басқа, жиымды Z айнымалысы сияқты айнымалыларды сипаттау бөлімінде де жариялауға болады.

Жиым элементтерін олардың индекстері арқылы пайдалануға болады. Айнымалыдағы индекстер саны элементтер санына тең. Индекстер бүтін сан, қарапайым айнымалы, арифметикалық өрнек ретінде берілуі мүмкін. Егер екі жиымның сипаттамалары бірдей болса, оларды В:=А меншіктеуі арқылы теңестіріп, көшірмесін алуға мүмкіндік бар.

Мысалы,

...

S:= S + Z[I];

P:= P * A[I][J]; C[6]:= TRUE;

P:= P * A[I,J]; R:= B[I+5,J];

MAS[I]:= MAS[I-1] * MAS[I];

...

Жиымды сипаттаудың түрлі тəсілдерін қарастырайық.

10 жол жəне 50 бағанадан тұратын бүтін типті A матрицасын сипаттау керек.

1) CONST N = 10; M = 50;

TYPE TMATR = ARRAY[1..N, 1..M] OF INTEGER; VAR A: TMATR;

2) TYPE TSTR = ARRAY [1..50] OF INTEGER;

TMATR = ARRAY [1..10] OF TSTR; VAR A: TMATR;

3) VAR A:ARRAY[1..10,1..50] OF INTEGER;

4) VAR A:ARRAY[1..10]OF ARRAY[1..50]OF INTEGER;

Көп жағдайларда кесте, мəтін, жиым жəне т.с.с. біртипті мəліметтерді өңдеуге тура келеді. Мұндай мəліметтерді сипаттау үшін құрылымдық мəндер типі қолданылады. Турбо Паскальда төмендегідей құрылымдық мəндер типтері (7.1 сурет) бар:

• жиымдар — біртипті немесе кестелік мəліметтерді сипаттау үшін;

• жолдар – символдық (мəтіндік) мəліметтерді сипаттау үшін;

• жиындар – абстрактілі математикалық жиындарды сипаттау үшін;

• жазбалар – əр түрлі типтегі кестелік мəліметтерді сипаттау үшін;

• файлдар – бір типте тізбектеле жазылған мəліметтер жиыны.

Сурет 7.1. Типтер құрамы

Жиымдар

Индекс типі оның мүмкін мəнін анықтайды. Индекс типі ретінде loпgiпt жəне оның туынды титерінен басқа кез келген реттелген тип (booleaп, char, iпteger, саналатын тип, сонымен бірге осы типтер диапазоны) көрсетілуі мүмкін.

Индекс типінің санына байланысты бір, екі жəне n өлшемді жиымдар болады. Екі өлшемді жымдар матрица деп аталады жəне бірінші индекс жол нөмірін, екінші индекс бағана нөмірін көрсетеді.

Сурет 7.2. Жиымдар типін анықтаудың синтаксистік диаграммасы

Паскаль тіліндегі жиым элементтерінің типі файлдан басқа

кез келген тип бола алады. Жиым түріндегі айнымалыны сипаттау екі тəсілмен іске асырылады:

• айнымалыларды сипаттау бөлігінде, мысалы:

Var a:array[1..10] of integer; { 10 бүтін саннан тұратын жиым}

b:array[byte] of char; {256 символдан тұратын жиым, жиым индексі 0-ден 255-ке дейін өзгереді}

c:array['A'..'C',-5..-3] of byte; {9 саннан тұратын матрица}

d:array['A'..'C'] of array [-5..-3] of byte; {құрылымы бойынша алдыңғы матрицаға эквивалентті 9 саннан тұратын матрица}

• типін алдын ала сипаттау, мысалы:

Type mas=array[1..10] of integer; { типті сипаттаймыз}

Var a:mas; {айнымалыны сипаттаймыз}

Турбо Паскальда индекс санына шектеу жоқ. Алайда бір программада қолданылатын индекстердің барлығының саны 65537 байттан аспауы керек.

Программадағы жиым элементтерін үш тəсілмен сипаттауға болады. Біріншіден, жиым типтік тұрақтылар немесе элементтерге мəн беру арқылы иницализациялануы мүмкін. Екіншіден, жиым элементтері пернетақтадан немесе файлдан енгізуге болады. Үшіншіден, жиым элементтерін программада былай анықтауға:

• кездейсоқ сандар генераторы арқылы;

• берілген бойынша жəне басқа жиымнан көшіруге болады.

Жиымдарды инициализациялау. Инициализацияланатын (мəндер берілетін) жиымдарды сипаттау үшін Турбо Паскальда типтелген тұрақтылар қолданылады. Сəйкес мəндер жақша ішінде, үтір арқылы ажыратылып көрсетіледі. Көп өлшемді жиым элементтері солдан оңға қарай индексінің өсу реті бойынша жазылады. Əр ішкі жиым жеке жақшаға алынады. Матрица мəндері бір жолда реттеліп жазылады. Мысалы:

Const a:array[1..5] of real = (0,-3.6,7.8,3.789,5.0);

b:array[boolean, 1..5,] of real = ((0,-3.6,7.8,3.789,5.0),(6.1,0,-4.56,8.9,3.0));

Сонымен, массивті 2 түрде сипаттауға болады:

  1. Айнымалылар бөлімінде сипаттау үлгісі:

Var массив аты: array [массив индексінің аралығы] of элемент типі;

(array-массив). Квадрат жақшада массивтің бірінші және соңғы элементтерінің индексі жазылады.

Мысал: var a: array [1..10] of real;

b: array [0..50] of char;

c: array [-3..4] of integer;

a массиві 10, b массиві 51, c массивті 8 элементтен тұрады.

  1. Типтер бөлімінде сипаттау үлгісі:

Туре тип аты=array [массив индексінің аралығы] of элемент типі;

Var массив аты: типтің аты;

Мысал: Type m1=array[1..15] of real;

m2=array[1..20] of integer;

var a:m1; b:m2;

Массивті типтер бөлімінде анықтау программаны оқуды көп жеңілдетеді және ол программалаудың жақсы тәсілі болып табылады.

Мысалдар:

10 элементтен тұратын бүгін сандар массивінің оң элементтерінің арифметикалық ортасын табыңдар.

Program m1;

Var a:array[1..10] of integer ;

S, i, k integer;

P: real; {арифметикалық орта айнымалысы}

Begin

s:=0; k:=0;

for i:=1 to 10 do

Readln (a[i]); {массив элементтерін енгізу}

for i:= 1 to 10 do

If a [i]> 0 then begin S:= S + a [i] ; k:=k+0;

end;

P:=S/k;

Writeln (‘оң элементтердің арифметикалық ортасы’, Р );

End.

ЖЕКЕ ТАПСЫРМАЛАР НҰСҚАЛАРЫ

  1. Массив элементінің барлық орташа арифметикасын табу.

  2. Массивте ең кіші элементті табыңыз.

  3. Массив элементінің оң элементтерінің санын табыңыз.

  4. Массив элементінің теріс элементтерінің санын табыңыз.

  5. Массив элементі арасында 7саны неше рет кездесетін анықта.

  6. Массив элементі 6 санынан кіші неше элемент бар анықтаңыз.

  7. Массив элементі 3 санынан үлкен неше элемент бар анықтаңыз.

  8. Массивтегі теріс емес элементтерінің барлық қосындысын табу керек.

  9. Массив элементінің оң мәндерінің қосындысын табыңыз.

  10. Массив элементінің теріс мәндерінің қосындысын табыңыз

  11. а1+2а2+3а3+…+8а8 өрнегінің қосындысын табу керек.

  12. Модуль бойынша ең кіші массив элементін табу керек.

  13. Массивтің элементінің ең үлкен және ең кіші арасындағы айырмасын табу керек.

  14. Массив элементтерінің кемуі бойынша сұрыптау.

  15. Теріс массив элементінің көбейтіндісін табу керек.

  16. Жұп индексті массив элементтерінің барлық қосындысын табу керек.

  17. Тақ индексі массив элементінің ең үлкенін табу керек.

  18. Оң массив элементінің барлық орташа арифметикасын табу керек.

  19. Теріс массив элементінің барлық орташа арифметикасын табу керек.

  20. 5 саннан жоғары болатын массив элементтерінің қосындысын табу керек

  21. Кез- келген бірөлшемді А(10) жиымының оң элементтерін екі есе кемітіңдер, ал теріс элементтері болса, онда оларды индекстерінің мәнімен ауыстырыңдар.

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

  23. 7 сағ- тан 12 сағ-қа дейінгі уақыт аралығында ауа температурасы сағат сайын өлшенді. Осы аралықта температураның төмендегені мәлім. Температураның алғашқы теріс мәні қай сағатта болғанын анықтаңдар.

  24. Жиымның көршілес жұп және тақ нөмірлі элементтерінің орнын алмастырыңдар.

  25. Бірөлшемді А(8) жиымының 1- және соңғы, 2- және 7 т.б. элементтерінің орнын алмастырыңдар.

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

  1. Паскальда қандай құрылымдық типтер бар?

  2. Жиым деген не? Жиымның қандай түрлері бар?

  3. Паскальда жиым қалай сипатталады?

  4. Жиымның элементі мен индексінің типі қандай болады?

  5. Бірөлшемді жиымды енгізу және шығару қалай жүзеге асады?

  6. Жиымның ең үлкен және ең кіші элементін табу алгоритмі қандай?

  7. Жиым элементтерін көпіршік әдісімен реттеу алгоритмі қандай?

Ұсынылатын әдебиеттер: 1, 4, 9