Secțiuni de site
Alegerea editorului:
- Crearea unei comenzi rapide pe desktop pentru colegii de clasă
- Dacă pantofii nu se potrivesc cu Aliexpress: acțiunile corecte în acest caz Produsul Aliexpress are mărimea potrivită
- Disputa pe AliExpress Alăturați-vă disputei pe AliExpress
- 3 baze de informații distribuite
- Manager de conținut - responsabilități, salariu, pregătire Dezavantaje și avantaje de a lucra ca specialist în conținut
- Cum să te protejezi de minerit ascuns în browser?
- Recuperarea parolei în Ask
- Cum să pornești camera de pe un laptop
- De ce nu se redă muzica pe VKontakte?
- Cum să măriți dimensiunea unității C în detrimentul unității D fără a pierde date
Publicitate
2 tipuri principale de date de bază și structurate. Proiecte de algoritm de bază |
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 urmărește, 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 primului 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. Există întotdeauna un număr la stânga vârfului dimensiune mai micăși întotdeauna este mai mult în dreapta. 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. Compozit, sau structural, tipurile de date, spre deosebire de cele simple, definesc seturi de valori complexe cu un singur nume comun. Putem spune că tipurile structurale definesc un anumit mod de a crea noi tipuri de date pe baza celor existente. Astfel, este posibil să se formeze structuri de date de complexitate arbitrară, făcând astfel posibilă realizarea unei reprezentări adecvate în program a datelor cu care operează. Există mai multe metode de structurare, fiecare diferă prin felul în care se referă la componentele individuale și, prin urmare, prin modul în care se referă la componentele incluse în datele de structură. În funcție de metoda de organizare și tipul de componente în tipurile de date complexe, se disting următoarele soiuri:
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. Literatură
Capitolul 6. STRUCTURAT 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: a) î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.
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 exact î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. .
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[<сп.инд.типов>] din<тип> 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 diverse 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 mixtă. 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 este numită goală Este inconstanța numărului de elemente care se deosebește de matrice și înregistrări). Două mulțimi sunt considerate echivalente dacă și numai dacă toate elementele lor sunt aceleași, iar ordinea elementelor 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 se referă fie la o zonă numită memorie externă Un PC sau un dispozitiv logic este 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”. lungime din nou fișier creat nu este specificat în niciun fel când este anunțat ș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 de clauza FILE OF...); · fișiere text(definit de tipul TEXT); · fișiere netipizate (definite de tipul FILE). Despre conversie tipuri numerice Date 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. LA tipuri simple Acestea includ tipurile ordinale, reale și datetime. Tipurile ordinale sunt diferite prin faptul că au fiecare 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. Tipurile 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. Tipul datetime este conceput pentru a stoca data și ora. De fapt, folosește formatul real în aceste scopuri. Tipuri ordinaleTipurile 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ă valoarea ordinală a expresiei X. Orez. 1.1 Pentru tipurile întregi, funcția ord(x) returnează însăși valoarea lui x, adică Ord(X) = x pentru x aparținând oricărui tip întreg. Aplicarea Ord(x) la tipurile boolean, caracter și enumerare produce un număr întreg pozitiv în intervalul 0 la 1 (boolean), 0 la 255 (caracter), 0 la 65535 (enumerare). Un tip de interval reține toate proprietățile tipului ordinal subiacent, astfel încât rezultatul aplicării funcției ord(x) la acesta depinde de proprietățile acelui 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
Tipurile LongWord și Int64 au fost introduse pentru prima dată în versiunea 4, dar tipurile Smallint și Cardinal au fost absente din Delphi 1. Tipul întreg pentru această versiune ocupă 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ântul, este permis Byte (dar nu invers), Longint „include” 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 tip Byte, Shortint, Word, Integer și, respectiv, 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
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, atunci când lucrați cu shortint și word, tipul comun va fi întreg. ÎN setare standard Compilatorul Delphi nu produce cod care controlează dacă o valoare este în afara intervalului, ceea ce poate duce la neînțelegeri. Tipuri logice. Tipurile booleene includ Boolean, ByteBool, Bool, wordBool și LongBool. În Pascal standard, este definit doar tipul Boolean, celelalte tipuri logice sunt introduse în Object Pascal pentru compatibilitate cu Windows: tipurile Boolean și ByteBool ocupă câte un octet, Bool și WordBool - 2 octeți, LongBool - 4 octeți. Valorile booleene pot fi una dintre constantele pre-declarate 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 valoarea booleană Ord(True) = +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 cele ce urmează pentru buclă nu va fi executat niciodată: pentru L:= Fals la True do ShowMessage("--); Dacă modificați tipul parametrului buclei L din exemplul anterior la boolean, bucla va rula și mesajul va apărea pe ecran de două ori. [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. Fonturi standard Windows Arial Cyr, Courier New Cyr și Times Nou Roman pentru a reprezenta caractere chirilice (fără literele „ё” și „Ё”) se folosesc ultimele 64 de coduri (de la 192 la 256): „A”... „I” sunt codificate cu valorile 192..223, „a”... „i” - 224...255. Simbolurile „Ё” și „е” au codurile 168 și, respectiv, 184. Tabelul 1.3 - Codificarea caracterelor în conformitate cu standardul ANSI 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. Tipul char aplică operații relaționale, precum și funcții încorporate: Сhar (в) - funcție de tip char; convertește o expresie de tip Byte într-un caracter și o returnează cu valoarea ei; UpCase(CH) - funcție de tip char; se întoarce majusculă, dacă сн este o literă latină minusculă, altfel returnează simbolul сн însuși (pentru alfabetul chirilic returnează caracterul original). Tip enumerat. Un tip enumerat este specificat printr-o enumerare a valorilor pe care le poate primi. Fiecare valoare este denumită printr-un identificator și se află într-o listă înconjurată de paranteze, de exemplu: culori = (rosu, alb, albastru); Utilizarea tipurilor enumerate face programele mai vizuale. Corespondența dintre valorile unui tip enumerat și numerele ordinale ale acestor valori se stabilește prin ordinea de enumerare: prima valoare din listă primește numărul ordinal 0, a doua - 1 etc. Putere maxima tipul enumerat are 65536 de valori, astfel încât tipul enumerat definește de fapt un subset al întregului cuvânt tip și poate fi considerat ca o declarație compactă a unui grup de constante întregi cu valori 0, 1 etc. Utilizarea tipurilor enumerate crește fiabilitatea programelor, permițându-vă să controlați valorile pe care le primesc variabilele corespunzătoare. Obiectul Pascal permite conversia inversă: orice expresie de tip Word poate fi convertită într-o valoare a unui tip enum, atâta timp cât valoarea expresiei întregi nu depășește cardinalitatea acelui tip. Această conversie se realizează prin utilizarea unei funcții declarate automat cu numele tipului enumerat. Tip-gamă. Un tip de interval este un subset al tipului său de bază, care poate fi orice tip ordinal, cu excepția unui tip de interval. Un tip de interval este definit de limitele valorilor sale în cadrul tipului de bază: <мин.знач.>..<макс.знач.> Aici<мин. знач. >- valoarea minimă a intervalului de tip;<макс. знач. >- valoarea sa maximă. Tipul intervalului nu trebuie să fie descris în secțiunea tip, dar poate fi specificat direct la declararea variabilei. Când determinați un tip de interval, trebuie să urmați următoarele reguli: două caractere „..” sunt tratate ca un singur caracter, deci nu sunt permise spații între ele; marginea din stânga a intervalului nu trebuie să depășească marginea din dreapta. Un tip de interval moștenește toate proprietățile tipului său de bază, dar cu limitările puterii sale mai mici. În special, dacă este definită o variabilă. Biblioteca standard Object Pascal include două funcții care acceptă lucrul cu tipuri de intervale: High(x) - returnează valoarea maximă a tipului intervalului căruia îi aparține variabila x; Scăzut (x) - returnează valoarea minimă a tipului intervalului. 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 exact în PC, valorile tipurilor reale definesc un număr arbitrar doar cu o precizie finită în funcție de formatul intern al numărului real. . Tabelul 1.4 - Tipuri reale În precedent versiuni Delphi 1...3 Tipul real a ocupat 6 octeți și a avut un interval de valori de la 2,9*10-39 la 1,7*1038. În versiunile 4 și 5, acest tip este echivalent cu tipul Double. Dacă doriți (din motive de compatibilitate) să utilizați Reals pe 6 octeți, trebuie să specificați o directivă a compilatorului (SREALCOMPATIBILITY ON). După cum se vede din tabel. 1.4, un număr real din Object Pascal ocupă de la 4 până la 10 octeți alăturați și are următoarea structură în memoria PC. Aici s este cifra semnului numărului; e - parte exponenţială; conține ordine binară; m este mantisa numărului. Mantisa m are o lungime de la 23 (pentru single) la 63 (pentru Extended) cifre binare, ceea ce asigură o precizie de 7...8 pentru single și 19...20 pentru Extended zecimal digits. Punctul zecimal (virgula) este implicat înaintea cifrei din stânga (cea mai semnificativă) a mantisei, dar atunci când se operează pe un număr, poziția acestuia este deplasată la stânga sau la dreapta, în conformitate cu ordinea binară a numărului stocat în partea exponențială. , prin urmare operațiile pe numere reale se numesc aritmetică în virgulă mobilă (virgulă). Rețineți că coprocesorul aritmetic prelucrează întotdeauna numerele în format Extended, iar celelalte trei tipuri reale în acest caz sunt obținute prin simpla trunchiere a rezultatelor la dimensiunea necesară și sunt folosite în principal pentru a economisi memorie. O poziție specială în Object Pascal este ocupată de tipurile comp și Currency, care sunt tratate ca numere reale cu părți fracționale de lungime fixă: în comp partea fracțională are o lungime de 0 cifre, adică pur și simplu lipsește, în monedă. lungimea părții fracționale este de 4 zecimale. De fapt, ambele tipuri definesc un întreg mare cu semn care stochează 19...20 de cifre zecimale semnificative (intern ele ocupă 8 octeți adiacenți). În același timp, expresiile comp și currency sunt pe deplin compatibile cu orice alte tipuri reale: toate operațiunile reale sunt definite pe ele, pot fi folosite ca argumente pentru funcții matematice etc. Cel mai potrivit domeniu de aplicare pentru aceste tipuri este calcule contabile. |
Citire: |
---|
Popular:
Nou
- Dacă pantofii nu se potrivesc cu Aliexpress: acțiunile corecte în acest caz Produsul Aliexpress are mărimea potrivită
- Disputa pe AliExpress Alăturați-vă disputei pe AliExpress
- 3 baze de informații distribuite
- Manager de conținut - responsabilități, salariu, pregătire Dezavantaje și avantaje de a lucra ca specialist în conținut
- Cum să te protejezi de minerit ascuns în browser?
- Recuperarea parolei în Ask
- Cum să pornești camera de pe un laptop
- De ce nu se redă muzica pe VKontakte?
- Cum să măriți dimensiunea unității C în detrimentul unității D fără a pierde date
- Cauzele defecțiunilor de pe placa de bază Dacă chipsetul de pe placa de bază se arde