Тестовые примеры для этой программы должны включать по крайней мере по одному значению аргумента из каждого интервала, а для проверки граничных условий — еще и все точки перегиба (если это кажется вам излишним, попробуйте в предпоследнем условии 'забыть' знак = , а затем ввести значение х, равное 1.
Следует избегать проверки вещественных величин на равенство, вместо этого лучше сравнивать модуль их разности с некоторым малым числом. Это связано с погрешностью представления вещественных значений в памяти. Значение величины, с которой сравнивается модуль разности, следует выбирать в зависимости от решаемой задачи и точности переменных, участвующих в выражении. Пример:
const eps = 1e-6; { Требуемая точность вычислений }
var x, y : real;
...
if (x = y) then writeln('Величины x и y равны'); { Плохо! Ненадежно! }
if (abs(x - y) < eps) then writeln('Величины x и y равны'); { Рекомендуется }
Большого количества вложенных условных операторов также следует избегать, потому
что они делают программу совершенно нечитабельной.