- •Рабочая программа
- •Тематический план учебной дисциплины
- •Основные теоретические положения
- •Тема 2.5 Массивы
- •Одномерный массив
- •Способы описания одномерного массива
- •Ввод элементов массива
- •Двумерные массивы
- •Способы описания двумерного массива
- •Ввод элементов массива
- •Вывод элементов массива
- •Тема 2.6 Подпрограммы: процедуры и функции
- •Тема 2.7 Строки символов
- •Способы описания строк
- •Тема 2.8 Множество
- •Операции над множествами
- •Тема 2.9 Записи
- •Описание фиксированной записи
- •Описание вариантной записи
- •Тема 2.10 Файлы данных
- •Описание файловых переменных
- •Стандартные процедуры и функции для работы с файлами
- •Тема 2.11 Динамические структуры данных
- •Указательная переменная может находиться в трех состояниях:
- •Действия с указателями
- •Стандартные процедуры для работы с динамической памятью
- •Создание прямого односвязного списка
- •Методические указания по методике отладки программ в интегрированной среде PascalAbc Изучение интегрированной среды Pascal abc
- •Перечень рекомендуемых учебных изданий, интернет-ресурсов, дополнительной литературы
Основные теоретические положения
Тема 2.5 Массивы
Массив- это упорядоченный ограниченный набор однотипных данных, с каждым из которых связан ряд целых чисел, называемых индексами.
Массив определяется именем (идентификатором), размером и размерностью. Имя массива является единым для всех его элементов. Размерность массива определяется количеством индексов. Индексы необходимы для указания местоположения элемента. В качестве индекса может использоваться любой порядковый тип, кроме longint. По размерности массивы бывают:
одномерные;
двумерные;
многомерные.
Контроль правильности значений индексов осуществляется с помощью директивы компилятора R. По умолчанию директива R находится в пассивном состоянии{$R-}.
Размер массива определяется верхними границами индексов. Число элементов массива в языке Pascal фиксируется при описании и в процессе выполнения программы не меняется.
Элементы массива могут быть любого типа, включая структурированные (массив, запись, строки символов). Тип элементов массива называется базовым. При объявлении массива резервируется область оперативной памяти для хранения элементов массива. Элементы массива располагаются в последовательно расположенных ячейках памяти друг за другом.
Одномерный массив
В одномерном массиве все элементы как бы вытянуты в одну линию и расположены по возрастанию порядковых номеров. Элемент одномерного массива – это переменная с одним индексом. Например: А[i], Mas[r+2], D[3].
Способы описания одномерного массива
1). Type имя типа = array [диапазон индекса] of тип элементов;
Var имя массива : имя типа;
2). Var имя массива : array [диапазон индекса] of тип элементов;
где, array of – «массив из» - служебные слова;
тип элементов – любой простой и структурированный;
диапазон индекса – диапазон изменения индекса.
Например: Type massiv=array[1..20] of real;
Var A:massiv;
B: array [1..9] of char;
Ввод элементов массива
|
Рrogram vvod; Const N=10; Type mas=array[1..N] of real; Var a:mas; i: integer: Begin Writeln(‘Введите элементы массива’); For i:=1 to N do Begin Write(‘a[‘,i,’]=’); Readln( a[i]) End; … End. |
Пример1:
Составить программу для нахождения наибольшего элемента одномерного массива х , содержащего 15 элементов.
big=x[1] i=1,15,1 Big<x[i] big=x[i] |
Program mas_1; var i:integer; big:real; x: array[1..15] of real; begin for i:=1 to 15 do begin write (' x [',i:2,']='); readln(x[i]); end; big:=x[1]; for i:=2 to 15 do if big <x[i] then big :=x[i]; writeln('big = ',big:7:2) end.
Резуььтат решения задачи x [ 1]=1 x [ 2]=2 x [ 3]=3 x [ 4]=4 x [ 5]=5 x [ 6]=4 x [ 7]=3 x [ 8]=5 x [ 9]=6 x [10]=4 x [11]=3 x [12]=5 x [13]=6 x [14]=4 x [15]=5 big= 6.00 |
Чтобы осуществить перестановку любых элементов массива необходимо объявить дополнительную переменную для временного хранения любого элемента массива. Переменная должна быть того же типа, что и тип элементов массива. Сортировка и сдвиг элементов относится к перестановке.
Сортировка - один из наиболее распространенных процессов современной обработки данных. Сортировкой называется распределение элементов по группам в соответствии с определенными правилами. Существуют различные способы сортировки элементов массива: метод обмена (пузырька), метод выбора, метод вставок, бинарная сортировка и др.
Сдвиги бывают арифметические и циклические. При арифметическом сдвиге часть элементов теряется, а при циклическом сдвиге элементы массива только меняют свое местоположение.
До сдвига вправо
… P:=a[n]; For i:=n downto 2 do A[i]:=a[i-1]; A[1]:=P; … |
После сдвига
вправо
a[5] |
a[1] |
a[2] |
a[3] |
a[4] |
Пример2: В одномерном массиве, содержащем N элементов, осуществить циклический сдвиг элементов на 1 вправо (или влево). Для определения направления сдвига будем использовать переменную j. Если значение переменной j=0, то осуществляется циклический сдвиг элементов массива на единицу вправо, в противном случае – влево.
program pr;
type
masiv = array [1..15] of integer;
var i,key,j,n:integer;
mas:masiv;
begin
writeln('Введите количество элементов ');
readln(n);
for i:=1 to n do
begin
writeln('Введите Mas[',i,']');
readln(mas[i]);
end;
writeln('Введите 0 для сдвига вправо ,или 1 -влево');
readln(j);
if (j=0) then
begin
key:=mas[n];
for i:=n downto 2 do
mas[i]:=mas[i-1];
mas[1]:=key;
end else
begin
key:=mas[1];
for i:=1 to n-1 do
mas[i]:=mas[i+1];
mas[n]:=key;
end;
write('Mas[ ');
for i:=1 to n do
write(mas[i],' ');
write(']');
end.
Введите количество элементов
5
Введите Mas[1]
1
Введите Mas[2]
2
Введите Mas[3]
3
Введите Mas[4]
4
Введите Mas[5]
5
Введите 0 для сдвига вправо , или 1 -влево
0
Mas[ 5 1 2 3 4 ]
Пример3:
Рассортировать элементы одномерного массива по возрастанию методом пузырька.
Для этого сравниваются соседние элементы массива mas[j] и mas[j+1]. Если
mas [j]>mas[j+1] , то эти элементы меняются местами через дополнительную переменную key.
|
program pr; type masiv = array [1..15] of integer; var i,key,j,n:integer; mas:masiv; begin writeln('Введите количество элементов '); readln(n); for i:=1 to n do begin writeln('Введите Mas[',i,']'); readln(mas[i]); end; i:=1; while i=1 do begin i:=0; for j:=1 to n-1 do if mas [j]>mas[j+1] then begin key:=mas[j]; mas[j]:=mas[j+1]; mas[j+1]:=key; i:=1; end; end; write('Mas[ '); for i:=1 to n do write(mas[i],' '); write(']'); end.
Введите количество элементов 4 Введите Mas[1] 4 Введите Mas[2] 2 Введите Mas[3] 6 Введите Mas[4] 2 Mas[ 2 2 4 6 ]
|
