Протокол работы программы
Оглавление
1 Цель работы.. 3
2 Порядок работы.. 3
3 Программирование на ToyCode. 3
3.1 Постановка задачи. 3
3.2 Алгоритм. 3
3.3 Таблица внешних спецификаций. 4
3.4 Таблица памяти. 4
3.5 Таблица тестов. 4
3.6 Листинг программы в ToyCode. 5
3.7 Протокол работы программы.. 6
3.8 Заключение. 10
4 Разветвления. Простые циклы. 11
4.1 Постановка задачи. 11
4.2 Алгоритм программы.. 11
4.3 Таблица внешних спецификаций. 11
4.4 Таблица памяти. 11
4.5 Таблица тестов. 12
5 Блок-схема. 12
6 Листинг программы.. 12
7 Протокол работы программы.. 14
8 Заключение. 17
Цель работы
1. Программирование на ToyCode.
2. Закрепление знаний по отладке программы.
3. Использование знаний из курса «Программирование на ЯВУ».
Порядок работы
1. Ознакомиться с теоретическими материалами по теме. 2. Разобрать лекционные примеры. 3. Ознакомиться с заданием согласно варианту. 4. Составить таблицу внешних спецификаций 5. Выполнить проектирование тестов к задачам. 6. Разработать и описать алгоритмы решения в виде блок-схемы или псевдокода. 4. Закодировать алгоритмы на языке ассемблера с необходимыми комментариями. 5. Получить исполняемый файл (.tcp) 7. Отладить и протестировать программу.
Программирование на ToyCode.
Постановка задачи
Выполнить вычисления Y по формуле y=5a–b/(7+v). Значения аргументов вводятся с клавиатуры.
Алгоритм
1. Ввод a
2. Ввод b
3. Ввод v
4. Загрузка 7 в аккумулятор
5. Сложение v со значением в аккумуляторе
6. Сохранение суммы в рабочей ячейке
7. Загрузка в аккумулятор b
8. Деление на значение, сохраненное в рабочей ячейке
9. Сохранение в рабочей ячейке
10. Загрузка в аккумулятор 5
11. Умножение значения аккумулятора на a
12. Вычитание рабочей ячейки из произведения
13. Сохранение в рабочей ячейке Y
14. Вывод Y
15. Стоп
Таблица внешних спецификаций
№
| Имя
| Назначение
| Тип
| ОДЗ
|
| a
| Переменная
| целый
| -9999..9999
|
| b
| Переменная
| целый
| -9999..9999
|
| v
| Переменная
| целый
| -9999..9999
|
| x
| Переменная
| целый
| -9999..9999
|
| y
| Искомая переменная
| целый
| -9999..9999
|
Таблица памяти
Переменные
| Имя переменной
| Номер ячейки памяти
| a
|
| b
|
| v
|
| y
|
| R (рабочая ячейка)
|
| Постоянные
|
|
|
|
|
Таблица тестов
№
| Тест 1
| Тест 2
| Тест 3
| Тест 4
| Тест 5
| Тест 6
| Тест 7
| Тест 8
| a
|
|
|
|
|
|
|
| -100
| b
|
|
|
|
|
|
|
| -9000
| v
|
| -7
|
|
|
| -6
|
| -6
| y
|
| ошибка!
| ошибка!
|
|
|
| -1
|
| К
| выпол
| /0
| перепол
| выпол
| дробь
| выпол
| выпол
| выпол
|
Листинг программы в ToyCode
REM Сложение значения в аккумуляторе с vADD vREM Запись в рабочую ячейкуSTO rREM Загрузка в аккумулятор bLD bDIV rREM Запись в рабочую ячейкуSTO rREM Загрузка в аккумулятор bLD zREM Умножение на aMPY aREM Вычитание разности из произведенияSUB rREM Запись в уSTO yREM Вывод уOUT yREM Конец алгоритмаSTOPREM Начальные данныеa: DC 3b: DC 80v: DC 13z: DC 5x: DC 7y: DC 11r: DC 0
Протокол работы программы
Заносим наш код в поле исходного кода в трансляторе языка TOYCODE, и нажимаем кнопку «Трансляция».
Рисунок 1 –Трансляция TOYCODE.
Далле сохраняем обьектный код, и получаем фаил с расширением .tcp
Рисунок 2 – Сохранение объектного кода.
Рисунок 3 – Результат запуска транслированного TOYCODE.
Файл с кодом запускаем на TOYCOMP и проверяем результат выполнения программы. Исходя из таблицы тестов при заданных переменных ответ должен быть равен 11:
Тест 1
a
| b
| v
| y
|
|
|
| 11 Выполнена команда СТОП
|
Рисунок 4 – Первый прогон программы.
Из рисунка 4 видно, что на устройство вывода пришло 11, что говорит о правильности транслированного TOYCODа.
Проведем прогон следуя данным из таблицы тестов, чтобы проверить реакцию программы на ошибочные операции, такие как деление на ноль:
Тест 2
a
| b
| v
| y
|
|
| -7
| Ошибка! Деление на 0
|
Рисунок 5 – Второй прогон программы.
Из рисунка 5 видно сообщение об ошибки, что говорит о правильности выполнения программы, так как делить на ноль нельзя.
Так как память нашего игрушечного компьютера сильно ограничена, легко можно переполнить память, что должно привести к ошибке и остановке программы. Проведем последний прогон следуя данным из таблицы тестов:
Тест 3
a
| b
| v
| y
|
|
|
| Ошибка! Переполнение
|
Рисунок 6 –Третий прогон программы.
Заключение
Программа отлажена, тестирование показало, что программа правильно решает поставленную задачу.
Разветвления. Простые циклы.
Постановка задачи
Выполнить вычисления Y по формуле Y=(x-3)6. Значения аргументов вводятся с клавиатуры.
Алгоритм программы
№ команд
| КОП
| Комментарий
|
| IN x
|
| Ввод переменной Х
|
| LD x
|
| Загрузка Х в аккумулятор
|
| SUB a
| Вычисляем разность
| Вычитание а из Х
|
| STO R
|
| Сохранение результата в R
|
| THEN: LD Y
| Начало тела цикла
| Загрузка Y в аккумулятор
|
| MPY R
| Возведение в степень
| Умножение на разность (R)
|
| STO Y
|
| Сохранение результата в Y
|
| LD C
|
| Загрузка C в аккумулятор
|
| SUB 1
| Уменьшаем счетчик на 1
| Вычитание 1 из C
|
| STO C
|
| Сохранение результата в C
|
| BGTR THEN
| Переход в начало цикла
| Переход, если больше нуля
|
| OUT Y
| Вывод, если равно 0
| Вывод решения ур-Я (Y)
|
| STOP
| Конец программы
| Стоп
|
|
|
|
|
Таблица внешних спецификаций
№
| Имя
| Назначение
| Тип
| ОДЗ
|
| x
| Переменная
| целый
| -1..7
|
| y
| Переменная
| целый
| -9999..9999
|
Таблица памяти
Переменные
| Имя переменной
| Номер ячейки памяти
| x
|
| Y
|
| R(рабочая ячейка)
|
| C
|
| a
|
| Постоянные
|
|
| THEN
|
|
Таблица тестов
№ теста
| X
| Решение Y
| Комментарий
|
|
|
| Выполнено
|
| -2
| -/-
| Ошибка: Переполнение!
|
|
| -/-
| Ошибка: Переполнение!
|
| -1
|
| Четная степень – результат всегда должен быть положительный
|
|
|
|
|
|
| Ноль в любой степени ноль
|
| -/-
| -/-
| Введено пустое значение!
|
|
| -/-
| Введено слишком длинное значение!
| 5 Блок-схема
Листинг программы
REM Разветвления. Простые циклы
REM Ввод x
IN x
REM Загрузка x в АКК
LD x
REM Отнять а от х
SUB a
REM Сохранение в R
STO R
THEN: LD P
REM Начало тела цикла
REM Загрузка произведения в АКК
LD P
MPY R
STO P
REM Счетчик циклов
LD C
SUB 1
STO C
REM Если >0, то переход в начало цикла
BGTR THEN
REM Если =0, то вывод ответа
OUT P
STOP
REM Начальные значения
x: DC 4
P: DC 1
R: DC 0
C: DC 6
1: DC 1
a: DC 3
Протокол работы программы
Заносим наш код в поле исходного кода в трансляторе языка TOYCODE, и нажимаем кнопку «Трансляция».
Рисунок 7 – Трансляция TOYCODE.
После успешной трансляции сохраняем файл с кодом и запускаем его на TOYCOMP для проверки результатов выполнения программы.
Рисунок 8 – Результат запуска транслированного TOYCODE.
Первый прогон программы проведем для проверки работоспособности. Введем х=2, соответственно первому тесту таблицы тестов:
Рисунок 9 – Результат первого прохода 1.
В результате работы программы получена 1, как и предполагал тест.
Проведем проверку программы на переполнение и на работу с отрицательными значениями, так как память нашего игрушечного компьютера сильно ограничена. Введем х=-2, у будет равен 15625, что выходит за пределы памяти (-9999..9999):
Рисунок 10 – Результат второго прохода -/-.
Результат, как и ожидалось, превысил ограничения памяти, что привело к ошибке и остановке программы.
Проведем последнюю проверку программы на переполнение, но на этот раз с положительным числом. Введем х=8, у будет равен 15625, что выходит за пределы памяти (-9999..9999):
Рисунок 11 – Результат третьего прохода -/-.
Результат, как и ожидалось, превысил ограничения памяти, что привело к ошибке и остановке программы.
Заключение
Программа отлажена, тестирование показало, что программа правильно решает поставленную задачу.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|