OberonCore https://forum.oberoncore.ru/ |
|
курс Введение в программную инженерию https://forum.oberoncore.ru/viewtopic.php?f=8&t=3246 |
Страница 1 из 1 |
Автор: | Валерий Лаптев [ Понедельник, 07 Февраль, 2011 18:44 ] |
Заголовок сообщения: | курс Введение в программную инженерию |
Возник уникальный курс по направлению Программная инженерия. Уникальный, потому как читается один раз. Когда создавался первый раз учебный план по направлению, этим курсом заткнули дыру - вместо физики. Планы на следующие года создавали уже с чувством, с толком и с расстановкой, и там такого курса нет (есть много отдельных курсов по программной инженерии). Курс годовой, в первом семестре - экзамен, во втором - зачет. Одна лекция и одна лаба в неделю. В принципе, что читать - понятно. Проблема в следующем: это студенты первого курса и одновременно начинают изучать программирование на языке высокого уровня (это основы С++). До того они прошли основы алгоритмизации на основе Кумира, то есть писать программы в принципе умеют. Функции писали и массивы обрабатывали. Не совсем понятно, как строить лабы. Вариантов - два. Первый. Берем те же лабы, что и на программировании, и делаем их по науке: сверху-вниз, с пошаговым уточнением, через тестирование... Тут не совсем ясно, как это проверять. Отчет по лабе с описанием всех шагов требовать? Второй. Берем ББ+КП и исполняем те же лабы. На основе школьной сборки, например. В первом семестре. А во втором - английская версия ББ - 1.5 и лабы покрупнее. А потом сравним и статистику соберем. Кстати, может ли кто-нить какие-нить лабы покрупнее порекомендовать? Вот у меня на системном ПО одна из лаб такая. Задается архитектура виртуальной машины, и надо реализовать интерпретатор. А проверку интерпретатора выполнять с помощью программы в кодах виртуальной машины. Требования к реализации (на С++) 1. Объектно-ориентированный подход. 2. Модульный подход. Процессор – отдельный класс, разделение на интерфейс и реализацию; Выполнение команд – вызов функтора (не использовать оператор-переключатель!) Память – динамический массив – поле-указатель в классе Команды – иерархия классов-функторов; Базовый класс – абстрактный класс Command с перегруженной операцией operator() Пример архитектуры: Цитата: Одноадресная, стековая с адресным регистром
PSW – 32 бита = 16 + 4 + 12 = IP + SP + Flags Память – байтовая, размер адреса = 16 бит. Стек вычислений– 16 ячеек по 4 байта – в процессоре адресный регистр – 2 байта Типы данных: Целые знаковые – 4 байта Дробные – 4 байта Структура команды, 24 бита: Код операции – 7 бит, b – 1 бит b = 0 – адрес (абсолютная адресация) b = 1 – адрес + регистр (индексная или базовая) Адрес – 16 бит Безадресные команды занимают 1 байт = 8 бит Загрузка адресного регистра: схема та же b = 0 – целая константа в команде (константа = адрес) b = 1 – регистр + константа в команде Загрузка стека, копирование вершины стека, извлечение из стека. Арифметика дробная в стеке, безадресная, сохранение в стеке Арифметика целая знаковая в стеке, безадресная, сохранение в стеке Переходы: Безусловный прямой: IP = адрес (константа в команде); бит b работает по схеме загрузки адресного регистра: b = 0 – адрес (константа) в команде (константа = адрес) b = 1 – регистр + константа в команде Если адрес = 0, то это косвенный переход по адресному регистру Условный – то же самое, проверяет флаги; Вызов подпрограммы, адрес возврата сохраняется в адресном регистре Возврат – безусловный переход прямой: b = 1, регистр + 0 |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |