Типи даних в Object Pascal

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Міністерство освіти і науки Російської Федерації

Реферат

Типи даних в Object Pascal

Єкатеринбург, 2008

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

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

Паскаль є мовою жорсткої типізації. Це означає, що тип змінної визначається при її описі і не може бути змінений. Змінна може брати участь тільки в операціях, визначених її типом. Такий підхід сприяє більшій акуратності і відповідальності при складанні програми, робить їх непідвладними автоматичної (при компіляції) перевірці на коректність і в кінцевому підсумку призводить до більш високої надійності створюваних програм.

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

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

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

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

Дещо осібно стоять об'єктні типи, або об'єкти. Будучи, з формальної точки зору, узагальненням комбінованих типів (записів), вони дозволяють радикально змінити підхід до розробки програм, пропонуючи так званий об'єктно-орієнтований стиль програмування.

I. Прості типи: порядкові, речові, дата-час.

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

1. цілі типи;

2. логічний тип або булевський тип;

3. символьний тип;

4. перераховуються типи;

5. обмежені типи або тип-діапазон.

На основі стандартних скалярних типів є можливість утворювати власні скалярні типи. Є два способи породження нових скалярних типів - обмежені і перелічувані.

Будь-який скалярний тип характеризується безліччю його різних значень, серед яких встановлено лінійний порядок. Всі скалярні типи, крім речових, називаються дискретними.

1. Цілі типи

Ця група типів позначає безліч цілих чисел в різних діапазонах. Є п'ять цілих типів, що розрізняються допустимим діапазоном значень і розміром займаної пам'яті. Цілі типи позначаються ідентифікаторами Integer, Byte, ShortInt, Word, LongInt; їх характеристики наведені в таблиці 1.

Таблиця 1

Тип

Діапазон значень

Розмір пам'яті

ShortInt

-128 .. 127

1 байт

Integer

-32768 .. 32767

2 байти

LongInt

-2147483648 .. 2147483647

4 байти

Byte

0 .. 255

1 байт

Word

0 .. 65535

2 байти

Значення цілих типів можуть зображуватися у програмі двома способами: у десятковому вигляді та у шістнадцятковому коді. В останньому випадку на початку такого коду ставиться символ '$'.

Приклади:

123

-1

$ F1 (десяткове подання 241)

0 $ B80

2. Булевський (логічний) тип

До логічним відносяться типи Boolean, ByteBool, Bool, wordBool і LongBool. У стандартному Паскалі визначений тільки тип Boolean, інші логічні типи введені в Object Pascal для сумісності з Windows: типи Boolean та ByteBool займають по одному байту кожен, Bool і WordBool - по 2 байти, LongBool - 4 байти.

Є два значення булевского типу, що представляють логічні істінностние значення (істина / неправда). Ці значення позначаються за допомогою стандартних ідентифікаторів:

true (істина)

false (брехня).

3. Символьний тип

Значеннями символьного типу є символи з безлічі ASCII (American Standard Code for Information Interchange - американський стандартний код для обміну інформацією). Це безліч складається з 256 різних символів, впорядкованих певним чином, і містить символи великих і малих літер, цифр і різних інших символів, включаючи спеціальні керуючі символи. Допускаються деякі відхилення від стандарту ASCII, зокрема, за наявності відповідної системної підтримки це множина може містити літери російського алфавіту.

Порядкові номери (кодування) значень символьного типу можна дізнатися з відповідних розділів технічних описів. Ці значення займають один байт. Якщо символьне значення має графічне подання, то воно зображується відповідним знаком, укладеним в одинарні лапки (апострофи), наприклад:

'*' 'A' 'X' ':'''''

Для представлення самого апострофа його зображення подвоюється.

Якщо символ, який потрібно зобразити, не має графічного представлення, то можна скористатися наступною еквівалентною формою запису, що складається з символу '#' (грати, дієз) і цілочисельного коду символу (від 0 до 255):

# 10 # $ A

4. Перелічувані

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

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

Наприклад: Нехай необхідно розробити програму управління вуличним світлофором. Ясно, що програма буде моделювати світлофор за допомогою зазначення його поточного стану, тобто включеного в даний момент світла. Таким чином, змінна програми, що представляє світлофор, може приймати одне з трьох значень, що відповідають червоному, жовтому і зеленому кольорам. Можна було б запровадити для цього змінну цілого типу та встановити, що, наприклад, значення 1, 2, 3 відповідають зазначеним квітам. Однак очевидно, що числа, які кодують кольору, не мають прямого відношення до розв'язуваної задачі і, отже, ускладнюють програму і затемнюють її сенс. Тому найбільш природним рішенням у даному випадку буде введення перечислимого типу з трьох значень, що позначаються іменами Red, Yellow, Green, і змінної цього типу.

Синтаксис визначення перечислимого типу:

(Ідентифікатор 1, ідентифікатор 2 ,..., ідентифікатор N)

Приклади перелічуваних типів:

(Red, Yellow, Green)

(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)

(On, Off)

(Left, Up, Right, Down)

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

Monday .. Friday

Left .. Up

Імена зі списку перечислимого типу вважаються константами відповідного перечислимого типу. Ці ідентифікатори повинні бути унікальні в межах блоку; неприпустимі описи двох і більше перелічуваних типів з збігаються константами.

5. Обмежені типи (тип-діапазон)

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

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

Синтаксис визначення такого типу:

мінімальное_ значення .. максімальное_значеніе

Наприклад:

1 .. 10

-100 .. 100

'A' .. 'z'

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

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

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

6. Речові типи

Ця група типів позначає безлічі речових значень в різних діапазонах Паскаль підтримує чотири різних речових типу. Вони іменуються ідентифікаторами Real, Single, Double, Extended та Comp і мають характеристики, представлені в таблиці 2.

Таблиця 2

Речовий тип

Діапазон значень

Число цифр мантиси

Розмір пам'яті

Real

2.9 E-39 .. 1.7E38

11-12

6 байт

Single

1.5E-45 .. 3.4E38

7-8

4 байти

Double

5.0E-324 .. 1.7E308

15-16

8 байт

Extended

3.4E-4932 .. 1.1E493

19-20

10 байт

Comp

-2E +63 .. +2 E +63-1


8 байт

Примітки

  1. Хоча тип Comp вважається речовим типом, він містить тільки цілі числа з досить значного діапазону, які представляються в обчисленнях як речові (з нульовою мантиссой).

  2. Всі речові типи, крім Real, можуть використовуватися в програмі, взагалі кажучи, тільки якщо зроблені відповідні опції компілятора. Для коректної компіляції програми, що використовує ці типи, можна також застосувати директиву компілятора {+ N}.

Речові значення можуть зображуватися у формі з фіксованою точкою і в формі з плаваючою крапкою. У першому випадку ціла і дробова частини дійсного числа відокремлюються одне від одного символом '.' (Крапка). Обидві ці частини мають бути обов'язково присутніми, наприклад:

17.384

0.5

Дійсне число у формі з плаваючою точкою записується як пара види:

<Мантиса> Е <порядок>

Таке позначення розуміється як "мантиса, помножена на 10 у степені, що дорівнює порядку". Наприклад:

7Е-2 еквівалентно 7 · 10 -2

12.25 Е +6 або 12.25 Е6 еквівалентно 12.25 · 10 6

7. Дата / час

Тип дата-час визначається стандартним ідентифікатором TDateTime і призначений для одночасного зберігання та дати, і часу. У внутрішньому представленні він займає 8 байт і подібно currency являє собою дійсне число з фіксованою дробової частиною: у цілої частини числа зберігається дата, в дробової - час. Дата визначається як кількість діб, які пройшли з 30 грудня 1899 року, а час - як частину доби, що минули з 0 годин, так що значення 36444,837 відповідає даті 11.10.1999 і часу 20:05. Кількість діб може бути і негативним, однак значення менші -693594 (відповідає даті 00.00.0000 від Різдва Христового) ігноруються функціями перетворення дати до строковому типу.

II. Складові типи: структуровані типи, покажчики, рядки, процедурні, об'єкти, класи, варіанти.

Структуровані типи у свою чергу діляться на:

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

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

3. множинні типи;

4. файлові типи;

Прості типи, описані вище, визначають різні множини атомарних (нероздільних) значень. Складові, або структурні типи, на відміну від простих, задають безлічі «складних» значень; кожне значення з такого безлічі утворює деякий агрегат (сукупність) кількох значень іншого типу (або інших типів). Можна сказати, що складові типи визначають певний спосіб утворення нових типів з вже наявних, причому окремі елементи складових значень можуть мати будь-який, в тому числі складовою, тип. Таким чином, Паскаль допускає утворення структур даних довільної складності, дозволяючи тим самим досягти адекватного уявлення у програмі тих даних, з якими вона оперує.

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

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

Для коректного визначення регулярного типу необхідно задати дві характеристики: тип елементів масиву, а також кількість і «спосіб нумерування» елементів. Останні характеристики задаються за допомогою вказівки типу індексу.

Визначення масиву має наступний загальний вигляд:

Type

A = array [T1] of T2;

Тут:

Array, of - службові слова;

Т1 - тип індексу масиву;

Т2 - тип компонент масиву.

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

В якості типу індексу може виступати будь-який дискретний тип, крім LongInt і обмежених типів, побудованих з типу LongInt, зокрема, допустимі обмежені і перелічувані. Елементами масиву можуть бути змінні будь-якого типу.

Нижче наведені описи різних масивів:

Type

M1 = array [1 .. 100] of real;

M2 = array [char] of boolean;

Matrix = array [1 .. 10] of array [1 .. 20] of integer;

Database = array [1 .. MaxF] of file of Person;

Var

Vector: M1;

Sym_Table: M2;

Arr1, Arr2: Matrix;

S: array [Red, Yellow, Green] of boolean;

Примітки

  1. Число елементів у масиві завжди повинно бути фіксовано.

  2. Для завдання кількості елементів масиву використовується тип; число елементів визначається кількістю можливих значень зазначеного типу, що відрізняє мову Паскаль від багатьох інших мов, у яких розмір масиву задається або цілим числом (або виразом цілого типу), або діапазоном цілих чисел. Це надає Паскалю додаткову гнучкість, дозволяючи «нумерувати» елементи масиву не тільки цілими числами, а й значеннями довільного цілого типу.

  3. Як елементи масиву можуть виступати значення будь-якого типу; зокрема, ними можуть бути значення будь-яких складових типів, наприклад, масиви:

Var

V2: array [1 .. 10] of array [1 .. 20] of byte;

Таку змінну можна трактувати двояко: як масив, що складається з декількох масивів, або як один двовимірний масив (матрицю). Для скорочення запису в подібних випадках можна використовувати еквівалентну форму визначення регулярних типів, де у квадратних дужках вказується список типів індексів, розділених комами, той же масив можна описати:

Var

V2: array [1 .. 10, 1 .. 20] of of byte;

Кількість індексів у визначенні (тобто розмірність масиву) у мові не обмежується.

  1. Турбо Паскаль допускає єдине можливе дію над масивом в цілому: використання його в операторі присвоювання, наприклад:

Vect1: = Vect2;

причому типи обох масивів повинні бути еквівалентні.

Елемент масиву вважається змінної; він може отримувати значення (наприклад, в операторі присвоювання), а також брати участь у виразах, де він представляє значення, вміщене у відповідний елемент даного масиву. Асортимент операцій над елементами масиву повністю визначається типом цих елементів (базовим типом масиву).

Приклад:

V2 [i, j]: = V2 [i, j-1] + 1;

Sym_Table ['z']: = Switch and Sym_Table ['a'];

2. Комбіновані типи (записи)

Комбіновані типи, як і регулярні типи, представляють собою правило формування складових типів. Об'єкти цього типу називаються записами. На відміну від масивів, записи можуть об'єднувати значення різних типів і тому є, мабуть, найбільш гнучким механізмом побудови даних.

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

Структура оголошення типу запису така:

<Ім'я типу> = RECORD <список полів> END

Тут:

<Ім'я типу> - правильний ідентифікатор;

RECORD, END - зарезервовані слова (запис, кінець);

<Список полів> - цей список являє собою послідовність розділів запису, між якими ставиться крапка з комою.

Кожен розділ запису складається з одного або декількох ідентифікаторів полів, що відділяються один від одного комами. За ідентифікатором (ідентифікаторами) ставиться двокрапка і опис типу поля (полів). Наприклад:

Type

Birthday = record

day, month: byte;

year: word

end;

Var

a, b: Birthday;

.........

У цьому прикладі тип Birthday (день народження) містить три поля з іменами DAY, MONTH і YEAR (день, місяць, рік); змінні A і B містять записи типу Birthday.

Як видно з прикладу, поширеним випадком вживання запису є необхідність описати атрибути (характеристики) деякого об'єкта, подається і оброблюваного в програмі. Наприклад, для опису об'єкта "людина" можуть знадобитися наступні характеристики:

  • прізвище, ім'я, по батькові (символьні масиви або рядки);

  • підлогу (перераховувані тип із двох значень);

  • індекс спеціальності (ціле) і т.д.

У цьому випадку опис комбінованого типу Person (чоловік) може виглядати наступним чином:

Type

Person = record

Name, SecondName, SurName: string [20];

Sex: (Male, Female);

Speciality: Word

end;

Маючи у програмі вищенаведене опис, можна визначити змінні даного типу, наприклад:

Var Sasha, Masha, Natasha: Person;

Примітки

  1. У межах одного запису імена полів повинні бути унікальні.

  2. Імена полів можуть збігатися з іншими ідентифікаторами в межах поточного блоку, а також з іменами полів у інших записах.

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

Приклад:

Type

Date = Record

Month: (Jan, Feb, Mar, Apr, May, June, July, Aug, Sept, Oct, Nov, Decem);

Day: 1 .. 31;

Year: 1900 .. 2000

end;

Person = Record

Name, SecondName, SurName: string [20];

Sex: (Male, Female);

Speciality: Word;

Birthday: Date

end;

Доступ до полів з ​​елемента Birthday провадиться за загальними правилами, наприклад:

Sasha. Birthday. Year: = 1970;

Masha. Birthday. Month: = May;

3. Множинні типи

Множинні типи належать до дещо незвичним і порівняно рідко використовуваних засобів мови Паскаль. Проте у ряді випадків використання множинних типів дозволяє підвищити компактність і наочність програм.

Значення множинного типу так само, як і масиви, будуються з декількох значень одного (базового) типу. Однак на відміну від масивів і записів значення множинного типу може містити будь-яку кількість різних елементів базового типу - від нуля елементів (порожня множина) до всіх можливих значень базового типу. Іншими словами, можливими значеннями змінних множинного типу є всі підмножини значень базового типу.

Синтаксис опису деякого множинного типу має вигляд:

Type

<Ім'я типу> = set of <базовий тип>;

Тут:

<Ім'я типу> - правильний ідентифікатор мови;

set, of - зарезервовані слова (безліч, з);

<Базовий тип> - базовий тип елементів множини, в якості якого може використовуватися будь-який порядковий тип, крім WORD, INTEGER, LONGINT (тобто типи BYTE і CHAR, перелічувані, а також обмежені типи, утворені з них).

Приклад:

Type

digitChar = set of 0 ".. '9 ';

digit = set of 0 .. 9;

elemColor = (Red, Yellow, Blue);

color = set of Color;

Var

s1, s2, s3: digitChar;

s4, s5, s6: digit;

myColor: Color;

Примітки

  1. Всі значення базового типу, що утворюють конкретні значення множинного типу, повинні бути різні.

Наприклад, не може бути безлічі: 1, 2, 2.

  1. Порядок "розташування" елементів у множині не має значення.

Множини:

1, 2, 3

3, 2, 1

однакові.

Це відповідає прийнятій в математиці трактуванні множини як бесповторного невпорядкованою сукупності об'єктів.

Для завдання безлічі використовується так званий конструктор безлічі: список специфікацій елементів множини, що відділяються один від одного комами; список обрамляється квадратними дужками. Специфікаціями елементів можуть бути константи або вирази базового типу, а також - обмежений тип з того самого базового типу.

Наприклад:

s6: = [1, 2, 3];

s4: = [0, 1, 2, 3 +4];

s5: = [0 .. 3, 6]; {еквівалентно безлічі [0, 1, 2, 3, 6]}

s1: = ['0 '.. '5'];

s2: = []; {пусте безліч}

myColor: = [Red];

4. Файлові типи

Будь-який файл має три характерні особливості. По-перше, у нього є ім'я, що дає можливість програмі працювати одночасно з декількома файлами. По-друге, він містить компоненти одного типу. Типом компонентів може бути будь-який тип Object Pascal, крім файлів. Іншими словами, не можна створити "файл файлів". По-третє, довжина новостворюваного файлу ніяк не обмовляється при його оголошенні і обмежується лише ємністю пристроїв зовнішньої пам'яті.

Файловий тип можна задати одним з трьох способів:

<Ім'я> = File of <тип>;

<Ім'я> = TextFile;

<Ім'я> = File;

Тут <ім'я> - ім'я файлового типу (правильний ідентифікатор);

File, of - зарезервовані слова (файл, з); TextFile - ім'я стандартного типу текстових файлів; <тип> - будь-який тип Object Pascal, крім файлів.

5. Покажчики

Object Pascal надає в розпорядження програміста гнучке засіб керування динамічною пам'яттю - так звані покажчики. Покажчик - це змінна, яка в якості свого значення містить адресу байта пам'яті. За допомогою покажчиків можна розміщувати у динамічній пам'яті будь-якої з відомих у Object Pascal типів даних. Лише деякі з них (Byte, Char, ShortInt, Boolean) займають у внутрішньому поданні один байт, інші - кілька суміжних. Тому насправді покажчик адресує лише перший байт даних.

Як правило, покажчик зв'язується з певним типом даних. Такі покажчики називають типізований. Для оголошення типізованого покажчика використовується значок ^, який поміщається перед відповідним типом, наприклад:

var

p 1: ^ Integer;

р2: ^ Real;

6. Строкові типи

Тип STRING (рядок) у Паскалі широко використовується для обробки текстів. Він багато в чому схожий на одновимірний масив символів ARRAY [0 .. N] OF CHAR, проте, на відміну від останнього, кількість символів в рядку-змінної може змінюватися від 0 до N, де N - максимальна кількість символів в рядку. Значення N визначається оголошенням типу STRING [N] і може бути будь-константою порядкового типу, але не більше 255.

Паскаль дозволяє не вказувати N, в цьому випадку довжина рядка приймається максимально можливою, а саме N = 255.

Рядок у Паскалі трактується як ланцюжок символів. До будь-якого символу в рядку можна звернутися так само, як до елементу одновимірного масиву ARRAY [0 .. N] OF CHAR, наприклад:

Var

st: string;

.........

if st [5] = 'A' then .....

Найперший байт в рядку має індекс 0 і містить поточну довжину рядка. Перший значущий символ рядка займає другий байт і має індекс 1. Над довжиною рядка можна здійснювати необхідні дії і таким чином змінювати довжину.

Значення поточної довжини рядка можна не тільки отримувати із першого байта самої рядки, а й отримувати за допомогою функції LENGTH (st).

Наприклад:

Var

st: string;

.........

write ('Введіть рядок: ');

readln (st);

writeln ('Поточна довжина рядка -', Length (st));

........

Даний фрагмент програми роздрукує поточну довжину введеного рядка.

До рядкам можна застосовувати операцію "+" - зчеплення, наприклад:

st: = 'a' + 'b';

st: = st + 'c'; {st містить "abc"}

Якщо довжина зчепленої рядка перевищить максимально допустиму довжину N, то "зайві" символи відкидаються.

Операції відносини =, <>,>, <,> =, <= виконуються над двома рядками посимвольний, зліва направо з урахуванням внутрішньої кодування символів. Якщо один рядок менше інший по довжині, відсутні символи короткого рядка замінюються значенням CHR (0).

Наступні операції відносини дадуть значення TRUE:

'A'> '1 '

'Turbo' <'Turbo Pascal'

'Паскаль'> 'Turbo Pascal'

Всі інші дії над рядками і символами реалізуються за допомогою вбудованих процедур і функцій.

7. Процедурні типи

Основне призначення процедурних типів - дати програмістові гнучкі засоби передачі функцій і процедур у якості фактичних параметрів звернення до інших процедур і функцій.

Для оголошення процедурного типу використовується заголовок процедури (функції), в якому опускається її ім'я, наприклад:

type

Proc1 = Procedure (a, b, с: Real; var d: Real); Proc2 = Procedure (var a, b);

РгосЗ = Procedure;

Func1 = Function: String;

Func2 = Function (var s: String): Real;

Як видно з наведених прикладів, існує два процедурних типу: тип-процедура і тип-функція.

8. Об'єкти

Тип даних Object є базовим у Visual Basic.NET. Це означає, що всі типи даних і типи об'єктів є похідними від нього або безпосередньо, або опосередковано. Це означає також, що будь-який інший тип даних, найпростіший або складової, може бути перетворений в Object. Якщо параметр Option Strict вимкнений, тип Object може бути використаний в якості універсального типу даних.

9. Класи

Класами в Object Pascal називаються спеціальні типи, які містять поля, методи і властивості. Як і будь-який інший тип, клас є лише зразком для створення конкретних екземплярів реалізації, які називаються об'єктами. Важливою відмінністю класів від інших типів є те, що об'єкти класу завжди розподіляються в купі, тому об'єкт-змінна фактично являє собою лише покажчик на динамічну область пам'яті. В основі класів лежать три фундаментальні принципи, які називаються інкапсуляція, успадкування і поліморфізм.

Приклад:

type

TMyClass = class (TObject) Field: Integer;

end;

var

MyClass: TMyClass;

10. Варіанти

Варіант (в Delphi 1 він відсутній) - це тип variant, розроблений спеціально для тих випадків, коли на етапі компіляції програміст не може сказати, якого типу дані будуть використовуватися у виразі або як параметри виклику підпрограм. Змінна-варіант займає в пам'яті додаткові 2 байти, в які поміщається інформація про дійсний типі змінної. Ця інформація дозволяє компілятору створити код, який буде здійснювати необхідне перетворення типів на етапі прогону програми.

У змінну-варіант можна розмістити:

  • ціле або дійсне число;

  • логічне значення;

  • рядок;

  • час та / або дату;

  • OLE-об'єкт;

  • масив довільної розмірності і довжини, що містить елементи одного з перерахованих вище типів.

Варіанти можуть брати участь в цілочисельних, речових, логічних і час-дата виразах за умови коректності відповідних перетворень. Наприклад, якщо варіанту v присвоєна рядок '1 .0 ', то вираз 1 + v буде правильним речовим значенням 2,0. Однак якщо v: = 'текст', вираз 1 + v викличе виключення EVariantError.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Реферат
92.2кб. | скачати


Схожі роботи:
Типи даних в Turbo Pascal
Object Pascal
Типи даних алгоритмічної мови TURBO Pascal Стандартні функції і оператори роботи з рядками
Структуровані типи даних записи та множини Використання процедур та функції мови Turbo Pascal
Об`єктно-орієнтоване середовище програмування Object Pascal в профільному курсі інформатики
Розробка програми на мові Borland Object Pascal Ide Borland Delphi
Базові елементи мови типи даних цілочисельні типи даних дані дійсних типів дані типу string
Строковий тип даних у мові Pascal
Обробка масивів даних у середовищі Turbo Pascal
© Усі права захищені
написати до нас