Heltals- og reelle datatyper i Pascal. Pascal datatyper

TIL ordinære typer omfatter (se fig. 4.1) heltal, logisk, karakter, opregnet og intervaltype. Funktionen ORD(X) er anvendelig til enhver af dem, som returnerer ordenstallet for værdien af ​​udtrykket X. For heltalstyper returnerer funktionen ORD(X) værdien af ​​selve X, dvs. ORD(X) = X for X, der tilhører en hvilken som helst skaltype. Anvendelse af ORD(X) på boolean-, tegn- og opregningstyper giver et positivt heltal i intervallet 0 til 1 (boolesk), 0 til 155 (tegn), 0 til 65535 (opregning). En områdetype bevarer alle egenskaberne for den underliggende ordinaltype, så resultatet af at anvende ORD(X)-funktionen på den afhænger af den pågældende types egenskaber.

Du kan også anvende funktioner på ordinaltyper:

PRED (X) - returnerer den tidligere værdi af ordenstypen (den værdi, der svarer til ordenstallet ORD(X) - 1), dvs.

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

SUCC (X) - returnerer den næste ordensværdi, der matcher ordenstallet ORD(X) +1, dvs.

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

For eksempel hvis et program definerer en variabel

derefter returnerer PRED(C)-funktionen værdien "4", og SUCC(C)-funktionen returnerer værdien "6".

Hvis vi forestiller os en ordinal type som et ordnet sæt værdier, der stiger fra venstre mod højre og optager et bestemt segment på talaksen, så er funktionen PRED(X) ikke defineret for venstre, og SUCC(X) for højre slutningen af ​​dette segment.

Hele typer. Udvalget af mulige værdier af heltalstyper afhænger af deres interne repræsentation, som kan være en, to eller fire bytes. I tabel 4.1 viser navnet på heltalstyper, længden af ​​deres interne repræsentation i bytes og rækken af ​​mulige værdier.

Tabel 4.1

Når du bruger procedurer og funktioner med heltalsparametre, bør du være styret af "nesting" af typer, dvs. hvor end WORD kan bruges, kan BYTE bruges (men ikke omvendt), LONGINT "inkluderer" INTEGER, som igen inkluderer SHORTINT.

Listen over procedurer og funktioner, der gælder for heltalstyper, er angivet i tabel 4.2. Breve b, s, w, i, l udtryk af typen BYTE, SHORTINT, WORD, INTEGER og LONGINT er betegnet henholdsvis, x er et udtryk for enhver af disse typer; bogstaver vb, vs, vw, vi, vl, vx betegne variabler af de tilsvarende typer. I firkantede parenteser en valgfri parameter er angivet.

Tabel 4.2

Standardprocedurer og funktioner, der gælder for hele typer
Appel Resultattype Handling
abs(x) x Returnerer modul x
chr(b) Char Returnerer et tegn ved dets kode
dec(vx[, i]) - Reducerer værdien af ​​vx med i, og i fravær af i - med 1
inc(vx[, i]) - Øger værdien af ​​vx med i, og i fravær af i - med 1
hej(i) Byte Returnerer den høje byte af argumentet
hej(w) Samme Samme
Lo(i) " Returnerer den lave byte af argumentet
Lav) " Samme
ulige (l) Boolean Returnerer Sand, hvis argumentet er et ulige tal
Tilfældig (w) Samme som parameter Returnerer et pseudotilfældigt tal ensartet fordelt i området 0...(w-l)
sgr(x) x Returnerer kvadratet af argumentet
bytte(i) Heltal Byter bytes i et ord
bytte (w) Ord

Når der arbejdes med heltal, vil typen af ​​resultatet svare til typen af ​​operanderne, og hvis operanderne er af forskellige heltalstyper, den type af operanden, der har den maksimale effekt (maksimalt område af værdier). Eventuelt overløb af resultatet kontrolleres ikke på nogen måde, hvilket kan føre til misforståelser, for eksempel:

a: = 32767; (Maksimal mulig HELTAL-værdi)

x:= a + 2; (Overløb under evaluering af dette udtryk !}

y:= LongInt(a)+2; (Intet overløb efter støbning af variablen til en mere kraftfuld type)

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

Som et resultat af at køre programmet får vi

boolesk type. Booleske værdier kan være en af ​​de forud erklærede konstanter FALSK eller TRUE. Reglerne gælder for dem:

Falsk< True;

succ(False)= Sand;

pred(True) = Falsk.

Da den boolske type er en ordinaltype, kan den bruges i en tællelig typeoperator, for eksempel:

for 1:= Falsk til Sand gør ....

Karaktertype. Værdien af ​​en tegntype er sættet af alle pc-tegn. Hvert tegn er tildelt et heltal i intervallet 0...255. Dette nummer tjener som koden for den interne repræsentation af symbolet; det returneres af ORD-funktionen.

ASCII-kode bruges til kodning ( amerikansk Standard kode til orientering Udveksling- Amerikansk standard kode til informationsudveksling). Dette er en 7-bit kode, dvs. den kan kun kode 128 tegn i intervallet fra 0 til 127. Samtidig kan du i den 8-bit byte, der er allokeret til lagring af et tegn i Turbo Pascal, kode dobbelt så mange tegn i intervallet fra 0 til 255. første halvdel af tegnene PC med koderne 0...127 svarer til ASCII-standarden (tabel 4.3). Den anden halvdel af tegn med koder 128...255 er ikke begrænset af standardens stive rammer og kan ændres på en pc forskellige typer(Bilag 2 viser nogle almindelige indkodningsmuligheder for disse tegn).

Tabel 4.3

Tegnkodning i henhold til ASCII-standarden
Kode Symbol Kode Symbol Kode Symbol Kode Symbol
NUL B.L. ® "
ZON ! EN -en
STX " I b
ETX # MED Med
EOT $ D d
ENQ % E e
SPØRG & F f
BEL " G g
B.S. ( H h
NT ) jeg jeg
LF * J j
VT + k k
FF , L jeg
CR - M m
. N n
S.I. / OM
DEL s P
DC1 Q q
DC2 R r
DC3 S s
DC4 T t
N.A.K. U u
SYN V V
ETB w w
KAN x x
E.M. U U
SUB : z z
ESC / [ {
FS < \ l
G.S. = ] }
R.S. > ^ ~
OS ? - n

Tegn med koder 0...31 henviser til servicekoder. Hvis disse koder bruges i programmets tegntekst, betragtes de som blanktegn. Når de bruges i I/O-operationer, kan de have følgende uafhængige betydning:

Symbol Kode Betyder
BEL Opkald; Visningen af ​​dette symbol er ledsaget af lydsignal
NT Vandret tabulering; når den vises på skærmen, flytter markøren til en position, der er et multiplum af 8 plus 1 (9, 17, 25 osv.)
LF Linje oversættelse; når det vises på skærmen, vil alle efterfølgende tegn blive vist fra samme position, men kl næste linje
VT Lodret fane; når den vises på skærmen, udskiftes den særligt tegn
FF Sideløb; når den udskrives til en printer, danner den en side, og når den udskrives på skærmen, erstattes den med et specialtegn
CR Transport retur; indtastes ved at trykke på Enter-tasten (når den indtastes med READ eller READLN, betyder det "Enter"-kommandoen og er ikke placeret i inputbufferen; når det udlæses, betyder det kommandoen "Fortsæt output fra begyndelsen" nuværende linje»)
SUB Slut på fil; indtastet fra tastaturet ved at trykke på Ctrl-Z; når output er erstattet med et særligt skilt
SSC Slut på arbejde; indtastes fra tastaturet ved at trykke på ESC-tasten; når output er erstattet med et særligt skilt

Relationelle operationer såvel som indbyggede funktioner gælder for CHAR-typen: СНR(В) - funktion af CHAR-typen; konverterer et udtryk B af typen BYTE til et tegn og returnerer det med dets værdi;

UPCASE(CH) - CHAR type funktion; vender tilbage stort bogstav, hvis CH er små bogstaver latinsk bogstav, ellers returnerer CH-tegnet selv, for eksempel:

cl:= UpCase("s");

c2:= UpCase ("Ф") ;

WriteLn(cl," ",c2)

Da UPCASE-funktionen ikke behandler kyrillisk, er resultatet af at køre dette

programmer vil blive vist på skærmen

Enum type. En optalt type er specificeret ved en opregning af de værdier, den kan modtage. Hver værdi er navngivet af en identifikator og er placeret i en liste omgivet af parenteser, for eksempel:

farver =(rød, hvid, blå);

Brugen af ​​opregnede typer gør programmer mere visuelle. Hvis programmet f.eks. bruger data knyttet til årets måneder, så er følgende fragment af programmet:

TypeMonth=(Jan,Feb,Mar,Apr,Maj,Jun,Jul,Aug,Sep,Okt,Nov,Dec);

måned: TypeMonth;

if month = Aug then WriteLn("Det ville være rart at tage til havet!");

Det ville være meget tydeligt. Ak! I Turbo Pascal kan du ikke bruge kyrillisk i identifikatorer, så vi er tvunget til at skrive sådan her:

TypeMonth=(jan,feb,mar,maj,jun,jul,aug,sep,okt,nov,dec);

måned: TypeMonth;

if month = aug then WriteLn("Det ville være rart at tage til havet!");

Overensstemmelsen mellem værdierne af en optalt type og ordenstallene for disse værdier er etableret af opregningsrækkefølgen: den første værdi på listen modtager ordenstallet 0, den anden - 1 osv. Maksimal effekt den optalte type har 65536 værdier, så faktisk definerer den optalte type en delmængde af hele WORD-typen og kan betragtes som en kompakt erklæring af en gruppe af heltalskonstanter med værdierne 0, 1 osv.

Brug af opregnede typer øger programmernes pålidelighed ved at give dig mulighed for at kontrollere de værdier, som tilsvarende variabler modtager. Lad f.eks. følgende opregnede typer angives:

farver = (sort, rød, hvid);

ordenal= (en, to, tre);

dage = (mandag, tirsdag, onsdag);

Med hensyn til magt og intern repræsentation er alle tre typer ækvivalente:

ord(sort)=0, ..., ord(hvid)=2,

ord(en)=0, ...ord(tre)=2,

ord(mandag)=0, ...ord(onsdag)=2.

Men hvis variablerne er defineret

col:farver; num:ordenal;

så er operatørerne tilladt

num:= succ(to);

dag:= pred(tirsdag);

men uacceptabelt

Som allerede nævnt er der en en-til-en overensstemmelse mellem værdierne af en opregnet type og sættet af heltal, specificeret af ORD(X)-funktionen. Turbo Pascal tillader også den omvendte konvertering: ethvert udtryk af typen WORD kan konverteres til en værdi af en enum-type, så længe værdien af ​​heltalsudtrykket ikke overstiger power1™ af optællingstypen. Denne konvertering opnås ved at bruge en automatisk erklæret funktion med navnet på den optegnede type (se afsnit 4.4). For eksempel, for typeerklæringen diskuteret ovenfor, er følgende opgaver ækvivalente:

col:= farver(0);

Selvfølgelig opgave

vil være uacceptabelt.

Variabler af enhver opregnet type kan erklæres uden først at erklære den type, for eksempel:

col: (sort, hvid, grøn);

Type-område. En intervaltype er en delmængde af dens basistype, som kan være en hvilken som helst ordinær type undtagen en intervaltype. En intervaltype er defineret af grænserne for dens værdier inden for basistypen:

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

Her<мин.знач. > - minimumsværdi type-område;

<макс.знач.>- dens maksimale værdi.

For eksempel:

ciffer = "0".."9";

Områdetypen behøver ikke at blive beskrevet i TYPE-afsnittet, men kan angives direkte, når en variabel deklareres, for eksempel:

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

Når du bestemmer en intervaltype, skal du følge følgende regler:

  • to ".."-tegn behandles som ét tegn, så mellemrum mellem dem er ikke tilladt;
  • den venstre kant af området bør ikke overskride dens højre kant. En rækketype arver alle egenskaberne for sin basistype, men med begrænsningerne af dens lavere effekt. Især hvis en variabel er defineret

dage = (mo,tu,we,th,fr,sa,su);

WeekEnd = sa .. su;

så vil ORD(W) returnere værdien 5, mens PRED(W) vil resultere i en fejl.

I standard bibliotek Turbo Pascal inkluderer to funktioner, der understøtter arbejde med rækketyper:

HIGH(X) - returnerer den maksimale værdi af den områdetype, som variablen X tilhører;

LAV(X) - returnerer minimumsværdien af ​​områdetypen.

Følgende korte program vil udskrive linjen

SkrivLn(Lav(k),"..",Høj(k))

Heltalssættet er uendeligt, men vi kan altid vælge et antal bits til at repræsentere ethvert heltal, der opstår ved løsning specifik opgave. Sættet af reelle tal er ikke kun uendeligt, men også kontinuerligt, så uanset hvor mange bit vi tager, vil vi uundgåeligt støde på tal, der ikke har en nøjagtig repræsentation. Flydende kommatal er et af de mulige måder repræsentation af reelle tal, som er en afvejning mellem nøjagtighed og rækkevidde af accepterede værdier.

Et flydende kommatal består af et sæt individuelle cifre, der konventionelt er opdelt i fortegn, eksponent og mantisse. Eksponenten og mantissen er heltal, der sammen med tegnet giver følgende repræsentation af et flydende kommatal:

Matematisk er det skrevet sådan:

(-1) s × M × B E, hvor s er tegnet, B er radixen, E er eksponenten, og M er mantissen.

Basen bestemmer ciffertalsystemet. Det er blevet matematisk bevist, at flydende kommatal med basis B=2 ( binær repræsentation) er mest modstandsdygtige over for afrundingsfejl, derfor støder man i praksis kun på basis 2 og sjældnere 10. For yderligere præsentation vil vi altid antage B = 2, og formlen for et flydende kommatal vil se således ud:

(-1) s × M × 2 E

Hvad er mantisse og orden? Mantissa er et heltal med fast længde, der repræsenterer de mest signifikante bits af et reelt tal. Lad os sige, at vores mantisse består af tre bits (|M|=3). Tag for eksempel tallet "5", som binært system vil være lig med 1012. Den mest signifikante bit svarer til 2 2 =4, den midterste bit (som vi har lig med nul) 2 1 =2, og den yngste 2 0 =1. Bestille– dette er potensen af ​​grundtallet (to) af det højeste ciffer. I vores tilfælde E=2. Det er praktisk at skrive sådanne tal i det såkaldte "videnskabelige" standard formular, for eksempel "1.01e+2". Det er umiddelbart klart, at mantissen består af tre tegn, og rækkefølgen er to.

Lad os sige, at vi ønsker at få et brøktal, ved at bruge de samme 3 bits af mantissen. Vi kan gøre dette, hvis vi tager f.eks. E=1. Så vil vores antal være det samme

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

Det er klart, på denne måde kan det samme tal repræsenteres på forskellige måder. Lad os se på et eksempel med længden af ​​mantissen |M|=4. Tallet "2" kan repræsenteres som følger:

2 = 10 (i binært) = 1,000e+1 = 0,100e+2 = 0,010e+3.

Derfor var der allerede i de allerførste maskiner repræsenteret tal i de såkaldte normaliseret form, når den første bit af mantissen altid blev antaget at være lig med én.

Dette sparer en bit (da den implicitte ikke behøver at blive gemt i hukommelsen) og sikrer, at tallet er repræsenteret unikt. I vores eksempel har "2" en enkelt repræsentation ("1.000e+1"), og mantissen er gemt i hukommelsen som "000", fordi den ledende enhed er implicit underforstået. Men i den normaliserede repræsentation af tal opstår der nyt problem- det er umuligt at repræsentere nul i denne form.

  • Dataanalyse ved hjælp af kommandoerne Parametervalg og Løsningssøgning
  • Analyse og fortolkning af eksperimentelle psykologiske forskningsdata.
  • Analyse af kildedata. Tekniske standarder for byveje.
  • ANALYSE AF OPHÅNTE DATA. AT TAGE EN BESLUTNING OM TILSTRÆKKELIGHEDEN ELLER UTILSTRÆKKELIGHEDEN AF VANDFORSYNINGS- KARAKTERISTIKA TIL BEHOVEN TIL VANDINGSSYSTEMET.
  • Kommunikationslinjeudstyr: datatransmissionsudstyr, terminaludstyr, mellemudstyr.

  • Ethvert program skrevet i et hvilket som helst programmeringssprog er i det væsentlige designet til at behandle data. Dataene kan være tal, tekster, grafik, lyd osv. Nogle data er kildedata, andre er resultatet, som opnås ved at behandle kildedataene af programmet.

    Dataene gemmes i computerens hukommelse. Programmet får adgang til dem ved hjælp af variabelnavne forbundet med de hukommelsessteder, hvor dataene er gemt.

    Variabler er beskrevet før hovedprogramkoden. Navnene på variablerne og typen af ​​data, der er lagret i dem, er angivet her.

    Der er mange datatyper i programmeringssproget Pascal. Derudover kan brugeren selv definere sine egne typer.

    Typen af ​​en variabel bestemmer, hvilke data der kan gemmes i den hukommelsesplacering, der er knyttet til den.

    Indtast variabler heltal kan kun associeres med heltalsværdier typisk i området -32768 til 32767. Pascal har andre heltalstyper (byte, longint).

    Indtast variabler ægte gemme reelle (brøk)tal.

    Variabel Boolean(Boolsk) type (boolsk) kan kun tage to værdier - rigtigt(1, sandt) eller falsk(0, falsk).

    Tegntype (char) kan tage værdier fra en bestemt ordnet sekvens af tegn.

    Interval type defineret af brugeren og kun dannet ud fra ordinaltyper. Repræsenterer en delmængde af værdier i et specifikt interval.

    Du kan oprette din egen datatype ved blot at angive de værdier, som en variabel kan tage. af denne type. Dette er den såkaldte opregnet datatype.

    Alle ovenstående er simple datatyper. Men der er også komplekse, strukturerede, som er baseret på simple typer.

    Array er en struktur, der optager et enkelt område i hukommelsen og består af et fast antal komponenter af samme type.

    Strenge er en sekvens af tegn. Desuden må antallet af disse tegn ikke være mere end 255 inklusive. Denne begrænsning er et karakteristisk træk ved Pascal.

    Optage er en struktur bestående af et fast antal komponenter kaldet felter. Data i forskellige felter i en post kan være af forskellige typer.

    Sæt repræsentere en samling af et vilkårligt antal elementer, men af ​​samme opregnede type.

    Filer for Pascal er de sekvenser af samme type data, som er gemt på enheder ekstern hukommelse(for eksempel harddisk).

    Konceptet med en sådan datatype som pointer forbundet med dynamisk lagring af data i computerens hukommelse. Hyppig brug dynamiske typer data er mere effektive i programmering end statiske.

    En datatype definerer et sæt gyldige værdier og et sæt gyldige operationer.

    Simple typer.

    Simple typer er opdelt i ORDINAL og REAL.

    1. BESTILLINGSTYPER , til gengæld er der:

    et hele

    Pascal definerer 5 heltalstyper, som defineres afhængigt af tegnet og værdien, som variablen vil tage.

    Indtast navn

    Længde (i bytes)

    Vifte af værdier

    32 768...+32 767

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

    b) logisk

    Navnet på denne type er BOOLEAN. Booleske værdier kan være en af ​​de boolske konstanter: TRUE (sand) eller FALSE (falsk).

    c) symbolsk

    Navnet på denne type er CHAR - optager 1 byte. Værdien af ​​en tegntype er sættet af alle pc-tegn. Hvert tegn tildeles et heltal i intervallet 0…255. Dette nummer tjener som en kode for den interne repræsentation af symbolet.

    2. RIGTIGE TYPER .

    I modsætning til ordinaltyper, hvis værdier altid er afbildet til en serie af heltal og derfor er repræsenteret helt præcist i pc'en, definerer værdierne af rigtige typer vilkårligt antal kun med en vis begrænset præcision afhængig af det reelle tals interne format.

    Længde på numerisk datatype, bytes

    Numerisk datatypenavn

    Antal signifikante cifre i en numerisk datatype

    Decimalrækkefølge for en numerisk datatype

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

    STRUKTUREREDE TYPER

    Strukturerede datatyper definerer en ordnet samling af skalære variabler og er karakteriseret ved typen af ​​deres komponenter.

    Strukturerede datatyper, i modsætning til simple, definerer sæt komplekse betydninger med ét fælles navn. Vi kan sige, at strukturelle typer bestemmer en bestemt måde at danne nye typer fra eksisterende.

    Der er flere struktureringsmetoder. I henhold til organisationsmetoden og typen af ​​komponenter i komplekse datatyper skelnes følgende sorter: regelmæssig type (arrays); kombineret type (optegnelser); filtype(filer); flere typer; strengtype(strenge); i Turbo Pascal sprogversion 6.0 og ældre blev en objekttype (objekter) introduceret.

    I modsætning til simple typer data, er data af en struktureret type karakteriseret ved mangfoldigheden af ​​elementer, der danner denne type, dvs. en variabel eller konstant af en struktureret type har altid flere komponenter. Hver komponent kan til gengæld tilhøre en struktureret type, dvs. indlejring af typer er mulig.

    1. Arrays

    Arrays i Turbo Pascal ligner på mange måder lignende datatyper i andre programmeringssprog. Et karakteristisk træk ved arrays er, at alle deres komponenter er data af samme type (eventuelt strukturerede). Disse komponenter kan nemt organiseres, og enhver af dem kan tilgås ved blot at angive et serienummer.

    Arraybeskrivelsen er specificeret som følger:

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

    Her<имя типа>- korrekt identifikator;

    Array, af – reserverede ord (array, fra);

    <сп.инд.типов>- en liste over en eller flere indekstyper, adskilt af kommaer; firkantede parenteser, der indrammer listen, er et syntakskrav;

    <тип>- enhver type Turbo Pascal.

    Alle ordinaltyper kan bruges som indekstyper i Turbo Pascal, undtagen LongInt og rangetyper med basistypen LongInt.

    Rededybde strukturerede typer generelt, og derfor arrays, er vilkårlige, derfor er antallet af elementer i listen over typeindekser (arraystørrelse) ikke begrænset, men den samlede længde af den interne repræsentation af et array kan ikke være mere end 65520 bytes.

    2. Optegnelser

    En record er en datastruktur bestående af et fast antal komponenter kaldet record fields. I modsætning til et array kan komponenterne (felterne) i en post være forskellige typer. For at gøre det muligt at henvise til en eller anden komponent af en post, navngives felterne.

    Strukturen af ​​en posttypeerklæring er:

    < Navntype>=OPTAG< joint venture. felter>SLUT

    Her<имя типа>- korrekt identifikator;

    RECORD, END – reserverede ord (optag, slutning);

    <сп.полей>- liste over felter; er en sekvens af sektioner af en post adskilt af et semikolon.

    3. Sæt

    Sæt er et sæt af objekter af samme type, der er logisk forbundet med hinanden. Arten af ​​forbindelserne mellem objekter er kun underforstået af programmøren og er på ingen måde kontrolleret af Turbo Pascal. antallet af elementer, der indgår i et sæt, kan variere fra 0 til 256 (et sæt, der ikke indeholder elementer, kaldes tomt) Det er inkonstansen af ​​antallet af dets elementer, der afviger fra arrays og poster.

    To sæt betragtes som ækvivalente, hvis og kun hvis alle deres elementer er ens, og rækkefølgen af ​​elementerne i sættet er ligegyldig. Hvis alle elementerne i et sæt også er inkluderet i et andet, siges det første sæt at være inkluderet i det andet.

    Beskrivelsen af ​​sættypen er:

    < Navntype>=SÆT AF< baser. type>

    Her<имя типа>- korrekt identifikator;

    SET, OF – reserverede ord (sæt, af);

    <баз.тип>- basistypen for sætelementer, som kan være en hvilken som helst ordinær type undtagen WORD, INTEGER og LONGINT.

    For at definere et sæt bruges den såkaldte sætkonstruktør: en liste over specifikationer af sættets elementer adskilt af kommaer; listen er omgivet af firkantede parenteser. Elementspecifikationer kan være konstanter eller udtryk for en basistype, såvel som en intervaltype af samme basistype.

    4. Filer

    En fil forstås som enten et navngivet område af ekstern hukommelse på en pc eller en logisk enhed - en potentiel kilde eller modtager af information.

    Enhver fil har tre karakteristiske træk

      den har et navn, som gør det muligt for programmet at arbejde med flere filer samtidigt.

      den indeholder komponenter af samme type. Komponenttypen kan være enhver Turbo Pascal-type undtagen filer. Med andre ord kan du ikke oprette en "fil med filer."

      længde igen oprettet fil er ikke angivet på nogen måde, når det annonceres og er kun begrænset af kapaciteten af ​​eksterne hukommelsesenheder.

    Filtype eller variabel filtype kan indstilles på en af ​​tre måder:

    < Navn>= FIL AF< type>;

    < Navn>=TEKST;

    <имя>= FIL;

    Her<имя>- filtypenavn (korrekt identifikator);

    FILE, OF – reserverede ord (fil, fra);

    TEXT – navnet på standardtekstfiltypen;

    <тип>- enhver type Turbo Pascal, undtagen filer.

    Afhængigt af deklarationsmetoden kan der skelnes mellem tre typer filer:

    · maskinskrevne filer (indstillet af FILE OF... klausulen);

    · tekstfiler(defineret af typen TEKST);

    · utypede filer (defineret af FIL-typen).

    Om konverteringen numeriske typer Pascal data

    I Pascal er implicitte (automatiske) konverteringer af numeriske datatyper næsten umulige. En undtagelse er kun gjort for heltalstypen, som er tilladt at bruge i udtryk af typen reel. For eksempel, hvis variablerne er deklareret sådan:

    Var X: heltal; Y: ægte;

    derefter operatøren

    vil være syntaktisk korrekt, selvom der er et heltalsudtryk til højre for tildelingstegnet og en reel variabel til venstre, vil compileren automatisk konvertere numeriske datatyper. Den omvendte konvertering automatisk fra den rigtige type til heltalstypen er umulig i Pascal. Lad os huske, hvor mange bytes der er allokeret til variabler af typen heltal og reelle: for heltalstype 2 bytes hukommelse er allokeret til heltalsdata og 6 bytes til reelle data. Der er to indbyggede funktioner til at konvertere reelt til heltal: rund(x) afrunder et reelt x til det nærmeste heltal, trunc(x) afkorter et reelt tal ved at kassere brøkdelen.

    På Pascal-sprog variabler er karakteriseret ved deres type. En type er en egenskab for en variabel, hvorved en variabel kan antage mange værdier, der er tilladt af den type, og deltage i mange operationer, der er tilladt på den type.

    Type definerer sæt acceptable værdier, som en variabel af denne type tager. Den definerer også sættet af gyldige operationer på en variabel af en given type og definerer datarepræsentationer i Random Access Memory computer.

    For eksempel:

    n:heltal;

    Pascal - statisk sprog, følger det, at typen af ​​en variabel bestemmes under dens beskrivelse og ikke kan ændres. Pascal-sproget har et udviklet typesystem - alle data skal være ejet på forhånd kendt type data (enten en standardtype oprettet under sprogudvikling eller en brugerdefineret type, der er defineret af programmøren). Programmøren kan skabe sine egne typer med en vilkårlig kompleksitetsstruktur baseret på standardtyper eller allerede brugerdefineret typer. Antallet af oprettede typer er ubegrænset. Brugerdefinerede typer i et program erklæres i TYPE-sektionen ved hjælp af formatet:

    [navn] = [type]

    Systemet af standardtyper har en forgrenet, hierarkisk struktur.

    Primære i hierarkiet er simple typer. Sådanne typer er til stede i de fleste programmeringssprog og kaldes simple, men i Pascal har de en mere kompleks struktur.

    Strukturerede typer er bygget efter visse regler fra simple typer.

    Vejvisere er dannet af simple typer og bruges i programmer til at angive adresser.

    Proceduretyper er en nyskabelse af sproget Turbo Pascal, og de tillader adgang til underrutiner, som om de var variable.

    Objekter er også en nyskabelse, og de har til formål at bruge sproget som et objektorienteret sprog.

    I Pascal-sproget er der 5 typer heltalstyper. Hver af dem karakteriserer rækken af ​​accepterede værdier og den plads, de optager i hukommelsen.

    Ved brug af heltal du bør være styret af indlejring af typer, dvs. typer med mindre rækkevidde kan indlejres i typer med stort udvalg. Byte-typen kan indlejres inden for alle typer, der optager 2 og 4 bytes. Samtidig kan Short Int-typen, som optager 1 byte, ikke indlejres Ordtype, da den ikke har nogen negative værdier.

    Der er 5 rigtige typer:

    Heltalstyper er repræsenteret helt præcist i en computer. I modsætning til heltalstyper definerer værdien af ​​reelle typer kun et vilkårligt tal med en vis endelig præcision, afhængigt af tallets format. Reelle tal er repræsenteret i en computer som enten fast eller flydende komma.

    2358.8395

    0.23588395*10 4

    0,23588395*E 4

    Comp-typen indtager en særlig position i Pascal; faktisk er det et stort fortegnet heltal. Denne type er kompatibel med alle rigtige typer og kan bruges til et stort heltal. Når man repræsenterer reelle tal med flydende komma, er decimalkommaet altid underforstået før venstre eller førende mantisse, men når man opererer på et tal, flyttes det til venstre eller højre.

    Ordinaltyper

    Ordinaltyper kombinerer flere simple typer. Disse omfatter:

    • alle heltalstyper;
    • tegntype;
    • boolesk type;
    • type-område;
    • opregnet type.

    Fælles træk for ordinære typer er: hver type har endeligt nummer mulige værdier; værdien af ​​disse typer kan bestilles på en bestemt måde, og et bestemt nummer, som er et serienummer, kan knyttes til hvert nummer; tilstødende værdier af ordinaltyper adskiller sig med én.

    For værdier af en ordenstype kan funktionen ODD(x) anvendes, som returnerer ordenstallet for argumentet x.

    Funktion PRED(x) - returnerer den forrige værdi af en ordinaltype. PRED(A) = 5.

    SUCC(x) funktion - returnerer den næste ordinære værdi. SUCC(A) = 5.

    Karaktertype

    Værdier af tegntypen er 256 tegn ud af sættet af gyldige kode tabel den computer du bruger. Det indledende område af dette sæt, det vil sige intervallet fra 0 til 127, svarer til sættet af ASCII-koder, hvor alfabetets tegn, arabiske tal og specialtegn er indlæst. Startområdets tegn er altid til stede på pc-tastaturet. Seniorområdet kaldes alternativ, det indeholder symboler på nationale alfabeter og div Særlige symboler, og ikke-ASCII pseudografiske tegn.

    En tegntypeværdi fylder en byte i RAM. I programmet er betydninger indesluttet i apostrof. Værdier kan også angives i form af deres ASCII-kode. I dette tilfælde skal du sætte et #-tegn foran nummeret med symbolkoden.

    C:= 'A'

    Logisk (boolesk) type

    Der er to booleske værdier: True og False. Variabler af denne type er specificeret officielt ord BOOLEAN. Booleske værdier optager en byte i RAM. Værdierne True og False svarer til numeriske værdier 1 og 0.

    Type-område

    Der er en delmængde af dens basistype, som kan være en hvilken som helst ordinær type. En intervaltype er defineret af grænserne inden for basistypen.

    [minimum-værdi]...[maksimum-værdi]

    Områdetypen kan angives i Type-sektionen, som en specifik type eller direkte i Var-sektionen.

    Når du bestemmer typeområdet, skal du være vejledt af:

    • den venstre kant bør ikke overskride den højre kant;
    • en intervaltype arver alle basistypens egenskaber, men med begrænsninger forbundet med dens lavere effekt.

    Enum type

    Denne type tilhører ordenstyper og specificeres ved at opregne de værdier, den kan opregne. Hver værdi kaldes en bestemt identifikator og er placeret på listen, indrammet i parentes. Den opregnede type er angivet i Type:

    Folk = (mænd, kvinder);

    Den første værdi er 0, den anden værdi er 1 osv.

    Maksimal effekt 65535 værdier.

    String type

    Strengetypen hører til gruppen af ​​strukturerede typer og består af basistypen Char. Strengtypen er ikke en ordenstype. Det definerer mange karakterstrenge vilkårlig længde op til 255 tegn.

    I et program er en strengtype erklæret med ordet String. Da String er en basistype, er den defineret i sproget og erklæret variabel type String er implementeret i Var. Når du erklærer en variabel af strengtype som streng, er det tilrådeligt at angive længden af ​​strengen i firkantede parenteser. Et heltal fra 0 til 255 bruges til at angive.

    Fam: String;

    Angivelse af strenglængden gør det muligt for compileren at allokere det angivne antal bytes i RAM for denne variabel. Hvis længden af ​​strengen ikke er specificeret, vil compileren allokere det maksimalt mulige antal bytes (255) for værdien af ​​denne variabel.

    Når du beskriver en variabel, skal du angive dens type. Typen af ​​en variabel beskriver det sæt af værdier, den kan tage, og de handlinger, der kan udføres på den. En typeerklæring angiver en identifikator, der repræsenterer typen.

    Simple typer er opdelt i standard (ordinal) og opregnet (begrænset).

    Standard typer

    Turbo Pascal har fire indbyggede standard type: heltal (heltal), reelt (rigtigt), boolsk (logisk) og tegn (tegn).

    Heltalstype (heltal)

    Turbo Pascal har fem indbyggede heltalstyper: shortint, heltal, longint, byte og word. Hver type angiver en specifik delmængde af heltal, som vist i den følgende tabel.

    Indbyggede heltalstyper.

    Rækkevidde

    Format

    8 signerede bits

    16 signerede bits

    2147483648 +2147483647

    32 bit signeret

    8 bit usigneret

    16 bit usigneret

    Aritmetiske operationer på operander af heltalstype udføres i overensstemmelse med følgende regler:

    1. Heltalskonstantentypen er en indbygget heltalstype med mindste rækkevidde, inklusive værdien af ​​denne heltalskonstant.
    2. I tilfælde af en binær operation (en operation, der bruger to operander), konverteres begge operander til deres almindelige type, før operationen udføres på dem. Den almindelige type er den indbyggede heltalstype, med det mindste interval, der inkluderer alle mulige værdier af begge typer. For eksempel er den almindelige type for et heltal og et byte-længde heltal heltal, og den almindelige type for et heltal og et ordlængde heltal er langt heltal. Handlingen udføres i henhold til præcisionen af ​​den generiske type, og typen af ​​resultatet er den generiske type.
    3. Udtrykket på højre side af tildelingsoperatoren evalueres uanset størrelsen af ​​variablen til venstre.

    Operationer udført på heltal:

    "+" - tilføjelse

    "-" - subtraktion

    "*" - multiplikation

    SQR - kvadrering

    DIV - kasserer brøkdelen efter deling

    MOD - opnåelse af heltalsresten efter division

    ABS - talmodul

    TILFældig(X)-modtag tilfældigt tal fra 0 til X

    A:=100; b:=60; a DIV b resultat - 1 a MOD b resultat - 40

    Heltalstypevariabler er beskrevet som følger:

    var variabel liste: type;

    For eksempel: var а,р,n:heltal;

    Ægte type (rigtig)

    Den reelle type er en delmængde af reelle tal, der kan repræsenteres i flydende kommaformat med et fast antal cifre. At skrive en værdi i flydende kommaformat involverer typisk tre værdier - m, b og e - sådan at m*b e, hvor b altid er 10 og m og e er heltalværdier i området rigtig type. Disse værdier af m og e bestemmer yderligere rækkevidden og præcisionen af ​​den rigtige type.

    Der er fem typer af rigtige typer: ægte, enkelt, dobbelt, exnende, komp. Virkelige typer adskiller sig i rækkevidden og præcisionen af ​​de værdier, der er forbundet med dem

    Område og decimaltal for rigtige typer

    Rækkevidde

    Tal

    2,9x10E-39 til 1,7x10E 38

    1,5x10E-45 til 3,4x10E 38

    5,0x10E-324 til 1,7x10E 308

    3,4x10E-493 til 1,1x10E 403

    2E 63 til 2E 63

    Operationer udført på reelle tal:

    • Alle operationer er gyldige for heltal.
    • SQRT(x) er kvadratroden af ​​x.
    • SIN(X), COS(X), ARCTAN(X).
    • LN(X) er den naturlige logaritme.
    • EXP(X) er eksponenten af ​​X (e x).
    • EXP(X*LN(A)) - eksponentiering (A x).
    • Typekonverteringsfunktioner:
      • TRUNC(X) - kasserer brøkdelen;
      • RUND(X) - afrunding.
    • Nogle regler for aritmetiske operationer:
      • Hvis en aritmetisk operation indeholder tal af typen reelle og heltal, så vil resultatet være af typen reel.
      • Alle komponenter i udtrykket er skrevet på én linje.
      • Der bruges kun parenteser.
      • Du kan ikke sætte to regnetegn efter hinanden.

    Variabler af reel type er beskrevet som følger:

    var variabel liste: type;

    For eksempel:

    var d,g,k:real ;

    Tegntype (char)

    K type char henviser til ethvert tegn indesluttet i apostrof. For at repræsentere en apostrof som en tegnvariabel skal du omslutte den i en apostrof: ''''.

    Hvert tegn har sin egen kode og nummer. Serienumre Tallene 0,1..9 er ordnet i stigende rækkefølge. Bogstavernes løbenumre er også ordnet i stigende rækkefølge, men følger ikke nødvendigvis efter hinanden.

    Følgende sammenligningstegn gælder for tegndata:

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

    For eksempel: 'A'< ‘W’

    Funktioner, der gælder for tegnvariable:

    1. ORD(X) - bestemmer serienummeret på symbolet X. ord (‘a’) =97 ;
    2. CHR(X) - identificerer et tegn ved tal. chr(97) ='a';
    3. PRED(X) - returnerer tegnet før X-tegnet pred ('B') ='A';
    4. SUCC(X) - returnerer tegnet efter tegnet X. succ ('A') ='B';

    Enum type

    En optalt datatype er navngivet, fordi den er angivet som en liste over konstanter i en strengt defineret rækkefølge og i en strengt defineret mængde. En optalt type består af en liste over konstanter. Variabler af denne type kan tage værdien af ​​enhver af disse konstanter. Beskrivelsen af ​​opregningstypen ser sådan ud:

    Type<имя типа>=(liste over konstanter) ; Var<имя переменной>:<имя типа>;

    Hvor<список констант>- dette er en speciel type konstanter, specificeret adskilt med kommaer og har deres eget serienummer, startende fra 0.

    For eksempel:

    type retning=(nord, syd, vest, øst) ; month=(juni, juli, august, januar) ; kapacitet=(spand, tønde, beholder, tank) ; var rotation:retning; afgang:måned; volumen:kapacitet; var turn:(nord, syd, vest, øst); afgang: (juni, juli, august, januar) ; volumen: (spand, tønde, beholder, tank);

    Du kan udføre følgende tildelingsoperatorer:

    Rotation:=syd; afgang:=August; volumen:=tank;

    men du kan ikke lave blandede opgaver:

    Afgang:=syd; bind:=august;

    Følgende funktioner gælder for variabler af opregnet type:

    1. ORD - serienummer

    2. PRED - forrige element

    3. SUCC - efterfølgende element.

    PRED (tønde) = spand; SUCC (syd) =vest; ORD (juli) =1 ;

    Variabler af en opregnet type kan sammenlignes, fordi de er ordnet og nummereret. Altså udtrykkene: nord< юг, июнь < январь имеют значения TRUE, а юг>vest og tank<бочка значение FАLSE.

    Begrænset type

    Hvis en variabel ikke accepterer alle værdier af sin type, men kun inden for et bestemt interval, kan den betragtes som en variabel af en begrænset type. Hver begrænset type defineres ved at pålægge basistyperne en begrænsning.

    Det er beskrevet som følger:

    TYPE<имя типа>=konstant1 ..konstant2

    I dette tilfælde skal følgende regler følges:

    1. Begge afgrænsede konstanter skal være af samme type.
    2. Enhver simpel type undtagen ægte kan bruges som basistype.
    3. Startværdien ved definition af en begrænset type må ikke være større end slutværdien.
    typeindeks =0 ..63 ; bogstav='a'..'z'; var char1,char2:bogstav; a,g:indeks;

    Du kan beskrive det med det samme i afsnittet med variabelbeskrivelse:

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