Читайте также: |
|
Обработка массивов в паскале
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
по дисциплине «Информатика»
К выполнению лабораторной работы №4
специальностей инженерно-технического факультета
для дневной формы обучения
(для внутривузовского пользования)
г. Павлодар, 2000г.
«СОГЛАСОВАНО» Декан ИТФ к.т.н., доцент В.А.Козионов «____» ____________ 2001г. | «УТВЕРЖДАЮ» Проректор по УМи ВР Пфейфер Н.Э.___________ “____“ __________2000 г. |
Составитель старший преподаватель Третьякова Т.И.
Кафедра “Автоматизированные системы обработки информации и управления”
Утверждено на заседании кафедры “АСОИиУ” протокол № __ от _________ 200__г.
Зав. кафедрой “ АСОИиУ ” к.т.н., доцент Еслямов С.Г002Ej
]/’
Одобрено УМО ПаУ
Нач. УМО к.т.н., доцент Мустафина Р.М.
Цель работы: Приобрести навыки обработки массивов в Паскале.
Общие сведения.
Массив – это упорядоченная совокупность значений одинакового типа, объединенная одним именем. Для того, чтобы иметь возможность работать с каждым элементом массива, необходимо задать координаты этого элементам в общей структуре массива.
Если массив одномерный рис. 1 а, б, то для определения положения элемента достаточно задания номера ячейки. Выделенные ячейки имеют номера 3, 5, 7, а соответствующие элементы массива, если массив в целом обозначить буквой А, обозначаются соответственно как A[3], A[5], A[7]. Одномерные массивы часто называют векторами.
Если массив двумерный, то для определения положения какого-либо элемента достаточно задания номера строки и столбца, на пересечении которых находиться рассматриваемый элемент. Так выделенные на рис. 1 в элементы массива имеют следующие обозначения B[1,1], B[1,4], B[5,2].
1 2 3 4 5 6 7 8
а)
1 2 3 4
1
- вектор столбец 5
двумерный массив
в)
б)
рис.1
Причём первым в обозначении элемента массива стоит номер строки, а вторым - столбца.
Точно также задается положение трёх, четырёх и n -мерных массивов.
Итак, массив характеризуется размерностью и длиной по направлению каждой из размерностей.
Если массив состоит из одного столбца или одной строки и состоит из пяти символов, то говорят, что массив одномерный длиной в 5 элементов.
Если массив представляет собой таблицу из 4 строк и 5 столбцов, то говорят, что массив двумерный длиной 4 ´ 5.
Точно также оговариваются характеристики любого n - мерного массива.
Если какая-либо переменная в программе является массивом, то её необходимо описать в разделе переменных. Простейшая форма описания одномерного массива имеет вид:
Var v: array [n...m] of t;
где v – имя массива, формируется по правилам задания имён
переменных;
n и m – наибольшее и наименьшее значение индекса
массива, может быть целого и перечисляемого
типа;
t – тип элемента массива, может быть любым типом,
существующим в Паскале.
Например, запись: var m: array [1..8] of real
говорит о том, что в программе, в которой имеется данное описание, будет обрабатываться одномерный массив, состоящий из 8 элементов вещественного типа.
В описании массивов большей размерности предел изменения этой размерности отделяется друг от друга запятой.
Запись
Var C: array [1..5, 1..4] of integer
означает, что в программе имеется целочисленный массив С, состоящий из пяти строк и четырёх столбцов.
Для описания многомерных массивов в Паскале существует целый ряд способов. Следующие группы операторов задают описание одного и того же двумерного массива А, представляющего собой таблицу размером 2´3 (2 строки, 3 столбца)
Первый способ:
Type
Stroka = array [1..3] of real;
Matr = array [1..2] of stroka;
Var
V: stroka;
A: matr;
Второй способ:
Type
Matr= array [1..2] of array [1..3] of real;
Var
A: matr;
Третий способ:
Type
Matr = array [1..2,1..3] of real;
Var
A: matr;
Четвёртый способ:
Var
A: array [1..2,1..3] of real;
В первом способе описания переменная V объявлена как одномерный массив из трёх элементов вещественного типа. Переменная А имеет смысл двумерного массива из двух строк, в каждую из которых включено по три элемента.
Второй, третий и четвертый способы описания массива получаются из первого путем его последовательного упрощения. Так второй способ описания получен из первого путём исключения определения типа stroka в определении типа matr.
В Паскале типом индекса (номером) элемента массива не обязательно является целое число. Им может быть также переменная перечисляемого типа, например:
Type
Fam =(ivanov, socolov, andreev);
Var
Ball: array [fam] of real;
Последняя запись даёт описание вещественного массива, состоящего из трёх элементов, но порядковыми «номерами» элементов массива являются переменные перечисляемого типа Ivanov, Socolov, Andreev.
Задание значений элементам массива может выполняться при помощи операторов присваивания:
A [I]:= A[2] + 2.6E2
A [1, 2]:= 2.3 + P1
Другим способом задания значений элементам массива является поэлементный ввод. Также поэлементно может осуществляться и вывод.
Ниже рассматривается ввод и вывод одномерного массива А, состоящегоиз пяти элементов.
Program VV;
Var
A: array [1..5] of real;
I: integer;
Begin
For i:=1 to 5 do
Read(A[i]);
For i:=1 to 5 do
Write(A[i])
End.
В процессе ввода элементы массива должны отделяться друг от друга пробелами.
Следующая программа реализует ввод и вывод двумерного массива А (3´4).Причем ввод организован в виде матрицы по строкам:
Program WVA;
Var
A: array[1..3,1..4] of real;
I, j: integer;
Begin
For i:=1 to 3 do
For j:=1 to 4 do
Read(A[i,j]);
For i:=1 to 3 do
Begin
For j:=1 to 4 do
Write(A[i,j]);
Writeln;
End
End.
Рассмотрим пример программы с использованием массивов.
Пример 1: Составить программу для вычисления средних значений элементов списков А, В, С, содержащих по 50 чисел каждый. Результат получить в виде массива “Д”. Блок-схема приведена на рис.2.
Program Mas;
Const
NM=50;
Var
I: integer;
A,B,C,D: array [1..NM] of real;
Begin
For i:=1 to NM do
Begin
Read(A[I],B[I],C[I]);
D[I]:= (A[I]+B[i]+C[I])/3;
Write (D[I])
End
End.
Пример 2: Записать +1 вместо максимального элемента массива А(5´4), а –1 вместо минимального. Блок-схема программы приведена на рис.3.
Рис.2.
Рис.3.
Program Maxmin;
Var A: array[1..5,1..4] of real;
N,M,N1,M1,I,J: integer;
Min, Max: real;
Begin
For i:=1 to5 do
For j:=1 to 4 do
Read (A[i,j]);
Max:=A[1,1];
Min:=A[1,1];
N:=1; M:=1;
N1:=1; M1:=1;
For i:=1 to 5 do
For j:=1 to 4 do
Begin
If A[i,j]>max then
Begin
Max:=A[i,j];
N:=i; M:=j
End;
If A[i,j]<min then
Begin
Min:=A[i.j];
N1:=i; M1:=j
End
End;
A[N,M]:=1;
A[N1,M1]:=-1;
Writeln(A[N,M],A[N1,M1])
End.
Рассмотрим подробнее алгоритм решения задач. Блок 2 блок-схемы (см. рис.3) предназначен для описания группы операторов ввода массива А. В блоке 3 задаётся первоначальное значение переменных max и min, являющихся вспомогательными для поиска максимального и минимального элементов. Блок 4 задаёт координаты (индексы) вспомогательных значений max и min. Блоки 5 и 6 соответственно предназначены для перебора строк и столбцов матрицы А. Если значение логического выражения блока 7 “истинно”, то по ветви “да “ меняется “текущее” значение максимума и “запоминаются” индексы N и M этого значения. Если значение логического выражения блока 7 «ложно», то значение max и М остаётся без изменения – ветвь «нет».Аналогично работает группа блоков 10,11,12, но предназначена она для поиска индексов минимального значения матрицы А.
После того как будут перебраны все строки и столбцы матрицы А переменные N и M будут содержать индексы максимального элемента, а переменные N1 и M1 индексы минимального элемента.
В блоках 13 и 14 значения максимального и минимального элементов заменяются соответственно на 1 и –1.
Блок вывода 15 предназначен для контрольного вывода значений 1 и –1 на печать.
Пример 3: Упорядочить по возрастанию все элементы главной диоганали матрицы А(5´5). Блок-схема программы приведена на рис. 4.
Program YP;
Var
A: array [1..5,1..5] of real;
S: real;
I, j: integer;
Begin
For j:=1 to 5 do
Read(A[i,j]);
For i:=1 to 4 do
For j:=1 to 5 do
If A[j,j]> A[j+1,j+1] then
Рис.4
Begin
S:=A[j,j];
A{j,j]:=A[j+1,j+1];
A[j+1,j+1]:=S;
End;
For i:=1 to 5 do
Writeln(A[i,i])
End.
Блок 2 в блок-схеме алгоритма соответствует в программе группе операторов, осуществляющих ввод массивов А(5,5). Блок 3 задает перебор параметра I, который обозначает количество перестановок по возрастанию всех элементов по диагонали матрицы А. Блок 4 задает перебор переменной J, по которой осуществляется сравнение в блоке 5 двух ближайших элементов матрицы А, расположенных на главной диагонали. Если соотношение блока 5 истинно, то осуществляется перестановка в блоке 6 двух ближайших элементов. Таким образом, при I=1 и переборе параметра J от 1 до 5 - I=5 мы получаем на месте последнего элемента главной диагонали максимальное значение всех элементов, расположенных на главной диагонали. При I=2 и переборе параметра J от 1 до 5-I=3мы получаем на месте предпоследнего элемента главной диагонали второе по величине значение элемента главной диагонали. При I=4 и J=1 все элементы главной диагонали матрицы А будут упорядочены по возрастанию. Блок 6 обозначает группу операторов блок-схемы, осуществляющих вывод элементов главной диагонали на печать.
Дата добавления: 2015-07-11; просмотров: 80 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Методические указания | | | Задание к работе |