
- •Основи програмування та алгоритмічні мови
- •III етап. Опис алгоритму
- •V етап. Налагодження програми
- •Vі етап. Експлуатація програми
- •1. Визначення алгоритму
- •2. Властивості алгоритму
- •3. Форми запису алгоритму
- •4. Типи алгоритмів
- •1. Історія створення мови Паскаль
- •2. Структура програми
- •3. Елементи мови
- •4. Типи даних
- •5. Прості типи даних
- •6. Стандартні функції мови Паскаль
- •1. Складові інтерфейсу середовища програмування
- •2. Створення та виконання найпростішої програми
- •3. Налагодження програм
- •4. Перетворення програм
- •1. Процедури введенні-виведення
- •2. Процедури управління розташуванням інформації на екрані
- •3. Процедури роботи з кольором
- •4. Програми лінійної структури
- •1. Види циклів
- •5. Вкладені цикли
- •6. Пряма передача управління в операторах циклу
- •1. Поняття масиву
- •2. Опис масивів
- •3. Введення - виведення елементів масиву
- •4. Операції над масивами
- •1. Пошук мінімального (максимального) елемента у масиві
- •2. Бінарний пошук
- •3. Алгоритми упорядкування масивів
- •3.1. Упорядкування вставлянням
- •3.2. Упорядкування вибором
- •3.3. Упорядкування обміном
- •1. Поняття підпрограми. Типи підпрограм
- •2. Процедури
- •3. Формальні і фактичні параметри. Глобальні та локальні змінні
- •4. Функції
- •1. Рекурсія
- •2. Випереджальне оголошення підпрограм
- •3. Інші директиви компілятору
- •1. Стандартні модулі
- •2. Модулі користувача
- •Implementation
- •1. Загальні принципи роботи з файлами
- •2. Текстові файли
- •3. Типізовані (двійкові) файли
- •4. Нетипізовані файли
- •5. Фізична модель операцій читання та запису інформації у текстовий файл
- •6. Директиви компілятору при роботі з файлами
- •8. Розв’язування задач з використанням файлів
- •1. Перелічуваний тип
- •2. Обмежений тип
- •1. Запис та його оголошення
- •2. Доступ до компонентів та операції над записами
- •3. Записи з варіантами
- •4. Вкладеність записів
- •1. Встановлення (ініціалізація) графічного режиму
- •2. Кроки створення графічних об'єктів
- •3. Стандартні прoцедури і функції модуля Graph для работи з кольорами
- •4. Прoцедури і функції для работи з пікселями
- •5. Процедури для роботи з колом, дугами
- •6. Процедури для роботи з прямокутниками
- •7. Процедури для роботи з графічними примітивами типу "лінія".
- •8. Методи створення рухомих графічних об'єктів засобами мови Паскаль
- •9. Особливості виведення текстових повідомлень в графічному режимі
3.1. Упорядкування вставлянням
Масив поділяється на дві частини: упорядковану і неупорядковану. Елементи з неупорядкованої частини по черзі вибираються і вставляються в упорядковану частину, не порушуючи при цьому упорядкованості елементів. На початку роботи алгоритму до впорядкованої частини масиву відносять тільки перший елемент, а до невпорядкованої — всі інші елементи. Таким чином, потрібно (n-1) раз (n – розмірність масиву) виконати дії:
вибрати i-й елемент із невпорядкованої частини і зберегти в допоміжній змінній;
знайти позицію j у впорядкованій частині масиву, в якій вибраний елемент не порушуватиме впорядкованості;
зсув елементів масиву від (i-1)-го до (j-1)-го вправо для звільнення знайденої позиції;
вставити вибраний елемент у знайдену j – ту позицію.
Const MaxN =20;
Type TMas= array [1..MaxN] of real;
Var A: TMas; T: real; N, I, j: integer;
Begin
Write (‘Введіть кількість елементів масиву :’); Readln (N);
For i := 1 to N do begin Write (‘A[‘,i,’]=’); Readln (A[i]); end;
Writeln(‘Масив до впорядкування: ’);
For i := 1 to N do Write (A[i], ‘ ‘); Writeln;
For i:=2 to N do
Begin T:=A[i]; j:=1;
While T>A[j] do j:= j +1;
For k:=i – 1 downto j do A[k+1] := A[k]; A[j]:=T;
End;
Writeln (‘Упорядкований масив: ’);
For i := 1 to N do Write(A[i],’ ‘); Writeln;
End.
3.2. Упорядкування вибором
Знаходимо найменший елемент масиву на інтервалі від 1-го елемента до n-го (останнього) елемента і переставляємо його місцями з першим елементом. На другому кроці знаходимо найменший елемент масиву на інтервалі від 2-го до n-го елемента і переставляємо його місцями з другим елементом. І так далі для всіх елементів до (n-1)– го.
Const MaxN =20;
Type TMas= array [1..MaxN] of real;
Var A: TMas; T: real; N,Nmin, I, j: integer;
Begin
Write (‘Введіть кількість елементів масиву :’); Readln (N);
For i := 1 to N do begin Write (‘A[‘,i,’]=’); Readln (A[i]); end;
Writeln(‘Масив до впорядкування: ’);
For i := 1 to N do Write (A[i], ‘ ‘); Writeln;
For i:=1 to N-1 do
Begin Nmin :=i;
For j:= i+1 to N do
If A[Nmin] > A[j] then Nmin :=j;
T := A[Nmin]; A[Nmin] := A[i]; A[i]:=T;
End;
Writeln (‘Упорядкований масив: ’);
For i := 1 to N do Write(A[i],’ ‘); Writeln;
Readln;
End.
3.3. Упорядкування обміном
Зліва направо по черзі порівнюються два сусідні елементи (перший з другим, другий з третім і т.д.), і якщо їх взаємне розміщення не відповідає критерію упорядкування, то вони переставляються місцями. Після першого перегляду на останній n-й позиції масиву буде знаходитися найбільший елемент. Тому другий перегляд виконується до (n-1)-го елемента. Третій — до (n-2)-го, і т.д. Всього потрібний (n-1)перегляд.
Const MaxN =20;
Type TMas= array [1..MaxN] of real;
Var A: TMas; T: real; N,Nmin, I, j: integer;
Begin
Write (‘Введіть кількість елементів масиву :’); Readln (N);
For i := 1 to N do begin Write (‘A[‘,i,’]=’); Readln (A[i]); end;
Writeln(‘Масив до впорядкування: ’);
For i := 1 to N do Write (A[i], ‘ ‘); Writeln;
For i:= N downto 2 do
For j:=1 to i-1 do
If A[j] > A[j+1] then
begin T:= A[j]; A[j]:=A[j+1]; A[j+1]:= T; end;
Writeln (‘Упорядкований масив: ’);
For i := 1 to N do Write(A[i],’ ‘); Writeln;
Readln;
End.
Контрольні питання
В чому полягає суть пошуку елемента у масиві?
Що таке лінійний пошук?
В чому полягає суть алгоритму пошуку мінімального елемента у масиві?
В чому полягає суть алгоритму бінарного пошуку?
Що означає поняття упорядкування масиву?
З якою метою виконують сортування масиву?
В чому полягає суть алгоритму упорядкування вставлянням?
В чому полягає суть алгоритму упорядкування вибором?
В чому полягає суть алгоритму упорядкування обміном?
Лекція № 17 Підпрограми