ІТО-Саратов-2016 - Степаненко ОА - ПОБІТНІ ОПЕРАЦІЇ У ПАСКАЛІ
Система програмування Паскаль дає можливість проводити побітові операції над величинами цілого типу. Це операції логічного множення (and), логічного додавання (or), заперечення (not) додавання по модулю 2 (xor), зсуву вліво і вправо (shl, shr) на задану кількість позицій. Побітові операції дозволяють маніпулювати безпосередньо над бінарним вмістом пам'яті комп'ютера.
Навіщо потрібні ці операції? Наскільки вони можуть бути корисними при навчанні програмування?
Сучасне програмування не звільняє фахівця від знання того, як саме в комп'ютері зберігаються дані: числова, графічна, звукова інформація. Двійкова система числення, де будуються сучасні комп'ютери вивчається під час уроків інформатики, але, на жаль, залишається у сприйнятті учнів " річчю у собі " . Застосування побітових операцій дозволяє " зворушити " пам'ять, переконатися, що двійкове уявлення інформації - це оповідання вчителя.
Наприклад, під час вивчення теми "Уявлення цілих чисел у комп'ютері" корисно розібрати таку програму:
WriteLn('У який розряд цілого числа встановити 1?');
Операція shl здійснять логічний зсув вліво на k позицій двійкових розрядів, в яких зберігається ціла величина Х. Оскільки спочатку значення Х дорівнює 1, можна, вводячи відповідне значення для k, встановлювати 1 будь-який допустимий розряд в числі. Для PascalABC значення k можна змінювати в діапазоні від 0 до 31. Для Free Pascal k можна змінювати від 0 до 7 для величин типу byte, від 0 до 15 для величин типу integer і від 0 до 31 для величин типу longint, При цьому 1 найстаршому розряді інтерпретується як найбільше за модулем негативне число, оскількиодиниця йде у знаковий розряд. Перенесення 1 у розряди більші, ніж розрядність уявлення цілого числа безглуздий, тому що одиниця піде з "зони видимості": операція shl здійснює логічний, а не циклічний зсув.
Представлена вище програма дозволяє продемонструвати ще одну корисну властивість зсуву двійкових розрядів числа вліво - це множення числа на 2. Аналогічно можна продемонструвати поділ двійкового числа на 2 шляхом логічного зсуву вправо shr.
Хороший навчальний та пізнавальний ефект дає використання побітових операцій при переведенні чисел із десяткової до двійкової системи числення. Для цього можна скласти програму, яка послідовно "чіпатиме" двійкові розряди в числі:
Write('Введіть вихідне десяткове число');
Write('У двійковому вигляді воно представляється так:');
У цій програмі команда mask:=-(maxint+1) встановлює в змінній mask одиницю найстарший розряд. Операція логічного множення "a and mask" здійснює порозрядне логічне множення чисел, що зберігаються в змінній а та змінній mask (1 – істина, 0 – брехня). Результат такого множення не дорівнює 0, тільки якщо в шуканому числі стоїть 1 в найстаршому розряді. Якщо в цьому розряді 0, то значення логічного множення теж 0. На екран виводиться 1, якщо в даному розряді є 1, і 0, якщо одиниця в розряді, що діагностується, відсутня. Операція mask:=maskshr1 здійснює зсув вліво вмісту величини mask, а цикл While забезпечує послідовну перевірку всіх розрядів у числі а.
Наведені в даній роботі програми можуть бути використані вчителем для ілюстрації матеріалу, що вивчається або, що значно корисніше, самостійно розроблятися учнями під час уроків.
- Немлюгін С.А. TurboPascal. Програмування мовою високого рівня: Підручник для вузів. 2-ге вид. – СПб.: Пітер, 2007. – 544 с.: іл.
| Вигляд подання доповіді | Усний виступ та публікація |
| Ключові слова | освіта школа інформатика програмування |
У статусі «Чернетка» Ви можете робити з тезами будь-які дії.
У статусі «Надіслано до Оргкомітету» тези проходять перевірку в Оргкомітеті. Статус «Чернетка» може бути повернений тезам або є зауваження рецензента, або тези перевищують необхідний обсяг, або на запит учасника.
Статус «Опубліковано» означає, що видано паперову версію тези і тезу змінити не можна. У деяких вкрай рідкісних ситуаціях учасник може домовитися з Оргкомітетом про переведення тез у статус «Чернетка».