Главная » Просмотр файлов » Лекция 11. Структурное программирование. Нисходящее проектирование (часть2)

Лекция 11. Структурное программирование. Нисходящее проектирование (часть2) (1152913)

Файл №1152913 Лекция 11. Структурное программирование. Нисходящее проектирование (часть2) (Воробьева И.А. «Информатика. Язык Питон» (2016))Лекция 11. Структурное программирование. Нисходящее проектирование (часть2) (1152913)2019-09-06СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

1Воробьева И.А. «Информатика. Язык Питон»Концепция структурного программирования. Нисходящий способпроектированияПринципы структурного подхода, критика «безусловных переходов».Нисходящий способ проектирования алгоритмов. Примеры. Методыструктурирования алгоритмов: объединение условий, дублирование кодов,метод Булевой переменной. Композиция методов при структурировании.Вспомогательные алгоритмы: общего типа и функции.7.

СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ И НИСХОДЯЩЕЕПРОЕКТИРОВАНИЕ7.4. Методы структурирования алгоритмовВ прошлой лекции мы определили цели и возможностиструктурного подхода в проектировании решений задач – созданиечитабельного, легко модифицируемого, доступного в сопровождении иудобного для тестирования алгоритма (следовательно, ипрограммного кода).Не всегда приходится иметь дело соструктурированными алгоритмами и программами по ряду причин: если мы столкнулись с алгоритмом (программой), написанным ещедо внедрения технологии структурного подхода или, например, написанным в другой парадигме программирования; если программа написана в хаотичной манере спагетти-кода, еефункционал не устарел и требует дальнейшее сопровождение смодификацией отдельных ее частей; иногда, первоначальный алгоритм для решения задачи мы самистроим эвристическим1 путем, в результате получая реализующийрешение, но не структурированный алгоритм.1Эристический алгоритм (эвристика) — алгоритм решения задачи, включающий практический метод, не являющийся гарантированно точным или оптимальным, но достаточный для решения поставленной задачи.2Воробьева И.А.

«Информатика. Язык Питон»Для исправления подобных ситуаций существуют специальные методы структурирования, которые мы и рассмотрим ниже.Явным образом увидеть нарушение правил структурного подходаможно в блок-схемах. Действительно, давайте посмотрим, к чему приводит основополагающий принцип:Использование базовых алгоритмических структур: следование,развилка, цикл → неиспользование операторов безусловногоперехода2.На языке блок-схем это будет означать, что всякая управляющаяструктура (ветвление, цикл) будет иметь только один вход и один выход, притом, что сами структуры могут располагаться либо в последовательном расположении, либо быть вложенными друг в друга.

Так какэтот базовый принцип должен соблюдаться на любом уровне вложенности алгоритма, включая «нулевой», то и правило «один вход – один выход3» нарушено нигде не будет.Следовательно, если мы видим два выхода из управляющей структуры цикл или ветвление, это явный признак неструктурированного алгоритма: в программном коде такую конструкцию, в рамках существующих управляющих синтаксических конструкций, можно будет реализовать только при помощи операторов безусловного перехода, что, как мыпомним, именно по этой причине, мягко говоря, и не приветствуется.2В прошлой лекции обсуждали, почему иногда мы пишем преимущественное использование базовых структур:операторы безусловных переходов (явных и неявных) в современной технологии программирования иногда допускаются.3Конструкции «ветвление», как полное, так и неполное тоже имеют один вход и один выход.3Воробьева И.А.

«Информатика. Язык Питон»Метод объединения условийрис 7.4. а)рис 7. 4. б)Структурирование здесь нарушено из-за Решениепроблемы очевидно:двух выходов из цикла: либо при объединение обоих условий в однунарушении условия У1, либо при проверку, что и программный коднарушении условия У2.сделает заведомо понятней:Пример ниже иллюстрирует, почемуиспользованиедажеразрешенныхоператоров break и continue не while u1 and u2:вызывает одобрения – это явноprint('Действие «Д»')неструктурированная логика:u1=False # обеспечим выход по u1while u1:u2=False # или по u2if u2:print('Это действие тоже выполнится')print('Действие «Д»')u1=False # обеспечим выход по u1else:break # обеспечим выход по u2print('Это действие никогда не выполнится')рис 7.4. в)рис 7.4.

г)4Воробьева И.А. «Информатика. Язык Питон»Если выход надо обеспечить при while u1 and not u2:нарушении условия У1 и выполненииprint('Действие «Д»')условия У2, все решается также простоu1=False # обеспечим выход по u1(см. рис. 7.4.г).u2=True # или по u2print('Это действие тоже выполнится')Метод дублирования кодов (пример)Для понимания этого метода проще всего рассмотреть решениепростой задачи: присвоить переменной максимальное из трех заданных чисел , или .рис 7.5. а)Полученная блок-схема задачу решает, но не структурирована, так как удвух управляющих структур if получился единый выход. В языке Python,в котором нет goto, а операторы break и continue применимы только вциклах, мы попросту не сможем такую блок-схему реализовать, пустьдаже и дурным способом.Здесь удобно просто продублировать код.5Воробьева И.А.

«Информатика. Язык Питон»рис 7.5. б)if A > B:if A > С:S=AСокращенный вариант, допустимый вPython. Здесь нет противоречий, просто«структура 0» в примере кода – этосинтаксическая конструкция с тремя, ане двумя ветвлениями и однимвыходом, как и положено.else:S = C # управляющая структура 1else:if B > С:S=Belse:S = C # управляющая структура2if A > B:if A > С:S=Aelse:S = C # управляющая структура 1elif B > С:S=Belse:S = C # управляющая структура 06Воробьева И.А. «Информатика.

Язык Питон»Метод дублирования кодов (в общем виде)Для выделения логики в изложении метода в общей форме, мы«упаковали» целые фрагменты алгоритма в прямоугольные блоки на рисунке ниже. При этом блок не означает подзадачу (тогда должен был быбыть изображен только один выход), а именно просто фрагмент алгоритма.

То, что на выходе блока мы видим два выхода, означает проверку какого-то условия в конце фрагмента алгоритма.Для такого алгоритма очень сложно составить все необходимые тесты.Структурировать его можно продублировав те блоки, где возникаетнарушение структурности: в блоках 5, 7 и 8. Почему, объяснено нарисунках ниже.нет проблемыесть проблема, так как есть проблема (аналог 7.5.б)внутрь управляющейконструкции (if)заходит ветвь извнешнего блока (этореализуется толькобезусловнымпереходом goto)7Воробьева И.А. «Информатика. Язык Питон»Этот алгоритм структурирован, но все равно воспринимается тяжело.

Насамом деле, если бы мы его строили изначально, то по методунисходящего проектирования, три уровня (два вложения). Покажем это..Верхний уровень обобщения (мы его называем головной модуль программы или нулевой уровень алгоритма). Раскроем подзадачи:1.11.28Воробьева И.А. «Информатика. Язык Питон»На самом нижнем уровне получим простые подзадачи. Количество тестов суммарно может и не уменьшится, зато составить их будет значительно проще, двигаясь в обратном направлении «снизу-вверх».2.12.23.13.2При структурировании нам пришлось продублировать дважды блок 5и трижды блоки 7 и 8.

Если под блоком понимать один два оператора,тогда мы получаем не слишком большое увеличение размера кода и затрат сил и времени. Если дублированию подвергается более существенный фрагмент кода, тогда переходят к выделению вспомогательных алгоритмов, так называемых подпрограмм. Каждая уникальная подзадачаоформляется в подпрограмму, и дублировать приходится вновь один дваоператора – вызов подпрограммы.Метод Булевой переменной (метод флажка)С этим методом мы уже сталкивались, когда рассматривали алгоритмы с досрочным выходом из просмотра (поиска) массивов. Методприменяется тогда, когда происходит нарушение структурности в циклах,например, два выхода из одного цикла.

Изложим суть метода еще раз:1. В алгоритм вводится дополнительная переменная-флажок (частологического типа, откуда и название, но в целом это не обязательнои определяется смыслом задачи). До начала цикла флажку присваивают начальное значение – условие продолжения цикла.2. Цикл повторяется до тех пор, пока флажок сохраняет свое значение.3. В точках, где необходимо завершить цикл, изменяют значениефлажка (не забывайте, что цикл завершится только при проверкеусловия завершения цикла, что при невнимательном кодированииможет привести к исполнению дополнительных нежелательныхоператоров).9Воробьева И.А. «Информатика.

Язык Питон»Метод может иметь различные модификации, например можно рассматривать один флажок с несколькими состояниями или несколькофлажков, внося необходимые комбинации состояний или флажков в условие завершения цикла.Пусть исходная блок-схема имеет вид:Как и в случае 7.4.

структурирование нарушено из-за двух выходовиз одного цикла, но метод объединения условий не подходит из-за выполнения по каждому выходу дополнительных действий – Д1 и Д2.Структурируем алгоритм по методу флажка:10Воробьева И.А. «Информатика. Язык Питон»Композиция методов структурированияЭту же исходную блок-схему можно структурировать, применяя композицию двухпервых методов: объединения условий и дублирования кодов.Заметим, что метод флажка логически проще, хоть иможет показаться более громоздким. Простая логикаобеспечивает надежность коде – никогда не забывайтеэто, если захотите «сэкономить» в количестве операторов, забывая о логике, потратите намного больше времени либо на отладке кода, либо на исправлении ошибок, вскрытых при тестировании.

Характеристики

Тип файла
PDF-файл
Размер
1,04 Mb
Тип материала
Высшее учебное заведение

Тип файла PDF

PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.

Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.

Список файлов лекций

Воробьева И.А. «Информатика
Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6294
Авторов
на СтудИзбе
314
Средний доход
с одного платного файла
Обучение Подробнее