Структура програми на Турбо Паскаль
Програма мовою Паскаль складається із заголовка, розділів описів та розділу операторів. Заголовок програми містить ім'я програми, наприклад:
Описи можуть включати:
- розділ бібліотек (модулів), що підключаються;
- розділ опису міток;
- розділ опису констант;
- розділ опису типів;
- розділ опису змінних;
- розділ опису процедур та функцій.
Розділ опису модулів визначається службовим словом USES і містить імена модулів, що підключаються (бібліотек) як входять до складу системи Turbo Pascal, так і написаних користувачем. Розділ опису модулів має бути першим серед розділів описів. Імена модулів відокремлюються один від одного комами:
Будь-який оператор у програмі може бути позначений міткою. Ім'я мітки визначається за правилами освіти ідентифікаторів Турбо Паскаль. В якості мітки можуть використовуватися довільні цілі числа без знака, що містять не більше чотирьох цифр. Мітка ставиться перед оператором і відокремлюється від нього двокрапкою. Всі мітки, що використовуються в програмі, повинні бути перераховані в розділіопису міток, наприклад:
label 3, 471, 29, Quit;
Опис констант дозволяє використовувати імена як синоніми констант, їх необхідно визначити в розділі опису констант :
const K = 1024; MAX = 16384;
У розділіопису змінних необхідно вказати всі змінні, що використовуються в програмі, і визначити їх тип:
var P, Q, R: Integer; A, B: Char; F1, F2: Boolean;
Опис типів, процедур та функцій буде розглянуто нижче. Окремі розділи описів можуть бути відсутніми, але слід пам'ятати, що в Паскаль - програмі повинні бути обов'язково описані всі компоненти програми.
Розділ операторів є складовим оператором, який містить між службовими словами
послідовність операторів. Оператори відокремлюються один від одного символом;. Текст програми закінчується символом крапка.
program Primer; var x,y,s: integer;begin WriteLn('Введіть через пропуск два числа'); ReadLn(x,y); s: = x + y; WriteLn('Сума чисел дорівнює ',s);end.
Ця програма запитує з клавіатури два числа, знаходить їх суму та виводить відповідь. Тепер зробимо так, щоб програма спочатку очищала екран, виконувала свої дії, а в кінці роботи дозволяла користувачеві подивитися результат, очікуючи натискання клавіші.
program Primer; uses Crt; var x, y, s: integer; begin ClrScr; WriteLn('Введіть через пропуск два числа'); ReadLn(x,y); s: = x + y; WriteLn('Сума чисел дорівнює',s); ReadKey; end.
- емулювати математичний співпроцесор;
- формувати далекий тип виклику процедур та функцій;
- Використовувати математичний співпроцесор;
- перевіряти вихід за межі діапазонів.
Деякі ключі компіляції можуть містити параметр, наприклад:
- включити в текст програми, що компілюється, названий файл.
Організація розгалужень у програмі.
У мові Паскаль використовується два оператори реалізації умовних переходів - IF і CASE, і навіть оператор безумовного переходу GOTO. Вони дають змогу порушити послідовний порядок виконання інструкцій програми.
Оператор умовного переходу
Оператор умовного переходу в Турбо Паскаль має вигляд:
ifумоваthenоператор 1elseоператор 2;
умова- це логічний вираз, залежно від якого вибирається одна з двох альтернативних гілок алгоритму. Якщо значення умови є істинним (TRUE), то будевиконуватисяоператор 1, записаний після ключового слова then. В іншому випадку буде виконаний оператор 2 , наступний за словом else, при цьому оператор 1 пропускається. Після виконання зазначених операторів програма переходить до виконання команди, що стоїть безпосередньо після оператора if.
Необхідно пам'ятати, що перед ключовим словом else крапка з комою ніколи не ставиться!
else - частина в операторі if може бути відсутнім:
ifумоваthenоператор 1;
Тоді у разі невиконання логічної умови керування відразу передається оператору, що стоїть у програмі після конструкції if.
Слід пам'ятати, що синтаксис мови допускає запис лише одного оператора після ключових слів then і else, тому групу інструкцій обов'язково треба об'єднувати в складовий оператор (окаймувати операторними дужками begin . end). В іншому випадку виникає найчастіше логічна помилка програми, коли компілятор мови помилок не видає, але програма працює неправильно.
if x > 0 then modul := x else modul := -x; if k > 0 then WriteLn('k - число позитивне'); if min > max then begin t := min; min: = max; max := t; end;
Оператор вибору
Часто виникають ситуації, коли доводиться здійснювати вибір однієї з кількох альтернативних шляхів виконання програми. Незважаючи на те, що такий вибір можна організувати за допомогою оператора if..then, зручніше скористатися спеціальним оператором вибору. Його формат:
caseвиразofваріант:оператор; .варіант:оператор;end;
caseвиразofваріант:оператор; .варіант:оператор; elseоператорend;
вираз, якийзаписується після ключового слова case, називаєтьсяселектором, воно може бути будь-якого типу, що перераховується.варіантскладається з однієї або більшої кількості констант або діапазонів, розділених комами. Вони повинні належати до того ж типу, що й селектор, причому неприпустимо більше однієї згадкиваріантув записі інструкції case. З переліченої множиниоператорівбуде обраний тільки той, перед яким записанийваріант, що збігається зі значенням селектора. Якщо такоговаріантанемає, виконуєтьсяоператор, що йде за словом else (якщо він є).
case ch of 'A'..'Z', 'a'..'z' : WriteLn('Літера'); '0'..'9': WriteLn('Цифра'); '+', '-', '*', '/': WriteLn('Оператор'); else WriteLn('Спеціальний символ')end;
Оператор безумовного переходу
Крім операторів умовного переходу, існує також оператор безумовного переходу goto. Формат:
Оператор goto переходить під час виконання програми до певного оператора програми, перед яким знаходитьсямітка.Міткаповинна бути описана в розділі опису тегів тієї програми (процедури або функції), в якій вона використовується. Не можна перейти з однієї процедури чи функції до іншої.
Необхідно, щоб у програмі існував оператор, позначений зазначеною міткою. Вона записується перед оператором і відокремлюється від нього двокрапкою.
label 1; begin. goto 1; . 1: WriteLn('Перехід до позначки 1');end.
Цикли
У більшості завдань, що зустрічаються на практиці, необхідно проводити багаторазове виконання певної дії. Така ділянка, що багаторазово повторюється, обчислювального процесу називаєтьсяциклом.
Якщо наперед відома кількість необхідних повторень, то цикл називаєтьсяарифметичним. Якщо ж кількість повторень наперед невідома, то говорять проітераційний цикл.
В ітераційних циклах проводиться перевірка деякої умови, і в залежності від результату цієї перевірки відбувається вихід з циклу, або повторення виконання тіла циклу. Якщо перевірка умови проводиться перед виконанням блоку операторів, такий ітераційний цикл називається цикломз передумовою (цикл "поки"), а якщо перевірка проводиться після виконання тіла циклу, то це цикл>з умовою (цикл "до").
Особливість цих циклів полягає в тому, що тіло циклу з постумовою завжди виконується хоча б один раз, а тіло циклу з передумовою може жодного разу не виконатись. Залежно від розв'язуваної задачі необхідно використовувати той чи інший вид ітераційних циклів.
Арифметичні цикли
forзмінна:=значення 1toзначення 2doоператор
forзмінна:=значення 1downtoзначення 2doоператор
Оператор for викликаєоператор, що знаходиться після слова do, по одному разу для кожного значення в діапазоні відзначення 1дозначення 2.
Змінна циклу, початкове та кінцеве значення повинні мати порядковий тип. Зі словами to, значення змінної циклузбільшується на 1 при кожній ітерації циклу. Зі словом downto, значення змінної циклузменшується на 1 при кожній ітерації циклу. Не слід самостійно змінювати значення керуючої змінної всередині циклу.
Як і у випадку використання оператора умовного переходу, слід пам'ятати, що синтаксис мови допускає запис лише одного оператора після ключового слова do, тому якщо ви хочете в циклі виконати групуоператорів, обов'язково треба об'єднати їх у складовий оператор (обгортати операторними дужками begin . end). В іншому випадку буде зроблена логічна помилка програми.
Приклад 1. Квадрати чисел від 2-х до 10-ти.
for x:=2 to 10 do WriteLn(x*x);
Приклад 2. Латинський алфавіт.
for ch:='A' 'Z' do Writeln(ch);
Приклад 3. Використання циклу з downto.
for i:=10 downto 1 do WriteLn(i);
Приклад 4. Використання складового оператора.