- •Мета лабораторної роботи - вивчити блочну організацію програм Паскаль та Сі та стратегії розподілу пам'яті. Теоретичні відомості
- •Правила написання програм
- •Своєчасно звільняйте пам'ять, “захоплену” в “купі” (оператори dispose/ delete) Завдання
- •Контроль знань та вмінь
- •Контрольні запитання
- •Лабораторна робота 7
- •Дослідження структурних операторів операторного
- •Базису мов програмування паскаль та сі
- •Мета лабораторної роботи - вивчити устрій структурних операторів мов Паскаль та Сі та дослідити можливості та особливості застосування різноманітних форм структурних операторів.
- •Теоретичні відомості
- •Правила написання програм
- •Завдання
- •Методичні вказівки
- •Контроль знань та вмінь
- •Контрольні запитання
Методичні вказівки
Для моделювання на бітовому рівні арифметичних операцій та операцій відношення необхідно вміти вирішувати наступні задачі:
- визначати значення окремих бітів операнду(ів);
- формувати результат шляхом встановлення в 0 чи 1 певних бітів результуючого значення.
При цьому, реалізація операцій відношення потребує вирішення лише першої задачі, тоді як реалізація арифметичних операцій вимагає виконання обох задач.
Для визначення значення окремого n-го біту (sizeof(тип значення) >= n >= 0) операнду необхідно використовувати маску, що дорівнює 1, та бітові операції «І» та «зсув ліворуч». Наприклад, щоб дізнатись значення п’ятого біту вмісту цілої змінної iA необхідно виконати наступні перетворення:
iBitA := iA and (1 shl 5) (Паскаль) або iBitA = iA & (1 << 5) (Сі).
Якщо значення iBitA дорівнюється 0, п’ятий біт числа iA також є рівним 0, якщо будь якому додатному значенню, біт дорівнюється 1.
Порівнюючи значення відповідних бітів заданих операндів, можна визначити за їхнім бітовим представленням, який з операндів є більшим, меншим, тощо.
Наприклад:
Операція відношення = =
iA = 2510 = 110012 |
iBitA = iA and (1 shl 4) = 16 => 1 |
=> 1<>0 => iA<>iB |
iB = 910 = 010012 |
iBitB = iB and (1 shl 4) = 0 => 0 |
Для вирішення завдання моделювання операцій додавання та лічильника недостатньо вміти визначати значення окремих бітів операндів, але потрібно формувати результуюче значення, використовуючи його бітове представлення. Для цього використовуються маска та бітові операції «зсув ліворуч», «АБО», «АБО, що виключає»:
Наприклад:
Операція додавання +
iA = 2510 = 110012
iB = 910 = 010012
iSum = 3410 = 1000102
Результат iSum формується встановленням в 1 першого та п’ятого бітів, тобто:
1) iSum = 0, iSum = 010 = 02
2) iSum = iSum or (1 shl 1), iSum = 210 = 000102
3) iSum = iSum or (1 shl 5), iSum = 3410 = 1000102
Лічильник, або операції зменшення чи збільшення на одиницю не зводяться до операції додавання. Для отримання результату лічильника необхідно використовувати певні закономірності перетворення значень та застосовувати їх при побудові алгоритму для вирішення задачі.
Наприклад, при зменшені числа на одиницю в результуючому значенні всі біти, що дорівнюються 0, починаючи з молодшого, та перший слідуючий за ними біт, що дорівнюється 1, інвертуються, а старші залишаються незмінними. Для інвертування відповідних бітів використовується операція «АБО, що виключає».
Наприклад:
Лічильник зменшення на 1
iA = 2510 = 110012
iA – 1 = 2410 = 110002
1) iA = iA xor (1 shl 0), iA = 2410 = 110002
iA = 2410 = 110002
iA – 1 = 2310 = 101112
1) iA = iA xor (1 shl 0), iA = 2510 = 110012
2) iA = iA xor (1 shl 1), iA = 2710 = 110112
3) iA = iA xor (1 shl 2), iA = 3110 = 111112
4) iA = iA xor (1 shl 3), iA = 2310 = 101112
Контроль знань та вмінь
Таблиця вмінь
Таблиця 19
-
Бінарні операції
лічильник
відношення
додавання
+
-
=
>
<
+
с
п
с
п
с
п
с
п
с
п
с
п