
- •Загальні методичні вказівки
- •Лабораторна робота № 1 Представлення в пам’яті комп’ютера даних цілих та дійсних типів
- •Тривалість роботи
- •Основні теоретичні положення
- •Порядок виконання роботи та методичні рекомендації щодо виконання роботи
- •Вимоги до оформлення звіту
- •Контрольні запитання
- •2. Знайти внутрішні представлення впк цілих та дійсних типів даних:
- •2.Індивідуальне завдання на лабораторну роботу
- •3.Алгоритм розв’язання задачі.
- •4.Система тестів
- •Лабораторна робота № 2 Перетворення типів даних
- •Вибір індивідуального завдання
- •Тривалість роботи
- •Основні теоретичні положення
- •Порядок виконання роботи та методичні рекомендації щодо виконання роботи
- •Вимоги до оформлення звіту
- •Контрольні запитання
- •Постановка задачі
- •3. Хід роботи Завдання 1
- •Завдання 2
- •4. Додаток
- •Лабораторна робота № 3 Структура даних стек
- •Вибір індивідуального завдання
- •Тривалість роботи
- •Основні теоретичні положення
- •Порядок виконання роботи та методичні рекомендації щодо виконання роботи
- •Вимоги до оформлення звіту
- •Контрольні запитання
- •Постановка задачі
- •3. Динаміка вмісту стеку(або масиву)
- •4. Алгоритм розв’язання задачі
- •5. Результати виконання програми
- •Лабораторна робота № 4 Структура даних черга
- •Вибір індивідуального завдання
- •Тривалість роботи
- •Теоретичні відомості
- •Порядок виконання роботи та методичні рекомендації щодо виконання роботи
- •Вимоги до оформлення звіту
- •Контрольні запитання
- •Постановка задачі
- •3. Динаміка вмісту черги(або деку)
- •4. Алгоритм розв’язання задачі
- •5. Результати виконання програми
- •Лабораторна робота № 5 Структура даних список
- •Вибір індивідуального завдання
- •Тривалість роботи
- •Основні теоретичні положення
- •Порядок виконання роботи та методичні рекомендації щодо виконання роботи
- •Вимоги до оформлення звіту
- •Контрольні запитання
- •2. Постановка задачі
- •3. Алгоритм розв’язання задачі.
- •4. Динаміка вмісту стеку.
- •Результати виконання програми
- •Лабораторна робота № 6 Методи сортування. Алгоритм вибірки
- •Індивідуальне завдання
- •Тривалість роботи
- •Основні теоретичні положення
- •Порядок виконання роботи та методичні рекомендації щодо виконання роботи
- •Вимоги до оформлення звіту
- •Контрольні запитання
- •2. Теоретичні відомості
- •Завдання:
- •Код програми
- •Лабораторна робота № 7 Методи сортування. Алгоритм бульбашки
- •Індивідуальне завдання
- •Тривалість роботи
- •Основні теоретичні положення
- •Порядок виконання роботи та методичні рекомендації щодо виконання роботи
- •Вимоги до оформлення звіту
- •Контрольні запитання
- •2. Теоретичні відомості
- •Завдання:
- •Перелік рекомендованих джерел
Лабораторна робота № 2 Перетворення типів даних
Мета роботи: Дослідження методів та засобів явного та неявного перетворення типів даних.
Завдання:
Завдання 2.1:
Визначити, які неявні перетворення типів будуть відбуватись при обчисленнях. З’ясувати, чи відбудуться втрати значимості даних. Хід міркувань підтвердити програмними результатами. В звіти пояснити кожне перетворення і метод, яким воно здійснено.
typedef unsigned int type_0;
typedef unsigned short int type_1;
typedef unsigned long int type_2;
typedef signed short int type_3;
typedef signed int type_4;
typedef signed long int type_5;
typedef bool type_6;
typedef char type_7;
typedef wchar_t type_8;
typedef float type_9;
typedef double type_10;
typedef long double type_11;
// позначимо через DN - день народження, MN – місяць народження
type_№ x0=0;
// замість № підставити значення: DN % 9
type_№ x1=DN;
// замість № підставити значення: DN % DN
type_№ x2=2;
// замість № підставити значення: MN % 9
type_№ x3=3;
// замість № підставити значення: MN % 13
type_№ x4=4;
// замість № підставити значення: (DN * MN) % 9
type_№ x5=5;
// замість № підставити значення: DN % 12
type_№ x6=6;
// замість № підставити значення: MN % 3
type_№ x7=7;
// замість № підставити значення: (DN * MN) % 12
type_№ x8=8;
// замість № підставити значення: DN % 13
type_№ x9=9;
// замість № підставити значення: MN % 6
type_№ x10=10;
// замість № підставити значення: (DN * MN) % 10
type_№ x11=11;
// замість № підставити значення: DN % 3
/* 1 */ x1 = x1 – 0xFFFFFFFA;
/* 2 */ x3 = ’a’ + x0 – x2;
/* 3 */ x7 = x4 + x5 + x6 * 0.1;
/* 4 */ x8 = x9 + x10 – x11*10;
Завдання 2.2:
Визначити, які явні і неявні перетворення типів будуть відбуватись. Результати обчислень підтвердити програмними результатами. В звіти пояснити кожне перетворення і кожний отриманий результат.
// позначимо через DN і MN числа, що відповідають дню і місяцю народження,
// через dn і mn – по дві цифри, що відповідають дню і місяцю народження,
// наприклад: DN=5 , MN=3 , dn=05 , mn =03
const int x_0=DN*MN*100;
// наприклад: 5*3*100=1500 => x_0=1500;
const int x_1= 0dnmn0;
// наприклад: x_1=005030;
const int x_2= 0xdnmn;
// наприклад: x_2=0x0503;
const int x_3= 0mndn0;
// наприклад: x_3=003050;
const int x_4= 0xmndn;
// наприклад: x_4=0x0305;
const double y_0=DN*MN/100;
// наприклад: 5*3/100=0.15 => y_0=0.15;
const double y_1= - DN.MN;
// наприклад: y_1=-5.3;
const double y_2= MN. DN e +2;
// наприклад: y_2=3.5e+2;
const double y_3= - DN.MN e 1;
// наприклад: y_3=-5.3e1;
const double y_4= - MN. DN e -1;
// наприклад: y_4=-3.5e-1;
int x = х_№;
// замість № підставити значення: DN % 5
double y = y_№;
// замість № підставити значення: DN % 3
char v0=*reinterpret_cast<char*> (&x) +3;
printf("%d %x %c \n", v0,v0,v0);
char v1 = static_cast< char > (x)+11;
printf("%d %x %c \n", v1,v1,v1);
char v2=*reinterpret_cast<char*> (&x) +1;
printf("%d %x %c \n", v2,v2,v2);
char v3=*(reinterpret_cast<char*> (&x)+1)+11;
printf("%d %x %c \n", v3,v3,v3);
char v4 = static_cast< char > (x)+22;
printf("%d %x %c \n", v4,v4,v4);
char v5=*reinterpret_cast<char*> (&x) +2;
printf("%d %x %c \n", v5,v5,v5);
char v6=*(reinterpret_cast<char*> (&x)+2)+22;
printf("%d %x %c \n", v6,v6,v6);
char *v7=reinterpret_cast<char*> (&x);
printf("%d %x %c \n", *v7+1,*v7+2, *v7+3);
char w0 =*(reinterpret_cast<char*>(&y)+2)+12;
printf("%x %u %d \n", w0,w0,w0);
long w1 =*reinterpret_cast<long*>(&y)+33;
printf("%lx %lu %ld \n", w1,w1,w1);
long w2=static_cast<long>(y)+55;
printf("%lx %lu %ld \n", w2,w2,w2);
short w3=*reinterpret_cast<short*>(&y) + 1;
printf("%x %u %d \n", w3,w3,w3);
short w4=*(reinterpret_cast<short*>(&y)+1)+11;
printf("%x %u %d \n", w4,w4,w4);
short w5=*(reinterpret_cast<short*>(&y)+2)+12;
printf("%x %u %d \n", w5,w5,w5);
short w6=*(reinterpret_cast<short*>(&y)+3)+13;
printf("%x %u %d \n", w6,w6,w6);
short w7=*(reinterpret_cast<short*>(&y)+2)+2;
printf("%x %u %d \n", w7,w7,w7);