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

Тип як множина допустимих значень і операцій над об’єктами, формат його внутрішнього представлення. Класифікація типів даних; масиви, записи, файли, стандартні модулі. Функції і оператори роботи з рядками, засоби їх обробки: процедури і функції.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык украинский
Дата добавления 13.11.2010
Размер файла 32,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Житомирський військовий інститут

Національного авіаційного університету

Реферат

на тему:

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

Житомир 2010

Структура типів даних

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

Класифікація типів даних

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

Прості типи даних

До простих відносять реальні та порядкові типи даних.

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

Реальні типи також мають кінцеве число значень, але їх кількість дуже велика, тому кожному з них зіставити ціле число просто неможливо.

Порядкові типи

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

До будь-якого з них можна використати функції:

ORD(Х) - порядковий номер значення;

PRED(X) - порядковий номер попереднього значення;

SUCE(X) - порядковий номер наступного значення;

ORD(PRED(X))=ORD(X)-1;

ORD(SUCE(X))=ORD(X)+1.

Цілі типи

Опис:

Var <ім'я>: integer;

Тип

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

Довжина, байт

Byte

0…255

1

Word

0…65535

2

Integer

-32768…32767

2

ShortInt

-128…127

1

LongInt

-2147483648…2147483647

4

Byte - довжина в байт;

Word - довжина в слово;

Integer - ціле;

ShortInt - коротке ціле;

LongInt - довге ціле.

Над цілими типами визначені операції: “+”, “-“, “*”, div - цілочислове ділення.

При використані процедур і функцій з цілочисловими параметрами слід керуватися відповідністю діапазонів типів. Наприклад: integer входить в longint, byte < word і т.д.

Якщо в виразі використані різні типи, то вони приводяться до базового типу - min потужності цілого типу, який не містить результат. Наприклад, integer та shortint, базовим є integer.

Логічний тип (BOOLEAN)

Значенням цього типу може бути одна з двох констант FALSE або TRUE.

Для них справедливі правила:

ORD (FALSE) = 0;

ORD (TRUE) = 1;

FALSE < TRUE.

Крім того є 4 стандартні логічні операції:

AND - логічний добуток (*);

OR - логічна сума;

XOR - сума по модулю “2”;

NOT - логічне заперечення (унарна операція).

Наприклад:

А = TRUE;not A=B

B = FALSEnot B=A

A and B=B A or B=A A xor B=A

A and A=A (TRUE) B or A=A B xor A=A

B and A=B A or A=A A xor A=B

B and B=B B or B=B (FALSE) B xor B=B

Опис:

Var <ім'я>: boolean;

Символьний тип (CHAR)

(character - символ).

Значення символьного типу є множиною всіх символів ПК. Кожен символ має код у диапазоні 0…255, так званий ASCII (American Standard Code for Information Interchange). Для представлення символів використовують апострофи: `A', `B', '*', '”', …

Опис:

Var <ім'я>: char;

Символьні значення можна вводити, виводити, присвоювати, порівнювати (при порівнянні використовується порядковий номер коду ASCII).

Стандартні символьні функції:

СHR(код символу) - повертає відповідний символ;

ORD (S) - повертає код символу S.

Приклад:

var y: char;

begin

y:='b';

writ

eln ( `y:'; pred(y):5, y:5, succ(y):5);

end.{Результат на екрані: y: a b c}

Тип переліку

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

type

season = (winter, spring,summer, outumn);

Значенням присвоюються порядкові номери: 0,1,2,3…255.

Наприклад: ord (summer) = 2.

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

Приклад:

type

season = (win, spr, sum, out);

var

b: byte;

c: season;

begin

readln(b);

c:= season (b);

case c of

win : writeln(`winter');

spr : writeln(`spring');

sum : writeln(`summer');

out : writeln(`outumn');

end

end.

Тип - діапазон

Визначається як інтервал значень базового типу (раніш визначеного), яким може бути будь-який порядковий тип:

<ім'я> = <min значення>..<max значення>;

Приклад:

type

day = 1..31;

month = 1..12;

letter = `A'..'Z';

При визначенні типа-діпазона, слід користуватись правилами:

а) - це один символ(без пробілу);

б) ліва границя не повинна перевищувати праву;

в) ім'я повинно бути правильним ідентифікатором (починатись з букви, не співпадати зі службовими словами, тільки латинські букви, цифри та підкреслення).

Реальний тип

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

Тип

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

Число цифр

Довжина байт

Single

1.5Е-45…3,4Е38

7…8

4

Real

2,9Е-39…1,7Е38

11…12

6

Double

5Е-324…1,7Е308

15…16

8

Extended

3,4Е-4932…1,1Е4932

19…20

10

Comp

1Е-20…1Е20

19…20

8

Реальні типи можна зобразити з фіксованою і плаваючою комами: (17.38) (1738Е-2)

Для прискорення обчислень, можна переопреділяти тип REAL:

type

real = double; або

type

real = extended;

Функції перетворення реальних типів до цілочислених:

Round - округляє real до ближнього цілого;

Trunc - усікає real шляхом відкидання дробної частини.

Структуровані типи. Масиви даних

Масиви - тип даних, який складається з фіксованої кількості елементів одного типу.

Опис масиву можна виконувати як у розділі TYPE, так і VAR.

TYPE <ім'я масиву> = ARRAY[діапазон] OF <тип компонент>.

(ідентифікатор)(тип індексу)(базовий тип)

Тип індексу (діапазон) - будь-який порядковий тип, зокрема LongInt. Тип компонент - будь-який тип ТР, або інший масив.

Приклад:

type

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

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

var

vector : M1;

Arr1, Arr2 : Mat2;

Інакше

var <ідентефікатор> : array [діапазон] of <тип>;

Приклад:

var vector: array [1..100] of real;

Над змінними масивів можна виконувати операції присвоювання і порівняння.

Арифметичні дії, введення та виведення не можна виконувати над послідовностями, але можна над їх окремими елементами.

Елемент масиву виділяється конкретним значенням індексу. Наприклад:

var X: array [0..99] of real;

Тоді Х[0] - перший елемент, Х[1] - другий і т.д. Масив може бути одномірним, двомірним і т.д. Наприклад:

var mat2 : array [1..10,1..20] of integer;

Компоненти масиву позначаються: Mat2 [1,3]; Mat2 [5,8] … Так і організовується доступ до елементів двомірних масивів.

Приклад:

Введення значень у масив М.

var M : array [ 1..10 ] of integer;

i : integer;

begin

i := 0;

repeat

i := i+1;

read ( M [ i ] )

until i = 10

end.

Обчислити значення функції Yi=(a+b+xi)/2, якщо а і b - фіксовані значення; x={3,8,12,20,25}, i=1,N.

var

A,B : real;

i, N : integer;

X, Y : array [1..5] of real;

begin

read (A, B, N);

for i := 1 to N do

begin

read ( X [i] );

Y [i] := (A + B + X[i])/2;

write ( Y [i] );

end

end.

3). Введення одномірного масиву і виведення у вигляді:

а) вектора-рядка;

б) вектора-стовпчика.

a) var M : array [1..10] of real;

i : integer;

begin

i := 0;

repeat

i := i + 1;

reat (M [i] );

until i =10 ;

for i := 1 to 10 do

write (X [i] : 5 : 2,'');

end.

b) var

M : array [1..10] of real;

i : integer;

begin

i := 0;

repeat

i := i + 1;

read (M [i] );

until i =10 ;

for i := 1 to 10 do

writeln (X [i] : 5 : 2);

end.

Стандартні модулі ТР. Їх призначення

Модуль - це окремо транслюєма програмна одиниця.

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

USES <ім'я модуля>

Основна частина засобів ТР розташована в стандартних модулях, які поставляються разом з компілятором.

Існує вісім стандартних модулів: SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY, TURBO3, GRAPH3.

Модуль SYSTEM - основний, в який входять всі процедури і функції стандартного Паскаля і ТР. Він підключається автоматично і не потребує запрошення USES.

Модуль DOS - призначений для забезпечення інтерфейса з програмами ОС.

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

Модуль PRINTER - забезпечує зв'язок між процесором і принтером.

Модуль GRAPH - містить 90 графічних процедур і функцій, які дозволяють відтворювати на екрані точки, відрізки, кола та ін. фігури різних кольорів і розмірів; засоби замальовування та виводу тексту у графічному режимі.

Модуль OVERLAY - розбиває великі програми на сегменти перекриття (оверлейні сегменти), які використовують загальну область пам'яті.

Модуль TURBO3 i GRAPH3 - для сумісності з версією ТР 3.0.

SYSTEM, CRT, DOS розміщені у файлі TURBO.TPL. GRAPH - окремий файл GRAPH.TPU.

Всі модулі крім SYSTEM стають доступними після їх підключення:

USES <ім'я модуля>.

Стандартні функції і оператори роботи з рядками

Символьні масиви

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

Розглянемо одномірні масиви, які складаються з елементів символьного типу (char). Наприклад:

var

S : array [ 1..12] of char;

Паскаль містить деякі додаткові засоби роботи з такими масивами:

Конкретні значення символьних масивів записують за допомогою зображення рядка та використання їх в присвоюванні та передачі параметрів:

S: = `Приклад рядка';

Зображення рядка будується з символів масиву і обмежується апострофами.

Якщо необхідно задати апостроф, то його подвоюють {` ” '}.

Допускають формування рядків з використанням десяткових кодів символів і спеціальних позначень: ( #7#17C^A^B…)

Для символьних масивів допускають операцію “+” - конкатенації (зчеплення, поєднання). Смисл операції полягає у формуванні нового символьного масиву, кількість елементів якого дорівнює сумі розмірів масивів - операндів, а значення елементів - елементи масивів, які розміщюються послідовно один за одним.

Приклад:

var S1 : array [1..8] of char;

S2 : array [1..5] of char;

begin

S1 := 'рядковий';

S2 := 'масив';

writeln (S1+' '+S2); {результат на екрані: Рядковий масив}

end.

!Особливість:!

1. в операторах присвоювання рядків символьним масивам необхідна точна відповідність довжини рядків і розмірів масивів;

2. операція конкатенації для символьних масивів не допускається у правій частині присвоювання. Наприклад:

S := S1+' '+S2; {помилка}

У таких випадках необхідно використовувати рядки, тобто рядкові типи даних.

Визначення рядкового типу даних

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

При використанні у виразах рядок обмежується апострофами. Кількість символів в рядку (довжина рядка) може динамічно змінюватись від 0 до 255.

Для визначення рядкових даних використовується ідентифікатор STRING, за яким у квадратних дужках вказується максимальна довжина рядка. Якщо значення не вказане, то по замовченню довжина рядка встановлюється 255 байт.

Приклад:

Line: string [80];

Line 1: string ;

Line 2: string [255].

В приведеному прикладі змінна Line може мати будь-яку послідовність символів (кожен з яких має стандартний тип char) довільної довжини в межах від 0 до 80 символів; Line1 і Line2 - від 0 до 255 символів.

Таким чином, важливіша різниця між рядками і символьними масивами, що рядки можуть динамічно змінювати свою довжину.

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

Рядкові дані також можна використовувати у програмі як константу.

Формат:

1. type

<ім'я типа > = string [max довжина рядка];

var

< ідентифікатор > : <ім'я типа >;

або

2. var

< ідентифікатор > : string [max довжина рядка];

Приклад:

const address = `пл. Соборна, 1';

type line = string [125];

var

S1 : Line;

S2 : string;

S3 : string [50];

Механізм динамічних рядків реалізований в мові Турбо-Паскаль достатньо просто. Для рядкових змінних пам'ять виділяється відповідно максимального значення, а використовується лише частина, яка реально зайнята символами рядка у даний час, тобто для N символів виділяється N+1 байт пам'яті, із яких N байт призначено для зберігання символів рядка, а 1 байт - для значення поточної довжини цього рядка:

Елементи рядка нумеруються цілими числами, починаючи з 1. Це іноді використовують для визначення поточної довжини рядка, наприклад:

line:= ` '; {пустий рядок}

writeln (ORD (line [0] )); {на екрані число 0}

line : =`ABCD';

writeln (ORD (line [0] )); {на екрані число 4}

Однак, для визначення поточної довжини рядка, як правило, використовують стандартну функцію length, яке повертає ціле значення поточної довжини рядка. Але це ми розглянемо далі.

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

var line : string [4];

begin

line := `дуже довгий рядок';{на екрані:дуже}

writeln (line);

end.

Таким чином рядки можуть динамічно змінювати свою довжину.

Основні операції над рядковими даними

Над рядковими даними виконують такі операції:

1. присвоювання (:=);

2. введення (Read);

3. виведення (Write);

4. поєднання (зчеплення, конкатенації - „+”);

5. порівняння (відношення).

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

Операція конкатенації

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

Приклади:

st := `a'+'b';

st := st + `c';

writeln (`st = `, st){результат st =abc}

var st : string [2];

begin

st :='1' + `2' + `3';

writeln (st){на екрані 12}

end.

Операція порівняння (відношення)

Проводить порівняння двох рядкових операндів за допомогою стандартних операторів: = , <>, >, <, >=, <=.

Правила порівняння:

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

2. У менший по довжині рядок додаються символи значення CHR(0). Тому при однакових, символах короткий рядок завжди менше довгого рядка.

Результат виконання операції завжди має логічний тип і приймає значення TRUE або FALSE.

Приклади:

1) ` “ ` < `.'TRUE

2) `A' > `1' TRUE

3) `AB' = `A'FALSE

4) `ABC' > `AB'TRUE

5) `12' <'2'TRUE

Cтандартні засоби обробки рядків: процедури і функції

Функції:

1. CONCAT(S1,S2,…,SN) - функція типу STRING. Виконує послідовне поєднання рядків S1,S2,…,SN , кожен з яких є вираз рядкового типу (STRING). Результатом є рядок не більше 255 символів. Дана функція еквівалентна операції конкатенації: `S1' + `S2' + `S3'…

2. COPY(st : STRING; index : INTEGER; count : INTEGER): STRING або COPY (st, index, count).

Функція копіює (повертає) частину рядка, виділеного з рядка st, довжиною count символів, починаючи з символу під номером index.

3. LENGTH(st : STRING) функція типу INTEGER повертає довжину рядка.

4. POS(subst, st : STRING): BYTE. Функція шукає у рядку st рядок subst. Результатом є номер позиції, де рядок subst зустрічається перший раз. Якщо рядок subst не знайдено, то результатом буде 0 (нуль).

5. UPCASE(ch) - функція типу CHAR. Повертає для символьного виразу ch, яке повинно представляти собою рядкову (маленьку) латинську букву, відповідно їй велику букву. Якщо значенням функції ch є будь-який інший символ (в тому числі рядкова буква російського алфавіту), функція повертає його без змін.

Процедури:

1. DELETE(st : STRING; index, count : INTEGER) або DELETE(st, index, count) - процедура вилучає (знищує) count символів у рядку st починаючи з символу під номером index.

2. INSERT(subst: STRING; st: STRING; index: INTEGER) або INSERT(subst, st, index). - процедура вставляє рядок subst у рядок st, починаючи з символу під номером index.

3. STR(X [:width[:decimals]]; st: STRING) - процедура перетворює число Х (real або integer) в рядок символів st так, як це робить це робить процедура WRITELN перед виводом. Параметри width і decimals (якщо вони присутні, тобто дужки [ ] показують на необов'язковість цих параметрів) задають формат перетворення: загальну ширину поля для представлення числа Х (width) та кількість символів дрібної частини (decimals), якщо X : REAL.

4. VAL(st, x, code) - процедура перетворює рядок символів st в значення числової змінної X (визначеного типу). Параметр code = 0, якщо перетворення пройшло успішно, тоді X дорівнює результату перетворення. Якщо виявляється помилковий символ у рядку st, то значення Х не змінюється, а code дорівнює номеру позиції з помилковим символом.

!Особливість!: Недопустимими є пропуски (пробіли) праворуч числа у рядку st!

val (`123_ _', x, k){помилка, x - не змінюється, k=4 };

val (`_ _123', x, k){вірно, x=123, k=0 };

Приклади:

varx : real;

y : integer;

st, st1 : string;

begin

st := concat (`12', `345');{рядок st містить 12345}

st1 := copy (st, 3, Length(st)-2); {st1 містить 345}

insert(`-' , st1, 2); {рядок st1 містить 3-45}

delete(st, pos(`2', st), 3); {рядок st містить 15}

str(pi : 6 : 2, st ); {рядок st містить 3,14}

val (`3.1415', x, y); {y містить 2, х без змін}

end.

Висновок

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


Подобные документы

  • Структура (класифікація) типів даних мови T. Pascal: прості, структуровані; стандартні модулі, їх призначення, символьні масиви. Визначення рядкового типу даних, основні операції. Стандартні засоби обробки рядків: присвоювання, порівняння, з’єднання.

    реферат [32,3 K], добавлен 13.11.2010

  • Теоретичні аспекти програмування мовою Pascal. Основні поняття та елементи мови. Розділи оголошення сталих і змінних. Стандартні та нестандартні типи даних. Основні операції, стандартні функції та процедури, прості програми. Розгалуження, цикли, масиви.

    курсовая работа [122,5 K], добавлен 21.10.2012

  • Записи: ієрархічні, з варіантними полями, множини. Складання програм, які забезпечують дії з таблицями, відомостями, списками, каталогами, де містяться дані різних типів. Особливості використання процедур і функцій мови Turbo Pascal при розробці програм.

    реферат [39,8 K], добавлен 13.11.2010

  • Базові типи змінних. Елементарний ввід-вивід. Умовні оператори та оператори множинного вибору. Основні функції вводу даних із клавіатури scanf, gets, getchar. Визначення основних (базових) типів даних. Вивід повідомлення при невірно заданому ключі.

    контрольная работа [74,6 K], добавлен 03.10.2010

  • Програми і мови програмування. Алфавіт мови програмування. Лексеми, зарезервовані слова мови Pascal. Ідентифікатори, типи даних. Арифметичні вирази, операції. Стандартні функції, структура програми. Процедури введення-виведення. Правила написання команд.

    лекция [445,0 K], добавлен 24.07.2014

  • Основні типи даних, математичні оператори й функції, що використовуються у Visual Basic. Числові, рядкові й логічні дані. Описання даних у підрозділі програми. Приклад використання функції перетворення даних. Елементи управління та їх змінені властивості.

    лабораторная работа [306,7 K], добавлен 28.11.2010

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

    реферат [45,8 K], добавлен 13.11.2010

  • Три типи файлів, які містять програми на Turbo Pascal. Призначення модулів та їх структура: заголовок, інтерфейсна частина та кінець. Стандартні модулі, їх особливості. Компіляція програм, які використовують модулі. Підключення модулів до програм.

    контрольная работа [19,6 K], добавлен 18.05.2009

  • Регулярний тип даних мови Pascal, що дозволяє в програмі задавати структуру даних, яка називається масивом. Поняття одновимірного та багатовимірного масиву. Прямі методи сортування масивів, типи даних. Таблиця результативності гравців футбольної команди.

    лекция [411,2 K], добавлен 24.07.2014

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

    реферат [30,0 K], добавлен 13.11.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.