Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция по ПАСКАЛЬ.doc
Скачиваний:
38
Добавлен:
20.04.2015
Размер:
572.93 Кб
Скачать

8. Двумерные массивы

Цель работы

Получение практических навыков работы с двумерными массивами.

Пример 1. Составить программу ввода и вывода двумерного массива А размерностью 10x15.

Решение. Формирование и вывод массива описаны в виде двух процедур, которые вызываются последовательно из основной программы. Надо заметить, что формирование двумерного массива можно осуществлять всеми тремя способами, описанными для одномерных массивов. Пусть в нашем примере элементы задаются генератором случайных чисел.

Program Example_14;

Const

n=10;

m=15;

Type dmyarray = Array[1..n,1..m] Of Integer;

Var

A: dmyarray;

Procedure Init(Var x: dmyarray); {процедура формирования массива}

Var

i, j: Integer;

Begin

For i:=l To n Do

For j:= 1 To m Do

x[i,j]:=-25+Random (51);

End;

Procedure Print (x: dmyarray); {процедура вывода массива на экран}

Var

i, j: Integer;

Begin

For i:=l To n Do Begin {вывод i-й строки массива}

For j:=1 To m Do

Write(x[i,j]:5);

Writeln; {переход на начало следующей строки}

End;

End;

Begin {основная программа}

Init(A); {вызов процедуры формирования массива}

Writeln('Массив A: ') ;

Print(A); {вызов процедуры вывода}

Readln;

End.

Пример2. Сформировать одномерный массив, каждый элемент которого равен сумме отрицательных элементов соответствующей строки заданной целочисленной матрицы.

Решение. Опишем одномерный массив, размерность которого равна количеству строк в двумерном массиве.

Const

n=10;

m=15;

Type

omyarray=Array [l..n] Of Integer;

dmyarray=Array[1..n,1..m] Of Integer;

Var

B: omyarray;

A: dmyarray;

Procedure Sum(x: dmyarray; Var y: omyarray);

Var i, j: Integer;

Begin

For i:=l To n Do Begin

y[i]:=0;

{задание начальных значений элементов массива суммы)

For j:=l To m Do {накопление суммы отрицательных}

If x[i,j]<0 Then y[i]:=y[i]+x[i,j];

End;

End;

В основной программе обращаемся к процедуре Sum(A,B)и остается только вывести на экран одномерный массивВ, в котором записаны суммы отрицательных элементов каждой строки.

Пример3. Найти максимальный элемент массива и его индексы.

Решение. Так как элементы могут повторяться, то договоримся, что будем запоминать только индексы первого максимального элемента. Опишем процедуру, которой передается массив, и ее результатом являются значение максимального элемента и индексы первой встречи такого значения.

Procedure Maximum(x: dmyarray; Var max, maxi, maxj: Integer);

Var i, j: Integer;

Begin

max:=x[1,1]; maxi:=l; maxj:=l; {начальные значения}

For i:=l To n Do

For j:=l To m Do

If x[i,j]>max Then Begin {присвоение новых значений}

max:=x [ i,j];

maxi:=i; maxj:=j;

End;

End;

Вопросы для самопроверки

  1. Из каких разделов состоит программа на Паскале?

  2. Какие простые типы данных существуют в Паскале?

  3. Что значит: «Турбо Паскаль – типизированный язык»?

  4. Какие действия допустимы над величинами целого типа? Вещественного типа?

  5. Как в Паскале осуществляется ввод и вывод данных?

  6. Как в Паскале реализуется развилка?

  7. Какого типа циклы реализуются в языке Паскаль? Каким образом?

  8. В каких случаях используются циклы с параметром, с предусловием и с постусловием? Приведите примеры.

  9. Как вводятся и используются в программах массивы?

  10. В чем различие между одномерными массивами и двумерными?

  11. Какова структура процедуры? Функции?

  12. Какие параметры называют формальными и какие – фактическими?

  13. В чем различие между локальными и глобальными переменными?

  14. В чем отличия процедуры от функции?

  15. Какие проблемы решаются при использовании файлов?

  16. Какую роль в программе играет файловая переменная?

  17. Какие операции и функции используются при работе с файлами?

  18. Как запустить Турбо Паскаль?

  19. Как в среде Турбо Паскаль запустить программу на выполнение?

  20. Как в среде Турбо Паскаль выполнить трассировку программы?

39