Оператори умовного переходу

Begin

Begin

END.

PROCEDURE

(function) Заголовок процедури (функції);

LABEL Підрозділ оголошення локальних міток;

CONST Підрозділ оголошення локальних констант;

type Підрозділ оголошення локальних типів;

VAR Підрозділ оголошення локальних змінних;

begin Основний блок або процедури функції;

END;

РОЗДІЛ ОСНОВНОГО БЛОКУ ПРОГРАМИ

BEGIN Основний блок програми;

Розглянемо найбільш важливі частини вищеописаних блоків. Під заголовком програми розуміється ім'я, що допомагає визначити її призначення. Ім'я, чи ідентифікатор, будується за наступними правилами: воно може починатися з великої чи малої букви латинського алфавіту або знака «_», далі можуть стояти букви, цифри чи знак «_»; усередині ідентифікатора не може стояти пробіл. Після імені програми варто поставити «;», цей знак служить у Паскалі для поділу послідовних інструкцій. Помітимо, що ім'я програми може не збігатися з ім'ям відповідного файлу на диску.

Глобальні директиви компілятора

У цьому розділі програми компілятору можна дати вказівки, що визначають режими його роботи при трансляції програми. Ці вказівки оформляються в тексті програми як коментарі, що починаються парою символів ({$) і закінчуються символом (}). Такі вказівки можуть містити "замовлення" на включення в текст програми фрагментів інших програм (з відповідних файлів), інформацію чи відомості про необхідності використання арифметичного сопроцесора.

Оператор USES

Оператор USES відіграє важливу роль у підключенні до тексту програми системних модулів з бібліотек. У цьому операторі Ви вказуєте компілятору, з якої бібліотеки використовує модулі програма. Поняття "бібліотека", "модуль", "блок" складають основу термінології програмування на Паскалі. Бібліотека включає набір модулів, кожен з яких, має власне ім'я, компілюється окремо і до нашої програми підключається вже як "чорний ящик" з відомим інтерфейсом. Кожен модуль (блок (UNIT), як його називають на Паскалі) являє собою програму, що включає декларації типів і змінних, процедури і функції.

Опис міток

Опис міток уводить сукупність ідентифікаторів і/або цілих чисел, призначених для організації послідовності обчислень. За допомогою міток можна відзначити (указати) ті оператори, на які буде передане керування з інших точок програми. Передача керування на позначений оператор реалізується за допомогою спеціального оператора переходу.

Після слова const містяться описи сталих, котрі будуть використані в програмі, наприклад:

const Zero = 0;

pi = 3.1415926;

my_const = -1.5;

Hello = 'Привіт!';

Визначення типів

Визначення типів призначене для завдання конкретних множин значень. Зазначені множини позначаються іменами (ідентифікаторами) і надалі можуть служити для опису змінних.

Оголошення глобальних змінних

За словом var розташовують оголошення змінних, котрі знадобляться нам при написанні програми. Змінні Паскаля можуть зберігати дані різної природи: числа, рядки тексту, окремі символи і т.п. Нижче приводиться частина типів змінних, котрі можна застосовувати.

Назва типу Можливі значення Приклади значень
integer цілі: -32768... 32767 12, -10000
real дійсні (по модулі): 2,9x10-39... 1,7x1038 -9.81, 6.02e-23
string[n] рядок до n символів довжиною, якщо [n] не зазначено, то до 255 ‘abcde’, ‘привіт’
char одиночний символ ‘F’, ‘!’, ’_’,’ю'

Оголошення змінних записуються в наступній формі:

var <змінна>: <тип>;

Якщо описуються декілька змінних одного типу, то досить записати їхні імена через кому, а після двокрапки поставити загальний тип.

Приклади оголошення:

var Number: integer;

d,l: real;

Name: string [20];

Line: string;

Key1,Key2: char;

Опис процедури або функції

Нарешті, опис процедури або функції визначає частину програми як окрему синтаксичну одиницю і зіставляє з нею ім'я. Згодом дії, зосереджені в процедурі (функції), можуть бути виконані ("викликані") за допомогою вказівки її імені. Крім дій, опис процедури (функції) може містити сукупність описів локальних об'єктів, що утворять власний контекст імен. Процедури і функції є основним засобом структурування програми.

Блок основної програми.

Тут, між словами begin і end. розташовуються команди (точніше, оператори), що будуть виконуватися один за іншим при запуску програми. Розглянемо найпростіші типи операторів на наступному прикладі:

program First;

const a2 = 3;

a1 = -2;

a0 = 5;

var x,f: real;

write('Введіть значення х ');

readln(x);

f:= a2*x*x+a1*x+a0;

writeln(‘Значення квадратного тричлена: ’,f);

end.

Перший рядок програми виводить на екран напис «Введіть значення х», для цього використовується процедура write написана розроблювачами Турбо Паскаля, тобто набір команд, невидимий для нас, але існуючий реально в надрах системи Турбо Паскаль. Як параметр цієї процедури використовується наш рядок. Параметри завжди записуються в круглих дужках, апострофи означають, що параметр має рядковий тип. Отже, у першому рядку ми бачимо так називаний оператор виклику процедури. Кожен оператор відокремлюється від наступного символом «;». В другому рядку викликається процедура введення readln(x), яка чекає, поки користувач набере значення x із клавіатури і натисне клавішу «Enter», а потім переводить курсор на наступну рядок (ln (Line (рядок). У третьому рядку обчислюється значення тричлена і записується в змінну f; цей оператор називається оператором присвоювання, і позначається символом ":=". В останньому рядку на екран виводиться рядок «Значення квадратного тричлена:» і значення змінної f. Нескладно помітити, що тут процедурі writeln передається вже не один, а два параметри, причому вони можуть мати різні типи. Узагалі, процедури введення і виведення (тобто write, writeln, read, readln) можуть мати будь-яке число параметрів різних типів, параметрами можуть бути змінні, числа, рядки, а також вирази. Використовуючи вираз при виведенні, можна замінити два останні рядки нашої програми одним:

writeln('Значення квадратного тричлена: ', a2*x*x+a1*x+a0);

В арифметичних виразах на Паскале використовуються наступні знаки для позначення операцій: +, -, *, /. Для визначення порядку дій використовуються круглі дужки відповідно до загальновизнаних математичних правил.

Зауваження про імена. Для позначення змінних забороняється використання ряду слів, називаних зарезервованими, вони грають у мові особливу роль. Нам уже зустрічався ряд зарезервованих слів: program, begin, end, string, const, var, і т.п.


Процедури введення-виведення. Деякі вбудовані функції Турбо-Паскаля.

1. Процедури введення-виведення. Майже кожна програма повинна спілкуватися з користувачем, тобто виводити результати своєї роботи на екран і запитувати в користувача інформацію з клавіатури. Для того щоб це стало можливим, у Турбо-Паскалі маються спеціальні процедури (тобто невеликі допоміжні програми), називаються вони процедурами введення-виведення. Для того щоб змусити процедуру працювати в нашій програмі, потрібно написати її ім'я, за яким у дужках, через кому перелічити параметри, які ми хочемо їй передати. Для процедури виведення інформації на екран параметрами можуть служити числа або текстові повідомлення, які повинна друкувати наша програма на екрані. Опишемо призначення цих процедур.

· write(p1,p2,... pn); – виводить на екран значення виразів p1,p2,... pn, кількість яких (n) необмежена. Вирази можуть бути числові, строкові, символьні і логічні. Під виразом будемо розуміти сукупність деяких дій, застосованих до змінних, чи константам літералам, наприклад: арифметичні дії і математичні функції для чисел, функції для обробки рядків і окремих символів, логічні вирази і т.п. Можливе форматне виведення, тобто явна вказівка того, скільки виділяти позицій на екрані для виведення значення. Приклад для дійсних типів: write(r+s:10:5); – вивести значення виразу r+s з виділенням для цього 10 позицій, з них 5 – після коми. Для інших типів усе значно простіше: write(p:10); – вивести значення виразу p, виділивши під це 10 позицій. Виведення на екран у будь-якому випадку виконується по правому краю виділеного поля.

· writeln(p1,p2,... pn); – аналогічно write, виводить значення p1,p2,... pn, після чого переводить курсор на новий рядок. Зміст параметрів – той же, зауваження про форматне виведення залишаються в силі. Існує варіант writeln; (без параметрів), що означає лише переведення курсору на початок нового рядка.

· readln(v1,v2,...vn); – уведення з клавіатури значень змінних v1,...vn. Змінні можуть мати рядковий, символьний чи числовий тип. При введенні варто розділяти значення пробілами, символами табуляції чи переводу рядка (тобто, натискаючи Enter).

· read(v1,v2,...vn); – по призначенню подібний з readln; відмінність полягає в тому, що символ переводу рядка (Enter), натиснутий при завершенні введення, не «проковтує», а чекає наступного оператора введення. Якщо їм виявиться оператор введення рядкової змінної або просто readln; то рядковій змінний буде присвоєне значення порожнього рядка, а readln без параметрів не стане чекати, поки користувач натисне Enter, а зреагує на уже введений.

Приклад. Програма просить користувача ввести з клавіатури два цілих числа і друкує на екрані їхню суму:

program PrintSum;

var a,b: integer;

write('Введіть два числа:');

readln(a,b);

writeln('Сума a і b дорівнює ',a+b);

readln;

end.

2. Функції числових параметрів.

Назва Значення
abs(x) модуль x
cos(x) косинус x
frac(x) дробова частина x
int(x) ціла частина x (тобто найближче ціле, що не перевершує x)
pi число p
round(x) x, округлене до цілого
sin(x) синус x
sqr(x) квадрат x
sqrt(x) квадратний корінь з x
trunc(x) число, отримане з x відкиданням дробової частини

Базові управляючі конструкції Турбо-Паскаля

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;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: