- •Информатика
- •Введение
- •Алгоритм и программа
- •Интегрированная инструментальная среда turbo pascal 7.0.
- •Начало работы
- •Клавиатура
- •Диалоговые окна
- •Подготовка текста программы Начало работы
- •Ввод текста и внесение изменений в текст программы
- •Компиляция
- •Пробный запуск программы на выполнение
- •Буфер промежуточного хранения
- •Использование справочной системы
- •Сохранение текста программы в файле
- •Отладка программы
- •Завершение работы
- •Алфавит языка
- •Символы, используемые в идентификаторах
- •Разделители
- •Специальные символы
- •Знаки пунктуации
- •Основные типы данных
- •Описание переменных
- •Инструкция присваивания
- •Выражение
- •Тип выражения
- •Выполнение инструкции присваивания
- •Константы
- •Целые константы
- •Вещественные константы
- •Строковые и символьные константы
- •Константные выражения
- •Типизированные константы
- •Стандартные функции
- •Арифметические функции
- •Функции преобразования типа
- •Функции для величин порядкого типа
- •Ввод и вывод информации
- •Инструкции write и writeln
- •Инструкции read и readln
- •Общая структура программы
- •Раздел объявлений и соглашений
- •Заголовок
- •Глобальные директивы компилятора
- •Оператор uses
- •Объявления глобальных меток, констант, типов и переменных
- •Процедуры и функции
- •Заголовок процедуры или функции
- •Объявления локальных меток, констант, типов и переменных
- •Тело процедуры/функции
- •Основной блок программы
- •Управляющие структуры
- •Условие
- •Условный оператор if
- •Условный оператор case
- •Оператор цикла for
- •Оператор цикла repeat
- •Оператор цикла while
- •Оператор безусловного перехода goto
- •Пустой оператор
- •Составной оператор
- •Массивы
- •Объявление массива
- •Некоторые типичные действия с массивами
- •Вывод массива
- •Ввод массива
- •Сортировка массива
- •Сортировка методом прямого выбора
- •Сортировка методом прямого обмена
- •Поиск в массиве
- •Поиск минимального (максимального) элемента массива
- •Операции с матрицами
- •Сложение матриц
- •Транспонирование матрицы
- •Умножение матриц
- •Символы и строки
- •Символы
- •Массив символов
- •Функция length
- •Процедура delete
- •Функция pos
- •Функция copy
- •Процедуры и функции
- •Процедура
- •Функции
- •Параметры-процедуры и параметры-функции.
- •Процедура exit
- •Директивы подпрограмм
- •Директива forward
- •Директивы far и near
- •Директива external
- •Директива assembler
- •Директива inline
- •Директива interupt
- •Рекурсия Понятие рекурсии
- •Пример программы: поиск пути
- •Вывод в файл
- •Объявление файла
- •Назначение файла
- •Инструкции вывода в файл
- •Открытие файла для вывода
- •Ошибки открытия файла
- •Закрытие файла
- •Ввод из файла
- •Открытие файла
- •Чтение из файла
- •Конец файла и конец строки
- •Введение в структурное программирование
- •Рекомендательный библиографический список Основной:
- •Дополнительный:
Некоторые типичные действия с массивами
К типичным действиям с массивами можно отнести следующие:
вывод массива;
ввод массива;
поиск в массиве заданного элемента;
поиск в массиве максимального или минимального элемента;
сортировка массива.
Вывод массива
Под выводом массива понимается вывод на экран значений элементов массива. Если в программе необходимо вывести значения всех элементов массива, то для этого удобно использовать инструкцию FOR, переменная-счетчик которой может быть использована как индекс элемента массива.
Например программа, выводящая на печать номера и названия дней недели, хранящиеся в массиве day, может быть реализована так:
Var
day : Array[1..7] of string[11] ;
i : Integer ;
Begin
day[1] := ‘Понедельник’ ;
day[2] := ‘Вторник’ ;
day[3] := ‘Среда’ ;
day[4] := ‘Четверг’ ;
day[5] := ‘Пятница’ ;
day[6] := ‘Суббота’ ;
day[7] := ‘Воскресенье’ ;
End.
При выводе отдельных элементов обычно указываются их индексы. Например:
i := 3 ; j :=2 ; k := 5 ;
a[i,j,k] := 7.5 ;
WriteLn( ‘a[‘,i:1,’,’,j:1,’,’,k:1,’]=‘,a[i,j,k]:3:1) ;
В результате на экран будет выведено a[3,2,5] = 7.5 .
Ввод массива
Начальные значения элементов массива могут быть заданы внутри программы, либо при описании массива. Во втором случае массив описывается в разделе Const, а элементы перечисляются через запятые и заключаются в скобки. Количество начальных значений должно строго соответствовать количеству элементов массива.
Например:
Type Dim2 = array[1..2] of integer ;
Dim432 = array[1..4,1..3] of Dim2 ;
Const
a : Dim2 = (0,3) ;
b : Dim432 = (((0,1), (0,4), (5,-7)),
((3,0), (0,0), (0,4)),
((0,1), (2,4), (-1,2))) ;
Как и вывод массива, ввод удобно реализовать при помощи инструкции FOR. Чтобы пользователь программы знал, ввода какого элемента массива ожидает программа, следует организовать вывод подсказок перел вводом очередного элемента массива. В подсказке обычно указывают индекс элемента массива.
Сортировка массива
Под сортировкой массива подразумевается процесс перестановки элементов с целью упорядочивания их в соответствии с каким-либо критерием. Например, если имеется массив целых A, то после сортировки по возрастанию должно выполняться условие:
где - верхняя граница индекса массива.
Так как можно сравнивать переменные типов INTEGER, REAL, CHAR и STRING, то можно сортировать массивы этих типов.
Задача сортировки распространена в информационных системах и используется как предварительный этап задачи поиска, так как поиск в упорядоченном (отсортированном) массиве и проводится намного быстрее, чем в неупорядоченном.
Существует много методов (алгоритмов) сортировки массивов. Рассмотрим два метода:
метод прямого выбора
метод прямого обмена
Сортировка методом прямого выбора
Алгоритм сортировки массива по возрастанию методом прямого выбора может быть представлен так:
Просматривая массив от первого элемента, найти минимальный и поместить его на место первого элемента, а первый на место минимального.
Просматривая массив от второго элемента, найти минимальный и поместить его на место второго элемента, а второй на место минимального.
И так далее до предпоследнего элемента.
Ниже представлена программа сортировки массива целых чисел по возрастанию. Для демонстрации процесса сортировки программа выводит массив после каждого обмена элементов.
CONST
size = 5 ;
VAR
A : Array[1..5] of Integer ;
i : Integer ; { номер эл-та, от которого ведется поиск минимального эл-та }
min : Integer ; { номер минимального эл-та в части массива }
{ от i до верхней границы массива }
j : Integer ; {номер эл-та, сравниваемого с минимальным }
buf : Integer ; {буфер, используемый при обмене эл-тов массива }
k : Integer ;
BEGIN
Write(‘ Введите’,size:3,’ целых в одной строке через пробел ‘) ;
For k := 1 to size do read(A[k]);
writeln(‘ Сортировка ‘) ;
For i := 1 to size-1 do
Begin
{поиск минимального эл-та в части массива от A[i] до A[size]}
min := i ;
for j := i+1 to size do begin
if A[j]<A[min] then min := j ;
{ поменяем местами A[min] и A[i] }
buf := A[i] ;
A[i] := A[min] ;
A[min] := buf ;
{ выведем массив }
for k:=1 to size do write(A[k],’ ‘) ;
writeln ;
end ;
end ;
writeln( ‘ Массив отсортирован ’ ) ;
END.