- •Основы программирования на языке паскаль
- •1. Простейшие программы Структура Паскаль-программы
- •Данные и тип данных
- •Стандартные функции
- •Выражения
- •Организация простейших программ
- •Модуль crt
- •Задания для самостоятельной работы
- •2. Ветвления
- •Задания для самостоятельной работы
- •3. Циклы
- •Оператор цикла с постусловием используется, когда известно условие, при котором цикл будет прекращать свою. Формат оператора:
- •Задания для самостоятельной работы
- •4. Массивы
- •Сортировка
- •Задания для самостоятельной работы
- •5. Строки
- •Задания для самостоятельной работы
- •6. Процедуры и функции
- •Параметры
- •Локальные и глобальные переменные
- •Функции
- •Задания для самостоятельной работы
- •7. Записи
- •Задания для самостоятельной работы
- •8. Множества
- •Операции над множествами
- •Задания для самостоятельной работы
- •9. Файлы
- •Стандартные процедуры и функции для работы с файлами всех типов
- •Стандартные процедуры и функции для работы с типизированными файлами
- •Задания для самостоятельной работы
- •10. Модуль graph
- •Процедуры и функции модуля graph
- •Задания для самостоятельной работы
- •11. Модули, определяемые пользователем
- •Задания для самостоятельной работы
- •12. Линейные однонаправленные списки Указатели
- •Линейные однонаправленные списки
- •Задания для самостоятельной работы
- •13. Двунаправленные списки.
- •Задания для самостоятельной работы
- •14. Кольцевые списки
- •Задания для самостоятельной работы
- •15. Стеки и очереди
- •Задания для самостоятельной работы
- •16. Деревья
- •Задания для самостоятельной работы
- •Простейшие программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
- •Бадмаева Энгельсина Сергеевна, Тонхоноева Антонида Антоновна
- •670000, Г. Улан-Удэ, ул. Смолина, 24-а.
4. Массивы
Массив – это конечный упорядоченный набор элементов одного типа. Весь набор имеет общее имя, каждая компонента имеет порядковый номер (индекс).
Описание типа массив имеет следующий вид:
Array[<тип_1>, <тип_2>,...,<тип_N>] of <тип_комп>;
где <тип_1>, <тип_2>,...,<тип_N> - типы индексов, <тип_комп> - тип компонентов массива (базовый тип). Количество индексов N определяет размерность массива. Одномерный массив (N=1) называют вектором, двумерный (N=2) – матрицей. Матрица, у которой количество строк и столбцов одинаково, называется квадратной, а число ее строк называют порядком матрицы..
Массив, как и любые другие структурированные типы, может быть объявлен в программе двумя способами:
сначала в разделе описания типов TYPE задается идентификатор типа, который затем используется при описании переменной в разделе VAR;
тип определяется непосредственно при описании переменной.
Над массивами определена лишь одна операция присваивания, причем массивы при этом должны быть идентичными. Над компонентами массива допустимы все операции, что и для элементов базового типа. Для доступа к компонентам массива используется частичная переменная: <имя массива>[<индекс_1>,…,<индекс_N>]. Массивы обрабатываются поэлементно с помощью циклов.
Сортировка
Сортировка, или упорядочивание, - это размещение элементов в определенном порядке. Если массив числовой, то различают сортировку по возрастанию и убыванию значений элементов массива. Символьный и строковый массивы упорядочивают с помощью сортировки по алфавиту.
Рассмотрим некоторые простые способы сортировки. Для определенности остановимся на сортировке по возрастанию целочисленного массива A[1..N].
Метод выбора. Выполняются проходы по неотсортированной части массива с целью выбора минимального элемента и установки его в начало этой части.
…
For j:=1 to (N-1) do {цикл для проходов, j – начало неотсортированной части}
Begin
N_min:=j;
For i:=j+1 to N do {проход для нахождения индекса минимального}
If A[i]<A[N_min] Then
N_min:=i;
P:=A[j]; A[j]:=A[N_min];A[N_min]:=P{установка минимума в начало части}
End;
…
Метод обмена (“пузырька”). Выполняются проходы по неотсортированной части массива с целью упорядочивания пар соседних элементов в порядке возрастания. В результате обменов значениями соседних элементов элемент с наибольшим значением выталкивается (всплывает как пузырек) в конец неотсортированной части.
…
For j:=1 to (N-1) do {цикл для проходов}
For i:=1 to (N-j) do {проход для нахождения “пузырька”}
If A[i]>A[i+1] Then
Begin
P:=A[i]; A[i]:=A[i+1];AIi+1]:=P
End;
…
Пример 7. Найти сумму элементов
последовательности целых чисел
,
где N>1, находящихся между элементами
с максимальным и минимальным значениями,
считая их единственными (в сумму включить
и сами элементы).
Program Example_7;
Const N=10;
Type Massiv=Array[1..N] of Integer;
Var A:Massiv; i, N_min, N_max, Nach, Kon:1..N; Sum:Integer;
Begin
{ввод массива}
For i:=1 to N do
Begin
Write(‘A[‘,i,’]=’); Readln(A[i])
End;
{поиск номеров максимального и минимального элементов массива}
N_max:=1; N_min:=1;
For i:=2 to N do
Begin
If A[i]>A[N_max] Then
N_max:=i;
If A[i]<A[N_min] Then
N_min:=I
End;
{запоминание границ суммирования}
If N_max<N_min Then
Begin
Nach:=N_max; Kon:=N_min
End
Else
Begin
Nach:=N_min; Kon:=N_max
End;
{суммирование}
Sum:=0;
For i:= Nach to Kon do
Sum:=Sum+A[i];
Writeln(‘Сумма между элементами A[‘,Nach,’] и A[’,Kon,’] равна ‘,Sum)
End.
Пример 8. Переставить строки действительной матрицы B[1..N,1..M] в порядке убывания их первых элементов.
Program Example_8;
Var B:Array[1..10, 1..10] of Real; N, M, i, j, k, N_max; P:Real;
Begin
Write(‘Задай размеры матрицы (не более 10):’);
Readln(N,M);
{ввод матрицы}
For i:=1 to N do
For j:=1 to M do
Read(B[i,j]);
{применим метод выбора для сортировки по первым элементам строк}
For k:=1 to N-1 do
Begin
{нахождение номера строки с наибольшим первым элементом}
N_max:=k;
For i:=k+1 to N do
If B[i,1]>B[N_max,1] Then
N_max:=i;
{перемещение найденной строки для упорядочивания по первым элементам }
For j:=1 to M do
Begin
P:=B[k,j]; B[k,j]:=B[N_max,j]; B[N_max,j]:=P
End
End;
Writeln(‘Упорядоченная матрица:’);
For i:=1 to N do
Begin
For j:=1 to M do
Write(B[i,j]:6:2,’ ‘);
Writeln
End
End.
