Таблица 23
Вид данных | Характеристика данных | Обозначение |
входные | целое десятичное число, простое данное | А |
выходные | целое двоичное число, простое данное | Z |
промежуточные | - частное от деления на 2 или делимое, простое данное - остаток при делении на 2, массив | B C |
2) в соответствии с принципом нисходящего проектирования представим вначале в виде блок-схемы обобщенный алгоритм перевода (рис. 3).
Рис. 3. Укрупненная блок-схема перевода
В задачу включена проверка необходимости перевода (блок 2): очевидно, перевод десятичного целого числа в двоичную систему счисления необходим, если переводимое число не меньше 2. Так, например, если исходное десятичное число (переменная А) равно 5, управление переходит на блок 4, в котором начинается сам перевод. Если же исходное число равно, например, 1, управление передается блоку 3, в котором результирующая переменная Z приравнивается исходному числу: т.е. результат совпадает с входными данными. В этом случае алгоритм перевода заканчивает свою работу. В соответствии с принципом модульного проектирования блок Перевод в силу сложности задачи перевода показан как предопределенный процесс и требует отдельной разработки. Оставшиеся шаги (анализ, ввод и вывод) могут быть реализованы как отдельные операторы произвольного языка программирования, потому дальнейшей конкретизации не подлежат;
3) в соответствии с принципом нисходящего проектирования представим в виде блок-схемы блок, реализующий задачу перевода (рис. 4).
Рис. 4 . Блок-схема задачи перевода
В блоке 1 определяется частное от деления исходного числа на 2. Его значение присваивается переменной В.
В блоке 2 рассчитывается первый остаток. Его значение присваивается первому элементу одномерного массива С.
В блоке 3 задается условие выполнения цикла: перевод числа продолжается, пока частное остается не меньше 2 (эта проверка аналогична той, что проводилась в блоке 2 блок-схемы рис. 3). Если условие нарушается, управление передается на блок 6, в котором из полученных ранее остатков и последнего частного «собирается» результат. Очевидно, это сложная задача, поэтому блок 6 в соответствии с принципом модульного проектирования представлен как предопределенный процесс.
Если же в результате анализа в блоке 3 определена необходимость продолжения перевода, управление передается на блок 4. В этом блоке последовательно формируется одномерный массив, в котором в результате сохраняются все остатки от делений. Очевидно, этот блок в силу сложности задачи первоначально следует представить как предопределенный процесс.
В блоке 5 «подготавливается» новое выполнения цикла: как отмечалось ранее, на очередном шаге цикла бывшее частное становится делимым. Эта замена формально представляется той подменой, которая и выполняется в этом блоке. Управление передается блоку 3, в котором уже в роли делимого выступает бывшее на предыдущем шаге частное.
4) в соответствии с принципом нисходящего проектирования представим в виде блок-схемы задачу формирования С (рис. 5).
Рис. 5. Блок-схема формирования массива остатков С
В блоке 1 выполняется переход к очередному элементу массива с остатками от деления. В блоке 2 рассчитывается остаток от деления. Его значение присваивается очередному элементу массива С;
5) представим в виде блок-схемы задачу формирования Z (рис. 6);
Рис. 6. Блок-схема задачи формирования Z
В блоке 1 переменной Z присваивается последнее частное.
В блоке 2 организуется цикл для обращения ко всем элементам массива С, начиная с последнего, имеющего номер I, и кончая первым. Каждый элемент массива С приписывается к цепочке Z (операция Ä означает приписывание).
Взаимосвязь модулей показана на рис. 7.
Рис. 7. Взаимосвязь модулей задачи перевода
Рассмотрим теперь на примере, как работает полученный алгоритм. Это требуется для анализа его корректности. Зададимся положительным целым десятичным числом, например, равным 5, и выполним его перевод в двоичную систему счисления по приведенному алгоритму. В силу свойства дискретности алгоритма представим перевод в виде таблицы (табл. 24).
Таблица 24
Шаг алгоритма | Выполняемое действие | Значения переменных | ||
до выполнения шага алгоритма | после выполнения шага алгоритма | |||
Модуль | Блок | |||
1 | Основной | 1 | А не определено | А=5 |
2 | Основной | 2 | А=5 | не меняется |
3 | Перевод | 1 | В не определено | В=целая часть (5/2) = 2 |
4 | Перевод | 2 | С(1) не определено | С(1) = 5-2*2 = 1 |
5 | Перевод | 3 | В=2 | не меняется |
6 | Формирование С | 1 | I=1 | I = 2 |
7 | Формирование С | 2 | С(2) не определено | С(2) = 2- целая часть (2/2)*2 = 0 |
8 | Перевод | 5 | В = 2 | В = целая часть (2/2) = 1 |
9 | Перевод | 3 | В = 1 | не меняется |
10 | Формирование Z | 1 | Z не определена | Z = 1 |
11 | Формирование Z | 2 | J не определена | J = 2 |
12 | Формирование Z | 3 | Z = 1 | Z = 1ÄC(2) = 1Ä0 = 10 |
13 | Формирование Z | 2 | J = 2 | J = 1 |
14 | Формирование Z | 3 | Z = 10 | Z = 10ÄC(1) =10Ä1 = 101 |
15 | Формирование Z | 2 | J = 1 | J = 0 |
16 | Основной | 5 | Z = 101 | не меняется |
Часть 5. Правила оформления курсовой работы
Оформление курсовой работы должно быть выполнено аккуратно, текст пояснительной записки подготовлен с помощью текстового процессора WinWord (все текстовые абзацы оформлять в едином стиле), отпечатан на принтере на листах формата А4, снабжен титульным листом (оформление см. далее).
По заданиям 1 - 11 представить только данные (таблицы, рисунки, формулы), описывающие ход решения задачи, аналогичные тем, которые приведены в указаниях по выполнению заданий (см. табл. 25). По заданию 12 представить блок-схемы, выполненные в WinWord.
Таблица 25
№ задания | №№ формул | №№ рисунков | №№ таблиц |
1 | (1) - (3), (5), (6) | - | 1 |
2 | (7), (9) | - | 3, 4 |
3 | (10) | - | 6, 7 |
4 | (11) | - | 8 |
5 | (12), (13) | - | 9, 10 |
6 | (15) | 1 | 11, 12 |
7 | (16) | 2 | 13, 14 |
8 | (17) | - | 15, 16 |
9 | - | - | 17 – 20 |
10 | (22) - (24), (26), (27), (29) | - | - |
11 | (30) – (43) | - | 21, 22 |
12 | - | 3 - 7 | 23, 24 |
Калининградский государственный технический университет