
- •Дослідження програмних об'єктів напередвизначених типів та операцій над ними
- •Опис програмних об’єктів
- •Ініціалізація змінних при створенні
- •Оператор привласнення
- •Загальна спрощена структура програми
- •Методичні вказівки Правила складання ідентифікаторів
- •Правила опису об’єктів у програмі
- •Частина 1 дослідження цілих типів даних
- •Завдання
- •Частина 2 дослідження дійсних типів даних
- •Завдання
- •Частина 3 дослідження арифметичних операцій над значеннями цілих та дійсних типів
- •Завдання
- •Частина 4 дослідження бітових операцій над цілими значеннями
- •Бітові операції
- •Завдання
- •Частина 5 дослідження логічних типів, логічних операцій та операцій відношення
- •Завдання
- •Частина 6 дослідження вказівних типів даних
- •Завдання
- •Частина 7 дослідження символьних типів та базової операції – атрибут
- •Завдання
- •Лабораторна робота 2
- •Дослідження структурних операторів операторного
- •Базису мов програмування паскаль та сі
- •Мета лабораторної роботи - вивчити устрій структурних операторів мов Паскаль та Сі та та використати їх при дослідженні адресної арифметики.
- •Теоретичні відомості
- •Адресна арифметика в Сі
- •Правила написання програм
- •Завдання
- •Лабораторна робота 3
- •Частина 2 багатовимірні масиви
- •Лабораторна робота 4 дослідження пойменованого типу даних
- •Лабораторна робота 5
- •Завдання
- •Контрольні запитання
- •Лабораторна робота 6 дослідження механізму підпрограм Мета лабораторної роботи - вивчити в мовах Паскаль та Сі опис та використання відкритих і закритих підпрограм.
- •Inline- підпрограми Сі:
- •Контрольні запитання
- •Контрольна робота дослідження використання підпрограм в лінійних структурах даних
- •Контрольні запитання
- •Напередвизначені типи
- •Знак Число без знаку
- •Знак e
- •Список літератури
- •С. Робинсон и др. С# для профессионалов. Т 1,2. – м.: Лори, 2003. – 995с.
Контрольні запитання
Що таке підпрограма, яке її призначення?
Що таке аргумент підпрограм?
Наведіть типи підпрограм.
Опишіть способи передачі значень у закриту підпрограму.
Опишіть способи повернення значень з закритої підпрограми.
Дайте порівняльну характеристику закритих та відкритих підпрограм (переваги та нестатки).
Що таке незалежна компіляція?
Що таке перевантаження підпрограм?
Література: [1]; [4]; [5]; [6]; [7].
Додаток 1
Напередвизначені типи
Напередвизначені типи – Паскаль (табл. 1, 2)
Таблиця 1
Індикатор типу |
Діапазон подання значень |
Цифри мантиси, що значать |
Розмір значення в байтах |
Приклад зображення |
Цілі |
||||
Shorting |
-128…127 |
- |
1 |
-23 |
Integer |
-32768…32767 |
- |
2 |
+1567 |
Longint |
-2147483648…2147483647 |
- |
4 |
-1234567 |
Byte |
0…255 |
- |
1 |
157 |
Word |
0…65535 |
- |
2 |
35678 |
Символьні |
||||
Сhar |
Значення ASCII |
- |
1 |
‘a’ |
Дійсні |
||||
Single |
от 1.5*10-45 до 3.4*1038 |
7…8 |
4 |
3.4Е+5 34.5 8.5е-5 |
Real |
от 2.9*10-39 до 1.7*1038 |
11…12 |
6 |
-"- |
Double |
от 5.0*10-324 до 1.7*10308 |
15…16 |
8 |
-"- |
Extended |
от 3.4*10-4932 до 1.1*104932 |
19…20 |
10 |
-"- |
Comp |
от -2-63+1 до 263 -1 |
19…20 |
8 |
1.235е-30 |
Вказівні |
||||
рointer (адресний) - нетипізований |
- |
- |
4 |
$0000:$FF00 |
^<індикатор типу> (посилковий) – типізований |
- |
- |
4 |
- |
Таблиця 2
Індикатор типу (логічні) |
Значенню False відповідає |
Розмір значення в байтах |
Boolean |
число 0 |
1 |
ByteBool |
число 0 |
1 |
WordBool |
Число 0 в усіх байтах |
2 |
LongBool |
Число 0 в усіх байтах |
4 |
Операції над значеннями напередвизначенихтипів – Паскаль (табл. 3)
Таблиця 3
Типи операндів |
Тип результату |
Позначка |
Семантика |
||
Арифметичні унарні |
|||||
цілий дійсний |
цілий дійсний |
+ |
збереження знаку |
||
цілий дійсний |
цілий дійсний |
- |
заперечення знаку |
||
Арифметичні бінарні |
|||||
цілий дійсний |
цілий дійсний |
+ |
додавання |
||
цілий дійсний |
цілий дійсний |
- |
віднімання |
||
цілий дійсний |
цілий дійсний |
* |
множення |
||
Арифметичні бінарні |
|||||
цілий дійсний |
дійсний дійсний |
/ |
ділення |
||
цілий
|
цілий |
div |
цілочисельне ділення |
||
цілий
|
цілий |
mod |
залишок від ділення |
||
Відношень |
|||||
скалярний вказівний |
булевський |
= |
дорівнюється |
||
скалярний вказівний |
булевський |
<> |
не дорівнюється |
||
скалярний |
булевський |
< |
менше |
||
скалярний |
булевський |
> |
більше |
||
скалярний |
булевський |
<= |
менше або дорівнюється |
||
скалярний |
булевський |
>= |
більше або дорівнюється |
||
Логічна унарна |
|||||
булевський |
булевський |
Not |
логічне заперечення |
||
Логічні бінарні |
|||||
булевський |
булевський |
And |
логічне І |
||
булевський |
булевський |
Or |
логічне АБО |
||
булевський |
булевський |
xor |
логічне АБО, що виключає |
||
Бітова унарна |
|||||
цілий |
цілий |
not |
порозрядне заперечення |
||
Бітові бінарні |
|||||
цілий |
цілий |
and |
порозрядне І |
||
цілий |
цілий |
or |
порозрядне АБО |
||
цілий |
цілий |
xor |
порозрядне АБО, що виключає |
||
цілий |
цілий |
shl |
порозрядний зсув ліворуч |
||
цілий |
цілий |
shr |
порозрядний зсув праворуч |
||
Спеціальні и базові |
|||||
вказівний (посилковий) |
будь-який |
^ |
одержання значення вмісту (розіменування) |
||
будь-який |
вказівний, сумісний з nill |
@ |
одержання значення iмені (взяття адреси) |
||
будь-який |
цілий |
sizeof |
одержання розміру пам'яті, що займається значенням типу |
||
індикатор скалярного типу |
скалярний |
high |
одержання максимального значення типу |
||
індикатор скалярного типу |
скалярний |
low |
одержання максимального значення типу |
||
скалярний |
скалярний |
ord |
одержання порядкового номеру значення в диапазоні типу |
Напередвизначені типи - Сі (Сі++) (табл. 4)
Таблиця 4
Індикатор типу (цілі) |
Діапазон подання значень |
Розмір значення в байтах |
Приклад зображення |
Логічні |
|||
Bool (С++) |
False, true |
1 |
False, true |
Символьні |
|||
Char |
-128..127 |
1 |
‘a’, ‘7’, ‘*’ |
[signed] char |
-128..127 |
1 |
23 |
Unsigned char |
10..255 |
1 |
20, 0x1A |
Цілі |
|||
int [signed] short [int signed] |
-32768..32767 |
2 |
355 |
int [signed] 32 p. |
-2147483647.. 2147483647 |
4 |
300000000 |
Unsigned [int] 32 p. Unsigned short [int] |
0..65535 |
2 |
65535 |
Індикатор типу (цілі) |
Діапазон подання значень |
Розмір значення в байтах |
Приклад зображення |
Цілі |
|||
Unsigned [int] 32 |
0..4294967295 |
4 |
40000000 |
long [int signed] |
-2147483647.. 2147483647 |
4 |
-123456L, 0x0FFFL |
Unsigned long [int] |
0L..429467295L |
4 |
123456L |
Дійсні |
|||
Float |
3.4E-38.. 3.4E+38 –3.4E-38..-3.4E+38 |
4 |
2.78, 1.3E5 |
Double [long float] |
1.7E-308.. 1.7E+308 –1.7E-308.. –1.7E+308 |
8 |
12.67, 45.7E+76 |
[long] double |
3.4E-4932.. 3.4E+4932 -1.1E4932.. –3.4E+4932 |
10 |
8.5e-3000 |
Вказівні |
|||
void* (адресний)- нетипізований |
- |
4 |
- |
<індикатор типу> (посилковий)- типізований |
- |
4 |
- |
Операції над значеннями напередвизначених типів – Сі (табл. 5)
Таблиця 5
Тип |
Позначка |
Семантика |
Синтаксис |
|||
операндів |
результату |
|||||
Арифметичні |
||||||
скалярний |
скалярний |
+ |
унарний плюс |
x = + y |
||
скалярний |
скалярний |
- |
унарний мінус |
x = - y |
||
скалярний |
скалярний |
+ |
додавання |
z = x + y |
||
скалярний |
скалярний |
- |
віднімання |
z = x - y |
||
скалярний |
скалярний |
* |
множення |
z = x * y |
||
скалярний |
скалярний |
/ |
ділення |
z = x / y |
||
цілий |
цілий |
% |
ділення за модулем (залишок) |
z = x % y |
||
Відношень |
||||||
скалярний вказівний |
цілий – 0/1 (boolean) |
< |
менше ніж |
(i < j) |
||
скалярний вказівний |
цілий – 0/1 (boolean) |
<= |
менше або рівно |
(i <= j) |
||
скалярний вказівний |
цілий – 0/1 (boolean) |
> |
більше |
(i > j) |
||
скалярний вказівний |
цілий – 0/1 (boolean) |
>= |
більше або рівно |
(i >= j) |
||
скалярний вказівний |
цілий – 0/1 (boolean) |
== |
рівно |
(i == j) |
||
скалярний вказівний |
цілий – 0/1 (boolean) |
!= |
не рівно |
(i != j) |
||
Логічні |
||||||
скалярний вказівний |
цілий – 0/1 (boolean) |
&& |
логічне І |
((i >0) && (i <10)) |
||
скалярний вказівний |
цілий – 0/1 (boolean) |
|| |
логічне АБО |
((i == 0) || (i > 0)) |
||
скалярний вказівний |
цілий – 0/1 (boolean) |
! |
логічне НІ |
! ((i == 0) || (i > 0)) |
||
Маніпулювання бітами |
||||||
дискретні |
дискретні |
& |
And |
(i & 128) |
||
дискретні |
дискретні |
| |
Or |
(i | 64) |
||
дискретні |
дискретні |
^ |
Xor (АБО, що виключає) |
(i ^ 23) |
||
дискретні |
дискретні |
~ |
not |
(~ i) |
||
дискретні |
дискретні |
<< |
побітовий зсув ліворуч |
(i << 2) |
||
дискретні |
дискретні |
>> |
побітовий зсув праворуч |
(i >> 5) |
||
Базові і спеціальні |
||||||
вказівний (посилковий) |
будь-який |
* |
одержання вмісту (розіменування) |
*pPointer |
||
будь-який |
вказівний, сумісний з* nill |
& |
взяття адреси |
&pPointer |
||
будь-який |
цілий |
sizeof |
одержання розміру пам'яті значення |
sizeof (int) |
Примітка.-1-true, -0-false; <<-вільні біти заповнюються 0, >>- вільні біти заповнюються 0/1 (знаком).
Додаток 2
Структура тексту програми на лексичному рівні
а) Коментарі.
Паскаль:
Текст, довжиною
у декілька строчок
{
}
Текст, довжиною
у декілька строчок
( * * )
Сі:
Текст, довжиною
у строчку
/ /
Текст, довжиною
у декілька строчок
/ * * /
б) Пробільні символи.
<пробільні символи>::=<табуляція, ASCII 09 >| <пробіл, ASCII 10>| <перевід строки, ASCII 10>| <вертикальна табуляція, ASCII 11>| <нова сторінка, ASCII 12>|<повернення каретки, ASCII 13>
в) Позначки.
Напередвизначені позначки
- напередвизначені зарезервовані позначки
Паскаль:
<позначки>::=and|asm|array|begin|case|const|div|do|downto|else|end|file|for|function|goto|implementation| in|inline|interface|mod|not|nil|of|or|program|procedure|record|repeat|set|shl|shr|string|then|to|type|uses|varfile|while|with|xor
Сі:
<позначки>::=asm|auto|break|case|char|const|continue|default|delete|do|double|else|enum|extern|float|for|goto|huge|if|inline|int|long|new|public|register|return|short|signed|sizeof|static|struct|switch|template|this|union|unsigned|void|volatile|while
-стандартні позначки
позначки (індикатори) напередвизначених типів
Паскаль:
<позначки(індикатори)>::=Shorting|Integer|Longint|Byte|Word|Single|Real|
Extended|Comp|Boolean|ByteBool|WordBool|LongBool|Char|String|Pchar|Pointer|
Text
Сі:
<позначки(індикатори)>::=char|double|float|int|long|short|signed|unsigned|void
позначки операцій
Паскаль:
<позначки операцій>::= +|-|*|/|div|mod|=|<>|<|>|<=|>=|not|and|or|xor|shl|shr|^|&|sizeof
Сі :
<позначки операцій>::= ->|++|--|&|*|+|-|~|!|sizeof|%|>>|<<|
<|>|<=|>=|==|!=|^||||&&|/=|
позначки розподілювачів
Паскаль:
<позначки розподілювачів>::=’|(|)|,|.|/|;|[|]|{|}|#|$|..|
Сі:
<позначки розподілювачів>::=’|(|)|,|.|\|;|[|]|{|}|#|”|
-зображення
Паскаль:
<зображення>::=Nil | False | True
Сі:
<зображення>::=NULL
Позначки, що визначаються
ідентифікатор
П
аскаль,
Сі:
ідентифікатор:
< цифра>::=0|1|2|3|4|5|6|7|8|9
<буква>::=A|B|..|Z|a|b|..|z
Зображення значень напередвизначених типів - Паскаль
шістнадцяткова цифра::=A|B|C|D|E|F|<цифра>
<цифра>::=0|1|..|9
<знак>::=+|-
ц
Послідовність
цифр
Послідовність
шістнадцяткових
цифр
$
ціле зі знаком: