Оператори goto, break, continue та припинення програми
Паскаль є структурною мовою програмування. Незважаючи на це, в ньому є ряд особливостей, які широко використовувалися на початкових етапах розвитку програмування. У ті часи ідея про те, що програма може розглядатись як система логічно пов'язаних блоків, ще не оформилася. Тому, якщо потрібно змінити лінійний хід програми, програмісти використовували оператор безумовного переходу goto.
Пізніше більшість програмістів відмовилися від регулярного використання оператора goto, проте трапляються випадки, коли він може бути корисним.
Необхідно знати, що можна обійтися без оператора goto . Його використання ускладнює читання та розуміння програми.
Оператор goto здійснює перехід до оператора, позначеного спеціальною міткою, яка відокремлюється від самого оператора двокрапкою. Як мітка може бути використане будь-яке ціле число без знака, що містить більше чотирьох цифр або ім'я. Щоб можна було використовувати мітку, вона повинна бути обов'язково оголошена в розділі міток в описовій частині програми. Цей розділ починається службовим словом label, після якого через кому перераховуються мітки.
Щоб перейти до позначеного оператора, використовується оператор переходу, що має такий вигляд: goto мітка;
label goback; var num: real; begin goback: write('Введіть число:'); readln(num); if num < 0 then goto goback; num: = sqrt (num); writeln('Квадратний корінь:', num:5:2); end.
Оператори break і continue
Буває, що мета виконання циклу досягається раніше, ніж його буде припинено за умовою виходу.Так, наприклад, у програмі для визначення простоти числа цикл буде виконуватися n div 2-1 раз, хоча те, що число не є простим, може бути виявлено на перших кроках циклу. Щоб зменшити кількість кроків циклу, можна скористатися оператором goto або сформувати складну умову виконання (припинення) циклу.
Однак існують спеціальні оператори, що використовуються для переривання виконання циклу. Оператор break виконує повний вихід із циклу, тобто. усі можливі ітерації циклу перериваються. Оператор continue перериває лише поточну ітерацію. Break та continue є процедурами, хоча зазвичай їх називають операторами.
Оператори break і continue виконуються в будь-якому з видів циклів (repeat, while, for) і дійсні тільки для внутрішнього циклу. Наприклад, якщо потрібно забезпечити примусовий вихід із подвійного циклу, оператор break повинен бути розташований як у внутрішньому, так і зовнішньому циклі. Оператори break і continue насправді є видозміненими операторами goto з відомою точкою, в яку здійснюється перехід.
У прикладі користувача п'ять разів запитується число тільки в тому випадку, якщо він не вводить нуль.
var num: real; i: integer; begin for i := 1 to 5 do begin write('Введіть число:'); readln(num); if num = 0 then break; writeln(num) end; end.
У прикладі запитуються п'ять чисел і підсумовуються лише позитивні їх.
var num, sum: real; i: integer; begin sum: = 0; for i := 1 to 5 do begin write('Введіть число: '); readln(num); if num < 0 then continue; sum: = sum + num end; write(sum:10:2); end.
Примусове припинення програми
Зазвичай програма завершує роботу після досягнення останнього оператора (тобто. при виході на оператор end з точкою).Якщо виникає необхідність припинити виконання програми десь усередині неї, то можна скористатися процедурою haltяка викликається як окремий оператор. Цю процедуру можна викликати, задаючи в круглих дужках параметр у вигляді цілого невід'ємного числа від 0 до 255. Це значення повертається в операційну систему у вигляді коду помилки (ERRORLEVEL) і може бути проаналізовано операційною системою. Відсутність параметра у процедурі halt відповідає значенню 0 (нормальне завершення програми).
Другою процедурою, за допомогою якої можна припинити виконання програми, є процедура без параметрів exit при її розміщенні у виконаній частині програми (а не в тілі підпрограми). Найчастіше ця процедура застосовується для виходу з підпрограми без припинення виконання програми, що викликає.
Зупинити виконання програми
Доброго дня. Є консольна програма.
У ній є умовний оператор, який перевіряє, чи правильно введено пароль.
Так от, коли я вводжу лівий пароль, програма мені пише "Стійте", але продовжує виконуватися далі.
Підкажіть, як зробити щоб при введенні неправильного пароля, програма завершувала свою роботу і не робила жодних дій.
Дякую.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Program lil;
var a, b, c, d, e:
string;
var s:
string;
begin
writeln('Місто вашого проживання');
readln(a);
writeln('Вулиця, на якій ви живете');
readln(b);
writeln('Номер вашого будинку');
readln(c);
writeln('Номер вашої квартири');
readln(d); e:=
'Місто:'
+ a +
' '
+'Вулиця:'
+ b +
' '
+'Будинок:'
+ c +
' '
+'Квартира:'
+ d +
'';
writeln('Пароль');
readln(s);
if s =
'pascal'
then
writeln('Проходьте')
else
writeln('Стійте');
writeln(e);
readln
end.
Паскаль — Структури програми
Перш ніж ми вивчимо основні будівельні блоки мови програмування Pascal, розглянемо мінімальну структуру програми Pascal, щоб ми могли взяти її як довідковий матеріал у наступних розділах.
Структура програми Pascal
Програма Pascal в основному складається з наступних частин.
- Назва програми
- Використовує команду
- Оголошення типу
- Постійні декларації
- Оголошення змінних
- Оголошення функцій
- Процедури декларації
- Основний програмний блок
- Заяви та вирази в кожному блоці
- Коментарі
Кожна програма на Паскалі зазвичай має заголовок, декларацію та виконуючу частину суворо у цьому порядку. Наступний формат показує основний синтаксис для програми на Паскалі.
program
name of the program>
uses
comma delimited names of libraries you
use>
const
global
constant declaration block>
var
global
variable declaration block>
function
function
declarations,
if
any>
local
variables
>
begin
.
end;
procedure
procedure declarations,
if
any>
local
variables
>
begin
.
end;
begin
main program block starts>
.
end.
the
end
of main program block
>
Pascal Hello World Приклад
Нижче наведено простий паскаль-код, який надрукував би слова Hello, World!
program
HelloWorld;
uses crt;
(*
Here
the main program block starts
*)
begin
writeln('Hello, World!');
readkey;
end.
Це дасть наступний результат.
Давайте подивимося різні частини вищезазначеної програми.
- Перший рядок програми програми HelloWorld; вказує назву програми.
- Другий рядок програми використовує crt; це команда препроцесора, яка говорить компілятору увімкнути модуль crt перед тим, як перейти до фактичної компіляції.
- Наступні рядки, укладені в оператори початку та кінця, є основним програмним блоком. початку та оператора кінця . Проте за оператором завершення, що вказує кінець основної програми, слідує точка (.) Замість точки з комою (;).
- Оператор початку основний блок програми — це місце, де починається виконання програми.
- Рядки всередині (* … *) будуть ігноруватися компілятором, і він був доданий для додавання коментаря у програму.
- Заява writeln («Привіт, мир!»); використовує функцію writeln, доступну Pascal, яка викликає повідомлення «Hello, World!» бути відображеним на екрані.
- Оператор readkey; дозволяє відображати паузу, доки користувач не натисне клавішу. Це частина ХТО. Блок схожий на бібліотеку у Паскалі.
- Останнє твердження закінчується. закінчує вашу програму
Перший рядок програми програми HelloWorld; вказує назву програми.
Другий рядок програми використовує crt; це команда препроцесора, яка говорить компілятору увімкнути модуль crt перед тим, як перейти до фактичної компіляції.
Наступні рядки, укладені в оператори початку та кінця, є основним програмним блоком. Кожен блок у Паскалі укладено в оператор початку та оператора кінця . Проте за оператором завершення, що вказує кінець основної програми, слідує точка (.) Замість точки з комою (;).
Оператор початку основний блок програми — це місце, де починається виконання програми.
Рядки всередині (* … *) будуть ігноруватися компілятором, і він був доданий для додавання коментаря у програму.
Заява writeln («Привіт, мир!»); використовує функцію writeln, доступну Pascal, яка викликає повідомлення «Hello, World!» бути відображеним на екрані.
Оператор readkey; дозволяє відображати паузу, доки користувач не натисне клавішу. Це частина ХТО. Блок схожий на бібліотеку у Паскалі.
Останнє твердження закінчується. закінчує вашу програму
Компіляція та виконання програми Pascal
- Відкрийте текстовий редактор і додайте цей код.
- Збережіть файл як hello.pas
- Відкрийте командний рядок та перейдіть до каталогу, де ви зберегли файл.
- Введіть у командному рядку fpc hello.pas та натисніть Enter, щоб скомпілювати код.
- Якщо у вашому коді немає помилок, командний рядок перемістить вас на наступний рядок і згенерує вітальний виконуваний файл та об'єктний файл hello.o .
- Тепер введіть hello у командному рядку, щоб виконати вашу програму.
- Ви зможете побачити Hello World, надрукований на екрані, і програма буде чекати, поки ви не натиснете будь-яку клавішу.
Відкрийте текстовий редактор та додайте вищезазначений код.
Збережіть файл як hello.pas
Відкрийте командний рядок та перейдіть до каталогу, де ви зберегли файл.
Введіть у командному рядку fpc hello.pas та натисніть Enter, щоб скомпілювати код.
Якщо у вашому коді немає помилок, командний рядок перемістить вас на наступний рядок і згенерує вітальний виконуваний файл та об'єктний файл hello.o .
Тепер введіть hello у командному рядку, щоб виконати вашу програму.
Ви зможете побачити Hello World, надрукований на екрані, і програма буде чекати, поки ви не натиснете будь-яку клавішу.
$ fpc hello.pas
Free
Pascal
Compiler
version
2.6.0
[2011/12/23]
for
x86_64
Copyright
(c)
1993-2011
by
Florian
Klaempfl
and
others
Target
OS:
Linux
for
x86-64
Compiling
hello.pas
Linking
hello
8
lines compiled,
0.1
sec $
./hello
Hello,
World!
Переконайтеся, що на вашому шляху є безкоштовний компілятор паскаля fpc і ви запускаєте його в каталозі, який містить вихідний файл hello.pas.