Целочислени и реални типове данни в Pascal. Типове данни на Pascal

ДО редни типовевключват (вижте фиг. 4.1) цяло число, логически, символен, изброен и тип диапазон. За всяка от тях е приложима функцията ORD(X), която връща поредния номер на стойността на израза X. За целочислените типове функцията ORD(X) връща стойността на самия X, т.е. ORD(X) = X за X, принадлежащ към произволен тип обвивка. Прилагането на ORD(X) към булеви, символни и изброени типове създава положително цяло число в диапазона от 0 до 1 (булево), 0 до 155 (символ), 0 до 65535 (изброяване). Тип диапазон запазва всички свойства на основния порядъчен тип, така че резултатът от прилагането на функцията ORD(X) към него зависи от свойствата на този тип.

Можете също да приложите функции към редни типове:

PRED (X) - връща предишната стойност от пореден тип (стойността, която съответства на поредния номер ORD(X) - 1), т.е.

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

SUCC (X) - връща следващата поредна стойност, която съответства на поредния номер ORD(X) +1, т.е.

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

Например, ако програма дефинира променлива

тогава функцията PRED(C) ще върне стойността "4", а функцията SUCC(C) ще върне стойността "6".

Ако си представим който и да е порядъчен тип като подреден набор от стойности, нарастващ отляво надясно и заемащ определен сегмент на числовата ос, тогава функцията PRED(X) не е дефинирана за ляво, а SUCC(X) за дясно край на този сегмент.

Цели видове. Диапазонът от възможни стойности на целочислени типове зависи от тяхното вътрешно представяне, което може да бъде един, два или четири байта. В табл 4.1 показва името на целочислените типове, дължината на тяхното вътрешно представяне в байтове и диапазона от възможни стойности.

Таблица 4.1

Когато използвате процедури и функции с целочислени параметри, трябва да се ръководите от „вложеността“ на типовете, т.е. навсякъде, където може да се използва WORD, може да се използва BYTE (но не и обратното), LONGINT „включва“ INTEGER, което от своя страна включва SHORTINT.

Списъкът на процедурите и функциите, приложими към целочислени типове, е даден в таблица 4.2. Писма b, s, w, i, lИзрази от тип BYTE, SHORTINT, WORD, INTEGER и LONGINT са обозначени съответно, x е израз от който и да е от тези типове; писма vb, vs, vw, vi, vl, vxобозначават променливи от съответните типове. IN квадратни скобипосочен е незадължителен параметър.

Таблица 4.2

Стандартни процедурии функции, приложими към цели типове
Обжалване Тип резултат Действие
абс(х) х Връща модул x
chr(b) Char Връща знак по неговия код
dec(vx[, i]) - Намалява стойността на vx с i, а при липса на i - с 1
inc(vx[, i]) - Увеличава стойността на vx с i, а при липса на i - с 1
здравей(и) Байт Връща старшия байт на аргумента
здравей(ш) същото същото
Lo(i) " Връща малкия байт на аргумента
Ниска (w) " същото
странно (l) Булева стойност Връща True, ако аргументът е нечетно число
произволно (w) Същото като параметър Връща псевдослучайно число, равномерно разпределено в диапазона 0...(w-l)
sgr(x) X Връща квадрата на аргумента
размяна(и) Цяло число Разменя байтове в една дума
размяна (w) Слово

При работа с цели числа типът на резултата ще съответства на типа на операндите, а ако операндите са от различни цели числа, на типа на операнда, който има максимална мощност (максимален диапазон от стойности). Евентуалното препълване на резултата не се контролира по никакъв начин, което може да доведе до недоразумения, например:

a:= 32767; (Максимална възможна стойност INTEGER)

x:= a + 2; (Препълване при оценяване на този израз !}

y:= LongInt(a)+2; (Без препълване след прехвърляне на променливата към по-мощен тип)

WriteLn(x:10:0, y:10:0)

В резултат на изпълнението на програмата получаваме

Булев тип. Булевите стойности могат да бъдат една от предварително декларираните константи FALSE или TRUE. За тях важат правилата:

Невярно< True;

succ(False)= Вярно;

pred(True) = False.

Тъй като булевият тип е порядъчен тип, той може да се използва в оператор с изброим тип, например:

за 1:= False към True направете ....

Тип символ.Стойността на тип знак е наборът от всички PC символи. На всеки знак се присвоява цяло число в диапазона 0...255. Това число служи като код за вътрешно представяне на символа; то се връща от функцията ORD.

ASCII кодът се използва за кодиране ( американски Стандартен код за информацияРазмяна- американски стандартен кодза обмен на информация). Това е 7-битов код, т.е. той може да кодира само 128 знака в диапазона от 0 до 127. В същото време, в 8-битовия байт, разпределен за съхранение на знак в Turbo Pascal, можете да кодирате два пъти повече символи в диапазона от 0 до 255. първата половина на знаците PC с кодове 0...127 съответства на стандарта ASCII (Таблица 4.3). Втората половина на знаците с кодове 128...255 не е ограничена от твърдата рамка на стандарта и може да се променя на компютър различни видове(Приложение 2 показва някои общи опции за кодиране на тези знаци).

Таблица 4.3

Кодиране на знаци според стандарта ASCII
Код Символ Код Символ Код Символ Код Символ
NUL Б.Л. ® "
ЗОН ! А а
STX " IN b
ETX # СЪС с
EOT $ г d
ENQ % д д
ПИТАЙТЕ & Е f
БЕЛ " Ж ж
Б.С. ( з ч
NT ) аз аз
LF * Дж й
VT + к к
FF , Л аз
CR - М м
ТАКА . Н п
С.И. / ЗА
DEL стр П
DC1 Q р
DC2 Р r
DC3 С s
DC4 Т t
Н.А.К. U u
SYN V V
ETB w w
МОЖЕ X X
Е.М. U U
ПОДП : z z
ESC / [ {
FS < \ л
Г.С. = ] }
Р.С. > ^ ~
САЩ ? - п

Знаците с кодове 0...31 се отнасят за служебни кодове. Ако тези кодове се използват в символния текст на програмата, те се считат за интервал. Когато се използват в I/O операции, те могат да имат следното независимо значение:

Символ Код Значение
БЕЛ Обаждане; Показването на този символ е придружено от звуков сигнал
NT Хоризонтална табулация; когато се показва на екрана, премества курсора до позиция, която е кратна на 8 плюс 1 (9, 17, 25 и т.н.)
LF Подаване на линия; когато го изведете на екрана, всички следващи знаци ще бъдат показани, започвайки от същата позиция, но от следващ ред
VT Вертикален раздел; когато се покаже на екрана, се заменя специален знак
FF Изпълнение на страници; когато се извежда на принтер, той формира страница; когато се извежда на екрана, се заменя със специален знак
CR Връщане на карета; въвежда се чрез натискане на клавиша Enter (когато се въвежда с помощта на READ или READLN, това означава командата „Enter“ и не се поставя във входния буфер; когато се извежда, това означава командата „Продължаване на извеждането от началото“ текуща линия»)
ПОДП Край на файла; въвежда се от клавиатурата чрез натискане на Ctrl-Z; при извеждане се заменя със специален знак
SSC Край на работа; въвежда се от клавиатурата чрез натискане на клавиш ESC; при извеждане се заменя със специален знак

За типа CHAR са приложими релационни операции, както и вградени функции: СНR(В) - функция от тип CHAR; преобразува израз B от тип BYTE в знак и го връща с неговата стойност;

UPCASE(CH) - функция тип CHAR; връща главна буква, ако CH е малка буква латинска буква, в противен случай връща самия знак CH, например:

cl:= UpCase("s") ;

c2:= UpCase ("Ф") ;

WriteLn(cl," ",c2)

Тъй като функцията UPCASE не обработва кирилица, резултатът от изпълнението на това

програми ще бъдат показани на екрана

Тип enum. Изброеният тип се определя чрез изброяване на стойностите, които може да получи. Всяка стойност е наименувана с някакъв идентификатор и се намира в списък, ограден със скоби, например:

цветове =(червено, бяло, синьо);

Използването на изброени типове прави програмите по-визуални. Ако, например, програмата използва данни, свързани с месеците от годината, тогава следният фрагмент от програмата:

TypeMonth=(януари,февруари,мар,април,май,юни,юли,август,септември,октомври,ноември,декември);

месец: TypeMonth;

if month = Aug then WriteLn("Би било хубаво да отидем на море!");

Би било, разбирате ли, много ясно. Уви! В Turbo Pascal не можете да използвате кирилица в идентификаторите, така че сме принудени да пишем така:

TypeMonth=(януари,февруари,мар,май,юни,юли,август,септември,окт,ноември,дек);

месец: TypeMonth;

if month = aug then WriteLn("Би било хубаво да отидем на море!");

Съответствието между стойностите на изброения тип и поредните номера на тези стойности се установява от реда на изброяване: първата стойност в списъка получава пореден номер 0, втората - 1 и т.н. Максимална мощностизброеният тип има 65536 стойности, така че всъщност изброеният тип дефинира някакво подмножество от целия тип WORD и може да се разглежда като компактна декларация на група целочислени константи със стойности 0, 1 и т.н.

Използването на изброени типове повишава надеждността на програмите, като ви позволява да контролирате стойностите, които съответните променливи получават. Например, нека бъдат дадени следните изброени типове:

цветове = (черно, червено, бяло);

ordenal= (едно, две, три);

дни = (понеделник, вторник, сряда);

По отношение на силата и вътрешното представителство и трите типа са еквивалентни:

ord(черно)=0, ..., ord(бяло)=2,

ord(едно)=0, ...ord(три)=2,

ord(понеделник)=0, ...ord(сряда)=2.

Въпреки това, ако променливите са дефинирани

col:цветове; число: пореден;

тогава операторите са разрешени

num:= succ(две);

ден:= пред(вторник);

но неприемливо

Както вече беше споменато, има едно към едно съответствие между стойностите на изброения тип и набора от цели числа, определени от функцията ORD(X). Turbo Pascal позволява и обратното преобразуване: всеки израз от тип WORD може да бъде преобразуван в стойност от тип enum, стига стойността на целочисления израз да не надвишава power1™ на типа enumeration. Това преобразуване се постига чрез използване на автоматично декларирана функция с името на изброения тип (вижте раздел 4.4). Например, за декларацията на типа, обсъдена по-горе, следните присвоявания са еквивалентни:

col:= цветове(0);

Разбира се, задание

ще бъде неприемливо.

Променливи от всеки изброен тип могат да бъдат декларирани без първо да декларирате този тип, например:

col: (черно, бяло, зелено);

Тип-обхват. Типът диапазон е подмножество от своя основен тип, който може да бъде произволен порядъчен тип, с изключение на тип диапазон. Тип диапазон се определя от границите на неговите стойности в рамките на основния тип:

<мин.знач.>..<макс.знач.>

тук<мин.знач. > - минимална стойносттип-обхват;

<макс.знач.>- максималната му стойност.

Например:

цифра = "0".."9";

Типът диапазон не трябва да се описва в секцията TYPE, но може да бъде указан директно при деклариране на променлива, например:

Ichr: "A".."Z";.

Когато определяте тип диапазон, трябва да следвате следните правила:

  • два знака ".." се третират като един знак, така че интервали между тях не са разрешени;
  • лявата граница на диапазона не трябва да надвишава дясната граница. Тип диапазон наследява всички свойства на основния си тип, но с ограниченията на по-ниската си мощност. По-специално, ако е дефинирана променлива

дни = (mo,tu,we,th,fr,sa,su);

WeekEnd = sa .. su;

тогава ORD(W) ще върне стойността 5, докато PRED(W) ще доведе до грешка.

IN стандартна библиотека Turbo Pascal включва две функции, които поддържат работа с типове диапазони:

HIGH(X) - връща максималната стойност на типа диапазон, към който принадлежи променливата X;

LOW(X) - връща минималната стойност на типа диапазон.

Следващата кратка програма ще отпечата реда

WriteLn(Low(k),"..",High(k))

Наборът от цели числа е безкраен, но винаги можем да изберем брой битове, за да представим всяко цяло число, което възниква при решаването конкретна задача. Наборът от реални числа е не само безкраен, но и непрекъснат, така че колкото и битове да вземем, неизбежно ще срещнем числа, които нямат точно представяне. Числата с плаваща запетая са едно от възможни начинипредставяне на реални числа, което е компромис между точност и обхват на приетите стойности.

Числото с плаваща запетая се състои от набор от отделни цифри, условно разделени на знак, експонента и мантиса. Показателят и мантисата са цели числа, които заедно със знака дават следното представяне на число с плаваща запетая:

Математически се записва така:

(-1) s × M × B E, където s е знакът, B е основата, E е степента, а M е мантисата.

Базата определя цифровата система. Математически е доказано, че числата с плаваща запетая с основа B=2 ( двоично представяне) са най-устойчиви на грешки при закръгляване, следователно на практика се срещат само основи 2 и по-рядко 10. За по-нататъшно представяне винаги ще приемаме B = 2 и формулата за число с плаваща запетая ще изглежда така:

(-1) s × M × 2 E

Какво е мантиса и ред? Мантисае цяло число с фиксирана дължина, което представлява най-значимите битове на реално число. Да кажем, че нашата мантиса се състои от три бита (|M|=3). Вземете например числото „5“, което двоична системаще бъде равно на 101 2. Най-значимият бит съответства на 2 2 =4, средният бит (който имаме равен на нула) 2 1 =2, а най-малкият 2 0 =1. ред– това е степента на основата (две) на най-високата цифра. В нашия случай E=2. Удобно е да напишете такива числа в така наречения „научен“ стандартен формуляр, например "1.01e+2". Веднага става ясно, че мантисата се състои от три знака, а редът е два.

Да кажем, че искаме да получим дробно число, използвайки същите 3 бита от мантисата. Можем да направим това, ако вземем, да речем, E=1. Тогава броят ни ще бъде равен

1.01e+1 = 1×2 1 +0×2 0 +1×2 -1 =2+0.5=2.5

Очевидно по този начин едно и също число може да бъде представено по различни начини. Нека разгледаме пример с дължина на мантисата |M|=4. Числото "2" може да бъде представено по следния начин:

2 = 10 (в двоичен формат) = 1,000e+1 = 0,100e+2 = 0,010e+3.

Затова още в първите машини числата са били представени в т.нар нормализирана форма, когато първият бит на мантисата винаги се приемаше за равен на единица.

Това спестява един бит (тъй като имплицитният не трябва да се съхранява в паметта) и гарантира, че числото е представено уникално. В нашия пример "2" има едно представяне ("1.000e+1"), а мантисата се съхранява в паметта като "000", тъй като водещата единица се подразбира имплицитно. Но в нормализираното представяне на числа възниква нов проблем- невъзможно е да се представи нула в тази форма.

  • Анализ на данни с помощта на командите за избор на параметри и търсене на решение
  • Анализ и интерпретация на данни от експериментални психологически изследвания.
  • Анализ на изходните данни. Технически норми за градски пътища.
  • АНАЛИЗ НА ПОЛУЧЕНИТЕ ДАННИ. ВЗЕМАНЕ НА РЕШЕНИЕ ЗА ДОСТАТЪЧНОСТТА ИЛИ НЕДОСТАТЪЧНОСТТА НА ВОДОСНАБДИТЕЛНАТА ХАРАКТЕРИСТИКА ЗА НУЖДИТЕ НА НАПОИТЕЛНАТА СИСТЕМА.
  • Оборудване за комуникационни линии: оборудване за предаване на данни, крайно оборудване, междинно оборудване.

  • Всяка програма, написана на който и да е език за програмиране, по същество е предназначена да обработва данни. Данните могат да бъдат числа, текстове, графики, звук и др. Някои данни са изходни данни, други са резултат, който се получава при обработка на изходните данни от програмата.

    Данните се съхраняват в паметта на компютъра. Програмата осъществява достъп до тях, като използва имена на променливи, свързани с местата в паметта, където се съхраняват данните.

    Променливите са описани преди основния програмен код. Тук са посочени имената на променливите и типът данни, съхранявани в тях.

    В езика за програмиране Pascal има много типове данни. В допълнение, самият потребител може да дефинира свои собствени типове.

    Типът на променливата определя какви данни могат да се съхраняват в мястото на паметта, свързано с нея.

    Типови променливи цяло числоможе да се свързва само с целочислени стойности обикновено в диапазона от -32768 до 32767. Pascal има други цели числа (байт, longint).

    Типови променливи истинскисъхранява реални (дробни) числа.

    Променлива Булева стойност(Boolean) тип (boolean) може да приема само две стойности - вярно(1, вярно) или невярно(0, невярно).

    Тип символ (char)може да приема стойности от специфична подредена последователност от знаци.

    Интервален типдефинирани от потребителя и образувани само от порядъчни типове. Представлява подмножество от стойности в определен диапазон.

    Можете да създадете свой собствен тип данни, като просто изброите стойностите, които променливата може да приеме. от този тип. Това е т.нар изброен тип данни.

    Всички горепосочени са прости типове данни. Но има и сложни, структурирани, които се основават на прости типове.

    Масиве структура, която заема една област в паметта и се състои от фиксиран брой компоненти от същия тип.

    струние последователност от знаци. Освен това броят на тези символи не може да бъде повече от 255 включително. Това ограничение е характерна черта на Pascal.

    Записвайтее структура, състояща се от фиксиран брой компоненти, наречени полета. Данните в различните полета на запис могат да бъдат от различни типове.

    Комплектипредставляват колекция от произволен брой елементи, но от един и същи изброен тип.

    файловеза Pascal те са поредици от същия тип данни, които се съхраняват на устройства външна памет(например твърд диск).

    Концепцията за такъв тип данни като показалецсвързани с динамично съхранение на данни в компютърната памет. Честа употреба динамични типоведанните са по-ефективни при програмиране от статичните.

    Типът данни дефинира набор от валидни стойности и набор от валидни операции.

    Прости видове.

    Простите типове се делят на РЕДНИ и РЕАЛНИ.

    1. РЕДНИ ВИДОВЕ , на свой ред има:

    а) цяло

    Паскал дефинира 5 цели числа, които се дефинират в зависимост от знака и стойността, които ще приеме променливата.

    Въведете име

    Дължина (в байтове)

    Диапазон от стойности

    32 768...+32 767

    2 147 483 648...+2 147 483 647

    б) логически

    Името на този тип е BOOLEAN. Булевите стойности могат да бъдат една от булевите константи: TRUE (истина) или FALSE (false).

    в) символичен

    Името на този тип е CHAR - заема 1 байт. Стойността на тип знак е наборът от всички PC символи. На всеки символ се присвоява цяло число в диапазона 0…255. Това число служи като код за вътрешно представяне на символа.

    2. РЕАЛНИ ТИПОВЕ .

    За разлика от ординалните типове, чиито стойности винаги се преобразуват в поредица от цели числа и следователно са представени абсолютно точно в компютъра, стойностите на реалните типове дефинират произволно числосамо с известна крайна точност в зависимост от вътрешния формат на реалното число.

    Дължина на числов тип данни, байтове

    Име на цифров тип данни

    Брой значими цифри от числов тип данни

    Диапазон от десетичен ред на числов тип данни

    2*1063 +1..+2*1063 -1

    СТРУКТУРИРАНИ ТИПОВЕ

    Структурираните типове данни дефинират подредена колекция от скаларни променливи и се характеризират с вида на техните компоненти.

    Структурираните типове данни, за разлика от простите, дефинират множества сложни значенияс едно общо име. Можем да кажем, че структурните типове определят определен начин за образуване на нови типове от съществуващи.

    Има няколко метода за структуриране. Според начина на организация и вида на компонентите в сложните типове данни се разграничават следните разновидности: нормален тип (масиви); комбиниран тип (записи); тип файл (файлове); множество типове(ове); тип низ (низове); в езика Turbo Pascal версия 6.0 и по-стари беше въведен тип обект (обекти).

    За разлика от прости типоведанни, данните от структуриран тип се характеризират с множеството елементи, образуващи този тип, т.е. променлива или константа от структуриран тип винаги има множество компоненти. Всеки компонент от своя страна може да принадлежи към структуриран тип, т.е. възможно е влагане на типове.

    1. Масиви

    Масивите в Turbo Pascal са в много отношения подобни на подобни типове данни в други езици за програмиране. Отличителна черта на масивите е, че всички техни компоненти са данни от един и същи тип (евентуално структурирани). Тези компоненти могат лесно да бъдат организирани и всеки един от тях може да бъде достъпен просто чрез посочване на сериен номер.

    Описанието на масива е посочено, както следва:

    <имя типа>= масив [<сп.инд.типов>] от<тип>

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

    Array, of – запазени думи (масив, от);

    <сп.инд.типов>- списък от един или повече типове индекси, разделени със запетаи; квадратните скоби, рамкиращи списъка, са синтактично изискване;

    <тип>- всеки тип Turbo Pascal.

    Всички порядъчни типове могат да се използват като типове индекси в Turbo Pascal, с изключение на типовете LongInt и диапазон с базов тип LongInt.

    Дълбочина на гнездене структурирани типовекато цяло и следователно масивите е произволен, следователно броят на елементите в списъка с индекси на типове (размер на масива) не е ограничен, но общата дължина на вътрешното представяне на всеки масив не може да бъде повече от 65520 байта.

    2. Записи

    Записът е структура от данни, състояща се от фиксиран брой компоненти, наречени полета на запис. За разлика от масива, компонентите (полетата) на записа могат да бъдат различни видове. За да е възможно да се препраща към един или друг компонент на записа, полетата се наименуват.

    Структурата на декларация за тип публикация е:

    < Иметип>=ЗАПИС< съвместно предприятие. полета>КРАЙ

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

    ЗАПИС, КРАЙ – запазени думи (запис, край);

    <сп.полей>- списък с полета; е поредица от секции на запис, разделени с точка и запетая.

    3. Комплекти

    Наборите са набор от обекти от един и същи тип, които са логически свързани помежду си. Природата на връзките между обектите се подразбира само от програмиста и по никакъв начин не се контролира от Turbo Pascal. броят на елементите, включени в едно множество, може да варира от 0 до 256 (множество, което не съдържа елементи, се нарича празно, поради което наборите се различават от масивите и записите).

    Две множества се считат за еквивалентни тогава и само ако всичките им елементи са еднакви и редът на елементите на множеството е безразличен. Ако всички елементи на едно множество са включени и в друго, първото множество се казва, че е включено във второто.

    Описанието на типа комплект е:

    < Иметип> = НАБОР ОТ< бази. тип>

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

    SET, OF – запазени думи (set, of);

    <баз.тип>- основният тип на елементите на множеството, който може да бъде всеки редов тип с изключение на WORD, INTEGER и LONGINT.

    За дефиниране на множество се използва т. нар. конструктор на множество: списък със спецификации на елементите на множеството, разделени със запетаи; списъкът е ограден с квадратни скоби. Спецификациите на елемента могат да бъдат константи или изрази от базов тип, както и тип диапазон от същия базов тип.

    4. Файлове

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

    Всеки файл има три характерни черти

      има име, което позволява на програмата да работи с няколко файла едновременно.

      съдържа компоненти от същия тип. Типът компонент може да бъде всеки тип Turbo Pascal, с изключение на файловете. С други думи, не можете да създадете „файл от файлове“.

      отново дължина създаден файлне е уточнено по никакъв начин при обявяването му и е ограничено само от капацитета на външните памети.

    Тип файл или променлива тип файлможе да се настрои по един от трите начина:

    < Име>= ФАЙЛ НА< тип>;

    < Име>=ТЕКСТ;

    <имя>= ФАЙЛ;

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

    FILE, OF – запазени думи (file, from);

    TEXT – име на стандартния текстов файл;

    <тип>- всеки тип Turbo Pascal, с изключение на файлове.

    В зависимост от начина на деклариране могат да се разграничат три типа файлове:

    · въведени файлове (зададени от клаузата FILE OF...);

    · текстови файлове(дефиниран от тип TEXT);

    · нетипизирани файлове (дефинирани от типа FILE).

    Относно преобразуването числови типовеПаскал данни

    В Pascal неявните (автоматични) преобразувания на числови типове данни са почти невъзможни. Изключение се прави само за целочисления тип, който е позволено да се използва в изрази от тип real. Например, ако променливите са декларирани по следния начин:

    Var X: цяло число; Y: истински;

    след това операторът

    ще бъде синтактично правилен, въпреки че има цяло числов израз отдясно на знака за присвояване и реална променлива отляво, компилаторът автоматично ще конвертира цифровите типове данни. Автоматичното обратно преобразуване от реален тип към целочислен тип е невъзможно в Pascal. Нека си спомним колко байта са разпределени за променливи от тип integer и real: for целочислен тип 2 байта памет се разпределят за целочислени данни и 6 байта за реални данни. Има две вградени функции за преобразуване на реално в цяло число: round(x) закръгля реално x до най-близкото цяло число, trunc(x) съкращава реално, като изхвърля дробната част.

    На езика Паскалпроменливите се характеризират със своите тип. Типът е свойство на променлива, чрез което променливата може да приема много стойности, разрешени от този тип, и да участва в много операции, разрешени за този тип.

    Типът определя набор приемливи стойности, които приема променлива от този тип. Той също така дефинира набор от валидни операции върху променлива от даден тип и дефинира представяне на данни в RAM паметкомпютър.

    Например:

    n: цяло число;

    Паскал - статичен език, следва, че типът на променливата се определя по време на нейното описание и не може да бъде променян. Езикът Pascal има развита система от типове - всички данни трябва да се притежават предварително известен типданни (или стандартен тип, създаден по време на разработката на езика, или потребителски тип, който е дефиниран от програмиста). Програмистът може да създава свои собствени типове с произволна структура на сложност, базирана на стандартни типове или вече дефиниран от потребителявидове. Броят на създадените типове е неограничен. Персонализираните типове в програма се декларират в секцията TYPE, като се използва форматът:

    [име] = [тип]

    Системата от стандартни типове има разклонена, йерархична структура.

    Първоначални в йерархията са прости типове. Такива типове присъстват в повечето езици за програмиране и се наричат ​​прости, но в Pascal те имат по-сложна структура.

    Структурирани типовесе изграждат по определени правила от прости типове.

    Указателни табелисе образуват от прости типовеи се използват в програми за задаване на адреси.

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

    Обектисъщо са иновация и те са предназначени да използват езика като обектно-ориентиран език.

    В езика Pascal има 5 вида цели числа. Всеки от тях характеризира диапазона от приети стойности и мястото, което заемат в паметта.

    При използване цели числатрябва да се ръководите от влагането на типове, т.е. типове с по-малък диапазон могат да бъдат вложени в типове с голям диапазон. Типът байт може да бъде вложен във всички типове, които заемат 2 и 4 байта. В същото време типът Short Int, който заема 1 байт, не може да бъде вложен в Слововид, тъй като няма отрицателни стойности.

    Има 5 реални вида:

    Целочислените типове се представят абсолютно точно в компютъра. За разлика от целочислените типове, стойността на реалните типове дефинира произволно число само с известна крайна точност, в зависимост от формата на числото. Реалните числа се представят в компютър като фиксирана или плаваща запетая.

    2358.8395

    0.23588395*10 4

    0,23588395*E 4

    Типът Comp заема специална позиция в Pascal; всъщност той е голямо цяло число със знак. Този тип е съвместим с всички реални типове и може да се използва за голямо цяло число. Когато се представят реални числа с плаваща запетая, десетичната запетая винаги се подразбира пред лявата или водещата мантиса, но когато се работи с число, тя се измества наляво или надясно.

    Поредни типове

    Поредните типове съчетават няколко прости типа. Те включват:

    • всички цели числа;
    • тип характер;
    • булев тип;
    • тип-обхват;
    • изброен тип.

    Общи характеристики за редните типове са: всеки тип има крайно числовъзможни стойности; стойността на тези типове може да бъде подредена по определен начин и определено число, което е сериен номер, може да бъде свързано с всяко число; съседните стойности на редните типове се различават с единица.

    За стойности от пореден тип може да се приложи функцията ODD(x), която връща поредния номер на аргумента x.

    Функция PRED(x) - връща предишната стойност от порядъчен тип. PRED(A) = 5.

    Функция SUCC(x) - връща следващата поредна стойност. SUCC(A) = 5.

    Тип символ

    Стойностите на типа знак са 256 знака от набора от валидни кодова таблицакомпютъра, който използвате. Първоначалната област на този набор, т.е. диапазонът от 0 до 127, съответства на набора от ASCII кодове, където се зареждат знаците от азбуката, арабските цифри и специалните знаци. Символите в началната зона винаги присъстват на клавиатурата на компютъра. Старшият район се нарича алтернативен, съдържа символи на национални азбуки и различни специални знаци, и не-ASCII псевдографични знаци.

    Стойността на тип знак заема един байт в RAM. В програмата значенията са оградени с апостроф. Стойностите също могат да бъдат посочени под формата на техния ASCII код. В този случай трябва да поставите знак # пред числото със символния код.

    C:= 'A'

    Логически (булев) тип

    Има две булеви стойности: True и False. Променливите от този тип са посочени официална думаБОЛЕВО. Булевите стойности заемат един байт в RAM. Стойностите True и False съответстват на числови стойности 1 и 0.

    Тип-обхват

    Има подмножество от основния му тип, което може да бъде всеки пореден тип. Тип диапазон се определя от границите в основния тип.

    [минимална-стойност]...[максимална-стойност]

    Типът на диапазона може да бъде указан в секцията Тип, като конкретен тип или директно в секцията Var.

    Когато определяте обхвата на типа, трябва да се ръководите от:

    • лявата граница не трябва да надвишава дясната граница;
    • тип диапазон наследява всички свойства на основния тип, но с ограничения, свързани с по-ниската му мощност.

    Тип enum

    Този тип принадлежи към редните типове и се определя чрез изброяване на стойностите, които може да изброи. Всяка стойност се нарича определен идентификатор и се намира в списъка, ограден в скоби. Изброеният тип е посочен в Type:

    Народи = (мъже, жени);

    Първата стойност е 0, втората стойност е 1 и т.н.

    Максимална мощност 65535 стойности.

    Тип низ

    Типът низ принадлежи към групата на структурираните типове и се състои от базовия тип Char. Типът низ не е порядъчен тип. Той дефинира много символни низове произволна дължинадо 255 знака.

    В една програма тип низ се декларира с думата String. Тъй като String е базов тип, той е дефиниран в езика и деклариран променлив типНизът е имплементиран във Var. Когато декларирате променлива от низов тип като String, препоръчително е да посочите дължината на низа в квадратни скоби. За обозначаване се използва цяло число от 0 до 255.

    Fam: низ;

    Определянето на дължината на низа позволява на компилатора да разпредели определения брой байтове в RAM за тази променлива. Ако дължината на низа не е посочена, тогава компилаторът ще разпредели максималния възможен брой байтове (255) за стойността на тази променлива.

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

    Простите типове се делят на стандартни (редни) и изброени (ограничени).

    Стандартни видове

    Turbo Pascal има четири вградени стандартен тип: integer (цяло число), real (реално), boolean (логическо) и char (символ).

    Целочислен тип (цяло число)

    Turbo Pascal има пет вградени цели числа: shortint, integer, longint, byte и word. Всеки тип обозначава конкретно подмножество от цели числа, както е показано в следващата таблица.

    Вградени цели числа.

    Обхват

    формат

    8 бита със знак

    16 бита със знак

    2147483648 +2147483647

    32 битов знак

    8 бита без знак

    16 бита без знак

    Аритметичните операции върху операнди от целочислен тип се извършват в съответствие със следните правила:

    1. Типът целочислена константа е вграден тип цяло число с най-малък диапазон, включително стойността на тази целочислена константа.
    2. В случай на двоична операция (операция, която използва два операнда), и двата операнда се преобразуват в техния общ тип, преди операцията да бъде извършена върху тях. Общият тип е вграден тип цяло число, с най-малък диапазон, който включва всички възможни стойности и на двата типа. Например общият тип за цяло число и цяло число с дължина на байта е цяло число, а общият тип за цяло число и цяло число с дължина на дума е дълго цяло число. Действието се извършва според точността на генеричния тип и типът на резултата е генеричният тип.
    3. Изразът отдясно на оператора за присвояване се изчислява независимо от размера на променливата отляво.

    Операции, извършвани върху цели числа:

    “+” - добавяне

    “-“ - изваждане

    "*" - умножение

    SQR - квадратура

    DIV - изхвърля дробната част след деление

    MOD - получаване на целочислен остатък след деление

    ABS - номер модул

    RANDOM(X)-получаване произволно числоот 0 до X

    A:=100 ; b:=60 ; a DIV b резултат - 1 a MOD b резултат - 40

    Променливите от целочислен тип са описани по следния начин:

    var списък с променливи: тип;

    Например: var а,р,n:integer;

    Реален тип (реален)

    Реалният тип е подмножество от реални числа, които могат да бъдат представени във формат с плаваща запетая с фиксиран брой цифри. Записването на стойност във формат с плаваща запетая обикновено включва три стойности - m, b и e - така че m*b e, където b винаги е 10 и m и e са цели числа в диапазона реален тип. Тези стойности на m и e допълнително определят обхвата и точността на реалния тип.

    Има пет вида реални типове: истински, единични, двойни, exnende, comp. Реалните типове се различават по диапазона и точността на стойностите, свързани с тях

    Диапазон и десетични цифри за реални типове

    Обхват

    Числа

    2.9x10E-39 до 1.7x10E 38

    1.5x10E-45 до 3.4x10E 38

    5.0x10E-324 до 1.7x10E 308

    3.4x10E-493 до 1.1x10E 403

    2E 63 до 2E 63

    Операции, извършвани върху реални числа:

    • Всички операции са валидни за цели числа.
    • SQRT(x) е корен квадратен от x.
    • SIN(X), COS(X), ARCTAN(X).
    • LN(X) е натурален логаритъм.
    • EXP(X)-експонента на X (e x).
    • EXP(X*LN(A)) - степенуване (A x).
    • Функции за преобразуване на типа:
      • TRUNC(X) - изхвърля дробната част;
      • ROUND(X) - закръгляване.
    • Някои правила за аритметични операции:
      • Ако една аритметична операция съдържа числа от тип real и integer, тогава резултатът ще бъде от тип real.
      • Всички компоненти на израза са записани на един ред.
      • Използват се само скоби.
      • Не можете да поставите два аритметични знака един след друг.

    Променливите от реален тип са описани по следния начин:

    var списък с променливи: тип;

    Например:

    var d,g,k:real;

    Тип символ (char)

    К тип charсе отнася за всеки знак, ограден с апостроф. За да представите апостроф като символна променлива, трябва да го оградите в апостроф: ''''.

    Всеки знак има свой собствен код и номер. Серийни номераЧислата 0,1..9 са подредени във възходящ ред. Серийните номера на буквите също са подредени във възходящ ред, но не е задължително да следват един друг.

    Следните знаци за сравнение се прилагат за символни данни:

    > , < , >=, <=, <> .

    Например: „А“< ‘W’

    Функции, които се прилагат към символни променливи:

    1. ORD(X) - определя поредния номер на символа X. ord (‘a’) =97 ;
    2. CHR(X) - идентифицира знак по номер.
    3. chr(97) = 'a';
    4. PRED(X) - връща знака, предшестващ знака X pred (‘B’) =’A’;

    SUCC(X) - връща знака след знака X succ (‘A’) =’B’;

    Тип enum

    Изброеният тип данни е наречен така, защото е определен като списък от константи в строго определен ред и в строго определено количество. Изброеният тип се състои от списък с константи. Променливи от този тип могат да приемат стойността на всяка от тези константи. Описанието на типа изброяване изглежда така:<имя типа>Тип<имя переменной>:<имя типа>;

    =(списък с константи) ; вар<список констант>Къде

    Например:

    - това е специален тип константи, посочени разделени със запетаи и имащи собствен сериен номер, започващ от 0.

    type direction=(север, юг, запад, изток) ; месец=(юни, юли, август, януари) ; капацитет=(кофа, варел, туба, резервоар) ; var ротация:посока; тръгване:месец; обем:капацитет;

    var turn:(север, юг, запад, изток) ; отпътуване: (юни, юли, август, януари) ; обем: (кофа, варел, туба, резервоар);

    Можете да изпълнявате следните оператори за присвояване:

    Въртене:=юг; заминаване:=август; обем:=резервоар;

    но не можете да правите смесени задачи:

    Тръгване:=юг; обем:=август;

    Следните функции се прилагат към променливи от изброен тип:

    1. ORD - сериен номер

    2. PRED - предишен елемент

    3. SUCC - последващ елемент.< юг, июнь < январь имеют значения TRUE, а юг>ПРЕД (бъчва) = кофа; SUCC (юг) = запад; ORD (юли) =1 ;<бочка значение FАLSE.

    Променливите от изброен тип могат да бъдат сравнявани, защото са подредени и номерирани. Така че изразите: север

    запад и танк

    Ограничен тип

    Ако една променлива не приема всички стойности от своя тип, а само в определен диапазон, тогава тя може да се счита за променлива от ограничен тип. Всеки ограничен тип се дефинира чрез налагане на ограничение върху базовите типове.<имя типа>Тя е описана по следния начин:

    ТИП

    1. =константа1 ..константа2
    2. Всеки прост тип, с изключение на real, може да се използва като основен тип.
    3. Първоначалната стойност при дефиниране на ограничен тип не трябва да бъде по-голяма от крайната стойност.
    тип индекс =0 ..63 ; буква=’a’..’z’; var char1,char2:буква; a,g:индекс;

    Можете да го опишете веднага в раздела за описание на променлива:

    var a,g:0 ..63 ; char1,char2:'a'..'z'.