Tipuri de date Pascal. Tipuri de date în pascal

Lecția discută principalele tipuri de date standard în Pascal, conceptul de variabilă și constantă; explică modul de lucru cu operații aritmetice

Pascal este un limbaj de programare tipizat. Aceasta înseamnă că variabilele care stochează date sunt de un anumit tip de date. Acestea. programul trebuie să indice direct ce date pot fi stocate într-o anumită variabilă: date text, date numerice, dacă sunt numerice, apoi întregi sau fracționale etc. Acest lucru este necesar în primul rând pentru ca computerul să „știe” ce operațiuni pot fi efectuate cu aceste variabile și cum să le efectueze corect.

De exemplu, adăugarea de date text, sau așa cum este numită corect în programare - concatenare - este îmbinarea obișnuită a șirurilor de caractere, în timp ce adăugarea datelor numerice are loc bit cu bit, în plus, numerele fracționale și întregi sunt adăugate și în diferite moduri. moduri. Același lucru este valabil și pentru alte operațiuni.

Luați în considerare cele mai comune tipuri de date în Pascal.

Tipuri de date întregi în Pascal

Tip Gamă Memoria necesară (octeți)
octet 0..255 1
scurtătură -128..127 1
întreg -32768.. 32767 2
cuvânt 0..65535 2
longint -2147483648..2147483647 4

Trebuie avut în vedere faptul că atunci când scrieți programe în Pascal întreg(tradus din engleză ca număr întreg) este cel mai des folosit, deoarece intervalul de valori este cel mai solicitat. Dacă este nevoie de o gamă mai largă, utilizați longint(întreg lung, tradus din engleză întreg lung). Tip octet in Pascal se foloseste atunci cand nu este nevoie sa lucrezi cu valori negative, acelasi lucru este valabil si pentru tip cuvânt(doar intervalul de valori aici este mult mai mare).

Exemple de cum sunt descrise (declarate) variabilele în Pascal:

programul a1; varx,y:intger; (tip întreg) myname:string; (tip șir) începe x:=1; y:=x+16; numele meu:="Petru"; writeln ("nume: ",numele meu, ", vârsta: ", y) sfârșit.

Rezultat:
nume: Peter, vârsta: 17

Comentarii în Pascal

Atenție la cum Se folosesc comentarii Pascal. În exemplu, comentarii, i.e. textul serviciului care este „nu este vizibil” pentru compilator este inclus între acolade. De obicei, comentariile sunt făcute de programatori pentru a clarifica fragmentele de cod.

Sarcina 3. Populația Moscovei este de a = 9.000.000 de locuitori. Populația din Noul Vasyukov este egală cu b=1000 de locuitori. Scrieți un program care să determine diferența dintre numărul de locuitori dintre două orașe. Utilizați variabile

Tipuri de date reale în Pascal

Numerele reale în Pascal și în general în programare este numele numerelor fracționale.

Tip Gamă Memoria necesară (octeți)
real 2,9*10E-39..1,7*10E38 6
singur 1,5 * 10 E-45 .. 3,4 * 10E38 4
dubla 5*10E-324..1.7*10E308 8
extins 1,9 * 10E-4951 .. 1,1 * 10E4932 10

Tipul real în Pascal este cel mai des folosit dintre tipurile reale.

Mai sus au fost prezentate tipuri de date simple în Pascal, care includ:

  • Ordinal
  • întreg
  • joc de inteligență
  • Simbolic
  • enumerate
  • Interval
  • Real

Pentru a scoate valorile variabilelor de tip real, se utilizează de obicei ieșirea formatată:

  • formatul folosește fie un număr, ceea ce înseamnă numărul de poziții atribuite acestui număr în formă exponențială;
  • p:=1234,6789; WriteIn(p:6:2); (1234,68)

    Alături de tipurile simple, limbajul mai folosește tipuri de date structurate și indicatori, care va face obiectul lecțiilor ulterioare Pascal.

    Constante în Pascal

    Adesea în program se știe dinainte că variabila va lua o anumită valoare și nu o va modifica pe toată durata execuției întregului program. În acest caz, trebuie să utilizați o constantă.

    Declarația unei constante în Pascal are loc înainte de declararea variabilelor (înainte de cuvântul de serviciu var) și arată astfel:

    Un exemplu de descriere constantă în Pascal:

    1 2 3 4 5 6 const x= 17 ; var numele meu: șir ; începe numele meu: = "Petru" ; writeln ("nume: " , numele meu, ", vârsta: " , x) sfârșit .

    const x=17; varmyname:șir; începe numele meu:="Petru"; writeln ("nume: ", numele meu, ", vârsta: ", x) sfârșit.

    Ieșire „frumoasă” de numere întregi și numere reale

    Pentru a lăsa indentări după ieșirea valorilor variabilelor, astfel încât valorile să nu se „contopească” între ele, se obișnuiește să se indice prin două puncte câte caractere trebuie furnizate pentru ieșire a valorii:


    Operații aritmetice în Pascal

    Ordinea operațiunilor

    1. evaluarea expresiilor din paranteze;
    2. înmulțire, împărțire, div, mod de la stânga la dreapta;
    3. adunare si scadere de la stanga la dreapta.

    Proceduri și funcții aritmetice standard Pascal

    Aici merită să ne oprim mai în detaliu asupra unor operații aritmetice.

    • Operatorul inc în Pascal, pronunțat ca increment, este procedura standard Pascal, care înseamnă increment cu unu.
    • Exemplu de operare Inc:

      x:=1; inc(x); (Se mărește x cu 1, adică x=2) scrieți în (x)

      O utilizare mai complexă a procedurii inc:
      Inc(x,n) unde x este un tip ordinal, n este un tip întreg; procedura inc incrementează x cu n.

    • Procedura Dec în Pascal funcționează similar: Dec(x) - scade x cu 1 (descrește) sau Dec(x,n) - scade x cu n.
    • Operatorul abs reprezintă modulul unui număr. Funcționează astfel:
    • a: =- 9; b:=abs(a); (b=9)

      a:=-9; b:=abs(a); (b=9)

    • Operatorul div din Pascal este unul folosit în mod obișnuit, deoarece o serie de sarcini sunt asociate cu acțiunea de divizare întreg.
    • Restul diviziei sau al operatorului mod în pascal este, de asemenea, indispensabil pentru rezolvarea unui număr de probleme.
    • De remarcat este funcția impară standard a lui Pascal, care determină dacă un număr întreg este impar. Adică returnează adevărat (adevărat) pentru numerele impare, fals (fals) pentru numerele pare.
    • Un exemplu de utilizare a funcției impar:

      varx:intger; beginx:=3; scrieln(sqr(x)); (răspunsul 9) sfârşitul.

    • Operația de exponențiere în Pascal dispărută ca atare. Dar pentru a ridica un număr la o putere, puteți folosi funcția exp.
    • Formula este: exp(ln(a)*n) , unde a este un număr, n este o putere (a>0).

      Cu toate acestea, în compilatorul pascal abc, exponențiarea este mult mai ușoară:

      varx:intger; beginx:=9; scrieln(sqrt(x)); (răspunsul 3) sfârşitul.

    Sarcina 4. Dimensiunile unei cutii de chibrituri sunt cunoscute: înălțime - 12,41 cm, lățime - 8 cm, grosime - 5 cm Calculați aria bazei cutiei și volumul acesteia
    (S = latime * grosime, V = suprafata * inaltime)

    Sarcina 5. Gradina zoologica are trei elefanti si destul de multi iepuri, iar numarul iepurilor se schimba frecvent. Un elefant ar trebui să mănânce o sută de morcovi pe zi, iar un iepure doi. În fiecare dimineață, îngrijitorul zoo raportează numărul de iepuri la computer. Computerul ca răspuns la aceasta ar trebui să spună însoțitorului numărul total de morcovi care astăzi trebuie să fie hrăniți iepurilor și elefanților.

    Sarcina 6. Se știe că X kg de dulciuri A ruble. Stabilește cât y kg din aceste dulciuri, precum și cu câte kilograme de dulciuri pot fi cumpărate k ruble. Toate valorile sunt introduse de utilizator.

    Conceptul de date este unul dintre conceptele cheie în programare și, în general, în informatică. În linii mari, datele în informatică sunt informații care se află într-o stare de stocare, procesare sau transmitere, la un moment dat. În mașinile Turing, informația are un tip, care, 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 native pentru limbajul de programare, în timp ce tipurile personalizate sunt create de programator.

    După modul de reprezentare și prelucrare, tipurile de date sunt:

    • simplu
    • structurat
    • indicatoare
    • obiecte
    • proceduri

    În acest articol, vor fi luate î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 pe variabile din această categorie, cu excepția diviziunii (/), care necesită un tip real. De asemenea, pot fi aplicate unele funcții și proceduri standard.

    Tip real

    Pascal are următoarele tipuri de date reale:

    Tip Gamă Memorie, octeți Număr 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 asupra lor decât pe numere întregi. De exemplu, aceste funcții returnează un rezultat real:

    sin(x) - sinus;

    cos(x) - cosinus;

    arctan(x) – arc tangentă;

    ln(x) – logaritm natural;

    sqrt(x) este rădăcina pătrată;

    exp(x) este exponentul;

    tip boolean

    O variabilă care are un tip de date boolean poate lua doar două valori: adevărat (adevărat) și fals (fals). Aici, adevărat corespunde valorii 1, iar false este identic cu zero. Puteți declara o variabilă booleană astfel:

    Operațiile de comparare și operațiile 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 simboluri ș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”, „n”;
    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.

    Operatorii relaționali și următoarele funcții se aplică valorilor tipului 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;

    majuscule (x)- convertește caracterele din intervalul 'a'..'z' în majuscule.

    Pentru o muncă fructuoasă 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 șirului) nu trebuie să depășească 255. Dacă lungimea șirului nu este specificată, atunci aceasta va fi determinată automat ca fiind de 255 de caractere. Forma generală a unei declarații de variabile șir arată astfel:

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

    Fiecare caracter dintr-un șir 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 lua 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 din 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 separați unul de celălalt prin virgule.

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

    Variabila A poate lua numai valorile definite î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, în timp ce este predeterminat acea zi de luni

    tip de date de 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 este folosită pentru a declara m..n, Unde m este valoarea minimă (inițială) și n– maxim (final); aici m și n sunt constante, care pot fi întregi, caractere, enumerare sau boolean. Valorile unui tip de interval pot fi descrise atât în ​​secțiunea de tipuri, cât și în secțiunea de declarare a variabilelor.

    Forma generala:

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

    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ță (indicatoare tipizate și netipizate).

    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 rezervat pentru stocarea semnului numărului (0 dacă numărul este pozitiv și 1 dacă numărul este negativ) și 15 biți pentru stocarea numărului în calculul sistemului binar. Numărul maxim zecimal 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 întreg). Î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 semnificativă) 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 într-un 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 al operațiilor matematice etc.



    Numerele reale sunt date în notație zecimală într-una dintre doua forme.

    ÎN forma 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

    Următoarele operații sunt definite pe obiecte de tip real: +, -, *, /.

    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 care funcționează 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, literele mari ale alfabetului latin A..Z au codurile 65..90, iar literele mici au codurile 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(Fals).

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

    Variabilelor booleene li se poate atribui o valoare direct sau poate fi utilizată o 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 se află într-o listă cuprinsă între paranteze. Forma generală a descrierii tipului enumerat:

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

    unde x este numele tipului, w1, w2,..., wn sunt valorile pe care le poate lua o 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 din 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 matricei. 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 Să 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 indici din declarația matricei:

    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 declarație 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 lungime 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.

    inserare (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 rezultatul conversiei este plasat), 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 anterior împachetat) 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).

    3.2. Tipuri simple de date în Turbo Pascal 7

    Un tip simplu definește un set ordonat de valori ale parametrilor. Turbo Pascal are 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 celor reale, sunt numite tipuri ordinale. Pentru valorile tipurilor 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 numere î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
    octeți 0 .. 255 nesemnat 1
    Cuvânt 0 .. 65535 nesemnat 2

    3.2.2. tip boolean

    Tipul logic standard Boolean (dimensiune - 1 octet) este un tip de date, din care orice element poate lua doar două valori: True și False. În acest caz, sunt adevărate următoarele condiții:
    Ord fals (fals) = 0
    Ordine (adevărat) = 1
    Succ(False) = 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). Sunt introduse pentru unificarea cu alte limbaje de programare și cu mediul Windows. Diferența lor față de tipul boolean standard constă în valoarea reală a parametrului de acest tip, care corespunde valorii True. Pentru toate tipurile booleene, valoarea False corespunde numărului 0 scris în numărul corespunzător de octeți. Pe de altă parte, True pentru tipul boolean corespunde numărului 1 scris pe 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 Char definește setul complet de caractere ASCII. Funcția Ord a unei valori Char oferă codul caracterului corespunzător. Valorile tipului de caractere sunt comparate prin codurile lor.

    3.2.4. Tip enumerat

    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 primului identificator i se atribuie un număr de serie de 0, al doilea - 1 și așa mai departe. Același identificator poate fi folosit în definirea unui singur tip enumerat. . Funcția Ord a unei valori 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, este posibil să se distingă un subset de valori, determinat de valorile minime și maxime, care include toate valorile tipului original care se află în aceste limite, inclusiv limitele în sine. Un astfel de 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 limbajul Pascal standard, unde este definit un singur tip real Real, Turbo Pascal are cinci tipuri reale standard: Real, Single, Double, Extended, Comp. Caracteristicile acestor tipuri, vezi tabel. 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

    Comp este de fapt un tip întreg cu gamă extinsă, dar nu este considerat 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 subsecțiunile 17.5.8 și 17.7.1).

    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. Gama de valori posibile ale tipurilor numerice întregi depinde 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);
      exponentiare;
      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ă (gama maximă de valori). Posibilul rezultat 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 sub 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 un număr arbitrar doar 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 mantisă și unul - sub ordin.

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

    • Aritmetic:
      adăugare (+);
      scădere(-);
      multiplicare(*);
      Divizia(/);
      exponentiare;
      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 numai în moduri speciale de 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ă părți exponențiale ș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în î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.