Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

bobalo(1)

.pdf
Скачиваний:
588
Добавлен:
12.02.2016
Размер:
1.24 Mб
Скачать

13.

(1+ x)3 =1

 

1

 

(2 3x 3 4x2 + 4 5x3 5 6x4 +...);

 

x

 

<1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.

(1+ x)

4

= 1−

 

 

1

 

 

 

 

(2 3 4x − 3 4 5x

2

+ 4 5 6x

3

− 5 6 7x

4

+ ...);

 

x

 

< 1

 

 

 

 

 

 

 

 

 

1 2 3

 

 

 

 

 

 

 

1

 

 

 

 

 

1

 

 

 

1 3

 

 

 

2

 

 

1 3 5

 

3

 

1 3 5 7

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.15. (1+ x)

2 =1

x +

 

x

 

x

+

x

...;

 

 

x

 

<1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

2 4

 

 

2

4 6

 

2

4 6 8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16.

(1+ x)

1

3

=1

1

 

x

+

1 4

 

x

2

1 4 7

x

3

+

1 4 7

10

x

4

...;

 

x

 

<1.

 

 

 

 

 

3

3

6

 

 

3

6 9

 

3 6

9

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

17. (1+ x)14 =1

18. shx = x + x3 +

3!

19. chx =1+ x2 +

2!

20. ex2 = (1)k

k =0

 

1

x +

 

1 5

x2

1 5 9

x3

+

 

1 5 9 13

x4 ...;

 

x

 

<1.

 

 

 

 

4

 

4 8

4 8 12

4 8 12 16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x5

+

 

x7

+.. +

 

 

 

x2n+1

 

±...;

 

 

 

x

 

< ∞.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5!

 

7!

 

(2n +1)!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x4

 

+

x6

 

+... +

 

 

x2n

 

±...;

 

x

 

<∞.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4!

 

 

6!

 

 

(2n)!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2k

;

 

 

 

x

 

<∞.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

2k

1

x

2k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

21.

sin2 x = (1)k +1

 

 

 

 

;

 

x

 

 

 

< ∞.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(2k)!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k =1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

22.

(1x)

12 =1

 

x

 

1 1

x2

1 1 3

 

 

x3

 

1 1 3 5

 

x4

...;

 

 

x

 

 

 

1.

 

 

 

 

 

 

 

 

 

 

 

2 4

2 4 6

 

 

 

2 4 6 8

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

23.

(1x)

13 =1

x

 

1 2

x2

1 2 5

x3

 

1 2 5 8

 

x4

...;

 

 

 

 

x

 

 

 

1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

3 6

 

 

 

 

3 6 9

 

 

 

 

 

3 6 9 12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

24.

(1x)

14 =1

x

 

1 3

x2

1 3 7

 

 

x3

 

1 3 7 11

 

x4 ...;

 

x

 

1.

 

 

 

 

 

 

 

 

 

4 8

4 8 12

 

4 8 12 16

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

25.

(1x)2 =1+2x +3x2 +4x3 +5x4 +...;

 

 

x

 

<1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

26.

(1x)3 =1+

1

 

(2 3x +3 4x2 + 4 5x3 +5 6x4 +...);

 

x

 

<1.

 

 

 

 

 

 

 

 

 

1 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

27.

(1− x)

4

= 1+

 

1

 

 

(2 3 4x

+ 3 4

5x

2

+

4 5 6x

3

+ 5

6 7x

4

+ ...);

 

x

 

< 1

.

 

 

 

 

 

 

 

1 2 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

91

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

28.

(1x)

1

2

=1+

1

x +

1 3

x

2

+

 

1 3 5

x

3

+

 

1 3 5 7

 

x

4

 

+...;

 

 

x

 

<1.

 

 

 

 

 

2

2 4

 

 

2 4 6

 

 

2 4 6 8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

29.

(1x)

1

3

=1+

1

x +

1 4

 

x

2

+

1 4 7

 

x

3

+

1 4 7 10

x

4

+...;

 

 

x

 

<1.

 

 

 

 

3

3 6

 

 

3 6 9

 

 

3 6 9 12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30.

(1x)

1

4

=1+

1

x +

1 5

x

2

+

 

1 5 9

 

 

x

3

+

 

1 5 9 13

 

 

x

4

+...;

 

 

 

 

 

 

x

 

<1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

4 8

 

 

 

4 8 12

 

 

4 8 12 16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

92

Лабораторна робота № 5

ТИПИ ДАНИХ У МОВІ ПАСКАЛЬ ТА РОБОТА З МАСИВАМИ

93

1. МЕТА РОБОТИ

Мета роботи – ознайомитись з типами даних у мові Паскаль, методами їхнього опису і застосування, набути навичок роботи з масивами.

2. ТЕОРЕТИЧНІ ВІДОМОСТІ

Концепція мови Паскаль передбачає широкі можливості як у застосуванні стандартних типів, так і у створенні нових типів. Усі типи даних можна поділити на дві групи:

1)прості, або скалярні;

2)складні, або структуровані.

Класифікацію типів даних мови Паскаль наведено на рис. 1. Прості типи знову поділимо на дві групи :

1. Стандартні типи, до яких належать чотири стандартні типи:

REAL;

INTEGER;

BOOLEAN;

CHAR;

Типи даних

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Прості типи

 

 

 

 

 

 

 

 

 

 

Складні типи

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Тип масиву

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ARRAY

 

Стандартні

 

 

 

 

 

 

Змінні

 

 

 

 

 

 

 

 

 

 

типи

 

 

 

 

 

 

типи

 

 

 

 

 

Тип запису

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RECORD

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дійсний

 

 

 

 

Перелічуваний

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(REAL)

 

 

 

 

 

 

 

типи

 

 

 

 

 

 

у E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Типфайла FILE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Цілий

 

 

 

 

 

Обмежений

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(INTEGER)

 

 

 

 

 

 

 

типи

 

 

 

 

 

Тип множини

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SET

 

 

Логічний

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(BOOLEAN)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вказівниковий

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тип

 

 

Символьний

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(CHAR)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 1. Типи даних у мові Паскаль

2. Змінні типи, до яких належать перелічуваний та інтервальний (або обмежений) типи.

94

Структуровані типи визначають спосіб утворення нових типів з уже існуючих. Кожен елемент цього типу, своєю чергою, може бути як простим, так і структурованим. Отже, мова Паскаль дає змогу створювати структуру даних довільної складності ( ієрархічну структуру даних ).

До структурованих типів у стандарті мови Паскаль належать:

1)регулярні типи (масиви);

2)комбіновані типи (записи);

3)файлові типи;

4)множинні типи;

5)об’єктові (вказівникові) типи;

УTurbo Pascal-і є ще один додатковий клас типів: 6) рядкові типи.

2.1.СТАНДАРТНІ ТИПИ ДАНИХ

Упопередніх темах ми вже використовували стандартні типи: INTEGER, REAL, CHAR і BOOLEAN. Систематизуємо ці поняття.

Цілий тип INTEGER. Значеннями цілого типу є елементи підмножини цілих чисел, які задовольняють умову:

MAXINT N MAXINT .

Для нашого класу машин:

32768 N 32767 .

Якщо під час обчислень результат виходить за межі цього інтервалу, можливі два варіанти:

1)виконання програми припиняється і видається повідомлення про помилку (переповнення порядку);

2)виконання програми продовжується, але результат є неправильним (наприклад, сума двох додатних чисел може дати від’ємний результат).

Устандарт мови Паскаль був закладений перший варіант. Робота машини переривалася. У сучасних компіляторах, на жаль, переважає другий варіант, тому програміст повинен сам слідкувати за коректністю обчислень.

Змінні цілого типу описуються так:

VAR

I, J, K: INTEGER; A, B: INTEGER;

Ціле число представляється в пам’яті машини дискретно (однозначно), тому цілий тип є впорядкованим типом. Над змінними цілого типу можуть виконуватись п’ять арифметичних операцій:

Додавання + (a+b);

Віднімання - (a-b);

Множення * (a*b);

95

Ділення цілих чисел DIV (7 DIV 2 = 3);

Обчислення залишку від ділення цілих чисел MOD (7 MOD 2 = 1). Результат виконання цих операцій буде цілого типу. 7+4=11, 7DIV4=1,

7MOD4=3, але не може виконуватись операція ділення ‘/’, оскільки це операція ділення дійсних чисел. 7/4 хоч операндами є цілі числа, але результат буде дійсного типу 1.75. Числа 7 і 4 спочатку переводяться до дійсного типу, а потім здійснюється ділення 7.0/4.0.

Над змінними цілого типу можуть виконуватись операції порівняння: >, >=, <, <=, =, <>. Змінні цілого типу можуть використовуватися в операндах логічних операцій: (a > 5) AND(I < 10) .

Змінні цілого типу можуть бути аргументами всіх стандартних математичних функцій, але ціле значення при цілочислових аргументах повертають лише дві стандартні функції: ABS(x) і SQR(x). ABS(-9)=9, SQR(4)=16. Результат цілого типу повертають функції TRUNC(x) і ROUND(x), але аргумент х буде дійсного типу:

ROUND(x) – заокруглення дійсного числа х до цілого: ROUND(3.75)=4; ROUND(3.45)=3. TRUNC(x) – виділення цілої частини дійсного числа х: TRUNC(3.75)=3; TRUNC(3.45)=3.

Оскільки змінні цілого типу є впорядкованими, то до них можуть застосовуватись стандартні функції PRED(x), SUCC(x):

PRED(9)=8; SUCC(9)=10.

Функція ORD(x) – (порядок) дає значення цілого числа

ORD(7)=7.

Функція ODD(x) – (парність числа) дає значення TRUE, якщо ціле число х непарне і значення FALSE, якщо ціле число х парне.

ODD(9)= TRUE; ODD(2)= FALSE.

Дійсний тип REAL. Змінна дійсного типу не представляється в пам’яті машини дискретно (однозначно). Число 0.48 може бути представлено як 0.4799, як 0.480001, як 0.476899, залежно від того, яку точність обчислень дає ЕОМ, або яку точність вибирає програміст і представляється дійсне число. Тобто дійсне число – це не одне число, а ціла підмножина значень. Дійсне число – це приблизне число, а операції над дійсними числами виконуються за правилами приблизних чисел. Тому використання операції ‘=’ рівності до дійсних чисел не коректне. Наприклад, умова IF a = 0.48 THEN … може ніколи не виконатись, оскільки а в пам’яті машини може бути представлене як 0.4799674. Змінні дійсного типу описуються:

VAR

A, B, C: REAL;

X, Y, Z: REAL;

96

Над змінними дійсного типу можуть виконуватись чотири арифметичні операції:

Додавання + (a+b);

Віднімання - (a-b);

Множення * (a*b);

Ділення / (a/b).

Над змінними дійсного типу можуть виконуватися операції порівняння: >, >=, <, <=, <>, але бажано не використовувати операцію “=”.

Значення дійсного типу можуть використовуватись в операндах логічних операцій:

(a+b/c>7.94) OR (x>0).

Змінні дійсного типу можуть бути аргументами всіх стандартних математичних функцій, при цьому результат такої функції буде дійсного типу.

Оскільки значення змінних дійсного типу не є дискретним, то до них не можуть застосовуватись функції PRED(X), SUCC(X), ORD(X), ODD(X).

Символьний тип CHAR. Значеннями символьного типу CHAR є множина символів, впорядкованих відповідно до таблиці кодів ASCII (табл. 5.1) і визначена алфавітом мови Паскаль. Деякі елементи цієї множини можуть не мати графічного відображення – це керівні символи (перехід на наступний рядок, перемикання регістрів та інші).

Таблиця 5.1

97

Елементи множини CHAR нумеруються, починаючи з нуля. Змінні символьного типу описуються:

VAR CL, SL, SYM, AS: CHAR;

Над змінними символьного типу не виконують жодних операцій, які дають результат цього самого типу.

Змінні символьного типу можуть бути операндами операцій порівняння:

’A’ > ’B’ = FALSE;

’5’ > ’2’ = TRUE;

’A’ = ’C’ = FALSE;

При виконанні операцій порівняння порівнюються коди символів. Значення символьного типу можуть використовуватись в операндах логічних операцій:

NOT (’A’ > ’B’ ) = TRUE

(’A’ < ’B’ ) AND ( SL > SYM );

До значень символьного типу застосовуються такі стандартні функції: ORD(Х) – дає код символу Х в таблиці кодів;

CHR(Х) – дає символ, код якого в Х:

ORD(’A’)=65

CHR(65)=’A’

ORD(’0’)=48

CHR(49)=’1’

PRED(Х) – попередній символ;

 

SUCC(Х) – наступний символ:

SUCC(’1’)=’0’.

PRED(’C’)=’B’

Логічний тип BOOLEAN. Змінні логічного типу можуть набувати лише одне із двох значень: TRUE – істина, FALSE – не істина. Логічний тип є дискретним типом і його значення упорядковані, при цьому FALSE – відповідає ціле число 0, TRUE – відповідає ціле число 1.

Змінні логічного типу описуються так:

VAR

L1, L2: BOOLEAN;

Над змінними логічного типу виконуються три логічні операції: NOT – логічне заперечення;

AND – логічне множення ( кон’юнкція );

OR – логічне додавання ( диз’юнкція ).

(A>5) AND (B<9).

Значення логічної змінної не можна ввести за допомогою операторів введення READ або READLN, але його можна вивести за допомогою операторів виведення WRITE або WRITELN. Надати значення логічній змінній можна в операторі присвоювання:

L1:=TRUE;

98

Над логічними змінними можуть виконуватись операції порівняння: >, >=, <, <=, =, <>:

L1>L2,

при цьому FALSE<TRUE.

Логічні змінні можуть бути операндами таких стандартних функцій: ORD(x), SUCC(x), PRED(x):

ORD(TRUE)=1

ORD(FALSE)=0

SUCC(FALSE)=TRUE

PRED(TRUE)=FALSE

Оскільки значення логічного типу пронумеровані як FALSE = 0; TRUE = 1,

то в стандарті мови Паскаль закладено ситуацію, що FALSE не має попереднього, а TRUE не має наступного.

Крім стандартних, до простих типів належать перелічуваний та інтервальний типи.

2.1. ПЕРЕЛІЧУВАНИЙ ТИП

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

Перелічуваний тип вводиться в програму в розділі опису типів:

TYPE <ім’я типу> = (<константи типу>);

Синтаксична діаграма наведена на рис. 2.

TYPE

Ідентифікатор

=

(

Ідентифікатор

)

 

 

 

 

,

 

Рис. 2. Синтаксична діаграма опису перелічуваного типу

Наприклад:

TYPE DAYS=(Mon, Tue, Wed, Thu, Fri, Sat, Sun); COLOR=(RED, GREEN, YELLOW);

Після того, як новий тип даних визначено, можна описати змінні цього типу в розділі описів змінних:

VARD1, D2:DAYS; SW:COLOR;

99

Можна об’єднати ці два описи і описувати змінні нових типів у розділі опису змінних:

VARDNI:(Mon, Tue, Wed, Thu, Fri, Sat, Sun). SIZ:(SPRING, SUMMER, AUTUMN, WINTER);

Константи, що входять у визначення перелічуваного типу, є впорядковані; та їм відповідає послідовність цілих чисел, починаючи від нуля.

VAR SW:(RED, GREEN, YELLOW);

0

1

2

Тому до змінних перелічуваного типу можна застосувати стандартні функції:

ORD(RED)=0;ORD(Thu)=3

PRED(GREEN)=RED;SUCC(Thu)=Fri

Треба пам’ятати, що у стандарті мови Паскаль перший елемент не має попереднього, а останній наступного, тобто

PRED(RED) і SUCC(YELLOW)

не визначені.

Над змінними перелічуваного типу можуть виконуватись лише операції порівняння, наприклад:

RED>YELLOW=FALSE;

Wed>Tue=TRUE;

Змінні перелічуваного типу не можна вводити за допомогою процедури READ і виводити за допомогою процедури WRITE. Їхні значення можна тільки

присвоювати в операторі присвоювання:

SIZ:=SUMMER;

SW:=GREEN;

DNI:=Tue;

а також використовувати у різних операторах.

Можна записати оператор циклу, де параметр циклу змінюється від понеділка до п’ятниці:

For DNI:=MON to FRI do {оператори тіла циклу}

Для виведення значень змінних перелічуваного типу використовується оператор вибору CASE:

CASE DNI OF

MON: WRITELN(’Понеділок’);

TUE: WRITELN(’Вівторок’);

WED: WRITELN(’Середа’);

THU: WRITELN(’Четвер’);

FRI: WRITELN(’П’ятниця’);

END;

100

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]