Var
X,Y:Real;
[COLOR=Red][B]Описали переменные X и Y[/B][/COLOR]
Begin
[COLOR=Red][B]Начало программы[/B][/COLOR]
Writeln('To quit the program type -10 az X');
[COLOR=Red][B]Здесь на экран вывели информацию о способе прерывания программы:
ввести Х=-10[/B][/COLOR]
Repeat
[COLOR=Red][B]Открываем глобальный цикл, о котором сказано выше[/B][/COLOR]
Repeat
Write('X= ');
Readln(X);
If (X<0) and (X<>-10) then Writeln('X out of range: negatives are forbidden!');
Until (X>=0) or (X=-10);
[COLOR=Red][B]Вводим Х тоже с помощью цикла. Поскольку допустимы только
положительные значения Х и единственное отрицательное Х=-10
(для прерывания), повторяем цикл ввода до тех пор, пока не
будет введено неотрицательное число. В случае ввода
отрицательных значений (кроме -10), выводим уведомление
"Отрицательные значения запрещены!" [/B][/COLOR]
If X>4 then
Repeat
X:=X-4;
Until X<=4;
[COLOR=Red][B]Поскольку изображенная на графике функция периодична с периодом
4, вычитаем из Х этот период до тех пор, пока Х не окажется между 0 и
4.[/B][/COLOR]
If X<>-10 then
[COLOR=Red][B]Проверяем, не равен ли аргумент -10. Если нет, то вычисляем
значение функции.[/B][/COLOR]
begin
[COLOR=Red][B]Далее находим значения Y, разбив интервал 0 - 4 на три участка:
от 0 до 1, от 1 до 3 и от 3 до 4. Во всех случаях используем
уравнение окружности (X-X0)² + (Y-Y0)² = R², где X0, Y0 -
координаты центра, R - радиус (в данном случае R=1). [/B][/COLOR]
If X<1 then
Y:=Sqrt(1-Sqr(X-1)) else
[COLOR=Red][B]Если Х находится в интервале от 0 до 1, то функция представляет
собой дугу окружности (II сегмент) с центром (1, 0).[/B][/COLOR]
If (X>=1) and (X<3) then
Y:=1-Sqrt(1-Sqr(X-2)) else
[COLOR=Red][B]Если Х находится в интервале от 1 до 3, то функция представляет
собой дугу окружности (III и IV сегменты, т.е. нижняя полу-
окружность) с центром (2, 1).[/B][/COLOR]
Y:=Sqrt(1-Sqr(X-3));
[COLOR=Red][B]И, наконец, если Х находится в интервале от 3 до 4, то функция
представляет собой дугу окружности (I сегмент) с центром
(3, 0).[/B][/COLOR]
Writeln('Y= ',Y:0:3);
[COLOR=Red][B]Выводим результат на экран[/B][/COLOR]
end;
Until X=-10;
[COLOR=Red][B]Проверяем выполнение условия выхода из глобального цикла.[/B][/COLOR]
End.
[COLOR=Red][B]Всё![/B][/COLOR]