1. Вариант с последовательным приращением аргументаvar x:real;begin x:=-1; while x<=2 do begin Writeln('x=',x:4:1,' y=',1/x:0:10); x:=x+0.2 endend.Решениеx=-1.0 y=-1.0000000000x=-0.8 y=-1.2500000000x=-0.6 y=-1.6666666667x=-0.4 y=-2.5000000000x=-0.2 y=-5.0000000000x= 0.0 y=-18014398509482000.0000000000x= 0.2 y=5.0000000000x= 0.4 y=2.5000000000x= 0.6 y=1.6666666667x= 0.8 y=1.2500000000x= 1.0 y=1.0000000000x= 1.2 y=0.8333333333x= 1.4 y=0.7142857143x= 1.6 y=0.6250000000x= 1.8 y=0.5555555556x= 2.0 y=0.50000000002. Вариант с вычислением аргумента путем умноженияvar x:real; i:integer;begin for i:=1 to 16 do begin x:=0.2*(i-1)-1; Writeln('x=',x:4:1,' y=',1/x:0:10) endend.Решениеx=-1.0 y=-1.0000000000x=-0.8 y=-1.2500000000x=-0.6 y=-1.6666666667x=-0.4 y=-2.5000000000x=-0.2 y=-5.0000000000x= 0.0 y=Infinityx= 0.2 y=5.0000000000x= 0.4 y=2.5000000000x= 0.6 y=1.6666666667x= 0.8 y=1.2500000000x= 1.0 y=1.0000000000x= 1.2 y=0.8333333333x= 1.4 y=0.7142857143x= 1.6 y=0.6250000000x= 1.8 y=0.5555555556x= 2.0 y=0.5000000000Анализ решенийПри х=0 функция 1/х терпит разрыв. При подходе к нулю слева она стремится к минус бесконечности, а справа - к плюс бесконечности.Первый вариант программы из-за суммирования на каждом шаге ошибок машинного округления пришел не к нулевому аргументу х, что привело к неточному вычислению значения функции (как видно по результату, аргумент не дошел до нуля слева). Во втором варианте аргумент вычислялся более точно, накопления суммы не было и при нуле мы получили именно "бесконечность".ВыводыТабуляция функций по второму варианту предпочтительнее. Но её недостатком является необходимость предварительного вычисления количества повторений цикла по известной формуле Int((b-a)/h)+1 и подготовка формулы для расчета текущего значения переменной в виде функции от параметра цикла.