PascalABC.NET Одномерные числовые массивы.
1.60M
Category: programmingprogramming

лабароторная_№7_одномерные_массивы_PascalABC_NET_ (1)

1. PascalABC.NET Одномерные числовые массивы.

Лабораторная
работа№ 7
PASCALABC.NET
ОДНОМЕРНЫЕ ЧИСЛОВЫЕ МАССИВЫ.
Дисциплина:
«Основы алгоритмизации и программирования.»
Преподаватель: Шадрин Валерий Георгиевич

2.

Порядок выполнения лабораторной работы.
1. Открыть рабочею папку Ваших работ на рабочем столе :
2. Скачать из папки преподавателя работу:
«лабораторная работа №__»
с методическим материалом, с заданием и примерами для
выполнения лабораторной работы.
Sol_Pascal
группа
Фамилия
3. Изучить методический материал и задание для
выполнения Практической работы и Лабораторной
работы
4. Выполнить вначале практическое задание, а затем задание
для лабораторной работы
Сохранить все результаты в созданной Вами папке :
Sol_Pascal
группа
Фамилия
5. Для закрепления материала:
Письменно ответить на все контрольные контрольные вопросы
2

3.

Теоретическая
часть
Массив – это последовательный ряд однотипных элементов,
которые имеют общее имя, а каждый элемент этой последовательности определяется
порядковым номером, например, a1, а2, а3, …, аn. Элементы массива нумеруют по порядку.
Порядковый номер элемента массива называется индексом этого элемента.
Например, результаты измерения температуры воздуха в течение месяца можно
рассматривать как совокупность вещественных чисел, объединённых в один объект – массив
измерений температуры.
При описании массива используются зарезервированные слова array (массив) и of (из).
В квадратных скобках указывают число элементов, которые входят в массив и тип этих
элементов.
В общем виде описание массива задаётся следующим образом:
a: array [1..10] of integer;
b: array [1..20] of real;
c: array [0..30] of char;
Из этого описания массивов видно, что массив а состоит из 10 (десяти) целых элементов
(integer), массив b состоит из 20 вещественных элементов (real), а массив с – из 30
символьных элементов (char), например, букв.
3

4.

Одномерные
массивы.
При работе с обычными переменными каждая из них хранит только одно значение. Для решения
практических задач в программе возникает необходимость группировать однотипные данные.
Основным механизмом в языках программирования, реализующим эту возможность, являются
массивы.
Под массивом понимается совокупность конечного числа данных одного
типа, объединенных одним именем.
Переменная массив имеет одно имя (например, а), а каждый элемент массива имеет свой
порядковый номер, называемый индексом (a[1], a[2], a[3], …,
a[n]). Индексом может быть произвольное выражение порядкового типа, заключенное в
квадратные скобки. Например, Sum[True], Vect[ i + 1 ].Обработка массивов производится путем
изменения индексов компонент. То есть имеется способ перехода от одного элемента массива к
другому путем изменения индекса.
Тот факт, что индекс может быть вычисляемым объектом, выделяет массив среди многих других
структур данных.
Массив, в котором положение элемента определяется одним индексом,
называется одномерным. Одномерный массив соответствует математическому
понятию вектора-строки или вектора-столбца. При описании массива необходимо указать общее
4
число входящих в массив элементов и тип этих элементов.

5.

Одномерные
массивы.
Пример, если мы будем в течение месяца ежедневно записывать
среднесуточную температуру, и заносить эти данные в таблицу,
t[1] t[2] t[3] t[…] t[30]
Моздок 15 17 14 … 21
то у нас получится одномерный массив, в котором будет храниться
переменная
t[j], с одним индексом (номером столбца).
t[1], t[2], t[3], … , t[n].
Пример описания одномерного массива:
Var A: array [1 … 15] of real;
Для указания количества элементов массива можно применять константы:
Const a=10;
Var A: array [1 … a] of integer;
5

6.

Пример 1. Составить программу ввода с клавиатуры и вывода
на экран монитора пяти элементов массива.
program Massiv_01;
const n=5; {n– количество элементов массива}
var
a: array [1..n] of integer;
i: integer;
begin
writeln (‘Введите ' , n , ' элементов массива с клавиатуры:');
for i:=1 to n do
begin
write ('Введите значение элемента a[' , i , '] =');
readln (a[ i] );
end;
writeln ('Вывод элементов массива на экран монитора ');
for i:=1 to n do
write (a[i] :5);
end.
6

7.

Пример 2. Составить программу расчёта суммы элементов
массива из пяти чисел.
program Massiv_02;
const n=5; {n– количество элементов массива}
var
i: integer;
a: array [1..n] of integer;
Sum: integer; {Sum - сумма элементов массива}
begin
writeln ('Расчёт суммы элементов массива');
writeln (‘Введите ' , n , ' элементов массива:');
for i:=1 to n do
begin
write ('Введите значение элемента a[' , i, '] =');
readln (a[i] );
end;
Sum:=0;
for i:=1 to n do
Sum:= Sum + a[i] ;
writeln ('Сумма элементов массива равна ' , Sum);
end.
.
7

8.

Пример 3. Составить программу расчёта среднего арифметического значения
элементов массива из 5 чисел.
program Massiv_03;
const n=5;
var
a: array [1..n] of integer;
i: integer;
Sred: real; {Среднее арифметическое значение элементов массива}
begin
writeln ('Расчёт среднего арифметического значения элементов массива');
writeln ('Введите ' , n, ' элементов массива:');
for i:=1 to n do
begin
write ('Введите значение элемента a[' , i , ']=');
readln (a[ i]);
end;
Sred:=0;
for i:=1 to n do
Sred:= (Sred + a[i]); {Сумма элементов массива}
Sred:= Sred / n;
writeln ('Среднее арифметическое значение элементов массива равно ' , Sred);
end.
8

9.

Пример 4. Составить программу расчёта суммы элементов
массива из n чисел.
program Massiv_04;
var
i: integer;
n: integer;
a: array [1..20] of integer; {20 – количество элементов массива}
Sum: integer;
begin
write ('Расчёт суммы элементов массива из n чисел, n= ');
readln (n);
writeln ('Введите ' , n, ' элементов массива:');
for i:=1 to n do
begin
write ('Введите значение элемента a[' , i, '] =');
readln (a[i] );
end;
Sum:=0;
for i:=1 to n do
Sum:= Sum + a[ i] ;
writeln ('Сумма элементов массива равна ' , Sum);
end.
9

10.

Функция Random.
Для учебных целей удобнее использовать массивы, сформированные с помощью генератора
случайных чисел. В языке Паскаль случайные числа, равномерно расположенными в
интервале от 0 до 1, формирует функция Random. Для получения целых случайных чисел от 0
до N следует использовать функцию Random(N+1). Чтобы выбрать целое случайное число из
интервала [a, b] можно применить выражение Random(b-a+1)+a.
Пример5 .
Program pr5;
Var A : Array [1..20] Of Integer; I, S : Integer;
BEGIN S:=0; {обнуляем значение суммы}
For I:=1 To N Do begin
A[I]:= Random(101)-50; {формирование элементов массива}
Write(A[I],' '); {вывод массива}
S:=S+A[I]; {суммирование элементов массива}
end
END.
Сформировать и
распечатать массив из 20
целых случайных чисел
от 10 до 100. Найти сумму
элементов массива.
10

11.

Пример 5.
Program pr5;
Const n=25;
Var a:array[1..n] of integer; i,s:integer; 8
sr:real;
BEGIN
s:=0; {обнуляем значение суммы}
for i:=1 to n do begin
a[i]:=random(4)+2; write(a[i],' '); {формирование и вывод
{элементов массива}
s:=s+a[i]; {суммирование элементов массива}
end;
writeln; {переход на новую строку}
sr:=s/n;
write('sr=',sr:3:2)
END.
В массиве хранятся оценки по
математике студентов 102
группы. С помощью датчика
случайных чисел заполнить
массив целыми значениями,
лежащими в диапазоне от 2 до
5 включительно. Найти
среднюю оценку в группе.
11

12.

Пример 6.
Program pr6;
Var A:array[1..10] of integer;
i, n, m: integer; {m- максимальный элемент, n- его порядковый номер}
BEGIN
for i:=1 to 10 do begin {формирование и вывод элементов массива}
a[i]:=random(18)+3;
write(a[i],’ ’);
end;
writeln; m:=a[1];
n:=1; {выбираем 1-й элемент в качестве максимального }
for i:=2 to 10 do {перебираем все элементы массива, начиная со 2-го}
if a[i]>m then begin
m:=a[i];
n:=i end; {запоминаем наибольший и его индекс}
write('n=',n)
END.
В массиве хранятся цены на
10 видов мороженого.
С помощью датчика
случайных чисел заполнить
массив целыми значениями,
лежащими в диапазоне от 3
до 20 включительно.
Определить порядковый
номер самого дорогого
мороженого.
12

13.

Сортировка массивов
Сортировкой или упорядочением массива называется расположение его
элементов по возрастанию (или убыванию). Если не все элементы различны, то
надо говорить о неубывающем (или невозрастающем) порядке.
Вообще говоря, это большая и сложная тема, в которой известно много
различных алгоритмов. Критерии оценки эффективности этих алгоритмов могут
включать следующие параметры:
количество шагов алгоритма, необходимых для упорядочения;
количество сравнений элементов;
количество перестановок, выполняемых при сортировке.
Мы рассмотрим только три простейшие схемы сортировки.
13

14.

Метод "пузырька"
По-видимому, самым простым методом сортировки
является так называемый метод "пузырька". Чтобы
уяснить его идею, представьте , что массив (таблица)
расположен вертикально. Элементы с большим значением
всплывают вверх наподобие больших пузырьков. При
первом проходе вдоль массива, начиная проход "снизу",
берется первый элемент и поочередно сравнивается с
последующими. При этом:
если встречается более "легкий" (с меньшим
значением) элемент, то они меняются местами;
при встрече с более "тяжелым" элементом, последний
становится "эталоном" для сравнения, и все
следующие сравниваются с ним .
В результате наибольший элемент оказывается в самом
верху массива. Во время второго прохода вдоль массива
находится второй по величине элемент, который
помещается под элементом, найденным при первом
проходе, т.е на вторую сверху позицию, и т.д.
begin
for j:=1 to N-1 do
for i:=1 to N-j do
if M[i] > M[i+1]
then begin t := M[i];
M[i] := M[i+1];
M[i+1] := t
end;
14

15.

Сортировка вставками
Второй метод называется метод вставок., т.к. на j-ом этапе мы "вставляем" j-ый
элемент M[j] в нужную позицию среди элементов M[1], M[2],. . ., M[j-1], которые
уже упорядочены. После этой вставки первые j элементов массива M будут
упорядочены. Сказанное можно записать следующим образом:
Начало_ц для j от 2 до N переместить M[j] на позицию i <= j
такую, что M[j] < M[k] для i<= k < j и либо M[j] >= M[i-1],
либо i=1 конец_ц
Чтобы сделать процесс перемещения элемента M[j], более простым, полезно
воспользоваться барьером: ввести "фиктивный" элемент M[0], чье значение
будет заведомо меньше значения любого из "реальных« элементов массива
(как это можно сделать?). Мы обозначим это значение через —оо.
Если барьер не использовать, то перед вставкой M[j], в позицию i-1 надо
проверить, не будет ли i=1. Если нет, тогда сравнить M[j] ( который в этот
момент будет находиться в позиции i) с элементом M[i-1].
15

16.

Сортировка вставками
begin
M[0] := -oo;
for j:=2 to N do
begin
i := j;
while M[i] < M[i-1] do
begin
t := M[i];
M[i] := M[i+1];
M[i+1] := t
i := i-1
end
end
end;
16

17.

Сортировка посредством выбора
Идея сортировки с помощью выбора не сложнее двух предыдущих. На j-ом этапе
выбирается элемент наименьший среди M[j], M[j+1],. . ., M[N ] N](см. процедуру
FindMin) и меняется местами с элементом M[j]. В результате после j-го этапа
все элементы M[j], M[j+1],. . ., M[N]будут упорядочены.
Сказанное можно описать следующим образом:
нц для j от 1 до N-1 выбрать среди M[j],. . ., M[N]
наименьший элемент и поменять его местами с M[j]
кц
Более точно:
begin
for j:=1 to N-1 do
begin
FindMin(j, i);
t := M[i];
M[i] := M[i+1];
M[i+1] := t
end
end;
procedure FindMin(startindex:
integer; var lowindex:
integer);
var lowelem: ...;
u: integer;
begin lowindex := startindex;
lowelem := M[startindex];
for u:=startindex+1 to N do
if M[u] < lowelem then
begin lowelem := M[u];
lowindex := u
17
end
end;

18.

Пример 6.
Составить программу сортировки элементов
массива по возрастанию.
program Massiv_06;
const n=5; {n – количество элементов массива}
var
a: array [1. .n] of integer;
i, k, w: integer;
Begin
writeln ('Сортировка элементов массива по
возрастанию');
writeln ('Введите ', n, ' элементов массива:');
for i:=1 to n do
begin
write ('Введите значение элемента a[ ' , i , ']=' );
readln (a[ i]); {Ввод массива}
end;
for k:=n-1 downto 1 do
for i:=1 to k do
if a[ i] > a[ i+1] then
begin
w:=a[ i] ;
a[ i] :=a[ i+1];
a[ i+1]:=w;
end;
writeln ('Сортировка элементов массива по
возрастанию:');
for i:=1 to n do
write (a[ i] :4); {4 – количество пустых позиций между
числами}
end.
18

19.

Варианты индивидуальных заданий
19

20.

Варианты индивидуальных заданий
20

21.

Варианты индивидуальных заданий
21

22.

Варианты индивидуальных заданий
Контрольные вопросы
1. Объявление массива. Организация ввода и
вывода массива.
2. Организация поиска заданного элемента в
массиве
3. Организация поиска максимального и
минимального элементов
4. Организация сортировки массива
5. Вставка и удаление заданного элемента в
массив
6. Что называется индексом элемента
одномерного массива?
7. Какие операции применимы к массивам?
22

23.

23
English     Русский Rules