КАТЕГОРИИ: Архитектура-(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) |
В.3. Базовые фрагменты схем алгоритмов
В теоретическом плане [3] СА – это ориентированный граф (совокуп-ность вершин и связей между ними), вершины которого могут быть одного из трёх типов (рис. В.1): · функциональная (используется для представления функции f: X→Y, т. е. арифметического выражения); · предикатная (используется для представления предиката p: X→{FALSE (ложь), TRUE (истина)}, т. е. логического выражения, опреде-ляющего управление по одной из возможных ветвей); · объединяющая (реализует передачу управления от одной из двух входных ветвей к одной выходной ветви). Отметим, что в практике объединяющие вершины не выделяются (они ясны по умолчанию). Из данных вершин графа составлены (рис. В.2) простейшие струк-туры управления вычислительным процессом (базовые фрагменты СА). Здесь В интерпретируется как булево выражение, а S1 и S2 – как прог-раммные операторы (процедуры). Схема на рис. В.2,а называется компо-зицией (следованием) и записывается в виде S1; S2. Схема на рис. В.2,б называется альтернативой (выбором) и записывается в виде if B then S1 else S2; в частном случае S2=Æ получается часто используемый сокращён-ный оператор if B then S1. Схема на рис. В.2,в[3] называется итерацией (циклом или повторением); получили распространение 3 частных случая: 1) S2 = Æ. Этому случаю соответствует оператор while B do S1. 2) S1 = Æ. Этому случаю соответствует оператор do S2 while B или, в эквивалентной форме, оператор repeat S2 until . 3) S1 = S2 = Æ. Схема вырождается в ждущую вершину (ждущие вершины используются в СА процессов, управляющих событиями). Теоретически было показано [3], что любая СА может быть сос-тавлена путём суперпозиции базовых фрагментов СА, изображённых на рис. В.2 (теорема Дейкстра). Поскольку каждый из базовых фрагментов имеет один вход и один выход, то у любой СА, составленной из этих фрагментов, также будет один вход и один выход. СА, в которой используются только базовые фрагменты, называется структурированной. Этот же принцип (один вход и один выход) лежит в основе структурного программирования. Итак, совокупность трёх структур управления процессом вычислений достаточна для построения любой СА. Но СА, полученная путём суперпо-зиции этих структур, не обязательно будет простейшей или наиболее естественной. Поэтому в практике допускается некоторое расширение базового набора структур управления. Например, в некоторых случаях удобнее использовать оператор множественного выбора (типа case … of). Допускается также преждевременный выход из цикла – операторы while…do и repeat…until, аккуратное применение оператора goto и др. Во всех этих случаях выдерживается основной принцип управления про-цессом вычислений – структура СА должна иметь один вход и один выход. В практике при начертании схем алгоритмов применяют большое разнообразие вершин с целью получения более наглядных схем, чем это достижимо при использовании только базовых фрагментов; основные вершины СА и правила их соединения приведены в прил. А. В зависимости от характера связи между вершинами СА алгоритмы делятся на линейные, ветвящиеся, циклические. В гл. 1 рассматриваются соответствующие примеры. Контрольные вопросы 1. В каких случаях вычислительный процесс не является алгоритмом? 2. В чём суть проблемы алгоритмической неразрешимости? Почему проблема алгоритмической неразрешимости более трудная, чем проблема алгоритмической разрешимости? 3 Из чего следует необходимость уточнения понятия алгоритма? Каковы подходы к его уточнению? 4. Какие виды обработки данных знаете Вы? 5. Каковы формы представления алгоритмов? Что у них общего и чем они отличаются? 6. Какие основные блоки, используемые в СА, Вы знаете? 7. Какова последовательность действий при решении задачи на ЭВМ? 8. Что такое структуры управления вычислительным процессом? Как они связаны с базовыми фрагментами СА? 9. Какие виды вычислительных процессов и алгоритмов Вы знаете? 10. Чем отличается тестирование программы от её отладки? 11. Как Вы понимаете неоднозначность СА? Что означает термин ²интерпретация² СА?
[1] Диофантово уравнение имеет вид xn + yn = zn, где n – целое. Требуется найти целочисленное решение для произвольного n. Найти такое решение в общем виде не удаётся.
[2] Существует теорема о том, что для раскраски любого планарного графа необходимо не более чем 4 краски. Однако доказать эту теорему в общем виде не удаётся. [3] Строго говоря, схема рис. В.2,в не является структурой управления, так как использует оператор goto.
Дата добавления: 2014-01-14; Просмотров: 982; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |