- •Содержание
- •Перечень, наименование, обозначение блоков и отображаемые ими функции.
- •Интегрированная инструментальная оболочкаPascalAbc. Работа с главным меню системыPascalAbc
- •Среда программирования Pascal abc.
- •Общая структура программ в Pascal.
- •Основные части программы.
- •Оператор ввода-вывода в Pascal. Описание некоторых стандартных типов данных и встроенные операции и функции, применимые к ним
- •Операторы ввода/вывода данных
- •Стандартные типы данных
- •Программирование линейных алгоритмов
- •Понятие линейного алгоритма. Примеры написания программ.
- •Программирование с помощью операторов условного и безусловного перехода
- •Условный оператор If
- •Оператор безусловного перехода GoTo
- •Оператор выбора Case
- •Циклические программы
- •Оператор For
- •Оператор Repeat
- •Оператор While
- •Массивы
- •Линейные массивы. Описание типа
- •Многомерные массивы. Двухмерные массивы – матрицы.
- •Расчет отметок проектной линии на вертикальной выпуклой или вогнутой кривой
- •Индивидуальные задания
- •Процедуры и функции, определенные пользователем. Параметры процедур и функций
- •Глобальные и локальные переменные, параметры процедур и функций
- •Процедуры пользователя
- •Функции пользователя
- •Символьные массивы. Строки
- •Символьный тип
- •Символьные массивы
- •Строки. Объявление строчных типов и переменных
- •Определения значения строковой переменной
- •Длина строки. Операция конкатенации
- •Функции для работы со строками
- •Процедуры для работы со строками
Линейные массивы. Описание типа
Дли описания массива предназначено словосочетание
Array [нач.индекс .. конечный индекс ] of <Тип компонент>
Формат:
Туре
<имя типа> = аrrау [тип индекса] of <тип компонент>;
Var
<идентификатор,…> : <имя типа>;
Массив может быть описан и без представления типа в разделе описания типов данных:
Var
< идентификатор,….> : аrrау [тип индекса] of <тип компонент>
Пример1:
Туре Znak = array[1.. 255] of char;
Var alf: Znak;
Пример2:
Var alf: array[1.. 255] of char;
Многомерные массивы. Двухмерные массивы – матрицы.
Если в качестве базового типа взят другой массив, образуется структура, которую принято называть многомерным массивом.
Пример.
Type
Vector = array[l.. 4] of integer;
Massiv = array[1..4] of Vector;
Var
Matr: Massiv; {матрица}
Trmer: array[1..6] of Massiv; {трехмерный массив}
Ту же структуру можно получить, используя другую форму записи:
Var
Matr : array [1. .4,1. .4] of integer; Trmer: array [1..6, 1..4, 1..4] .
Если в такой форме описания массива задан один индекс, массив называется одномерным, если два индекса – двухмерным, если nиндексов,n-мерным. Размерность ограничена только объемом памяти конкретного компьютера. Однако любой компьютер имеет фиксированный объем памяти, поэтому многомерные массивы могут быстро его заполнить. Здесь программист должен пойти на компромисс между требованиями задачи и реальным объемом оперативной памяти. В любом случае лучше рассчитывать объем памяти для массивов заранее и сохранять его на разумном уровне. Двухмерные массивы обычно используются для представления матриц.
Для описания массива можно использовать предварительно определенные константы:
Const
G1 = 4; G2 = 6;
Var
MasY : array[1.. G1, 1.. G2] of real;
Элементы массива располагаются в памяти последовательно. Элементы с меньшими значениям индекса хранятся в более низких адресах памяти. Многомерные массивы располагаются таким образом, что самый правый индекс возрастает самым первым. Например, если имеется массив
А : array[l. .5,1. .5] of integer;
то в памяти элементы массива будут размещены по возрастанию адресов:
А [1,1] А[1,2] А[1,5]
А [2,1] А[2,2] А[2,5]
. . .
А [2,1] А[2,2] А[5,5]
С массивами в целом можно выполнять только присваивание. Работают операции отношения =, <>. При этом массивы должны быть одного типа, например:
b := a;
Все остальные действия выполняются с отдельными элементами массива. Для обращения к элементу массива после имени массива указывается номер элемента в квадратных скобках:
a[4], b[i]
С элементом массива можно делать все, что допустимо для переменных того же типа.
Для заполнения массива случайными числами можно использовать функцию Random.
Random – генерирует значение случайного числа из диапазона 0..0.99. Тип результата – Real.
Writeln (Random:8:4) _ _ 0.7853
Sl:= Random; Writeln(Sl:6:3) _0.047
Random(N) – генерирует значение случайного числа из диапазона 0 .. N-1. Тип результата – Integer.
Writeln (Random(10):3 _ _ 5;
Sl:= Random(10); Writeln(Sl:3) _ _8
Функцию Random(N) можно использовать для получения случайных чисел из нескольких заданных диапазонов. Например, пусть требуется получить и вывести на экран 11 случайных чисел, причем первое число должно принадлежать диапазону 0..10, второе – 11..20 и т.д.:
For i:=0 to 10 do write(i*10+Random(10):4)
Чтобы случайные числа были более случайными, необходимо периодически менять базу генерации. Для этого используется процедура Randomize.
Пример
Упорядочивание по возрастанию элементов массива из 20 целых величин.
Для сортировки будем использовать метод выбора.Алгоритм состоит в том, что сначала выбирается наименьший элемент массива и меняется местами с первым элементом, затем просматриваются элементы, начиная со второго, и наименьший из них меняется местами со вторым элементом, и так далее n – 1 раз. На последнем проходе цикла при необходимости меняются местами предпоследний и последний элементы массива.
Program sort; { Сортировка выбором }
const n = 20;
var a : array [1 .. n] of integer;
i, j, nmin, buf : integer;
begin
writeln('Введите ', n, ' элементов массива');
for i := 1 to n do
Begin
Write('a',i,' ');
readln(a[i]);
end;
for i := 1 to n - 1 do begin { просмотр массива n-1 раз }
nmin := i;
for j := i + 1 to n do { поиск минимума }
if a[j] < a[nmin] then nmin := j;
buf := a[i]; { перестановка }
a[i]:= a[nmin]; { двух }
a[nmin]:= buf; { элементов массива }
end;
writeln('Упорядоченный массив:');
for i := 1 to n do write(a[i]:5)
end.