Algoritm limbajul Pascal Este construit în așa fel încât pentru a opera cu variabile, de obicei trebuie să specificați tipul acestora. Mai mult, descrierea tipului pentru fiecare variabilă trebuie făcută înainte de executarea programului (în secțiunea var). Adică, când pornește compilatorul, programul primește mai întâi informații cu privire la tipurile de date cu care va funcționa și abia apoi efectuează orice acțiune.
Deci în Pascal există 3 tipuri principale: simplu, structurat și pointer. Cu toate acestea, fiecare tip are propriile sale subtipuri. Pentru comoditate, toate tipurile de date sunt prezentate sub formă de listă.

Fiecare tip are propriul său interval de valori. Mai jos sunt intervalele pentru simplu tip

Cele mai utilizate tipuri întreg,real,longint,octet,şir,booleanŞi char deoarece de obicei sarcinile nu indică ce tipuri specifice ar trebui utilizate pentru soluție. Fiți atenți când utilizați tipuri și acordați o atenție deosebită intervalelor acceptabile pentru fiecare tip. De exemplu, numerelor fracționale nu li se poate atribui tipul întreg, iar tipul char poate fi doar un caracter (de exemplu, variabila f:=gfgfgf nu poate fi char)
Acum despre cum să descrii tipul. După cum sa menționat mai sus, operatorilor li se atribuie un tip chiar la începutul programului (s-ar putea spune chiar înainte de începerea programului). Deci tipurile sunt descrise în secțiunea var, care se află înainte de începutul programului (adică înainte de începe). Să ne uităm la un exemplu simplu
var x,u,yu,i:intger;
s,f:real;
g: șir;
ÎNCEPE
....
Sfârşit. După cum puteți vedea din exemplu, șablonul de descriere a tipului arată astfel
operator1, operator2: tip;

După cum ați observat deja, nu este nevoie să descrieți fiecare operator, dacă tipul este general, este suficient să le enumerați separate prin virgule. De asemenea, nu este nevoie să mergeți la o nouă linie după fiecare tip, acest lucru se face pur și simplu pentru o citire mai ușoară a codului. În general, codul ar trebui să fie lizibil și ușor de înțeles, așa că este recomandat să combinați operatori de tip general și să scrieți fiecare tip pe o linie nouă.

Tipuri de enumerare

Tipurile enumerate definesc seturi ordonate de valori prin enumerarea identificatorilor care reprezintă acele valori. Ordinea lor decurge din succesiunea în care au fost listate.

Sintaxă

nume de tip = (id, id, ..., id);

Noteîn definiţia tipului devin constante ale tipului enumerat.

Prima constantă are numărul de serie 0, a doua - 1 și așa mai departe.

Tipurile de enumerare sunt o subclasă ordinal tipuri.

Exemplu

tip Suit = (Clubs, Diamonds, Hearts, Spades);

Când este declarat astfel, Hearts este o constantă de tip Suit.

Funcția standard Ord returnează numărul ordinal al unei constante enumerate. În acest exemplu,

Ord(Cluburi) = 0
Ord(Diamante) = 1
Ord(Inimi) = 2

Ada

tipul Ziua este (luni, marți, miercuri, joi, vineri, sâmbătă, duminică);
tipul Suit este (Clubs, Diamonds, Hearts, Spades);
tipul de culoare este (alb, roșu, galben, verde, albastru, maro, negru);
tipul Lumina este (roșu, chihlimbar, verde); -- Roșu și Verde sunt supraîncărcate

Spre deosebire de Borland Pascal, identificatorii dintr-o definiție de tip devin mai degrabă funcții decât constante. Acest lucru le permite să fie supraîncărcate. În caz contrar, comportamentul acestor funcții este complet similar cu constantele.

Un tip enumerat este specificat direct prin enumerarea tuturor valorilor pe care le poate lua variabila. de acest tip. Fiecare valoare este o constantă de tip propriu și poate aparține doar unuia dintre tipurile enumerate specificate în program. Un tip enumerat este descris în secțiunea declarație de tip, care începe cu tipul cuvântului funcției. Fiecare valoare este denumită printr-un identificator și se află într-o listă înconjurată de paranteze, de exemplu:

Tip Culori = (rosu, alb, albastru);

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

Programatorul combină într-un singur grup, după o anumită caracteristică, întregul set de valori care alcătuiesc tipul enumerat. Utilizarea tipurilor enumerate face programele mai vizuale. Tipurile enumerate cresc fiabilitatea programelor, permițându-vă să controlați valorile pe care le primesc variabilele corespunzătoare.

Variabilele de orice tip enumerat pot fi declarate fără a declara mai întâi acel tip, de exemplu:

Var TextColor: (negru, alb, verde);

Valorile incluse într-un tip enumerat sunt constante. Acțiunile asupra acestora urmează regulile care se aplică constantelor. Sunt numerotate începând de la 0 în ordinea în care apar în descriere. Operatorii relaționali se aplică tuturor tipurilor enumerate (dacă ambii operanzi sunt de același tip). Ordinea este stabilită prin succesiunea de listare a constantelor.

  • Pentru argumentele legate de tipurile ordinale, există următoarele funcții predefinite:
  • succ(X) – lângă X
  • pred(X) – X anterior

Conversia inversă este de asemenea posibilă: orice expresie de tip WORD poate fi convertită într-o valoare de tip enumerare, cu excepția cazului în care valoarea expresiei întregi depășește cardinalitatea tipului enumerare. Această conversie se realizează prin utilizarea unei funcții declarate automat cu numele tipului enumerat.

Al cărui set de valori este o listă limitată de identificatori.

YouTube enciclopedic

  • 1 / 5

    Un tip enumerat este definit ca un set de identificatori care, în termeni de limbaj, au același rol ca constantele obișnuite cu nume, dar sunt asociate cu acel tip. Descrierea clasică a unui tip de enumerare în Pascal arată astfel:

    tip Cardsuit = (cluburi, diamante, inimioare, pică);

    Aici este declarat tipul de date Cardsuit, ale cărui valori pot fi oricare dintre cele patru constante enumerate. O variabilă de tip Cardsuit poate lua una dintre valorile cluburi, diamante, inimi, pică, este permisă compararea valorilor de tip enumerare pentru egalitate sau inegalitate, precum și să le folosească în instrucțiunile de selecție (în cazul Pascal); valori de identificare a opțiunilor.

    Folosirea enumerărilor vă permite să faceți codurile sursă programele sunt mai lizibile, deoarece vă permit să înlocuiți „numere magice” care codifică anumite valori cu nume care pot fi citite.

    Tipurile de set pot fi create pe baza enumerarilor din unele limbi. În astfel de cazuri, un set este înțeles (și descris) ca o colecție neordonată de valori unice de tip enumerare.

    Un tip enumerat poate fi utilizat în declarații de variabile și parametri formali ai funcțiilor (proceduri, metode). Valorile unui tip enumerat pot fi atribuite variabilelor corespunzătoare și transmise prin parametrii tipurilor corespunzătoare la funcții. În plus, sunt întotdeauna acceptate comparații ale valorilor de tip enumerare pentru egalitate și inegalitate. Unele limbi acceptă și alte operațiuni de comparare pentru valorile tipurilor enumerate. Rezultatul comparării a două valori enumerate în astfel de cazuri este determinat, de regulă, de ordinea acestor valori în declarația de tip - valoarea care apare mai devreme în declarația de tip este considerată „mai mică decât” valoarea care apare mai tarziu. Uneori, un tip de enumerare sau un interval de valori ale unui tip de enumerare poate fi, de asemenea, utilizat ca tip de index pentru o matrice. În acest caz, există un element în matrice pentru fiecare valoare din intervalul selectat, iar ordinea reală a elementelor corespunde ordinii valorilor din declarația de tip.

    Implementarea

    De obicei, valorile de enumerare sunt reprezentate folosind numere întregi în timpul compilării. În funcție de limbajul de programare specific, o astfel de reprezentare poate fi fie complet ascunsă de programator, fie accesibilă acestuia folosind anumite „soluții de rezolvare” (de exemplu, forțarea conversiei unei valori de enumerare într-o valoare întreagă), sau chiar controlată de către programator (în astfel de cazuri, programatorul are posibilitatea de a specifica în mod explicit cu ce numere vor fi codificate toate sau unele valori ale tipului de enumerare). Toate opțiunile au laturile lor pozitive și negative. Pe de o parte, posibilitatea utilizării valorilor numerice ale constantelor care alcătuiesc un tip de enumerare, mai ales dacă este abuzată, înfrânge scopul utilizării acestor tipuri și creează riscul de erori (când se folosesc valori numerice pentru care nu există constante corespunzătoare în tip). Pe de altă parte, managementul valorii explicit oferă unele caracteristici suplimentare. De exemplu, vă permite să utilizați tipuri de enumerare atunci când organizați o interfață cu module scrise în alte limbi, dacă acestea folosesc sau returnează valori codate întregi dintr-un set predefinit.

    O altă oportunitate pe care o oferă tipurile enumerate la nivelul implementării limbajului este economisirea memoriei. Cu un tip de enumerare mic, câțiva biți sunt suficienți pentru a stoca valoarea acelui tip (tipul Cardsuit de mai sus necesită doar doi biți pe valoare, în timp ce un număr întreg standard pe majoritatea arhitecturilor utilizate necesită 32 de biți - de 16 ori mai mult), iar compilatorul poate folosi acest fapt servește la comprimarea stocării datelor în memorie. Acest lucru poate fi deosebit de important dacă mai multe valori de tip enumerare sunt stocate într-o singură înregistrare - compactarea înregistrărilor atunci când procesează un număr mare dintre ele poate elibera multă memorie. Cu toate acestea, trebuie remarcat faptul că, de obicei, compilatoarele nu implementează această caracteristică, cel puțin recent, când memoria computerului a devenit semnificativ mai ieftină.

    Critică

    Tipul de enumerare este tradițional pentru limbajele de programare dezvoltate, este folosit destul de larg și este adesea considerat de la sine înțeles. Cu toate acestea, acest tip nu este lipsit de critici din partea teoreticienilor și practicienilor în programare. Astfel, în timpul dezvoltării limbajului de programare Oberon, tipurile enumerabile au fost incluse în lista de caracteristici care au fost eliminate din limbaj. Niklaus Wirth, dezvoltatorul limbajului, a dat următoarele motive:

    Pe de altă parte, de exemplu, în Java, care inițial nu conținea un tip enumerabil, acest tip a fost introdus ulterior din motive nu numai de comoditate, ci și de fiabilitate: problema utilizării unor grupuri de constante numite în locul enumerațiilor este că există nu există nici un control din partea compilatorului pentru unicitatea constantelor de valori, precum și posibilitatea de a atribui accidental valori variabilelor care nu corespund cu niciuna dintre aceste constante.

    Descrierea enumerărilor în diferite limbi

    Enum cardsuit ( CLUBS , DIAMONDS , HEARTS , SPADES );

    Limbile dinamice, slab tastate, cu sintaxă asemănătoare C (cum ar fi perl sau JavaScript), în general, nu au enumerații.

    Descriere și utilizare

    Un tip enumerat este definit ca un set de identificatori care, în termeni de limbaj, au același rol ca constantele obișnuite cu nume, dar sunt asociate cu acel tip. Descrierea clasică a unui tip de enumerare în Pascal arată astfel:

    Tip Cardsuit = (cluburi, diamante, inimioare, pică);

    Aici este declarat tipul de date Cardsuit, ale cărui valori pot fi oricare dintre cele patru constante enumerate. O variabilă de tip Cardsuit poate lua una dintre valorile cluburi, diamante, inimi, pică, este permisă compararea valorilor de tip enumerare pentru egalitate sau inegalitate, precum și să le folosească în instrucțiunile de selecție (în cazul Pascal); valori de identificare a opțiunilor.

    Utilizarea enumerărilor vă permite să faceți codurile sursă ale programului mai lizibile, deoarece vă permit să înlocuiți „numerele magice” care codifică anumite valori cu nume care pot fi citite.

    Tipurile de set pot fi create pe baza enumerarilor din unele limbi. În astfel de cazuri, un set este înțeles (și descris) ca o colecție neordonată de valori unice de tip enumerare.

    Un tip enumerat poate fi utilizat în declarații de variabile și parametri formali ai funcțiilor (proceduri, metode). Valorile unui tip enumerat pot fi atribuite variabilelor corespunzătoare și transmise prin parametrii tipurilor corespunzătoare la funcții. În plus, sunt întotdeauna acceptate comparații ale valorilor de tip enumerare pentru egalitate și inegalitate. Unele limbi acceptă și alte operațiuni de comparare pentru valorile tipurilor enumerate. Rezultatul comparării a două valori enumerate în astfel de cazuri este determinat, de regulă, de ordinea acestor valori în declarația de tip - valoarea care apare mai devreme în declarația de tip este considerată „mai mică decât” valoarea care apare mai tarziu. Uneori, un tip de enumerare sau un interval de valori ale unui tip de enumerare poate fi, de asemenea, utilizat ca tip de index pentru o matrice. În acest caz, există un element în matrice pentru fiecare valoare din intervalul selectat, iar ordinea reală a elementelor corespunde ordinii valorilor din declarația de tip.

    Implementarea

    De obicei, valorile de enumerare sunt reprezentate folosind numere întregi în timpul compilării. În funcție de limbajul de programare specific, o astfel de reprezentare poate fi fie complet ascunsă de programator, fie accesibilă acestuia folosind anumite „soluții de rezolvare” (de exemplu, forțarea conversiei unei valori de enumerare într-o valoare întreagă), sau chiar controlată de către programator (în astfel de cazuri, programatorul are posibilitatea de a specifica în mod explicit cu ce numere vor fi codificate toate sau unele valori ale tipului de enumerare). Toate opțiunile au laturile lor pozitive și negative. Pe de o parte, posibilitatea utilizării valorilor numerice ale constantelor care alcătuiesc un tip de enumerare, mai ales dacă este abuzată, înfrânge scopul utilizării acestor tipuri și creează riscul de erori (când se folosesc valori numerice pentru care nu există constante corespunzătoare în tip). Pe de altă parte, managementul explicit al valorii oferă unele capabilități suplimentare. De exemplu, vă permite să utilizați tipuri de enumerare atunci când organizați o interfață cu module scrise în alte limbi, dacă acestea folosesc sau returnează valori codate întregi dintr-un set predefinit.

    O altă oportunitate pe care o oferă tipurile enumerate la nivelul implementării limbajului este economisirea memoriei. Cu un tip de enumerare mic, câțiva biți sunt suficienți pentru a stoca valoarea acelui tip (tipul Cardsuit de mai sus necesită doar doi biți pe valoare, în timp ce un număr întreg standard pe majoritatea arhitecturilor utilizate necesită 32 de biți - de 16 ori mai mult), iar compilatorul poate folosi acest fapt servește la comprimarea stocării datelor în memorie. Acest lucru poate fi deosebit de important dacă mai multe valori de tip enumerare sunt stocate într-o singură înregistrare - compactarea înregistrărilor atunci când procesează un număr mare dintre ele poate elibera multă memorie. Cu toate acestea, trebuie remarcat faptul că, de obicei, compilatoarele nu implementează această caracteristică, cel puțin recent, când memoria computerului a devenit semnificativ mai ieftină.

    Critică

    Tipul de enumerare este tradițional pentru limbajele de programare dezvoltate, este folosit destul de larg și este adesea considerat de la sine înțeles. Cu toate acestea, acest tip nu este lipsit de critici din partea teoreticienilor și practicienilor în programare. Astfel, în timpul dezvoltării limbajului de programare Oberon, tipurile enumerabile au fost incluse în lista de caracteristici care au fost eliminate din limbaj. Niklaus Wirth, dezvoltatorul limbajului, a dat următoarele motive:

    Pe de altă parte, de exemplu, în Java, care inițial nu conținea un tip enumerat, acest tip a fost introdus ulterior din motive nu numai de comoditate, ci și de fiabilitate: problema utilizării unor grupuri de constante numite în locul enumerațiilor este că există nu există nici un control din partea compilatorului pentru unicitatea constantelor de valori, precum și posibilitatea de a atribui accidental valori variabilelor care nu corespund cu niciuna dintre aceste constante.

    Descrierea enumerărilor în diferite limbi

    Ada

    Enum cardsuit (CLUBS, DIAMONDS, HEARTS, SPADES) ;

    Limbajele dinamice, slab tastate, cu sintaxă asemănătoare C (de exemplu, perl sau JavaScript) nu au, în general, enumerații.

    C++

    C#

    Enum Cardsuit (cluburi, diamante, pică, inimi);

    Java

    Enum Cardsuit (cluburi, diamante, pică, inimi)

    Haskell

    În unele limbaje de programare (de exemplu, Haskell), puteți emula enumerari folosind tipuri algebrice. De exemplu, așa este codat un tip boolean care conține doi identificatori pentru a reprezenta valorile de adevăr:

    Date Bool = False | Adevărat

    Note


    Fundația Wikimedia.

    2010.

    Wikipedia

    Din motive tehnice, Bool este redirecționat aici. Puteți citi despre Bool aici: stdbool.h. Tipul de date logic, boolean (în engleză boolean sau tip de date logic) este un tip de date primitiv în informatică care poate lua două posibile ... Wikipedia

    În teoria programării, orice tip ale cărui valori sunt valori ale unor alte tipuri, „înfășurate” de constructori de tip algebric. Cu alte cuvinte, un tip de date algebrice are un set de constructori de tip, fiecare dintre care... ... Wikipedia

    Integer, un tip de date întreg (întreg în engleză), în informatică unul dintre cele mai simple și mai comune tipuri de date în limbaje de programare. Folosit pentru a reprezenta numere întregi. Setul de numere de acest tip este... ... Wikipedia

    Un tip primitiv (încorporat, de bază) este un tip de date furnizat de un limbaj de programare ca unitate de bază încorporată a limbajului. În funcție de limbaj și de implementarea acesteia, setul de astfel de tipuri poate varia foarte mult. Este determinat de... ... Wikipedia

    Acest termen are alte semnificații, vezi Set (sensuri). O mulțime, un tip și o structură de date în informatică, este o implementare a setului de obiecte matematice. Setul de tipuri de date vă permite să stocați un număr limitat de valori... ... Wikipedia

    Unele limbaje de programare oferă un tip de date special pentru numere complexe. Prezența unui tip încorporat simplifică stocarea cantităților complexe și calculele pe acestea. Cuprins 1 Aritmetică peste complexe complexe 2 Suport în limbi ... Wikipedia Pentru a îmbunătăți acest articol prin tehnologia de informație