Tipuri de date cuvinte în Pascal. Tipuri de date ordinale în Pascal. Tipuri de date ordinale

3.2. Tipuri de date simple în Turbo Pascal 7

Un tip simplu definește un set ordonat de valori ale parametrilor. ÎN Turbo Pascal Există următoarele grupuri de tipuri simple:

  • tipuri de numere întregi;
  • tip boolean;
  • tip de caracter;
  • tip enumerat;
  • tip-gamă;
  • tipuri reale.

Toate tipurile simple, cu excepția tipurilor reale, sunt numite tipuri ordinale. Pentru cantitățile de tipuri ordinale, sunt definite proceduri și funcții standard: Dec, Inc, Ord, Pred, Succ (vezi secțiunea 13.1).

3.2.1. Tipuri întregi

Spre deosebire de Pascal, care definește un singur tip întreg, Integer, Turbo Pascal are cinci tipuri de întregi standard: Shortint, Integer, Longint, Byte, Word. Caracteristicile acestor tipuri sunt prezentate în tabel. 2.

Tabelul 2. Tipuri de date întregi

Tip Gamă Format Dimensiunea în octeți
Shortint -128 .. 127 Simbolic 1
Întreg -32768 .. 32767 Simbolic 2
Longint -2147483648 .. 2147483647 Simbolic 4
octet 0 .. 255 Nesemnat 1
Cuvânt 0 .. 65535 Nesemnat 2

3.2.2. tip boolean

Tipul boolean standard (dimensiune - 1 octet) este un tip de date, din care orice element poate lua doar două valori: True și False. În acest caz, sunt valabile următoarele condiții:
Ord fals (fals) = 0
Ord (Adevărat) = 1
Succ (Fals) = Adevărat
Pred (Adevărat) = Fals

Turbo Pascal 7.0 a adăugat încă trei tipuri logice ByteBool (dimensiune - 1 octet), WordBool (dimensiune - 2 octeți) și LongBool (dimensiune - 4 octeți). Au fost introduse pentru unificarea cu alte limbaje de programare și cu Mediul Windows. Diferența lor față de tip standard Boolean este valoarea reală a parametrului de acest tip, corespunzătoare valorii True. Pentru toate tipurile logice, valoarea False corespunde numărului 0, scris în numărul corespunzător de octeți. Valoarea True pentru tipul boolean corespunde cu numărul 1 scris în octetul său, iar pentru alte tipuri valoarea True corespunde oricărui număr, altul decât zero (deși funcția Ord în acest caz dă valoarea 1).

3.2.3. Tip de caracter

Tipul de caracter standard definit de Char Set complet caractere ASCII. Funcția Ord dintr-o valoare de tip Char oferă codul caracterului corespunzător. Valorile tipului de caractere sunt comparate în funcție de codurile lor.

3.2.4. Tip enumerare

Un tip enumerat nu este standard și este definit de un set de identificatori cu care se pot potrivi valorile parametrilor. Lista de identificatori este indicată în paranteze, identificatorii sunt despărțiți prin virgule:

tip
= ();)

Este important în ce ordine sunt listați identificatorii la definirea unui tip, deoarece primul identificator este atribuit număr de serie 0, al doilea - 1 etc. Același identificator poate fi utilizat în definirea unui singur tip enumerat. Funcția Ord dintr-o valoare de tip enumerat oferă numărul ordinal al valorii sale.

Exemplu. Tip enumerat.

tip Operat = (Plus, Minus, Mult, Divide);

Tipul boolean este un caz special al tipului enumerat:

tip boolean = (fals, adevărat);

3.2.5. Tip-gamă

În orice tip ordinal, puteți selecta un subset de valori, definite de valorile minime și maxime, care include toate valorile tip original, situate în aceste limite, inclusiv limitele în sine. Acest subset definește un tip de interval. Tipul intervalului este specificat prin specificarea valorilor minime și maxime, separate prin două puncte:

tip = . . ;

Valoarea minimă la definirea acestui tip nu trebuie să fie mai mare decât cea maximă.

Exemplu. Definiția range types.

tip
Duzină = 1..12; (numerele de la 1 la 12)
AddSub = Plus..Minus; (operatii de adunare si scadere)

3.2.6. Tipuri reale

Spre deosebire de standardul limbajului Pascal, unde este definit un singur tip real Real, Turbo Pascal are cinci tipuri reale standard: Real, Single, Double, Extended, Comp. Pentru caracteristicile acestor tipuri, vezi tabelul. 3. Tabelul 3. Tipuri de date reale

Tip Gamă Numărul de cifre semnificative Dimensiunea în octeți
Real 2.9*10-39..1.7*1038 11-12 6
Singur 1.5*10-45..3.4*1038 7-8 4
Dubla 5.0*10-324.-1.7*10308 15-16 8
Extins 3.4*10-4932..1.1*104932 19-20 10
Comp -263+1..263-1 19-20 8

Tipul Comp este de fapt un tip întreg cu gamă extinsă, dar nu este considerat un tip ordinal.

Tipurile Single, Double, Extended și Comp pot fi utilizate în programe numai dacă există un coprocesor aritmetic sau dacă emulatorul coprocesorului este activat (vezi paragrafele 17.5.8 și 17.7.1).

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 reprezentare internă datele din memoria PC-ului.

În general limbajul Obiectul Pascal caracterizat printr-o structură ramificată a tipurilor de date (Fig. 1.1). Limbajul oferă un mecanism pentru crearea de noi tipuri, datorită căruia numărul total de tipuri utilizate într-un program poate fi atât de mare cât se dorește.

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

Constante reprezintă 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, ele își primesc valorile î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 cele patru capitole ulterioare oferă descriere detaliata toate tipurile.

1.1 Tipuri simple

Tipurile simple includ tipurile ordinale, reale și datetime.

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) tipuri întregi, logice, cu caractere, enumerate și intervale. Funcția Ord(x) poate fi aplicată la oricare dintre ele, care returnează numărul ordinal al valorii expresiei X.


Orez. 1.1 - Structura tipului 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 enumerabil tipuri oferă un număr întreg pozitiv în intervalul 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 de bază, deci rezultatul aplicării funcției ord(x) la acesta depinde de proprietățile acestui tip.

De asemenea, puteți aplica funcții la tipurile ordinale:

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

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

De exemplu, dacă un program definește o variabilă

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

Dacă ne imaginăm 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, iar succ (x) este nedefinit pentru capătul drept al acestui segment.

Tipuri întregi . Gama de valori posibile ale tipurilor întregi depinde de reprezentarea lor internă, care poate fi unul, doi, patru sau opt octeți. În tabel 1.1 arată 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 Gama de valori
Cardinal 4 0. .. 2 147 483 647
octet 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 au fost introduse pentru prima dată în versiunea 4 și tipurile SmallintȘi Cardinal nu este disponibil în Delphi 1. Tastați î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, ar trebui să vă ghidați după „imbricarea” tipurilor, adică. oriunde poate fi folosit cuvânt, permis de utilizare octet(dar nu invers), în Longint„intră” Smallint, care la rândul său include Shortint .

Lista procedurilor și funcțiilor aplicabile tipuri integrale, este dat în tabel. 1.2. Literele b, s, w, i, l denotă expresii de următoarele tipuri: octet , 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 corespunzătoare. Un parametru opțional este indicat între paranteze drepte.

Tabelul 1.2 - Proceduri standardși funcții aplicabile pentru tipuri î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) octet 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) La fel ca parametrul Returnează un număr pseudoaleator distribuit uniform în intervalul 0...(w-l)
sqr(x) X Returnează pătratul argumentului
schimb(i) Întreg Schimbă octeți într-un cuvânt
schimb(w) Cuvânt La fel

Când se operează cu numere întregi, tipul rezultatului va corespunde tipului operanzilor, iar dacă operanzii sunt de diferite tipuri de numere întregi - tip general, care include ambii operanzi. De exemplu, când operezi cu scurtăturăȘi cuvânt tipul comun va fi întreg. ÎN setari standard compilatorul Delphi nu produce cod care controlează posibila verificare valoarea este în afara intervalului acceptabil, ceea ce poate duce la neînțelegeri.

Tipuri booleene . Tipurile logice includ Boolean, ByteBool, Bool, wordBoolȘi LongBool. În Pascal standard, este definit doar tipul boolean, alte tipuri logice sunt introduse în Object Pascal pentru compatibilitate cu Windows: tipuri booleanȘi ByteBool fiecare ocupă un octet, BoolȘi WordBool- 2 octeți fiecare, LongBool- 4 octeți. Valorile booleene pot fi una dintre constantele predeclarate False sau True.

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

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

Ord(True) = -1, astfel încât aceste tipuri de operatori ar trebui să fie utilizați cu precauție! 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 buclă tip L din exemplul anterior cu boolean, bucla va rula și mesajul va apărea de două ori pe ecran. [Pentru versiunile Delphi 1 și 2 ord (True) =+1 pentru orice tip boolean.]

Tip de caracter . Valoarea unui tip de caracter este setul tuturor caracterelor PC. Fiecărui caracter i se atribuie un număr întreg în intervalul 0...255. Acest număr servește ca cod pentru reprezentarea internă a simbolului, este returnat de funcția ord.

Pentru codificare în Windows se folosește codul ANSI (numit după American National Standard Institute, institutul american de standardizare 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 diverse fonturi. Fonturi standard Windows Arial Cyr, Courier New Cyr și Times New Roman folosesc ultimele 64 de coduri (de la 192 la 256) pentru a reprezenta caractere chirilice (fără literele „ё” și „Ё”): „A”... „Za” sunt codificate cu valorile 192.. 223, „a”... „i” - 224...255. Simbolurile „Ё” și „е” au codurile 168 și, respectiv, 184.

Tabelul 1.3 - Codificarea caracterelor în conformitate cu standardul ANSI

Cod Simbol Cod. Simbol Cod. Simbol Cod Simbol
0 NUL 32 B.L. 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" B.S. 40 ( 72 N 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 N.A.K. 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 E.M. 57 9 89 Y 121 U
26 SUB 58 : 90 Z .122 z
27 ESC 59 ; 91 t 123 {
28 FS 60 < 92 \ 124 1
29 G.S. 61 = 93 ] 125 }
30 R.S. 62 > 94 L 126 ~
31 NE 63 F 95 127 r

Caracterele cu codurile 0...31 se referă la coduri de service. Dacă aceste coduri sunt folosite în textul caracterelor programului, ele sunt considerate spații albe.

A tasta char operațiunile relaționale sunt aplicabile, precum și funcțiile încorporate:

Char (c)- funcția de tip char; convertește o expresie în tip octetîntr-un simbol și îl returnează cu valoarea sa;

UpCase(CH)- funcția de tip char; se intoarce majusculă, dacă сн - litere mici literă latină, V in caz contrar returnează simbolul сн însuși (pentru chirilic returnează caracterul original).

Tip de enumerare . Un tip enumerat este specificat printr-o enumerare a valorilor pe care le poate primi. Fiecare valoare este denumită printr-un identificator și se află într-o listă încadrată parantezele, De exemplu:

culori = (rosu, alb, albastru);

Utilizarea tipurilor enumerate face programele mai vizuale.

Corespondența dintre valorile unui tip enumerat și numerele ordinale ale acestor valori se stabilește prin ordinea de enumerare: prima valoare din listă primește numărul ordinal 0, a doua - 1 etc. Capacitatea maximă de un tip enumerat este de 65536 de valori, deci de fapt tipul enumerat specifică un subset al întregului tip cuvântși poate fi considerată ca o declarație compactă a unui grup de constante întregi cu valori 0, 1 etc.

Utilizarea tipurilor enumerate crește fiabilitatea programelor, permițându-vă să controlați valorile pe care le primesc variabilele corespunzătoare. Obiectul Pascal permite conversia inversă: orice expresie de tip Cuvânt poate fi convertit într-o valoare a unui tip enumerat, cu excepția cazului în care valoarea expresiei întregi depășește cardinalitatea acelui tip. Această conversie se realizează prin utilizarea unei funcții declarate automat cu numele tipului enumerat.

Tip-gamă . Un tip de interval este un subset propriu tip de bază, care poate fi orice tip ordinal, cu excepția unui tip de interval.

Un tip de interval este definit de limitele valorilor sale în cadrul tipului de bază:

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

Aici<мин. знач. > - valoarea minima tip-gamă;<макс. знач. >- valoarea sa maximă.

Tipul intervalului nu trebuie să fie descris în secțiunea tip, dar poate fi specificat direct la declararea variabilei.

Când determinați un tip de interval, trebuie să urmați următoarele reguli:

două caractere „..” sunt tratate ca un singur caracter, deci nu sunt permise spații între ele; marginea din stânga a intervalului nu trebuie să depășească marginea din dreapta.

Un tip de interval moștenește toate proprietățile tipului său de bază, dar cu limitările puterii sale mai mici. În special, dacă este definită o variabilă.

ÎN bibliotecă standard Obiectul Pascal include două funcții care acceptă lucrul cu tipuri de intervale:

Ridicat(x)- se intoarce valoare maximă intervalul de tip căruia îi aparține variabila x;

Scăzut(x)- returnează valoarea minimă a tipului intervalului.

1.1.2 Tipuri reale

Spre deosebire de tipurile ordinale, ale căror valori sunt întotdeauna mapate la o serie de numere întregi și, prin urmare, sunt reprezentate cu absolut exactitate în PC, valorile tipurilor reale definesc un număr arbitrar doar cu o precizie finită în funcție de formatul intern al numărului real. .

Tabelul 1.4 - Tipuri reale

ÎN Versiuni anterioare Delphi 1...3 tip Real a ocupat 6 octeți și a avut un interval de valori de la 2,9*10-39 la 1,7*1038. În versiunile 4 și 5, acest tip este echivalent cu tipul Dubla. Dacă este necesar (din motive de compatibilitate), utilizați 6 octeți Real, trebuie să specificați o directivă de compilator (SREALCOMPATIBILITY ON).

După cum se vede din tabel. 1.4, un număr real din Object Pascal ocupă de la 4 până la 10 octeți alăturați și are următoarea structură în memoria PC.

Aici s este cifra semnului numărului; e - parte exponenţială; conține ordine binară; m este mantisa numărului.

mantisa m are lungimea de 23 (pentru singur) până la 63 (pentru Extins) biți binari, care asigură o precizie de 7...8 pt singur si 19...20 pt Extins cifre zecimale. Punctul zecimal (virgula) este implicat înaintea cifrei din stânga (cea mai semnificativă) a mantisei, dar atunci când se operează pe un număr, poziția acestuia 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ă).

Rețineți că coprocesorul aritmetic procesează întotdeauna numerele în format Extins, iar celelalte trei tipuri reale în acest caz sunt obținute prin simpla trunchiere a rezultatelor la dimensiunile ceruteși sunt folosite în principal pentru a economisi memorie.

Tipurile ocupă o poziție specială în Object Pascal compȘi Valută, care sunt tratate ca numere reale cu părți fracționale de lungime fixă: in comp partea fracționată are o lungime de 0 cifre, adică pur și simplu lipsește, în valută lungimea părții fracționale este de 4 zecimale. De fapt, ambele tipuri definesc un întreg mare cu semn care stochează 19...20 de cifre zecimale semnificative (intern ele ocupă 8 octeți adiacenți). În același timp, în expresii compȘi valută pe deplin compatibil cu oricare altul tipuri reale: toate operatiile reale sunt definite pe ele, pot fi folosite ca argumente functii matematice etc. Domeniul de aplicare cel mai potrivit pentru aceste tipuri este contabilitatea.

1.1.3 Tip dată-oră

Tipul datetime este definit de un identificator standard TDateTimeși este conceput pentru a stoca simultan atât data, cât și ora. În reprezentarea internă ocupă 8 octeți și similar valută este un număr real cu o parte fracțională fixă: partea întreagă a numărului stochează data, iar partea fracțională stochează ora. Data este definită ca numărul de zile care au trecut de la 30 decembrie 1899, iar ora ca fracțiunea de zi care a trecut de la 0 ore, deci valoarea 36444,837 corespunde datei 10/11/1999 și orei. 20:05. Numărul de zile poate fi negativ, dar valorile mai mici decât -693594 (corespunzătoare datei 00.00.0000 de la Nașterea Domnului Hristos) sunt ignorate de funcțiile de conversie a unei date într-un tip șir.

Mai sus tipul de date TDateTime aceleași operații sunt definite ca pe numerele reale, iar expresiile de acest tip pot implica constante și variabile de tipuri întregi și reale.

Pentru că tipul TDateTime compatibil cu formatul numere reale, puteți determina cu ușurință o dată care este cu câteva zile înainte sau înapoi față de una dată: pentru a face acest lucru, este suficient să adăugați sau să scădeți numărul întreg dorit din data dată, respectiv.

1.2 Tipuri structurate

Oricare dintre tipuri structurate(iar în Object Pascal sunt patru dintre ele: matrice, înregistrări, seturi și fișiere) se caracterizează prin multiplicitatea elementelor care formează acest tip. Fiecare element, la rândul său, poate aparține unui tip structurat, ceea ce ne permite să vorbim despre posibila imbricare de tipuri. Obiectul Pascal permite o adâncime arbitrară de imbricare a tipurilor, dar lungimea totală a oricăruia dintre ele în reprezentarea internă nu trebuie să depășească 2 GB.

În scopuri de compatibilitate Pascal standard Obiectul Pascal permite ca un cuvânt rezervat să fie plasat înaintea unei declarații de tip structurat bătătorit, indicând compilatorului să salveze ori de câte ori este posibil memoria alocată pentru obiectele de tip structurat; dar compilatorul ignoră de fapt această instrucțiune: „împachetarea” datelor în Object Pascal se face automat oriunde este posibil.

1.2.1 Matrice

Matricele din Object Pascal sunt în multe privințe similare cu tipurile de date similare din alte limbaje de programare. Trăsătură distinctivă matrice este că toate componentele lor sunt date de același tip (eventual structurate). Aceste componente pot fi ușor organizate și oricare dintre ele poate fi accesată pur și simplu prin specificarea numărului său de serie.

Descrierea tipului de matrice este specificată după cum urmează:

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

Aici<имя типа>- identificator corect; matrice, de- cuvinte rezervate (array, from);<сп.инд.типов>- o listă cu unul sau mai multe tipuri de index, separate prin virgule; parantezele pătrate care încadrează lista sunt o cerință de sintaxă;<тип>- orice tip de Object Pascal.

Orice tipuri ordinale cu o capacitate de cel mult 2 GB pot fi utilizate ca tipuri de index în Object Pascal (adică, cu excepția Cuvânt lungȘi Int64)

Adâncimea de imbricare a tipurilor structurate în general și, în consecință, a tablourilor, este arbitrară, astfel încât numărul de elemente din lista de tipuri de index (dimensiunea matricei) nu este limitat, totuși, lungimea totală a reprezentării interne a oricărui matricea nu poate fi mai mare de 2 GB. În memoria PC-ului, elementele matricei se succed în așa fel încât atunci când se deplasează de la adresele mici la cele mai mari, indexul din dreapta al matricei se schimbă cel mai rapid.

În Object Pascal, puteți utiliza un singur operator de atribuire pentru a transfera toate elementele unei matrice într-o altă matrice de același tip.

1.2.2 Înregistrări

Record este o structură de date formată dintr-un număr fix de componente numite câmpuri ale unei înregistrări. Spre deosebire de o matrice, componentele (câmpurile) unei înregistrări pot fi tipuri variate. Pentru a face posibilă referirea la una sau la alta componentă a unei înregistrări, câmpurile sunt denumite.

Structura unei declarații de tip post este:

<имятипа>=record<сп.полей>Sfârşit;

Aici<имя типа>- identificator corect; înregistrare/terminare- cuvinte rezervate (înregistrare, sfârșit);<сп.полей>- lista câmpurilor; este o succesiune de secțiuni ale unei înregistrări separate prin punct și virgulă.

Fiecare secțiune a unei înregistrări constă din unul sau mai mulți identificatori de câmp, separați prin virgule.

Oferi caz de, care deschide partea de variantă, seamănă superficial cu operatorul de selecție corespunzător, dar de fapt joacă doar rolul unui fel de cuvânt de serviciu care denotă începutul părții de variantă. De aceea la sfârșitul părții de variantă nu trebuie să puneți Sfârşit ca un cuplu să caz de. (Deoarece partea de variantă este întotdeauna ultima din înregistrare, aceasta este în continuare urmată de sfârșit, dar numai ca o pereche de înregistrat). Tasta de selectare a propoziției caz de este ignorat efectiv de compilator: singura cerință pentru el în Object Pascal este ca cheia să definească un tip ordinal standard sau predeclarat.

Numele câmpurilor trebuie să fie unice în înregistrarea în care sunt declarate, totuși, dacă înregistrările conțin câmpuri de înregistrare, adică sunt imbricate unele în altele, numele pot fi repetate la diferite niveluri de imbricare.

1.2.3 Seturi

Seturi - acestea sunt seturi de similare logic prieten înrudit cu obiecte prietene. Natura relațiilor dintre obiecte este doar implicată de programator și nu este controlată în niciun fel de Object Pascal. Numărul de elemente incluse într-o mulțime poate varia de la 0 la 256 (un set care nu conține elemente se numește gol). Este inconstanța numărului de elemente ale acestora care se deosebește de matrice și înregistrări.

Două mulțimi sunt considerate echivalente dacă și numai dacă toate elementele lor sunt aceleași, iar ordinea elementelor din mulțime este indiferentă. Dacă toate elementele unui set sunt incluse și în altul, se spune că primul set este inclus în al doilea. Un set gol este inclus în orice alt set.

Descrierea tipului de set este:

<имя типа>= set de<базовый тип>;

Aici<имя типа>- identificator corect; set de- cuvinte rezervate (set, of);<базовый тип>- tipul de bază al elementelor de mulțime, care poate fi orice tip ordinal, cu excepția Word, Integer, Longint, Int64 .

Pentru a defini o mulțime se folosește așa-numitul constructor de mulțimi: o listă de specificații ale elementelor mulțimii, separate prin virgule; lista este încadrată paranteza patrata. Specificațiile elementului pot fi constante sau expresii ale unui tip de bază sau un tip de interval de același tip de bază.

Structura internă a mulțimii este astfel încât fiecăruia dintre elementele sale i se atribuie o cifră binară (un bit); dacă un element este inclus într-un set, bitul corespunzător are valoarea 1, în caz contrar - 0. În același timp, unitatea minimă de memorie este un octet care conține 8 biți, astfel încât compilatorul a alocat un octet seților și ca urmare puterea fiecăruia dintre ele a devenit egală cu 8 elemente. Capacitatea maximă a setului este de 256 de elemente. Pentru astfel de seturi, compilatorul alocă 16 octeți adiacenți.

Și încă un experiment: modificați intervalul tipului de bază la 1..256. Deși capacitatea de acest tip este de 256 de elemente, atunci când se încearcă compilarea unui program compilatorul va raporta eroarea: Seturile pot avea cel mult 256 de elemente deoarece numerotarea elementelor setului începe de la zero indiferent de limita inferioară declarată în program. Compilatorul permite ca tipul de bază să fie un tip de interval întreg cu o limită minimă de 0 și un maxim de 255 sau orice tip enumerat cu cel mult 256 de elemente ( putere maxima tip enumerat - 65536 elemente).

1.3 șiruri

Următoarele tipuri sunt utilizate pentru procesarea textului în Object Pascal:

sfoară scurtă shortString sau șir [n], unde n<= 255;

sfoară lungă şir ;

linie largă WideString ;

șir de terminale nul pchar .

Ceea ce au în comun aceste tipuri este că fiecare șir este tratat ca o matrice unidimensională de caractere, numărul de caractere în care se poate modifica într-un program care rulează: pentru șirul [n], lungimea șirului se modifică de la 0 la n, pentru şirȘi pchar- de la 0 la 2 GB.

Pascal standard folosește doar șiruri scurte șir[n]. În memorie, unui astfel de șir îi sunt alocate n+i octeți, primul octet conține lungimea curentă a șirului, iar caracterele în sine sunt localizate începând de la al 2-lea octet. Deoarece lungimea șirului în acest caz este de un octet, lungimea maximă a unui șir scurt nu poate depăși 255 de caractere. Tipul standard este folosit pentru a declara un șir scurt de lungime maximă ShortString(echivalent Şir).

Windows folosește pe scară largă șiruri cu terminale nule, care sunt șiruri de caractere delimitate de caracterul #o. Lungimea maximă a unui astfel de șir este limitată doar de memoria disponibilă și poate fi foarte mare.

Un nou tip a fost introdus în versiunile pe 32 de biți ale Delphi şir, combinând avantajele ambelor tipuri. Când lucrați cu acest tip, memoria este alocată după cum este necesar (dinamic) și este limitată de memoria disponibilă disponibilă pentru program.

1.4 Indicatori și memorie dinamică

1.4.1 Memoria dinamică

Memoria dinamică- aceasta este RAM-ul PC-ului furnizat programului în timpul funcționării acestuia. Plasarea dinamică a datelor înseamnă utilizarea memoriei dinamice direct în timpul rulării programului. În schimb, alocarea statică se face de către compilatorul Object Pascal atunci când programul este compilat. În cazul plasării dinamice, nici tipul, nici cantitatea de date care trebuie plasate nu sunt cunoscute în avans.

1.4.2 Indicatoare

RAM PC este o colecție de celule pentru stocarea informațiilor - octeți, fiecare având propriul său număr. Aceste numere se numesc adrese, vă permit să accesați orice octet de memorie. Object Pascal oferă programatorului un mijloc flexibil de gestionare a memoriei dinamice - așa-numitele pointeri. Un pointer este o variabilă care conține adresa unui octet de memorie ca valoare. Folosind pointeri, puteți plasa oricare dintre tipurile de date cunoscute în Object Pascal în memoria dinamică. Doar unii dintre ei ( Byte, Char, ShortInt, Boolean) ocupă un octet în reprezentarea internă, restul - mai multe adiacente. Prin urmare, pointerul se adresează de fapt doar primului octet de date.

De obicei, un pointer este asociat cu un anumit tip de date. Vom numi astfel de indicatoare tastate. Pentru a declara un pointer tastat, utilizați pictograma ^, care este plasată în fața tipului corespunzător.

În Object Pascal, puteți declara un pointer fără a fi nevoie să îl asociați cu niciun tip de date specific. Tipul standard este utilizat pentru aceasta indicator, De exemplu:

Pointerii de acest fel vor fi numiți netipați. Deoarece pointerii netipați nu sunt asociați cu un anumit tip, ele pot fi utilizate pentru a aloca dinamic date a căror structură și tip se modifică pe măsură ce programul rulează.

După cum am menționat, valorile pointerilor sunt adresele variabilelor din memorie, așa că te-ai aștepta ca valoarea unui pointer să poată fi transmisă altuia. De fapt, acest lucru nu este adevărat. În Object Pascal, puteți trece valori numai între pointerii asociați cu același tip de date.

1.4.3 Alocarea și eliberarea memoriei dinamice

Toată memoria dinamică din Object Pascal este tratată ca o matrice continuă de octeți, care se numește heap.

Memoria pentru orice variabilă alocată dinamic este alocată prin procedura New. Parametrul pentru apelarea acestei proceduri este un pointer tastat. Ca urmare a accesului, pointerul capătă o valoare corespunzătoare adresei de la care pot fi plasate datele. Valoarea către care indică pointerul, adică datele efective alocate heap-ului, este indicată de semnul ^, care este plasat imediat după indicator. Dacă nu există niciun semn ^ după indicator, atunci aceasta înseamnă adresa la care se află datele. Are sens să ne gândim din nou la ceea ce tocmai s-a spus: valoarea oricărui pointer este o adresă și pentru a indica că nu vorbim despre adresă, ci despre datele care se află la această adresă, se pune un ^ după pointer (uneori acesta este denumit pointer de dereferențiere).

Datele alocate dinamic pot fi folosite oriunde în program unde sunt valabile pentru constante și variabile de tipul adecvat

Memoria dinamică nu poate fi luată doar din grămadă, ci și returnată înapoi. Pentru a face acest lucru, utilizați procedura Dispose. De exemplu, operatori

Dispune (pJ);

Aruncă (pR);

va returna la heap memoria care a fost atribuită anterior pointerilor pJ și pR (vezi mai sus).

Rețineți că procedura Dispose (pPtr) nu modifică valoarea pointerului pPtr, ci doar returnează memoria asociată anterior cu acest pointer în heap. Cu toate acestea, reaplicarea procedurii la un pointer liber va duce la o eroare de rulare. Programatorul poate marca indicatorul eliberat cu cuvântul rezervat nil.

1.5 Tastați aliasuri

Pentru orice tip puteți declara câte aliasuri doriți. De exemplu:

TMyInteger = Integer;

În viitor, aliasul poate fi folosit în același mod ca tipul de bază:

Mylnt: TMyInteger;

Mylnt:= 2*Round(pi);

Aceste tipuri de alias-uri sunt de obicei folosite pentru a îmbunătăți vizibilitatea codului programului. Cu toate acestea, în Object Pascal puteți declara aliasuri puternic tastate adăugând tipul de cuvânt rezervat înaintea numelui tipului de bază:

TMyIntegerType = tip Integer;

MylntVar: TMyIntegerType;

Din punctul de vedere al compilatorului, aliasurile tipizate sunt compatibile cu tipul de bază în diverse tipuri de expresii, dar declară de fapt un nou tip de date, deci nu pot fi folosite ca parametri formali pentru apelarea subrutinelor în locul tipului de bază. Dacă, de exemplu, este declarată o procedură

function MylntFunc(APar: integer): Integer;

atunci un asemenea apel la ea

MylntFunc(MylntVar)

va fi considerat eronat de către compilator.

Alias-urile puternic tipizate forțează compilatorul să genereze informații de tip run-time (RTTI). Aceste informații sunt utilizate de obicei de mediul Delphi pentru a sprijini funcționarea diferitelor tipuri de editori.

Cele mai importante elemente ale unui program sunt variabilele. Ele influențează cursul evenimentelor din program în timpul executării acestuia. De exemplu, dacă nu am fi specificat valoarea variabilei Nume în , cui i-ar fi adresat rezultatul de salut din program?

Variabilele pot conține date complet diferite. De exemplu, o variabilă ar putea stoca numele cuiva, o alta ar putea stoca anul de naștere, o a treia ar putea stoca înălțimea acestuia etc. Astfel de date diferite sunt reprezentate de computer în moduri diferite. Numele este un șir de caractere, anul nașterii este un număr întreg, iar înălțimea este un număr real (de exemplu, înălțimea este de 1,72 m).

Modul în care un computer reprezintă datele este determinat de acestea tip. În plus, tipul de date determină ce acțiuni pot fi efectuate asupra datelor respective.

Principalele tipuri de date standard ale limbajului Turbo Pascal sunt enumerate mai jos:

  1. ÎNTREG– date întregi în intervalul de la –32768 la 32767, ocupând doi octeți în memorie;
  2. REAL– numere reale în intervalul de la 2,9´10 -39 (2,9E-39) la 1,7´10 38 (1,7E38), ocupă șase octeți;
  3. CHAR– caracter separat, un octet;
  4. ŞIR– un șir de caractere, numărul de caractere dintr-o linie (lungimea șirului) este limitat de numărul N între paranteze drepte, ocupă N+1 octeți (dacă nu este specificat numărul N, atunci lungimea maximă a liniei este 255 de caractere);
  5. BOOLEAN– tip logic, are două valori: FALSE (fals) și TRUE (adevărat), un octet.

Rețineți că tipurile INTEGER, CHAR și BOOLEAN sunt clasificate ca ordinal tipuri ordinale.

După cum probabil vă amintiți, atunci când descrieți o variabilă, după numele acesteia sunt plasate două puncte și apoi este indicat tipul. Dacă mai multe variabile au același tip, numele lor pot fi separate prin virgulă.

Un exemplu de descriere a variabilelor de diferite tipuri:

Delphi/Pascal

var a, b, c: întreg; suma: real; Alpha, Beta: char; S: șir; S_1: sfoară; t: boolean;

a, b, c: întreg;

suma: real;

Alpha, Beta: char;

S: sfoară[25];

S_1: sfoară;

t: boolean;

Rețineți că variabila S_1 este un șir de caractere, dar declarația sa nu specifică o lungime. În acest caz, compilatorul însuși stabilește lungimea maximă posibilă - 255 de caractere.

Există și alte tipuri de date predefinite pentru stocarea numerelor întregi și reale. Caracteristicile lor sunt prezentate în tabelele de mai jos. Comparați aceste tipuri cu tipurile INTEGER și REAL prezentate de asemenea în tabele.

Gamă

Dimensiunea în octeți

SCURTARE
ÎNTREG
LONGINT

2147483648 .. 2147483647

BYTE
CUVÂNT

Tipuri de date reale

Gamă

Numărul de cifre semnificative

Dimensiunea în octeți

REAL

2,9´10 -39 .. 1,7´10 3 8

SINGUR

1,5´10 – 45 .. 3,4´10 3 8

DUBLA

5,0´10 -3 24 .. 1,7´10 3 08

EXTINS

3,4´10 -4932 .. 1,1´10 49 32

COMP

2 63 +1 .. 2 63 -1

Ce tip de date să utilizați

Există atât de multe tipuri diferite, ați putea spune, deci pe care ar trebui să le folosiți?
Depinde de sarcina care ți-a fost atribuită. De exemplu, aveți nevoie de o variabilă în care veți stoca înălțimea unei anumite persoane (valoare reală): în acest caz, este suficient să folosiți tipul SINGUL. Dacă utilizați o variabilă pentru a număra numărul anumitor obiecte (o valoare întreagă pozitivă), atunci aflați dacă acest număr poate fi mai mare de 255, dacă nu, utilizați BYTE, dacă se poate, nu vă puteți descurca fără WORD și, în unele cazuri, cazurile LONGINT pot fi, de asemenea, necesare.

Pentru a afla mai multe despre diferitele tipuri, apăsați Shift+F1 în Turbo Pascal (va apărea o fereastră de index de ajutor), apoi selectați obiectul care vă interesează (de exemplu, tastați „type” sau „real”).

Conceptul de date este unul dintre cele cheie în programare și în informatică în general. În linii mari, datele în informatică sunt informații care se află într-o stare de stocare, procesare sau transmitere pe o anumită perioadă de timp. În mașinile Turing, informația are un tip, iar acesta, la rândul său, depinde de tipul de informație.

Tipurile de date în Pascal definesc valorile posibile ale variabilelor, constantelor, expresiilor și funcțiilor. Sunt încorporate și personalizate. Tipurile încorporate sunt inițial prezente în limbajul de programare, iar tipurile personalizate sunt create de programator.

Conform metodei de prezentare și prelucrare, tipurile de date sunt:

  • simplu
  • structurat
  • indicatoare
  • obiecte
  • proceduri

Acest articol va lua în considerare doar cele mai simple tipuri de date, deoarece în etapele inițiale ale antrenamentului, programul dvs. va fi mai ușor să se descurce fără, de exemplu, fișiere și înregistrări decât fără variabile întregi sau șir.

Tipul întreg

Aceasta include mai multe tipuri de numere întregi, care diferă în intervalul de valori, numărul de octeți alocați pentru stocarea lor și cuvântul cu care este declarat tipul.

Tip Gamă Dimensiunea în octeți
scurtătură -128…127 1
întreg -32 768…32 767 2
longint -2 147 483 648…2 147 483 647 4
octet 0…255 1
cuvânt 0…65 535 2

Puteți declara o variabilă întreagă în secțiunea Var, de exemplu:

Toate operațiile aritmetice și logice pot fi efectuate asupra variabilelor din această categorie, cu excepția diviziunii (/), care necesită un tip real. Se pot aplica și unele funcții și proceduri standard.

Tip real

În Pascal există următoarele tipuri de date reale:

Tip Gamă Memorie, octet Numărul de cifre
Real 2.9e-39 … 1.7e38 6 11-12
Singur 1.5e-45 … 3.4e38 4 7-8
Dubla 5.0e-324…1.7e308 8 15-16
Extins 3.4e-4932 … 1.1e493 10 19-20
Comp -9.2e63…(9.2e63)-1 8 19-20

Pot fi efectuate mai multe operații și funcții pe ele decât pe numere întregi. De exemplu, aceste funcții returnează un rezultat real:

sin(x) – sinus;

cos(x) – cosinus;

arctan(x) – arctangent;

ln(x) – logaritm natural;

sqrt(x) – rădăcină pătrată;

exp(x) – exponent;

tip boolean

O variabilă de tip de date boolean poate lua doar două valori: adevărat și fals. Aici, adevărat corespunde valorii 1, iar fals corespunde zero. Puteți declara o variabilă booleană astfel:

Operațiile de comparație și logice pot fi efectuate pe date de acest tip: not, and, or, xor.

Tip de caracter

Un tip de date caracter este o colecție de caractere utilizate într-un anumit computer. O variabilă de acest tip ia valoarea unuia dintre aceste caractere și ocupă 1 octet în memoria computerului. Cuvânt Char definește o valoare de acest tip. Există mai multe moduri de a scrie o variabilă caracter (sau constantă):

  1. ca un singur caracter închis în apostrofe: „W”, „V”, „p”;
  2. prin specificarea codului caracterului, a cărui valoare trebuie să fie în intervalul de la 0 la 255.
  3. folosind construcția ^K, unde K este codul caracterului de control. Valoarea lui K trebuie să fie cu 64 mai mare decât codul caracterului de control corespunzător.

Operațiunile relaționale și următoarele funcții sunt aplicabile valorilor unui tip de date caracter:

Succ(x)- returnează următorul caracter;

Pred(x)- returnează caracterul anterior;

Ord(x)- returnează valoarea codului caracterului;

Chr(x)- returnează valoarea unui simbol prin codul său;

UpCase(x)- convertește literele din intervalul ‘a’...’z’ în majuscule.

Pentru a lucra eficient cu tipul de caracter, vă recomand să utilizați .

Tip șir

Un șir în Pascal este o secvență de caractere închisă în apostrofe și este notat cu cuvântul Şir. Numărul de caractere (lungimea liniei) nu trebuie să depășească 255. Dacă lungimea liniei nu este specificată, se va determina automat 255 de caractere. Forma generală a unei declarații de variabile șir arată astfel:

Var<имя_переменной>:şir[<длина строки>];

Fiecare caracter dintr-o linie are propriul index (număr). Indicele primului octet este 0, dar nu stochează primul caracter, ci lungimea întregului șir, ceea ce înseamnă că o variabilă de acest tip va ocupa cu 1 octet mai mult decât numărul de variabile din ea. Numărul primului caracter este 1, de exemplu, dacă avem șirul S=‘stroka’, atunci S=s;. Într-una dintre lecțiile următoare, tipul de date șir va fi discutat mai detaliat.

Tip de date enumerate

Un tip de date enumerat reprezintă un număr limitat de identificatori. Acești identificatori sunt încadrați în paranteze și despărțiți prin virgule.

Tip Zi=(luni, marți, miercuri, joi, vineri, sâmbătă, duminică);

Variabila A poate lua numai valorile specificate în secțiunea Tip. De asemenea, puteți declara o variabilă de tip enumerat în secțiunea Var:

Var A: (luni, marți);

Operațiunilor relaționale sunt aplicabile acestui tip și este predeterminat acea zi de luni

Tip de date interval

Când este necesar să se specifice un interval de valori, atunci în astfel de situații se utilizează tipul de date interval. Construcția folosită pentru declarație este m..n, Unde m este valoarea minimă (inițială) și n– maxim (final); aici m și n sunt constante, care pot fi de tip întreg, caracter, enumerare sau boolean. Valorile tipului de interval pot fi descrise atât în ​​secțiunea de tipuri, cât și în secțiunea de descriere a variabilelor.

Forma generala:

TIP<имя_типа> = <мин. значение>..<макс. значение>;

Când descrieți o variabilă, trebuie să indicați tipul acesteia. Tipul unei variabile descrie setul de valori pe care îl poate lua și acțiunile care pot fi efectuate asupra acesteia. O declarație de tip specifică un identificator care reprezintă tipul.

Tipurile simple sunt împărțite în standard (ordinal) și enumerate (restrâns).

Tipuri standard

Turbo Pascal are patru tipuri standard încorporate: întreg, real, boolean și char.

Tip întreg (întreg)

Turbo Pascal are cinci tipuri de numere întregi încorporate: shortint, integer, longint, byte și word. Fiecare tip denotă un subset specific de numere întregi, așa cum se arată în tabelul următor.

Tipuri întregi încorporate.

Gamă

Format

8 biți semnați

16 biți semnați

2147483648 +2147483647

Semnat pe 32 de biți

8 biți nesemnați

16 biți nesemnați

Operațiile aritmetice pe operanzi de tip întreg sunt efectuate în conformitate cu următoarele reguli:

  1. Un tip de constantă întreg este un tip de număr întreg încorporat cu cel mai mic interval care include valoarea acelei constante întregi.
  2. În cazul unei operații binare (o operație care utilizează doi operanzi), ambii operanzi sunt convertiți în tipul lor comun înainte ca operația să fie efectuată asupra lor. Tipul comun este tipul întreg încorporat, cu cel mai mic interval care include toate valorile posibile ale ambelor tipuri. De exemplu, tipul obișnuit pentru un număr întreg și un număr întreg cu lungimea de octeți este întreg, iar tipul comun pentru un întreg și un număr întreg cu lungimea unui cuvânt este întreg lung. Acțiunea se realizează în funcție de precizia tipului generic, iar tipul rezultatului este tipul generic.
  3. Expresia din partea dreaptă a operatorului de atribuire este evaluată indiferent de mărimea variabilei din stânga.

Operații efectuate pe numere întregi:

„+” - adaos

„-“ - scădere

"*" - înmulțire

SQR - pătrat

DIV - renunță la partea fracțională după împărțire

MOD - obținerea restului întreg după împărțire

ABS - modul de număr

RANDOM(X) - obținerea unui număr aleatoriu de la 0 la X

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

Variabilele de tip întreg sunt descrise după cum urmează:

var lista de variabile: tip;

De exemplu: var а,р,n:integer;

Tip real (real)

Tipul real este un subset de numere reale care poate fi reprezentat în format virgulă mobilă cu un număr fix de cifre. Scrierea unei valori în format virgulă mobilă implică de obicei trei valori - m, b și e - astfel încât m*b e, unde b este întotdeauna 10 și m și e sunt valori întregi în intervalul real. Aceste valori ale lui m și e determină în continuare intervalul și precizia tipului real.

Există cinci tipuri de tipuri reale: reale, simple, duble, exnende, comp. Tipurile reale variază în intervalul și precizia valorilor asociate cu acestea

Interval și cifre zecimale pentru tipuri reale

Gamă

Numerele

2,9x10E-39 până la 1,7x10E 38

1,5x10E-45 până la 3,4x10E 38

5,0x10E-324 până la 1,7x10E 308

3,4x10E-493 până la 1,1x10E 403

2E 63 până la 2E 63

Operatii efectuate pe numere reale:

  • Toate operațiunile sunt valabile pentru numere întregi.
  • SQRT(x) este rădăcina pătrată a lui x.
  • SIN(X), COS(X), ARCTAN(X).
  • LN(X) este logaritmul natural.
  • EXP(X) este exponentul lui X (e x).
  • EXP(X*LN(A)) - exponentiație (A x).
  • Funcții de conversie a tipului:
    • TRUNC(X) - aruncă partea fracționată;
    • ROUND(X) - rotunjire.
  • Câteva reguli ale operațiilor aritmetice:
    • Dacă o operație aritmetică conține numere de tip real și întreg, atunci rezultatul va fi de tip real.
    • Toate componentele expresiei sunt scrise pe o singură linie.
    • Se folosesc doar paranteze.
    • Nu poți pune două semne aritmetice la rând.

Variabilele de tip real sunt descrise după cum urmează:

var lista de variabile: tip;

De exemplu:

var d,g,k:real ;

Tip de caracter (caracter)

Tipul char este orice caracter inclus în apostrofe. Pentru a reprezenta un apostrof ca variabilă caracter, trebuie să-l încadrați într-un apostrof: ''''.

Fiecare caracter are propriul său cod și număr. Numerele de serie ale cifrelor 0,1..9 sunt ordonate crescător. Numerele de serie ale literelor sunt, de asemenea, ordonate în ordine crescătoare, dar nu se succed neapărat.

Următoarele semne de comparație se aplică datelor de caractere:

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

De exemplu: „A”< ‘W’

Funcții care se aplică variabilelor caracter:

  1. ORD(X) - determină numărul de serie al simbolului X. ord (‘a’) =97 ;
  2. CHR(X) - identifică un caracter după număr. chr(97) =’a’;
  3. PRED(X) - returnează caracterul care precede caracterul X pred (‘B’) =’A’;
  4. SUCC(X) - returnează caracterul după caracterul X succ (‘A’) =’B’;

Tip de enumerare

Un tip de date enumerate este numit astfel deoarece este specificat ca o listă de constante într-o ordine strict definită și într-o cantitate strict definită. Un tip enumerat constă dintr-o listă de constante. Variabilele de acest tip pot lua valoarea oricăreia dintre aceste constante. Descrierea tipului de enumerare arată astfel:

Tip<имя типа>=(lista de constante) ; Var<имя переменной>:<имя типа>;

Unde<список констант>- acesta este un tip special de constante, specificate separate prin virgule și având propriul număr de serie, începând de la 0.

De exemplu:

tip direction=(nord, sud, vest, est) ; luna=(iunie, iulie, august, ianuarie) ; capacitate=(galeata, butoi, canistra, rezervor); var rotatie:directie; plecare:luna; volum:capacitate; var turn:(nord, sud, vest, est) ; plecare: (iunie, iulie, august, ianuarie) ; volum: (galeata, butoi, canistra, rezervor);

Puteți efectua următorii operatori de atribuire:

Rotatie:=sud; plecare:=august; volum:=rezervor;

dar nu poți face sarcini mixte:

Plecare:=sud; volum:=august;

Următoarele funcții se aplică variabilelor de tip enumerat:

1. ORD - număr de serie

2. PRED - element anterior

3. SUCC - element ulterior.

PRED (butoaie) = găleată; SUCC (sud) =vest; ORD (iulie) =1 ;

Variabilele de tip enumerat pot fi comparate deoarece sunt ordonate și numerotate. Deci expresiile: nord< юг, июнь < январь имеют значения TRUE, а юг>vest și tanc<бочка значение FАLSE.

Tip limitat

Dacă o variabilă nu acceptă toate valorile tipului său, ci doar într-un anumit interval, atunci poate fi considerată o variabilă de tip limitat. Fiecare tip constrâns este definit prin impunerea unei constrângeri asupra tipurilor de bază.

Este descris după cum urmează:

TIP<имя типа>=constant1 ..constant2

În acest caz, trebuie respectate următoarele reguli:

  1. Ambele constante mărginite trebuie să fie de același tip.
  2. Orice tip simplu, cu excepția realului, poate fi folosit ca tip de bază.
  3. Valoarea inițială la definirea unui tip limitat nu trebuie să fie mai mare decât valoarea finală.
indice de tip =0 ..63 ; litera=’a’...’z’; var char1,char2:litera; a,g:index ;

O puteți descrie imediat în secțiunea descriere a variabilei:

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

    un fel de recenzie „scurtă”... de parcă s-ar grăbi undeva