Cum se configurează smartphone-uri și PC-uri. Portal informativ

În pascal, tipul de date real este. Tipuri de date adresate

cel mai frecvent în matematică tipuri numerice- Acest întreg numere care reprezintă un număr infinit de valori discrete și valabil numere care reprezintă un continuum nelimitat de valori.

Descrierea tipurilor de date numerice (numere întregi) Pascal

În cadrul aceluiași limbaj, pot fi implementate diferite submulțimi ale mulțimii de numere întregi. Gamă valori posibile Tipurile numerice întregi depind de reprezentarea lor internă, care poate fi de unul, doi sau patru octeți. Deci, Pascal 7.0 utilizează următoarele tipuri de date numerice întregi:

Cu întreg tipuri de date numerice Pascal poate efectua următoarele operații:

  • Aritmetic:
    adăugare(+);
    scădere(-);
    multiplicare(*);
    restul diviziunii (mod);
    exponentiarea;
    plus unar (+);
    minus unar (-).
  • Operațiuni de relație:
    relație de egalitate (=);
    relație de inegalitate (<>);
    raport mai mic (<);
    raport mai mare decât (>);
    raportul nu mai mic decât (>=);
    nu mai mult (<=).

Când acţionează cu tipuri de date numerice întregi tipul rezultatului va corespunde tipului operanzilor, iar dacă operanzii sunt de diferite tipuri întregi, tipului operandului care are cardinalitatea maximă (gamă maximă de valori). Depășirea posibilă a rezultatului nu este controlată în niciun fel (este important!) , ceea ce poate duce la erori.

O atenție deosebită trebuie acordată operațiunii de divizare a tipurilor de date numerice întregi. În Pascal sunt permise două operații de împărțire, care sunt respectiv notate "/" Și div. Trebuie să știți că rezultatul împărțirii „/” nu este un număr întreg, dar numar real(acest lucru este adevărat chiar dacă împărțiți 8 la 2, adică 8/2=4,0). Divizia div este diviziune intregi, adică tipul de rezultat întreg.

Descrierea tipurilor de date numerice (reale) Pascal

Tipul de date numerice reale se referă la un subset de numere reale care pot fi reprezentate într-un așa-numit format în virgulă mobilă cu un număr fix de cifre. Cu virgulă mobilă, fiecare tip de date numerice este reprezentat ca două grupuri de cifre. Primul grup de cifre se numește mantisa, al doilea - ordinea. În general, un tip de date numerice în formă de virgulă mobilă poate fi reprezentat astfel: X= (+|-)MP (+ | -) r , unde M este mantisa numărului; r este ordinea numărului (r este un număr întreg); P este baza sistemului numeric. De exemplu, pentru o bază zecimală, reprezentarea lui 2E-1 (aici E este baza sistemului numeric zecimal) va arăta astfel: 2*10 -1 =0.2, iar reprezentarea lui 1.234E5 va corespunde cu: 1.234* 105 =123400,0.

Pascal folosește următoarele tipuri de numere reale, care definesc număr arbitrar numai cu o precizie finită în funcție de formatul intern al numărului real:

Când se descrie o variabilă reală de tip real, o variabilă de 4 octeți va fi creată în memoria computerului. În acest caz, 3 octeți vor fi dați sub mantise și unul - sub ordin.

Puteți efectua următoarele operații pe tipuri de date numerice reale:

  • Aritmetic:
    adăugare (+);
    scădere(-);
    multiplicare(*);
    Divizia(/);
    exponentiarea;
    plus unar (+);
    minus unar (-).
  • Operațiuni de relație:
    relație de inegalitate (<>);
    raport mai mic (<);
    raport mai mare decât (>);
    raportul nu mai mic decât (>=);
    nu mai mult (<=).

După cum puteți vedea, Pascal se caracterizează printr-o gamă bogată de tipuri reale, dar acces la tipuri de date numerice singur, dublaȘi extins posibil doar atunci când regimuri speciale compilare. Aceste tipuri de date numerice sunt concepute pentru suport hardware pentru aritmetica în virgulă mobilă și pentru utilizarea lor eficientă, PC-ul trebuie să includă un coprocesor matematic.

O poziție specială în Pascal este ocupată de un tip de date numerice. comp, care este tratat ca un număr real fără exponențial și părți fracționale. De fapt, comp este un întreg „mare” cu semn care stochează 19..20 de cifre zecimale semnificative. În același timp, tipul de date numerice compîn expresii, este pe deplin compatibil cu alte tipuri reale: toate operațiile reale sunt definite pe el, poate fi folosit ca argument al funcțiilor matematice etc.

Despre conversia tipurilor de date numerice în Pascal

Conversiile implicite (automate) ale tipurilor de date numerice sunt aproape imposibile în Pascal. Se face o excepție numai pentru tip întreg, care poate fi folosit în expresii precum real. De exemplu, dacă variabilele sunt declarate după cum urmează:

VarX: întreg; Y: real

Apoi operatorul

va fi corectă din punct de vedere sintactic, deși o expresie întreagă se află în dreapta semnului de atribuire, iar o variabilă reală este în stânga, compilatorul va face automat conversia tipurilor de date numerice. Conversia inversă este tip automat real pe tip întreg nu este posibil în Pascal. Să ne amintim câți octeți sunt alocați pentru variabile precum întregȘi real: sub tipul de date întreg întreg Sunt alocați 2 octeți de memorie, iar sub real - 6 octeți. Pentru conversie real V întreg există două funcții încorporate: rundă(x) rotunjește un x real la cel mai apropiat număr întreg, trunchi(x) trunchiază un număr real prin eliminarea părții fracționale.

În Pascal variabilele se caracterizează prin lor tip. Un tip este o proprietate a unei variabile, conform căreia o variabilă poate prelua un set de valori permise de acest tip și poate participa la un set de operațiuni permise pe acest tip.

Tipul definește un set valori admise, care acceptă o variabilă de acest tip. De asemenea, definește setul de operațiuni permise dintr-o variabilă de acest tip și definește reprezentarea datelor în memoria RAM a computerului.

De exemplu:

n: întreg;

Pascal este un limbaj static, ceea ce înseamnă că tipul unei variabile este determinat atunci când este declarată și nu poate fi schimbat. Limbajul Pascal are un sistem dezvoltat de tipuri - toate datele trebuie să aparțină unui tip de date cunoscut anterior (fie un tip standard creat în timpul dezvoltării limbajului, fie un tip definit de utilizator pe care programatorul îl definește). Programatorul își poate crea tipurile cu o structură de complexitate arbitrară bazată pe tipuri standard sau tipuri deja definite de utilizator. Numărul de tipuri create este nelimitat. Tipurile personalizate din program sunt declarate în secțiunea TYPE după formatul:

[nume] = [tip]

Sistemul de tip standard are o structură ramificată, ierarhică.

Primare în ierarhie sunt tipuri simple. Astfel de tipuri sunt prezente în majoritatea limbajelor de programare și sunt numite simple, dar în Pascal au o structură mai complexă.

Tipuri structurate sunt construite după anumite reguli din tipuri simple.

Indicatori sunt formate din vederi simple și sunt folosite în programe pentru a seta adrese.

Tipuri procedurale sunt o inovație a limbajului Turbo Pascal și vă permit să vă referiți la subrutine ca și cum ar fi variabile.

Obiecte sunt, de asemenea, noi și sunt destinate a fi utilizate ca limbaj orientat pe obiecte.

Există 5 tipuri de tipuri de întregi în Pascal. Fiecare dintre ele caracterizează gama de valori acceptate și locul lor în memorie.

Când folosiți numere întregi, trebuie să vă ghidați după imbricarea tipurilor, de exemplu. tipurile de interval mai mici pot fi imbricate în tipuri de interval mai mari. Tipul Byte poate fi imbricat în toate tipurile care ocupă 2 și 4 octeți. În același timp, tipul Short Int, care ocupă 1 octet, nu poate fi imbricat în tipul Word, deoarece nu are valori negative.

Există 5 tipuri reale:

Tipurile întregi sunt reprezentate exact într-un computer. Spre deosebire de tipurile întregi, valoarea tipurilor reale definește un număr arbitrar doar cu o precizie finită, în funcție de formatul numărului. Numerele reale sunt reprezentate într-un computer cu virgulă fixă ​​sau mobilă.

2358.8395

0.23588395*10 4

0,23588395*E 4

O poziție specială în Pascal este ocupată de tipul Comp, de fapt, este un întreg mare cu semn. Acest tip este compatibil cu toate tipurile reale și poate fi folosit pentru numere întregi mari. Când se reprezintă numere reale în virgulă mobilă, punctul zecimal este întotdeauna implicat înaintea mantisei din stânga sau cea mai înaltă, dar când se operează pe un număr, este deplasată la stânga sau la dreapta.

Tipuri ordinale

Tipurile ordinale combină mai multe tipuri simple. Acestea includ:

  • toate tipurile de numere întregi;
  • tip de caracter;
  • tip boolean;
  • tip-gamă;
  • tip enumerat.

Caracteristicile comune pentru tipurile ordinale sunt: ​​fiecare tip are un număr finit de valori posibile; valoarea acestor tipuri poate fi ordonată într-un anumit mod și cu fiecare număr se poate compara un anumit număr, care este un număr de serie; valorile adiacente ale tipurilor ordinale diferă cu unu.

Pentru valorile ordinale se poate aplica funcția ODD(x), care revine număr de serie argumentul x.

Funcția PRED(x) - returnează valoarea anterioară a tipului ordinal. PRED(A) = 5.

Funcția SUCC(x) - Returnează următoarea valoare a unui tip ordinal. SUCC(A) = 5.

Tip de caracter

Valorile tipului de caractere sunt de 256 de caractere din setul permis de tabelul de coduri al computerului utilizat. Zona inițială a acestui set, adică intervalul de la 0 la 127, corespunde setului de coduri ASCII în care sunt încărcate caractere alfabetice, numere arabe și caractere speciale. Caracterele zonei de început sunt întotdeauna prezente pe tastatura computerului. Zona mai veche se numește alternativă, conține caractere ale alfabetelor naționale și diverse caractere speciale, precum și caractere pseudografice care nu corespund codului ASCII.

O valoare a tipului de caracter ocupă un octet în RAM. În program, valorile sunt incluse în apostrofe. De asemenea, valorile pot fi specificate sub forma codului său ASCII. În acest caz, numărul cu codul caracterului trebuie să fie precedat de semnul #.

C:= 'A'

Tip boolean (boolean).

Există două valori de tip boolean: True (True) și False (False). Variabilele de acest tip sunt specificate de cuvântul de serviciu BOOLEAN. O valoare booleană ocupă un octet în RAM. Valorile Adevărat și Fals corespund valorilor numerice 1 și 0.

Tip-gamă

Există un subset al tipului său de bază, care poate fi orice tip ordinal. Tipul intervalului este definit de limitele din cadrul tipului de bază.

[valoare minimă]…[valoare maximă]

Tipul intervalului poate fi specificat în secțiunea Tip ca tip specific sau direct în secțiunea Var.

Când definiți un tip de interval, trebuie să vă ghidați după:

  • marginea stângă nu trebuie să depășească marginea dreaptă;
  • un tip de interval moștenește toate proprietățile tipului de bază, dar cu limitări legate de cardinalitatea sa inferioară.

Tip enumerat

Acest tip se referă la tipurile ordinale și este specificat prin enumerarea acelor valori pe care le poate enumera. Fiecare valoare este denumită printr-un identificator și se află în lista încadrată în paranteze. Tipul enumerat este specificat în Tip:

Popoare = (bărbați, femei);

Prima valoare este 0, a doua valoare este 1 și așa mai departe.

Putere maximă 65535 valori.

tip șir

Tipul șir aparține grupului de tipuri structurate și este format din tipul de bază Char. Tipul șirului nu este un tip ordinal. Acesta definește un set de șiruri de caractere de lungime arbitrară de până la 255 de caractere.

În program, tipul șirului este declarat de cuvântul String. Deoarece String este un tip de bază, este declarat în limbaj și declararea unei variabile de tip String se face în Var. Când declarați o variabilă de tip șir pentru String în paranteza patrata este indicat să specificați lungimea șirului. Specifică un număr întreg între 0 și 255.

Fam: String;

Specificarea lungimii șirului permite compilatorului să aloce numărul specificat de octeți în RAM pentru variabila dată. Dacă lungimea șirului nu este specificată, atunci compilatorul va aloca numărul maxim posibil de octeți (255) pentru valoarea acestei variabile.

Agenția Federală pentru Educație

Eseu

„TIPURI DE DATE ÎN PASCAL”

1. Tipuri de date

Orice date, de ex. constantele, variabilele, proprietățile, valorile funcției sau expresiile sunt caracterizate prin tipurile lor. Un tip definește setul de valori valide pe care le poate avea un obiect, precum și setul de operații valide care i se pot aplica. În plus, tipul determină și formatul reprezentării interne a datelor în memoria PC-ului.

În general, limbajul Object Pascal este caracterizat de o structură ramificată de tipuri de date (Fig. 1.1). Limbajul oferă un mecanism pentru crearea de noi tipuri, astfel încât numărul total de tipuri utilizate în program poate fi arbitrar mare.

Datele procesate în program sunt împărțite în variabile, constante și literale:

constante sunt date ale căror valori sunt setate în secțiunea declarație constantă și nu se modifică în timpul execuției programului.

Variabile sunt declarate în secțiunea de declarare a variabilelor, dar, spre deosebire de constante, își primesc valorile deja în timpul execuției programului, iar aceste valori pot fi modificate. Constantele și variabilele pot fi denumite după nume.

Literal nu are identificator și este reprezentat direct de valoarea din textul programului.

Tip definește setul de valori pe care le pot lua elementele de date și setul de operațiuni permise asupra acestora.

Acesta și următoarele patru capitole oferă o descriere detaliată a fiecărui tip.

1.1 Tipuri simple

Tipurile simple includ tipurile ordinale, reale și date și oră.

Tipuri ordinale diferă prin faptul că fiecare dintre ele are un număr finit de valori posibile. Aceste valori pot fi ordonate într-un anumit mod (de unde și numele tipurilor) și, prin urmare, fiecare dintre ele poate fi asociată cu un număr întreg - numărul ordinal al valorii.

Tipuri reale, strict vorbind, au și un număr finit de valori, care este determinat de formatul reprezentării interne a unui număr real. Cu toate acestea, numărul de valori posibile ale tipurilor reale este atât de mare încât nu este posibil să se asocieze un număr întreg (numărul său) cu fiecare dintre ele.

tip dată-oră conceput pentru a stoca data și ora. De fapt, folosește formatul real în aceste scopuri.

1.1.1 Tipuri ordinale

Tipurile ordinale includ (vezi Figura 1.1) întreg, boolean, caracter, enumerare și interval. Pentru oricare dintre ele este aplicabilă funcția Ord(x), care returnează numărul ordinal al valorii expresiei X.


Orez. 1.1 - Structura tipurilor de date

Pentru întreg tipuri, funcția ord(x) returnează însăși valoarea lui x, adică Ord(X) = x pentru x aparținând oricărui întreg tip. Aplicarea Ord(x) la logic , simbolică și enumerată tipuri oferă un număr întreg pozitiv în intervalul de la 0 la 1 ( tip boolean), de la 0 la 255 ( simbolic), de la 0 la 65535 ( enumerabil). Tip-gamă păstrează toate proprietățile tipului ordinal subiacent, astfel încât rezultatul aplicării funcției ord(x) la acesta depinde de proprietățile acelui tip.

Funcțiile pot fi aplicate și la tipurile ordinale:

prezice(x)- returnează valoarea anterioară a tipului ordinal (valoarea care corespunde ordinalului ord (x) -1, adică ord(pred(x)) = ord(x) - 1;

succ(x)- returnează următoarea valoare a tipului ordinal care corespunde ordinalului ord(x) + 1, adică ord(Succ(x)) = ord(x) + 1.

De exemplu, dacă programul definește o variabilă

apoi funcția PRED(c) va returna caracterul „4”, iar funcția SUCC(c) va returna caracterul „6”.

Dacă ne gândim la orice tip ordinal ca un set ordonat de valori care cresc de la stânga la dreapta și ocupă un anumit segment pe axa numerelor, atunci funcția pred (x) nu este definită pentru capătul din stânga și succ (x) - pentru capătul drept al acestui segment.

Tipuri întregi . Gama de valori posibile pentru tipurile întregi depinde de reprezentarea lor internă, care poate fi unul, doi, patru sau opt octeți. În tabel. 1.1 listează numele tipurilor întregi, lungimea reprezentării lor interne în octeți și intervalul de valori posibile.

Tabelul 1.1 - Tipuri întregi

Nume Lungime, octeți Interval de valori
cardinal 4 0. .. 2 147 483 647
octeți 1 0...255
Shortint 1 -128...+127
Smallint 2 -32 768...+32 767
Cuvânt 2 0...65 535
Întreg 4
Longint 4 -2 147 483 648...+2 147 483 647
int64 8 -9*1018...+9*1018
cuvânt lung 4 0. . .4 294 967 295

Tipuri cuvânt lungȘi int64 introdus pentru prima dată în versiunea 4 și tipuri SmallintȘi cardinal lipsă în Delphi 1. Tip întreg pentru această versiune, este nevoie de 2 octeți și are un interval de valori de la -32768 la +32767, adică la fel ca Smallint .

Când utilizați proceduri și funcții cu parametri întregi, trebuie să vă ghidați după „imbricarea” tipurilor, de exemplu. oriunde poate fi folosit cuvânt, este permisă utilizarea octeți(dar nu invers) Longint„intră” Smallint, care la rândul său include Shortint .

Lista procedurilor și funcțiilor aplicabile tipurilor întregi este dată în tabel. 1.2. Literele b, s, w, i, l denotă expresii, respectiv, de tip octeți , Shortint, Word, Integer și Longint ,

x este o expresie a oricăruia dintre aceste tipuri; literele vb, vs, vw, vi, vl, vx denotă variabile ale tipurilor respective. Un parametru opțional este indicat între paranteze drepte.

Tabelul 1.2 - Proceduri standardși funcții aplicabile la tipurile întregi

Recurs Tip de rezultat Acțiune
abs(x) X Returnează modulul x
chr(b) Char Returnează un caracter după codul său
dec(vx[, i]) - Descrește valoarea lui vx cu i, iar în absența lui i - cu 1
inc(vx[,i]) - Crește valoarea lui vx cu i, iar în absența lui i - cu 1
salut(w) octeți Returnează cel mai înalt arc al argumentului
Buna eu) La fel Returnează al treilea octet
Lo(i) Returnează octetul scăzut al argumentului
Scăzut) La fel
impar (l) boolean Returnează True dacă argumentul este un număr impar
Aleatoriu (w) Ca parametru se intoarce număr pseudo-aleatoriu, distribuit uniform în intervalul 0...(w-l)
sqr(x) X Returnează pătratul argumentului
schimb(i) Întreg Schimbați octeți într-un cuvânt
schimb(w) Cuvânt La fel

Când se operează pe numere întregi, tipul rezultatului va corespunde tipului operanzilor, iar dacă operanzii sunt de diferite tipuri întregi, tipului general care include ambii operanzi. De exemplu, când acționezi cu scurtăturăȘi cuvânt comun va fi tipul întreg. În mod implicit, compilatorul Delphi nu generează cod care controlează dacă o valoare este în afara intervalului, ceea ce poate duce la confuzie.

Tipuri booleene . Tipurile booleene sunt Boolean, ByteBool, Bool, wordBoolȘi longbool. În Pascal standard, este definit doar tipul boolean, alte tipuri booleene sunt introduse în Object Pascal pentru compatibilitate cu tipurile Windows: booleanȘi ByteBool ocupă câte un octet fiecare, BoolȘi wordbool- 2 octeți, longbool- 4 octeți. Valori tip boolean poate fi una dintre constantele pre-declarate Fals (fals) sau True (adevărat).

Deoarece tipul boolean este un tip ordinal, acesta poate fi utilizat într-o instrucțiune de tip buclă de numărare. În Delphi 32 pentru boolean sens

Ord (Adevărat) = +1, în timp ce pentru alte tipuri ( bool, wordbool etc.)

Ord (True) = -1, deci aceste tipuri de operatori ar trebui să fie folosite cu grijă! De exemplu, pentru versiunea Delphi 6, instrucțiunea executabilă showMessage (" ---") în bucla următoare pentru nu va fi executat niciodată:

pentru L:= Fals la True do

ShowMessage("--);

Dacă înlocuim parametrul de buclă tip L din exemplul anterior cu boolean, bucla va rula și mesajul va apărea de două ori pe ecran. [Pentru Delphi versiunea 1 și 2 ord (True) =+1 pentru orice tip boolean.]

Tip de caracter . Valorile tipului de caractere sunt setul tuturor caracterelor PK. Fiecărui caracter i se atribuie un număr întreg în intervalul 0...255. Acest număr servește drept cod pentru reprezentarea internă a caracterului și este returnat de funcția ord.

Codificarea Windows folosește cod ANSI (numit după Institutul Național American de Standarde, institutul american de standarde care a propus acest cod). Prima jumătate a caracterelor PC cu codurile 0...127 corespunde Tabelului 1.3. A doua jumătate a caracterelor cu codurile 128...255 se modifică pentru diferite fonturi. Fonturile standard Windows Arial Cyr, Courier New Cyr și Times New Roman pentru a reprezenta caractere chirilice (fără literele „ё” și „Ё”) folosesc ultimele 64 de coduri (de la 192 la 256): „А”... „Я ” sunt valori codificate 192..223, „a”... „i” - 224...255. Caracterele „Ё” și „ё” au codurile 168 și, respectiv, 184.

Tabelul 1.3 - Codificarea caracterelor conform standardului ANSI

Cod Simbol Cod. Simbol Cod. Simbol Cod Simbol
0 NUL 32 BL 64 @ 96 "
1 ZON 33 ! 65 A 97 A
2 STX 34 66 ÎN 98 b
3 ETX 35 # 67 CU 99 Cu
4 EOT 36 $ 68 D 100 d
5 ENQ 37 % 69 E 101 e
6 ACK 38 & 70 F 102 f
7 BEL 39 " 71 G 103 d
8" BS 40 ( 72 H 104 h
9 HT 41 ) 73 eu 105 i
10 LF 42 * 74 J 106 j
11 VT 43 + 75 LA 107 k
12 FF 44 F 76 L 108 1
13 CR 45 - 77 M 109 m
14 ASA DE 46 78 N 110 n
15 SI 47 / 79 0 111 O
16 DEL 48 0 80 R 112 P
17 DC1 49 1 81 Q 113 q
18 DC2 50 2 82 R 114 r
19 DC3 51 3 83 S 115 s
20 DC 4 52 4 84 T 116 t
21 NAK 53 5 85 U 117 u
22 SYN 54 6 86 V 118 v
23 ETB 55 7 87 W 119 W
24 POATE SA 56 8 88 X 120 X
25 EM 57 9 89 Y 121 La
26 SUB 58 : 90 Z .122 z
27 ESC 59 ; 91 t 123 {
28 FS 60 < 92 \ 124 1
29 GS 61 = 93 ] 125 }
30 RS 62 > 94 L 126 ~
31 NE 63 F 95 127 r

Caracterele cu codurile 0...31 se referă la coduri de serviciu. Dacă aceste coduri sunt folosite în textul simbolic al unui program, ele sunt considerate spații.

Tipuri de date Pascal

Orice date (constante, variabile, valori ale funcției sau expresii) din Turbo Pascal sunt caracterizate prin tipurile lor. Un tip definește setul de valori valide pe care le poate avea un obiect, precum și setul de operații valide care i se pot aplica. Tipul determină și formatul reprezentării interne a datelor din memoria computerului.

Următoarele tipuri de date există în Turbo Pascal.

1) Tipuri simple:

- real;

- simbolic;

- boolean (logic);

- listate;

– limitat (gamă).

2) Tipuri compozite (structurate):

– regulat (matrice);

– combinate (înregistrări);

- dosar;

- multiplu;

- sfoară;

- obiecte.

3) Tipuri de referință (indicatori tip și netipizat).

4) Tipuri procedurale.

Turbo Pascal oferă un mecanism pentru crearea de noi tipuri de date, astfel încât numărul total de tipuri utilizate în program poate fi arbitrar mare.

tipul întreg . Valorile de tip întreg sunt elemente ale unui subset de numere întregi. Există cinci tipuri de numere întregi în Turbo Pascal. Numele lor, intervalul de valori, lungimea reprezentării în octeți sunt date în tabel. 6.

Tabelul 6

Tipuri de date întregi

Variabilele întregi sunt declarate folosind cuvintele rezervate de mai sus:

i, j, k: întreg;

Datele de tip întreg sunt stocate exact în memorie. De exemplu, variabilele de tip întreg ocupă 2 octeți (16 biți) în memorie, care sunt repartizați astfel: 1 bit este alocat pentru a stoca semnul numărului (0 dacă numărul este pozitiv și 1 dacă numărul este negativ) și 15 biți pentru a stoca numărul sistem binar socoteala. Maxim numar decimal, care poate fi scris ca binar pe 15 biți, este 32767.

Când utilizați proceduri și funcții cu parametri întregi, trebuie să vă ghidați după „imbricarea” tipurilor, adică oriunde este folosit cuvântul, byte este permis (dar nu invers), longint „include” întreg, care, la rândul său, include shortint.

Tipul întreg definește cinci operații de bază care au ca rezultat, de asemenea, un număr întreg: +, -,*, div, mod (adunare, scădere, înmulțire, împărțire întreg și rest de diviziune intregi). În expresiile aritmetice, operațiile *, div, mod au o prioritate mai mare decât operațiile +, -. Exemple de expresii de scriere:

Lista procedurilor și funcțiilor aplicabile tipurilor întregi este dată în tabel. 7. Literele b, s, w, i, l denotă expresii de tip byte, shortint, word, întreg și, respectiv, longint; x este o expresie a oricăruia dintre aceste tipuri; identificatorii vb, vs, vw, vi, vl, vx denotă variabile ale tipurilor corespunzătoare. Un parametru opțional este indicat între paranteze drepte.

Tabelul 7

Proceduri și funcții standard aplicabile tipurilor întregi

Recurs Tip de rezultat Acțiune
Abs(x) X Returnează modulul x
Chr(b) Char Returnează un caracter după codul său
Dec(vx[,i]) - Descrește valoarea lui vx cu i, iar în absența lui i - cu 1
Inc(vx[,i]) - Crește valoarea lui vx cu i, iar în absența lui i - cu 1
Buna eu) octeți Returnează octetul înalt al argumentului
Buna eu) octeți La fel
Lo(i) octeți Returnează octetul scăzut al argumentului
scăzut) octeți La fel
Impar(l) octeți Returnează adevărat dacă argumentul este un număr impar
Aleatoriu (w) Ca parametru Returnează un număr pseudo-aleatoriu distribuit uniform în intervalul 0...(w-1)
pătrat(x) X Returnează pătratul argumentului
Schimbați(i) Întreg
Schimbați (w) Cuvânt Schimbați octeți într-un cuvânt
Succ(x) Ca parametru Returnează următoarea valoare întreagă, adică x+1
pred(x) Ca parametru Returnează valoarea întreagă anterioară, adică x-1

Când se operează pe numere întregi, tipul rezultatului va corespunde tipului de operand, iar dacă operanzii sunt de diferite tipuri întregi, tipului de operand care are intervalul maxim de valori. Posibila depășire a rezultatului nu este controlată, ceea ce poate duce la erori în program.

Tip real. Valorile tipurilor reale definesc un număr arbitrar cu o anumită precizie finită, în funcție de formatul intern al numărului real. Există cinci tipuri reale în Turbo Pascal (Tabelul 8).

Tabelul 8

Tipuri de date reale

Variabilele reale sunt declarate folosind cuvintele rezervate de mai sus:

Un număr real din memoria computerului este format din 3 părți:

Cifra semn a numărului;

Parte exponențială;

Mantisa numărului.

Mantisa are o lungime de la 23 (Single) la 63 (Extended) cifre binare, ceea ce oferă o precizie de 7-8 pentru Single și 19-20 pentru Extended zecimal digits. Punctul zecimal (virgulă) este implicat înaintea cifrei din stânga (cea mai înaltă) a mantisei, dar atunci când se operează cu un număr, poziția sa este deplasată la stânga sau la dreapta, în conformitate cu ordinea binară a numărului stocat în partea exponențială, prin urmare, operațiile pe numere reale se numesc aritmetică în virgulă mobilă (virgulă).

Tipurile Single, Double și Extended sunt accesate numai în moduri speciale de compilare. Pentru a activa aceste moduri, selectați elementul de meniu Opțiuni, Compilator...și activați opțiunea 8087/80287 in grup Prelucrare numerică.

O poziție specială în Turbo Pascal este ocupată de tipul Comp, care este tratat ca un număr real fără părți exponențiale și fracționale. De fapt, Comp este un întreg mare cu semn care stochează 19 până la 20 de cifre zecimale semnificative. În același timp, Comp este pe deplin compatibil cu orice alte tipuri reale în expresii: toate operațiile reale sunt definite pe el, poate fi folosit ca argument operatii matematice etc.



Numerele reale sunt date în sistem zecimal calcule într-unul din doua forme.

ÎN formă de punct fixînregistrarea constă dintr-un număr întreg și o parte fracțională, separate între ele printr-un punct, de exemplu:

0.087 4.0 23.5 0.6

ÎN formă în virgulă mobilă intrarea conține litera E, care înseamnă „înmulțiți cu zece la putere”, iar gradul este un număr întreg, de exemplu:

7E3 6.9E-8 0.98E-02 45E+04

Deasupra obiectelor tip real sunt definite următoarele operații: +, -, *, /.

Operatorii „*” și „/” au o prioritate mai mare decât operatorii „+” și „-”.

Dacă cel puțin un operand este real, atunci operațiile +, -, *, / conduc la un rezultat real. Operația de împărțire / conduce la un rezultat real în cazul a doi operanzi întregi, de exemplu: 9/3 = 3,0.

Pentru a lucra cu date reale, pot fi utilizate funcțiile matematice standard prezentate în Tabelul 1. 9. Rezultatul acestor funcții este și el real.

Tabelul 9

Funcții matematice, lucrând cu date reale

Nu este permisă utilizarea variabilelor și constantelor de tip REAL:

– în funcțiile pred(x), succ(x), ord(x);

– ca indici de tablouri;

– ca etichete în declarațiile de transfer de control;

– ca variabile de control (parametri de ciclu).

Pentru a converti un număr real într-un număr întreg, puteți utiliza următoarele funcții:

trunc(x) este partea întreagă a lui x (x este real);

round(x) – rotunjirea la cel mai apropiat număr întreg (x este real).

tip de caracter. Variabilele de caractere sunt declarate folosind cuvântul rezervat char:

Valorile de acest tip sunt selectate dintr-un set ordonat de caractere (din setul ASCII) format din 256 de caractere. Fiecărui caracter i se atribuie un număr întreg din intervalul 0..255. De exemplu, litere mari alfabet latin A..Z au codurile 65..90, și literă mică– coduri 97..122.

Valoarea unei variabile tip caracter este un singur caracter inclus în apostrofe, de exemplu:

„F” „8” „*”

Variabilele de caractere pot fi comparate între ele prin compararea codurilor de caractere.

Există funcții care stabilesc o corespondență între un caracter și codul său:

ord(с) - dă numărul simbolului de la;

chr(i) - returnează caracterul cu numărul i.

Aceste funcții sunt inverse una față de cealaltă.

tip boolean. Variabilele booleene sunt declarate folosind cuvântul rezervat boolean:

p1, p2: boolean;

Variabilele booleene iau două valori: Adevărat(Adevărat), fals(minciună).

Aceste valori sunt ordonate după cum urmează: false< true. false имеет порядковый номер 0, true имеет порядковый номер 1.

Variabilelor booleene li se poate atribui o valoare direct sau puteți utiliza expresie booleană. De exemplu,

a, d, g, b: boolean;

Operații relaționale (<, <=, >, >=, =, <>) aplicate variabilelor întregi, reale și caractere produc un rezultat boolean.

Operațiile logice pe operanzi de tip boolean dau, de asemenea, un rezultat logic (operațiile sunt enumerate în ordinea descrescătoare a priorității) (pentru detalii, vezi Tabelele 3 și 5):

not – negație (operație NOT);

şi - înmulţirea logică (operaţia ŞI);

sau – adăugare logică (operație OR);

xor - exclusiv OR.

Expresia (nu a) are sensul opus a lui a.

Expresia (a și b) se evaluează drept adevărată numai dacă ambele a și b sunt adevărate, în caz contrar valoarea acestei expresii este falsă.

Expresia (a sau b) se evaluează ca falsă numai dacă atât a cât și b sunt false, în toate celelalte cazuri rezultatul este adevărat.

Tip enumerat. Un tip enumerat non-standard este specificat de enumerare ca nume ale valorilor pe care variabila le poate lua. Fiecare valoare este denumită printr-un identificator și este localizată într-o listă încadrată de parantezele. Forma generală declarații de tip enumerate:

x = (w1, w2, …, wn);

unde x este numele tipului, w1, w2,..., wn sunt valorile pe care variabilă de tip X.

Aceste valori sunt ordonate w1

Următoarele funcții standard se aplică unui argument de tip enumerat w:

succ(w), pred(w), ord(w).

culoare=(rosu, negru, galben, verde)

ww=(stânga, sus, dreapta, jos);

f: matrice de ww;

succ(d) = galben;

Variabilele a și b sunt de tip w. ele pot lua una dintre cele trei valori și mai departe

Operațiile relaționale sunt aplicabile valorilor de tip enumerat: =,<>, <=, >=, <, >.

Este permisă specificarea constantelor de tip enumerate direct în secțiune var fără a folosi secțiunea tip, De exemplu

c,d: (rosu, negru, galben, verde);

Tip de gamă (limitat).. Când definiți un tip delimitat, specificați valorile de început și de sfârșit pe care le poate lua o variabilă de tip interval. Valorile sunt separate prin două puncte.

Descrierea unui tip restricționat este

Aici a este numele tipului, min, max sunt constante.

Atunci când specificați un tip restricționat, trebuie respectate următoarele reguli:

– ambele constante de limită min și max trebuie să fie de același tip;

– Un tip restricționat este creat din datele tipului de bază, care poate fi un întreg, caracter sau tip enumerat. De exemplu:

col = roșu..galben;

litera = 'a'..'f';

- Variabilele de tip restricționat pot fi declarate în secțiunea var fără a se face referire la secțiunea de tip:

– un tip restricționat moștenește toate proprietățile tipului de bază din care este creat;

– limita minimă trebuie să fie întotdeauna mai mică decât limita maximă.

Matrice. O matrice este un tip complex, care este o structură constând dintr-un număr fix de componente de același tip. Tipul componentei se numește tip de bază. Toate componentele matricei pot fi comandate cu ușurință și oricare dintre ele poate fi accesată pur și simplu prin specificarea numărului său ordinal. Descrierea matricei în secțiune var se pare ca:

A: matrice de t2;

unde a este numele matricei, matrice, de– cuvinte de serviciu (însemnând „matrice de…”), t1 – tip index; t2 – tip componentă (tip bază).

Numărul de indici determină dimensiunea tabloului. Indecii pot fi de tipuri întregi (cu excepția longint), caracter, boolean, enumerați și interval. Indecii sunt separați prin virgule și încadrați între paranteze drepte. Componentele matricei pot fi de orice tip, cu excepția fișierului.

Exemplul 1 Luați în considerare o matrice unidimensională C, ale cărei valori sunt cinci numere reale:

4.6 6.23 12 -4.8 0.7

Descrierea acestei matrice este următoarea:

c: matrice de real;

După o anumită valoare a indexului, puteți selecta o anumită componentă a matricei (de exemplu, C înseamnă al treilea element al matricei C, adică numărul 12).

Exemplul 2 Considerăm o matrice bidimensională B (matricea B) a cărei valoare este un tabel de numere întregi:

Descrierea acestei matrice este următoarea:

b de număr întreg;

Aici b este numele matricei, primul index este numărul rândului și ia valori de la 1 la 2, al doilea este numărul coloanei și ia valori de la 1 la 4. După anumite valori ale indexului, puteți selecta o componentă de matrice specifică (de exemplu, b înseamnă un element de tabel în primul rând și a treia coloană, adică numărul -4).

Indecșii pot fi expresii arbitrare, corespunzătoare tipului de indecși din declarația matrice:

a: matrice de real;

a[(i+1)*2]:= 24;

Setul de operații asupra elementelor matrice este complet determinat de tipul acestor elemente.

tip șir. Tip șir - un set de șiruri de caractere de lungime arbitrară (de la zero la un număr dat). Variabilele de tip șir sunt descrise folosind un cuvânt de serviciu şir:

b: şir ;

Particularitati:

– valoarea unei variabile șir poate fi introdusă cu ajutorul tastaturii, atribuită într-o instrucțiune de atribuire, citită dintr-un fișier. În acest caz, lungimea șirului introdus poate fi orice (mai mică decât dimensiunea specificată, egală cu dimensiunea sau mai mare, în acest din urmă caz, caracterele suplimentare sunt eliminate); a:= 'Rezultate';

– este permisă utilizarea operației de concatenare în operatorul de atribuire, deoarece șirurile își pot modifica dinamic lungimea: a:= a + ‘calculări’;

– lungimea maximă a unei variabile șir este de 255 de caractere, această indicație de lungime poate fi omisă:

A: şir;

a1: şir ;

Variabilele a și a1 sunt aceleași (descriere echivalentă).

- memoria pentru variabilele de tip șir este alocată la maximum, dar este folosită doar o parte din memorie care este efectiv ocupată de caracterele șirului în momentul de față. Pentru a descrie o variabilă șir de lungime n, se folosesc n + 1 octeți de memorie: n octeți - pentru a stoca caracterele șirului, n + 1 --al-lea octet - pentru a stoca lungimea curentă.

– operațiunile de comparare sunt definite pe valorile tipurilor de șir:< <= > >= = <>. Un șir scurt este întotdeauna mai puțin decât unul lung. Dacă șirurile sunt de aceeași lungime, atunci codurile de caractere sunt comparate.

– accesul la elementele individuale ale unui șir este posibil în același mod ca și accesul la elementele matricei: a, a. Parantezele pătrate indică numărul elementului liniei.

Proceduri și funcții concentrate pe lucrul cu șiruri.

concat (s1, s2,…)- funcția de îmbinare a șirurilor, s1, s2,…- linii, numărul de linii poate fi arbitrar. Rezultatul funcției este un șir. Dacă șirul rezultat este mai lung de 255 de caractere, atunci șirul este trunchiat la 255 de caractere.

copie(e, index, numărare)– funcția de extragere a unui șir din șirul sursă s lung numara caractere care încep cu numărul caracterului index.

ștergere(e, indexare, numărare) este procedura de scoatere din șirul s a unui subșir de lungime numara caractere, începând cu un caracter cu un număr index.

insert (s1, s2, index)- procedura de inserare a liniei s1într-o sfoară s2, începând cu un caracter cu un număr index.

lungime(i)– funcție de determinare a lungimii curente a șirului, returnează un număr egal cu lungimea curentă a șirului.

poziție (s1, s2)- funcția de căutare într-un șir s2 subșiruri s1. returnează numărul de poziție al primului caracter al unui subșir s1în linie s2(sau 0 dacă această linie nu există).

val(st, x, cod)– procedura de conversie a sirului s intr-un intreg sau variabila reala X. Parametru cod conține 0 dacă conversia a avut succes (și în X este plasat rezultatul conversiei), sau numărul de poziție al șirului în care a fost găsit caracterul eronat (în acest caz, valoarea X nu se schimba).

Compatibilitate și conversie de tip. Turbo Pascal este un limbaj tipizat. Este construit pe baza respectării stricte a conceptului de tipuri, conform căruia toate operațiile utilizate în limbaj sunt definite numai pe operanzi de tipuri compatibile.

Două tipuri sunt considerate compatibile dacă:

- sunt ambele de acelasi tip;

ambele sunt reale;

- ambele sunt intacte

– un tip este un tip de interval de al doilea tip;

– ambele sunt tipuri de intervale de același tip de bază;

– ambele sunt mulţimi compuse din elemente de acelaşi tip de bază;

– ambele sunt șiruri de caractere împachetate (definite cu un cuvânt împachetat anterior) de aceeași lungime maximă;

- unul este un șir de tip, iar celălalt este un șir de tip sau caracter;

- un tip este orice pointer, iar celălalt este un pointer către un obiect înrudit;

– ambele sunt tipuri procedurale cu același tip de rezultat (pentru un tip de funcție), numărul de parametri și tipul de parametri corespunzători reciproc.

Compatibilitatea tipurilor capătă o semnificație specială în declarațiile de atribuire. Fie t1 tipul variabilei și t2 tipul expresiei, adică atribuirea este t1:=t2. Această atribuire este posibilă în următoarele cazuri:

– t1 și t2 sunt de același tip, iar acest tip nu se aplică fișierelor, marilor de fișiere, înregistrărilor care conțin câmpuri de fișiere sau marilor de astfel de înregistrări;

– t1 și t2 sunt tipuri ordinale compatibile, iar valoarea lui t2 se află în intervalul de valori posibile ale lui t1;

– t1 și t2 sunt tipuri reale, iar valoarea lui t2 se află în intervalul de valori posibile ale lui t1;

– t1 este un tip real și t2 este un tip întreg;

– t1 – șir și t2 – simbol;

– t1 este un șir și t2 este un șir împachetat;

– t1 și t2 sunt șiruri ambalate compatibile;

– t1 și t2 sunt mulțimi compatibile și toți membrii lui t2 aparțin mulțimii de valori posibile ale lui t1;

– t1 și t2 sunt pointeri compatibili;

– t1 și t2 sunt tipuri procedurale compatibile;

– t1 este un obiect și t2 este copilul său.

Într-un program, datele de un tip pot fi convertite în date de alt tip. O astfel de conversie poate fi explicită sau implicită.

Conversia de tip explicit apelează funcții speciale de conversie ale căror argumente sunt de un tip și ale căror valori sunt de alt tip. Un exemplu sunt funcțiile deja luate în considerare ord, trunc, round, chr.

Conversia implicită este posibilă numai în două cazuri:

- in expresiile formate din variabile reale si intregi, acestea din urma sunt convertite automat intr-un tip real, iar intreaga expresie in ansamblu capata tip real;

- aceeași zonă de memorie este tratată alternativ ca conținând date de unul sau altul tip (combinație de date de diferite tipuri în memorie).

Conceptul de tip este unul dintre conceptele fundamentale ale oricărui limbaj de programare. Obiectele (constante, variabile, funcții, expresii) pe care programul operează sunt de un anumit tip.

Tip este setul de valori pe care obiectele programului le pot lua și setul de operații permise asupra acestor valori.

De exemplu, valorile 1 și 2 sunt de tip întreg, pot fi adunate, înmulțite și pot fi efectuate alte operații aritmetice. Semnificațiile „monitor” și „Pascal” sunt de natură lingvistică, au propriul set de operații valide. În cele mai frecvent utilizate limbi, pot fi folosite numai tipuri bine definite, cunoscute. Pascal, împreună cu tipurile standard găsite în alte limbaje de nivel înalt, permite programatorului să-și creeze propriile tipuri.

Toate tipurile permise în limba Pascal sunt împărțite în două grupuri mari: simplu și complex (structurat).

Tip Gamă Mantissa, semne Memoria necesară (octeți)
REAL 2,9*10E-39..1,7*10E38 11-12
SINGUR 1,5*10E-45..3,4*10E38 7-8
DUBLA 5.0*10E-324..1.7*10E308 15-16
EXTINS 1,9*10E-4951..1,1*10E4932 19-20
COMP -2E+63+1..2E+63-1 10-20

Utilizarea eficientă a tipurilor SINGLE, DOUBLE, EXTEND, COMP este posibilă numai atunci când este inclusă directiva ($N+). În mod implicit, este în starea oprită. Pentru a rezolva problemele de inginerie și economice, valorile de tip REAL sunt suficiente.

Exemplu

Var Res, Summa, Itog: real;

Bulevski tipul de date este descris de identificatorul BOOLEAN. Variabilele și constantele de acest tip pot lua doar una din două valori: TRUE (adevărat) sau FALSE (fals).

Exemplu

Var Sel1, Sel2: boolean;

A,B,C,D: boolean;

Expresiile de tip boolean ocupă 1 octet de memorie și sunt folosite în expresii logice și relaționale, precum și pentru a controla ordinea de execuție a instrucțiunilor programului.

Literal (caracter) tipul este descris de identificatorul standard CHAR. Constantele și variabilele de acest tip pot lua una dintre valorile tabelului de coduri ASCII. Valoarea unei constante sau variabile de acest tip este inclusă în apostrofe.

De exemplu, Var Bukva, Znak, Simbol: char;

Litera:='A'; Semn:='+'; Simbol:='!'

Variabilele de tip caracter ocupă 1 octet în memorie. Utilizarea datelor de tip char în expresii aritmetice este interzisă. Operațiunile de comparare pot fi aplicate valorilor literale, al căror rezultat depinde de numărul variabilei sau constantei literale din tabelul de coduri.

Pe lângă tipurile de date standard, Pascal acceptă tipuri scalare, definit de utilizator. Acestea includ enumerabilȘi interval tipuri . Aceste tipuri de date ocupă 1 octet de memorie, astfel încât orice tip definit de utilizator nu poate conține mai mult de 255 de elemente. Utilizarea lor îmbunătățește semnificativ vizibilitatea programului, facilitează găsirea erorilor și economisește memorie.

Tip enumerat este specificat direct prin listarea tuturor valorilor pe care le poate lua o variabilă de un anumit tip. Valorile individuale sunt separate prin virgule, iar întreaga listă este inclusă în paranteze.

Format

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

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

Exemplu

Tip Sezon =(Primăvara, Vara, Toamna, Iarna);

Var S1, S2: Sezon;

Toamna: (septembrie, octombrie, noiembrie);

În acest exemplu, este afișat tipul de date declarat explicit al utilizatorului sezon. Semnificațiile lor sunt determinate - denumirile anotimpurilor. Variabilele S1 și S2 pot lua doar una dintre valorile enumerate. Încercarea de a le atribui orice altă valoare va cauza o întrerupere a software-ului. Al treilea tip de enumerare este anonim (nu are nume) și este specificat prin enumerarea valorilor în secțiunea Var. Toamna este o variabilă de acest tip și poate lua valorile Septembrie, Octombrie, Nowember. Astfel, se poate da orice tip, dar acest lucru nu este întotdeauna acceptabil. Prima modalitate este cu siguranță mai de înțeles și mai în concordanță cu natura limbajului Pascal.

tip de interval vă permite să setați două constante care definesc limitele intervalului de valori pentru această variabilă. Compilatorul generează rutine de verificare pentru fiecare operație pe o variabilă de tip interval care determină dacă valoarea variabilei rămâne în intervalul specificat pentru aceasta. Ambele constante trebuie să aparțină unuia dintre tipurile standard, cu excepția reală. Valoarea primei constante trebuie să fie neapărat mai mică decât valoarea celei de-a doua.

Format

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

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

Exemplu

Tip Zile = 1.. 31;

Var Work_d, Free_d: Zile;

În acest exemplu, variabilele Work_d, Free_d sunt de tip zileși poate lua orice valoare din intervalul 1 . . 31.

În afara intervalului declanșează o întrerupere software.

Puteți defini un tip de interval specificând limitele intervalului nu prin valori constante, ci după numele acestora:

Const Min = 1; max=31;

Tip Zile = Min .. Max;

Var Work_d, Free_d: Zile;

Tipuri structurate datele se bazează pe tipuri scalare și pot conține diverse combinații ale acestora. Ele definesc un set ordonat de elemente scalare și se caracterizează prin tipul componentelor lor. Pascal oferă următoarele tipuri structurate date:

linie - o secvență de caractere închise în apostrofe;

matrice - tip de date structurate constând dintr-un număr fix de elemente de același tip, accesate prin index ;

o multime de - un set de obiecte selectate în funcție de un anumit atribut sau grup de atribute, care poate fi considerat ca un întreg;

record - un set de un număr fix de componente de diferite tipuri;

fişier- o succesiune de componente de același tip și aceeași lungime.

Două tipuri mai structurate - procedural și tip obiect (obiectiv) - sunt greu de asociat cu datele într-o reprezentare convențională.

Poza 1- Un set de tipuri de bază ale limbajului Pascal

Top articole similare