Цель работы: изучение базовых типов данных языка Pascal/C как структур данных (СД).
З а д а н и е
1. Для типов данных (см. Варианты заданий в таблицах 1,2) определить:
1.1. Абстрактный уровень представления СД:
1.1.1. Характер организованности и изменчивости.
1.1.2. Набор допустимых операций.
1.2. Физический уровень представления СД:
1.2.1. Схему хранения.
1.2.2. Объем памяти, занимаемый экземпляром СД.
1.2.3. Формат внутреннего представления СД и способ его интерпретации.
1.2.4. Характеристику допустимых значений.
1.2.5. Тип доступа к элементам.
1.3. Логический уровень представления СД.
Способ описания СД и экземпляра СД на языке программирования.
2. Для заданных типов данных определить набор значений, необходимый для изучения физического уровня представления СД.
3. Преобразовать значения в двоичный код.
4. Преобразовать двоичный код в значение.
5. Разработать и отладить программу, выдающую двоичное представление значений заданных СД.
В программе использовать процедуры PrintByte и PrintVar.
Спецификация процедуры PrintByte:
|
|
1. Заголовок: procedure PrintByte(a:byte)/void PrintByte(unsigned char a).
2. Назначение: выводит на экран монитора двоичное представление переменной a типа byte/unsigned char.
3. Входные параметры: a.
4. Выходные параметры: нет.
Рекомендации: использовать побитовые операции сдвига и логического умножения.
Спецификация процедуры PrintVar:
1. Заголовок: procedure PrintVar(var a; size:word)/ void PrintVar(void a, unsigned int size).
2. Назначение: выводит на экран монитора двоичное представление переменной a произвольного типа размером size байт.
3. Входные параметры: a — переменная произвольного типа, значение которой выводится на экран в двоичном представлении (нетипизованный параметр); size — объем памяти (в байтах) занимаемый переменной a.
4. Выходные параметры: нет.
Рекомендации: нетипизованную переменную a привести к типу «массив байт», значение каждого элемента которого выводить на экран в двоичном представлении процедурой PrintByte.
6. Обработать программой значения, полученные в результате выполнения пункта 3 задания. Сделать выводы.
7. Разработать и отладить программу, определяющую значение переменной по ее двоичному представлению по следующему алгоритму:
1. Ввести двоичный код в переменную S строкового типа.
2. Преобразовать S в вектор B типа «массив байт».
3. Привести B к заданному типу. Вывести значение.
4. Конец.
8. Обработать программой значения, полученные в результате выполнения пункта 4 задания. Сделать выводы.
Таблица 1
Варианты индивидуальных заданий на Pascal
номер варианта | тип 1 | тип 2 | тип 3 |
integer | real | (red, yellow, green) | |
longint | real | массив [1..3,1..3] char | |
word | double | set of byte | |
byte | single | 1000..2000 | |
integer | extended | 'A'..’Z’ | |
shortint | single | массив [1..5] real | |
longint | comp | (cat, dog,mouse,tiger) | |
byte | real | –300..300 | |
word | double | (winter,spring,summer,autumn) | |
shortint | real | set of 'a'..'h' | |
byte | single | –1..1 | |
word | comp | 1..256 | |
integer | double | set of 50..100 | |
byte | extended | 'a'..'h' | |
longint | double | –256..–1 | |
shortint | extended | (one,two,three,four,five,six) | |
word | real | 256..511 | |
integer | single | 1..50 | |
longint | extended | (a, b, c, d, e, f, g, h) | |
byte | double | массив [1..8] char | |
shortint | comp | –10..10 | |
word | single | запись | |
integer | extended | массив [1..6] boolean | |
byte | comp | (winter,spring,summer,autumn) | |
longint | double | 35000..35001 | |
shortint | real | set of 200..250 | |
word | extended | запись | |
integer | comp | 1..256 | |
byte | single | массив [1..2,1..4] integer | |
shortint | double | (day, night) |
Таблица 2
|
|
Варианты индивидуальных заданий на C
номер варианта | тип 1 | тип 2 | тип 3 |
int | float | {red, yellow, green}colors |
Окончание табл.2
longint | float | char массив[3][3] | |
unsigned short | double | {winter,spring, summer,autumn}seeson | |
byte | float | float массив[10][10] | |
int | long double | структура | |
signed char | float | float массив[5] | |
longint | comp | {cat, dog,mouse,tiger}animal | |
byte | float | {a, b, c, d, e, f, g, h}lettre | |
unsigned short | double | {winter,spring, summer,autumn}seeson | |
signed char | float | {red, yellow, green}colors | |
byte | float | char массив[3][3] | |
unsigned short | comp | {winter,spring, summer,autumn}seeson | |
int | double | double массив[3][3][3] | |
byte | long double | int массив [5][5] | |
longint | double | структура | |
signed char | long double | {one,two,three,four, five,six}number | |
unsigned short | float | {cat, dog,mouse,tiger}animal | |
int | float | char Массив [4][4] | |
longint | long double | {a, b, c, d, e, f, g, h}lettre | |
byte | double | char массив [8] | |
signed char | comp | float массив[3] | |
unsigned short | float | структура | |
int | long double | int массив [6] | |
byte | comp | {winter,spring, summer,autumn}seeson | |
longint | double | структура | |
signed char | float | float массив[10] | |
unsigned short | long double | структура | |
int | comp | {winter,spring, summer,autumn}seeson | |
byte | float | int массив[2][4] | |
signed char | double | {red, yellow, green}colors |
С о д е р ж а н и е о т ч е т а
1. Тема лабораторной работы.
2. Цель работы.
3. Индивидуальное задание.
4. Характеристика каждого заданного типа данных как СД в соответствии с пунктом 1 задания.
5. Набор значений заданных типов, порядок их преобразования в двоичное представление, двоичное представление значений.
6. Набор двоичных векторов, порядок их преобразования в значения заданных типов, значения заданных типов.
7. Спецификация алгоритма, текст программы, результаты работы программы, выводы (пункты 5, 6 задания).
8. Спецификация алгоритма, текст программы, результаты работы программы, выводы (пункты 7, 8 задания).
Т е о р е т и ч е с к и е с в е д е н и я