Лабораторна робота 2

Лабораторна робота 2

ДОСЛІДЖЕННЯ ПРОГРАМНИХ ОБ'ЄКТІВ
НАПЕРЕДВИЗНАЧЕНИХ ТИПІВ ТА ОПЕРАЦІЙ НАД НИМИ

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

Теоретичні відомості

Програмні об’єкти використовуються для зберігання даних під час виконання програм і можуть розглядатися як контейнери для даних. Програмними об’єктами є літерали, константи, змінні, та інш.
Кожний програмний об’єкт має тип. Тип об’єкту визначає набір значень, які він може зберігати, та множину операцій над ними.
Програмний об’єкт повинний бути визначений та описаний (задекларований) перед використанням. Програмні об’єкти в мові Паскаль декларуються у спеціальній секції програми. Програма на мові С не має будь-якої спеціальної секції для декларування об’єктів, тому об’єкти можуть бути задекларовані у різних частинах програми. Декларація об’єкта включає його ідентифікатор та індикатор типу. Ідентифікатор є іменем об’єкту, яке дозволяє оперувати з ним. Програміст складає ідентифікатор відповідно до певних правил.
В мовах програмування існують певні набори напередвизначених типів об’єктів. Вони є стандартними типами мови і можуть використовуватися при описі об’єктів без будь-яких додаткових визначень.

Опис програмних обєктів

Паскаль:
<опис константи>::=const< ідентифікатор >=< статичний - вираз>
<опис змінної> ::= var< ідентифікатор >:< індикатор типу>>{<базування>}01
<індикатор типу> ::= <ідентифікатор>|<індикатор напередвизначеного типу>
<базування>::=absolute<зображення значення вказівного типу>|
base< ідентифікатор >

Наприклад:
const PI = 3.14; \\ опис константи PI
var sum : integer; \\ опис змінної sum
\\ опис змінної mult, розташованої в тому місті памяті, що і sum
var mult: longint base sum;
\\ опис змінної avg, розташованої в памяті за адресою $DSEG:$000F
var avg : real absolute $DSEG:$000F;

Сі:
<опис константи>::=const< індикатор типу >< ідентифікатор >=< статичний вираз >
<опис змінної>::=< індикатор типу ><ідентифікатор>
<опис посилання>::=< індикатор типу >&< ідентифікатор >=< ідентифікатор >

Наприклад:
const int PI = 3.14;
int sum;
int &ref_sum =sum; \\ опис посилання ref_sum

Літерали та константи є об’єктами з незмінним значенням. Змінні є програмними об’єктами, які зберігають дані, що можуть змінюватись під час виконання програм.
Описані програмні об’єкти повинні бути ініціалізовані перед використанням шляхом надання їм початкового значення при створенні або за допомогою оператора привласнення.

Ініціалізація змінних при створенні

Паскаль:
ініціалізація::=const< ідентифікатор >:< індикатор типу >=< статичний вираз >

Наприклад:
const r : real = 5; \\ опис та ініціалізація змінної r
const db_pi : real = 2 * PI; \\ опис та ініціалізація змінної db_pi

Сі:
Ініціалізація::=< індикатор типу >< ідентифікатор >=< статичний вираз >

Наприклад:
float r = 5;
float db_pi = 2 * PI;

Оператор привласнення

Паскаль:
<оператор привласнення>::=< ідентифікатор >:=<вираз >

Наприклад:
len := db_pi * r ;

Сі:
<оператор привласнення >::=<ідентифікатор>=<вираз >

Наприклад:
len = db_pi * r ;

Загальна спрощена структура програми
Паскаль:

програма::=program<позначка>;{<описи>}0begin{<оператори>}0end.

Program ;
{Секція опису типів та програмних об’єктів }
Type
{Секція визначень типів}
Const
{Секція визначень констант}
Var
{Секція визначень змінних}
{Виконуюча секція}
Begin
{ Тіло програми, що включає оператори програми}
end.

Сі

програма::=main(){{<оператор>}0}

// Рівень опису глобальних програмних об’єктів
main()
{ // Тіло програми, що включає оператори програми
}

Методичні вказівки

Правила складання ідентифікаторів

а) Smalltalk- стиль.
Для написання позначок використовуйте малі літери. Якщо позначка складається з декількох слів, тоді кожне слово починайте з великої літери.

б) Написання префіксів. Угорська нотація
Таблиця 3
Тип
Приставка
Приклад

Char
c
cDriveName

Int
n
nIndex

Long
l
lFileSise

Double
f
fVolume

Long pointer
p
lpszDirName

Член структурних даних
m_
m_NIndex

Позначка константи
Нижній регістр
ONE,TWO

ASCIIZ-строка
sz
szName


Правила опису об’єктів у програмі

1. Не розташовуйте в одному рядку більше одного ідентифікатора при описі об'єктів.
2. Розташовуйте описи за алфавітом та вирівнюйте розташування описів за стовбчиками, наприклад,
int ab,
bcd,
z;
3. Супроводжуйте позначки пробілами (за винятком: перед та після дужок, перед комою, крапкою, крапкою з комою).
4. Використовуйте позначки з сенсом, якщо у позначці є цифри, розташовуйте їх в кінці.
5. Не використовуйте одну позначку для декількох цілей.
6. Уникайте литералів, а використовуйте константи.
7. Для позначок використовуйте Smalltalk – стиль та Угорську нотацію.
8. Вирівнюйте усі оператори привласнення вертикально.
9. Не розташовуйте на одному рядку більше одного оператору привласнення.

Частина 1
ДОСЛІДЖЕННЯ ЦІЛИХ ТИПІВ ДАНИХ

Теоретичні відомості

Цілі змінні можуть зберігати значення цілих чисел у визначеному діапазоні (див. Додаток 1).
Правила складання зображення значень цілих типів в мовах Паскаль та Сі представлено в Додатку 2.

Завдання

Написати програми на мовах Паскаль та Сі, які складаються з наступних дій:
Опису констант цілого типу.
Опису змінних цілого типу.
Ініціювання об'єктів при описі.
Ініціювання об'єктів оператором привласнення, використовуючи значення з варіантів (табл.1). Дослідити входження даних з варіанта до діапазону подання значень відповідного типу.
Примітка: При написанні програми дослідити опис літералів у 10-й, 8-й, 16-й системах числення.
Таблиця1

варіанта
Цілі типи


Shortint
short
Integer
int
Longint
long
Byte
Word
unsigned
short


п
с
п
с
п
с
п
п
с

1
54
789
3d
800
67.8
-1275978
3475898789
-45.78
567
4
-20
500
288
156378
-40

2
-70
657
7a
-745
20.78
228597
14756987897
71.8
-57
-15
78
320
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·3

Примітка: п – Паскаль, с – Сі.


Частина 2
ДОСЛІДЖЕННЯ ДІЙСНИХ ТИПІВ ДАНИХ

Теоретичні відомості

Змінні дійсного типу можуть містити числа з дробовою частиною. Такі дані можуть бути представлені у двох формах: стандартної десятинній або експоненціальній. Зображення стандартної десятинної форми включає цілу частину, десятинну крапку та дробову частину (наприклад: 6.768, 0.0012, -45.789, 23.0).
Експоненціальна форма (або наукова нотація) використовується для написання дуже великих або дуже малих чисел. Експоненціальна форма включає три частини:
коефіцієнт, який виглядає як стандартна десятинна форма дійсного числа;
буква E або e;
експонента, яка має ту ж форму, як ціла константа.

Наприклад:
Десятинна форма
Звичайна експоненціальна форма
Експоненціальна форма у мовах Pascal та C

-12345000000
0.00000467
-1.12345 x 1010
4.67 x 10-6
-1.2345E+10
4.67e-6


Отже, експоненціальна форма у мовах програмування зв’язана з науковою нотацією наступним чином:
(коефіцієнт)E(експонента) = (коефіцієнт) x 10 (експонента)
Точність дійсних змінних обмежена кількістю цифр коефіцієнта (наприклад, 11-12 цифр для типу Real Pascal).
Дійсні змінні можуть зберігати значення дійсних чисел у визначеному діапазоні (див. Додаток 1).
Правила складання зображення значень дійсних типів в мовах Паскаль та Сі представлено в Додатку 2.

Завдання

Написати програми на мовах Паскаль та Сі, які складаються з наступних дій:
Опису змінних дійсного типу.
Опису констант дійсного типу.
Ініціювання об'єктів при опису.
Ініціювання об'єктів оператором привласнення, використовуючи значення з варіанта (табл.2). Дослідити входження даних з варіанта до діапазону подання значень відповідного типу.
Примітка: При написанні програми дослідити опис дійсних літералів.

Таблиця 2
№ варіанта
Дійсні типи


Real
float
Double
double


п
с
п
с

1
-23564567894.76
0.000000984879
345.54(1051
-345.54(1051
0.8767(10-329

2
0.0000000078234
-0.5678(1062
3465787652.98
-0.468(10500
567.67(10-90

3
-45.678(10-43
25167876500.01
0.120002312
-45.678(10-1333
0.767(1065

4
765.23(1029
-123456789086.9
76.5(10-400
-0.435(10-432
9876.456(10201

5
35678932109.67
-0.0000007654
98.123(10-61
-64.8732(1099
0.5432(10-396

6
0.02000405434
-374.12(1043
98765432753.76
-0.321(101097
98.76(10-86

7
-408.341(10-40
0.876500023
6574839201.998
456.23(10-3048
-0.3578(1052

8
-0.002345087
2938485763.12
786.32(1042
0.4385(10-111
-49.765(104125

9
0.2327218654
-8694032167.9
786.32(1054
-0.253(1099
854.101(10-895

10
-0.00330044982
214.56(10-63
10243657043.55
0.731(10-3408
-452.11(1045

11
0.000010001001
-342.987(1074
62413879012.45
-0.842(107041
124.832(10-212

12
0.0908070605
-116655773377.99
78.52(10-49
0.132(10-273
-943.14(104867

13
-0.58123109845
23864561254.93
612.38(1046
-0.748(10301
425.73(10-2322

14
0.6891354328
362514748596.84
-52.29(10-73
0.899(10-5320
-743.6(10189

15
0.0000000002222
-61879153264.89
473.5(1091
-0.02(10-300
365.1(102581

Примітка: п – Паскаль, с – Сі.


Частина 3
ДОСЛІДЖЕННЯ АРИФМЕТИЧНИХ ОПЕРАЦІЙ НАД ЗНАЧЕННЯМИ ЦІЛИХ ТА ДІЙСНИХ ТИПІВ

Теоретичні відомості

Існує декілька операцій у мовах Pascal та C, які мають звичайний арифметичний сенс, і які можуть розглядатися як ідентичні для цілих та дійсних даних: додавання, віднімання, множення та ділення (real division).
Також, існують спеціальні операції для цілих чисел: цілочисельне ділення (integer division) та взяття решти від цілочисельного ділення (modular division).
Цілочисельне ділення є обчисленням цілої частини результату ділення двох чисел. Символ, які використовується для позначення цієї операції у мові Pascal - "div". Наприклад, 7 div 3 = 2, 17 div 5 = 3.
Взяття решти від цілочисельного ділення – це операція, яка дає ціле число, що отримується як решта від цілочисельного ділення двох позитивних цілих чисел. Ця операція позначається символом "mod" у мові Pascal та " % " у мові C: 7 mod 3 = 1, 15 mod 2 = 3, 23 % 8 = 7, 78 % 15 = 3.
Треба відмітити, що дійсне ділення ( / ) завжди дає результат дійсного типу, в незалежності від того, що один або обидва операнди є цілими. Тому при необхідності застосування дійсного ділення його результат має бути присвоєним змінній дійсного типу.
Результат дійсного ділення може бути присвоєним змінної цілого типу шляхом його перетворення у цілий тип. Є спеціальні функції для такого перетворення у мові Pascal - "Round()" та "Trunc()". Функція "Round()" округлює результат виразу між дужками звичайним математичним чином (наприклад, round(5.67) дорівнюється 6). Функція "Trunc()" просто відкидає дробову частину (наприклад, trunc(3.75) дорівнюється 3).
Мова С передбачає те, що дробова частина дійсного числа зажди відкидається, якщо змінна, який присвоюється результат, має цілій тип.
Перелік операцій над значеннями цілого та дійсного типів в мовах Паскаль та Сі представлено в Додатку 1.

Завдання

Написати програми на мовах Паскаль та Сі, які складаються з наступних дій:
Опису змінних цілого та дійсного типів.
Використання арифметичних унарних операцій над змінними цілого (табл.3) та дійсного типів. Значення дійсних типів обираються довільно.
Використання арифметичних бінарних операцій над змінними цілого (табл.3) та дійсного типів. Значення дійсних типів обираються довільно.

Таблиця 3
№ варіанта
Опе-ран-ди
Операції



Збере-ження знаку
Запере-чення знаку
Дода-вання
Відні-мання
Мно-ження
Ціло-чисель-не ділення
Зали-шок від ділення
Ділення

1
1
67
-23
-47
999
34
12
12
19
30


2
-
-
98
-765
3
3
5
3
7

2
1
-8
890
235
78
97
15
15
17
48


2
-
-
-655
34
20
5
4
3
7

3
1
76
-32
-117
-65
18
16
16
28
44


2
-
-
68
99
4
4
3
5
5

4
1
-34
98
345
43
7
18
18
19
81


2
-
-
-55
87
23
6
5
4
10

5
1
56
-73
46
-79
13
20
20
32
18


2
-
-
87
12
3
5
6
6
4

6
1
-23
802
231
48
12
10
10
24
45


2
-
-
-57
207
9
2
4
5
9

7
1
75
-54
271
-78
17
18
18
38
50


2
-
-
112
190
5
3
4
4
9

8
1
-44
86
45
63
14
21
21
27
102


2
-
-
-256
27
3
3
2
7
9

9
1
112
-31
65
-95
18
8
8
53
94


2
-
-
13
209
4
4
3
9
8

10
1
-69
154
203
-184
20
9
9
46
35


2
-
-
32
84
7
3
4
4
9

11
1
70
-13
37
98
33
15
15
29
134


2
-
-
-87
130
4
3
6
5
10

12
1
-29
91
173
-47
46
20
20
74
24


2
-
-
34
95
3
2
7
7
5

13
1
34
-25
17
293
26
24
24
82
72


2
-
-
-68
86
5
6
5
9
7

14
1
-59
101
136
-43
15
12
12
16
52


2
-
-
-57
63
7
6
7
5
8

15
1
78
-49
23
245
22
18
18
36
81


2
-
-
64
192
11
9
5
7
6




Заголовок 1 Заголовок 2 Заголовок 3 Заголовок 4 Заголовок 5 Заголовок 6 Заголовок 7 Заголовок 8 Заголовок 915

Приложенные файлы

  • doc 22423681
    Размер файла: 202 kB Загрузок: 0

Добавить комментарий