2 tipuri principale de date de bază și structurate. Proiecte de bază ale algoritmilor. Tipuri de date: simple și structurate. Buclă cu precondiție

Un tip de date definește un set de valori valide și un set de operații valide.

Tipuri simple.

Tipurile simple sunt împărțite în ORDINALE și REALE.

1. TIPURI DE COMANDĂ , la randul lor sunt:

un întreg

Pascal definește 5 tipuri de numere întregi, care sunt definite în funcție de semnul și valoarea pe care le va lua variabila.

Tastați numele

Lungime (în octeți)

Gama de valori

32 768...+32 767

2 147 483 648...+2 147 483 647

b) logic

Numele acestui tip este BOOLEAN. Valorile booleene pot fi una dintre constantele booleene: TRUE (adevărat) sau FALSE (fals).

c) simbolic

Numele acestui tip este CHAR - ocupă 1 octet. 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.

2. TIPURI REALE .

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

Lungimea tipului de date numerice, octeți

Nume tip de date numerice

Numărul de cifre semnificative ale unui tip de date numerice

Interval de ordine zecimală a unui tip de date numerice

2*1063 +1..+2*1063 -1

TIPURI STRUCTURATE

Tipurile de date structurate definesc o colecție ordonată de variabile scalare și sunt caracterizate de tipul componentelor lor.

Tipurile de date structurate, spre deosebire de cele simple, definesc multe valori complexe cu un singur nume comun. Putem spune că tipurile structurale determină un anumit mod de a forma noi tipuri din cele existente.

Există mai multe metode de structurare. După metoda de organizare și tipul componentelor în tipurile de date complexe, se disting următoarele soiuri: tip obișnuit (matrice); tip combinat (înregistrări); tip de fișier(fișiere); mai multe tipuri; tipul de șir (șiruri de caractere); în limbajul Turbo Pascal versiunea 6.0 și mai veche, a fost introdus un tip de obiect (obiecte).

Spre deosebire de tipurile de date simple, datele de tip structurat se caracterizează prin multiplicitatea elementelor care formează acest tip, adică. o variabilă sau constantă de tip structurat are întotdeauna mai multe componente. Fiecare componentă, la rândul său, poate aparține unui tip structurat, adică. este posibilă cuibărirea tipurilor.

1. Matrice

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

Descrierea matricei este specificată după cum urmează:

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

Aici<имя типа>- identificator corect;

Array, of – cuvinte rezervate (array, from);

<сп.инд.типов>- o listă cu unul sau mai multe tipuri de index, separate prin virgule; parantezele pătrate care încadrează lista sunt o cerință de sintaxă;

<тип>- orice tip de Turbo Pascal.

Orice tipuri ordinale pot fi utilizate ca tipuri de index în Turbo Pascal, cu excepția tipurilor LongInt și interval cu tipul de bază LongInt.

Adâncimea de imbricare a tipurilor structurate în general, și, prin urmare, a tablourilor, este arbitrară, astfel încât numărul de elemente din lista de indici de tip (dimensiunea matricei) nu este limitat, cu toate acestea, lungimea totală a reprezentării interne a oricărei matrice nu poate fi limitată. să fie mai mare de 65520 de octeți.

2. Înregistrări

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

Structura unei declarații de tip post este:

< Numetip>=ÎNREGISTRARE< societate în comun. câmpuri> Sfârșit

Aici<имя типа>- identificator corect;

RECORD, END – cuvinte rezervate (record, end);

<сп.полей>- lista câmpurilor; este o succesiune de secțiuni ale unei înregistrări separate prin punct și virgulă.

3. Seturi

Seturile sunt un set de obiecte de același tip care sunt conectate logic între ele. Natura conexiunilor dintre obiecte este doar implicată de programator și nu este controlată în niciun fel de Turbo Pascal. numărul de elemente incluse într-o mulțime poate varia de la 0 la 256 (o mulțime care nu conține elemente se numește goală).Este inconstanța numărului de elemente ale sale care se deosebesc de tablouri și înregistrări.

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

Descrierea tipului de set este:

< Numetip>=SET DE< bazele. tip>

Aici<имя типа>- identificator corect;

SET, OF – cuvinte rezervate (set, of);

<баз.тип>- tipul de bază al elementelor set, care poate fi orice tip ordinal, cu excepția WORD, INTEGER și LONGINT.

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

4. Fișiere

Un fișier este înțeles fie ca o zonă numită a memoriei externe a unui computer, fie ca un dispozitiv logic - o sursă potențială sau un receptor de informații.

Orice fișier are trei caracteristici

    are un nume, care permite programului să lucreze cu mai multe fișiere simultan.

    conţine componente de acelaşi tip. Tipul de componentă poate fi orice tip Turbo Pascal, cu excepția fișierelor. Cu alte cuvinte, nu puteți crea un „fișier de fișiere”.

    lungimea fișierului nou creat nu este specificată în niciun fel atunci când este declarat și este limitată doar de capacitatea dispozitivelor de memorie externe.

Un tip de fișier sau o variabilă de tip de fișier poate fi specificat în unul din trei moduri:

< Nume>= DOSARUL DE< tip>;

< Nume>=TEXT;

<имя>= FIȘIER;

Aici<имя>- numele tipului de fișier (identificatorul corect);

FILE, OF – cuvinte rezervate (file, from);

TEXT – numele tipului de fișier text standard;

<тип>- orice tip de Turbo Pascal, cu excepția fișierelor.

În funcție de metoda de declarare, se pot distinge trei tipuri de fișiere:

· fisiere tipizate (setate prin clauza FILE OF...);

· fișiere text (definite ca tip TEXT);

· fișiere netipizate (definite de tipul FILE).

Despre conversia tipurilor de date numerice ale lui Pascal

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

Var X: întreg; Y: real;

apoi operatorul

va fi corectă din punct de vedere sintactic, deși există o expresie întreagă în dreapta semnului de atribuire și o variabilă reală în stânga, compilatorul va converti automat tipurile de date numerice. Conversia inversă automată de la tipul real la tipul întreg este imposibilă în Pascal. Să ne amintim câți octeți sunt alocați pentru variabilele de tip întreg și real: 2 octeți de memorie sunt alocați pentru tipul de date întreg și 6 octeți pentru real. Există două funcții încorporate pentru conversia realului în întreg: round(x) rotunjește un x real la cel mai apropiat număr întreg, trunc(x) trunchiază un real prin eliminarea părții fracționale.

Metoda algoritmizării structurale este una dintre metodele sistematice de dezvoltare a algoritmilor. Se bazează pe o reprezentare vizuală a algoritmilor sub formă de secvențe de fragmente structurale de control.

Fiecare algoritm constă din pași elementari care pot fi combinați în anumite structuri algoritmice: liniar (secvențial), ramificare , ciclic .

Definiția 1

Liniar este un proiect de algoritm implementat ca o secvență de acțiuni (pași), cu fiecare acțiune (pas) efectuată doar 1 dată, după fiecare acțiune (pas) acțiunea (pasul) este mărită cu 1 până când valoarea este mai mare decât parametrul final al algoritmul.

Procesele liniare sunt reprezentate folosind algoritmi liniari. Algoritmii de acest tip sunt utilizați pentru a descrie o soluție generalizată a problemelor sub formă de secvențe de module.

Definiția 2

Ramificare (ramificare) numiți un design algoritmic care oferă o alegere între 2 soluții în funcție de valorile datelor de intrare.

Există două tipuri de ramuri: incomplet (dacă ceva) Și complet (dacă-atunci-altfel). Folosind ramificarea completă, puteți organiza 2 ramuri în algoritm ( Acea sau in caz contrar), fiecare dintre acestea va duce la un punct comun al fuziunii lor, algoritmul va fi executat indiferent de calea pe care a urmat soluția. În prezența unei ramificări incomplete, unele acțiuni ale algoritmului sunt presupuse doar pe o singură ramură ( Acea), deoarece al doilea lipsește, nu este nevoie să efectuați nicio acțiune pentru unul dintre rezultatele verificării; controlul va trece imediat la punctul de îmbinare. Există 4 variante de bază ale structurii de ramificare:

  1. Tip de ramificare incomplet "daca atunci „, conform căruia toate acțiunile vor fi efectuate dacă condiția este adevărată.
  2. Ramificare de tip complet „dacă – atunci – altfel” , în care se vor efectua 2 acțiuni în funcție de adevărul condiției.
  3. Ramificare cu selecția tipului "Acea" , în care acțiunea 1 se va executa în condiția 1, acțiunea 2 în condiția 2 etc.
  4. Ramificare cu selecția tipului "in caz contrar" , sub care, la condiția 1, se va executa acțiunea 1, la condiția 2, acțiunea 2 etc., iar în caz contrar se vor îndeplini toate celelalte acțiuni.

Mai jos sunt diagrame bloc ale algoritmilor de ramificare.

Definiția 3

Ciclic (sau ciclu) este un proiect de algoritm în care un anumit grup de acțiuni consecutive (pași) este efectuat de mai multe ori în funcție de condițiile problemei și de datele de intrare.

Definiția 4

Se numește un astfel de grup de acțiuni repetate la fiecare pas al ciclului corpul buclei .

Orice structură ciclică conține elemente ale unei structuri de ramificare a algoritmului.

Există 3 tipuri de algoritmi ciclici:

  • bucla cu parametru (bucla aritmetica);
  • buclă cu precondiție;
  • o buclă cu o postcondiție (ultimele două se numesc iterative).

Bucla aritmetică

Într-un ciclu de acest tip, numărul de pași este determinat în mod unic de regula de modificare a parametrului, specificată folosind valorile inițiale și finale ale acestuia, precum și de pasul modificării acestuia. Adică, la fiecare pas al ciclului, valoarea parametrului se modifică în funcție de pasul ciclului până când ajunge la o valoare egală cu valoarea finală a parametrului.

Buclă cu precondiție

În această buclă, numărul de pași nu este determinat în avans; depinde de datele de intrare. În această structură ciclică, valoarea expresiei condiționale (condiție) înainte de executarea următorului pas al ciclului este mai întâi verificată. Dacă expresia condiționată este adevărată, corpul buclei va fi executat. După care starea va fi verificată din nou. Aceste acțiuni vor fi repetate până când valoarea expresiei condiționate devine falsă, apoi bucla se va termina.

Particularitatea acestui tip de buclă este că, dacă valoarea expresiei condiționale este inițial falsă, corpul buclei nu va fi executat deloc.

Bucla cu postcondiție

În această construcție ciclică, ca și în cea anterioară, numărul de repetări ale corpului buclei nu este determinat în prealabil; acesta va depinde de parametrii de intrare. O trăsătură distinctivă a unei bucle cu o precondiție este că corpul buclei cu o postcondiție va fi în orice caz executat cel puțin o dată și numai după aceea condiția va fi verificată. În această construcție, corpul buclei este executat până când valoarea expresiei condiționale este falsă. Odată ce devine adevărată, execuția comenzii se va opri.

În problemele reale, de regulă, există orice număr de cicluri.

Mai jos sunt diagrame bloc ale algoritmilor ciclici.

Tipuri de date: simple și structurate

Datele reale procesate de program includ numere întregi și reale, valori logice și simboluri. Ele aparțin unor tipuri de date simple și se numesc de bază. Toate datele procesate de un computer sunt stocate în celulele sale de memorie, fiecare având propria sa adresă. În limbajele de programare, există variabile care vă permit să ignorați adresele celulelor de memorie și să le accesați folosind un nume (identificator).

Definiția 5

Variabil este un obiect numit (celula de memorie) care își schimbă valoarea.

Numele variabilei indică valoarea, dar adresa și metoda de stocare a acesteia rămân ascunse de programator. Pe lângă nume și valoare, variabilele au propriul lor tip, ceea ce ajută la determinarea tipului de informații care se află în memorie.

Tipul variabilei este specificat de:

  • metoda utilizată pentru înregistrarea informațiilor în celulele de memorie;
  • cantitatea de memorie necesară pentru a-l stoca.

Pentru fiecare tip, cantitatea de memorie este determinată astfel încât să poată fi plasată în el orice valoare din intervalul de valori permis pentru acest tip.

Definiția 6

Sunt numite variabilele care sunt prezente în program pe toată perioada de funcționare a acestuia static .

Definiția 7

Sunt numite variabilele care sunt create și distruse în diferite etape ale execuției programului dinamic .Definiţia 10

Matrice Ei numesc un set ordonat de cantități de același tip care au un nume comun și numere de serie ale elementelor (indici).

Elementele unei matrice sunt stocate în memoria computerului din apropiere, spre deosebire de elementele individuale. Matricele se disting prin numărul de indici de elemente.

O matrice unidimensională este caracterizată prin prezența unui singur indice pentru fiecare element. Exemple de tablouri unidimensionale sunt secvențele geometrice și aritmetice, care definesc serii finite de numere.

Definiția 11

Numărul de elemente dintr-o matrice este numit dimensiune .

Pentru o matrice unidimensională, dimensiunea sa este scrisă lângă nume între paranteze.

Elementele unui tablou unidimensional sunt introduse element cu element, în ordinea necesară pentru rezolvarea unei anumite probleme. Dacă este necesar să introduceți întregul tablou, elementele sunt introduse în ordinea indexului crescător.

algoritm de programare discretă

Datele reale pe care programul le procesează sunt numere întregi, numere reale, simboluri și valori logice. Aceste tipuri de date simple sunt numite de bază. Toate datele procesate de un computer sunt stocate în celule de memorie ale computerului, fiecare având propria sa adresă. Pentru a nu ține evidența la care adresă vor fi scrise cutare sau cutare date, limbajele de programare folosesc conceptul de variabilă , permițându-vă să ignorați adresa unei celule de memorie și să o accesați folosind numele ( identificator).

Variabil - există un obiect numit (celula de memorie) care își poate schimba valoarea. Nume variabila indică sens, iar metoda de stocare și adresa acesteia rămân ascunse programatorului. Pe lângă numele și valoarea sa, o variabilă are tip, determinând ce informații se află în memorie. Tip seturi de variabile:

  • * metoda utilizată pentru înregistrarea informațiilor în celulele de memorie;
  • * cantitatea de memorie necesară pentru a-l stoca.

Cantitatea de memorie pentru fiecare tip este determinată în așa fel încât să poată găzdui orice valoare din intervalul valid de valori de acest tip. De exemplu, tipul de octet poate lua valori de la 0 la 255, care în cod binar (255 = 11111111 2) corespunde unei celule de memorie lungă de 8 biți (sau 1 octet).

În algoritmii descriși mai sus, toate datele sunt stocate sub formă de variabile. De exemplu, instrucțiunea „Introduceți două numere A, b"înseamnă că utilizatorul introduce valorile a două variabile, iar instrucțiunea „K=K+1” înseamnă creșterea valorii variabilei K cu una.

Dacă variabilele sunt prezente într-un program pe toată durata de funcționare a acestuia, acestea sunt apelate static. Sunt numite variabilele care sunt create și distruse în diferite etape ale execuției programului dinamic.

Toate celelalte date din program, ale căror valori nu se modifică pe parcursul funcționării sale, sunt numite constante sau permanent. Constanțele, ca și variabilele, au un tip. Ele pot fi indicate în mod explicit, de exemplu, în instrucțiunea „K = K + 1” 1 există o constantă sau, pentru comoditate, pot fi desemnate prin identificatori: pi = 3.1415926536. Doar sensul pi nu poate fi schimbat deoarece este o constantă, nu o variabilă.

Pentru a îmbunătăți productivitatea și calitatea muncii, este necesar să existe date cât mai apropiate de analogii reali. Este numit un tip de date care permite stocarea mai multor variabile împreună sub un singur nume structurat. Fiecare limbaj de programare are propriile sale tipuri structurate. Să luăm în considerare o structură care combină elemente de același tip de date - o matrice .

Matrice este o colecție ordonată de cantități de același tip care au o denumire comună, ale căror elemente sunt adresate (distinse) prin numere de serie (indici). Ca o ilustrare, ne putem imagina un dulap care conține multe sertare numerotate (totalitatea este „Cutie nr. 1”, „Cutie nr. 2”, „Cutie nr. 3” etc.; „Cutie” este denumirea generală a tuturor elementele sale). Accesul la conținutul unei anumite casete (element de matrice) se realizează după selectarea casetei după numărul său (index). Elementele unei matrice în memoria computerului sunt stocate în apropiere; elementele individuale de tip simplu nu implică o astfel de aranjare a datelor în memorie. Matricele diferă prin numărul de indici care își definesc elementele.

Matrice unidimensională(un dulap cu sertare pe un rând) presupune că fiecare element are un singur index. Exemple de tablouri unidimensionale sunt secvențele aritmetice și geometrice care definesc serii finite de numere. Numărul de elemente dintr-o matrice este numit dimensiune. Când definiți o matrice unidimensională, dimensiunea acesteia este scrisă în paranteze lângă numele său. De exemplu, dacă spune: „matricea A(10) este dată”, aceasta înseamnă că elementele sunt date: A R A 2 ,…, A IG . Să luăm în considerare algoritmii pentru procesarea elementelor de tablouri unidimensionale.

Elementele unui tablou unidimensional sunt introduse element cu element, în ordinea necesară pentru rezolvarea unei anumite probleme. De obicei, atunci când trebuie să introduceți o întreagă matrice, ordinea în care sunt introduse elementele nu este importantă, iar elementele sunt introduse în ordinea crescătoare a indicilor lor.

3.2.1 Tipuri de date simple și structurate. Structuri de date - înregistrări, matrice, liste.

Variabile

În timpul programării, este de obicei necesar să vă amintiți o anumită cantitate de date (rezultate intermediare, evenimente care au avut loc, date de intrare, date de ieșire etc.). Aceste valori trebuie păstrate în memorie. Pentru a face acest lucru, este declarată o locație în memorie care este utilizată pentru stocarea datelor și această locație declarată se numește variabilă. Deoarece datele care sunt stocate pot fi foarte diferite, la declararea unei variabile se declară și tipul de date care vor fi stocate în această variabilă (tip de variabilă).

Tipuri simple

Pentru o variabilă de tip simplu, o singură valoare (deseori citită ca număr) este ascunsă sub un cuvânt cheie și poate fi accesată direct. Cele mai cunoscute tipuri simple sunt: ​​întreg cu semn, întreg fără semn, număr fracționar (cu virgulă), simbol, boolean. Ele pot diferi ușor în diferite limbi.

Tipuri structurate

În cazul tipurilor structurate, mai multe valori comune sunt grupate sub un singur cuvânt cheie, cum ar fi coordonatele unui punct sau numele și prenumele unei persoane. În această formă, setul de date este mai ușor de transferat simultan. În același timp, trebuie să utilizați sau să modificați datele din cadrul structurii pe rând.

Matrice

O matrice este o colecție de date de același tip care au același nume și sunt separate între ele printr-un index. Matricele facilitează foarte mult procesarea datelor de același tip. Ușurința procesării rezultă din faptul că în timpul execuției programului puteți schimba pur și simplu indexul și astfel accesați mai ușor variabila necesară. Preluarea valorii unei variabile dintr-o matrice folosind un număr ordinal este o sarcină destul de rapidă pentru un computer.

Matricele pot fi unidimensionale (rând, rând), bidimensionale (tabel, matrice), tridimensionale (cub) etc.

Exemplu (C#, Java)

int masa = newint ; //creăm o matrice pentru a stoca zece numere întregi

masa=1; //valoarea 1 este scrisă la indexul 0

Lectură suplimentară: http://enos.itcollege.ee/~jpoial/java/i200loeng4.html

Postări

Înregistrările sunt folosite pentru a stoca diferite tipuri de date care împreună formează un set înrudit. De exemplu, înregistrarea unei persoane este formată din următoarele date: prenume (text), prenume (text), sex (valoare booleană, 0 - femeie, 1 - bărbat), greutate (număr fracționar). Aceste date formează un întreg atunci când descriu o persoană, cu toate acestea, ele însele sunt de tipuri foarte diferite.

Exemplu (C#)

structinimene {

publicstring eesnimi;

publicstring perenimi;

publicbool sex;

plutitor public greutate;

Cu această intrare, putem crea o variabilă kasutaja (utilizator) și atribui utilizatorului valorile prenume, prenume, sex și greutate:

inimene kasutaja;

kasutaja.eesnimi ="Jaan" ;

kasutaja.perenimi ="Mets" ;

kasutaja.sex = 1;

kasutaja.greutate = 80,0;

Liste și copaci

În prezent, listele sunt adesea folosite pentru a stoca date. Dacă fiecare element al unei liste indică elementul care îl urmează, atunci este o listă legată; sfârșitul unei astfel de liste este indicat de un element gol (null). O listă legată, în care fiecare element indică doar următorul, se numește listă unidirecțională. O listă legată, în care fiecare element indică elementele următoare și precedente, se numește bidirecțională. O listă legată în care nu există primul și ultimul element și fiecare element indică următorul se numește listă circulară. Lungimea unei liste legate este determinată de numărul de elemente ale acesteia. Primul element al listei este capul, iar elementele rămase sunt coada.

O stivă este o listă legată în care ultimul element adăugat este citit primul (LIFO - Last In First Out).

O coadă este o listă legată în care elementul adăugat primul este citit primul (FIFO - First In First Out).

Lectură suplimentară: http://www.cs.tlu.ee/~inga/alg_andm/linked_list_C_2011.pdf

Un arbore este o structură de date în care datele sunt plasate sub forma unui arbore, constă din vârfuri (English Node) și arce (English Edges) care leagă vârfurile (pointerii). Vârfurile care sunt conectate prin arce de vârful situat deasupra se numesc copii, iar vârful situat deasupra în acest caz este părintele. Vârful cel mai de sus este rădăcina. Un vârf care nu are copii se numește frunză.

Trecerea de sus la părinte și de acolo la următorul părinte etc. ajungem la rădăcină. Strămoșii sunt toate nodurile situate pe calea de la vârful în cauză până la rădăcină. Înălțimea copacului este determinată de calea cea mai lungă de la frunză la rădăcină.

În cazul unui arbore ordonat, rădăcina și vârfurile conectate direct la acesta sunt definite ca noduri de prim nivel (copiii rădăcinii), iar vârfurile conectate direct la vârfurile de primul nivel sunt vârfuri de nivelul al doilea (copiii vârfurilor de primul nivel) și etc. .; Ordinea copiilor de la stânga la dreapta este de asemenea importantă.

Lectură suplimentară: http://www.cs.tlu.ee/~inga/alg_andm/tree_gen_2011.pdf

Un arbore binar este un arbore în care fiecare părinte poate avea un copil, doi copii sau deloc, iar ordinea copiilor este importantă.

Un arbore binar de căutare este un arbore binar care este ordonat. În stânga vârfului există întotdeauna un număr mai mic, iar în dreapta este întotdeauna unul mai mare.

La căutarea unui astfel de arbore, valoarea căutată este comparată cu rădăcina, iar dacă valoarea căutată este egală cu rădăcina, atunci aceasta există și este găsită. Dacă valoarea dorită nu este egală cu rădăcina, atunci operația de comparare continuă mai departe, respectiv, comparând cea dorită cu un set de vârfuri situate în dreapta sau în stânga până ajung la frunze. Dacă valoarea căutată este egală cu valoarea unuia dintre vârfuri, atunci elementul căutat este găsit și există, dar dacă un astfel de vârf nu este găsit, atunci elementul căutat nu există în acest arbore. Această metodă de căutare este de multe ori mai rapidă decât o parcurgere completă a unei matrice sau a unei liste legate.

Un arbore B este un arbore de căutare în care numărul de copii la fiecare nod este în intervalul de la (t-1) la (2t-1), unde t este orice constantă.

Un arbore B* este un arbore B în care vârfurile sunt umplute până la 2/3 prin umplerea mai întâi a două vârfuri copil prin redistribuirea cheilor și apoi împărțirea lor în 3 vârfuri.

Datorită acestui fapt, arborele B vă permite să păstrați adâncimea copacului mai mică decât cea a unui arbore binar. Prin limitarea umpluturii, este posibil și la niveluri intermediare să se păstreze cantitatea de memorie utilizată în limite bine definite și, în același timp, să se poată adăuga imediat date în locația corespunzătoare.

Tipurile structurate se caracterizează prin multiplicitatea elementelor care formează acest tip, adică. au mai multe componente. Fiecare componentă, la rândul său, poate aparține unui tip structurat, adică. Este permisă imbricarea tipurilor.

Matrice reprezintă o uniune formală a mai multor obiecte de același tip (numere, simboluri, șiruri etc.), considerate ca un singur întreg. Toate componentele matricei sunt date de același tip.

Vedere generală a definiției unui tablou:

Tip A = matrice [tip index matrice] din [tip component matrice]

De exemplu, M1=matrice de real;

Siruri de caractere este o matrice de caractere, dar numărul de caractere dintr-o linie poate varia. Șirul este tratat ca un lanț de caractere de lungime arbitrară. Numărul maxim de caractere nu este mai mare de 255. Fiecare caracter din rând are propriul index (număr).

Record este o structură de date formată dintr-un număr fix de componente numite câmpuri de înregistrare. Spre deosebire de o matrice, componentele de înregistrare (câmpurile) pot fi de diferite tipuri. Înregistrările vă permit să combinați valori de diferite tipuri.

Luna: (Ian, Feb, Mar, Apr, Mai, Iun, Iulie, Aug, Sept, Oct, Noi, Dec);

Anul: 2000..2050;

Seturi– acestea sunt seturi de obiecte similare care sunt conectate logic între ele. Numărul de elemente incluse într-o mulțime poate varia de la 0 la 256. Din inconstanța elementelor lor seturile se deosebesc de matrice și înregistrări.

Cifre = set de 1..5;

Fişier– zonă denumită a memoriei externe. Un fișier conține componente de același tip, altele decât fișierele (adică, nu puteți crea un „fișier de fișiere”). Lungimea fișierului nu este specificată și este limitată doar de capacitatea dispozitivelor de memorie externe.

F: Fișierul întregului;

Ne vom familiariza mai mult cu tipurile structurate pe măsură ce studiem în continuare limba.

      1. Indicator (tip de referință)

Conține adresa unui octet de memorie care conține o valoare de date de un anumit tip. Acest tip este numit și tip de referință. Descrierea folosește caracterul ^ și un identificator de tip. De exemplu, P=^intger;

Utilizarea pointerilor este un mijloc flexibil de gestionare a memoriei dinamice și oferă capacitatea de a procesa matrice mari de date.

    1. constante

Constant este o cantitate a cărei valoare nu se modifică în timpul execuției programului.

    Numeric constantele sunt folosite pentru a scrie numere. Se disting următoarele tipuri:

Întreg numere: scrise cu semnul + sau - sau fără semn, conform regulilor aritmetice obișnuite: -10 +5 5

Real numerele pot fi scrise în una din două forme:

intrare regulată : 2.5 -3.14 2. - se observă că partea întreagă este separată de partea fracțională prin simbolul punctului;

exponenţială formă: în această notație, un număr real este reprezentat ca m*10 p, unde m este mantisa sau baza numerică, 0,1≤|m|≤1, p – Ordin numere, aceasta este o constantă întreagă. Într-adevăr, orice număr real poate fi reprezentat în formă exponențială:

153.5 -0.1535*10 3

99.005 0.99005*10 2

Toate computerele compatibile cu IBM stochează numere reale ca o combinație de mantisă și exponent, permițând simplificarea operațiunilor asupra acestora folosind o aritmetică specială care tratează separat mantisa și exponentul. Pentru a scrie programatic un număr în formă exponențială, în loc de „înmulțire cu 10 la putere”, utilizați notația E sau e(Latin):

153,5 -0,1535*10 3 -0,1535E3 sau -1,535E02

99,005 0,99005*10 2 0,99005E+2 sau 9,9005e+01

Fără a lua măsuri speciale, un program Pascal va afișa numere reale pe ecran și imprimantă exact în această formă. În plus, această formă este convenabilă pentru a scrie numere foarte mici și foarte mari:

Deoarece dimensiunea memoriei alocată pentru mantise și ordine este limitată, atunci numerele reale sunt întotdeauna reprezentate în memoria computerului cu unele erori. De exemplu, cea mai simplă fracție reală 2/3 dă 0,666666 în reprezentare zecimală... și, indiferent de dimensiunea memoriei alocată pentru stocarea numărului, este imposibil de stocat Toate semnele sale în partea fracționată. Una dintre problemele tipice de programare este luarea în considerare a posibilelor erori atunci când lucrați cu numere reale.

Numerele hexazecimale constau din cifre hexazecimale precedate de semnul $. Intervalul de numere hexazecimale este de la $00000000 la $FFFFFFFF.

Pe lângă constantele numerice, există și alte tipuri de constante:

    joc de inteligență constante.

Acestea servesc pentru a verifica adevărul sau falsitatea anumitor condiții din program și nu pot decât să accepte una dintre cele două valori: cuvânt funcție Adevărat reprezintă adevărul şi fals- minciună;

    Caracter constante.

Poate prelua valoarea oricărui caracter imprimabil și sunt scrise ca caracterul inclus în apostrofe("ghilimele simple"):

În acest din urmă caz, valoarea constantei caracter este egală cu caracterul spațiu. Dacă doriți să scrieți simbolul apostrof în sine ca o constantă de caracter, acesta este dublat în interiorul apostrofurilor exterioare: """"

Constantele de caractere includ, de asemenea, constante de forma #X, unde X este o valoare numerică de la 0 la 255 inclusiv, reprezentând o zecimală ASCII-cod simbol. Tabelele cu codurile ASCII utilizate de sistemele de operare DOS și Windows sunt prezentate în Anexa 1. De exemplu, valoarea #65 ar corespunde codului de caracter latin „A”.

    Şir constante.

Acestea sunt orice secvențe de caractere incluse în apostrofe. De regulă, constantele șir sunt utilizate pentru a înregistra solicitările de introducere a datelor emise de program, pentru a afișa mesaje de diagnosticare etc.:

„Introduceți valoarea X:”

Dacă este necesar să scrieți caracterul apostrof însuși într-o constantă șir, acest lucru se face în același mod ca și pentru constantele de caractere.

Constantele din Turbo Pascal pot fi numite. Anonim constantele sunt utilizate, de exemplu, la afișarea textului mesajelor din exemplul anterior. Constante numite sunt descrise în secțiunea de descriere a programului de către un operator sub următoarea formă:

const Nume1=Valoare1;

Nume2=Valoare2;

NumeN=ValoareN;

Aici, cuvântul cheie const indică începutul secțiunii pentru declarațiile constante denumite. Este clar că deseori este mai convenabil să se facă referire la o constantă prin nume decât să rescrie valoarea sa numerică sau șir de fiecare dată. Exemplu de secțiune de constante:

const e=2,7182818285;

lang="Turbo Pascal 7.1";

Aceasta descrie o constantă numerică e cu valoarea bazei logaritmului natural și o constantă șir numită lang care conține șirul „Turbo Pascal 7.1”.

Fiecare nume dat de programator trebuie să fie unicîn cadrul unui singur program. Dacă includem această secțiune în programul nostru, nu vom mai putea crea în ea alte obiecte numite e și lang.

  • Serghei Savenkov

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