- •Основы алгоритмизации
- •Специфика решения задачи с использованием компьютера
- •Роль моделирования при решении сложных задач
- •Устройство компьютера как инструмента решения задач
- •Пример решения задачи с использованием компьютера
- •Вопросы для самоконтроля
- •Понятие алгоритма
- •Свойства алгоритмов и способы их задания
- •Понятие структурной алгоритмизации
- •Базовый набор алгоритмических структур
- •Примеры классических алгоритмов
- •Переменные-счетчики и аккумуляторы
- •Алгоритм перестановки значений двух переменных
- •Простейший алгоритм сортировки
- •Последовательный и двоичный поиск в массиве данных
- •Вопросы для самоконтроля
- •Основы программирования
- •Изучить три темы:
- •Ответить на вопросы для самоконтроля по каждой теме.
- •Эволюция программирования как деятельности
- •Развитие вычислительной техники
- •Парадигмы современного программирования
- •Уровни языков программирования
- •Современные языки программирования высокого уровня
- •Программирование как вид деятельности
- •Вопросы для самоконтроля
- •Инструменты программирования
- •Основные понятия программирования
- •Этапы разработки программы
- •Функции транслятора в процессе создания программы
- •Средства создания программ
- •Современные системы программирования
- •Вопросы для самоконтроля
- •Проектирование и внедрение программ
- •Этапы разработки программного обеспечения
- •Методы маркетинга программного обеспечения
- •Вопросы для самоконтроля
- •Технология алгоритмического программирования
- •Ответить на вопросы для самоконтроля по каждой теме.
- •Понятия алгоритмического программирования
- •Классификация данных
- •Базовые типы данных
- •Структурированные данные
- •Программа как совокупность операторов. Виды операторов
- •Вопросы для самоконтроля
- •Принципы структурного программирования
- •Понятие подпрограммы
- •Процедуры и функции как разновидность подпрограмм
- •Ответить на вопросы для самоконтроля по каждой теме.
- •Программный код экранной формы
- •Вопросы для самоконтроля
- •Объектно-ориентированное программирование
- •Понятие объекта и класса
- •Концепции объектно-ориентированного программирования
- •Вопросы для самоконтроля
- •Заключение
- •3.3. Глоссарий (краткий словарь терминов)
- •3.4 Технические и программные средства обеспечения дисциплины
-
Понятие структурной алгоритмизации
Появлению технологии структурной алгоритмизации способствовали три фактора:
-
Формирование понятия «программистская деятельность», связанного с процессом компоновки программы из подпрограмм и ее отладки
-
Появление языков программирования высокого уровня при отсутствии общей методологии программирования
-
Публикация труда Э́дсгера Ви́бе Де́йкстры «Заметки по структурному программированию» (1968 г.) с доказательством достаточности трех типов управляющих структур. Автор отстаивал необходимость математического подхода к программированию, предполагающего предварительное точное, всестороннее математическое описание задачи и способа её решения, формальное доказательство правильности выбранного алгоритма и последующую реализацию алгоритма в виде максимально простой, структурированной программы, корректность которой должна быть формально доказана.
Причина неоправданной сложности компьютерных программ кроется в отсутствии в них четкой математической структуры (Э.В. Дейкстра). Решение проблемы сложности программ – в использовании трех типов управляющих структур:
-
простой последовательности,
-
альтернативы,
-
повторения.
Структурное программирование – это технология пошагового разбиения алгоритма на все более мелкие части с целью получить такие элементы, для которых можно легко написать конкретные предписания. Под конкретными предписаниями обычно понимают линейные, разветвляющиеся и циклические структуры.
В основу структурной алгоритмизации положены следующие требования:
-
программа должна состоять из мелких шагов, размер которых определяется количеством решений, принимаемых программистом на каждом шаге;
-
логика программы должна опираться на минимальное число простых базовых управляющих структур.
Структурная алгоритмизация основывается на двух принципах:
-
последовательная детализация алгоритма «сверху вниз»;
-
ограниченность базового набора структур для построения алгоритма любого уровня сложности.
Основные свойства и достоинства структурного программирования:
-
возможность преодоления барьера сложности программ;
-
возможность демонстрации правильности программ на различных этапах решения задач;
-
наглядность программ;
-
простота модификации (внесения изменений).
Правила составления алгоритма с применением структурной алгоритмизации:
-
Задача записывается на естественном языке предметной области.
Пример. По результатам испытаний выбрать оптимальные параметры двигательной установки ракеты.
-
Начало;
-
Список данных: данные: тип; ... ; данные: тип;
-
Ввод (исходные данные);
-
Вывод (исходные данные);
-
Обработка результатов испытаний;
-
Оценка надежности двигательной установки;
-
Выбор оптимальных параметров;
-
Вывод (результат);
-
Конец.
-
Алгоритм может быть реализован на ЭВМ, если он содержит только элементарные предписания и структуры, входящие в базовый набор. Элементарными, т.е. не требующими детализации, являются следующие предписания или операции:
-
Начало;
-
Конец;
-
Список данных;
-
Ввод;
-
Вывод;
-
вычислительные операции, реализуемые операторами присваивания. Сложные конструкции, разбиваются на более простые.
Пример. Предписание 5 для рассматриваемого алгоритма может быть записано:
5.1. Начало 5;
5.2. ... Операции, раскрывающие смысл обработки результатов испытаний ... ;
5.N. Конец 5.
Количество шагов при последовательной детализации не ограничивается. Детализация заканчивается, когда конструкции алгоритма будут содержать только элементарные предписания и структуры, входящие в базовый набор. Предписания 1–4 и 8–9, как правило, присутствуют в каждом алгоритме, разрабатываемом методом структурной алгоритмизации.