Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Общие сведения. Обработка массивов в паскале

Читайте также:
  1. Amp;. 2 ОБЩИЕ И СПЕЦИФИЧЕСКИЕ ЗАКОНОМЕРНОСТИ РАЗВИТИЯ ЛИЧНОСТИ 'НОРМАЛЬНОГО И УМСТВЕННО ОТСТАЛОГО РЕБЕНКА
  2. I. Жизнь Иисуса Христа: общие труды, источники
  3. I. ОБЩИЕ ПОЛОЖЕНИЯ
  4. I. ОБЩИЕ ПОЛОЖЕНИЯ
  5. I. ОБЩИЕ ПОЛОЖЕНИЯ
  6. I. ОБЩИЕ ПОЛОЖЕНИЯ
  7. I. ОБЩИЕ ПОЛОЖЕНИЯ

Обработка массивов в паскале

 

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

по дисциплине «Информатика»

К выполнению лабораторной работы №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 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Методические указания| Задание к работе

mybiblioteka.su - 2015-2024 год. (0.02 сек.)