Tipuri simple de date în Pascal. Tipuri de date Pascal

Lecția acoperă 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 pe biți, în plus, numerele fracționale și întregi sunt adăugate diferit. Același lucru este valabil și pentru alte operațiuni.

Să ne uităm la 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 să rețineți că atunci când scrieți programe în Pascal întreg(tradus din engleză în ansamblu) 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ă ca întreg lung). Tip octetîn Pascal este folosit atunci când nu este nevoie să lucrați cu valori negative, același lucru este valabil și pentru tip cuvânt(doar intervalul de valori aici este mult mai mare).

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

programul a1; var x,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

Observați cum comentariile sunt folosite în Pascal. În comentariile exemplu, 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 explica bucăți de cod.

Sarcina 3. Populația Moscovei este de a = 9.000.000 de locuitori. Populația din New Vasyuki este 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 programare în general sunt 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 din Pascal este cel mai des folosit tip real.

Au fost prezentate cele de mai sus tipuri de date simple în Pascal, care includ:

  • Ordinal
  • Întreg
  • joc de inteligență
  • Caracter
  • Listabil
  • Interval
  • Real

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

  • formatul folosește fie un număr, indicând numărul de poziții alocate acestui număr în formă exponențială;
  • p:=1234,6789; Scrie (p:6:2); (1234,68)

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

    Constante în Pascal

    Adesea într-un program se știe dinainte că o variabilă 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) final.

    const x=17; var myname:string; î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 ne asigura că după afișarea valorilor variabilelor există indentări, astfel încât valorile să nu se „imbina” între ele, se obișnuiește să se indice prin două puncte câte caractere trebuie furnizate pentru a afișa valoare:


    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.

    • Operația inc în Pascal, increment pronunțat, este o procedură Pascal standard care înseamnă creșterea cu unu.
    • Exemplu de operație inc:

      x:=1; inc(x); (Crește x cu 1, adică x=2) writeln(x)

      Utilizare mai complexă a procedurii inc:
      Inc(x,n) unde x este un tip ordinal, n este un tip întreg; procedura inc crește 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ă așa:
    • a: =- 9; b:=abs(a); (b=9)

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

    • Operatorul div în Pascal este adesea folosit, deoarece o serie de sarcini implică operarea întregii diviziuni.
    • Restul de diviziune sau operatorul 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 pentru numerele impare, fals pentru numerele pare.
    • Un exemplu de utilizare a funcției impar:

      var x:intger; începe x:=3; scrieln(sqr(x)); (răspunsul 9) sfârşitul.

    • Operația de exponențiere în Pascal lipsește 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 un grad (a>0).

      Cu toate acestea, în compilatorul Pascal abc, exponențiarea este mult mai simplă:

      var x:intger; începe x:=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=zona*inaltime)

    Sarcina 5. Grădina zoologică are trei elefanți și destul de mulți iepuri, numărul de iepuri schimbându-se frecvent. Un elefant ar trebui să mănânce o sută de morcovi pe zi, iar un iepure - doi. În fiecare dimineață, grădina zoologică spune computerului numărul de iepuri. Computerul, ca răspuns la aceasta, trebuie să spună însoțitorului numărul total de morcovi care trebuie hrăniți astăzi iepurilor și elefanților.

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

    Orice program scris în orice limbaj de programare este conceput în esență pentru a procesa date. Datele pot fi numere, texte, grafice, sunet etc. Unele date sunt date sursă, altele sunt rezultatul, care se obține prin prelucrarea datelor sursă de către program.

    Datele sunt stocate în memoria computerului. Programul le accesează folosind nume de variabile asociate cu locațiile de memorie în care sunt stocate datele.

    Variabilele sunt descrise înainte de codul programului principal. Numele variabilelor și tipul de date stocate în acestea sunt indicate aici.

    Există o mulțime de tipuri de date în limbajul de programare Pascal. În plus, utilizatorul însuși își poate defini propriile tipuri.

    Tipul unei variabile determină ce date pot fi stocate în locația de memorie asociată cu aceasta.

    Variabile de tip întreg poate fi asociat doar cu valori întregi, de obicei, în intervalul -32768 la 32767. Pascal are alte tipuri de numere întregi (byte, longint).

    Variabile de tip real stocați numere reale (fracționale).

    Variabil boolean Tipul (boolean) (boolean) poate lua doar două valori - Adevărat(1, adevărat) sau fals(0, fals).

    Tip de caracter (car) poate lua valori dintr-o anumită secvență ordonată de caractere.

    Tip de interval definit de utilizator și format numai din tipuri ordinale. Reprezintă un subset de valori într-un interval specific.

    Vă puteți crea propriul tip de date prin simpla enumerare a valorilor pe care le poate lua o variabilă de acest tip. Acesta este așa-numitul tip de date enumerate.

    Toate cele de mai sus sunt simple tipuri de date. Există însă și unele complexe, structurate, care se bazează pe tipuri simple.

    Matrice este o structură care ocupă o singură zonă în memorie și este formată dintr-un număr fix de componente de același tip.

    Siruri de caractere este o succesiune de caractere. În plus, numărul acestor caractere nu poate fi mai mare de 255 inclusiv. Această limitare este o trăsătură caracteristică a lui Pascal.

    Record este o structură formată dintr-un număr fix de componente numite câmpuri. Datele din diferite câmpuri ale unei înregistrări pot fi de diferite tipuri.

    Seturi reprezintă o colecție de orice număr de elemente, dar de același tip enumerat.

    Fișiere pentru Pascal, sunt secvențe de același tip de date care sunt stocate pe dispozitive de memorie externe (de exemplu, un hard disk).

    Conceptul unui astfel de tip de date ca indicator asociat cu stocarea dinamică a datelor în memoria computerului. Adesea, utilizarea tipurilor de date dinamice este mai eficientă în programare decât utilizarea tipurilor de date statice.

    Datele sunt un concept general pentru tot ceea ce funcționează un computer. Orice tip de date definește setul de valori pe care o anumită variabilă le poate lua și operațiunile care le pot fi aplicate.Fiecare variabilă întâlnită într-un program trebuie să fie asociată cu un singur tip.

    Există două tipuri de tipuri simple în Pascal: tipuri ordinale și tipuri reale. Un tip ordinal este fie definit de programator (tip de enumerare sau tip de interval) fie este notat prin numele unuia dintre cele trei tipuri ordinale predefinite: Boolean, Integer sau Char. Un tip real este notat cu numele de tip prescriptiv Real.

    Un tip enumerat se caracterizează prin numeroasele valori diferite pe care le conține, printre care este definită o ordine liniară. Valorile însele sunt desemnate în definiția acestui tip prin nume.

    Un tip de interval (limitat) este specificat folosind valori minime și maxime legate de un tip ordinal descris anterior. Acesta este modul în care se generează un nou tip ordinal.

    Tipuri de date ordinale

    Un tip de date ordinal descrie un set finit și ordonat de valori. Aceste valori sunt mapate la succesiunea de numere ordinale 0,1,2,...; se face o excepție numai pentru numerele întregi ordinale, care se mapează pe ele însele. Fiecare tip ordinal are o valoare minimă și maximă. Pentru toate valorile, cu excepția minimului, există o valoare anterioară, iar pentru toate valorile, cu excepția maximului, există o valoare ulterioară.

    Funcțiile prescrise succ, pred, ord acceptă argumente de oricare dintre tipurile ordinale:
    succ(X) - dă următoarea valoare ordinală după X
    pred(X) - dă valoarea ordinală care precede X
    ord(X) - dă numărul ordinal pentru X

    Pentru toate tipurile ordinale, există operatori relaționali = , = și > , presupunând că ambii operanzi sunt de același tip.

    tip boolean

    O valoare booleană este una dintre cele două valori de adevăr, notate prin numele predefinite false și true .

    Există următorii operatori logici care produc o valoare logică atunci când se aplică operanzilor logici:
    și - ȘI logic
    sau - SAU logic
    nu - NU logic

    De asemenea, oricare dintre operațiile relaționale (= , = , > , in) produce un rezultat logic.

    În plus, tipul boolean este definit astfel încât false

    Există, de asemenea, funcții logice predefinite (adică funcții care dau un rezultat logic):
    odd(F) - adevărat dacă întregul este F-impar și rezultatul este fals dacă F-par
    eoln(F) - verificare la sfârșitul liniei
    eof(F) - verificare la sfârșitul fișierului

    Tipul întreg

    Tipul întreg include o varietate de numere întregi.

    Când lucrați cu operanzi întregi, următoarele operații aritmetice produc valori întregi:
    * - înmulțire
    div - parte întreagă din diviziune
    mod - restul diviziunii
    + - adaos
    - - scădere

    Pascal are, de asemenea, o constantă predefinită numită MaxInt, care conține valoarea maximă a unui număr întreg și este egală cu 32767

    Întregul rezultat este, de asemenea, obținut prin patru funcții importante prescrise:
    abs(I) - valoarea absolută a valorii întregi I
    sgr(I) - valoarea întreagă a lui I pătrat dat fiind că I trunc(R) - oferă partea întreagă a numărului real R
    round(R) - returnează un număr întreg rotunjit. În acest caz: pentru R>0 înseamnă trunchi (R+0,5), iar pentru R

    Dacă I ​​este o valoare întreagă, atunci:
    succ(I) - dă următoarea valoare întreagă (I+1)
    pred(I) - oferă valoarea întreagă anterioară (I-1)

    Tip de caracter (Char)

    Valorile Char sunt elementele unui set finit și ordonat de caractere. Valorile de acest tip sunt reprezentate de un singur caracter cuprins între ghilimele simple (apostrofe). Dacă este nevoie de apostroful în sine, se scrie de două ori.
    Exemple: "*" "G" "3" """" "X"

      Pentru tipul Char, se aplică următoarele ipoteze minime:
    1. Cifrele zecimale de la 0 la 9 sunt ordonate în funcție de valorile lor numerice și se succed reciproc (de exemplu, succ("5") = "6").
    2. Pot exista litere mari de la „A” la „Z”; dacă da, atunci acestea sunt ordonate alfabetic, dar nu se succed neapărat (de exemplu, „A”
    3. Pot exista litere mici de la „a” la „z”; dacă da, atunci ele sunt ordonate alfabetic, dar nu se succed neapărat (de exemplu, „a”

    Pentru a mapa un anumit set de caractere la numere de serie și înapoi, există două funcții predefinite:
    ord(C) - dă numărul ordinal al caracterului C din setul ordonat de caractere menționat
    chr(I) - dă caracterul cu numărul de ordine I

    Pentru argumentele de tip Char, funcțiile predefinite pred și succ pot fi definite după cum urmează:
    pred(C) = chr(ord(C)-I)
    succ(C) = chr(ord(C)+I)

    Cometariu. Simbolul precedent sau următor depinde de setul specificat de simboluri, deci ambele relații sunt valabile numai dacă există simbolul precedent sau următor.

    Tip real

    Valorile de tip real sunt elementele unui subset de numere reale definite de implementare.

    Toate operațiunile pe cantități de tip real sunt aproximative, acuratețea lor este determinată de implementarea (mașina) cu care aveți de-a face. Tipul real este un tip simplu, nu este un tip ordinal. Valorile reale nu au un număr ordinal și pentru oricare dintre ele nu există o valoare anterioară sau următoare.

    Dacă cel puțin unul dintre operanzi este de tip real (celălalt poate fi un număr întreg), următoarele operații dau un rezultat real:
    * - înmulțire
    / - diviziune (ambele operanzi pot fi numere întregi, dar rezultatul este întotdeauna real)
    + - adaos
    - - scădere

    Există funcții prescrise care dau un rezultat real având în vedere un argument real:
    abs(R) - valoarea absolută a lui R
    sqr(R) - R pătrat dacă rezultatul este în intervalul numerelor reale

    Și aceste funcții prescrise dau un rezultat real cu un număr întreg sau un argument real:
    sin(X) - dă sinusul lui X; X este exprimat în radiani
    cos(X) - dă cosinusul lui X; X este exprimat în radiani
    arctan(X) - dă arctangenta lui X exprimată în radiani
    ln(X) - dă valoarea logaritmului natural (baza e) pentru X, X>0
    exp(X) - dă valoarea funcției exponențiale (adică puterii lui X)
    sqrt(X) - dă valoarea rădăcinii pătrate a lui X, X>=0

    Avertizare. Funcțiile pred, succ nu pot fi folosite pentru argumente reale.Nu puteți folosi valori de tip real la indexarea tablourilor, pentru controlul în buclă cu un parametru, pentru determinarea tipului de bază al seturilor, pentru indexarea într-un operator variant.

    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, datorită căruia numărul total de tipuri utilizate într-un program poate fi atât de mare pe 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ă descrieri detaliate ale fiecărui tip.

    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 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 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 .

    Atunci când utilizați proceduri și funcții cu parametri întregi, ar trebui să vă ghidați după „imbricarea” tipurilor, de exemplu. 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 tipurilor întregi este dată în tabel. 1.2. Literele b, s, w, i, l denotă expresii de următorul tip: 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 rezultat va corespunde tipului operanzilor, iar dacă operanzii sunt de diferite tipuri întregi, tipul general care include ambii operanzi. De exemplu, când operezi cu scurtăturăȘi cuvânt tipul comun va fi întreg. În setarea implicită, compilatorul Delphi nu produce cod pentru a verifica dacă o valoare este în afara intervalului, 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 de 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 variază pentru diferite fonturi. Fonturile 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”... „Z” sunt valori codificate 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.

    Tipuri de date în limbajul Pascal: clasificare și descrieri. Tipuri de date aritmetice și ordinale, acțiuni cu acestea. Expresii aritmetice: funcții, operații și ordinea acțiunilor. Compatibilitatea tipului de date și conversiile.

    Compilatoarele Pascal necesită ca informațiile despre cantitatea de memorie necesară pentru a rula un program să fie furnizate înainte de a rula. Pentru a face acest lucru, în secțiunea descriere a variabilei ( var) trebuie să enumerați toate variabilele utilizate în program. În plus, trebuie să spuneți compilatorului câtă memorie va ocupa fiecare dintre aceste variabile. De asemenea, ar fi bine să se convină în prealabil asupra diferitelor operații aplicabile anumitor variabile...

    Toate acestea pot fi comunicate programului prin simpla indicare a tipului viitoarei variabile. Având informații despre tipul unei variabile, compilatorul „înțelege” câți octeți trebuie alocați pentru aceasta, ce acțiuni pot fi efectuate cu ea și la ce construcții poate participa.

    Pentru comoditatea programatorilor, Pascal are multe tipuri de date standard, plus capacitatea de a crea noi tipuri.

    Când construim noi tipuri de date pe baza celor existente (standard sau definite din nou de programator însuși), trebuie să ne amintim că orice clădire trebuie construită pe o fundație bună. Prin urmare, acum vom vorbi despre această „fundație”.

    Bazat tipuri de date de bază sunt construite toate celelalte tipuri de limbaj Pascal, care se numesc: construit.

    Împărțirea în tipuri de date de bază și construite în Pascal este prezentată în tabel:

    Tipurile de date construite de programator sunt descrise în secțiune tip conform următorului model:

    tip<имя_типа> = <описание_типа>;

    De exemplu:

    tip Lat_Bukvy = "a" .. "z", "A" .. "Z";

    Tipurile de date de bază sunt standard, deci nu este nevoie să le descrieți în secțiune tip. Cu toate acestea, dacă se dorește, acest lucru se poate face, de exemplu, oferind definiții lungi nume scurte. Să spunem prin introducerea unui nou tip de date

    tip Int = Integer;

    Puteți scurta puțin textul programului.

    De asemenea, tipurile construite standard nu trebuie descrise în secțiune tip. Cu toate acestea, în unele cazuri, acest lucru încă trebuie făcut din cauza cerințelor de sintaxă. De exemplu, în lista de parametri proceduri sau funcții Constructorii de tip nu pot fi utilizați (vezi prelegerea 8).

    Tipuri de date ordinale

    Dintre tipurile de date de bază, cele mai notabile sunt tipuri ordinale. Acest nume poate fi justificat în două moduri:

    Rutine standard care procesează tipuri de date ordinale

    Doar pentru cantități tipuri ordinale Sunt definite următoarele funcții și proceduri:

    1. Funcţie Ord(X) returnează numărul ordinal al valorii variabilei x (față de tipul căruia îi aparține variabila x).
    2. Funcţie Pred(X) returnează valoarea care precede x (nu se aplică primului element al tipului).
    3. Funcţie Succ(X) returnează valoarea după x (nu se aplică ultimului element al tipului).
    4. Procedură Inc(X) returnează valoarea după x (pentru tipuri de date aritmetice aceasta este echivalentă cu operatorul x:= x + 1).
    5. Procedură Inc(x, k) returnează a k-a valoare după x (pentru tipuri de date aritmetice aceasta este echivalentă cu operatorul x:= x + k).
    6. Procedură Dec(X) returnează valoarea care precede x (pentru tipuri de date aritmetice aceasta este echivalentă cu operatorul x:= x - 1).
    7. Procedură Dec(x, k) returnează valoarea k–e care precede x (pentru tipuri de date aritmetice aceasta este echivalentă cu operatorul x:= x - k).

    La prima vedere, pare ca rezultatul aplicării procedurii Inc(X) coincide complet cu rezultatul aplicării funcției Succ(X). Cu toate acestea, diferența dintre ele apare la limitele intervalului permis. Funcţie Succ(X) nu este aplicabil elementului maxim al unui tip, dar aici este procedura Inc(X) nu va produce nicio eroare, dar, acționând conform regulilor de adăugare a mașinii, va adăuga următoarea unitate la numărul elementului. Numărul, desigur, va depăși intervalul și, din cauza trunchierii, se va transforma în numărul valorii minime a intervalului. Se pare că procedurile Inc() Și Dec() ei percep orice tip ordinal ca fiind „închis într-un inel”: imediat după ultimul, vine din nou prima valoare.

    Să explicăm tot ce s-a spus cu un exemplu. Pentru tipul de date

    tip Sixteen = 0 .. 15 ;

    încercarea de a adăuga 1 la numărul 15 va avea ca rezultat următorul rezultat:

    1 1 1 1 1 1 0 0 0 0

    Unitatea inițială va fi întreruptă și, prin urmare, se dovedește că Inc(15)=0 .

    O situație similară la limita inferioară a intervalului permis al unui tip de date ordinal arbitrar este observată pentru procedură Dec(X) si functii Pred(X):

    Tipuri de date legate de ordinal

    Să descriem acum tipuri de date ordinale in detalii.

    1. tip boolean boolean are două valori: Fals și True, iar pentru ele sunt valabile următoarele egalități:
    2. La tipul de caracter Char include 256 de caractere tabelul ASCII extins(de exemplu, „a”, „b”, „i”, „7”, „#”). Numărul caracterului returnat de funcție Ord() , se potrivește cu numărul acestui simbol în Tabelul ASCII.
    3. Tipuri de date întregi Să o punem într-un tabel:
    4. Listabil tipurile de date sunt specificate în secțiune tip prin enumerarea explicită a elementelor acestora. De exemplu:

      tip Săptămâna = (sun, lun, tue, wed, thu, fri, sat); 0 1 2 3 4 5 6

      Reamintim că pentru acest tip de date:

    5. Tipuri de date de interval sunt specificate numai de limitele intervalului lor. De exemplu:

      tip Luna = 1 .. 12 ;
      Budni = Lun .. Vin;

    6. Programatorul își poate crea propriile tipuri de date, care sunt o combinație de mai multe tipuri standard. De exemplu:

      tip Valid_For_Identifiers = "a" .. "z" , "A" .. "Z" , "_" , "0" .. "9" ;

    Acest tip constă în combinarea mai multor intervale, iar în acest caz se modifică ordinea literelor latine: dacă în tipul standard