- •Історична довідка
- •Характеристика й особливості мови
- •Алфавіт мови
- •Службові (зарезервовані) слова.
- •Структура програми мови Turbo Pascal
- •Розділ оголошень і угод
- •Розділ текстів процедур і функцій
- •Розділ основного блоку програми
- •Процедури введення-виведення. Деякі вбудовані функції Турбо-Паскаля.
- •Функції числових параметрів.
- •Базові управляючі конструкції Турбо-Паскаля Оператори умовного переходу.
- •1. Оператор if.
- •2. Оператор вибору (case)
- •Оператори циклів у Паскалі
- •1. Цикл із післяумовою (Repeat)
- •2. Цикл із предумовою (While)
- •3. Цикл із лічильником або параметром (For)
- •Концепція типів даних. Типи даних в мові Pascal
- •Дійсні типи
- •Бульовий (логічний) тип
- •Символьні і рядкові змінні
- •1. Символьний тип
- •2. Рядковий тип
- •Перерахований та обмежений типи
- •1. Перерахований тип
- •2. Обмежений тип
- •1. Поняття масиву. Одномірні масиви
- •2. Багатомірні масиви
- •3. Сортування і пошук
- •Множинний тип
- •Тип запис
- •Процедури і функції
- •Формальні і фактичні параметри. Механізм параметрів
- •Параметри - значення
- •Параметри-змінні
- •Безтипові параметри
- •Приведення типів.
- •Процедурні типи
- •Рекурсія Рекурсивні визначення
- •Рекурсивні підпрограми
- •Алгоритми з поверненням. Розв’язок задачі про рух коня
- •Алгоритми з поверненням. Розв’язок задачі про вісьмох ферзів
- •If підходить тнеn
- •Модулі в Турбо Паскалі
- •Модуль crt
- •1. Керування екраном
- •2. Робота з клавіатурою
- •3. Інші можливості
- •Графіка в Турбо Паскалі
- •1. Включення і вимикання графічного режиму.
- •2. Побудова елементарних зображень
- •3. Виведення текстової інформації.
- •Файли в мові програмування Pascal
- •Установчі і завершальні операції
- •Операції введення-виведення
- •Обробка помилок введення-виведення
- •Переміщення по файлу
- •Спеціальні операції
- •Текстові файли
- •1. Оголошення файлової змінної і прив'язка до файлу на диску
- •2. Читання даних з файлу
- •3. Запис даних у файл
- •Двійкові файли
- •1. Типізовані файли
- •2. Нетипізовані файли
- •Статичні і динамічні змінні
- •Покажчики
- •Стан покажчика
- •Установка розмірів динамічної пам'яті
- •Сумісність і перетворення посилкових типів
- •Динамічні структури даних
- •Динамічні змінні: інші види списків, стек і черга.
- •1. Інші види списків
- •2. Стек і черга
- •Дерева і пошук у деревах
- •1. Визначення й описи структур даних
- •1. Масив
- •2. Список
- •3. Дерево
- •2. Алгоритми
- •1. Лінійний пошук у масиві
- •2. Двійковий пошук
- •3. Лінійний пошук у списку
- •Змішані таблиці
- •Об’єктно-орієнтоване програмування. Що таке об’єктно-орієнтоване програмування
- •Інкапсуляція
- •Спадкування
- •Віртуальні методи і поліморфізм
- •Конструктори, динамічні об'єкти і деструктори
- •Поля і методи: сховані і загальнодоступні
- •Системно- залежні розширення
- •Налагодження змінних
- •Оверлеї
- •Переривання і системні виклики
- •Доступ до пам'яті і портів
- •Перевизначення переривань
Базові управляючі конструкції Турбо-Паскаля Оператори умовного переходу.
1. Оператор if.
Іноді потрібно, щоб частина програми виконувалася не завжди, а лише при виконанні деякої умови (а при невиконанні цієї умови виконувалася інша частина програми). У цьому випадку користаються оператором умовного виконання, що записується в наступному виді:
if <умова> then <оператор1> else <оператор2>;
Під оператором розуміється або одиночний оператор (наприклад, присвоювання, виклику процедури), або так званий складений оператор, що складається з декількох простих операторів, поміщених між словами begin і end. Важливо помітити, що перед else не ставиться крапка з комою. Частина else може бути і відсутньою.
Приклад 1: нехай потрібно знайти число m=max(a,b). Цій задачі відповідає наступний фрагмент програми на Паскалі:
if a>b then m:=a else m:=b;
Приклад 2: (без else) нехай дане ціле число i. Потрібно залишити його без зміни, якщо воно ділиться на 2, і відняти з нього 1, якщо це не так.
var i: integer;
.......
if i mod 2 = 1 then i:=і-1; {else - нічого не робити}
Примітка: у прикладі використана операція взяття залишку від ділення (mod), для отримання неповної частки в Турбо-Паскалі використовується div.
Приклад 3: (з використанням складеного оператора). Нехай дані дві змінні типу real. Потрібно поміняти місцями значення цих змінних, якщо a1>a2.
var a1,a2,buf :real;
.........
if a1>a2 then begin
buf:=a1;
a1:=a2;
a2:=buf;
end;
Наступний приклад використовує вкладені операторы if.
Приклад 4: Пошук коренів квадратного рівняння.
program SqEquation;
var a,b,c,d: real;
begin
writeln;
write('Уведіть коефіцієнти a,b,c квадратного рівняння : ');
readln(a,b,c);
d:=sqr(b)-4*a*c;
if d>=0 then
if d=0 then writeln('Єдиний корінь: x=',-b/(2*a):8:3)
else writeln('Два корені : x1=',(-b+sqrt(d))/(2*a):8:3,, x2=',(-b-sqrt(d))/(2*a):8:3)
else {d<0} writeln('Корнів немає');
readln;
end.
Щоб не заплутатися в структурі цієї програми, варто пам'ятати таке правило: else завжди відноситься до останнього оператора if. Якщо ж у програмі потрібно, щоб else відносилося до одного з попередніх if, то прийдеться скористатися складеним оператором:
Приклад 5: користувач уводить натуральне число, задача програми — поставити слово «учень» у потрібну форму в сполученні з числівником (наприклад: 1 учень, 3 учня, 9 учнів і т.п.)
begin
write('Число учнів (1..20) --> '); readln(n);
write(n,' учень');
if n<5 then begin
if n>1 then writeln('а');
end
else
writeln('ов');
readln;
end.
У цьому прикладі довелося використовувати складений оператор (begin ... end;) для того щоб частина else відносилася не до оператора if n>1, а до if n<5.
2. Оператор вибору (case)
Крім оператора умовного переходу і циклів у Турбо Паскалі мається ще одна керуюча конструкція, одна з назв якої — оператор вибору. Насправді це ускладнений оператор if, він дозволяє програмі виконуватися не двома способами, у залежності від виконання умови, а декількома, у залежності від значення деякого виразу. У загальному виді цей оператор виглядає так:
case Вираз of
Варіант1: Оператор1;
Варіант2: Оператор2;
...
Варіант: Оператор;
[else Оператор1;]
end;
(Пояснення: квадратні дужки означають те, що частина else може бути відсутньою).
Вираз в найпростіших випадках може бути цілочисельним чи символьним. Як варіанти можна застосовувати:
Константний вираз такого ж типу, як і вираз після case. Константний вираз відрізняється від звичайного тем, що не містить змінних і викликів функцій, тим самим він може бути обчислений на етапі компіляції програми, а не під час виконання.
Інтервал, наприклад: 1..5, 'а'..'z'.
Список значень чи інтервалів, наприклад: 1,3,5..8,10,12.
Виконується оператор case так: обчислюється вираз після слова case і один по одному перевіряється, підходить отримане значення під який-небудь варіант, чи ні. Якщо підходить, то виконується відповідний цьому варіанту оператор, інакше — є два варіанти. Якщо в операторі case записана частина else, то виконується оператор після else, якщо ж цієї частини ні, те не відбувається взагалі нічого.
Розглянемо приклад. Нехай користувач уводить ціле число від 1 до 10, програма повинна приписати до нього слово «учень» з необхідним закінченням (нульове, «а» чи «ов»).
program SchoolChildren;
var n: integer;
begin
write('Число учнів --> '); readln(n);
write(n,' учень');
case n of
2..4: write('а');
5..10: write('ов');
end;
readln;
end.
Можна також удосконалити програму для довільного натурального n:
write(n,' учень');
case n mod 100 of
11..19: write('ов');
else case n mod 10 of
2..4: write('а');
0,5..9: write('ов');
end;
end;