
- •Передмова
- •Тема 1: Правила техніки безпеки при роботі з комп’ютером
- •Тема 2: Алфавіт. Ідентифікатори. Константи. Вирази
- •Тема 3: Загальна структура і розділи Pascal-програми
- •Тема 4: Введення і виведення у Pascal-і. Форматоване виведення
- •Тема 5: Прості (скалярні) типи данних
- •Тема 6: Завантаження середовища Турбо Паскаль. Функціональні клавіші
- •Тема 7: Меню опції
- •Тема 8: Вираження і пріоритет операцій. Стандартні математичні функції та процедури
- •Тема 9: Умовний оператор. Вкладений умовний оператор
- •Тема 10: Оператор вибору
- •Тема 11: Оператори циклу. Оператор циклу з параметром
- •Тема 12: Оператор циклу з перед- і з постумовою
- •Тема 13: Складні типи. Масиви
- •Тема 14: Багатомірні масиви
- •Тема 15: Пошук і сортування елементів масиву. Класи алгоритмів сортування
- •Тема 16: Динамічна пам'ять. Адреси і покажчики
- •Тема 17: Оголошення покажчиків, виділення та звільнення динамічної пам’яті
- •Тема 18: Процедури та функції для роботи з динамічною пам’яттю
- •Тема 19: Символьний тип даних. Упаковані масиви
- •Тема 20: Процедури та функції для обробки рядків
- •Тема 21: Структурований тип даних - безліч
- •Тема 22: Структурований тип даних – записи
- •Тема 23: Опис файлових змінних. Обробка типізованих файлів
- •Тема 24: Послідовний та прямий доступ до файлів
- •Тема 25: Обробка не типізованих файлів
- •Тема 26: Робота з текстовими файлами
- •Тема 27: Типізовані константи
- •Тема 28: Поняття та робота з процедурами та функціями
- •Тема 29: Використання модуля crt. Програмування клавіатури
- •Тема 30: Використання модуля crt. Текстове виведення на екран. Програмування звукового генератора
- •Тема 31: Графічні можливості tp 7.0. Використання бібліотеки Graph
- •Тема 32: Бібліотечні модулі користувача
- •Тема 33: Основні принципи ооп. Створення об’єктів. Використання об’єктів
- •Список літератури
- •Додаток а (довідковий) Основні алгоритми обробки масивів
- •Додаток б (довідковий) Питання перевірки знань з теорії
- •Додаток в (довідковий) Поширені коди клавіш
- •Додаток д (довідковий) Коди сканування клавіатури
Тема 5: Прості (скалярні) типи данних
Типи даних у мові Pascal. Запущена в роботу програма обробляє деякі дані. Це можуть бути цілі числа, дробу, символи, рядки, масиви, безлічі і т.д. Усі вони відрізняються друг від друга своїм типом.
Тип даних визначає можливі значення констант, змінних, функцій, виражень, а так само операції, що можуть виконаються над ними.
У Pascal усі типи даних поділяються на прості (скалярні) і складні (структуровані) (див. рис. 5.1).
Рисунок 5.1. Типи даних мови Турбо Паскаль
У Pascal-І кожен тип описується своїм стандартним ідентифікатором, наприклад, для цілих чисел - Integer, для дробових - Real і т.д. Але користувач може створювати свій, нестандартний тип даних і давати йому довільне ім'я. Нестандартний тип даних обов'язково описується розділі Турe.
Усі дані в програмі інтерпретуються як константи чи як змінні.
Константа не змінює свого значення в процесі виконання програми. Змінна змінює своє значення в ході виконання програми.
Прості(скалярні) типи даних є основою, на якій будуються всі інші структури даних. Скалярні типи поділяються на стандартні, до яких відносяться дані цілочисленого, речовинного, символьного і булевого типу, і нестандартні, до яких відносяться дані интервального типу і типу, що перелічується.
Дані цілочисленого типу. До них відносяться константи і змінні. Константа цілочисленого типу – це десяткове число, записане без крапки. Якщо константа негативна, то перед нею повинний стояти знак «-», якщо позитивна – те знак «+», який можна не вказувати. Константа, позначена ім'ям, обов'язково повинна бути описана в розділі Const, наприклад:
const
a=27;
radius=127;
Змінна цілочисленого типу приймає значення цілого десяткового числа. Змінна обов'язково повинна бути описана в розділі Var, наприклад:
var
b: integer;
У Pascal-і використовується 5 цілочислених типів, що відрізняються одне від одного діапазоном прийнятих значень і розміром займаної пам'яті (таблиця 5.1).
Таблиця 5.1. Цілочисельні типи мови Турбо Паскаль
Тип |
Діапазон |
Розмір пам'яті (байт) |
Пояснення |
Byte Word Integer Shortint Longint |
0..255 0..65535 -32768..32768 -128..128 -2147483648..2147483647 |
1 2 2 1 4 |
Довжиною в байт Довжиною в слово Ціле Коротке ціле Довге ціле |
Наприклад:
var
x:integer;
y:byte;
sum, x, y:logint;
Над цілочисленими даними припустимі наступні арифметичні операції:
+ Додавання (результат – ціле число);
- Вирахування (результат – ціле число);
* Множення (результат – ціле число);
Div Одержання цілого частки при діленні цілих чисел (дробова частина при розподілі відкидається);
Mod Одержання цілого залишку при діленні цілих чисел.
Застосовуючи операцію mod можна:
-
визначити, чи є дане число парним, тобто чи поділяється воно на 2 без залишку;
-
обчислити залишок при розподілі двох цілих чисел;
-
визначити, чи кратне дане число трьом, чотирьом і т.д.
-
визначити, чи є дане число простим.
Наприклад, дані А=-8, У=16, З=5, тоді:
Дії Результат Дії Результат
А-32 -40 b mod a 0
A+B 8 a mod c -3
A*c -40 a div c -1
A div 5 -1 16 div –3 -5
A mod 5 -3 16 mod –3 1
Дані речовинного типу.
До даних речовинного типу відносяться константи і змінні.
Константа речовинного типу може бути представлена в двох видах: числом з фіксованою і з плавоючою крапкою.
Число з фіксованою крапкою – це десяткове число з дробовою частиною, що відділена від цілої частини крапкою. Дробова частина може дорівнювати нулю. Наприклад:
21,342; 65,0; -87,767; 2,00; 0,0453;
Речовинне число не може починатися з крапки і не може нею закінчуватися. Наприклад, запису 5, і ,5 неприпустимі. Число 0 – ціле, а число 0,0 – речовинне.
У математиці для зображення дуже великих і дуже маленьких чисел використовується запис числа з десятковим порядком. Наприклад, числа 1200000000 і 0,00000012 можна записати відповідно у виді 12*108 і 12*10-8.
У Paskal-і подібні числа зображуються в експонентній формі і мають вид mEp, де m називається мантисою, а p – порядком числа. Символ Е є ознакою запису числа в десятковому порядку.
Мантиса може бути представлена цілим чи речовинним числом з фіксованою крапкою. Порядок тільки ціле число. Мантиса і порядок можуть містити знаки “+” чи “-”.
Числа, представлені з порядком, називаються числами з плаваючою крапкою. Наприклад:
Математичний запис Запис на Paskal-і
2*106 2Е+6 чи 2Е6
-2,7*103 -2,7Е3;
0,76*10-3 076Е-3;
-13*10-7 -13Е-7
У будь-якіму приведеному числі можна переміщати десяткову крапку в мантисі й одночасно змінювати порядок (крапка “пливе”), від цього саме число не зміниться. Наприклад:
-2,7Е3 -27Е2 -270Е1 -2700Е0 -27000Е-1.
Змінна речовинного типу приймає значення числа з фіксованою чи плаваючою крапкою.
У Paskal-і використовується 5 речовинних типів, що відрізняються одне від одного діапазоном прийнятих значень і розміром пам'яті (таблиця 5.2).
Таблиця 5.2. Речовинні типи мови Турбо Паскаль
Тип |
Діапазон |
Мантиса |
Розмір (байт) |
Пояснення |
Real Single double extended comp |
2,9Е-39..1,7Е38 1,5Е-45..3,4Е38 5,0Е-324..1,7Е308 3,4Е-4932..1,1Е4932 -9,2Е18..9,2Е18 |
11 – 12 7 – 8 15 – 16 19 – 20 19 - 20 |
6 4 8 10 8 |
Речовинний Одинар.точн. Двоичн.точн. Повыш.точн. складний |
Ми в обчисленнях будемо використовувати тип Real. Використання інших типів вимагає наявності в ПК математичного співпроцесора. Якщо він є, то необхідно в програмі установити директиву компілятора {$N+}, якщо його немає – директиву програмної эмуляции співпроцесора {$E+}.
Над даними речовинного типу припустимі наступні арифметичні операції:
+ додавання, - вирахування, * множення, / ділення.
Якщо обидва операнда речовинного типу, чи один з них цілого типу, результат операції завжди буде речовинного типу.
До даних речовинного типу можна застосовувати убудовані функції. Приклад використання змінних А, В, С речовинного типу:
a+b*c; a/b+c+56; sin(a+b+c);
a*b*c; sqr(a+b/c); sgrt(a*b+c+0.54).
У Pascal немає операції зведення в ступінь, крім зведення в квадрат. При зведенні в ступінь використовують стандартні функції. Наприклад, Ax заміняють вираженням
Exp(x*ln(a)),
де Exp – експонента і ln – натуральний логарифм – убудовані функції. Значення А повинне бути>0.
Дані логічного типу
Дані логічного типу використовуються при порівнянні величин. Наприклад:
x2 < 0; вираження завжди неправдиве;
a < b; вираження правдиве при а=5 і b=3;
неправдиве при a=3 і b=5.
Результат порівняння може бути або правдивим, або неправдивим.
Значення логічного типу в Pascal-і позначаються убудованими ідентифікаторами констант True (істина) і False (неправда). Їх можна використовувати в явному виді чи позначати ім'ям у розділі Const, наприклад:
const
t = true;
f = false;
Логічна змінна може приймати значення True чи False. Описується логічна змінна в розділі Var ключовим словом Boolean (логічний), наприклад:
var
a : boolean;
b1 : boolean;
У розділі операторів такій змінній можна привласнити значення логічної константи, наприклад:
а := true; b1 := false;
У Pascal-і для порівняння даних передбачені операції відношення(таблиця 5.3).
Таблиця 5.3. Операції відношення
Операції |
Дія |
Вираження |
Результат |
= <> > < >= <= in |
Дорівнює Не дорівнює Більше Менше більше чи дорівнює менше чи дорівнює Приналежність |
A = B A<>B A > B A < B A >= B A <= B A in B |
True, A=B True, A<>B True, A>B True, A<B True, A>=B True, A<=B True, якщо А знаходиться в списку В |
Порівнюються будь-які типи даних. Результат завжди булевого типу. Наприклад:
4 > 6 дає результат False;
A <> B дає результат True при А=5 і В=7;
A = 2*B+5 дає результат False при А=10 і В=2.
Відношення можна використовувати в правій частині оператора присвоювання, наприклад:
var
log1,log2: boolean;
…
log1:=a<>b;
log2:=a=2*b+5;
Змінна log1 одержить значення True, а змінна log2 – значення False.
У Pascal-і, як і в математичній логіці, маються спеціальні логічні операції. Результатом виконання логічних операцій є логічне значення True чи False. Операндами служать дані типу boolean. Операції наведено в таблиці 5.4.
Таблиця 5.4. Логічні операції мови Турбо Паскаль
Опера-ції |
Дія |
Вираження |
А В |
Резуль-тат |
Not |
Унарна операція інверсії всіх битів цілого числа |
not A |
T F |
F T |
And |
Логічне заперечення. Побітова логічна операція “І” двох цілих чисел |
A and B |
T T T F F T F F |
T F F F |
Or |
Побітова логічна операція “ЧИ” двох цілих чисел |
A or B |
T T T F F T F F |
T T T F |
Xor |
Побітова логічна операція “виключення чи” двох цілих чисел |
A xor B |
T T T F F T F F |
F T T F |
Приведемо приклади.
Результат операції логічного додавання
(a > 5) or (c = 3)
-
неправдивий при А=2, З=1;
-
правдивий при А=6, З=3; А=2, З=3; А=7, З=4.
Результат операції логічного множення
(a>5) and (c=3)
-
неправдивий при А=2, З=1; А=2, З=3; А=7, З=4;
-
правдивий при А=6, З=3.
Результат операції логічного заперечення
not (c=3)
-
неправдивий при З=3;
-
правдивий при З=4.
Якщо True відповідає 1, а False відповідає 0, то True > False.
Розглянемо приклади виконання логічних операцій з операндами типу Word. Наприклад, дано А та В – типу Word:
A = $5555 = 01010101010101012
B = $00EF = 00000000011111112
то, у логічних операціях виконується побітове порівняння операндів, починаючи з молодшого розряду.
а and b = 00000000010101012
Побітове порівняння виконується в такий спосіб.
Записуємо в стовпчик біти значень А та В:
А = 01010101010101012
У = 00000000011111112
Починаючи зправа, по одному виписуємо біти з цих значень і виконуємо 0 and 1 = 0
Порівнюючи в такий спосіб усі біти двох значень А та В, одержимо результат 00000000010101012
Аналогічно вирішуємо наступні приклади:
a оr b = 010101010111111
a xor b = 01010101001010102
Оператор Not реверсує значення кожного біта свого операнда:
not b = 11111111100000002
Питання для контролю.
-
Що визначає тип даних у Paskal-і?
-
На які типи поділяються дані?
-
Перелічите прості типи даних.
-
Перелічите складні типи даних.
-
Назвіть стандартні і нестандартні типи даних.
-
Як описуються типи даних у Paskal-і?
-
Як інтерпретуються дані в програмі?
-
Назвіть дані цілочисленого типу.
-
Які арифметичні операції виконуються над даними цілочисельного типу?
-
Як може бути представлена константа речовинного типу?
-
Чи може речовинне число починатися з крапки чи закінчуватися нею?
-
Розповісти про експонентну форму представлення речовинного числа.
-
Перелічите речовинні типи даних, застосовувані в Pascal.
-
У якому випадку і які директиви компілятору необхідно установити в програмі при обробці даних речовинного типу?
-
Перелічите арифметичні операції над даними речовинного типу.
-
Як виконуються в Pascal операції зведення в ступінь?
-
Як використовуються дані логічного типу?
-
Як позначаються значення логічного типу?
-
Логічна константа і її використання в програмі.
-
Логічна змінна і її використання в програмі.
-
Назвіть операції відношення.
-
Як відношення використовуються в операторі присвоювання?
-
Перелічте логічні операції.
-
Що більше: True чи False?