НОУ ІНТУІТ, Лекція, Числа

Ціль лекції

Отримання знань по роботі з числами всіх типів, перетворення чисел на інші типи даних, закріплення матеріалу на практиці.

Цілі числа

У Lazarus (а точніше, в Free Pascal), як і в будь-якій іншій мові програмування, числа відіграють важливу роль. Важко уявити програму, у якій не використовувалися числа. Навіть коли ви просто встановите якийсь компонент на форму, автоматично починають діяти багато налаштувань. Left, Top, Height, Width - всі ці властивості є в будь-якому візуальному компоненті, і вони містять числа. Числа бувають цілі та речові, знакові та беззнакові.

У цьому розділі поговоримо про цілі числа, як знакові, так і беззнакові. Що такеціле число? Це число без коми, тобто без десяткової частини. Знаковим називають число зі знаком: -1, наприклад. Беззнакове число – це число від нуля та більше.

У програмуванні базовим цілим числом є integer, який ми не раз використовували. Але ви, мабуть, здогадалися, що це не єдиний можливий тип? Існують різні типи цілих чисел, вони можуть бути зі знаком і без нього, мають різний діапазон можливих значень і, відповідно, займають різний розмір оперативної пам'яті. Розберемо ці типи:

Зверніть увагу, тут діапазон і розмір Integer збігаються з LongInt . Взагалі, це залежить від режиму компілятораFPC. Проект можна скомпілювати в різних режимах, за допомогою Delphi, наприклад, або TP (Turbo Pascal). За замовчуванням виставлено режимObject Pascal, це можна перевірити, виконавши в середовищіLazarusкоманду менюПроект -> Параметри проекту, потім у розділіПараметри компіляторавибратиОбробка. У верхній частині там вказаноРежим синтаксису,за замовчуванням цеObject Pascal, але за необхідності його можна і змінити.

Так от, якщо там виставлений режимObject PascalабоDelphi, тоді Integer має розмір 32 біти, або 4 байти. Якщо ж виставлений старий режимTurbo PascalабоFree Pascal, то Integer матиме розмір 16 біт або 2 байти, і відповідатиме типу Smallint.

Навіщо потрібна така різноманітність цілих типів? У минулі часи оперативна пам'ять була досить маленькою. Якщо зараз у мене на ПК встановлена ​​оперативна пам'ять 4 Гб, то колись давно я був змушений обходитися комп'ютером з процесором 486 і оперативною оперативністю аж в 16 мегабайт, і можете повірити, це був далеко не найгірший комп'ютер! У ті часи програмісти боролися за кожен байт пам'яті, переписуючи та мінімізуючи код, вибираючи найменші з можливих типів даних. Це називалосяоптимізацією коду. Допустимо, вам потрібно виконати якийсь цикл 10 разів. Для підрахунку кроків циклу вам доведеться створити змінну цілого типу. Але навіщо використовувати змінну Integer в 4 байти, коли цілком можна обійтися однобайтовим Byte? Зараз, звичайно, це не відіграє такої великої ролі, як раніше, але все одно, оптимізація коду - це ознака хорошого програміста, це хороший тон у програмуванні. Так що намагайтеся не витрачати зайву пам'ять.

Рекомендації тут такі: якщо знаєте, що число буде без знака, те й вибирайте беззнакові типи. Якщо ви точно знаєте, що максимальне число в змінній буде маленьким, вибирайте менші типи. Якщо вам невідомо, якого розміру число потрапить у змінну, вибирайте Integer - це універсальний тип, придатний для більшості випадків. Ну а якщо ви впевнені, що число буде дуже великим, то використовуйте 4 або навіть 8 байтові типи.

Речові числа

Речовими називаються числа із дробовою частиною, причому, якщо дробова частина дорівнює нулю, її все одно потрібно вказати. Наприклад:

Такі числа ще називаютьчислами з плаваючою точкою, оскільки кількість цифр після точки може бути різною. Записуються речові числа за певними правилами. Якщо в математиці ми відокремлюємо дробову частину комою, в Lazarus для цього використовують точку. За вказівкою дуже великої кількості можна вибрати скорочену форму. Якщо в математиці для цього число множать на десятковий ступінь, наприклад,

то в Lazarus замість 10 вказують букву E (від англ.exponent- показник ступеня):

Ступені можуть бути і негативними:

Речових типів також багато. У характеристиці дійсних чисел роль грає як розмір, займаний у пам'яті, а й кількість значущих цифр: