Похожие презентации:
Основы структурного программирования. Методы структурного программирования
1. Лекция Основы структурного программирования. Методы структурного программирования.
2. Цель:
Изучить:понятие – структурное программирование,
дополнительные требования структурного
программирования,
проектирование и кодирование сверху вниз.
3. Структурное программирование
Структурное программированиеЭто понятие относится к процедурному программированию. В широком смысле –
структурное программирование – создание удобных в пользовании программ. В
узком смысле – программирование в соответствии со структурной теоремой. Ее
доказали итальянцы С. Бем и К. Джакопини в 1966 г.
Теорема: Всякая программа может быть составлена из 3-х основных блоков:
функционального блока, развилки и обобщенного цикла.
Основное свойство этих конструкций – 1 вход и 1 выход. Кроме того, две последние
конструкции можно представить как обобщенный функциональный блок. Эти
блоки в программе не будут пересекаться. Поэтому программа будет читаться
свеху-вниз, без переходов. Основой структурного программирования является
отказ от оператора GO TO – оператора безусловного перехода. Программа
становится легко читаемой. Если нет переходов, то отпадает необходимость
рисовать блок-схемы. Алгоритмы пишут на псевдокоде. Блок-схемы рисуют лишь
укрупнено, изображая лишь отдельные модули, чтобы показать связи.
4. Структурное программирование
Структурное программированиеЖесткое требование структурного программирования –
использовать только эти 3 конструкции.
Более мягкое – разрешается использовать оператор
выбора и другие операторы, не нарушающие свойство
блоков: «1 вход – 1 выход». Оператор GO TO
разрешается использовать в исключительных случаях,
и только вперед. Обычно исключительными случаями
бывают досрочный выход из цикла и досрочное
окончание выполнения программы. В современных
языках программирования есть для этого специальные
операторы.
5. Дополнительные требования структурного программирования
1.Ввод исходных данных. Ввод должен быть оформлен так, чтобы было понятно, чтонужно вводить. Если данные должны находиться в какой-то области, отобразить
это на экране. Например:
Введите 0<x<10 x=
Если это размерная величина, задать размерность.
2. Вывод результатов должен быть понятным и наглядным.
3. Программа должна быть, по возможности, универсальной. В том смысле, что
исходные данные должны вводиться через операторы ввода, а не быть в формулах и
операторах виде чисел.
4. В программе должны быть комментарии. Должен быть заголовок, показывающий
назначение программы, метод решения, обозначение входных и выходных данных,
фамилия программиста и дата последнего изменения программы.
5. Имена переменных должны быть такими же, как в алгоритме, а те имена, которых
нет в алгоритме, должны быть информативными. Не ленитесь применять длинные
имена.
6. Использование отступов при наборе программы. Лучше сразу набирать с отступами,
чем делать это на конечном этапе оформления программы, т.к. это ускоряет
процесс отладки.
6. Методы структурного программирования Проектирование и кодирование сверху вниз
1. Проектирование и кодирование сверху вниз. Если проектбольшой, то он разбивается на части, которые представляют собой
древовидную структуру. Сначала задача описывается на
естественном языке, в дальнейшем проект постепенно уточняется,
и на каждом таком шаге выявляются детальные функции. Таким
образом, задача разбивается на подзадачи до тех пор, пока они не
станут настолько простыми, что каждой из них будет
соответствовать один программный модуль.
Достоинства: хорошая комплексная отладка, заказчик участвует в
проектировании, промежуточные результаты можно показать
заказчику.
Недостатки: слабая автономная отладка модулей, наличие
программ-заглушек.
Обычно для простых проектов применяется метод «сэндвича».
Для одних частей используется метод нисходящего, а для других метод восходящего проектирования.
7. Модульное программирование
2.Модульное программирование - процесс разбиения
программы на отдельные модули. Модуль - это последовательность
логически связанных фрагментов, оформленных как отдельная
часть программы.
Свойства модуля: возникает в результате отдельной компиляции;
вызывается по его имени; возвращает управление тому, кто его
вызывал; может обращаться к другим модулям, непосредственно
нижестоящим в схеме иерархии; должен быть небольшого
размера; должен иметь один вход и один выход; не должен
сохранять историю своих вызовов для управления своим
функционированием; обладает единственной функцией; должен
быть независимым от других модулей; должен содержать тесно
связанные элементы; должен проверять аргументы; при
возникновении в модуле ошибок управление должно возвращаться
обратно; должен быть замкнутым.
8. Защитное программирование
3.Защитное программирование. Это такой стиль
написания программ, при котором появляющиеся ошибки
легко
обнаруживаются
и
идентифицируются
программистом. Средства защитного программирования:
все входные данные или действия пользователя подлежат
обязательной
проверке;
принцип
немедленного
обнаружения ошибок; изолирование последствий ошибок.
Для предотвращения ошибок в программе рекомендуется не
применять непроверенные способы программирования. Не
используйте принцип умолчания (когда при отсутствии
некоторого параметра программа принимает некоторое
определенное значение этого параметра). Не допускайте
зависимости программ от недостоверности данных.
Стремитесь
минимизировать
число
обращений
к
пользователю.
9. Тестирование
Тестирование - процесс обнаружения ошибок программы. Тестовые примерыразрабатываются постановщиком на этапе разработки алгоритма. Обычно вместо
одного теста готовится целая серия тестов. С целью выявления ошибок организуется
сквозной структурный контроль (просмотр). В этом случае собираются 4-6
специалистов, которые получают необходимые материалы за 5-7 дней до начала
совещания. Время совещания ограничивается двумя часами. Ведущий совещание
обеспечивает составление полного списка обнаруженных ошибок. В начале совещания
эксперты характеризуют степень завершенности и качества проекта. Разработчик делает
обзор проделанной работы, результаты подвергаются групповому анализу. По
окончании совещания председатель вручает каждому члену совещания список ошибок и
проблем, требующих решения. Разработчик обязан устранить ошибки, донести до
сведения эксперта. Рекомендуется тестирование сверху вниз. Первый тест должен быть
простым, так как он должен показывать работу этой программы вообще. Следующие
тесты, предназначенные для проверки общей организации программы, обеспечивают
обнаружение грубых ошибок. Повторно тестируйте исправленный код. Ведите журнал
обнаруженных ошибок и изменений программы.
Этапы тестирования
Проверка в нормальных условиях, т.е. программа выдает нормальные результаты для
характерной совокупности данных.
Проверка в экстремальных условиях, т.е. проверка в приграничных областях допустимых
изменений (минимальные, максимальные допустимые значения, нулевые данные,
пустые циклы, массивы, файлы).
Проверка в исключительных ситуациях.
10. Наглядность исходных текстов программ
4. Наглядность исходных текстов программ. Стиль программирования - это наборприемов программирования,
которые позволяют получать правильные,
эффективные, удобные для применения и легко читаемые программы. Стиль связан с
удобочитаемостью программы.
Необходимо стандартизировать свой стиль программирования. Если существует более
одного способа сделать что-либо, то вы должны остановиться на одном из них и
придерживаться его всегда.
Рекомендации. Вводный комментарий объясняет назначение и условие применения.
Пояснительные комментарии сопровождают те части программы, которые трудно
понять. Пробелы вставляют повсюду, где это приводит к улучшению читабельности
программы. Имя переменной формируют на основе хранящейся информации. Переменные следует явно объявлять. Имена должны отображать смысл содержания.
Допускается префиксная или венгерская нотация (предложенная венгром Шарле
Симони в начале 80-х годов), которая отражает тип переменной или объекта (п. 5.1).
Составные имена следует писать через знак подчеркивания или начинать с
прописных букв. Используйте общепринятые имена (Get, Put, Calc и др.), которые
описывают действия.
Правила сокращения имен: в сокращение всегда должны входить начальные буквы;
согласные важнее гласных; начало слова важнее его конца; длина сокращения
ограничивается числом 15; списки имен в командах объявления упорядочиваются по
алфавиту. Используйте общепринятые сокращения.
Отступы от начала строки: при записи операторов и для указания связи между ними
делаются одинаковые отступы от начала строки в размере трех позиций, т.е.
отступами выделяются структуры вложенности отдельных фрагментов программы.
11. Гибкость и эффективность программ
5. Гибкость и эффективность программ. Выносите часто изменяемые константы,адреса и имена файлов, баз в отдельные файлы настройки, ресурсов или регистрации.
Оптимизируйте программу после ее отладки. Используйте именованные константы
вместо обычных. Минимизируйте применение глобальных переменных, вложенных
структур и команд перехода Goto. Ограничивайте действия над параметрами
подпрограмм (ByVal, ByRef, Optional) (п. 2.10.2).
Общие рекомендации программисту. Помните: программы читаются людьми! Не
нужно делать комментариев больше, чем это необходимо. Используйте вводные
комментарии. Располагайте комментарии в программе таким образом, чтобы это не
делало ее менее наглядной. Одного оператора в строке достаточно. Для выделения
структуры используйте отступы. Фиксируйте соответствие букв кириллицы и букв латинского алфавита. Стремитесь к простоте и к универсальности. Используйте
постоянные приемы программирования. Унифицируйте форматы ввода и вывода
информации. Обеспечивайте максимально удобный интерфейс пользователю.
Интересуйтесь, как эксплуатируется программа. Устанавливайте более скромные
цели (работающие программы гораздо полезнее и важнее незаконченных громадных
проектов). Уменьшайте сложность путем разбиения программы на отдельные части
(модули, подпрограммы). Сложность возрастает квадратично размеру программы.
Упрощение достигается методом структурного программирования. Замена циклов
или вложенных конструкций на функции упрощает модуль. Общая схема упрощения разбиение программы на модули и оформление каждого модуля в виде процедуры,
функции, класса., компонента или ActiveX-элемента.
12. Контрольные вопросы:
1. Понятие структурного программирования.2. Перечислите дополнительные требования структурного программирования.
3. Расскажите о проектирование и кодирование сверху вниз.
4. Дайте определение- модульное программирование.
5. Расскажите о защитном программировании.
6. Что такое тестирование? Расскажите.
Программирование