1.Открыть правой рукой хлебницу; __2.Взять булку хлеба правой рукой; __3.Положить хлеб на разделочную доску; (предположим, что доска уже лежала на столе) __4.Открыть правой рукой верхний ящик стола; __5.Найти блестящий нож, длиной 20 см, с черной ручкой; __6.Взять нож в правую руку; __7.Поднести нож к хлебу; __8.Зафиксировать хлеб левой рукой, взявшись за левый край булки; __9.Расположить нож строго над правым ребром булки хлеба; __10.Повторять следующие действия 5 раз: 10.1.Отступить влево на сантиметр; 10.2.Повторять следующие действия, пока лезвие ножа не не коснется доски: 10.2.1.Прижать нож к хлебу; 10.2.2.Совершить ножом возвратно поступательное движение вперед-назад; 10.3.Поднять нож вверх; __11.Положить нож в ящик; __12.Отпустить левой рукой хлеб.
Объяснение:
Запускаем программу и смотрим, как она работает: Ой... вместе с пятым куском и палец отрезал... чёрт! остановить программу! Я же не написал как именно нужно зафиксировать хлеб левой рукой, схватился как попало и большой палец торчал в сторону... Возвращаемся к строчке "Зафиксировать хлеб левой рукой, взявшись за левый край булки;" После нее пишем: "Поджать большой палец левой руки влево, к ладони;" Запускаем программу Ой... на строчке "Положить нож в ящик;" нож упал на пол... Проклятье! оказывается, стол стоит немного под наклоном и ящик сам закрылся... Возвращаемся к коду и перед строчкой "Положить нож в ящик;" пишем "Открыть правой рукой верхний ящик стола;" Заметили ошибку? Нет?! Как мы можем открыть ящик правой рукой, если в этой руке нож? Значит, сначала нужно положить нож на стол, потом открыть ящик, снова взять нож и т.д. И делаем мы это до тех пор, пока хлеб не будет нарезан как следует, без повреждения мебели и пальцев. Вот, примерно так происходит отладка С опытом начинаешь писать программы, которые работают с первого раза, допуская минимум ошибок, а проверка "открыт ли ящик", перед складыванием в него чего-то, входит в привычку. Когда какие-то операции совершаются постоянно, такие как нарезка хлеба, мойка посуды и т.д., то программисты их описывают в виде процедур. Процедура - набор определенных действий, спрятанный под одной командой. Таким образом, текст программы, который я приводил выше, можно поместить в процедуру под названием НарезатьХлеба(параметр), где в качестве параметра будем указывать количество кусков
// PascalABC.NET 3.2, сборка 1389 от 01.03.2017 // Внимание! Если программа не работает, обновите версию!
begin var xa,ya,xb,yb,xc,yc:real; Write('Введите координаты точки А: '); Read(xa,ya); Write('Введите координаты точки B: '); Read(xb,yb); Write('Введите координаты точки C: '); Read(xc,yc); var xd:=(xb+xc)/2; var yd:=(yb+yc)/2; var ma:=sqrt(sqr(xd-xa)+sqr(yd-ya)); Writeln('ma=',ma:0:5); var AB:=sqrt(sqr(xb-xa)+sqr(yb-ya)); var AC:=sqrt(sqr(xc-xa)+sqr(yc-ya)); var BC:=sqrt(sqr(xc-xb)+sqr(yc-yb)); var Wb:=sqrt(AB*BC*(sqr(AB+BC)-AC*AC))/(AB+BC); Writeln('Wb=',Wb:0:5) end.
Результат Введите координаты точки А: 0 0 Введите координаты точки B: 2 1 Введите координаты точки C: -2 3 ma=2.00000 Wb=2.66667
1.Открыть правой рукой хлебницу; __2.Взять булку хлеба правой рукой; __3.Положить хлеб на разделочную доску; (предположим, что доска уже лежала на столе) __4.Открыть правой рукой верхний ящик стола; __5.Найти блестящий нож, длиной 20 см, с черной ручкой; __6.Взять нож в правую руку; __7.Поднести нож к хлебу; __8.Зафиксировать хлеб левой рукой, взявшись за левый край булки; __9.Расположить нож строго над правым ребром булки хлеба; __10.Повторять следующие действия 5 раз: 10.1.Отступить влево на сантиметр; 10.2.Повторять следующие действия, пока лезвие ножа не не коснется доски: 10.2.1.Прижать нож к хлебу; 10.2.2.Совершить ножом возвратно поступательное движение вперед-назад; 10.3.Поднять нож вверх; __11.Положить нож в ящик; __12.Отпустить левой рукой хлеб.
Объяснение:
Запускаем программу и смотрим, как она работает: Ой... вместе с пятым куском и палец отрезал... чёрт! остановить программу! Я же не написал как именно нужно зафиксировать хлеб левой рукой, схватился как попало и большой палец торчал в сторону... Возвращаемся к строчке "Зафиксировать хлеб левой рукой, взявшись за левый край булки;" После нее пишем: "Поджать большой палец левой руки влево, к ладони;" Запускаем программу Ой... на строчке "Положить нож в ящик;" нож упал на пол... Проклятье! оказывается, стол стоит немного под наклоном и ящик сам закрылся... Возвращаемся к коду и перед строчкой "Положить нож в ящик;" пишем "Открыть правой рукой верхний ящик стола;" Заметили ошибку? Нет?! Как мы можем открыть ящик правой рукой, если в этой руке нож? Значит, сначала нужно положить нож на стол, потом открыть ящик, снова взять нож и т.д. И делаем мы это до тех пор, пока хлеб не будет нарезан как следует, без повреждения мебели и пальцев. Вот, примерно так происходит отладка С опытом начинаешь писать программы, которые работают с первого раза, допуская минимум ошибок, а проверка "открыт ли ящик", перед складыванием в него чего-то, входит в привычку. Когда какие-то операции совершаются постоянно, такие как нарезка хлеба, мойка посуды и т.д., то программисты их описывают в виде процедур. Процедура - набор определенных действий, спрятанный под одной командой. Таким образом, текст программы, который я приводил выше, можно поместить в процедуру под названием НарезатьХлеба(параметр), где в качестве параметра будем указывать количество кусков
// Внимание! Если программа не работает, обновите версию!
begin
var xa,ya,xb,yb,xc,yc:real;
Write('Введите координаты точки А: '); Read(xa,ya);
Write('Введите координаты точки B: '); Read(xb,yb);
Write('Введите координаты точки C: '); Read(xc,yc);
var xd:=(xb+xc)/2;
var yd:=(yb+yc)/2;
var ma:=sqrt(sqr(xd-xa)+sqr(yd-ya));
Writeln('ma=',ma:0:5);
var AB:=sqrt(sqr(xb-xa)+sqr(yb-ya));
var AC:=sqrt(sqr(xc-xa)+sqr(yc-ya));
var BC:=sqrt(sqr(xc-xb)+sqr(yc-yb));
var Wb:=sqrt(AB*BC*(sqr(AB+BC)-AC*AC))/(AB+BC);
Writeln('Wb=',Wb:0:5)
end.
Результат
Введите координаты точки А: 0 0
Введите координаты точки B: 2 1
Введите координаты точки C: -2 3
ma=2.00000
Wb=2.66667