
- •Раздел I. ОСНОВЫ ИНФОРМАТИКИ.
- •Тема 1. Арифметические и логические основы компьютера и принцип программного управления.
- •1.1. Системы счисления.
- •1.2. Двоичная система счисления
- •1.3. Восьмеричная система счисления.
- •1.4. Шестнадцатеричная система счисления.
- •1.5. Перевод чисел из одной системы счисления в другую.
- •1.6. Арифметические операции в позиционных системах счисления.
- •Представление в компьютере целых чисел.
- •Выполнение арифметических действий над целыми числами в компьютере.
- •Представление в компьютере вещественных чисел.
- •Стандартные форматы представления вещественных чисел:
- •Выполняет арифметических действий над нормализованными числами.
- •Сложение и вычитание
- •Умножение
- •Деление
- •1.7. Основные логические операции и правила их выполнения.
- •Алгебра логики
- •Логическое сложение.
- •Логическое умножение.
- •Логическое отрицание.
- •Эквивалентность.
- •ОСНОВНЫЕ ЗАКОНЫ АЛГЕБРЫ ЛОГИКИ
- •2. Логические элементы. Таблица истинности. Структурная формула. Функциональная схема.
- •Логический элемент
- •3. Преобразование логических формул.
- •4.Программный принцип управления. Команда, ее структура. Программа. Взаимодействие устройств при выполнении команд.
- •Раздел II. ОСНОВЫ ТЕОРИИ АЛГОРИТМОВ.
- •Тема 2. Общее понятие алгоритма. Разновидности структур и способы представления алгоритмов
- •2.1. Определение алгоритма. Свойства алгоритмов. Способы описания алгоритма. Базовые структуры схемы алгоритма. Структурированные схемы и их построение.
- •2. 2. Линейные и разветвляющиеся структуры. Циклические структуры. Типы циклов. Предопределенные процессы. Рекурсия.
- •Раздел III. ТЕХНОЛОГИИ РАЗРАБОТКИ ПРОГРАММ.
- •Тема 3. Основы технологии структурного программирования.
- •3.1. Характеристики качества программ. Модульные программы. Классические методы проектирования модульных программ.
- •3.2. Нисходящая и восходящая разработка алгоритмов.
- •Нисходящая разработка алгоритма.
- •Восходящая разработка алгоритма
- •Тема 4. Объектно-ориентированный подход, основные принципы разработки программ.
- •4.1. Понятие жизненного цикл объекта и абстракции для его представления

54
Раздел III. ТЕХНОЛОГИИ РАЗРАБОТКИ ПРОГРАММ.
Тема 3. Основы технологии структурного программирования.
3.1. Характеристики качества программ. Модульные программы. Классические методы проектирования модульных программ.
Программирование вообще можно определить как проектирование, кодирование и тестирование программы.
Структурное программирование это проектирование, написание и тестирование программы в соответствии с заранее определенной дисциплиной.
Раньше хорошими программистами считали тех, кто писал весьма хитроумные программы, которые занимали минимум основной памяти и выполнялись за кратчайшее время. Это было естественно, потому что в старое доброе время основная память была более дорогой, машины были намного медленнее, чем сегодня. Результатом хитроумного кодирования оказывались программы, которые трудно было (если не совершенно невозможно) понять другим лицам. Программисты зачастую сами признавали, что свою собственную программу они с трудом понимают уже через
55
полгода, а то и через месяц. Фактически каждая написанная программа впоследствии модифицируется при изменении внешних требований или для ликвидации ошибок. Изменения, вносимые в запутанную программу, еще больше усложняют ее понимание впоследствии. Подобные программы получили название BS-программ (Bowl of Spaghetti блюдо спагетти), так как при попытке разобраться в них необходимо нарисовать нечто напоминающее блюдо спагетти.
На некотором этапе развития программного обеспечения выяснилось, что разработка сложных алгоритмов и соответствующих им программ становится практически неуправляемой. Резко ухудшилась читаемость программ, снизилась эффективность программ и их надежность, усложнилось тестирование программ, и в итоге, увеличилось время разработки и стоимость программного продукта.
Исходя из этих проблем, лучшие программисты 70-х годов Э.Дейкстра и Н.Вирт разработали строгие правила разработки программ, которые получили название
“Методология структурного программирования”. Они рассматривают программу
(алгоритм) как совокупность иерархических модулей, которые позволяют четко структурировать программу, что улучшает ее понимание программистами, позволяет выполнять математическое доказательство ее корректности и тем самым повысить надежность функционирования программ и сократить срок их разработки.
Основные стандарты структурного программирования:
Алгоритм (программ) должна разделяться на независимые части, называемые модулями.
Модуль имеет одну входящую и одну выходящую точку.
Модуль – это независимый блок, который физически и логически отделен от других модулей.
Каждый модуль начинается с комментария, объясняющего его назначение, назначение переменных, передаваемых в модуль и из него, модулей, которые его вызывают, и модулей, которые вызываются из него.
В модуле используются только базовые управляющие конструкции (ветвление,
повторение, следование, вход, выход).
Вложенность операторов IF не должна быть более трех.
В 1966 году Бом и Якопини доказали следующую теорему: любую блок-схему с одним входом и одним выходом можно построить, используя базисное множество базовых структур (следование, ветвление, цикл-пока).
Блок-схема называется структурированной, если она построена на основе базисного множества базовых структур.
Для построения структурированных блок-схем была разработана специальная технология, которая называется пошаговой детализацией. Пошаговая детализация представляет собой процесс дробления задачи на модули, т.е. исходя из общей задачи,

56
вычленяются подзадачи, устанавливаются логические связи между ними. После этого переходят к уточнению выделенных подзадач. Этот процесс детализации продолжается до уровня позволяющего достаточно легко реализовать подзадачу на выбранном языке программирования.
При пошаговой детализации используется принцип замещения, который состоит в замене любого функционального блока (прямоугольника) блок-схемы некоторой базовой структурой (следование, ветвление, повторение) из исходного базисного множества. Достоинство пошаговой детализации состоит в том, что она позволяет разработчику алгоритма упорядочить свои рассуждения.
Пример. Построить структурированную блок-схему алгоритма для вычисления функции
На первом шаге задачу представим в виде одного блока, в котором запишем кратко условие задачи.
На втором шаге функциональный блок преобразуем в развилку, где выделено вычисление Y при x<0.

57
На последнем шаге функциональный блок предыдущей схемы заменяем развилкой.