
- •Раздел 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. Понятие жизненного цикл объекта и абстракции для его представления
58
В итоге выполнения нескольких шагов мы получили структурированную блоксхему алгоритма решения задачи.
3.2. Нисходящая и восходящая разработка алгоритмов.
Первое важное правило состоит в том, чтобы сначала продумать задачу, которую необходимо решить. Как только мы хорошо поймем задачу и способ решения задачи будет нами будет полностью и во всех деталях продуман, само проектирование окажется быстрым и легким.
Распространенной ошибкой являются попытки начать писать программу до того, как будет уяснена полная постановка задачи. Основная причина, по которой следует воздержаться от преждевременного начала программирования, состоит в том, что обдумывание задачи и поиск метода ее решения должны проводиться в терминах, наиболее адекватных самой этой задаче. Эти термины чаще всего далеки от синтаксиса применяемого языка программирования и могут быть утверждениями на естественном языке и схемами.
Исходная формулировка способа решения задачи должна быть в конечном итоге преобразована в алгоритм и программу, но этот процесс преобразований млжет оказаться нелегким.
Нисходящая разработка алгоритма.
Суть нисходящей разработки (нисходящего проектирования, проектирования сверху вниз) состоит в пошаговой
декомпозиции (разложении) задачи на точно определенные подзадачи.
Формальных критериев декомпозиции не существует, поэтому процесс, особенно для нестандартных задач, является в большой степени творческим и требует навыка и опыта. Парадоксальным на первый взгляд, но наиболее конструктивным критерием выделения подзадач является такой: каждая подзадача должна быть сформулирована кратко, точно и емко («Найти сумму..», «Проверить наличие элементов …» и т.д.).
Процесс разработки является иерархическим. На каждом уровне проектирования полагаем, что каждая выделенная подзадача реализуема, и, не интересуясь деталями этой реализации, рассматриваем ее как единое обобщенное действие, называемое абстракцией. Подзадача некоторого уровня раскрывается на следующем, также путем разложения на подзадачи – и т.д., до получения подзадач, алгоритм решения которых можно непосредственно записать на языке программирования.
Ниже приведена общая схема нисходящего проектирования.

59
На любом уровне проектирования одни элементы алгоритма уже доведены до исполнительного уровня и могут быть закодированы, другие же представлены в виде абстракций. Нисходящая отладка представляет собой постепенный процесс отладки такого незавершенного кода программы на каждом уровне.
В основе ее лежит тот факт, что любая подзадача связана с остальными только своим интерфейсом, т.е. совокупностью получаемых ею входных данных и передаваемых дальше выходных данных. Можно взять некоторый тест и вместо операций по решению подзадачи вставить операции, формирующие соответствующие тесту выходные значения. Совокупность таких операций называется заглушкой (или имитатором).
Заглушка должна только получить входные данные подзадачи и напрямую сформировать результаты согласно тесту, поэтому тексты заглушек должны быть максимально простыми. Подставив вместо подзадач заглушки, мы будем иметь, с одной стороны, законченную с точки зрения компьютера программу; с другой стороны, ее результаты работы на рассматриваемом тесте не будут отличаться от результатов итоговой программы.
Такой процесс отладки дает на каждом уровне два важных результата:
-возможность отладки уже готовых частей программы;
-возможность отладки взаимодействия подзадач, т.е. логики передачи данных между ними.
При этом то, что уже отлажено, далее меняться не должно, и все усилия можно сосредоточить на раскрытии еще не решенных подзадач.