Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОП Конспект лекций - Паскаль.doc
Скачиваний:
20
Добавлен:
30.11.2018
Размер:
1.46 Mб
Скачать

Тема 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

Питання для контролю.

  1. Що визначає тип даних у Paskal-і?

  2. На які типи поділяються дані?

  3. Перелічите прості типи даних.

  4. Перелічите складні типи даних.

  5. Назвіть стандартні і нестандартні типи даних.

  6. Як описуються типи даних у Paskal-і?

  7. Як інтерпретуються дані в програмі?

  8. Назвіть дані цілочисленого типу.

  9. Які арифметичні операції виконуються над даними цілочисельного типу?

  10. Як може бути представлена константа речовинного типу?

  11. Чи може речовинне число починатися з крапки чи закінчуватися нею?

  12. Розповісти про експонентну форму представлення речовинного числа.

  13. Перелічите речовинні типи даних, застосовувані в Pascal.

  14. У якому випадку і які директиви компілятору необхідно установити в програмі при обробці даних речовинного типу?

  15. Перелічите арифметичні операції над даними речовинного типу.

  16. Як виконуються в Pascal операції зведення в ступінь?

  17. Як використовуються дані логічного типу?

  18. Як позначаються значення логічного типу?

  19. Логічна константа і її використання в програмі.

  20. Логічна змінна і її використання в програмі.

  21. Назвіть операції відношення.

  22. Як відношення використовуються в операторі присвоювання?

  23. Перелічте логічні операції.

  24. Що більше: True чи False?