ВУЗ:
Составители:
Рубрика:
49
скобках соответствующими командами робота. Начнем замену с внутренних
скобок (заменяемые части подчеркнуты). Последовательно получаем:
a·b=((((a+b)
2
-a
2
)-b
2
)/2),
умн(a,b)=((((сум(a,b))
2
-a
2
)-b
2
)/2),
умн(a,b)=(((кв(сум(a,b))-a
2
)-b
2
)/2),
умн(a,b)=(((кв(сум(a,b))-кв(a))
-b
2
)/2),
умн(a,b)=((раз(кв(сум(a,b)),кв(а))-b
2
)/2),
умн(a,b)=((раз(кв(сум(a,b)),кв(a))-кв(b))
/2),
умн(a,b)=(раз(раз(кв(сум(a,b)),кв(а)),кв(b))/2)
,
умн(a,b)=пол(раз(раз(кв(сум(a,b)),кв(а)),кв(b))/2).
Программы по формулам (2) и (3) строятся аналогично.
(2) умн(a,b)=пол(раз(кв(сум(a,b)),сум(кв(a),кв(b)))).
(3) умн(a,b)=пол(раз(сум(кв(а),кв(b)),кв(раз(a,b)))).
Для каждой программы спецификацией является та формула, по которой
строилась программа. Если программа не соответствует той
формуле, которая
представлена в качестве спецификации, то в ней скорее всего содержатся
ошибки, которые нужно найти и исправить. В данном случае это означает, что
нужно привести в соответствие спецификацию и программу. Можно, конечно,
правильной программе (2) поставить в соответствие правильную формулу (1),
но это вызовет большие недоумения в процессе эксплуатации программы и
чревато ошибками, возникающими из-за непонимания.
Пример 8.11. Написать программу для робота, вычисляющую y=|x|.
Решение.
По определению y=
если x>0, x
если x=0,
-x, если x<0.
,
,0
⎧
⎨
⎪
⎩
⎪
Сравним запись определения модуля с командой знак(а), имеющейся в
системе команд робота:
знак(а)=
+1,если x>0,
0, если x=0,
если x<0.−
⎧
⎨
⎪
⎩
⎪
1,
Сравнив записи, можно заметить, что первая может быть получена
умножением команды знак(х) на x. Так можно получить новую команду:
мод(х)=умн(знак(х),х). Для решения задачи мы воспользовались не только
командами робота, но и программой, полученной в предыдущем примере.
Пример 8.12. Написать программу для робота, указывающую максимальное
из
двух заданных чисел: max(a,b).
Решение. Для нахождения максимального
значения необходимо заданные числа сравнить
между собой. Однако в системе команд робота нет
операций сравнения, кроме операции знак(а).
Узнать, на сколько одно число отличается от
другого, можно с помощью операции разность.
Чтобы такое сравнение было наглядным,
представим числа a и b в виде
отрезков, длины которых равны a и b, и нарисуем
a
├───────────────┤
├──────────┤····│
b │a-b│
Рис. 8.1
49
скобках соответствующими командами робота. Начнем замену с внутренних
скобок (заменяемые части подчеркнуты). Последовательно получаем:
a·b=((((a+b)2-a2)-b2)/2),
умн(a,b)=((((сум(a,b))2-a2)-b2)/2),
умн(a,b)=(((кв(сум(a,b))-a2)-b2)/2),
умн(a,b)=(((кв(сум(a,b))-кв(a))-b2)/2),
умн(a,b)=((раз(кв(сум(a,b)),кв(а))-b2)/2),
умн(a,b)=((раз(кв(сум(a,b)),кв(a))-кв(b))/2),
умн(a,b)=(раз(раз(кв(сум(a,b)),кв(а)),кв(b))/2),
умн(a,b)=пол(раз(раз(кв(сум(a,b)),кв(а)),кв(b))/2).
Программы по формулам (2) и (3) строятся аналогично.
(2) умн(a,b)=пол(раз(кв(сум(a,b)),сум(кв(a),кв(b)))).
(3) умн(a,b)=пол(раз(сум(кв(а),кв(b)),кв(раз(a,b)))).
Для каждой программы спецификацией является та формула, по которой
строилась программа. Если программа не соответствует той формуле, которая
представлена в качестве спецификации, то в ней скорее всего содержатся
ошибки, которые нужно найти и исправить. В данном случае это означает, что
нужно привести в соответствие спецификацию и программу. Можно, конечно,
правильной программе (2) поставить в соответствие правильную формулу (1),
но это вызовет большие недоумения в процессе эксплуатации программы и
чревато ошибками, возникающими из-за непонимания.
Пример 8.11. Написать программу для робота, вычисляющую y=|x|.
⎧ x, если x > 0,
⎪
Решение. По определению y = ⎨ 0, если x = 0,
⎪
⎩- x, если x < 0.
Сравним запись определения модуля с командой знак(а), имеющейся в
системе команд робота:
⎧+ 1, если x > 0,
⎪
знак(а) = ⎨0, если x = 0,
⎪
⎩− 1, если x < 0.
Сравнив записи, можно заметить, что первая может быть получена
умножением команды знак(х) на x. Так можно получить новую команду:
мод(х)=умн(знак(х),х). Для решения задачи мы воспользовались не только
командами робота, но и программой, полученной в предыдущем примере.
Пример 8.12. Написать программу для робота, указывающую максимальное
из двух заданных чисел: max(a,b).
Решение. Для нахождения максимального a
значения необходимо заданные числа сравнить ├───────────────┤
между собой. Однако в системе команд робота нет
операций сравнения, кроме операции знак(а). ├──────────┤····│
Узнать, на сколько одно число отличается от b │a-b│
другого, можно с помощью операции разность. Рис. 8.1
Чтобы такое сравнение было наглядным,
представим числа a и b в виде отрезков, длины которых равны a и b, и нарисуем
Страницы
- « первая
- ‹ предыдущая
- …
- 45
- 46
- 47
- 48
- 49
- …
- следующая ›
- последняя »
