Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
23
Добавлен:
18.02.2017
Размер:
315.64 Кб
Скачать

С-1 «Доступ к данным в памяти и их обработка»

Задание.

1.В начале семинара обсудите с преподавателем вопросы программирования, рассмотренные в лекционном курсе:

структуры,

битовые поля,

массивы,

сортировка,

операции сдвига (<<, >>),

логические (&&, ||) и поразрядные (&, |, ^) операции.

Ввод/вывод текста с помощью cin, cout, getch();

позиционирование текстового курсора;

задержка вывода на экран.

2.Разработайте программу в соответствии с полученным вариантом:

В1 «Планировщик». Обеспечьте ввод времени (ЧЧ:ММ) начала и окончания, а также наименование (от 1 до 30 символов) задачи. Выведите на экран отметки времени от 07:00 до 23:00 с шагом 15 минут и отметьте символом «*» промежутки времени, которые заняты хотя бы одним заданием.

В2 «Конвертер». Разработайте программу преобразования чисел между системами счисления (2), (10) и (16), не используя операции умножения и деления. Добавьте функциональность калькулятора на 4 арифметических действия (без дробных частей).

В3 «Записи». Разработайте программу, сохраняющую записи (порядковый номер ввода, число с плавающей точкой и строку длиной до 30 символов). Управление данными осуществляется с клавиатуры: ввод новой записи, удаление записи по заданному номеру/числу/строке, сортировка по номеру/числу/строкам.

В4 «Регистр». Устройство имеет в своем составе регистр состояния, отображающий состояние 8 режимов работы с помощью светодиодов, состояние хранится в 8-битной переменной. Разработайте программу, чтобы при нажатии клавиш 0..7 изменялось состояние разрядов регистра, отображаемых «звездочкой» или «пробел». При запуске программы выполните анимацию плавного появления звездочек (10% яркости – 1 из 10 циклов звездочка отображается на своем знакоместе, остальные 9 циклов – нет; далее –

2 из 10, 3 из 10, …, 10 из 10).

В5 «Лабиринт». В памяти хранятся символы, означающие стенки и проходы прямоугольного лабиринта, а также предметы. Требуется анимировать движение объекта в лабиринте с учетом стенок и проходов, причем предметы можно брать, переносить и выкладывать. Количество одновременно носимых предметов – 3.

В6 «Представление». Исследуйте представление чисел signed и unsigned для типов данных char, int, long, float, double для 32-разрядной операционной системы: приведите максимально и минимально допустимые значения, соответствие характерных (2) комбинаций (00..00, 10…00, 11…11 и др.) целым и дробным (float, double) числам. Продемонстрируйте на примерах представление характерных дробных чисел.

В7 «Процессор». Используется упрощенная модель микропроцессора с регистром A для вычислений и регистром PC (program counter) для хранения адреса следующей выполняемой команды. При вызове функции (команда CALL) значения регистров A и PC сохраняются в стек, при возврате из функции (команда RETURN) значения регистров A и PC восстанавливаются из стека. Команды представляются числовыми кодами так, чтобы код умещался в одну ячейку памяти.

Команда

Параметр

Код команды

Назначение

CLEAR

нет

0

Очистка регистра А

ADD

1 … 100

1 … 100

Добавление числа в регистр А

CALL

1 … 99

–1 … –99

Вызов функции по адресу

RETURN

нет

–110

Возврат из функции

STOP

нет

–120

Завершение программы

Ниже приведен пример основной программы (адреса 0…5) и двух функций (адреса 50…52 и 60…61). Запишите ее в одномерный массив размером 100, элементами которого будут числа из столбца «код команды»; неуказанные элементы не заполняйте. При этом индекс массива будет совпадать с адресом команды в программе. Запрограммируйте работу имитатора процессора для выполнения аналогичных программ, используя регистры и стек. Стек реализуйте на основе массива.

Адрес

Команда

Код

команды

 

 

0

CLEAR

0

1

ADD 5

5

2

ADD 14

14

3

CALL 50

-50

4

CALL 60

-60

5

STOP

-120

 

 

50

CLEAR

0

51

ADD 10

10

52

RETURN

-110

 

 

60

CALL 50

-50

61

RETURN

-110

В8 «Указатели». Разработайте имитатор работы с переменными в автоматической и динамической областях памяти. Поддерживаются переменные целого типа int (диапазон значений 100…200), указатели на переменные целого типа (диапазон адресов 0…19). В этой задаче одна переменная или указатель занимают один адрес. Диапазон адресов автоматической памяти – 0…9, динамической – 10…19. Запишите прототипы нижеуказанных функций и запрограммируйте их. Отобразите в левой части экрана карту памяти, в правой – выполняемые команды.

variable(“a”);

// int

a;

 

set(“a”,150);

// a =

150;

 

set(variable(“b”),160);

// int

b =

160;

setAddr(variablePtr(“pa”),”a”);

// int* pa

= &a;

setValue(“pa”,170);

// *pa = 170;

setAddr(variablePtr(“p1”),new_());

// int

*p1

= new int;

setValue(“p1”,180);

// *p1

= 180;

del_(“p1”);

//

delete p1;

set(“p1”,0);

//

p1 = 0;

//комментарии

//variable(“a”) – находит свободное место

//в адресах 0…9 и размещает там переменную типа int. //set(“a”,150) – находит переменную по имени и уст.

// значение.

//variablePtr(“pa”) – находит свободное место

//в автоматической памяти и размещает там указатель //на переменную типа int.

//setAddr((“pa”),”a”) – находит адрес переменной a

//и заносит его

//в значение указателя.

//setValue(“pa”,170) – разыменовывает указатель pa

// и заносит по полученному адресу значение.

//new_() – находит свободный адрес в диапазоне 10…19,

//занимает его (устанавливает флаг)

//и возвращает найденный адрес.

//del_(“p1”) – освобождает адрес в памяти, на который

//ссылается p1.

Экран (адрес – 2 цифры, пробел, имя переменной – 2 символа (только для адресов 00…09, по умолчанию «--», примеры – «a», «pa»), пробел, флаг «ячейка динамической памяти занята» – «+» или «-» (только для адресов 10…19), пробел, значение – 0…19, 100…200, по умолчанию 999), в списке ниже символ «●» означает пробел:

00●--●●●999

09●●●●●●999

10●●●●-●999

19●●●●-●999

3.По окончании семинара сдайте свою работу на скрепленных листах в письменном виде для проверки и получения баллов за начальный вариант решения; на ближайшей лабораторной работе сдайте работающую задачу на ПК и защитите ее.

Соседние файлы в папке Бизнес ооп