Heltall og reelle datatyper i Pascal. Pascal datatyper

TIL ordinære typer inkludere (se fig. 4.1) heltall, logisk, tegn, oppregnet og områdetype. ORD(X)-funksjonen er anvendelig for enhver av dem, som returnerer ordenstallet til verdien av uttrykket X. For heltallstyper returnerer ORD(X)-funksjonen verdien til selve X, dvs. ORD(X) = X for X som tilhører en hvilken som helst skalltype. Bruk av ORD(X) på boolske, tegn og oppregningstyper gir et positivt heltall i området 0 til 1 (boolsk), 0 til 155 (tegn), 0 til 65535 (oppregning). En områdetype beholder alle egenskapene til den underliggende ordinaltypen, så resultatet av å bruke ORD(X)-funksjonen på den avhenger av egenskapene til den typen.

Du kan også bruke funksjoner på ordenstyper:

PRED (X) - returnerer den forrige verdien av ordenstypen (verdien som tilsvarer ordenstallet ORD(X) - 1), dvs.

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

SUCC (X) - returnerer den neste ordensverdien som samsvarer med ordenstallet ORD(X) +1, dvs.

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

For eksempel hvis et program definerer en variabel

så vil PRED(C)-funksjonen returnere verdien "4", og SUCC(C)-funksjonen vil returnere verdien "6".

Hvis vi forestiller oss en ordinaltype som et ordnet sett med verdier, økende fra venstre til høyre og opptar et bestemt segment på tallaksen, så er ikke funksjonen PRED(X) definert for venstre, og SUCC(X) for høyre slutten av dette segmentet.

Hele typer. Utvalget av mulige verdier av heltallstyper avhenger av deres interne representasjon, som kan være én, to eller fire byte. I tabellen 4.1 viser navnet på heltallstyper, lengden på deres interne representasjon i byte og rekkevidden av mulige verdier.

Tabell 4.1

Når du bruker prosedyrer og funksjoner med heltallsparametere, bør du bli veiledet av "nesting" av typer, dvs. hvor enn WORD kan brukes, kan BYTE brukes (men ikke omvendt), LONGINT "inkluderer" INTEGER, som igjen inkluderer SHORTINT.

Listen over prosedyrer og funksjoner som gjelder for heltallstyper er gitt i tabell 4.2. Bokstaver b, s, w, i, l uttrykk av typen BYTE, SHORTINT, WORD, INTEGER og LONGINT er angitt henholdsvis, x er et uttrykk for en av disse typene; bokstaver vb, vs, vw, vi, vl, vx betegne variabler av tilsvarende typer. I firkantede parenteser en valgfri parameter er spesifisert.

Tabell 4.2

Standard prosedyrer og funksjoner som gjelder for hele typer
Anke Resultattype Handling
abs(x) x Returnerer modul x
chr(b) Char Returnerer et tegn etter koden
des(vx[, i]) - Reduserer verdien av vx med i, og i fravær av i - med 1
inc(vx[, i]) - Øker verdien av vx med i, og i fravær av i - med 1
hei(i) Byte Returnerer den høye byten til argumentet
hei(w) Samme Samme
Lo(i) " Returnerer den lave byten til argumentet
Lav) " Samme
merkelig (l) boolsk Returnerer True hvis argumentet er et oddetall
Tilfeldig (w) Samme som parameter Returnerer et pseudotilfeldig tall jevnt fordelt i området 0...(w-l)
sgr(x) X Returnerer kvadratet av argumentet
bytte(i) Heltall Bytter byte i et ord
bytte (w) Ord

Når du opererer med heltall, vil typen av resultatet samsvare med typen av operandene, og hvis operandene er av forskjellige heltallstyper, typen av operanden som har maksimal kraft (maksimalt verdiområde). Mulig overløp av resultatet kontrolleres ikke på noen måte, noe som kan føre til misforståelser, for eksempel:

a:= 32767; (Maksimal mulig INTEGER-verdi)

x:= a + 2; (Overflyt mens du evaluerer dette uttrykket !}

y:= LongInt(a)+2; (Ingen overløp etter å ha støpt variabelen til en kraftigere type)

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

Som et resultat av å kjøre programmet får vi

Boolsk type. Boolske verdier kan være en av de forhåndserklærte konstantene FALSE eller TRUE. Reglene gjelder for dem:

Falsk< True;

succ(False)= Sant;

pred(True) = Usann.

Siden den boolske typen er en ordinaltype, kan den brukes i en tellbar typeoperator, for eksempel:

for 1:= usann til sant gjør ....

Karaktertype. Verdien av en tegntype er settet med alle PC-tegn. Hvert tegn er tildelt et heltall i området 0...255. Dette nummeret fungerer som koden for den interne representasjonen av symbolet; det returneres av ORD-funksjonen.

ASCII-kode brukes til koding ( amerikansk Standard kode til informasjon Utveksling- Amerikansk standard kode for informasjonsutveksling). Dette er en 7-bits kode, dvs. den kan bare kode 128 tegn i området fra 0 til 127. Samtidig, i 8-bits byte som er tildelt for lagring av et tegn i Turbo Pascal, kan du kode dobbelt så mange tegn i området fra 0 til 255. første halvdel av tegnene PC med kodene 0...127 tilsvarer ASCII-standarden (tabell 4.3). Den andre halvdelen av tegn med kodene 128...255 er ikke begrenset av standardens stive rammeverk og kan endres på en PC forskjellige typer(Vedlegg 2 viser noen vanlige kodingsalternativer for disse tegnene).

Tabell 4.3

Tegnkoding 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ØRRE & 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
UNDER : z z
ESC / [ {
FS < \ l
G.S. = ] }
R.S. > ^ ~
OSS ? - n

Tegn med kodene 0...31 refererer til servicekoder. Hvis disse kodene brukes i programmets tegntekst, regnes de som mellomrom. Når de brukes i I/O-operasjoner, kan de ha følgende uavhengige betydning:

Symbol Kode Betydning
BEL Anrop; Visningen av dette symbolet er ledsaget av lydsignal
NT Horisontal tabulering; når den vises på skjermen, flytter markøren til en posisjon som er et multiplum av 8 pluss 1 (9, 17, 25, osv.)
LF Linje oversettelse; når den vises på skjermen, vil alle påfølgende tegn vises fra samme posisjon, men kl neste linje
VT Vertikal kategori; når den vises på skjermen, erstattes den spesielt tegn
FF Sidekjøring; når den skrives ut til en skriver, danner den en side, og når den skrives ut på skjermen, erstattes den med et spesialtegn
CR Vognretur; angis ved å trykke på Enter-tasten (når den skrives inn med READ eller READLN, betyr det "Enter"-kommandoen og er ikke plassert i inngangsbufferen; når det skrives ut, betyr det kommandoen "Fortsett utdata fra begynnelsen" gjeldende linje»)
UNDER Slutt på fil; angis fra tastaturet ved å trykke Ctrl-Z; ved utgang erstattes den med et spesielt skilt
SSC Slutt på arbeidet; angis fra tastaturet ved å trykke på ESC-tasten; ved utgang erstattes den med et spesielt skilt

Relasjonelle operasjoner, så vel som innebygde funksjoner, gjelder for CHAR-typen: СНR(В) - funksjon av CHAR-typen; konverterer et uttrykk B av typen BYTE til et tegn og returnerer det med sin verdi;

UPCASE(CH) - CHAR type funksjon; returnerer stor bokstav, hvis CH er liten latinsk bokstav, ellers returnerer CH-tegnet selv, for eksempel:

cl:= UpCase("s") ;

c2:= UpCase ("Ф") ;

WriteLn(cl," ",c2)

Siden UPCASE-funksjonen ikke behandler kyrillisk, er resultatet av å kjøre dette

programmer vil vises på skjermen

Enum type. En oppregnet type spesifiseres ved en oppregning av verdiene den kan motta. Hver verdi er navngitt av en identifikator og er plassert i en liste omgitt av parenteser, for eksempel:

farger =(rød, hvit, blå);

Bruken av oppregnede typer gjør programmer mer visuelle. Hvis programmet for eksempel bruker data knyttet til månedene i året, er følgende fragment av programmet:

TypeMonth=(jan,feb,mars,apr,mai,jun,jul,aug,sep,okt,nov,des);

måned: TypeMonth;

if month = Aug then WriteLn("Det ville vært fint å gå til sjøen!");

Det ville være, skjønner du, veldig tydelig. Akk! I Turbo Pascal kan du ikke bruke kyrillisk i identifikatorer, så vi er tvunget til å skrive slik:

TypeMonth=(jan,feb,mar,mai,jun,jul,aug,sep,okt,nov,des);

måned: TypeMonth;

if month = aug then WriteLn("Det ville vært fint å gå til sjøen!");

Samsvaret mellom verdiene av en oppregnet type og ordenstallene til disse verdiene er etablert av oppregningsrekkefølgen: den første verdien i listen mottar ordenstallet 0, den andre - 1, etc. Maksimal kraft den oppregnede typen har 65536 verdier, så faktisk definerer den oppregnede typen en delmengde av hele WORD-typen og kan betraktes som en kompakt erklæring av en gruppe heltallskonstanter med verdier 0, 1, etc.

Bruk av oppregnede typer øker påliteligheten til programmer ved å tillate deg å kontrollere verdiene som tilsvarende variabler mottar. La for eksempel følgende oppregnede typer gis:

farger = (svart, rød, hvit);

ordenal= (en, to, tre);

dager = (mandag, tirsdag, onsdag);

Når det gjelder makt og intern representasjon, er alle tre typene likeverdige:

ord(svart)=0, ..., ord(hvit)=2,

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

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

Men hvis variablene er definert

col:farger; num:ordenal;

da er operatørene tillatt

num:= succ(to);

dag:= pred(tirsdag);

men uakseptabelt

Som allerede nevnt er det en en-til-en-korrespondanse mellom verdiene til en oppregnet type og settet med heltall, spesifisert av ORD(X)-funksjonen. Turbo Pascal tillater også omvendt konvertering: ethvert uttrykk av typen WORD kan konverteres til en verdi av en enum-type, så lenge verdien av heltallsuttrykket ikke overskrider potensen1™ til enumereringstypen. Denne konverteringen oppnås ved å bruke en automatisk deklarert funksjon med navnet på den oppregnede typen (se avsnitt 4.4). For eksempel, for typeerklæringen diskutert ovenfor, tilsvarer følgende oppdrag:

col:= farger(0);

Selvfølgelig, oppdrag

vil være uakseptabelt.

Variabler av alle oppregnede typer kan deklareres uten først å deklarere den typen, for eksempel:

col: (svart, hvit, grønn);

Type-område. En områdetype er en delmengde av dens basistype, som kan være en hvilken som helst ordinær type bortsett fra en områdetype. En områdetype er definert av grensene for verdiene innenfor basistypen:

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

Her<мин.знач. > - minimumsverdi type rekkevidde;

<макс.знач.>- dens maksimale verdi.

For eksempel:

siffer = "0".."9";

Områdetypen trenger ikke å beskrives i TYPE-delen, men kan spesifiseres direkte når du deklarerer en variabel, for eksempel:

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

Når du bestemmer en områdetype, må du følge følgende regler:

  • to ".."-tegn behandles som ett tegn, så mellomrom mellom dem er ikke tillatt;
  • venstre kant av området bør ikke overskride høyre kant. En rekkevidde arver alle egenskapene til sin basistype, men med begrensningene til dens lavere effekt. Spesielt hvis en variabel er definert

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

WeekEnd = sa .. su;

så vil ORD(W) returnere verdien 5 mens PRED(W) vil resultere i en feil.

I standard bibliotek Turbo Pascal inkluderer to funksjoner som støtter arbeid med rekkeviddetyper:

HØY(X) - returnerer maksimumsverdien for områdetypen som variabelen X tilhører;

LAV(X) – returnerer minimumsverdien for områdetypen.

Følgende korte program vil skrive ut linjen

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

Settet med heltall er uendelig, men vi kan alltid velge et antall biter for å representere et hvilket som helst heltall som oppstår når vi løser spesifikk oppgave. Settet med reelle tall er ikke bare uendelig, men også kontinuerlig, så uansett hvor mange biter vi tar, vil vi uunngåelig møte tall som ikke har en eksakt representasjon. Flytende tall er en av de mulige måter representasjon av reelle tall, som er en avveining mellom nøyaktighet og rekkevidde av aksepterte verdier.

Et flyttall består av et sett med individuelle sifre, konvensjonelt delt inn i tegn, eksponent og mantisse. Eksponenten og mantissen er heltall som sammen med tegnet gir følgende representasjon av et flyttall:

Matematisk er det skrevet slik:

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

Basen bestemmer tallsystemet. Det er matematisk bevist at flyttall med grunntall B=2 ( binær representasjon) er mest motstandsdyktige mot avrundingsfeil, derfor støter man i praksis bare på basene 2 og sjeldnere 10. For videre presentasjon vil vi alltid anta B = 2, og formelen for et flyttall vil se slik ut:

(-1) s × M × 2 E

Hva er mantisse og orden? Mantissa er et heltall med fast lengde som representerer de mest signifikante bitene av et reelt tall. La oss si at vår mantisse består av tre biter (|M|=3). Ta for eksempel tallet "5", som binært system vil være lik 101 2. Den mest signifikante biten tilsvarer 2 2 =4, den midterste biten (som vi har lik null) 2 1 =2, og den yngste 2 0 =1. Rekkefølge– dette er potensen til grunntallet (to) til det høyeste sifferet. I vårt tilfelle E=2. Det er praktisk å skrive slike tall i den såkalte "vitenskapelige" standard skjema, for eksempel "1.01e+2". Det er umiddelbart klart at mantissen består av tre tegn, og rekkefølgen er to.

La oss si at vi ønsker å få et brøktall, ved å bruke de samme 3 bitene av mantissen. Vi kan gjøre dette hvis vi tar for eksempel E=1. Da blir tallet vårt likt

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

Det er klart at på denne måten kan det samme tallet representeres på forskjellige måter. La oss se på et eksempel med lengden på mantissen |M|=4. Tallet "2" kan representeres som følger:

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

Derfor, allerede i de aller første maskinene, var tall representert i de såkalte normalisert form, når den første biten av mantissen alltid ble antatt å være lik én.

Dette sparer én bit (siden den implisitte ikke trenger å lagres i minnet) og sikrer at tallet er representert unikt. I vårt eksempel har "2" en enkelt representasjon ("1.000e+1"), og mantissen er lagret i minnet som "000", fordi den ledende enheten er implisitt. Men i den normaliserte representasjonen av tall oppstår det nytt problem- det er umulig å representere null i denne formen.

  • Dataanalyse ved hjelp av kommandoene Parametervalg og Løsningssøk
  • Analyse og tolkning av eksperimentelle psykologiske forskningsdata.
  • Analyse av kildedata. Tekniske standarder for byveier.
  • ANALYSE AV INNHOLDTE DATA. Å TA EN AVGJØRELSE OM TILSTREKKELIGHET ELLER UTILSTREKKELIGHET AV VANNFORSYNINGS KARAKTERISTIKKER FOR BEHOVENE TIL VANNINGSSYSTEMET.
  • Kommunikasjonslinjeutstyr: dataoverføringsutstyr, terminalutstyr, mellomutstyr.

  • Ethvert program skrevet på et hvilket som helst programmeringsspråk er i hovedsak designet for å behandle data. Dataene kan være tall, tekster, grafikk, lyd osv. Noen data er kildedata, andre er resultatet, som oppnås ved å behandle kildedataene av programmet.

    Dataene lagres i datamaskinens minne. Programmet får tilgang til dem ved å bruke variabelnavn knyttet til minnestedene der dataene er lagret.

    Variabler er beskrevet før hovedprogramkoden. Navnene på variablene og typen data som er lagret i dem er angitt her.

    Det er mange datatyper i programmeringsspråket Pascal. I tillegg kan brukeren selv definere sine egne typer.

    Typen av en variabel bestemmer hvilke data som kan lagres i minneplasseringen knyttet til den.

    Skriv variabler heltall kan bare assosieres med heltallsverdier typisk i området -32768 til 32767. Pascal har andre heltallstyper (byte, longint).

    Skriv variabler ekte lagre reelle (brøk) tall.

    Variabel boolsk(boolsk) type (boolsk) kan bare ta to verdier - ekte(1, sant) eller falsk(0, usant).

    Tegntype (tegn) kan ta verdier fra en bestemt ordnet sekvens av tegn.

    Intervall type definert av brukeren og dannet kun fra ordinaltyper. Representerer et undersett av verdier i et spesifikt område.

    Du kan lage din egen datatype ved ganske enkelt å liste opp verdiene som en variabel kan ta. av denne typen. Dette er den såkalte oppregnet datatype.

    Alle de ovennevnte er enkle datatyper. Men det finnes også komplekse, strukturerte, som er basert på enkle typer.

    Array er en struktur som opptar et enkelt område i minnet og består av et fast antall komponenter av samme type.

    Strenger er en sekvens av tegn. Dessuten kan antallet av disse tegnene ikke være mer enn 255 inkludert. Denne begrensningen er et karakteristisk trekk ved Pascal.

    Ta opp er en struktur som består av et fast antall komponenter kalt felt. Data i forskjellige felt i en post kan være av forskjellige typer.

    Settene representerer en samling av et hvilket som helst antall elementer, men av samme oppregnede type.

    Filer for Pascal er de sekvenser av samme type data som er lagret på enheter eksternt minne(for eksempel harddisk).

    Konseptet med en slik datatype som pekeren knyttet til dynamisk lagring av data i datamaskinens minne. Hyppig bruk dynamiske typer data er mer effektive i programmering enn statiske.

    En datatype definerer et sett med gyldige verdier og et sett med gyldige operasjoner.

    Enkle typer.

    Enkle typer er delt inn i ORDINAL og REAL.

    1. BESTILLINGSTYPER , i sin tur er det:

    en hel

    Pascal definerer 5 heltallstyper, som er definert avhengig av tegnet og verdien som variabelen vil ta.

    Skriv inn navn

    Lengde (i byte)

    Rekkevidde av verdier

    32 768...+32 767

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

    b) logisk

    Navnet på denne typen er BOOLEAN. Boolske verdier kan være en av de boolske konstantene: TRUE (true) eller FALSE (false).

    c) symbolsk

    Navnet på denne typen er CHAR - opptar 1 byte. Verdien av en tegntype er settet med alle PC-tegn. Hvert tegn er tildelt et heltall i området 0...255. Dette nummeret fungerer som en kode for den interne representasjonen av symbolet.

    2. EKTE TYPER .

    I motsetning til ordinaltyper, hvis verdier alltid er kartlagt til en serie med heltall og derfor er representert helt presist i PC-en, definerer verdiene til reelle typer vilkårlig nummer bare med en viss begrenset presisjon avhengig av det interne formatet til det reelle tallet.

    Lengde på numerisk datatype, byte

    Navn på numerisk datatype

    Antall signifikante sifre i en numerisk datatype

    Desimalrekkefølge for en numerisk datatype

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

    STRUKTURERT TYPER

    Strukturerte datatyper definerer en ordnet samling av skalarvariabler og er preget av typen av deres komponenter.

    Strukturerte datatyper, i motsetning til enkle, definerer sett komplekse betydninger med ett felles navn. Vi kan si at strukturelle typer bestemmer en bestemt måte å danne nye typer fra eksisterende.

    Det finnes flere struktureringsmetoder. I henhold til organiseringsmetoden og typen komponenter i komplekse datatyper, skilles følgende varianter ut: vanlig type (matriser); kombinert type (poster); filtype(filer); flere type(r); strengtype(strenger); i Turbo Pascal språkversjon 6.0 og eldre ble en objekttype (objekter) introdusert.

    I motsetning til enkle typer data, er data av en strukturert type preget av mangfoldet av elementer som danner denne typen, dvs. en variabel eller konstant av en strukturert type har alltid flere komponenter. Hver komponent kan på sin side tilhøre en strukturert type, dvs. hekking av typer er mulig.

    1. Matriser

    Arrays i Turbo Pascal ligner på mange måter lignende datatyper i andre programmeringsspråk. Et særtrekk ved arrays er at alle komponentene deres er data av samme type (muligens strukturert). Disse komponentene kan enkelt organiseres, og en av dem kan enkelt nås ved å spesifisere et serienummer.

    Matrisebeskrivelsen er spesifisert som følger:

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

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

    Matrise, av – reserverte ord (matrise, fra);

    <сп.инд.типов>- en liste over en eller flere indekstyper, atskilt med komma; hakeparenteser som rammer inn listen er et syntakskrav;

    <тип>- alle typer Turbo Pascal.

    Alle ordinaltyper kan brukes som indekstyper i Turbo Pascal, bortsett fra LongInt og rekkeviddetyper med basistypen LongInt.

    Hekkedybde strukturerte typer generelt, og derfor matriser, er vilkårlig, derfor er antallet elementer i listen over typeindekser (matrisestørrelse) ikke begrenset, men den totale lengden på den interne representasjonen av en hvilken som helst matrise kan ikke være mer enn 65520 byte.

    2. Opptegnelser

    En post er en datastruktur som består av et fast antall komponenter kalt postfelt. I motsetning til en matrise kan komponentene (feltene) til en post være forskjellige typer. For å gjøre det mulig å referere til en eller annen komponent i en post, navngis feltene.

    Strukturen til en posttypeerklæring er:

    < Navntype>=OPPTAK< fellesforetak. Enger>SLUTT

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

    RECORD, END – reserverte ord (record, end);

    <сп.полей>- liste over felt; er en sekvens av deler av en post atskilt med semikolon.

    3. Sett

    Sett er et sett med objekter av samme type som er logisk koblet til hverandre. Naturen til forbindelsene mellom objekter er kun antydet av programmereren og er på ingen måte kontrollert av Turbo Pascal. antall elementer som er inkludert i et sett kan variere fra 0 til 256 (et sett som ikke inneholder elementer kalles tomt.) Det er inkonstansen i antall elementer som settene skiller seg fra arrays og poster.

    To sett anses som likeverdige hvis og bare hvis alle elementene deres er like, og rekkefølgen på elementene i settet er likegyldig. Hvis alle elementene i ett sett også er inkludert i et annet, sies det første settet å være inkludert i det andre.

    Beskrivelsen av setttypen er:

    < Navntype>=SETT MED< baser. type>

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

    SET, OF – reserverte ord (sett, fra);

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

    For å definere et sett, brukes den såkalte settkonstruktøren: en liste over spesifikasjoner av elementene i settet, atskilt med komma; listen er omgitt av hakeparenteser. Elementspesifikasjoner kan være konstanter eller uttrykk for en basistype, samt en områdetype av samme basistype.

    4. Filer

    En fil forstås som enten et navngitt område av eksternt minne på en PC, eller en logisk enhet - en potensiell kilde eller mottaker av informasjon.

    Enhver fil har tre karakteristiske egenskaper

      den har et navn som gjør at programmet kan jobbe med flere filer samtidig.

      den inneholder komponenter av samme type. Komponenttypen kan være hvilken som helst Turbo Pascal-type, unntatt filer. Du kan med andre ord ikke opprette en "fil med filer."

      lengde igjen opprettet fil er ikke spesifisert på noen måte når det kunngjøres og begrenses kun av kapasiteten til eksterne minneenheter.

    Filtype eller variabel filtype kan stilles inn på en av tre måter:

    < Navn>= FIL AV< type>;

    < Navn>=TEKST;

    <имя>= FIL;

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

    FIL, AV – reserverte ord (fil, fra);

    TEXT – navnet på standard tekstfiltype;

    <тип>- alle typer Turbo Pascal, unntatt filer.

    Avhengig av erklæringsmetoden, kan tre typer filer skilles:

    · maskinskrevne filer (sett av FILE OF...-klausulen);

    · tekstfiler(definert av typen TEKST);

    · utypede filer (definert av FIL-typen).

    Om konverteringen numeriske typer Pascal data

    I Pascal er implisitte (automatiske) konverteringer av numeriske datatyper nesten umulige. Et unntak gjøres kun for heltallstypen, som er tillatt brukt i uttrykk av typen reell. For eksempel, hvis variablene er deklarert slik:

    Var X: heltall; Y: ekte;

    deretter operatøren

    vil være syntaktisk korrekt, selv om det er et heltallsuttrykk til høyre for tildelingstegnet og en reell variabel til venstre, vil kompilatoren konvertere numeriske datatyper automatisk. Omvendt konvertering automatisk fra den virkelige typen til heltallstypen er umulig i Pascal. La oss huske hvor mange byte som er tildelt for variabler av typen heltall og reell: for heltallstype 2 byte minne er tildelt for heltallsdata, og 6 byte for reelle data. Det er to innebygde funksjoner for å konvertere reell til heltall: round(x) avrunder en reell x til nærmeste heltall, trunc(x) trunkerer en reell ved å forkaste brøkdelen.

    På Pascal-språket variabler er preget av deres type. En type er en egenskap til en variabel som en variabel kan ta på seg mange verdier som er tillatt av den typen og delta i mange operasjoner som er tillatt på den typen.

    Type definerer sett akseptable verdier, som en variabel av denne typen tar. Den definerer også settet med gyldige operasjoner på en variabel av en gitt type og definerer datarepresentasjoner i tilfeldig tilgangsminne datamaskin.

    For eksempel:

    n:heltall;

    Pascal - statisk språk, følger det at typen av en variabel bestemmes under beskrivelsen og kan ikke endres. Pascal-språket har et utviklet typesystem - alle data må eies på forhånd kjent type data (enten en standardtype opprettet under språkutvikling eller en tilpasset type som er definert av programmereren). Programmereren kan lage sine egne typer med en vilkårlig kompleksitetsstruktur basert på standardtyper, eller allerede brukerdefinert typer. Antall opprettede typer er ubegrenset. Egendefinerte typer i et program er deklarert i TYPE-delen ved å bruke formatet:

    [navn] = [type]

    Systemet med standardtyper har en forgrenet, hierarkisk struktur.

    Primære i hierarkiet er enkle typer. Slike typer finnes i de fleste programmeringsspråk og kalles enkle, men i Pascal har de en mer kompleks struktur.

    Strukturerte typer er bygget etter visse regler fra enkle typer.

    Veivisere er dannet av enkle typer og brukes i programmer for å angi adresser.

    Prosedyretyper er en nyskapning av språket Turbo Pascal, og de tillater tilgang til subrutiner som om de var variabler.

    Objekter er også en nyvinning, og de er ment å bruke språket som et objektorientert språk.

    I Pascal-språket er det 5 typer heltallstyper. Hver av dem karakteriserer utvalget av aksepterte verdier og plassen de opptar i minnet.

    Ved hjelp av heltall du bør ledes av hekking av typer, dvs. typer med mindre rekkevidde kan nestes innenfor typer med stort utvalg. Byte-typen kan nestes innenfor alle typer som opptar 2 og 4 byte. Samtidig kan Short Int-typen, som opptar 1 byte, ikke nestes inn Ordtype, siden den ikke har noen negative verdier.

    Det er 5 ekte typer:

    Heltallstyper er representert helt presist i en datamaskin. I motsetning til heltallstyper, definerer verdien av reelle typer et vilkårlig tall bare med en viss begrenset presisjon, avhengig av formatet til tallet. Reelle tall er representert i en datamaskin som enten fast eller flytende komma.

    2358.8395

    0.23588395*10 4

    0,23588395*E 4

    Comp-typen inntar en spesiell posisjon i Pascal; faktisk er det et stort fortegnet heltall. Denne typen er kompatibel med alle ekte typer og kan brukes for et stort heltall. Når du representerer reelle tall med flyttall, er desimaltegnet alltid underforstått før venstre eller ledende mantisse, men når du opererer på et tall, forskyves det til venstre eller høyre.

    Ordinaltyper

    Ordinaltyper kombinerer flere enkle typer. Disse inkluderer:

    • alle heltallstyper;
    • tegntype;
    • boolsk type;
    • type rekkevidde;
    • oppregnet type.

    Fellestrekk for ordinære typer er: hver type har endelig nummer mulige verdier; verdien av disse typene kan bestilles på en bestemt måte og et visst nummer, som er et serienummer, kan knyttes til hvert nummer; tilstøtende verdier av ordinaltyper varierer med én.

    For verdier av en ordenstype kan funksjonen ODD(x) brukes, som returnerer ordenstallet til argumentet x.

    Funksjon PRED(x) - returnerer den forrige verdien av en ordinaltype. PRED(A) = 5.

    SUCC(x)-funksjon - returnerer neste ordinære verdi. SUCC(A) = 5.

    Karaktertype

    Verdiene for tegntypen er 256 tegn ut av settet med gyldige kodetabell datamaskinen du bruker. Startområdet til dette settet, det vil si området fra 0 til 127, tilsvarer settet med ASCII-koder, der alfabettegn, arabiske tall og spesialtegn er lastet inn. Tegn i startområdet er alltid til stede på PC-tastaturet. Seniorområdet kalles alternativ, det inneholder symboler på nasjonale alfabeter og div Spesielle symboler, og ikke-ASCII pseudografiske tegn.

    En tegntypeverdi tar opp en byte i RAM. I programmet er betydninger omsluttet av apostrof. Verdier kan også spesifiseres i form av deres ASCII-kode. I dette tilfellet må du sette et #-tegn foran nummeret med symbolkoden.

    C:= 'A'

    Logisk (boolsk) type

    Det er to boolske verdier: True og False. Variabler av denne typen er spesifisert offisielt ord BOOLEAN. Boolske verdier opptar en byte i RAM. Verdiene ​​True og False tilsvarer numeriske verdier 1 og 0.

    Type-område

    Det er et undersett av basistypen, som kan være hvilken som helst ordinær type. En områdetype er definert av grensene innenfor basistypen.

    [minimumsverdi]...[maksimumsverdi]

    Områdetypen kan spesifiseres i Type-delen, som en spesifikk type eller direkte i Var-delen.

    Når du bestemmer typeområdet, må du veiledes av:

    • venstre kant bør ikke overskride høyre kant;
    • en rekkeviddetype arver alle egenskapene til basistypen, men med begrensninger knyttet til dens lavere effekt.

    Enum type

    Denne typen tilhører ordenstyper og spesifiseres ved å telle opp verdiene som den kan telle opp. Hver verdi kalles en bestemt identifikator og er plassert i listen, innrammet i parentes. Den oppregnede typen er spesifisert i Type:

    Folk = (menn, kvinner);

    Den første verdien er 0, den andre verdien er 1 osv.

    Maksimal effekt 65535 verdier.

    Type streng

    Strengetypen tilhører gruppen av strukturerte typer og består av basistypen Char. Strengetypen er ikke en ordinær type. Den definerer mange karakterstrenger vilkårlig lengde opptil 255 tegn.

    I et program er en strengtype erklært med ordet String. Siden String er en basistype, er den definert i språket og deklarert variabel type String er implementert i Var. Når du erklærer en variabel av strengtype som streng, er det lurt å angi lengden på strengen i hakeparenteser. Et heltall fra 0 til 255 brukes til å indikere.

    Fam: String;

    Ved å spesifisere strenglengden kan kompilatoren tildele det angitte antallet byte i RAM for denne variabelen. Hvis lengden på strengen ikke er spesifisert, vil kompilatoren tildele maksimalt mulig antall byte (255) for verdien av denne variabelen.

    Når du beskriver en variabel, må du angi typen. Typen av en variabel beskriver settet med verdier den kan ta og handlingene som kan utføres på den. En typeerklæring spesifiserer en identifikator som representerer typen.

    Enkle typer er delt inn i standard (ordinær) og opplistet (begrenset).

    Standard typer

    Turbo Pascal har fire innebygde standard type: heltall (heltall), ekte (virkelig), boolsk (logisk) og tegn (tegn).

    Heltallstype (heltall)

    Turbo Pascal har fem innebygde heltallstyper: shortint, integer, longint, byte og word. Hver type angir et spesifikt delsett av heltall, som vist i følgende tabell.

    Innebygde heltallstyper.

    Område

    Format

    8 signerte biter

    16 signerte biter

    2147483648 +2147483647

    32 bit signert

    8 bits usignert

    16 bits usignert

    Aritmetiske operasjoner på operander av heltallstype utføres i samsvar med følgende regler:

    1. Heltallskonstantentypen er en innebygd heltallstype med minste rekkevidde, inkludert verdien av denne heltallskonstanten.
    2. Ved en binær operasjon (en operasjon som bruker to operander), konverteres begge operandene til sin vanlige type før operasjonen utføres på dem. Den vanlige typen er den innebygde heltallstypen, med det minste området som inkluderer alle mulige verdier av begge typer. For eksempel er den vanlige typen for et heltall og et bytelengde heltall heltall, og den vanlige typen for et heltall og et ordlengdeheltall er et langt heltall. Handlingen utføres i henhold til presisjonen til den generiske typen og typen av resultatet er den generiske typen.
    3. Uttrykket på høyre side av tilordningsoperatoren blir evaluert uavhengig av størrelsen på variabelen til venstre.

    Operasjoner utført på heltall:

    "+" - tillegg

    "-" - subtraksjon

    "*" - multiplikasjon

    SQR - kvadrating

    DIV - forkaster brøkdelen etter deling

    MOD - henter heltallsresten etter divisjon

    ABS - tallmodul

    TILFELDIG(X)-mottak tilfeldig tall fra 0 til X

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

    Variabler av heltallstype er beskrevet som følger:

    var variabelliste: type;

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

    Ekte type (ekte)

    Den reelle typen er en delmengde av reelle tall som kan representeres i flyttallformat med et fast antall sifre. Å skrive en verdi i flyttallformat involverer vanligvis tre verdier - m, b og e - slik at m*b e, hvor b alltid er 10 og m og e er heltallsverdier i området ekte type. Disse verdiene av m og e bestemmer videre rekkevidden og presisjonen til den virkelige typen.

    Det er fem typer ekte typer: ekte, enkel, dobbel, exnende, komp. Ekte typer varierer i rekkevidden og presisjonen til verdiene knyttet til dem

    Område og desimalsifre for ekte typer

    Område

    Tall

    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

    Operasjoner utført på reelle tall:

    • Alle operasjoner er gyldige for heltall.
    • SQRT(x) er kvadratroten av x.
    • SIN(X), COS(X), ARCTAN(X).
    • LN(X) er den naturlige logaritmen.
    • EXP(X) er eksponenten til X (e x).
    • EXP(X*LN(A)) - eksponentiering (A x).
    • Typekonverteringsfunksjoner:
      • TRUNC(X) - forkaster brøkdelen;
      • RUND(X) - avrunding.
    • Noen regler for aritmetiske operasjoner:
      • Hvis en aritmetisk operasjon inneholder tall av typen reell og heltall, vil resultatet være av typen reell.
      • Alle komponentene i uttrykket er skrevet på én linje.
      • Kun parenteser brukes.
      • Du kan ikke sette to regnetegn på rad.

    Variabler av reell type er beskrevet som følger:

    var variabelliste: type;

    For eksempel:

    var d,g,k:ekte ;

    Tegntype (tegn)

    K type røye refererer til ethvert tegn innesluttet i apostrof. For å representere en apostrof som en tegnvariabel, må du omslutte den i en apostrof: ''''.

    Hvert tegn har sin egen kode og nummer. Serienummer Tallene 0,1..9 er ordnet i stigende rekkefølge. Serienumrene til bokstavene er også ordnet i stigende rekkefølge, men følger ikke nødvendigvis hverandre.

    Følgende sammenligningstegn gjelder for tegndata:

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

    For eksempel: 'A'< ‘W’

    Funksjoner som gjelder for tegnvariabler:

    1. ORD(X) - bestemmer serienummeret til symbolet X. ord (‘a’) =97 ;
    2. CHR(X) - identifiserer et tegn ved tall. chr(97) ='a';
    3. PRED(X) - returnerer tegnet foran X-tegnet pred ('B') ='A';
    4. SUCC(X) - returnerer tegnet etter X-tegnet succ ('A') ='B';

    Enum type

    En opplistet datatype er navngitt slik fordi den er spesifisert som en liste over konstanter i en strengt definert rekkefølge og i en strengt definert mengde. En oppregnet type består av en liste med konstanter. Variabler av denne typen kan ta verdien av hvilken som helst av disse konstantene. Beskrivelsen av oppregningstypen ser slik ut:

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

    Hvor<список констант>- dette er en spesiell type konstanter, spesifisert atskilt med komma og har sitt eget serienummer, fra 0.

    For eksempel:

    type retning=(nord, sør, vest, øst) ; month=(juni, juli, august, januar) ; kapasitet=(bøtte, tønne, beholder, tank) ; var rotasjon:retning; avgang:måned; volum:kapasitet; var turn:(nord, sør, vest, øst) ; avgang: (juni, juli, august, januar) ; volum: (bøtte, tønne, beholder, tank);

    Du kan utføre følgende tildelingsoperatorer:

    Rotasjon:=sør; avgang:=august; volum:=tank;

    men du kan ikke gjøre blandede oppgaver:

    Avgang:=sør; volum:=august;

    Følgende funksjoner gjelder for variabler av opplistet type:

    1. ORD - serienummer

    2. PRED - forrige element

    3. SUCC - påfølgende element.

    PRED (fat) = bøtte; SUCC (sør) =vest; ORD (juli) =1 ;

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

    Begrenset type

    Hvis en variabel ikke aksepterer alle verdier av sin type, men bare innenfor et visst område, kan den betraktes som en variabel av begrenset type. Hver begrenset type er definert ved å pålegge en begrensning på basistypene.

    Det er beskrevet som følger:

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

    I dette tilfellet må følgende regler følges:

    1. Begge avgrensede konstanter må være av samme type.
    2. Enhver enkel type unntatt ekte kan brukes som basistype.
    3. Startverdien ved definering av en begrenset type må ikke være større enn sluttverdien.
    typeindeks =0 ..63 ; bokstav='a'...'z'; var char1,char2:letter; a,g:indeks ;

    Du kan beskrive det umiddelbart i avsnittet for variabelbeskrivelse:

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