Katsotaanpa lisää Pascal-kielen tietotyypeistä: Integer, Real, Char, String, Boolean. Pascal-tietotyypit

Pascal-kielen tietotyypit: luokittelu ja kuvaukset. Aritmeettiset ja järjestystietotyypit, toiminnot niiden kanssa. Aritmeettiset lausekkeet: funktiot, operaatiot ja toimintojen järjestys. Tietotyyppien yhteensopivuus ja muunnokset.

Pascal-kääntäjät edellyttävät, että tiedot ohjelman suorittamiseen tarvittavasta muistin määrästä annetaan ennen sen suorittamista. Voit tehdä tämän muuttujan kuvaus -osiossa ( var) sinun on lueteltava kaikki ohjelmassa käytetyt muuttujat. Lisäksi sinun on myös kerrottava kääntäjälle, kuinka paljon muistia kukin näistä muuttujista vie. Olisi myös kiva sopia etukäteen erilaisista tiettyihin muuttujiin sovellettavista operaatioista...

Kaikki tämä voidaan välittää ohjelmalle yksinkertaisesti ilmoittamalla tulevan muuttujan tyyppi. Koska kääntäjällä on tietoa muuttujan tyypistä, hän "ymmärtää" kuinka monta tavua sille on varattava, mitä toimintoja sillä voidaan tehdä ja mihin rakenteisiin se voi osallistua.

Ohjelmoijien avuksi Pascalissa on monia vakiotietotyyppejä sekä mahdollisuus luoda uusia tyyppejä.

Kun rakennamme uudentyyppistä dataa olemassa olevien (standardien tai ohjelmoijan itsensä määrittelemien) pohjalta, on muistettava, että jokainen rakennus on rakennettava hyvälle perustalle. Siksi puhumme nyt tästä "säätiöstä".

Perustuu perustietotyypit kaikki muut Pascal-kielen tyypit rakennetaan, joita kutsutaan: rakennettu.

Jako Pascalin perus- ja konstruoituihin tietotyyppeihin on esitetty taulukossa:

Ohjelmoijan rakentamia tietotyyppejä kuvataan kohdassa tyyppi seuraavan mallin mukaan:

tyyppi<имя_типа> = <описание_типа>;

Esimerkiksi:

kirjoita Lat_Bukvy = "a" .. "z", "A" .. "Z";

Perustietotyypit ovat vakiomuotoisia, joten niitä ei tarvitse kuvata osiossa tyyppi. Tämä voidaan kuitenkin haluttaessa tehdä myös esimerkiksi antamalla pitkiä määritelmiä lyhyitä nimiä. Sanotaan vaikka ottamalla käyttöön uusi tietotyyppi

tyyppi Int = Kokonaisluku;

Voit lyhentää ohjelman tekstiä hieman.

Vakiorakenteisia tyyppejä ei myöskään tarvitse kuvata kappaleessa tyyppi. Joissakin tapauksissa tämä on kuitenkin tehtävä syntaksivaatimusten vuoksi. Esimerkiksi sisään parametriluettelo menettelyt tai toimintoja Tyyppikonstruktoreita ei voi käyttää (katso luento 8).

Tavalliset tietotyypit

Perustietotyypeistä merkittävimmät ovat järjestystyypit. Tämä nimi voidaan perustella kahdella tavalla:

Normaalit rutiinit, jotka käsittelevät järjestystietotyypit

Vain määrille järjestystyypit Seuraavat toiminnot ja menettelyt määritellään:

  1. Toiminto Ord(x) palauttaa muuttujan x arvon järjestysluvun (suhteessa siihen tyyppiin, johon muuttuja x kuuluu).
  2. Toiminto Pred(x) palauttaa x:ää edeltävän arvon (ei koske tyypin ensimmäistä elementtiä).
  3. Toiminto Succ(x) palauttaa x:tä seuraavan arvon (ei koske tyypin viimeistä elementtiä).
  4. Menettely Inc(x) palauttaa x:tä seuraavan arvon (for aritmeettiset tietotyypit tämä vastaa operaattoria x:= x + 1).
  5. Menettely Inc(x, k) palauttaa k:nnen arvon x:n jälkeen (for aritmeettiset tietotyypit tämä vastaa operaattoria x:= x + k).
  6. Menettely joulukuuta(x) palauttaa x:tä edeltävän arvon (for aritmeettiset tietotyypit tämä vastaa operaattoria x:= x - 1).
  7. Menettely joulukuuta(x, k) palauttaa k–e-arvon, joka edeltää x:ää (for aritmeettiset tietotyypit tämä vastaa operaattoria x:= x - k).

Ensi silmäyksellä näyttää siltä, ​​​​että se olisi menettelyn soveltamisen tulos Inc(x) on täysin sama kuin funktion soveltamisen tulos Succ(x). Niiden välinen ero näkyy kuitenkin sallitun alueen rajoilla. Toiminto Succ(x) ei sovellu tyypin enimmäiselementtiin, mutta tässä on menettely Inc(x) ei tuota virhettä, vaan koneen lisäyssääntöjen mukaisesti lisää elementtinumeroon seuraavan yksikön. Luku tietysti ylittää alueen ja muuttuu lyhennyksen vuoksi alueen vähimmäisarvon numeroksi. Osoittautuu, että menettelyt Inc() Ja joulukuuta() he näkevät minkä tahansa järjestystyypin ikään kuin "sulkeutuneena renkaaseen": heti viimeisen jälkeen tulee jälleen ensimmäinen arvo.

Selvitetään kaikki, mitä on sanottu esimerkin avulla. Tietotyypeille

tyyppi kuusitoista = 0 .. 15 ;

jos yrität lisätä ykkösen numeroon 15, tuloksena on seuraava tulos:

1 1 1 1 1 1 0 0 0 0

Alkuyksikkö katkaistaan, ja siksi käy niin Inc(15)=0 .

Proseduurille havaitaan samanlainen tilanne mielivaltaisen järjestystietotyypin sallitun alueen alarajalla joulukuuta(x) ja toiminnot Pred(x):

Tietotyypit liittyvät järjestysluku

Kuvataan nyt järjestystietotyypit tarkemmin.

  1. Boolen tyyppi Boolean on kaksi arvoa: False ja True, ja seuraavat yhtäläisyydet pätevät niille:
  2. Hahmotyyppiin Hiiltyä sisältää 256 merkkiä laajennettu ASCII-taulukko(esimerkiksi "a", "b", "i", "7", "#"). Funktion palauttama merkkinumero Ord() , vastaa tämän symbolin numeroa ASCII-taulukko.
  3. Kokonaislukutietotyypit Laitetaan se taulukkoon:
  4. Listattavissa tietotyypit on määritelty osiossa tyyppi luettelemalla niiden elementit nimenomaisesti. Esimerkiksi:

    tyyppi Viikko = (su, ma, ti, ke, to, pe, la);

    0 1 2 3 4 5 6

  5. Muista, että tälle tietotyypille: määritetään vain alueensa rajojen mukaan. Esimerkiksi:

    tyyppi Kuukausi = 1 .. 12 ;
    Budni = ma .. pe;

  6. Ohjelmoija voi luoda omia tietotyyppejä, jotka ovat useiden standardityyppien yhdistelmä. Esimerkiksi:

    kirjoita Valid_For_Identifiers = "a" .. "z" , "A" .. "Z" , "_" , "0" .. "9" ;

Tämä tyyppi koostuu useiden intervallien yhdistämisestä, ja tässä tapauksessa latinalaisten kirjainten järjestystä muutetaan: jos vakiotyypissä

Yleisin matematiikassa numeeriset tyypit- Tämä koko numerot, jotka edustavat ääretöntä määrää diskreettejä arvoja, ja voimassa numerot, jotka edustavat rajatonta arvojen jatkumoa.

Kuvaus Pascalin numeerisista tietotyypeistä (kokonaisluvut)

Samalla kielellä voidaan toteuttaa kokonaislukujoukon eri osajoukkoja. Kokonaislukutyyppien mahdollisten arvojen alue riippuu niiden sisäisestä esityksestä, joka voi olla yksi, kaksi tai neljä tavua. Näin ollen Pascal 7.0:ssa käytetään seuraavia kokonaislukunumeerisia tietotyyppejä:

Kokonaisuuden kanssa numeeriset tietotyypit Pascal voi suorittaa seuraavat toiminnot:

  • Aritmeettinen:
    lisäys(+);
    vähennyslasku(-);
    kertolasku(*);
    divisioonan loppuosa (mod);
    eksponentio;
    yksipuolinen plus (+);
    yksipuolinen miinus (-).
  • Suhdetoiminnot:
    tasa-arvosuhde (=);
    eriarvoisuussuhde (<>);
    suhde on pienempi (<);
    suhde suurempi kuin (>);
    suhde vähintään (>=);
    asenne ei enää (<=).

Kun näyttelet kanssa kokonaisluku numeeriset tietotyypit tuloksen tyyppi vastaa operandien tyyppiä ja jos operandit ovat eri kokonaislukutyyppejä, sen operandin tyyppiä, jolla on suurin teho (maksimi arvoalue). Tuloksen mahdollista ylivuotoa ei hallita millään tavalla (tämä on tärkeää!) , mikä voi johtaa virheisiin.

Erityistä huomiota tulee kiinnittää kokonaisluku-numeeristen tietotyyppien jakooperaatioon. Pascal sallii kaksi jakooperaatiota, jotka merkitään vastaavasti "/" Ja div. Sinun on tiedettävä, että jaon "/" tulos ei ole kokonaisluku, vaan reaaliluku(tämä on totta, vaikka jaat 8:lla kahdella, eli 8/2=4,0). Divisioona on kokonaislukujako, eli tulostyyppi on kokonaisluku.

Kuvaus Pascalin numeerisista tietotyypeistä (realit)

Todellinen numeerinen tietotyyppi viittaa reaalilukujen osajoukkoon, joka voidaan esittää ns. liukulukumuodossa kiinteällä määrällä numeroita. Liukulukulla jokainen numeerinen tietotyyppi esitetään kahdena numeroryhmänä. Ensimmäistä lukuryhmää kutsutaan mantissaksi, toista eksponenttiksi. Yleensä liukulukumuodossa oleva numeerinen tietotyyppi voidaan esittää seuraavasti: X= (+|-)MP (+ | -) r, missä M on luvun mantissa; r – numerojärjestys (r – kokonaisluku); P – lukujärjestelmän kanta. Esimerkiksi desimaalikannan esitysmuoto 2E-1 (tässä E on desimaalilukujärjestelmän kanta) näyttää tältä: 2*10 -1 =0.2 ja esitys 1.234E5 vastaa: 1.234*10 5 =123400.0.

Pascal käyttää seuraavan tyyppisiä reaalilukuja, jotka määrittelevät mielivaltaisen luvun vain tietyllä rajallisella tarkkuudella riippuen reaaliluvun sisäisestä muodosta:

Kun kuvataan real-tyyppistä reaalimuuttujaa, tietokoneen muistiin luodaan 4 tavun muuttuja. Tässä tapauksessa mantissalle annetaan 3 tavua ja tilaukselle yksi tavu.

Seuraavat toiminnot voidaan suorittaa todellisille numeerisille tietotyypeille:

  • Aritmeettinen:
    lisäys (+);
    vähennyslasku(-);
    kertolasku(*);
    jako(/);
    eksponentio;
    yksipuolinen plus (+);
    yksipuolinen miinus (-).
  • Suhdetoiminnot:
    eriarvoisuussuhde (<>);
    suhde on pienempi (<);
    suhde suurempi kuin (>);
    suhde vähintään (>=);
    asenne ei enää (<=).

Kuten näette, Pascalille on ominaista rikas valikoima reaalityyppejä, mutta pääsy numeerisiin tietotyyppeihin sinkku, kaksinkertainen Ja laajennettu mahdollista vain erityisissä kokoamistiloissa. Nämä numeeriset tietotyypit on suunniteltu tukemaan laitteistoa liukulukuaritmetiikkaa varten, ja jotta niitä voidaan käyttää tehokkaasti, tietokoneessasi on oltava matemaattinen apuprosessori.

Numeerisella tietotyypillä on erityinen asema Pascalissa. comp, jota käsitellään reaalilukuna ilman eksponentiaalisia ja murto-osia. Todella, comp on "iso" etumerkillinen kokonaisluku, joka säilyttää 19...20 merkitsevää desimaalilukua. Samalla numeerinen tietotyyppi comp lausekkeissa se on täysin yhteensopiva muiden reaalityyppien kanssa: kaikki reaalioperaatiot määritellään sille, sitä voidaan käyttää argumenttina matemaattisille funktioille jne.

Tietoja Pascalin numeeristen tietotyyppien muuntamisesta

Pascalissa numeeristen tietotyyppien implisiittiset (automaattiset) muunnokset ovat lähes mahdottomia. Poikkeus tehdään vain tyypille kokonaisluku, jota saa käyttää ilmaisuissa, kuten todellinen. Esimerkiksi jos muuttujat on ilmoitettu näin:

Muuttuja X: kokonaisluku; Y: todellinen;

Se on operaattori

on syntaktisesti oikein, vaikka tehtävämerkin oikealla puolella on kokonaislukulauseke ja vasemmalla reaalimuuttuja, kääntäjä muuntaa numeeriset tietotyypit automaattisesti. Käänteinen muunnos kirjoitetaan automaattisesti todellinen tyypiltään kokonaisluku mahdotonta Pascalissa. Muistetaan kuinka monta tavua on varattu tyyppimuuttujille kokonaisluku Ja todellinen: kokonaislukutietotyypille kokonaisluku Muistia on varattu 2 tavua ja oikealle - 6 tavua. Muuntaa todellinen V kokonaisluku Sisäänrakennettuja toimintoja on kaksi: pyöristää(x) pyöristää todellisen x:n lähimpään kokonaislukuun, trunc(x) katkaisee reaaliluvun hylkäämällä murto-osan.

Tietotyyppi määrittelee joukon kelvollisia arvoja ja joukon kelvollisia operaatioita.

Yksinkertaiset tyypit.

Yksinkertaiset tyypit jaetaan ORDINAL- ja REAL-tyyppeihin.

1. TILAUSTYYPIT , puolestaan ​​​​on:

a) kokonaisena

Pascal määrittelee 5 kokonaislukutyyppiä, jotka määritellään muuttujan ottavan etumerkin ja arvon mukaan.

Kirjoita nimi

Pituus (tavuina)

Arvoalue

32 768...+32 767

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

b) looginen

Tämän tyypin nimi on BOOLEAN. Boolen arvot voivat olla yksi loogisista vakioista: TRUE (tosi) tai FALSE (false).

c) symbolinen

Tämän tyypin nimi on CHAR - se vie 1 tavun. Merkkityypin arvo on kaikkien PC-merkkien joukko. Jokaiselle merkille on määritetty kokonaisluku välillä 0…255. Tämä numero toimii koodina symbolin sisäiselle esitykselle.

2. OIKEAT TYYPIT .

Toisin kuin järjestystyypit, joiden arvot kartoitetaan aina kokonaislukujen sarjaan ja esitetään siksi täysin tarkasti PC:ssä, reaalityyppien arvot määrittelevät mielivaltaisen luvun vain tietyllä äärellisellä tarkkuudella riippuen reaaliluvun sisäisestä muodosta. .

Numeerisen tietotyypin pituus, tavua

Numeerinen tietotyypin nimi

Numeerisen tietotyypin merkitsevien numeroiden lukumäärä

Numeerisen tietotyypin desimaalijärjestysalue

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

RAKENNETYYPIT

Strukturoidut tietotyypit määrittelevät järjestetyn joukon skalaarimuuttujia, ja niille on tunnusomaista niiden komponenttien tyyppi.

Strukturoidut tietotyypit, toisin kuin yksinkertaiset, määrittelevät monia monimutkaisia ​​arvoja yhdellä yleisellä nimellä. Voidaan sanoa, että rakennetyypit määräävät tietyn tavan muodostaa uusia tyyppejä olemassa olevista.

Strukturointimenetelmiä on useita. Monimutkaisten tietotyyppien organisointimenetelmän ja komponenttien tyypin mukaan erotetaan seuraavat lajikkeet: säännöllinen tyyppi (taulukot); yhdistetty tyyppi (tietueet); tiedostotyyppi(tiedostot); useita tyyppejä; merkkijonotyyppi(merkkijonot); Turbo Pascal -kieliversiossa 6.0 ja sitä vanhemmissa versioissa esiteltiin objektityyppi (objektit).

Toisin kuin yksinkertaiset tietotyypit, strukturoidulle datalle on ominaista tämän tyypin muodostavien elementtien moninaisuus, ts. strukturoidun tyypin muuttujalla tai vakiolla on aina useita komponentteja. Jokainen komponentti voi puolestaan ​​kuulua strukturoituun tyyppiin, ts. tyyppien sisäkkäisyys on mahdollista.

1. Taulukot

Turbo Pascalin taulukot ovat monella tapaa samanlaisia ​​kuin muiden ohjelmointikielien samankaltaiset tietotyypit. Tauluille erottuva piirre on, että kaikki niiden komponentit ovat samantyyppisiä (mahdollisesti strukturoituja) tietoja. Nämä komponentit voidaan järjestää helposti ja mihin tahansa niistä pääsee käsiksi yksinkertaisesti määrittämällä sarjanumero.

Taulukon kuvaus on määritetty seuraavasti:

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

Tässä<имя типа>- oikea tunniste;

Array, of – varatut sanat (array, from);

<сп.инд.типов>- luettelo yhdestä tai useammasta hakemistotyypistä pilkuilla erotettuna; listan kehystävät hakasulkeet ovat syntaksivaatimus;

<тип>- mikä tahansa Turbo Pascal.

Indeksityypeinä Turbo Pascalissa voidaan käyttää mitä tahansa järjestystyyppejä, paitsi LongInt ja välityyppejä perustyypin LongInt kanssa.

Strukturoitujen tyyppien ja siten taulukoiden sisäkkäisyyden syvyys yleensä on mielivaltainen, joten elementtien määrää tyyppiindeksien luettelossa (taulukon koko) ei ole rajoitettu, mutta minkään taulukon sisäisen esityksen kokonaispituus ei voi olla yli 65520 tavua.

2. Records

Tietue on tietorakenne, joka koostuu kiinteästä määrästä komponentteja, joita kutsutaan tietuekentiksi. Toisin kuin matriisi, tietueen komponentit (kentät) voivat olla erityyppisiä. Kentät nimetään, jotta tietueen yhteen tai toiseen komponenttiin voidaan viitata.

Postityyppiilmoituksen rakenne on:

< Nimityyppi>=TALLENNA< yhteisyritys. kentät> LOPPU

Tässä<имя типа>- oikea tunniste;

RECORD, END – varatut sanat (tietue, loppu);

<сп.полей>- luettelo kentistä; on sarja tietueen osia, jotka on erotettu puolipisteellä.

3. Sarjat

Sarjat ovat joukko samantyyppisiä objekteja, jotka ovat loogisesti yhteydessä toisiinsa. Objektien välisten yhteyksien luonne on vain ohjelmoijan implisiittinen, eikä Turbo Pascal hallitse sitä millään tavalla. joukkoon sisältyvien alkioiden määrä voi vaihdella välillä 0 - 256 (joukkoa, joka ei sisällä elementtejä, kutsutaan tyhjäksi joukot eroavat taulukoista ja tietueista).

Kahta joukkoa pidetään ekvivalenttina silloin ja vain, jos kaikki niiden alkiot ovat samoja ja joukon alkioiden järjestys on välinpitämätön. Jos kaikki yhden joukon alkiot sisältyvät myös toiseen joukkoon, sanotaan ensimmäisen joukon kuuluvan toiseen.

Sarjan tyypin kuvaus on:

< Nimityyppi>=SARJA< pohjat. tyyppi>

Tässä<имя типа>- oikea tunniste;

SET, OF – varatut sanat (joukko, of);

<баз.тип>- joukkoelementtien perustyyppi, joka voi olla mikä tahansa järjestystyyppi paitsi WORD, INTEGER ja LONGINT.

Joukon määrittämiseen käytetään ns. joukkokonstruktoria: luettelo joukon elementtien määrittelyistä pilkuilla erotettuna; luettelo on ympäröity hakasulkeilla. Elementtimääritykset voivat olla perustyypin vakioita tai lausekkeita sekä saman perustyypin aluetyyppiä.

4. Tiedostot

Tiedostolla tarkoitetaan joko tietokoneen ulkoisen muistin nimettyä aluetta tai loogista laitetta - mahdollista tiedon lähdettä tai vastaanottajaa.

Jokaisella tiedostolla on kolme ominaista ominaisuutta

    sillä on nimi, jonka avulla ohjelma voi työskennellä useiden tiedostojen kanssa samanaikaisesti.

    se sisältää samantyyppisiä komponentteja. Komponenttityyppi voi olla mikä tahansa Turbo Pascal -tyyppi, paitsi tiedostot. Toisin sanoen et voi luoda "tiedostotiedostoa".

    juuri luodun tiedoston pituutta ei määritetä millään tavalla, kun se ilmoitetaan, ja sitä rajoittaa vain ulkoisten muistilaitteiden kapasiteetti.

Tiedostotyyppi tai tiedostotyyppimuuttuja voidaan määrittää jollakin kolmesta tavasta:

< Nimi>= TIEDOSTO< tyyppi>;

< Nimi>=TEKSTI;

<имя>= TIEDOSTO;

Tässä<имя>- tiedostotyypin nimi (oikea tunniste);

FILE, OF – varatut sanat (file, from);

TEKSTI – vakiotekstitiedostotyypin nimi;

<тип>- mikä tahansa Turbo Pascal, paitsi tiedostot.

Ilmoitustavasta riippuen voidaan erottaa kolme tiedostotyyppiä:

· kirjoitetut tiedostot (asettaa FILE OF... -lausekkeen);

· tekstitiedostot (määritelty TEKSTI-tyypiksi);

· kirjoittamattomat tiedostot (määritetty FILE-tyypin mukaan).

Tietoja Pascalin numeeristen tietotyyppien muuntamisesta

Pascalissa numeeristen tietotyyppien implisiittiset (automaattiset) muunnokset ovat lähes mahdottomia. Poikkeuksena on vain kokonaislukutyyppi, jota saa käyttää real-tyyppisissä lausekkeissa. Esimerkiksi jos muuttujat on ilmoitettu näin:

Muuttuja X: kokonaisluku; Y: todellinen;

sitten operaattori

on syntaktisesti oikein, vaikka tehtävämerkin oikealla puolella on kokonaislukulauseke ja vasemmalla reaalimuuttuja, kääntäjä muuntaa numeeriset tietotyypit automaattisesti. Käänteinen muunnos automaattisesti todellisesta tyypistä kokonaislukutyypiksi on mahdotonta Pascalissa. Muistetaan kuinka monta tavua on varattu integer- ja real-tyyppisille muuttujille: kokonaislukutietotyypille on varattu 2 tavua muistia ja realille 6 tavua. On olemassa kaksi sisäänrakennettua funktiota, joilla reaali muunnetaan kokonaisluvuksi: round(x) pyöristää todellisen x:n lähimpään kokonaislukuun, trunc(x) katkaisee reaaliarvon hylkäämällä murto-osan.

Tyypin käsite on yksi minkä tahansa ohjelmointikielen peruskäsitteistä. Objektit (vakiot, muuttujat, funktiot, lausekkeet), joita ohjelma käyttää, kuuluvat tiettyyn tyyppiin.

Tyyppi on joukko arvoja, jotka ohjelmaobjektit voivat ottaa, ja joukko toimintoja, jotka sallitaan näille arvoille.

Esimerkiksi, arvot 1 ja 2 ovat kokonaislukutyyppisiä, niitä voidaan lisätä, kertoa ja muita aritmeettisia operaatioita. Merkitykset "monitori" ja "Pascal" ovat luonteeltaan kielellisiä, niillä on omat kelvolliset operaationsa. Yleisimmin käytetyissä kielissä voidaan käyttää vain tiukasti määriteltyjä, ennalta tunnettuja tyyppejä. Pascal yhdessä muiden korkean tason kielten standardityyppien kanssa antaa ohjelmoijalle mahdollisuuden luoda omia tyyppejä.

Kaikki Pascal-kielessä sallitut tyypit on jaettu kahteen suureen ryhmään: yksinkertainen ja monimutkainen (strukturoitu).

Tyyppi Alue Mantissa, merkkejä Vaadittu muisti (tavuja)
TODELLINEN 2.9*10E-39..1.7*10E38 11-12
SINGLE 1,5*10E-45..3,4*10E38 7-8
KAKSINKERTAINEN 5.0*10E-324..1.7*10E308 15-16
LAAJENNETTU 1.9*10E-4951..1.1*10E4932 19-20
COMP -2E+63+1..2E+63-1 10-20

SINGLE-, DOUBLE-, EXTEND-, COMP-tyyppien tehokas käyttö on mahdollista vain, kun ($N+) -direktiivi on käytössä. Oletuksena se on pois päältä. Teknisten ja taloudellisten ongelmien ratkaisemiseksi REAL-tyyppiset arvot riittävät.

Esimerkki

Var Res, Summa, Itog: todellinen;

Boolean tietotyyppiä kuvaa tunniste BOOLEAN. Tämän tyyppiset muuttujat ja vakiot voivat saada vain yhden kahdesta arvosta: TRUE (tosi) tai FALSE (false).

Esimerkki

Var Sel1, Sel2: boolen;

A,B,C,D: looginen;

Boolen lausekkeet vievät 1 tavun muistia ja niitä käytetään loogisissa ja relaatiolausekkeissa sekä ohjaamaan järjestystä, jossa ohjelmakäskyt suoritetaan.

Kirjaimellinen (merkki) tyyppiä kuvaa standardi CHAR-tunniste. Tämän tyyppiset vakiot ja muuttujat voivat ottaa yhden ASCII-kooditaulukon arvoista. Tämän tyyppisen vakion tai muuttujan merkitys on heitetty heittomerkkeihin.

Esimerkiksi, Var Bukva, Znak, Symboli: char;

Bukva:='A'; Znak:='+'; Symboli:=’!’

Merkkityyppiset muuttujat vievät muistissa 1 tavun. Char-tietojen käyttö aritmeettisissa lausekkeissa on kielletty. Vertailuoperaatioita voidaan soveltaa literaalisiin arvoihin, tulos riippuu literaalimuuttujan tai vakion numerosta kooditaulukossa.

Vakiotietotyyppien lisäksi Pascal tukee skalaarityyppejä, käyttäjän määrittelemä. Näitä ovat mm luettavissa Ja intervalli tyypit. Tämäntyyppiset tiedot vievät muistissa 1 tavun, joten mikään käyttäjätyyppi ei voi sisältää enempää kuin 255 elementtiä. Niiden käyttö parantaa merkittävästi ohjelman näkyvyyttä, helpottaa virheiden löytämistä ja säästää muistia.

Enum tyyppi määritetään suoraan luettelemalla kaikki arvot, jotka tietyn tyyppinen muuttuja voi ottaa. Yksittäiset arvot erotetaan pilkuilla, ja koko luettelo on suljettu suluissa.

Muoto

Tyyppi<имя типа>=(<значение1, значение2, ..., значениеN>);

Var<идентификатор, ...>: < имя типа>;

Esimerkki

Tyyppi Kausi =(kevät, kesä, syksy, talvi);

Var S1, S2: Kausi;

Syksy: (syyskuussa, lokakuussa, nytmarraskuussa);

Tämä esimerkki näyttää eksplisiittisesti määritellyn kauden käyttäjätietotyypin. Niiden merkitykset määritetään - vuodenaikojen nimitykset. Muuttujat S1 ja S2 voivat ottaa vain yhden luetelluista arvoista. Yritys määrittää niille jokin muu arvo aiheuttaa ohjelmiston keskeytyksen. Kolmas luettelotyyppi on anonyymi (ei nimeä) ja se määritetään luetteloimalla arvot Var-osiossa. Syksy on tämän tyyppinen muuttuja ja voi ottaa arvot syyskuu, lokakuu, nyt. Siten mikä tahansa tyyppi voidaan määrittää, mutta tämä ei ole aina hyväksyttävää. Ensimmäinen menetelmä on varmasti ymmärrettävämpi ja johdonmukaisempi Pascal-kielen luonteen kanssa.

Intervallityyppi voit määrittää kaksi vakiota, jotka määrittävät tietyn muuttujan arvoalueen rajat. Kullekin aikavälimuuttujan toimenpiteelle kääntäjä luo tarkistusrutiineja määrittääkseen, pysyykö muuttujan arvo määritetyllä alueella. Molempien vakioiden on kuuluttava johonkin muuhun vakiotyyppiin kuin reaaliin. Ensimmäisen vakion arvon on välttämättä oltava pienempi kuin toisen.

Muoto

Tyyppi<имя типа> = <константа1> .. <константа2>;

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

Esimerkki

Tyyppi Päivät = 1.. 31;

Muutt Työ_d, Vapaa_p: Päivät;

Tässä esimerkissä muuttujat Työ_p, vapaa_p on tyyppi päivää ja voi ottaa minkä tahansa arvon alueelta 1. . 31.

Alueelta poistuminen aiheuttaa ohjelmiston keskeytyksen.

Voit määrittää intervallityypin määrittämällä alueen rajat ei vakioiden arvojen, vaan niiden nimien perusteella:

Vakio Min = 1; Max = 31;

Tyyppi Päivät = Min .. Max;

Muutt Työ_d, Vapaa_p: Päivät;

Strukturoidut tyypit tietotyypit perustuvat skalaarityyppeihin ja voivat sisältää niiden erilaisia ​​yhdistelmiä. Ne määrittelevät järjestetyn joukon skalaarielementtejä ja niille on tunnusomaista niiden komponenttien tyyppi. Pascal-kieli tarjoaa seuraavat jäsennellyt tietotyypit:

rivi - merkkijono heittomerkkien sisällä;

joukko - strukturoitu tietotyyppi, joka koostuu kiinteästä määrästä samantyyppisiä elementtejä, joihin pääsee indeksillä ;

monta - joukko esineitä, jotka on valittu jonkin ominaisuuden tai ominaisuusryhmän mukaan, jota voidaan pitää kokonaisuutena;

ennätys - joukko kiinteästä määrästä erityyppisiä komponentteja;

tiedosto- samantyyppisten ja samanpituisten komponenttien sarja.

Kahta muuta jäsenneltyä tyyppiä – proseduuria ja objektia – on vaikea kartoittaa dataan tavanomaisessa esityksessä.

Kuva 1- Joukko Pascal-kielen perustyyppejä

3.2. Yksinkertaiset tietotyypit Turbo Pascal 7:ssä

Yksinkertainen tyyppi määrittelee järjestetyn parametriarvojen joukon. Turbo Pascalilla on seuraavat yksinkertaisten tyyppien ryhmät:

  • kokonaislukutyypit;
  • boolen tyyppi;
  • hahmotyyppi;
  • lueteltu tyyppi;
  • tyyppi-alue;
  • todellisia tyyppejä.

Kaikkia yksinkertaisia ​​tyyppejä reaalityyppejä lukuun ottamatta kutsutaan järjestystyypeiksi. Järjestystyyppien määrille määritellään vakiomenettelyt ja funktiot: Dec, Inc, Ord, Pred, Succ (katso osa 13.1).

3.2.1. Kokonaislukutyypit

Toisin kuin Pascal, joka määrittelee yhden kokonaislukutyypin, Integer, Turbo Pascalilla on viisi standardikokonaislukutyyppiä: Shortint, Integer, Longint, Byte, Word. Näiden tyyppien ominaisuudet on esitetty taulukossa. 2.

Taulukko 2. Kokonaislukutietotyypit

Tyyppi Alue Muoto Koko tavuina
Shortint -128 .. 127 Ikoninen 1
Kokonaisluku -32768 .. 32767 Ikoninen 2
Longint -2147483648 .. 2147483647 Ikoninen 4
Tavu 0 .. 255 Allekirjoittamaton 1
Sana 0 .. 65535 Allekirjoittamaton 2

3.2.2. Boolen tyyppi

Tavallinen Boolen tyyppi (koko - 1 tavu) on tietotyyppi, jonka mikä tahansa elementti voi ottaa vain kaksi arvoa: True ja False. Tässä tapauksessa seuraavat ehdot ovat voimassa:
Väärä järjestys (väärä) = 0
Järjestys (tosi) = 1
Succ (False) = tosi
Pred (tosi) = false

Turbo Pascal 7.0 lisäsi vielä kolme loogista tyyppiä ByteBool (koko - 1 tavua), WordBool (koko - 2 tavua) ja LongBool (koko - 4 tavua). Ne otettiin käyttöön yhdistämiseksi muihin ohjelmointikieliin ja Windows-ympäristöön. Niiden ero tavallisesta Boolen tyypistä on tämän tyypin parametrin todellinen arvo, joka vastaa arvoa True. Kaikille loogisille tyypeille arvo False vastaa numeroa 0, joka on kirjoitettu vastaavaan tavumäärään. Boolen tyypin arvo True vastaa sen tavuun kirjoitettua numeroa 1, ja muiden tyyppien arvo True vastaa mitä tahansa muuta lukua kuin nolla (vaikka Ord-funktio antaa tässä tapauksessa arvon 1).

3.2.3. Hahmon tyyppi

Vakiomerkkityyppi Char määrittää täyden joukon ASCII-merkkejä. Järjestysfunktio Char-tyypin arvosta antaa vastaavan merkin koodin. Merkkityypin arvoja verrataan niiden koodien mukaan.

3.2.4. Enum tyyppi

Luettelotyyppi ei ole vakio, ja se määritellään joukolla tunnisteita, joita parametriarvot voivat täsmätä. Tunnisteiden luettelo on merkitty suluissa, tunnisteet erotetaan pilkuilla:

tyyppi
= ();)

Tyyppiä määritettäessä on tärkeää, missä järjestyksessä tunnisteet listataan, sillä ensimmäiselle tunnisteelle annetaan sarjanumero 0, toiselle - 1 jne. Samaa tunnistetta voidaan käyttää vain yhden luetteloidun tyypin määrittelyssä. Järjestysfunktio numeroidun tyypin arvosta antaa arvon järjestysnumeron.

Esimerkki. Luettelotyyppi.

kirjoita Operat = (Plus, Miinus, Mult, Jaa);

Boolen tyyppi on luetteloidun tyypin erikoistapaus:

kirjoita Boolen = (False, True);

3.2.5. Tyyppi-alue

Missä tahansa järjestystyypissä voit valita arvojen alajoukon, joka on määritetty minimi- ja maksimiarvoilla ja joka sisältää kaikki alkuperäisen tyypin arvot, jotka ovat näiden rajojen sisällä, mukaan lukien itse rajat. Tämä osajoukko määrittää alueen tyypin. Aluetyyppi määritetään määrittämällä minimi- ja maksimiarvot kahdella pisteellä erotettuina:

tyyppi =. . ;

Minimiarvo tätä tyyppiä määritettäessä ei saa olla suurempi kuin maksimi.

Esimerkki. Aluetyyppien määritelmä.

tyyppi
tusina = 1...12; (numerot 1-12)
AddSub = Plus..Miinus; (lisä- ja vähennysoperaatiot)

3.2.6. Oikeita tyyppejä

Toisin kuin Pascal-kielistandardi, jossa on määritelty vain yksi reaalityyppi Real, Turbo Pascalilla on viisi standardia reaalityyppiä: Real, Single, Double, Extended, Comp. Katso näiden tyyppien ominaisuudet taulukosta. 3. Taulukko 3. Todelliset tietotyypit

Tyyppi Alue Merkittävien lukujen määrä Koko tavuina
Todellinen 2.9*10-39..1.7*1038 11-12 6
Sinkku 1.5*10-45..3.4*1038 7-8 4
Kaksinkertainen 5.0*10-324.-1.7*10308 15-16 8
Laajennettu 3.4*10-4932..1.1*104932 19-20 10
Comp -263+1..263-1 19-20 8

Comp-tyyppi on itse asiassa laajennetun alueen kokonaislukutyyppi, mutta sitä ei pidetä järjestyslajina.

Tyyppejä Single, Double, Extended ja Comp voidaan käyttää ohjelmissa vain, jos niissä on aritmeettinen apuprosessori tai kun apuprosessoriemulaattori on käytössä (katso kappaleet 17.5.8 ja 17.7.1).