- •Оглавление
- •Учебное пособие
- •1. Структура программы
- •2. Константы и переменные
- •3. Основные типы данных
- •4. Выражения, операнды, операции
- •5. Совместимость и преобразование типов
- •6. Основные операторы языка
- •7.Массивы
- •8. Процедуры и функции
- •9. Интегрированная среда Turbo Pascal 7.0
- •Практикум
- •1. Основные конструкции языка Паскаль. Составление простейших программ
- •2. Условный оператор
- •3. Цикл с параметром
- •4. Циклы с условиями
- •5. Процедуры и функции
- •7. Одномерные массивы
- •8. Двумерные массивы
- •Вопросы для самопроверки
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;
Вопросы для самопроверки
Из каких разделов состоит программа на Паскале?
Какие простые типы данных существуют в Паскале?
Что значит: «Турбо Паскаль – типизированный язык»?
Какие действия допустимы над величинами целого типа? Вещественного типа?
Как в Паскале осуществляется ввод и вывод данных?
Как в Паскале реализуется развилка?
Какого типа циклы реализуются в языке Паскаль? Каким образом?
В каких случаях используются циклы с параметром, с предусловием и с постусловием? Приведите примеры.
Как вводятся и используются в программах массивы?
В чем различие между одномерными массивами и двумерными?
Какова структура процедуры? Функции?
Какие параметры называют формальными и какие – фактическими?
В чем различие между локальными и глобальными переменными?
В чем отличия процедуры от функции?
Какие проблемы решаются при использовании файлов?
Какую роль в программе играет файловая переменная?
Какие операции и функции используются при работе с файлами?
Как запустить Турбо Паскаль?
Как в среде Турбо Паскаль запустить программу на выполнение?
Как в среде Турбо Паскаль выполнить трассировку программы?