Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Основы безошибочного программирования




Вопросы

Кон кон

Все окружность (100,100), 50

Иначе нач

Графический_экран

если п = 1 то алг «рисунок_прямоугольника»

рисунок_треугольника нач

инес п = 2 то рамка (50,50)-(150, 100)

рисунок_прямоугольника кон

инес п = 3 то

рисунок_кольца алг «рисунок_кольца»

вывод («нет такого рисунка») окружность (100,100),20

 

Реализация данного алгоритма в виде структурированной программы:

Алгоритмы: Программа:

алг «Галерея картинок» ' Галерея картинок

нач сls

вывод («Список картинок:») print «Список картинок:»

вывод («1. треугольник») print «1. треугольник»

вывод («2. прямоугольник») print «2. прямоугольник»

вывод («З. кольцо») print «3. кольцо»

запрос(«номер =», п) input «номер =», n

если п = 1 то if n = 1 then

рисунок_треугольника gosub treug

инеc п =2 то if n = 2 then

рисунок_прямоугольника gosub box

инеc п = 3 то if n = 3 then

рисунок_кольца gosub ring

инеc п < 1 или п > 3 то if n < 1 or n >3 then

вывод («нет такого рисунка») print «нет такого рисунка»

все 'все

кон end

алг «рисунок треугольника» treug: 'рисунок треугольника

нач cls

графический_экран screen 2,0

линия (150,50)-(100,100) line (150,50)-(100,100),3

линия (150,50)-(200,100) line (150,50)-(200,100),3

линия (100,100)-(200,100) line (100,100)-(200,100),3

кон return

алг «рисунок прямоугольника» box: 'рисунок прямоугольника

нач cls

графический_экран screen 2,0

рамка (50,50)-(150,100) line (50,50)-(150,100),3,b

кон return

алг «рисунок кольца» ring: 'рисунок кольца

нач els

графический _экран screen 2,0

окружность (100,100),20 circle (100,100),20

окружность (100,100),50 circle (100,100),50

кон return

Данный подход — составление структурированных алгоритмов — может применяться к составлению структурированных программ для любых ЭВМ на любых языках программирования — Паскаль, Си, Ада, Модула и т. д.

На практике используется более широкий набор правил структурной композиции алгоритмов и программ, принятых в современных языках программирования, — правила альтернативного выбора, а также циклы с выходами и со счетчиками.

 

1. Условные действия:

если у < 0 то if у < 0 then

вывод («недопустим») print «недопустим»

кесли end if

 

2. Многоальтернативный выбор:

если х > 1 то if х > 1 then

y: = 1 у = 1

инеc х < —1 то elseif х < —1 then

у: = - 1 у = -1

иначе else

у: = х у = х

кесли end if

 

3. Циклы со счетчиком:

от k = 1 до п цикл for к = 1 to n

вывод (k ∙ k) print k*k

кцикл next k

 

4. Циклы с выходами:

цикл do

s: = s + х s = s + х

при х < 1 выход if x < 1 then exit do

х: = x/2 x = x/2

кцикл loop

 

В циклах в общем случае возможны несколько выходов. Дополнительные выходы считаются допустимыми даже для циклов со счетчиками. Приведем примеры решения задач с использованием дополнительных правил структурирования алгоритмов и программ.

Пример записи структурированных алгоритмов и программ с использованием циклов для алгоритма игры-эксперимента «Звездное небо»:

 

АлгоритмПрограмма
ал г «звездное небо» ' звездное небо»

нач cls

цикл do

запрос(«звезд=», п) input «звезд=», n

при п <= 0 выход if n <= 0 then exit do

графический _экран screen 2,10

от k = 1 до п цикл for k = 1 to n

х: = случайное [0:200] х = rnd*200

у: = случайное [0:200] у = rnd*200

точка (х,у) pset (x,y),3

кцикл next k

кцикл end do

кон end

Пример структурированного алгоритма и программы с применением многоальтернативного выбора и циклов с несколькими выходами:

 

АлгоритмПрограмма
алг «угадай-ка» 'угадай-ка

нач cls

вывод («Угадай-ка число») print «Угадай-ка число»

вывод («от 1 до 100») print от 1 до 100»

z: = случайное [0:100] z = int (rnd*100)

цикл do

запрос («число =», х) input «число =», х

при х = z вых if х = z then exit do

если х < z то if х < z then

вывод («мало») print «мало»

инеc х > z то elseif х > z then

вывод («много») print «много»

все end if

кцикл end do

вывод («молодец, умница») print «молодец, умница»

кон end

 

 

1. Что такое алгоритмизация?

2. Что такое структурированные алгоритмы?

3. Что такое неструктурированные алгоритмы?

4. В чем достоинства структурированных программ?

5. В чем недостатки неструктурированных программ?

6. Можно ли гарантировать отсутствие ошибок в программах?

Задания

 

1. Постройте вспомогательные алгоритмы и подпрограммы с выделением параметров для рисования следующих блоков:

а) крыша;

б) дерево;

в) стена с окном;

г) столб.

2. Предложите рисунки и составьте алгоритмы рисования, используя вспомогательные алгоритмы из предыдущего задания, для следующих строений:

а) домика с окном и деревом;

б) домика с двумя окнами;

в) домика с собачьей будкой;

г) двухэтажного домика.

3. Составьте алгоритм вывода на экран полной таблицы умножения.

4. Составьте, используя вспомогательные алгоритмы из предыдущих задач, алгоритмы изображения на экране:

а) многосекционных домов с различным числом секций;

б) многоэтажных домов с различным числом этажей и секций.

 

Основной недостаток традиционной практики составления программ для ЭВМ заключается в том, что при таком подходе никто не может гарантировать отсутствие в них ошибок. Особенностью традиционной практики является поиск ошибок в программах при их отладке на ЭВМ.

Однако так как число ошибок в программах заранее неизвестно, то неизвестна заранее и продолжительность отладки программ на ЭВМ. Более того, даже после «завершения» отладки никто не может гарантировать отсутствие ошибок. Естественно, что использование таких программ приводит к возникновению отказов, сбоев и получению неверных результатов.

Структурный подход снижает количество ошибок в алгоритмах и программах. Однако и при этом подходе число ошибок также заранее неизвестно. Хотя структурная форма записи и упрощает поиск и исправление ошибок в текстах программ, гарантии отсутствия ошибок структурный подход не дает.

Однозначные суждения об отсутствии или наличии ошибок в алгоритмах и программах возможны только при наличии описаний конечных результатов их выполнения. Такие описания принято называть спецификациями.

Спецификации программ — это точные, математически строгие описания результатов выполнения алгоритмов и программ. Только при наличии спецификаций возможно создание алгоритмов и программ, в которых можно гарантировать отсутствие ошибок.

Более того, при систематическом использовании спецификаций возможен не только анализ правильности алгоритмов и программ, но и становится возможным составление программ с одновременным доказательством правильности.

Безошибочное программирование — это составление алгоритмов и программ с гарантиями отсутствия в них ошибок. А составление алгоритмов и программ с одновременным доказательством правильности называется доказательным программированием. И в том и другом подходе необходимо составление спецификаций.

Для составления программ на любом языке программирования весьма полезно предварительное составление реализуемых в них алгоритмов. Эти описания алгоритмов вместе со спецификациями позволяют в полной мере оценить правильность составленных программ.

Пример составления алгоритмов с использованием в качестве иллюстрации спецификаций сценария диалога с ЭВМ:

 

 

В соответствии с этими четырьмя картинками построим три вспомогательных алгоритма рисования отдельных картинок из «Галереи» и общий алгоритм выбора картинок в соответствии с принятым сценарием:

алг «Галерея картинок»

нач алг «рисунок_треугольника»

вывод («Список картинок:») нач

вывод («1. треугольник») линия(150,50)-(100,100)

вывод («2. прямоугольник») линия(150,50)-(200,100)

вывод («З. кольцо») линия(100,100)-(200,100)

запрос («номер=», п) кон




Поделиться с друзьями:


Дата добавления: 2017-01-14; Просмотров: 134; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.03 сек.