Реферат по предмету "Информатика"


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

Житомирський військовий інститут
Національного авіаційного університету
Реферат
на тему:
Типи даних в 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 і т.д.
Якщо в виразі використані різні типи, то вони приводяться до базового типу – min потужності цілого типу, який не містить результат. Наприклад, integer та shortint, базовим є integer.
Логічний тип (BOOLEAN)
Значенням цього типу може бути одна з двох констант FALSE або TRUE.
Для них справедливі правила:
ORD (FALSE) = 0;
ORD (TRUE) = 1;
FALSE
Крім того є 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.
Тип – діапазон
Визначається як інтервал значень базового типу (раніш визначеного), яким може бути будь-який порядковий тип:
ім’я> = >..maxзначення>;
Приклад:
type
day = 1..31;
month = 1..12;
letter = ‘A’..’Z’;
При визначенні типа-діпазона, слід користуватись правилами:--PAGE_BREAK--
а) – це один символ(без пробілу);
б) ліва границя не повинна перевищувати праву;
в) ім’я повинно бути правильним ідентифікатором (починатись з букви, не співпадати зі службовими словами, тільки латинські букви, цифри та підкреслення).



Реальний тип
Позначає множину дійсних значень в різних діапазонах. ТР підтримує декілька реальних типів, характеристики яких представленні в таблиці:
Тип
Діапазон значень
Число цифр
Довжина байт
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.    продолжение
--PAGE_BREAK--
Стандартні функції і оператори роботи з рядками
Символьні масиви
Символьний тип даних дозволяє працювати з окремими символами тексту. Для обробки більшої кількості текстових одиниць використовують символьні масиви або рядкові типи даних.
Розглянемо одномірні масиви, які складаються з елементів символьного типу (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.
! Особливість:!
в операторах присвоювання рядків символьним масивам необхідна точна відповідність довжини рядків і розмірів масивів;
операція конкатенації для символьних масивів не допускається у правій частині присвоювання. Наприклад:
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 символів.
Таким чином, важливіша різниця між рядками і символьними масивами, що рядки можуть динамічно змінювати свою довжину.
Змінну рядкового типу визначають у розділі опису типів, або безпосередньо у розділі опису змінних.
Рядкові дані також можна використовувати у програмі як константу.
Формат:
type
= string [max довжина рядка];
var
: ;
або
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.
Операція порівняння (відношення)
Проводить порівняння двох рядкових операндів за допомогою стандартних операторів: =, , >, =,
Правила порівняння:
Порівняння проводиться зліва-направо з урахуванням внутрішнього кодування символів таблиці ASCII. Рядок буде більшим, якщо перший не співпадаючий символ має більший номер.
У менший по довжині рядок додаються символи значення CHR(0). Тому при однакових, символах короткий рядок завжди менше довгого рядка.
Результат виконання операції завжди має логічний тип і приймає значення TRUEабо FALSE.
Приклади:
1) ‘ “ ‘
2) ‘A’ > ‘1’ TRUE
3) ‘AB’ = ‘A’FALSE
4) ‘ABC’ > ‘AB’TRUE
5) ‘12’
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.



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


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.