Pascal Урок 3

Освіта — це те, що залишається після того, коли забуваєш усе, чого навчали у школі.
- стрічки друзів
RE: Уроки: Агрегатний стан. Ти йому лестиш
Pascal: Урок 3. Цілочисленне програмування.

Оператори в програмі поділяються крапкою зкомою.
Процедури введення/виводуВиведення здійснюється процедурамиWrite/WriteLn. Ln наприкінці назви процедури говорить про те, що після виконання висновку здійсниться перехід на новий рядок. У дужках через кому записуються дані, які потрібно вивести. Рядки пишуться в лапках (одинарних), щоб замість змінної вивелося її значення, записують лише її ідентифікатор. Наприклад, WriteLn(a, '+', b, '=', a + b).
Введення, аналогічно, виконується процедурамиRead/ReadLn. У дужках через кому записуються змінні, куди зберігаються дані, що вводяться. ReadLn бажано використовувати для читання всього рядка до кінця, а якщо треба просто послідовно зчитувати числа через пропуск або переклад рядка, то завжди можна використовувати Read. Наприклад, Read(a, b, c, d, e). Після виконання програми, вікно з нею відразу закривається. Тому, щоб побачити результат, наприкінці програми пишуть рядок ReadLn;
Відразу зазначу, що не хочу захаращувати лекції докладними прикладами, оскільки набагато ефективніше буде, якщо ви самі спробуєте знайти різницю між процедурами. Загалом роль експериментаторів залишається за вами.
А тепер пригадаємо, що інформація у комп'ютері зберігається у двійковому коді. 0 і 1 легко представляються апаратно такий контакт / немає контакту. Коли ми заводимо змінну даного цілого типу, під неї виділяється конкретне число байт в пам'яті.
ShortInt = коротке ціле Integer = ціле LongInt = довге ціле Byte = байт (оскільки під зберігання виділяється 1 байт) Word = слово (мова йде про машинне слово, яке залежить від процесора) Отже, дані типу Byte приймають значення 0…255 (2^8 = 256), лише позитивні (безтобто, точніше тільки зі знаком плюс). Дані типу ShortInt набираю значення -128…127. Насправді, зараз під тип Integer виділяється теж 4 байти, чого достатньо.
Тепер щодо негативних чисел.Негативні числазберігаються в інверсному коді. Нехай, наприклад, є 1 байт пам'яті. Потрібно записати туди число -100. Число 100 займає 7 біт: 1100100. Нехай є операція інверсії двійкового числа, яка просто побітово на місце 0 ставить 1, а на місце 1 ставить 0. Значить ми зберігатимемо -100, як 100, але при цьому інвертоване та з доданою одиницею.
1.Інвертуємо число 100 у двійковому поданні. Зверніть увагу на 0 на початку. Під число 100 відведено 8 біт, тобто 8 осередків.
2.Додаємо до інвертованої форми одиницю: 10011011 + 00000001 _______ 10011100
Таким чином, число -100 зберігається як 10011100. Щоб з -100 знову отримати 100, потрібно ще раз виконати ці 2 кроки.
Можна зробити перевірку 100 + (-100) = 0: 01100100 + 10011100 _______ 100000000 Одиниця входить вже в 9 осередок і нам не потрібна. Відповідь 0, все сходиться.
Integer зробили 4-байтним, щоб не було багато проблем із переповненням. І зробили ще один 8-байтний цілий тип – він називається int64. Він зберігає 2^64 значень зі знаком.
Операції визначені на множині цілих типівНасамперед арифметичні операції: +, -, *, div і mod. Зверніть увагу: операція / не визначена на множині цілих чисел: тільки на множині речових. Тобто, 5/2 означає, що 5 і 2 приводяться до речових 5.0 і 2.0, і потім діляться вже речові типи, виходить 2.5. 3>mod - взяттязалишку від розподілу На нуль у програмуванні ділити не можна! Зазначимо операцію присвоєння (:=), яка створює більшу частину помилок на початковому етапі (бо все забуваю ставити двокрапку). Просте = - це символ порівняння, застосовується у перевірці рівності змінних.
Отже, як підбиття підсумку, відзначимо, що в паскалі змінні визначаються перед усією програмою після ключового слова var. Тепер у вас є вся необхідна інформація для вирішення наступних завдань. Нагадую, що я із звільненням відповім на ваші запитання, допоможу з рішенням та перевірю ваші коди. Але домовимося відразу, що в беоні це робити вкрай гидко через прогалини, що з'їдаються, тому ласкаво просимо в скайп або контакт (у личку передам всі дані).