Мітки та переходи
if second<>0 then first:=first/second
else begin
writeln('-----Спроба ділення на 0: ігнорована-----');
writeln('Задайте знак операції (1, 2, 3, 4) : ');
continue
end;
Проте навіть із доповненнями програма "не захищена" від набирания символів, що не утворюють числову сталу. Для такого захисту потрібні засоби, які ми почнемо розглядати в розд. 14.
Нарешті, розглянемо задачу, у якій умова продовження читання й обробки чергового значення може виявитися порушеною ще до того, як буде задано закінчення вхідних даних.
Приклад 4. Відрізок [a; b] прямої задається координатами його кінців, тобто парою чисел a, b, де a b. Перетином двох відрізків є або відрізок, або порожня множина точок, наприклад, [1;3] [2;4]=[2;3], [1;2] [3;4]= , [1;2] [2;3]=[2;2].
Треба прочитати послідовність пар чисел, що задають відрізки, і знайти їх перетин.
Припустимо, кінець послідовності відрізків задається за допомогою "Ctrl-Z". Проте немає сенсу продовжувати читання відрізків після того, як перетин уже прочитаних став порожнім. У цьому випадку треба відразу видати відповідь і закінчити виконання програми. Припустимо, що можливо "неправильне" задання відрізків у вигляді пари чисел a, b, де a>b. У цьому випадку b і a міняються місцями.Для збереження поточного перетину означимо змінні lb і hb (скорочення від "low bound" і "high bound" – нижня й верхня межа). Cпочатку відрізків немає, і перетин порожній – виразимо це ініціалізацією lb=1, hb=0, тобто відрізком з неможливими межами. Перший відрізок має стати значенням [lb;hb]. Потім у циклі вводяться інші відрізки та обчислюється перетин:
lb=1; hb=0;
writeln('задайте дійсні кінці відрізка:'); readln(a, b);
if a>b then
begin lb := b; hb := a end
else begin lb:=a; hb:=b end
{прочитано перший відрізок}
{далі читаються інші та обчислюється їх перетин}
while not eof do
begin
writeln('задайте дійсні кінці відрізка:'); readln(a, b);