ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Федеральное государственное образовательное учреждение

высшего профессионального образования

«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

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

Структурные типы данных в Pascal

Ростов-на-Дону

2011

Методические указания разработаны старшим преподавателем кафедры прикладной математики и программирования (ПМиП), кандидатом физико-математических наук , для студентов геолого-географического факультета первого курса

Печатается в соответствии с решением кафедры прикладной математики и программирования факультета математики, механики и компьютерных наук ЮФУ, протокол № от 2011г.

1 ОДНОМЕРНЫЕ МАССИВЫ

1.1 Что такое одномерный массив

Массив – это упорядоченная последовательность однотипных данных, объединенная под одним именем. Каждый элемент массива имеет порядковый номер в массиве.

Примером массива является набор значений температур в определенной местности за каждый день месяца.

T={10, 12, 6, 0, -4, -3, -1, 1, 3, 7, 5, 9, 12, 15, 13, 16, 14, 18, 20, 18, 22, 19, 18, 18, 18, 17, 16, 18, 19,15}.

То есть, температура в первый день месяца - первый элемент массива - равна T(1) = 10, температура за десятый день месяц - десятый элемент массива - T(10) = 7, температура за двадцать пятый день месяца - T(25) = 18.

Еще одним примером массива является список студентов в группе:

1. Иванов;

2. Петров;

3. Сидоров;

4. Федоров;

5. Коваленко;

6. Костенко;

7. Королев;

8. Медведев;

9. Матвеева;

10. Филимонова.

Это - пример массива, состоящего из десяти элементов. Третий элемент массива - Сидоров. Седьмой элемент массива - Королев. Десятый элемент массива (он же последний) - Филимонова.

1.2 Описание одномерного массива

При описании массива нужно указать имя массива, диапазон изменения индексов (номеров элементов) и тип элементов. Описывать массив можно как в разделе type, так и в разделе var.

НЕ нашли? Не то? Что вы ищете?

Описание массива в разделе type:

Type имя_типа = array [ном_нач.. ном_кон] of тип_элем;

var имя_мас : имя_типа;

Описание массива в разделе Var:

Var имя_массива : array [ном_нач.. ном_кон] of тип_элем;

Здесь имя_массива – имя самого массива, тип_элем – тип элементов массива, например integer; char; string; real и т. д., ном_нач – начальный номер элементов массива, ном_кон – конечный номер элементов массива,

Пример объявления массива:

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

Здесь описан массив a из пятнадцати целых элементов.

Тот же массив можно было объявить следующими способами:

Type mas = array [1..15] of integer;

Var a:mas;

1.3 Операции с одномерными массивами

1) Обращение к элементу массива происходит путем указания имени массива, после чего в квадратных скобках указывается номер элемента в массиве;

a[4] – обращение к четвертому элементу массива;

b[i] – обращение к i-му элементу массива.

Над элементом массива можно осуществлять те же операции, что и над переменными того же типа.

2) Присваивание: с массивами в целом можно выполнять только эту операцию.

x:=y – присваивания одного массива другому,

причем массивы должны быть одного типа.

Все остальные действия можно выполнять только с отдельными элементами массива.

1.4 Стандартные процедуры обработки одномерных массивов

Пусть описан массив a следующим образом:

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

1) Ввод массива.

Массив нельзя вводить с клавиатуры при помощи оператора readln(a).

Каждый элемент массива приходится вводить отдельно. А так как в массиве 10 элементов, то нужно перебрать все эти элементы. То есть номер элемента i будет меняться от 1 до 10, для ввода массива нужно завести цикл от i=1 до i=10, на каждом шаге которого будет вводиться с клавиатуры очередной i-й элемент массива:

For i:=1 to 10 do readln(a[i]);

2) Вывод массива.

Аналогично вводу, каждый элемент любого массива приходится выводить отдельно. А так как элементов несколько, то для вывода массива нужно завести цикл от i=1 до i=10:

For i:=1 to 10 do writeln(a[i]);

3) Нахождение суммы элементов массива.

Сумма всех элементов массива будет содержаться в переменной s. Переберем все элементы массива (for i:=1 to 10 do) и добавим их к переменной s (s:=s+a[i]). Но предварительно до перебора всех элементов переменную s обозначим за 0, так как пока в сумме s ни один элемент массива не учтен.

Соответствующий фрагмент программы:

S:=0;

For i:=1 to 10 do s:=s+a[i];

Writeln(s);

Что касается всей программы, то перед подсчетом суммы обязательно нужно ввести массив. Текст всей программы:

Program z1;

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

i, s:integer;

begin

for i:=1 to 10 do readln(a[i]);

s:=0;

for i:=1 to 10 do s:=s+a[i];

writeln(s)

end.

4) Нахождение произведения элементов массива.

Произведение всех элементов массива будет содержаться в переменной p. Переберем все элементы массива (for i:=1 to 10 do) и умножим их на переменную p (p:=p*a[i]). Но предварительно до перебора всех элементов переменную p обозначим за 1, а не за 0, так как при умножении дальнейших элементов на 0 получим в результате 0, а не то произведение, которое мы ищем.

Соответствующий фрагмент программы:

p:=1;

For i:=1 to 10 do p:=p*a[i];

Writeln(p);

Текст всей программы:

Program z2;

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

i, p:integer;

begin

for i:=1 to 10 do readln(a[i]);

p:=1;

for i:=1 to 10 do p:=p*a[i];

writeln(p)

end.

5) Нахождение минимального (наименьшего) и максимального (наибольшего) элемента массива.

Рассмотрим нахождение максимального элемента в массиве. Для хранения максимального элемента заведем переменную max.

Для определения максимума в массиве первый элемент массива обозначим за максимальный (max:=a[1]), затем пересмотрим все остальные элементы массива (for i:=2 to 10 do) и если встретим элемент, больший того, который считался максимальным до этого момента (if a[i]>max then), то обозначим его за максимальный (max:=a[i]).

Соответствующий фрагмент программы:

max:=a[1];

For i:=1 to 10 do if a[i]>max then max:=a[i];

Writeln(max);

Текст всей программы:

Program z3;

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

i, max:integer;

begin

for i:=1 to 10 do readln(a[i]);

max:=a[1];

For i:=2 to 10 do if a[i]>max then max:=a[i];

Writeln(max);

end.

1.5 Некоторые примеры решения задач на массивы

Пусть описан массив a следующим образом:

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

Пример 1. Найти сумму элементов, больших трех.

Эта задача отличается от задачи нахождения суммы тем, что перед добавлением элемента массива в сумму нужно проверить, является ли он числом, большим трех, или нет.

Соответствующий фрагмент программы:

S:=0;

For i:=1 to 10 do if a[i]>3 then s:=s+a[i];

Writeln(s);

Текст программы:

Program z2;

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

i, s:integer;

begin

for i:=1 to 10 do readln(a[i]);

s:=0;

for i:=1 to 10 do if a[i]>3 then s:=s+a[i];

writeln(s)

end.

Пример 2. Найти произведение четных элементов.

Аналогично предыдущей задаче, эта задача отличается от нахождения произведения всех элементов массива только тем, что перед умножением произведения p на текущий элемент нужно проверить, является ли он четным. И если является, то умножать на него переменную p, если же нет, то не умножать.

Соответствующий фрагмент программы:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5