Tavalised andmetüübid. Lihtsad tüübid. Konstrueeritud andmetüübid

Järkjärgu tüüpide hulka kuuluvad (vt joonis 4.1) täisarvu-, loogi-, märgi-, loendi- ja vahemikutüübid. Funktsiooni ORD(X) saab rakendada ükskõik millisele neist, mis tagastab seerianumber avaldise X väärtus. Täisarvu tüüpide puhul tagastab funktsioon ORD(X) X väärtuse enda, s.t. ORD(X) = X X jaoks, mis kuulub mis tahes kestatüüpi. ORD(X) rakendamine tõeväärtus-, märgi- ja loenditüüpidele annab positiivse täisarvu vahemikus 0 kuni 1 (tõeväärtus), 0 kuni 155 (märk), 0 kuni 65535 (loendamine). Vahemikutüüp säilitab kõik aluseks oleva järgutüübi omadused, seega sõltub funktsiooni ORD(X) sellele rakendamise tulemus selle tüübi omadustest.

Funktsioone saate rakendada ka järgu tüüpidele:

PRED (X) - tagastab järjekorratüübi eelmise väärtuse (väärtus, mis vastab järgarvule ORD(X) - 1), s.t.

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

SUCC(X) – tagastab järgmine väärtus järgutüüp, mis vastab järgarvule ORD(X) +1, s.o.

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

Näiteks kui programm defineerib muutuja

siis funktsioon PRED(C) tagastab väärtuse "4" ja funktsioon SUCC(C) tagastab väärtuse "6".

Kui kujutame ette mis tahes järgutüüpi järjestatud väärtuste kogumina, mis kasvab vasakult paremale ja hõivab arvuteljel teatud lõigu, siis funktsioon PRED(X) ei ole defineeritud vasakule ja SUCC(X) paremale. selle lõigu lõpp.

Terved tüübid. Täisarvutüüpide võimalike väärtuste vahemik sõltub nende sisemisest esitusest, mis võib olla üks, kaks või neli baiti. Tabelis 4.1 näitab täisarvu tüüpide nimetusi, nende sisemise esituse pikkust baitides ja võimalike väärtuste vahemikku.

Tabel 4.1

Täisarvuliste parameetritega protseduuride ja funktsioonide kasutamisel tuleks juhinduda tüüpide “pesastumisest”, s.t. kõikjal, kus saab kasutada WORDi, saab kasutada BYTE-i (kuid mitte vastupidi), LONGINT “sisaldab” INTEGER, mis omakorda sisaldab SHORTINT.

Täisarvutüüpidele rakendatavate protseduuride ja funktsioonide loetelu on toodud tabelis 4.2. Kirjad b, s, w, i, l BYTE, SHORTINT, WORD, INTEGER ja LONGINT tüüpi avaldised on tähistatud vastavalt, x on mis tahes nende tüüpide avaldis; kirju vb, vs, vw, vi, vl, vx tähistavad vastavat tüüpi muutujaid. Valikuline parameeter on näidatud nurksulgudes.

Tabel 4.2

Standardprotseduurid ja funktsioonid, mis kehtivad kogu tüüpidele
Apellatsioonkaebus Tulemuse tüüp Tegevus
abs(x) x Tagastab mooduli x
chr(b) Char Tagastab tähemärgi selle koodi järgi
dec(vx[, i]) - Vähendab vx väärtust i võrra ja i puudumisel 1 võrra
inc(vx[, i]) - Suurendab vx väärtust i võrra ja i puudumisel 1 võrra
Tere(i) Bait Tagastab argumendi kõrgeima baidi
Tere (w) Sama Sama
Lo(i) " Tagastab argumendi madala baidi
Madal(w) " Sama
paaritu (l) Boolean Tagastab Tõene, kui argument on paaritu arv
Juhuslik (w) Sama nagu parameeter Tagastab pseudojuhusliku arvu, mis on ühtlaselt jaotatud vahemikus 0...(w-l)
sgr(x) X Tagastab argumendi ruudu
vahetus(i) Täisarv Vahetab baite ühe sõnaga
vahetus(w) Sõna

Täisarvudega opereerides vastab tulemuse tüüp operandide tüübile ja kui operandid on erinevat täisarvu tüüpi, siis maksimaalse võimsusega (maksimaalne väärtusvahemiku) operandi tüüp. Tulemuse võimalikku ületäitumist ei kontrollita mingil viisil, mis võib põhjustada arusaamatusi, näiteks:

a:= 32767; (Maksimaalne võimalik INTEGER väärtus)

x:= a + 2; (Ülevool selle väljendi hindamisel !}

y:= LongInt(a)+2; (Pärast muutuja võimsamasse tüüpi ülekandmist ei toimu ülevoolu)

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

Programmi käivitamise tulemusena saame

Boole'i ​​tüüp . Tõeväärtused võivad olla üks eeldeklareeritud konstantidest FALSE või TRUE. Nende suhtes kehtivad reeglid:

Vale< True;

succ(False)= Tõene;

pred(True) = Väär.

Kuna Boole'i ​​tüüp on järgutüüp, saab seda kasutada loendatava tüübi operaatoris, näiteks:

1 jaoks:= Väär kuni tõene tee ....

Tegelaste tüüp. Märgitüübi väärtus on kõigi arvutimärkide kogum. Igale märgile on määratud täisarv vahemikus 0...255. See number toimib sümboli sisemise esituse koodina, mille funktsioon ORD tagastab.

ASCII koodi kasutatakse kodeerimiseks ( Ameerika standard Kood jaoks Teabevahetus - Ameerika standardkood teabevahetuseks). See on 7-bitine kood, st. selle abiga saate kodeerida ainult 128 tähemärki vahemikus 0 kuni 127. Samal ajal saate Turbo Pascalis märgi salvestamiseks eraldatud 8-bitises baidis kodeerida kaks korda rohkem tegelasi vahemikus 0 kuni 255. PC-märkide esimene pool koodidega 0...127 vastab ASCII standardile (tabel 4.3). Märkide teine ​​pool koodidega 128...255 ei ole standardi jäiga raamistikuga piiratud ja seda saab muuta arvutis erinevat tüüpi(Lisa 2 näitab mõningaid nende märkide levinumaid kodeerimisvalikuid).

Tabel 4.3

Märkide kodeerimine vastavalt ASCII standardile
Kood Sümbol Kood Sümbol Kood Sümbol Kood Sümbol
NUL B.L. ® "
ZON ! A a
STX " IN b
ETX # KOOS Koos
EOT $ D d
ENQ % E e
KÜSI & F f
BEL " G g
B.S. ( H h
NT ) I i
LF * J j
VT + k k
FF , L i
CR - M m
NII . N n
S.I. / KOHTA
DEL lk P
DC1 K q
DC2 R r
DC3 S s
DC4 T t
N.A.K. U u
SYN V V
ETB w w
CAN X X
E.M. U U
SUB : z z
ESC / [ {
FS < \ l
G.S. = ] }
R.S. > ^ ~
USA ? - n

Tähemärgid koodidega 0...31 viitavad teeninduskoodid. Kui neid koode kasutatakse programmi märgitekstis, loetakse need tühikuteks. Kui neid kasutatakse I/O operatsioonides, võib neil olla järgmine sõltumatu tähendus:

Sümbol Kood Tähendus
BEL Helista; Selle sümboli kuvamisega kaasneb helisignaal
NT Horisontaalne tabel; kui see kuvatakse ekraanil, liigutab kursori asukohta, mis on 8 pluss 1 kordne (9, 17, 25 jne)
LF Joone etteanne; selle kuvamisel ekraanil kuvatakse kõik järgnevad märgid alates samast kohast, kuid kell järgmine rida
VT Vertikaalne sakk; ekraanil kuvamisel asendatakse see eriline märk
FF Lehekülje jooks; printerisse väljastades moodustab see ekraanile väljastamisel lehe, asendatakse see erimärgiga
CR Vankri tagastus; sisestatud vajutades Sisestage võti(kasutades READ või READLN, tähendab "Enter" käsku ja ei mahu sisendpuhvrisse; väljundis tähendab käsku "Jätka väljundit algusest" praegune rida»)
SUB faili lõpp; sisestatud klaviatuurilt, vajutades Ctrl-Z; väljastamisel asendatakse see spetsiaalse märgiga
SSC Töö lõpp; sisestatud klaviatuurilt vajutades ESC klahv; väljastamisel asendatakse see spetsiaalse märgiga

Relatsioonioperatsioonid ja ka sisseehitatud funktsioonid on rakendatavad CHAR-tüübile: СНR(В) - CHAR-tüüpi funktsioon; teisendab BYTE tüüpi avaldise B märgiks ja tagastab selle koos väärtusega;

UPCASE(CH) - CHAR tüüpi funktsioon; naaseb suur täht, kui CH on väiketäht ladina täht, vastasel juhul tagastab CH märgi enda, näiteks:

cl:= UpCase("s") ;

c2:= UpCase ("Ф") ;

WriteLn(cl," ",c2)

Kuna funktsioon UPCASE ei töötle kirillitsat, on selle käitamise tulemus

programmid kuvatakse ekraanil

Enumi tüüp. Loetletud tüüp määratakse väärtuste loendiga, mida see võib vastu võtta. Iga väärtus on nimetatud mõne identifikaatoriga ja asub sulgudega ümbritsetud loendis, näiteks:

värvid =(punane, valge, sinine);

Loetletud tüüpide kasutamine muudab programmid visuaalsemaks. Kui programm kasutab näiteks aasta kuudega seotud andmeid, siis järgmine programmi fragment:

TüüpKuu=(jaan, veebr, märts, aprill, mai, juuni, juuli, aug, september, okt, nov, detsember);

kuu: TüüpKuu;

if kuu = Aug then WriteLn("Tore oleks merele minna!");

See oleks, näete, väga selge. Paraku! Turbo Pascalis ei saa identifikaatorites kasutada kirillitsat, seega oleme sunnitud kirjutama järgmiselt:

TüüpKuu=(jaan,veebr,mär,mai,juuni,juuli,aug,sept,okt,nov,detsember);

kuu: TüüpKuu;

if kuu = aug then WriteLn("Tore oleks merele minna!");

Loendatava tüübi väärtuste ja nende väärtuste järgarvude vaheline vastavus määratakse loendusjärjekorraga: loendi esimene väärtus saab järjekorranumbri 0, teine ​​- 1 jne. Loendatava tüübi maksimaalne maht on 65536 väärtust, nii et tegelikult määratleb loendatud tüüp kogu WORD-tüübi teatud alamhulga ja seda võib pidada täisarvuliste konstantide rühma kompaktseks deklaratsiooniks väärtustega 0, 1 jne.

Loetletud tüüpide kasutamine suurendab programmide usaldusväärsust, võimaldades teil kontrollida väärtusi, mida vastavad muutujad saavad. Näiteks olgu toodud järgmised loetletud tüübid:

värvid = (must, punane, valge);

ordenal= (üks, kaks, kolm);

päevad = (esmaspäev, teisipäev, kolmapäev);

Võimu ja sisemise esindatuse osas on kõik kolm tüüpi samaväärsed:

ord(must)=0, ..., ord(valge)=2,

ord(üks)=0, ...ord(kolm)=2,

ord(esmaspäev)=0, ...ord(kolmapäev)=2.

Kui aga muutujad on defineeritud

col:värvid; num:ordenal;

siis operaatorid on lubatud

arv:= succ(kaks);

päev:= pred(teisipäev);

kuid vastuvõetamatu

Nagu juba mainitud, on loendatava tüübi väärtuste ja täisarvude komplekti vahel üks-ühele vastavus, mis on määratud funktsiooniga ORD(X). Turbo Pascalis on see ka võimalik pöördkonversioon: mis tahes tüüpi WORD avaldise saab teisendada loenditüübi väärtuseks, kui täisarvulise avaldise väärtus ei ületa loenditüübi power1™-i. See teisendamine saavutatakse automaatselt deklareeritud funktsiooni abil loendatava tüübi nimega (vt jaotis 4.4). Näiteks ülalkirjeldatud tüübideklaratsiooni puhul on järgmised ülesanded samaväärsed:

col:= värvid(0);

Muidugi, ülesanne

saab olema vastuvõetamatu.

Mis tahes loetletud tüüpi muutujaid saab deklareerida ilma seda tüüpi eelnevalt deklareerimata, näiteks:

col: (must, valge, roheline);

Tüübivahemik. Vahemiku tüüp on selle põhitüübi alamhulk, mis võib olla mis tahes järgutüüp, välja arvatud vahemiku tüüp. Vahemiku tüüp määratakse selle väärtuste piiridega põhitüübis:

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

Siin<мин.знач. > - minimaalne väärtus tüübivahemik;

<макс.знач.>- selle maksimaalne väärtus.

Näiteks:

number = "0".."9";

Vahemiku tüüpi ei pea kirjeldama jaotises TÜÜP, kuid selle saab määrata otse muutuja deklareerimisel, näiteks:

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

Tüübivahemiku määramisel tuleb juhinduda järgmisi reegleid:

  • kahte ".." märki käsitletakse ühe märgina, seega ei ole tühikud nende vahel lubatud;
  • vahemiku vasak piir ei tohiks ületada selle paremat piiri. Vahemikutüüp pärib kõik oma põhitüübi omadused, kuid selle väiksema võimsuse piirangutega. Eelkõige juhul, kui muutuja on määratletud

päevad = (mo,tu,we,th,fr,sa,su);

WeekEnd = sa .. su;

siis ORD(W) tagastab väärtuse 5, samas kui PRED(W) annab tulemuseks vea.

IN standardne raamatukogu Turbo Pascal sisaldab kahte funktsiooni, mis toetavad vahemikutüüpidega töötamist:

HIGH(X) – tagastab maksimaalne väärtus vahemik-tüüp, millesse muutuja X kuulub;

LOW(X) – tagastab vahemiku tüübi minimaalse väärtuse.

Edasi lühike programm kuvab rida

WriteLn(Madal(k),"..",Kõrge(k))

Täisarvude hulk on lõpmatu, kuid me saame alati valida bittide arvu, mis esindavad mis tahes lahendamisel tekkivat täisarvu konkreetne ülesanne. Reaalarvude hulk pole mitte ainult lõpmatu, vaid ka pidev, seega olenemata sellest, kui palju bitte me võtame, kohtame paratamatult numbreid, millel puudub täpne esitus. Ujukomanumbrid on üks võimalikud viisid reaalarvude esitus, mis on kompromiss täpsuse ja aktsepteeritud väärtuste vahemiku vahel.

Ujukomaarv koosneb üksikute numbrite komplektist, mis on tavapäraselt jagatud märgiks, astendajaks ja mantissiks. Eksponent ja mantiss on täisarvud, mis koos märgiga annavad ujukomaarvu järgmise esituse:

Matemaatiliselt on see kirjutatud nii:

(-1) s × M × B E, kus s on märk, B on radiks, E on astendaja ja M on mantiss.

Alus määrab numbrilise numbrisüsteemi. Matemaatiliselt on tõestatud, et ujukomaarvud, mille alus on B=2 (binaarne esitus), on ümardamisvigade suhtes kõige vastupidavamad, seetõttu kohtab praktikas ainult aluseid 2 ja harvem 10. Edasisel esitamisel eeldame alati B= 2 ja ujukomaga arvu valem näeb välja järgmine:

(-1) s × M × 2 E

Mis on mantissa ja kord? Mantissa on fikseeritud pikkusega täisarv, mis tähistab reaalarvu kõige olulisemaid bitte. Oletame, et meie mantiss koosneb kolmest bitist (|M|=3). Võtke näiteks number “5”, mis kahendsüsteem on võrdne 101 2-ga. Kõige olulisem bitt vastab väärtusele 2 2 =4, keskmine bitt (mis meil on võrdne nulliga) 2 1 =2 ja noorim 2 0 =1. Telli– see on kõrgeima numbri aluse (kahe) võimsus. Meie puhul E=2. Selliseid numbreid on mugav kirjutada nn "teaduslikku" standardvorm, näiteks "1.01e+2". Kohe on selge, et mantiss koosneb kolmest märgist ja järjekord on kaks.

Oletame, et tahame saada murdarv, kasutades samu 3 mantissi bitti. Me saame seda teha, kui võtame näiteks E=1. Siis on meie arv võrdne

1,01e+1 = 1×2 1 +0×2 0 +1×2 –1 =2+0,5=2,5

Ilmselgelt saab sel viisil sama numbrit esitada erineval viisil. Vaatleme näidet mantissi pikkusega |M|=4. Numbrit "2" saab esitada järgmiselt:

2 = 10 (binaarselt) = 1,000e+1 = 0,100e+2 = 0,010e+3.

Seetõttu olid juba päris esimestes masinates numbrid esindatud nn normaliseeritud vorm, kui mantissi esimene bitt eeldati alati võrdseks ühega.

See säästab ühe biti (kuna implitsiitset ei pea mällu salvestama) ja tagab numbri ühekordse esituse. Meie näites on "2" üks esitus ("1.000e+1") ja mantiss salvestatakse mällu kui "000", sest juhtüksus on kaudselt viidatud. Kuid arvude normaliseeritud esituses tekib uus probleem- sellel kujul on nulli võimatu esitada.

  • Andmete analüüs parameetrite valiku ja lahenduse otsimise käskude abil
  • Eksperimentaalpsühholoogiliste uuringute andmete analüüs ja tõlgendamine.
  • Lähteandmete analüüs. Tehnilised normid linnateedele.
  • SAADUD ANDMETE ANALÜÜS. VEEVARUSTUSE OMADUSTE PIISAVUSE VÕI EI OTSUSE TEGEMINE KASTSISTUSSÜSTEEMI VAJADUSELE.
  • Sideliini seadmed: andmeedastusseadmed, lõppseadmed, vaheseadmed.

  • Andmetüüp määratleb kehtivate väärtuste komplekti ja kehtivate toimingute komplekti.

    Lihtsad tüübid.

    Lihttüübid jagunevad ORDINAL ja REAL.

    1. TELLIMISLIIGID , omakorda on:

    a) terve

    Pascal määratleb 5 täisarvu tüüpi, mis määratakse sõltuvalt muutuja kasutatavast märgist ja väärtusest.

    Tippige nimi

    Pikkus (baitides)

    Väärtuste vahemik

    32 768...+32 767

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

    b) loogiline

    Selle tüübi nimi on BOOLEAN. Tõeväärtused võivad olla üks loogilistest konstantidest: TRUE (tõene) või FALSE (false).

    c) sümboolne

    Selle tüübi nimi on CHAR – võtab enda alla 1 baidi. Märgitüübi väärtus on kõigi arvutimärkide kogum. Igale märgile on määratud täisarv vahemikus 0…255. See number on sümboli sisemise esituse kood.

    2. PÄRIS TÜÜBID .

    Erinevalt järgutüüpidest, mille väärtused on alati vastendatud täisarvude seeriale ja on seetõttu arvutis esitatud absoluutselt täpselt, määravad reaaltüüpide väärtused suvaline arv ainult teatud lõpliku täpsusega, olenevalt reaalarvu sisemisest vormingust.

    Numbrilise andmetüübi pikkus, bait

    Numbriline andmetüübi nimi

    Kogus märkimisväärsed arvud numbriline andmetüüp

    Numbrilise andmetüübi kümnendjärjestuse vahemik

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

    STRUKTUREERITUD TÜÜBID

    Struktureeritud andmetüübid määratlevad järjestatud skalaarsete muutujate kogumi ja neid iseloomustavad nende komponentide tüübid.

    Struktureeritud andmetüübid, erinevalt lihtsatest, määratlevad palju keerulisi väärtusi ühe üldnimetusega. Võib öelda, et struktuuritüübid määravad teatud mooduse olemasolevatest uutest tüüpidest moodustamiseks.

    Struktureerimismeetodeid on mitu. Komplekssete andmetüüpide komponentide organiseerimismeetodi ja tüübi järgi eristatakse järgmisi sorte: tavaline tüüp (massiivid); kombineeritud tüüp (plaadid); failitüüp(failid); mitu tüüpi; stringi tüüp (stringid); Turbo Pascali keeleversioonides 6.0 ja vanemates võeti kasutusele objektitüüp (objektid).

    Erinevalt lihtsatest andmetüüpidest iseloomustab struktureeritud tüüpi andmeid seda tüüpi moodustavate elementide paljusus, s.t. struktureeritud tüüpi muutujal või konstandil on alati mitu komponenti. Iga komponent võib omakorda kuuluda struktureeritud tüüpi, s.t. tüüpide pesastumine on võimalik.

    1. Massiivid

    Turbo Pascali massiivid on paljuski sarnased teiste programmeerimiskeelte sarnaste andmetüüpidega. Massiivide eripäraks on see, et kõik nende komponendid on sama tüüpi (võimalik, et struktureeritud) andmed. Neid komponente saab hõlpsasti korraldada ja igale neist pääseb juurde lihtsalt seerianumbri määramisega.

    Massiivi kirjeldus on määratletud järgmiselt:

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

    Siin<имя типа>- õige identifikaator;

    Massiiv, -st reserveeritud sõnad(massiiv, pärit);

    <сп.инд.типов>- ühe või mitme indeksitüübi loend, eraldatuna komadega; loendit raamivad nurksulud on süntaksinõue;

    <тип>- mis tahes tüüpi Turbo Pascal.

    Turbo Pascalis saab indeksitüüpidena kasutada mis tahes järgutüüpe, välja arvatud LongInt ja vahemikutüübid koos põhitüüp LongInt.

    Struktureeritud tüüpide pesastussügavus üldiselt ja seega ka massiivide on suvaline, seega ei ole tüübiindeksite loendis elementide arv (massiivi suurus) piiratud, samas ei saa ühegi massiivi sisemise esituse kogupikkus. olema suurem kui 65520 baiti.

    2. Records

    Kirje on andmestruktuur, mis koosneb kindlast arvust komponentidest, mida nimetatakse kirjeväljadeks. Erinevalt massiivist võivad kirje komponendid (väljad) olla erinevat tüüpi. Et oleks võimalik viidata ühele või teisele kirje komponendile, antakse väljadele nimed.

    Postituse tüübi deklaratsiooni struktuur on järgmine:

    < Nimitüüp>=SALVESTA< ühisettevõte. väljad> LÕPP

    Siin<имя типа>- õige identifikaator;

    RECORD, END – reserveeritud sõnad (rekord, lõpp);

    <сп.полей>- väljade loetelu; on kirje osade jada, mis on eraldatud semikooloniga.

    3. Komplektid

    Hulgad on sama tüüpi objektide kogum, mis on üksteisega loogiliselt ühendatud. Objektidevaheliste ühenduste olemust annab ainult programmeerija ja Turbo Pascal ei kontrolli seda mingil juhul. hulka kuuluvate elementide arv võib varieeruda vahemikus 0 kuni 256 (hulka, mis ei sisalda elemente, nimetatakse tühjaks).

    Kahte hulka loetakse samaväärseteks siis ja ainult siis, kui nende kõik elemendid on samad ning hulga elementide järjekord on ükskõikne. Kui ühe hulga kõik elemendid sisalduvad ka teises, siis öeldakse, et esimene hulk sisaldub teises.

    Komplekti tüübi kirjeldus on järgmine:

    < Nimitüüp> = KOMPLEKT< alused. tüüp>

    Siin<имя типа>- õige identifikaator;

    SET, OF – reserveeritud sõnad (set, from);

    <баз.тип>- komplektielementide baastüüp, mis võib olla mis tahes järgutüüp, välja arvatud WORD, INTEGER ja LONGINT.

    Hulga määratlemiseks kasutatakse nn hulgakonstruktorit: hulga elementide spetsifikatsioonide loend, mis on üksteisest komadega eraldatud; loend on ümbritsetud nurksulgudega. Elemendi spetsifikatsioonid võivad olla nii põhitüübi konstandid või avaldised kui ka sama põhitüübi vahemikutüübid.

    4. Failid

    Fail viitab kas nimega alale väline mälu Arvuti või loogiline seade on potentsiaalne teabeallikas või vastuvõtja.

    Igal failil on kolm iseloomulikku tunnust

      sellel on nimi, mis võimaldab programmil töötada korraga mitme failiga.

      see sisaldab sama tüüpi komponente. Komponendi tüüp võib olla mis tahes Turbo Pascali tüüp, välja arvatud failid. Teisisõnu, te ei saa luua "failide faili".

      jälle pikkus loodud fail ei ole selle väljakuulutamisel mingil viisil täpsustatud ja seda piirab ainult väliste mäluseadmete maht.

    Failitüüp või muutuja failitüüp saab seadistada ühel kolmest viisist:

    < Nimi>= FAIL OF< tüüp>;

    < Nimi>=TEKST;

    <имя>= FAIL;

    Siin<имя>- failitüübi nimi (õige identifikaator);

    FILE, OF – reserveeritud sõnad (fail, pärit);

    TEXT – standardse tekstifaili tüübi nimi;

    <тип>- mis tahes tüüpi Turbo Pascal, välja arvatud failid.

    Sõltuvalt deklareerimismeetodist võib eristada kolme tüüpi faile:

    · trükitud failid (määratud FILE OF... klausliga);

    · tekstifailid(määratletud tüübiga TEXT);

    · trükkimata failid (määratletud FILE tüübi järgi).

    Konversiooni kohta numbrilised tüübid Pascali andmed

    Pascalis on arvandmete tüüpide kaudne (automaatne) teisendamine peaaegu võimatu. Erand on tehtud ainult täisarvu tüübi puhul, mida on lubatud kasutada avaldistes tüüpi real. Näiteks kui muutujad on deklareeritud järgmiselt:

    Var X: täisarv; Y: päris;

    siis operaator

    on süntaktiliselt õige, kuigi määramismärgist paremal on täisarvuline avaldis ja vasakul reaalne muutuja, teisendab kompilaator numbrilised andmetüübid automaatselt. Pöördkonversioon toimub automaatselt päristüübilt täisarvu tüüp Pascalis võimatu. Meenutagem, mitu baiti on eraldatud muutujatele tüüpi täisarv ja real: for täisarvu tüüp 2 baiti mälu on eraldatud täisarvuliste andmete jaoks ja 6 baiti tegelike andmete jaoks. Reaalarvu täisarvuks teisendamiseks on kaks sisseehitatud funktsiooni: round(x) ümardab reaalse x lähima täisarvuni, trunc(x) kärbib reaali, jättes murdosa kõrvale.

    Andmetüüp

    Tüüpide ühilduvus

    Konstrueeritud andmetüübid

    Reaalsed andmetüübid

    Tavalised tüübid andmeid

    Andmetüüp

    Plaan

    8. loeng

    Teema: Andmetüüp

    Koostajad Pascali keel nõuda, et enne programmi käivitamist esitataks teave programmi käivitamiseks vajaliku mälumahu kohta. Selleks tuleb muutujate kirjelduse osas (var) loetleda kõik programmis kasutatavad muutujad. Lisaks peate ka kompilaatorile ütlema, kui palju mälu igaüks neist muutujatest hõivab. Samuti oleks tore eelnevalt kokku leppida erinevaid operatsioone, rakendub teatud muutujatele...

    Seda kõike saab programmile edastada, näidates lihtsalt tulevase muutuja tüübi. Omades teavet muutuja tüübi kohta, "mõistab" kompilaator, kui palju baite tuleb sellele eraldada, milliseid toiminguid saab sellega teha ja millistes konstruktsioonides see võib osaleda.

    Tüüp määrab komplekti vastuvõetavad väärtused, mis sellel või teisel objektil võib olla, aga ka sellele kehtivate kehtivate toimingute komplekt. Lisaks määrab tüüp ka arvutimälus olevate andmete sisemise esituse vormingu.

    Põhiandmetüübid on standardsed, seega pole tüübijaotises vaja neid kirjeldada. Soovi korral saab seda aga teha ka näiteks pikki definitsioone andes lühikesed nimed. Ütleme, et sisenedes uut tüüpi andmeid

    Tüüp Int = täisarv;

    Saate programmi teksti veidi lühendada.

    Jaotus Pascali põhi- ja konstrueeritud andmetüüpideks on näidatud tabelis:

    Põhiandmetüüpide hulgast paistavad silma järgutüübid. Seda nime saab põhjendada kahel viisil:

    1. Iga järgutüübi elementi saab seostada kordumatu (järgarvuga). Väärtuste nummerdamine algab nullist. Erandiks on andmetüübid ShortInt, Integer ja LongInt. Nende numeratsioon langeb kokku elementide väärtustega.



    2. Lisaks on mis tahes järgutüübi elementidel (selle sõna matemaatilises tähenduses) määratletud järjekord, mis sõltub otseselt numeratsioonist. Seega saab iga kahe järgutüübi elemendi puhul täpselt öelda, milline neist on väiksem ja kumb suurem kui 2.

    D Pascal laiendab oluliselt CF Pascalit, lisades sümbolitele ja failidele uusi andmetüüpe. Järjestikulised andmetüübid kirjeldavad lihtsaid jagamatuid objekte. Loenditüüp sisaldab kindlat nimega objektide komplekti. Boole'i ​​tüübil on ainult kaks objekti - TRUE ja FALSE. Täisarvu tüüp rakendab positiivseid ja negatiivseid täisarve. Lõpuks võib tüübi osa olla ka tüüp, vahemiku tüüp. Muidugi hõlmavad tüübid toiminguid, mis määratlevad, mida saab objektidega teha. Loogiliste, täisarvude jms jaoks. need toimingud on intuitiivselt hästi arusaadavad.

    Andmetüübid kirjeldavad väärtuste komplekte ja toiminguid, mida saab neile rakendada. CF Pascali poolt kasutusele võetud andmetüübid on CHAR ja TEXT. CHAR-tüüpi väärtused on kehtivate Pascali sümbolite komplekt ja toimingud nende väärtustega on võrdlusoperaatorid:

    = < > <= >= <>

    mille väärtused on vastavad matemaatilised tehted, mis peegeldab tähemärkide erinevaid asukohti tähestikulises järjestuses. TEKSTI andmetüübi väärtused on stringide jadad, millest iga rida on tähemärkide jada. Toimingud selliste andmetega:

    RESET ÜMBERKIRJUTA LOE KIRJUTA KIRJUTA OEF EOLN

    Andmetüübid pakuvad eeliseid abstraktsioon, replikatsioon Ja autentimine.

    Andmetüübid abstraheerivad andmete olulisi omadusi. Näiteks võrdluse mõistmiseks

    "A"< ‘B’

    pole vaja teada, kuidas neid sümboleid Pascali masinas kujutatakse. Sorteerimisjärjestus määrab nende toimingute tähenduse. Kasutaja ei pea teadma märgi väärtust esindavate bittide arvu, mis juhtub üleliigsete bittidega või kas märgi bitiväärtus on kehtiv B rohkem kui eest A jne.

    Moodulid pakuvad teatud tüüpi andmete abstraktsiooni, kuid andmetüübid pakuvad enamat. Andmetüübi muutujate deklareerimine võimaldab teil nende muutujate kaudu salvestada ja manipuleerida suvalise arvu tüübi väärtusi. Iga muutuja kasutamine programmis annab meile garantii, et sellele rakendatakse ainult kehtivaid tehteid.

    Operandi kontekst programmis eeldab operandi tüüpi, see eeldatud tüüp on üleliigne teave, mida saab kontrollida operandi deklareeritud tüübi suhtes, et vältida toiminguid vale tüüpi väärtustega. Kaaluge järgmist programmi fragmenti:

    PROGRAMM Typex(SISEND, VÄLJUND);

    Kuna operatsioon = on CF Pascalis defineeritud ainult märgioperandide jaoks, tähendab Ch ja F ilmumine operandidena, et mõlemad on CHAR-tüüpi. Ch on sisestatud õigesti, kuid F on deklareeritud kui TEKST, seega tuvastatakse mittevastavus.


    D Pascalis on kahte tüüpi andmetüüpe: lihtsad andmetüübid ja koondandmetüübid. Lihtsate tüüpide väärtused ei saa koosneda väiksematest osadest, mida saab eraldi manipuleerida. CHAR on lihtne tüüp. Keeruliste andmetüüpide väärtused moodustatakse lihtsate tüüpide väärtuste kombineerimisel. TEKST – komposiittüüp, sest failiread koosnevad tähemärkidest.

    Lihttüüpi väärtused on järjestatud, st iga seda tüüpi väärtuste x, y paari jaoks on võimalik ainult üks järgmistest valikutest: x< y, x = y, x >y. Seetõttu nimetatakse neid tüüpe järgulisteks.

    Pascal sisaldab kolme eelmääratletud järgu tüüpi, mis on määratud identifikaatoritega CHAR, INTEGER ja BOOLEAN. Lisaks eelmääratletud järgutüüpidele pakub Pascal programmeerijale kahte meetodit uute järgutüüpide määratlemiseks, nimelt:

    1. Loetletud tüübid, mille väärtused on kordumatud identifikaatorid.
    2. Vahemikutüübid, mille väärtused on teise järgutüübi järjestikused väärtused.

    See tähendab, et uusi järguandmetüüpe saab määratleda tüübi konstantide loendamisega või määrates, et tüübi väärtused on väärtuste alamvahemik olemasolevat tüüpi. Selliste järgutüüpide tähistamise süntaks on järgmine:

    <обозначение типа> ::= <идентификатор типа> | <новый тип>

    <идентификатор типа> ::= <идентификатор>

    <новый тип> ::= <перечислимый тип> | <тип диапазон>

    Kirjeldusmeetodid<перечислимый тип>Ja<тип диапазон>antakse allpool vastavates jaotistes.

    Kui uus tüüp on määratletud, võidakse sellele anda tüübideklaratsioonis nimi. See deklaratsioon peab eelnema ploki muutujate deklareerimisele.

    <блок> ::= <раздел объявлений типов> <раздел объявлений переменных>

    <раздел объявлений процедур> <раздел операторов>

    <раздел объявлений типов>::= TÜÜP<объявления типов> |

    See reegel näitab seda<раздел объявлений типов>võib olla tühi (nagu kõigi programmide puhul varem see koht)

    <объявления типов> ::= <объявления типов> <объявление типа> | <объявление типа>

    <объявление типа> ::=<идентификатор > = <обозначение типа>

    Nende süntaksireeglitega kaasnev konteksti reegel ütleb, et ainult mõned identifikaatorid on<объявлением типа>:

    CR Kasutada kui<идентификатор типа>, <идентификатор>peab olema varem ilmunud<объявлениях типов>.

    Seega selleks

    nii T1 kui ka T2 on tüübiidentifikaatorid ja neid saab praeguses plokis kasutada muutujate ja formaalsete parameetrite deklareerimiseks, nagu varem kasutati CHAR-i.

    Pascali keeles muutujaid iseloomustavad nende tüüp. Tüüp on muutuja omadus, mille abil muutuja võib omandada palju selle tüübi lubatud väärtusi ja osaleda paljudes sellel tüübil lubatud toimingutes.

    Tüüp määratleb kehtivate väärtuste komplekti, mille muutuja võib võtta. seda tüüpi. Samuti määratleb see teatud tüüpi muutuja kehtivate toimingute komplekti ja määratleb andmete esitusviisid RAM arvuti.

    Näiteks:

    n:täisarv;

    Pascal on staatiline keel, mis tähendab, et muutuja tüüp määratakse selle deklareerimisel ja seda ei saa muuta. Pascali keeles on välja töötatud tüüpide süsteem – kõik andmed peavad eelnevalt omama tuntud tüüp andmed (kas keelearenduse käigus loodud standardtüüp või programmeerija poolt määratletud kohandatud tüüp). Programmeerija saab luua oma tüüpe suvalise keerukuse struktuuriga, mis põhineb standardsed tüübid, või juba kasutaja määratletud tüübid. Kogus loodud tüübid piiramatu. Programmi kohandatud tüübid deklareeritakse jaotises TÜÜP, kasutades vormingut:

    [nimi] = [tüüp]

    Standardtüüpide süsteemil on hargnenud hierarhiline struktuur.

    Hierarhias on esmased lihtsad tüübid. Sellised tüübid on olemas enamikus programmeerimiskeeltes ja neid nimetatakse lihtsateks, kuid Pascalis on neil keerulisem struktuur.

    Struktureeritud tüübid on ehitatud teatud reeglite järgi lihtsatest tüüpidest.

    Viidad on moodustatud lihtsad tüübid ja neid kasutatakse programmides aadresside määramiseks.

    Protseduuritüübid on Turbo Pascali keele uuendus ja need võimaldavad alamprogrammidele juurde pääseda nii, nagu need oleksid muutujad.

    Objektid on samuti uuendus ja need on mõeldud keele kasutamiseks objektorienteeritud keelena.

    Pascali keeles on 5 tüüpi täisarvutüüpe. Igaüks neist iseloomustab aktsepteeritud väärtuste vahemikku ja nende mäluruumi.

    Täisarvude kasutamisel tuleks juhinduda tüüpide pesastusest, s.t. väiksema ulatusega tüübid saab pesastada suurema ulatusega tüüpide sisse. Baiti tüüp saab pesastada kõikidesse tüüpidesse, mis võtavad enda alla 2 ja 4 baiti. Samal ajal Lühike tüüp Int, mis võtab enda alla 1 baidi, ei saa sisse pesastada Sõna tüüp, kuna sellel pole negatiivseid väärtusi.

    Seal on 5 tõelist tüüpi:

    Täisarvude tüübid on arvutis esitatud absoluutselt täpselt. Erinevalt täisarvu tüüpidest defineerib reaaltüüpide väärtus suvalise arvu ainult teatud lõpliku täpsusega, olenevalt arvu vormingust. Reaalarvud esitatakse arvutis kas fikseeritud või ujukomana.

    2358.8395

    0.23588395*10 4

    0,23588395*E 4

    Tüüp Comp on Pascalis erilisel kohal. Tegelikult on see suur märgiga täisarv. See tüüp ühildub kõigi päristüüpidega ja seda saab kasutada suure täisarvu jaoks. Esitlusel reaalarvud ujukoma koma, viidatakse alati vasaku või kõrge mantissi ette, kuid numbriga opereerimisel nihutatakse seda vasakule või paremale.

    Tavalised tüübid

    Tavatüübid ühendavad mitu lihtsat tüüpi. Nende hulka kuuluvad:

    • kõik täisarvu tüübid;
    • iseloomu tüüp;
    • tõeväärtuslik tüüp;
    • tüübivahemik;
    • loetletud tüüp.

    Järkjärgu tüüpide ühised tunnused on: igal tüübil on lõplik arv võimalikke väärtusi; nende tüüpide väärtust saab teatud viisil järjestada ja iga numbriga seostada teatud numbri, mis on seerianumber; järgutüüpide külgnevad väärtused erinevad ühe võrra.

    Järjekorratüüpi väärtuste puhul saab rakendada funktsiooni ODD(x), mis tagastab argumendi x järjekorranumbri.

    Funktsioon PRED(x) – tagastab järgutüübi eelmise väärtuse. PRED(A) = 5.

    Funktsioon SUCC(x) – tagastab järgmise järguväärtuse. SUCC(A) = 5.

    Tegelaste tüüp

    Märgitüübi väärtused on 256 tähemärki kehtivate tähemärkide hulgast kooditabel arvuti, mida kasutate. Selle komplekti esialgne ala, st vahemik 0 kuni 127, vastab ASCII-koodide komplektile, kuhu laaditakse tähestiku märgid, araabia numbrid ja erimärgid. Algusala märgid on arvuti klaviatuuril alati olemas. Vanemala nimetatakse alternatiiviks, see sisaldab rahvustähestiku sümboleid ja erinevaid eritegelased ja mitte-ASCII pseudograafilisi märke.

    Märgitüübi väärtus võtab RAM-is ühe baidi. Programmis on tähendused ümbritsetud apostroofidega. Väärtused saab määrata ka nende ASCII-koodi kujul. Sel juhul tuleb sümbolkoodiga numbri ette panna # märk.

    C:= 'A'

    Loogiline (tõve) tüüp

    Boole'i ​​väärtusi on kaks: True ja False. Seda tüüpi muutujad määratakse funktsioonisõna BOOLEAN abil. Tõeväärtused hõivavad RAM-is ühe baidi. Väärtused True ja False vastavad arvväärtusi 1 ja 0.

    Tüübivahemik

    Selle baastüübil on alamhulk, mis võib olla mis tahes järgutüüp. Vahemiku tüüp on määratletud põhitüübi piiridega.

    [minimaalne väärtus]… [maksimaalne väärtus]

    Vahemiku tüübi saab määrata jaotises Tüüp kui teatud tüüpi või otse jaotises Var.

    Tüübivahemiku määramisel peate juhinduma:

    • vasak piir ei tohiks ületada paremat piiri;
    • vahemiku tüüp pärib kõik põhitüübi omadused, kuid selle väiksema võimsusega seotud piirangutega.

    Enumi tüüp

    See tüüp kuulub järgutüüpidesse ja seda täpsustatakse väärtuste loetlemisega, mida see võib loendada. Iga väärtust nimetatakse teatud identifikaatoriks ja see asub loendis, raamituna sulgudes. Loetletud tüüp on määratud jaotises Tüüp:

    Rahvad = (mehed, naised);

    Esimene väärtus on 0, teine ​​väärtus on 1 jne.

    Maksimaalne võimsus 65535 väärtust.

    Stringi tüüp

    Stringitüüp kuulub struktureeritud tüüpide rühma ja koosneb põhitüübist Char. Stringi tüüp ei ole järgutüüp. See määratleb palju kuni 255 tähemärgi pikkuseid suvalise pikkusega märgistringe.

    Programmis deklareeritakse stringi tüüp sõnaga String. Kuna String on põhitüüp, määratletakse see keeles ja deklareeritakse muutuv tüüp String on rakendatud versioonis Var. Muutuja deklareerimisel stringi tüüp Soovitav on märkida stringi pikkus stringi taha nurksulgudes. Märkimiseks kasutatakse täisarvu vahemikus 0 kuni 255.

    Perekond: Keel;

    Stringi pikkuse määramine võimaldab kompilaatoril eraldada selle muutuja jaoks määratud arvu baite RAM-is. Kui stringi pikkust pole määratud, eraldab kompilaator selle muutuja väärtuse jaoks maksimaalse võimaliku arvu baite (255).