20. Структурное программирование. Понятия и принципы.
Структу́рное программи́рование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 1970-х годах Э.Дейкстрой и др.
При создании средних по размеру приложений (несколько тысяч строк исходного кода) используется структурное программирование, идея которого заключается в том, что структура программы должна отражать структуру решаемой задачи, чтобы алгоритм решения был ясно виден из исходного текста. Для этого надо иметь средства для создания программы не только с помощью трех простых операторов, но и с помощью средств, более точно отражающих конкретную структуру алгоритма. С этой целью в программирование введено понятие подпрограммы – набора операторов, выполняющих нужное действие и не зависящих от других частей исходного кода. Программа разбивается на множество мелких подпрограмм, каждая из которых выполняет одно из действий, предусмотренных исходным заданием. Комбинируя эти подпрограммы, удается формировать итоговый алгоритм уже не из простых операторов, а из законченных блоков кода, имеющих определенную смысловую нагрузку, причем обращаться к таким блокам можно по названиям.
Идеи структурного программирования появились в начале 70-годов в компании IBM, в их разработке участвовали известные ученые Э. Дейкстра, Х. Милс, Э. Кнут, С. Хоор.
Структурное программирование основано на модульной структуре программного продукта и типовых управляющих структурах алгоритмов обработки данных различных программных модулей.
Типы управляющих структур:
– последовательность;
– альтернатива (условие выбора);
– цикл.
Распространены две методики (стратегии) разработки программ, относящиеся к структурному программированию:
– программирование «сверху вниз»;
– программирование «снизу вверх».
Программирование «сверху вниз», или нисходящее программирование – это методика разработки программ, при которой разработка начинается с определения целей решения проблемы, после чего идет последовательная детализация, заканчивающаяся детальной программой.
Сначала выделяется несколько подпрограмм, решающих самые глобальные задачи (например, инициализация данных, главная часть и завершение), потом каждый из этих модулей детализируется на более низком уровне, разбиваясь в свою очередь на небольшое число других подпрограмм, и так происходит до тех пор, пока вся задача не окажется реализованной.
В данном случае программа конструируется иерархически - сверху вниз: от главной программы к подпрограммам самого нижнего уровня, причем на каждом уровне используются только простые последовательности инструкций, циклы и условные разветвления.
Такой подход удобен тем, что позволяет человеку постоянно мыслить на предметном уровне, не опускаясь до конкретных операторов и переменных. Кроме того, появляется возможность некоторые подпрограммы не реализовывать сразу, а временно откладывать, пока не будут закончены другие части. Например, если имеется необходимость вычисления сложной математической функции, то выделяется отдельная подпрограмма такого вычисления, но реализуется она временно одним оператором, который просто присваивает заранее выбранное значение (например, 5). Когда все приложение будет написано и отлажено, тогда можно приступить к реализации этой функции.
Программирование «снизу вверх», или восходящее программирование – это методика разработки программ, начинающаяся с разработки подпрограмм (процедур, функций), в то время когда проработка общей схемы не закончилась.
Такая методика является менее предпочтительной по сравнению с нисходящим программированием так как часто приводит к нежелательным результатам, переделкам и увеличению времени разработки.
Очень важная характеристика подпрограмм – это возможность их повторного использования. С интегрированными системами программирования поставляются большие библиотеки стандартных подпрограмм, которые позволяют значительно повысить производительность труда за счет использования чужой работы по созданию часто применяемых подпрограмм.
Подпрограммы бывают двух видов – процедуры и функции. Отличаются они тем, что процедура просто выполняет группу операторов, а функция вдобавок вычисляет некоторое значение и передает его обратно в главную программу (возвращает значение). Это значение имеет определенный тип.
Чтобы работа подпрограммы имела смысл, ей надо получить данные из внешней программы, которая эту подпрограмму вызывает. Данные передаются подпрограмме в виде параметров или аргументов, которые обычно описываются в ее заголовке так же, как переменные.
Подпрограммы вызываются, как правило, путем простой записи их названия с нужными параметрами.
Подпрограммы активизируются только в момент их вызова. Операторы. Которые находятся внутри подпрограммы, выполняются, только если эта подпрограмма явно вызвана.
Подпрограммы могут быть вложенными – допускается вызов подпрограммы не только из главной программ, но и из любых других программ.
В некоторых языках программирования допускается вызов подпрограммы из себя самой. Такой прием называется рекурсией и опасен тем, что может привести к зацикливанию – бесконечному самовызову.
- Процессы жизненного цикла систем (на основе iso/iec 15288)
- Структура и функциональное назначение процессов жизненного цикла программных средств (на основе iso/iec 12207)
- Модель качества и критерии качества программных средств (на основе iso/iec 9126 и iso/iec 25010)
- Оценка зрелости процессов создания и сопровождения программных средств на основе методологии cmm и cmmi (на основе iso/iec 15504)
- Система менеджмента информационной безопасности (на основе серии iso/iec 27000)
- Методы кодирования текстовой, графической и звуковой информации в эвм. Аналоговые, дискретные и цифровые сигналы
- История создания, принципы работы и основные сервисы сети Интернет.
- Представление данных в эвм. Единицы измерения информации. Двоичные приставки по гост 8.417-2002 и iec 80000-13.
- Принципы и архитектура фон Неймана.
- Порядок обработки команд микропроцессором. Прерывания. Типы прерываний.
- Поколения эвм. Основные особенности.
- I Поколение 50-60-е гг.
- II Поколение 60-70-е гг.
- III Поколение 70-80-е гг.
- IV Поколение 80-е (по наши дни?).
- Классификация запоминающих устройств в эвм. Современные реализации запоминающих устройств.
- 13. Алгебра логики. Основные законы алгебры логики. Применение алгебры логики в информатике.
- 14. Понятие алгоритма. Методы оценки алгоритмической сложности.
- 15. Понятие системы. Системный анализ. Применение системнго анализа в информатике.
- 16. Теория формальных грамматик. Основные понятия и положения. Применение в информатике.
- 17. Теория вероятностей. Основные понятия и положения. Применение в информатике.
- 18. Математические методы оптимизации и их применение в информатике.
- 19. Понятие компьютерного моделирования. Вычислительный эксперимент.
- 20. Структурное программирование. Понятия и принципы.
- 21. Объектно-ориентированное программирование. Понятия и принципы.
- 22. Декларативные языки программирования и их сфера применения.
- 23. Событийно-ориентированное программирование.
- 24. Многопоточное программирование. Процесс и поток выполнения. Средства синхронизации потоков.
- 25. Основные алгоритмы и структуры данных, применяемые в вычислительных системах.
- 26. Приёмы (шаблоны) объектно-ориентированного программирования.
- 27. Теория графов. Основные понятия. Решаемые задачи.
- 28. Средства моделирования при разработке программного обеспечения.
- 29. Инструментальные средства разработки программного обеспечения.
- 30.Методологии разработки программного обеспечения. Классификация. Особенности применения.
- 31. Программные средства для организации совместной разработки программного обеспечения.
- 32. Программный продукт. Жизненный цикл программного продукта.
- 4.1.1.1 Основные процессы жизненного цикла
- 5. Вспомогательные процессы жизненного цикла по гост р исо/мэк 12207-99.
- 4.1.1.2 Вспомогательные процессы жизненного цикла
- 33. Бизнес-процесс. Средства анализа и моделирования. Автоматизация бизнес-процессов.
- 34. Архитектура вычислительной системы, разновидности.
- 35. Аппаратное обеспечение вычислительных систем.
- 36. Архитектура вычислительной сети.
- 37. Виртуализация вычислительных ресурсов. "Облачные" вычисления.
- 38. Способы реализации человеко-машинного взаимодействия.
- 39. Принципы защиты информации в вычислительных системах и сетях.
- 40. Операционная система. Понятие и основные задачи. Классификация операционных систем.
- 41. Файловая система и принципы построения и основные функции.
- 42. Понятие машинного обучения и искусственного интеллекта. Решаемые задачи.
- 43. Методы сжатия графической информации. Области применения различных методов.
- 44. Методы сжатия звуковой информации. Области применения различных методов.
- 45. Понятие виртуальной и дополненной реальности. Средства реализации.
- 46. Компьютерная графика. Различные методы и технологии реализации.
- 47. Системы управления базами данных, разновидности.
- 48. Принципы построения реляционных баз данных. Нормализация данных.
- 49. Распределённые базы данных. Принципы построения и решаемые задачи.
- 50. Понятие открытой вычислительной системы. Классификация. Принципы построения.
- 51. Методы анализа информационных систем
- 52. Средства мониторинга сетевого трафика
- 53. Метод Монте-Карло. Принципы построения моделей для анализа эффективности информационных систем (основа построения, достоинства и недостатки).
- 54. Методы управления сетью: коммутация каналов, коммутация пакетов.
- 55. Методы балансировки трафика
- 56. Семиуровневая модель osi
- 57. Локальные вычислительные сети (топология, методы доступа)
- 58. Методы повышения достоверности при передаче информации
- 59. Понятие качества обслуживания в компьютерных сетях. Средства обеспечения качества обслуживания.
- 60. Назначение и принцип работы интернет сети
- 61. Основные протоколы сети Интернет, их назначение.
- 62. Понятие dns. Структура доменных имен в сети Интернет.
- 63. Понятие стека протоколов. Стек протоколов tcp/ip, udp/ip.
- 64. Системы автоматизированного проектирования (сапр).
- 70. Принципы построения распределенных информационных систем. Промежуточное программное обеспечение для обработки сообщений.
- 71. Сервисно-ориентированная архитектура распределённых приложений. Основные протоколы.
- 72. Корпоративные информационные системы (класс erp). Разновидности. Решаемые задачи.
- 73. Развитие новых информационно-коммуникационных технологий как база становления информационного общества
- 74. Модели жизненного цикла программного обеспечения
- 6. Модели жц программного продукта: каскадная.
- 7. Модели жц программного продукта: итерационная.
- 8. Модели жц программного продукта: спиральная (быстрого прототипирования).
- 75. Основные принципы структурного анализа систем
- 76. Консалтинг в области информационных технологий
- 77. Методика проведения обследования объектов автоматизации
- 78. Методы построения и анализа моделей деятельности предприятия
- 79. Структурно-функциональные модели
- 80. Модели потоков данных (dfd)
- 81. Модели "сущность-связь" (erd)
- 83. Объектно-ориентированный язык визуального моделирования uml
- 84. Методология rup: назначение и основные характеристики
- 85. Диаграммы вариантов использования (use-cases diagram)
- 86. Диаграммы классов (class diagram). Основные объекты диаграммы
- 87. Диаграммы деятельности (activity diagram). Основные объекты диаграммы
- 88. Диаграммы последовательности (sequence diagramm)
- 19. Uml: диаграмма состояний.