ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Федеральное государственное образовательное учреждение
высшего профессионального образования
«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
Структурные типы данных в 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 |


