Інформатика
Основи програмування
Алгоритмічна мова Паскаль (Pascal)
Елементи мови Паскаль
Структура опису алгоритму на мові програмування
Типи даних в Паскалі
лінійні програми
Лінійними називаються програми, що складаються з простих команд (операторів).
Простими командами (простими вказівками алгоритму) називаються команди, які не використовують умови при своєму виконанні. До числа простих операторів відносяться команди (оператори) присвоювання, введення та виведення, виклику допоміжного алгоритму (підпрограми).
Оператор присвоювання. Він задає або змінює поточне значення деякої змінної. При цьому змінюється вміст конкретного елемента пам'яті, відведеного для цієї змінної. Оскільки мета будь-якого алгоритму - це отримання в певному місці пам'яті потрібного значення, практично будь-яка програма містить цей оператор.
Ця команда може мати такий вигляд:
ім'я змінної>: = значення>;
ім'я змінної>: = ім'я змінної>;
ім'я змінної>: = вираз>;
Зліва від знака «: =» розташоване ім'я змінної, праворуч - значення величини, ім'я іншої змінної, вираз.
Розпізнавши команду присвоювання, управління передається програмі, яка може виконувати присвоювання. Спочатку виконуються операції, які стоять праворуч від знака «: =», а потім результат присвоюється змінної, що стоїть зліва від знака присвоювання. Знак присвоювання показує, що ділянку пам'яті комп'ютера, в якій зберігається значення зазначеної змінної, треба змінити на задане значення, на значення заданої змінної або значення обчисленого виразу.
Оператори введення-виведення. Стандартні процедури введення даних використовуються для визначення початкових значень певних змінних величин і складаються з імені процедури і списку введення, який містить імена змінних, значення яких будуть вводитися з клавіатури або з файлу, тобто змінним будуть присвоюватися якісь певні значення.
Найчастіше для визначення початкових значень зручніше користуватися командою введення, а не командою присвоювання, тому що при необхідності використання програми з іншими початковими даними не доводиться змінювати текст програми.
Якщо в записі алгоритму варто команда введення, то його виконання переривається і управління передається програмі, яка може здійснити введення даних. Після введення даних управління передається наступній команді алгоритму.
Мовою Паскаль процедура введення даних має вигляд:
READ (список введення);
READLN (список введення).
Під час виконання процедур READ і READLN програма переходить в стан очікування введення даних. Якщо в списку введення вказано кілька змінних, то їх можна вводити в одному рядку, відділяючи один від одного символом «пробіл», або в окремих рядках (в стовпчик), завершуючи введення кожного значення клавішею Enter.
Робота процедури не завершиться, поки не будуть введені значення для всіх змінних, зазначених у списку. Тип значень, які вводяться, має збігатися з тим, який має відповідна змінна.
Оператор READLN відрізняється від оператора READ тим, що після введення необхідного числа даних курсор переміщається на наступний рядок.
Якщо введення даних здійснюється з клавіатури, то список введення - це список змінних, тобто послідовність імен змінних, розділених комами. Якщо введення здійснюється з файлу, то в списку введення перша змінна - файлова, пов'язана з ім'ям реального файлу.
Стандартні процедури виведення результатів обчислень використовуються для виведення їх значень на екран, принтер або у файл. Мовою Паскаль процедури виведення мають вигляд:
WRITE (список виведення);
WRITELN (список виведення).
Список елементів виведення значно ширше, ніж в процедурах введення. У нього можуть входити:
• ідентифікатори величин, значення яких будуть виводитися на відповідний пристрій або в файл;
• вираження, значення яких спочатку будуть обчислені, а потім виведені на пристрій;
• стали величини (числові, символьні, рядкові).
Різниця між WRITE і WRITELN полягає в тому, що висновок оператором WRITE починається з поточного місця розташування курсора на екрані монітора і курсор після закінчення виведення залишається в тому ж рядку. Оператор WRITELN виводить значення з поточного місця, а потім курсор переміщається на наступний рядок. Можна використовувати оператор WRITELN без списку виведення для переміщення курсору на новий рядок.
Якщо висновок здійснюється на екран монітора, то список виведення - це список змінних, або послідовність імен змінних, констант або виразів, розділених комами. Якщо висновок здійснюється в файл, то в списку виведення перша змінна - файлова, пов'язана з ім'ям реального файлу.
У команді після виведення елемента списку виведення через двокрапку можна вказати формат виводу, тобто ширину поля екрану, на якому будуть розташовуватися значення. При виведенні дійсних даних можна вказати також кількість десяткових цифр у дробовій частині, яку треба вивести на екран.
Приклад: write (А: 10: 3, В: 8).
Оператор виклику допоміжного алгоритму. У Паскалі реалізовані підпрограми-процедури та підпрограми-функції. Виклик підпрограми здійснюється за її імені із зазначенням фактичних параметрів. При цьому на місці фактичних аргументів можуть бути конкретні значення, імена фактичних змінних, вирази, а на місці результатів - тільки імена фактичних змінних. При цьому кількість, типи і призначення формальних і фактичних параметрів у відповідних списках параметрів повинні збігатися.
Програми з розгалуженням
Команди розгалуження - це складові командами, у яких на відміну від простих команд присутні умови, в залежності від істинності яких виконуються або не виконуються оператори, що входять до складу команди розгалуження.
Повне і неповне розгалуження. У Паскалі реалізовано повне і неповне розгалуження, а також команда вибору, реалізована як послідовне виконання декількох структур розгалуження і яка передбачає вибір з кількох можливих варіантів дій.
1. Конструкція «If - Then» - неповне розгалуження використовується в тому випадку, коли певні дії тільки в разі виконання умови.
IF умова> THEN оператор>;
Конструкція «If - Then - Else» - повне розгалуження використовується в тому випадку, коли визначені різні дії в разі виконання і невиконання умови.
IF умова> THEN оператор> ELSE оператор>;
2. Конструкції «Case - Of» неповний вибір або «Case - Of - Else» - повний вибір використовуються в тому випадку, коли визначені різні дії в разі кількох виходів (замінюють конструкції з вкладених операторів if).
CASE порядкова змінна> OF
значення>: оператори>
ELSE оператор>;
END.
Прості і складові умови. Висловлювання, яке може бути істинним (правильним) або хибним (неправильним) називається умовою. Просте умова - це висловлювання, в якому два вирази, з'єднані знаком операції відносини. Складена умова - це висловлювання, в якому дві або більше простих умов з'єднані знаками логічних операцій.
У мові програмування Паскаль реалізовані операції відношення:> - більше; - менше; = - одно;> - не дорівнює;> = - «не менше»; = - «не більше»; і логічні операції: not - «ні»; and - «і»; or - «або».
Висловлення - це деяке твердження, щодо якого можна сказати, що воно або істинно, або хибно. Таким чином, кожному висловлюванню можна приписати «0» (помилково) або «1» (істинно). Приклад: «5 - просте число» - справжнє, «2 = 3 + 5» - хибне висловлювання.
За допомогою логічних операцій можна будувати з одного висловлювання інші. Побудова з даного (даних) висловлювання нового висловлювання називається логічною операцією. Знаки логічних операцій називають логічними зв'язками. Логічні операції найчастіше описуються за допомогою таблиць істинності.
Таблиці істинності для операцій «інверсії» (заперечення), «кон'юнкції» (логічне множення, або-логічне «і»), диз'юнкції (логічне додавання, або логічне «або»).
Логічні вирази - це вирази, що складаються з висловлювань, які можуть бути з'єднані логічними зв'язками. Ці вирази набувають логічне значення «ложно» або «істинно»). Логічні вирази можуть бути простими і складеними. У простому логічному виразі використовуються змінні і константи логічного типу, операції порівняння. Зв'язка простих логічних виразів за допомогою логічних операцій утворює складений логічний вираз. Прості вирази записуються в складових виразах в круглих дужках.
циклічні програми
Циклічними програмами називають програми, в яких реалізований команди циклу.
У Паскалі передбачено три різновиди операторів циклу: цикл з передумовою, цикл з умовою поста, цикл з лічильником (з покрокової зміною аргументу). Також реалізована робота з вкладеними циклами. Вкладені цикли - циклічні процеси, що допускають укладеність одних циклів в інші.
Цикл з передумовою (або цикл-«поки») - це цикл, в якому тіло циклу виконується тільки в разі виконання умови, заданого перед тілом циклу. Якщо умова стає невірною, то робота циклу припиняється і керування передається оператору, наступному за оператором циклу.
Мовою Паскаль оператор циклу з передумовою ще називається «циклом While-Do».
WHILE умова> DO оператор>;
Приклад: обчислення суми перших 100 натуральних чисел методом послідовного додавання.
m: = 1; S: = 0;
WHILE m = 100 DO
begin
S: = S + m;
m: = m + 1;
end;
Цикл з умовою поста (або цикл-«до») - це цикл, в якому тіло циклу виконується до тих пір, поки умова, заданий після тіла циклу, не стане правильною. Якщо умова стає правильною, то робота циклу припиняється і керування передається оператору, наступному за оператором циклу.
Мовою Паскаль оператор циклу з умовою поста ще називається «цикл Repeat-Until».
REPEAT оператор> UNTIL умова>;
Приклад: обчислення суми перших 100 натуральних чисел методом послідовного додавання.
m: = 0; S: = 0;
REPEAT
m: = m +1;
S: = S + m;
UNTIL m> = 100;
Цикл з лічильником (з покрокової зміною аргументу) - це цикл, в якому тіло циклу виконується заздалегідь відому кількість разів. У різних алгоритмічних мовах реалізація цього циклу може передбачати використання аргументів різних типів, зміні аргументу на різний крок, діапазон зміни аргументу і т. Д.
Цикл з лічильником аргументу реалізується таким чином:
1) аргументу надається початкове значення;
2) якщо значення входить в заданий діапазон, то виконується тіло циклу;
3) аргумент змінюється на заданий крок; виконується 2);
4) якщо значення не входить в заданий діапазон, то виконання циклу припиняється і керування передається оператору, наступному за оператором циклу.
У мові Паскаль реалізовані два оператора циклу з покрокової зміною аргументу: «цикл For» і «цикл For-DownТо».
FOR лічильник циклу>: = початкове значення> TO кінцеве значення> DOоператор>; (Цикл з кроком 1),
FOR лічильник циклу>: = початкове значення> DOWNTO кінцеве значення> DOоператор>; (Цикл з кроком -1),
де лічильник циклу> - змінна порядкового типу,
початкове значення> і кінцеве значення> - вираз того ж типу, що і лічильник циклу> (діапазон зміни лічильника циклу),
оператор> - простий або складений оператор.
Приклади: обчислення суми перших 100 натуральних чисел методом послідовного додавання.
а) S: = 0;
for m: = 1 to 100 do
S: = S + m;
б) S: = 0;
for m: = 100 downto 1 do
S: = S + m;
Під час реалізації циклу з покрокової зміною аргументу в Паскалі необхідно заздалегідь знати кількість повторень тіла циклу і пам'ятати про можливість зміни лічильника циклу тільки на 1 або-1.
масиви даних
Масив - це структурована сукупність фіксованого числа елементів одного типу, доступ до яких здійснюється за допомогою індексів. Елементи масиву називаються індексними змінними. За кількістю індексів, які потрібно вказати для доступу до окремого елементу масиву, розрізняють одномірні, двовимірні. n-мірні масиви. Вимоги до індексів різні в різних алгоритмічних мовах. У Паскалі індекс - це змінна порядкового типу.
Опис масиву містить ім'я масиву (ідентифікатор), принцип індексації елементів (діапазон зміни індексів), тип елементів масиву.
VAR ім'я_масіву>: ARRAY діапазони зміни індексів> OF тіп_даніх>;
Масив називається одновимірним (лінійна таблиця), якщо для доступу до його елементів досить одного індексу.
Наприклад, одновимірний масив з 8 дійсних чисел в Паскалі можна оголосити таким чином:
• VAR Name: ARRAY [1..8] OF real;
• Const N = 8;
VAR Name: ARRAY [1..N] OF real;
• TYPE MASSIV = ARRAY [1..8] OF real;
VAR Name: MASSIV;
Масив називається двовимірним (матриця), якщо для доступу до його елементів необхідно вказати значення двох індексів. Перший індекс вказує номер рядка, а другий - номер стовпця в цьому рядку.
При розподілі пам'яті в описовій частині програми під масив резервується стільки місця, скільки передбачає вказану кількість елементів масиву, враховуючи тип елементів. Межі зміни індексів повинні бути постійними величинами, а не змінними, інакше буде невідомо, скільки місця необхідно відвести в пам'яті для такого масиву.
У пам'яті комп'ютера елементи одновимірних масивів розташовані послідовно. Двовимірні масиви розташовуються таким чином: спочатку елементи першого рядка, потім другий і т. Д.
Роботу з масивами можна умовно розділити на три частини:
• формування масиву;
• опрацювання масиву;
• висновок масиву.
Формування масиву. Формування значень елементів масиву можна виконувати таким чином:
• введення значень елементів масиву з клавіатури або з файлу;
• формування значень випадковим чином, за допомогою функції-генератора випадкових чисел Random;
• обчислення значень елементів масиву за формулою.
Обробка масиву. Класичними завданнями для роботи з масивами можна назвати:
• пошук заданого елемента в масиві;
• знаходження суми (твори) елементів масиву;
• пошук максимального (мінімального) елемента в масиві;
• впорядкування масиву за ознакою (наприклад, за зростанням або спаданням і ін.).
Одним з найскладніших завдань є впорядкування елементів масиву. Для вирішення цього завдання існує декілька алгоритмів.
Сортування вибором:
1. Встановити номер найбільшого елемента масиву.
2. Поміняти місцями найбільший та останній елементи.
3. Повторити 1 і 2 над остачею масиву (без останнього елемента).
Застосовувати цей метод до елементів масиву, що залишилися, поки залишок не скоротиться до одного елемента.
Аналогічно сортування вибором можна застосувати до найменшого елемента, змінюючи його з першим. В результаті все одно отримаємо зростаючу (незменшувану) послідовність елементів масиву.
Обмінне сортування ( «бульбашка»):
1. Порівняти два поруч розташованих елементів.
2. Якщо пара порушує потрібний порядок проходження, елементи міняють місцями.
Порівняння відбувається до кінця масиву. Обмін здійснюється до тих пір, поки прохід по масиву не викличе ніякого обміну.
Існують і інші методи сортування масивів: метод уставки, швидке сортування і т.д.
Висновок масиву. Висновок елементів одновимірного масиву на екран можна виконувати в рядок:
For i: = 1 to n do Write (mas [i]);
або в стовпчик:
For i: = 1 to n do Writeln (mas [i]).
Для виведення елементів двовимірного масиву у вигляді двовимірної таблиці (матриці) можна використовувати таку конструкцію:
For i: = 1 to n do
Begin
For j: = 1 to m do
Write (mas [i, j]);
Writeln;
End.