вівторок, 2 червня 2020 р.

Числові типи даних в Pascal


Прості типи даних
Типи змінних, що набувають цілих значень, позначаються службовим словом Integer. Існують певні межі для значень величин цього типу:   -32768 .. 32767 .У пам'яті комп'ютера такі значення займають 2 байти. Спроба отримати значення, що виходить за межі діапазону, призводить до помилки транслятора.
У Паскалі існує можливість використання ще декількох різновидів цілих типів, які мають інші діапазони своїх значень.
Якщо вам наперед відомо, що деяка змінна може набувати досить невеликих значень протягом виконання алгоритму, то її можна описати типом Shortint тобто коротке ціле. У випадку, якщо вам навпаки потрібен дуже великий розбіг значень цілої змінної, можна скористатися типом Longint. Бувають такі програми, що працюють тільки з цілими додатними числами. І для такого випадку у Паскалі є відповідні типи - тип Byte та тип Word.
У таблиці 1 наведені прості типи даних Турбо Паскаль, обсяг пам'яті, який необхідний для зберігання однієї змінної зазначеного типу, множина допустимих значень і допустимі операції.
Таблиця 1 
Ідентифікатор
(тип)
Довжина (байт)
Діапазон значень
Операції
Цілі типи
integer
2
-32768..32767
+, -, /, *, Div, Mod, >=, <=, =, <>, <, >
byte
1
0..255
word
2
0..65535
shortint
1
-128..127
longint
4
-2147483648..2147483647
                                                         Дійсні типи
real
6
2,9x10-39 - 1,7x1038
+, -, /, *, >=, <=, =, <>, <, >
Цілі числа не можуть містити у собі дріб. Для від'ємного числа треба ставити знак мінус (-) перед значенням (числом). Не можна використовувати кому у введені такого числа, бо інакше буде викликана синтаксична помилка. Приклади цілих чисел:
  • 42
  • 10000
  • −233000
INTEGER (цілий)
 Об'єкти даних — учасники операцій — називаються операндами. Над операндами цілого типу можливі такі операції: + (додавання), - (віднімання), * (множення), DIV (цілочисельне ділення з відсіченням залишку), MOD (залишок від цілочисельного ділення). Ці операції виконуються точно. Порядок виконання звичайний: спочатку множення, ділення та отримання залишку, потім додавання та віднімання. Службові слова DIV і MOD з двох сторін повинні відокремлюватися пробілами.
 Приклади:
 5 div 2 = 2
5 mod 2 = 1
5 div 6 = 0
5 mod 6 = 5
Дійсні числа можуть містити у собі як цілі, так і дробові значення з точкою відокремлення від цілої частини. Для від'ємного числа треба ставити знак мінус (-) перед значенням (числом). Приклади дійсних чисел:
  • 20.0005
  • 99.9
  • −5000.12

REAL (дійсний)
 Дійсні сталі мають обов'язкову цілу частину, за якою записано дробову частину і порядок (cтепінь числа 10). Ціла частина – це непорожня послідовність цифр, дробова – непорожня послідовність цифр із крапкою на початку, а порядок  буква "E" або "e", можливо, із знаком "+" або "-", і однією або двома цифрами. Перед сталою може бути знак "-", і тоді вона задає від'ємне число: -12.345E-1.
 Абсолютна величина (модуль) дійсних чисел зазвичай знаходиться в діапазоні від 1Е-38 до 1Е+38Якщо число по модулю менше, ніж 1Е-38, відбувається втрата значущості (перетворення на нуль), а якщо більше 1Е+38, то виникає помилка (переповнення)
Розглянемо приклад
Число 1.2345 можна позначити багатьма різними способами, наприклад, 123.45´ 10-2. Тут воно має цілу частину 123, дробову частину .45 і десятковий порядок -2. Цьому запису відповідає стала мови Паскаль 123.45E-2, у якій 123  ціла частина, .45  дробова, а E-2  порядок. Це ж число можна задати сталою 0.12345E1 або 0.012345E+2, або 1.2345, або 12345e-04. Подання числа сталою, у якій перед десятковою крапкою записано єдину цифру від 1 до 9, називається нормалізованим, наприклад, 9.81 або 1.0E2 (число 0 має нормалізоване подання 0.0).
Дійсні значення й операції, застосовні до них, утворюють тип дійсних з ім'ям real.
Як бачимо, цілі числа задаються як цілими сталими, так і дійсними, наприклад, 2 і 2.0. Проте їм відповідають два цілком різних подання того самого числа, тобто значення двох різних типів. І в машині вони обробляються по-різному.

Завдання для самостійного опрацювання

Задача 1 «Проста задача?»
Програма зчитує двозначне число і виводить через пропуск кожну цифру окремо.
Вхідні дані
Натуральне число з проміжку від 10 до 99 включно.
Вихідні дані
Два одноцифрових числа, розділених пропуском.

Задача 2 «Цифри»
Обчислити кількість цифр цілого невід'ємного числа n.
Вхідні дані
Одне невідємне  ціле число n (0 ≤ n ≤ 2 * 109).
Вихідні дані
Кількість цифр в числі n.
Задача 3* «Два кола»
Визначити кількість точок перетину двох кіл.
prb4
Вхідні дані
6 чисел x1y1r1x2y2r2, де x1y1x2y2 - координати центрів кіл, а r1r2 - їх радіуси. Всі числа - дійсні, не перевищують по модулю 1000000000=109, задані не більше ніж з 3-ма знаками після коми.
Вихідні дані
Кількість точок перетину. Якщо точок перетину нескінченно багато, то вивести -1.
Задача 4** «Метелик-санітар»
Школярі, йдучи з дому до школи або навпаки - зі школи додому, люблять їсти цукерки. Але, як завжди, цю приємну справу іноді має неприємні наслідки – дітки. Мурзик завжди слідкував за чистотою шкільного двору і йому в цьому з радістю допомагали метелики, вдячні за чудові фотографії, зроблені ним. Метелики могли використовувати власні крильця як лінзи, причому вони могли змінювати їх фокусну відстань. Помітивши обгортку від цукерки, що лежала на шкільному подвір'ї в точці з координатами X1Y1, метелик перелітав в точку з координатами X2Y2Z2, розташовану на шляху сонячних променів до обгортці і, змінюючи фокусну відстань своїх крилець-лінз, спалювали обгортку від цукерки .
Яку оптичну силу D мали крильця-лінзи метелика в цей момент?
Задача 5*«Пірати і монети»
n піратам вдалося справедливо розділити скарб із m золотих монет - кожен отримав свою частину відповідно до свого піратського рангу і стажу. Наймолодший пірат взяв a монет, а кожен наступний пірат брав на одну монету більше, ніж попередній його колега. Останнім був капітан, якому дісталося вдвічі більше від запланованого, очевидно, що після нього монет більше не залишилося.
Скільки було піратів разом з капітаном, якщо відомі a та m. Так як капітан без команди просто пірат, то n> 1.
Вхідні дані
Два натуральних числа і m (1 ≤ a ≤ 100, m <15150). Вхідні дані коректні.
Вихідні дані
Кількість піратів n.

Немає коментарів:

Дописати коментар