- •Алфавит языка
- •Данные языка Turbo Pascal
- •Типы данных в языке Turbo Pascal
- •Целочисленные (целые) типы данных
- •Операции и выражения в языке Паскаль
- •Стандартные арифметические функции в Паскаль (см методичку)
- •Лекции 4-7
- •Оператор вывода write и writeln
- •Структурные операторы языка Паскаль
- •Составной оператор
- •Условные операторы
- •Массивы
- •Описание одномерного массива.
- •Действия над элементами одномерного массива.
- •Алгоритм поиска максимального элемента в массиве и его номера
- •Сортировка массивов
- •Генерация случайных чисел
- •Двумерный массив
- •Ввод-вывод матриц
- •Обработка символьных и строковых данных
- •Лекции 15-17
- •Подпрограммы
- •1. Описание процедуры.
- •2. Описание функции.
- •Список литературы
Алгоритм поиска максимального элемента в массиве и его номера
Дан массив X, состоящий из n элементов. Необходимо найти максимальный элемент массива и номер, под которым он хранится в массиве.
Алгоритм решения задачи следующий. Пусть в переменной с именем max хранится значение максимального элемента массива, а в переменной с именем Nmax – его номер. Предположим, что первый элемент массива является максимальным и запишем его в переменную max, а в Nmax – его номер (т.е. 1). Затем все элементы, начиная со второго, сравниваем в цикле с максимальным. Если текущий элемент массива оказывается больше максимального, то записываем его в переменную max, а в переменную Nmax – текущее значение индекса i.
Соответствующий фрагмент программы имеет вид:
Max:=X[1];
Nmax:=1;
For i:=2 to n do
if X[i]>max then
Begin
Max:=X[i];
Nmax:=I;
End;
Writeln(‘max= ’,max,’ Nmax= ‘,Nmax);
Сортировка массивов
Сортировка – распределение элементов массива по группам в соответствии с определенными правилами.
Линейная сортировка (сортировка отбором)
Идея линейной сортировки (например, по возрастанию) заключается в том, чтобы последовательно просматривая весь массив, отыскать наименьшее число и поместить его на первую позицию, обменяв его с элементом, который ранее занимал первую позицию. Затем просматриваются все остальные элементы массива и выполняется аналогичная операция по отбору из рассматриваемой части массива минимального элемента и обмену местами этого элемента и первого из рассматриваемой части и т.д.
Пример:
program Primer10;
var A: array[1..10] of integer;
i,j,n: integer;
begin
writeln('введите массив');
for i:=1 to 10 do
readln(A[i]);
writeln;
for i:=1 to 10-1 do {изменяется размер неотсортированной части массива}
for j:=i+1 to 10 do {сравнивается i-й элемент неотсортированной части массива со всеми от i+1-го до конца}
begin
if A[i]>=A[j] then
begin
n:=A[i];
A[i]:=A[j];
A[j]:=n;
end;
end;
for i:=1 to 10 do
writeln(A[i]);
end.
где I – используется для указания позиции первого элемента в рассматриваемой части массива;
J – для указания позиции очередного сравниваемого с ним элемента;
Если условие A[i]>=A[j] выполняется, т.е. в неотсортированной части массива найден элемент, меньший, чем первый, то необходимо обменять местами эти элементы.
Генерация случайных чисел
Генерация случайных вещественных чисел (REAL) в диапазоне от 0 до 1 осуществляется с помощью функции RANDOM
x:=random;
Если необходимо генерировать случайные числа в другом диапазоне, то необходимо преобразовать это выражение с помощью операций смещения и масштабирования. Например, для того, чтобы получить случайное число в диапазоне от 10 до 12, необходимо написать:
x:=10+2*random;
Для генерации целых случайных чисел (INTEGER) в диапазоне от 0 до N используется функция RANDOM с аргументом:
x:=random(N);
Для смены базы генерации случайных чисел, чтобы при каждом новом прогоне программы числа были другие, используется процедура RANDOMIZE. Обращение к этой процедуре идёт до обращения к функциям RANDOM.