![]()
|
|||||||
UsesCrt;begin. usesCrt; begin. Как доказать правильность программы?UsesCrt;begin TextBackGround(Black); ClrScr; TextColor(Red);write('Каждый '); TextColor(LightRed);{оранжевыйзаменимсветло-красным}write('охотник '); TextColor(Yellow);write('желает '); TextColor(Green);write('знать '); TextColor(LightBlue);write('где '); TextColor(Blue);write('сидит '); TextColor(Magenta);write('фазан.'); readln;{ чтобы фраза не исчезала с экрана } end. Задание 2: (выполняются либо в паскаль-онлайн, либо скачать программу PascalABC.NET ) Написать программу, которая выводит на синем фоне серыми буквами четверостишие:
usesCrt; begin TextBackGround(Blue); { цвет фона } TextColor(LightGray); { цвет символов } ClrScr; { очистить экран } writeln('Буря мглою небо кроет'); writeln('Вихри снежные крутя.'); writeln('То как зверь она завоет,'); writeln('То заплачет, как дитя.'); writeln; writeln(' А.С.Пушкин'); readln; { чтобы стихотворение не исчезло с экрана } end.
Пример задачи анализа алгоритмов: определение результата алгоритма Задание 3:(выполняются либо в паскаль-онлайн, либо скачать программу PascalABC.NET ) Выполните программу, напишите текстовую формулировку задачи programrty; usescrt; varx,y:real; begin clrscr; write('x = '); readln(x); ifx>25 theny:=3*sqr(x)+5 elsey:=2*x-(x*x*x); write('y = ',y:4:2); readln; end. Как доказать правильность программы? Как правило, программист разрабатывает программу на заказ, и от него требуется не только написать код, но и убедиться, что код работает правильно, т. е. в соответствии с требованиями заказчика. Очевидно, что если программа выдаёт неверный результат хотя бы для одного варианта входных данных, можно сразу сказать, что она некорректна, т. е. содержит ошибки. Сложнее доказать правильность программы — убедиться, что она выдает верные результаты при любых допустимых входных данных. Программисты-практики для решения этой задачи используют тестирование: проверяют работу программы с помощью набора тестовых данных, для которых известен правильный результат. Если полученный результат не совпадает с заданным, выполняется отладка программы, т. е. поиск и исправление ошибок. Однако, как писал нидерландский учёный, один из создателей современного программирования, «отладка может показать лишь наличие ошибок и никогда — их отсутствие». В результате можно гарантировать верную работу программы только при тех данных, которые использовались в контрольных тестах. Кроме того, неясно, как определить, что все ошибки выявлены и нужно завершить отладку. Пример. Рассмотрим следующую программу для выбора максимального из трёх значений, записанных в переменных а, b и с: если а > b то М:=а иначе М:=b все если b > с то М:=b иначе М:=с все Проверяя её на тестах (а,b,с) = (1,2,3), (1,3,2), (2,1,3) и (2,3,1), мы во всех этих случаях получаем в переменной М верный ответ 3. Однако это не означает, что программа правильная, так как существует контрпример (3,2,1): для этого набора входных данных в переменной М в результате оказывается число 2. Чтобы быть уверенными в том, что программа работает правильно при любых допустимых исходных данных, применяют методы доказательного программирования: для каждого блока программы составляют требования к входным и выходным данным и строго доказывают, что программа всегда работает верно. К сожалению, доказывать правильность программ не так просто, и в таких доказательствах тоже возможны ошибки. Однако при этом автор должен глубоко разобраться в алгоритме и его «подводных камнях», и часто при этом обнаруживаются ошибки, которые могли бы проявиться уже после выпуска программы в свет. На практике редко доказывают правильность всей программы в целом. В то же время очень полезно доказывать правильность отдельных блоков (циклов, процедур и функций) для уменьшения количества «необъяснимых» ошибок и сокращения времени отладки. Задание:
|
|||||||
|