Navigation bar
  Print document Start Previous page
 69 of 144 
Next page End  

69
Особенностью систематических методов является возможность полного устранения оши-
бок из алгоритмов и программ. При этом подходе программы сверяются с описаниями алгорит-
мов, а алгоритмы - с описаниями сценариев и методов решения.
Такой систематический подход к составлению алгоритмов и программ может применяться
к решению на ЭВМ любых прикладных задач с использованием самых различных языков про-
граммирования - Бейсик, Паскаль, Си и им подобные. Приведем примеры систематического ре-
шения задач.
Первая задача: подсчет площади треугольника по длинам сторон.
      a            b
  c
Постановка
Сценарий
Дано: а, b, с - длины сторон,
площадь треугольника
Треб.: S - площадь треугольника,
длины сторон:
При:   а > 0, b > 0, с > 0,
а =? <а>
           a < b +c, b < a + c, c < a + b.
b =? <b>
с =? <с>
Метод решения
         площадь = <S>
S =
c
p
b
p
a
p
p
     недопустимы длины
р = (а + b + с)/2
Обратите внимание: в постановке задачи в исходные условия включены ситуации, когда
решение может не существовать. А именно, здесь указаны три неравенства треугольника и усло-
вия положительности длин сторон. При нарушении этих условий треугольника просто не сущест-
вует и тем более нельзя говорить о его площади.
Для надежности программ такого рода ситуации (когда нет решений) должны быть пре-
дусмотрены в сценарии диалога. В этих случаях в сценарий необходимо включить сообщения с
диагностикой причин отказов: отсутствие решений, недопустимость данных, некорректность ко-
манд, противоречивость фактов и т. п.
Алгоритм                        
Программа
алг «площадь треугольника»       
' площадь треугольника
нач                                
cls
вывод («площадь треугольника»)   
? «площадь треугольника»
вывод («длины сторон:»)          
? «длины сторон:»
запрос («а=», a)                  
input «a=», a
запрос («b=», b)                  
inpnt «b=», b
запрос («с=», с)                   
input «c=», c
если не (а > 0 и b > 0 и с > 0) то
if a<=0 or b<=0 or c<=0 then
вывод («недопустимы длины»)     
    ? «недопустимы длины» 
инеc не (а < b + с и b < а +       
elseif not (a < b+ с and b < а + с 
+с и с<а+b)то              
        and с < а + b) then
вывод («недопустимы длины»)
? «недопустимы длины»
иначе
else
р := (а + b + с)/2
   р = (а+ b +с)/2
S :=
c
p
b
p
a
p
p
   S = sqr (p*(p-a)*(p-b)*(p-c))
вывод («площадь=», S)
   ? «площадь=», S
все
end if
          кон
         end
Сайт создан в системе uCoz