Jednostavni tipovi podataka u pascalu. Vrste varijabli u Pascalu: opis, svojstva, primjeri

Kada opisujete varijablu, morate navesti njenu vrstu. Tip varijable opisuje skup vrijednosti koje može poduzeti i radnje koje se na njoj mogu izvesti. Opis tipa definira identifikator koji označava tip.

Jednostavni tipovi se dijele na standardne (redni) i nabrajali (ograničeni).

Standardni tipovi

Turbo Pascal ima četiri ugrađene standardne vrste: cijeli broj (cijeli broj), stvarni (stvarni), boolean (logički) i char (znak).

Tip celog broja

Turbo Pascal ima pet ugrađenih cjelobrojnih tipova: shortint (kratki cijeli broj), cijeli broj (cijeli broj), longint (dugi cijeli broj), bajt (dužina bajta) i riječ (dužina riječi). Svaka vrsta označava određeni podskup celih brojeva, kao što je prikazano u sledećoj tabeli.

Ugrađeni cijeli brojevi.

Domet

Format

8 bita sa znakom

16 bita sa znakom

2147483648 +2147483647

32 bita sa znakom

8 nepotpisanih bita

16 nepotpisanih bita

Aritmetičke operacije na operandima celog broja provode se u skladu sa sljedećim pravilima:

  1. Ugrađena je vrsta cjelobrojne konstante cijeli broj s najmanjim rasponom, uključujući vrijednost ove cjelobrojne konstante.
  2. U slučaju binarne operacije (operacija koja koristi dva operanda), oba se operanda pretvaraju u njihov zajednički tip prije nego što se na njima izvrši akcija. Generički tip je ugrađeni cijeli broj s najmanjim rasponom koji uključuje sve moguće vrijednosti obje vrste. Na primjer, uobičajeni tip za cijeli i cijeli broj duljina bajta je cijeli broj, a opći tip za cijelu i cijelu duljinu riječi je dugi cijeli broj. Radnja se izvodi u skladu s tačnošću općeg tipa, a vrsta rezultata je općeg tipa.
  3. Izraz na desnoj strani u operateru dodjele izračunava se bez obzira na veličinu varijable na lijevoj strani.

Operacije izvedene na cijelim brojevima:

„+“ - dodatak

„-“ - oduzimanje

„*“ - množenje

SQR - kvarenje

DIV - nakon podjele odbacuje frakcijski dio

MOD - dobivanje cijelog ostatka nakon podjele

ABS - brojni modul

RANDOM (X) - dobivanje slučajni broj od 0 do x

A: \u003d 100; b: \u003d 60; rezultat DIV b - 1 i MOD b rezultat - 40

Varijable cijelog tipa su opisane na sljedeći način:

var lista varijabli: tip;

Na primjer: var a, p, n: cijeli broj;

Pravi tip

Stvarni tip je podskup realnih brojeva koji se mogu predstaviti u obliku s pomičnom tačkom s fiksnim brojem cifara. Pisanje vrijednosti u formatu s pomičnom tačkom obično uključuje tri vrijednosti - m, b i e - takve da je m * b e, gdje je b uvijek 10, a m i e su cjelobrojne vrijednosti u rasponu stvarnog tipa. Ove vrijednosti m i e dalje određuju raspon i točnost vrste materijala.

Postoji pet vrsta materijala: pravi, singl, duble, exnende, comp. Stvarne vrste razlikuju se u rasponu i točnosti vrijednosti koje su s njima povezane.

Raspon i decimalne znamenke za stvarne tipove

Domet

Brojke

2,9x10E-39 do 1,7x10E 38

1,5x10E-45 do 3,4x10E 38

5,0x10E-324 do 1,7x10E 308

3,4x10E-493 do 1,1x10E 403

2E 63 do 2E 63

Operacije izvedene na stvarnim brojevima:

  • Sve operacije vrijede za cijele brojeve.
  • SQRT (x) je kvadratni korijen x.
  • SIN (X), COS (X), ARCTAN (X).
  • LN (X) je prirodni logaritam.
  • EXP (X) - eksponent X (e x).
  • EXP (X * LN (A)) - eksponencija (A x).
  • Funkcije pretvorbe tipa:
    • TRUNC (X) - odbacuje frakcijski dio;
    • Zaokruživanje kruga (X).
  • Neka pravila aritmetičkih operacija:
    • Ako u aritmetičko djelovanje Ako se nađu stvarni i cijeli brojevi, rezultat će biti tip stvarni.
    • Sve komponente izraza su napisane u jednom retku.
    • Koriste se samo zagrade.
    • Ne možete staviti dva aritmetička znaka u nizu.

Stvarne vrste su opisane kako slijedi:

var lista varijabli: tip;

Na primjer:

var d, g, k: pravi;

Vrsta karaktera (char)

Vrsta char je svaki lik zatvoren u apostrofe. Da biste apostrof predstavili kao simboličku varijablu, morate ga priložiti u apostrof: '' ''.

Svaki znak ima svoju šifru i broj. Serijski brojevi brojeva 0,1..9 razvrstani su uzlaznim redoslijedom. Redoslovni brojevi slova također su razvrstani uzlaznim redoslijedom, ali ne moraju nužno slijediti jedni druge.

Uporedne oznake primjenjuju se na znakovne podatke:

> , < , >=, <=, <> .

Na primjer: 'A'< ‘W’

Funkcije koje se primjenjuju na varijable znakova:

  1. ORD (X) - definira serijski broj znaka X. ord ('a') \u003d 97;
  2. CHR (X) - identificira znak po broju. chr (97) \u003d 'a';
  3. PRED (X) - izdaje znak ispred X. pred ('B') \u003d 'A';
  4. SUCC (X) - izdaje znak koji prati znak X. succ ('A') \u003d 'B';

Nabrojeni tip

Nabrojeni tip podataka je nazvan tako jer je naveden kao nabrajanje konstanti u strogo definiranom redoslijedu i u strogo određenoj količini. Nabrojeni tip se sastoji od popisa konstanti. Varijable ovog tipa mogu uzeti vrijednost bilo koje od ovih konstanti. Opis nabrojanog tipa ima oblik:

Tip<имя типа>\u003d (lista konstanti); Var<имя переменной>:<имя типа>;

gde<список констант> - ovo je posebna vrsta konstanta, određena zarezom i koja ima svoj serijski broj, počevši od 0.

Na primjer:

tip smjera \u003d (sjever, jug, zapad, istok); mesec \u003d (jun, juli, avgust, januar); kapacitet \u003d (kanta, sod, kanister, rezervoar); rotacija var: smjer; polazak: mesec; zapremina: kapacitet; rotacija var: (sjever, jug, zapad, istok); Polazak: (jun, juli, avgust, januar); zapremina: (kanta, sod, kanister, rezervoar);

Možete izvršiti sljedeće operatore dodjele:

Skrenite: \u003d jug; Polazak: \u003d kolovoz; zapremina: \u003d rezervoar;

ali ne možete izvršavati mešovite zadatke:

Polazak: \u003d jug; zapremina: \u003d kolovoz;

Sljedeće se funkcije primjenjuju na nabrojane varijable tipa:

1. ORD - serijski broj

2. PRED - prethodni element

3. SUCC - sljedeći element.

PRED (bačva) \u003d kanta; SUCC (jug) \u003d zapad; ORD (srpanj) \u003d 1;

Nabrojene varijable tipa mogu se uporediti, kao što su poredane i numerirane. Dakle izrazi: sjever< юг, июнь < январь имеют значения TRUE, а юг>zapad i tenk<бочка значение FАLSE.

Ograničeni tip

Ako varijabla ne prihvati sve vrijednosti svog tipa, već samo u određenom rasponu, onda se može smatrati varijablom ograničenog tipa. Svaki ograničeni tip specificira se nametanjem ograničenja na osnovne tipove.

Opisana je na sljedeći način:

Tip<имя типа>\u003d konstanta1 .. konstanta2

Morate se pridržavati sljedećih pravila:

  1. Obje ograničene konstante moraju biti iste vrste.
  2. Kao osnovni tip možete koristiti bilo koji jednostavni tip osim pravog.
  3. Početna vrijednost kod definiranja ograničenog tipa ne smije biti veća od konačne vrijednosti.
tip indeksa \u003d 0 ..63; pismo \u003d 'a' .. 'z'; var char1, char2: pismo; a, g: indeks;

Možete ga odmah opisati u odjeljku s opisom varijable:

var a, g: 0 ..63; char1, char2: 'a' .. 'z'.

Tipovi podataka na jeziku Pascal

Sve podatke (konstante, varijable, vrijednosti funkcije ili izrazi) u Turbo Pascalu karakteriziraju njihove vrste. Tip definira skup valjanih vrijednosti koje objekt može imati, kao i skup valjanih operacija koje se na njega odnose. Vrsta takođe definira format interne prezentacije podataka u memoriji računala.

Sledeće vrste podataka postoje u Turbo Pascalu.

1) Jednostavni tipovi:

- materijal;

- simbolični;

- logički (logički);

- nabrajano;

- ograničen (domet).

2) Složeni (strukturirani) tipovi:

- redovni (nizovi);

- kombinirani (zapisi);

- datoteka;

- višestruko;

- string

- predmeti.

3) Referentne vrste (tipkani i netipični pokazivači).

4) Proceduralni tipovi.

Turbo Pascal pruža mehanizam za stvaranje novih tipova podataka, tako da ukupan broj vrsta korištenih u programu može biti proizvoljno velik.

Cijeli tip. Vrijednosti cijelih brojeva su elementi podskupine cijelih brojeva. U Turbo Pascalu postoji pet cjelobrojnih tipova. Njihova imena, raspon vrijednosti, dužina reprezentacije u bajtovima prikazani su u tablici. 6

Tabela 6

Vrste podataka celih brojeva

Varijable cijelog broja opisane su korištenjem gore rezerviranih riječi:

i, j, k: cijeli broj;

Podaci vrste integriteta tačno se čuvaju u memoriji. Na primjer, varijable tipa cijeli broj zauzimaju 2 bajta (16 bita) u memoriji, a raspoređuju se na sljedeći način: 1 bit dodijeljen je za pohranjivanje znaka broja (0 ako je broj pozitivan, a 1 ako je broj negativan) i 15 bita za spremanje broja u binarnom sustavu numeriranje. Maksimalni decimalni broj koji se može napisati kao binarni u 15 bita je 32767.

Pri korištenju postupaka i funkcija s cjelobrojnim parametrima treba se voditi "gniježđenjem" vrsta, tj. gde god se koristi reč, bajt je dozvoljen (ali ne i obrnuto), u longint je uključen cijeli broj, koji zauzvrat uključuje prečicu.

Pet glavnih operacija je definirano za cijeli broj, čiji je rezultat također cijeli broj: +, -, *, div, mod (sabiranje, oduzimanje, množenje, cijela podjela i ostatak cjelobrojne podjele). U aritmetičkim izrazima, *, div, mod operacije imaju veći prioritet od +, - operacije. Primjeri za pisanje izraza:

Popis postupaka i funkcija primjenjivih na cjelobrojne tipove dat je u tablici. 7. Slova b, s, w, i, l označavaju izraze tipa bajta, prečice, riječi, cjelog broja i dužine; x je izraz bilo koje od ovih vrsta; identifikatori vb, vs, vw, vi, vl, vx označavaju varijable odgovarajućih tipova. Neobvezna vrijednost je navedena u uglatim zagradama.

Tabela 7

Standardni postupci i funkcije primjenjive na cijele tipove

Žalba Vrsta rezultata Zakon
Abs (x) x Vraća modul x
Chr (b) Char Vraća znak prema njegovom kodu
Dec (vx [, i]) - Smanjuje vx za i, a u nedostatku i za 1
Inc (vx [, i]) - Povećava vx za i, a u nedostatku i, za 1
Zdravo (i) Bajt Vraća visoki bajt argumenta
Zdravo (i) Bajt Takođe
Lo (i) Bajt Vraća niski bajt argumenta
Lo (w) Bajt Takođe
Nepar (l) Bajt Vraća true ako je argument neparni broj
Slučajno (w) Kao parametar Vraća pseudo-slučajni broj ravnomjerno raspoređen u rasponu 0 ... (w-1)
Sqr (x) x Vraća kvadrat argumenta
Zamjena (i) Integer
Zamjena (w) Riječ Mijenja bajtove jednom riječju
Succ (x) Kao parametar Vraća sljedeću cijelu vrijednost, tj. x + 1
Pred (x) Kao parametar Vraća prethodnu cijelu vrijednost, tj. x-1

Za operacije s cijelim brojevima, tip rezultata će odgovarati vrsti operanda, a ako su operandi različitih cjelobrojnih tipova, tipu operanda koji ima maksimalni raspon vrijednosti. Moguće prelijevanje rezultata nije kontrolirano, što može dovesti do grešaka u programu.

Pravi tip. Vrijednosti stvarnih tipova definiraju proizvoljni broj s određenom konačnom točnošću, ovisno o unutarnjem formatu stvarnog broja. U Turbo-Pascalu postoji pet vrsta materijala (Tabela 8).

Tabela 8

Pravi tipovi podataka

Stvarne varijable su opisane gornjim rezerviranim riječima:

Stvarni broj u memoriji računara sastoji se od 3 dijela:

Znakovna cifra;

Eksponencijalni dio;

Mantissa brojevi.

Mantissa ima dužinu od 23 (Single) do 63 (Extended) binarne znamenke, što osigurava tačnost od 7-8 za Single i 19-20 za Extended decimalne cifre. Decimalna točka (zarez) podrazumijeva se prije lijeve (najviše) znamenke mantisse, ali kada djeluje s brojem, njegov položaj se pomiče ulijevo ili udesno u skladu s binarnim redoslijedom broja pohranjenog u eksponencijalnom dijelu, pa se akcije na stvarne brojeve nazivaju plutajućom točkom (aritmetika) .

Pristup tipovima Single, Double i Extended dostupan je samo uz posebne načine kompilacije. Da biste omogućili ove režime, odaberite stavku u meniju Opcije, Kompilator ... i omogućiti opciju 8087/80287 u grupi Numerička obrada.

Poseban položaj u Turbo Pascalu zauzima vrsta Comp, koja se tumači kao stvarni broj bez eksponencijalnih i frakcijskih dijelova. Zapravo, Comp je veliki potpisani cijeli broj koji pohranjuje 19 ... 20 značajnih decimalnih znamenki. U isto vrijeme, u izrazima Comp je potpuno kompatibilan s bilo kojim drugim stvarnim tipovima: na njemu su definirane sve stvarne operacije, mogu se koristiti kao argument matematičkih operacija itd.



Stvarni brojevi su navedeni u decimalnim zapisima u jednom od dva oblika.

IN obrazac sa fiksnom tačkom zapis se sastoji od cjelobrojnih i frakcijskih dijelova razdvojenih točkom, na primjer:

0.087 4.0 23.5 0.6

IN oblik s pomičnim zarezom unos sadrži slovo E, što znači "pomnožiti sa deset u jakosti", a snaga je cijeli broj, na primjer:

7E3 6.9E-8 0.98E-02 45E + 04

Sljedeće operacije su definirane na objektima stvarnog tipa: +, -, *, /.

Operacije "*" i "/" imaju veći prioritet u odnosu na operacije "+" i "-".

Ako je barem jedan operand realan, tada operacije +, -, *, / dovode do stvarnog rezultata. Operacija dijeljenja / dovodi do stvarnog rezultata u slučaju dva cjelobrojna operanda, na primjer: 9/3 \u003d 3.0.

Za rad sa stvarnim podacima mogu se koristiti standardne matematičke funkcije prikazane u tablici 1. 9. Rezultat ovih funkcija je takođe stvaran.

Tabela 9

Matematičke funkcije koje rade sa stvarnim podacima

Varijable i konstante tipa REAL nisu dozvoljene za upotrebu:

- u funkcijama pred (x), succ (x), ord (x);

- kao indekse nizova;

- kao naljepnice kod operatora prijenosa kontrole;

- kao kontrolne varijable (parametri ciklusa).

Da biste preveli stvarni broj u cijeli broj, možete koristiti funkcije:

trunc (x) je cijeli broj x (x je stvaran);

zaokruživanje (x) - zaokruživanje na najbliži cijeli broj (x - stvarno).

Tip karaktera. Znakovne varijable su opisane pomoću rezervirane riječi char:

Vrijednosti ovog tipa su odabrane iz poredanog skupa znakova (iz ASCII) koji se sastoji od 256 znakova. Svakom znaku je dodijeljen cijeli broj iz raspona 0..255. Na primjer, velika slova latinične abecede A..Z imaju šifre 65..90, a mala slova imaju šifre 97..122.

Vrijednost varijable tipa znaka je jedan znak priložen u apostrofama, na primjer:

'F' 8 '' * '

Varijante znakova mogu se uporediti jedna s drugom, a znakovni se kodovi uspoređuju.

Postoje funkcije koje uspostavljaju korespondenciju između simbola i njegovog koda:

ord (s) - vraća broj znakova s;

chr (i) - proizvodi znak s brojem i.

Ove su funkcije obrnute jedna drugoj.

Boolov tip. Boolean varijable su opisane pomoću rezervirane riječi boolean:

p1, p2: boolov;

Booleove varijable uzimaju dvije vrijednosti: istinito (istinito), lažno (Lažno).

Te se vrijednosti poredavaju na sljedeći način: lažno< true. false имеет порядковый номер 0, true имеет порядковый номер 1.

Možete dodijeliti vrijednost izravno varijablama logičkog tipa ili koristiti logički izraz. Na primjer,

a, d, g, b: boolov;

Operacije odnosa (<, <=, >, >=, =, <>) primijenjene na cjelobrojne, stvarne i simboličke varijable daju logičan rezultat.

Logičke operacije na operandima logičkog tipa daju i logičan rezultat (operacije su prikazane u silaznom redoslijedu prioriteta) (za više detalja pogledajte tablice 3 i 5):

ne - negacija (operacija NE);

i - logičko množenje (operacija I);

ili - logično dodavanje (ILI operacija);

xor - ekskluzivno ILI.

Izraz (a ne) ima suprotnu vrijednost a.

Izraz (a i b) daje istinu, ako su istina samo a i b, u drugim slučajevima vrijednost ovog izraza je lažna.

Izraz (a ili b) daje laž ako su samo a i b lažni, u svim ostalim slučajevima rezultat je istinit.

Nabrojeni tip. Nestandardni nabrojeni tip specificiran je nabrajanjem u obliku imena vrijednosti koje varijabla može preuzeti. Svaku vrijednost naziva određeni identifikator i nalazi se na popisu okruženom zagradama. Opći prikaz opisa nabrojanog tipa:

x \u003d (w1, w2, ..., wn);

gdje je x naziv tipa, w1, w2, ..., wn su vrijednosti koje varijabla tipa x može preuzeti.

Ove vrijednosti su poredane w1

Sljedeće standardne funkcije primjenjuju se na argument w nabrojanog tipa:

succ (w), pred (w), ord (w).

boja \u003d (crvena, crna, žuta, zelena)

ww \u003d (lijevo, gore, desno, dolje);

f: niz ww;

succ (d) \u003d žuta;

Varijable a i b su tipa w. mogu uzeti jednu od tri vrijednosti, sa na

Sljedeće operacije su primjenjive na vrijednosti nabrojanog tipa: \u003d,<>, <=, >=, <, >.

Dopušteno je specificirati konstante nabrojanog tipa izravno u odjeljku var bez upotrebe sekcije tipnpr

c, d: (crvena, crna, žuta, zelena);

Raspon (ograničen) tip. Kada definirate ograničeni tip, navedite početne i krajnje vrijednosti koje može imati varijabla tipa raspona. Vrijednosti su razdvojene s dvije točke.

Opis ograničene vrste je

Ovdje je naziv tipa, min, max su konstante.

Pri određivanju ograničene vrste moraju se poštovati sljedeća pravila:

- obje granične konstante min i max moraju biti iste vrste;

- iz podataka osnovnog tipa stvara se ograničeni tip u kojem možete odabrati tipove cijelog broja, znakova ili nabrojane. Na primjer:

col \u003d crvena .. žuta;

pismo \u003d 'a' .. 'f';

- Varijable ograničene vrste mogu se opisati u odjeljku var bez pribjegavanja odjeljku tipa:

- ograničeni tip nasljeđuje sva svojstva osnovnog tipa iz kojeg je stvorena;

- granica min mora uvijek biti manja od granice maks.

Nizovi. Niz je složenog tipa, što je struktura koja se sastoji od fiksnog broja komponenti istog tipa. Tip komponente naziva se osnovni tip. Sve komponente polja mogu se lako naručiti i omogućiti pristup bilo kojoj od njih jednostavnim navođenjem njegovog serijskog broja. Opis niza u odjeljku var ima oblik:

a: niz od t2;

gdje je a naziv matrice, niz, od - riječi usluge (znače "niz od ..."), t1 - vrsta indeksa; t2 - tip komponente (osnovni tip).

Broj indeksa određuje dimenziju polja. Indeksi mogu biti cjelobrojni (osim longint), znakovnih, logičkih, nabrojanih i raspona vrsta. Indeksi su odvojeni zarezima i zatvoreni u kvadratne zagrade. Komponente niza mogu biti bilo koje vrste osim datoteke.

Primjer 1 Razmotrimo jednodimenzionalni niz C čije su vrijednosti pet realnih brojeva:

4.6 6.23 12 -4.8 0.7

Opis ovog niza je kako slijedi:

c: niz realnih;

Za određenu vrijednost indeksa možete odabrati određenu komponentu polja (na primjer, C znači treći element niza C, tj. Broj 12).

Primjer 2 Razmotrimo dvodimenzionalni niz B (matrica B) čija je vrijednost tablica cijeli brojevi:

Opis ovog niza je kako slijedi:

b od cijelog broja;

Ovdje je b naziv matrice, prvi indeks je broj redaka i uzima vrijednosti od 1 do 2, drugi je broj stupca i uzima vrijednosti od 1 do 4. Za određene vrijednosti indeksa možete odabrati određenu komponentu matrice (na primjer, b znači element tablice u prvi red i treći stupac, tj. broj -4).

Indeksi mogu biti proizvoljni izrazi koji odgovaraju vrsti indeksa iz opisa polja:

a: niz realnih;

a [(i + 1) * 2]: \u003d 24;

Skup operacija na elementima polja u potpunosti je određen tipom ovih elemenata.

Vrsta žice. Vrsta stringa - skup znakovnih lanaca proizvoljne dužine (od nule do određenog broja). Promjenjive vrste stringova su opisane uslužnom riječju string:

b: string ;

Značajke:

- vrijednost varijable niza može se unijeti pomoću tipkovnice, dodijeljene operateru dodjele, očitanoj iz datoteke. U tom slučaju duljina unesenog niza može biti bilo koja (manja od navedene veličine, jednaka veličini ili više; u drugom slučaju se odbacuju dodatni znakovi); a: \u003d 'Rezultati';

- dopušteno je koristiti operaciju pridruživanja u operateru dodjele, jer nizovi mogu dinamički mijenjati njihovu dužinu: a: \u003d a + 'proračuni';

- maksimalna dužina varijable niza je 255 znakova, ovo naznačenje duljine može se izostaviti:

a: string;

a1: string ;

Varijable a i a1 su iste (ekvivalentni opis).

- memorija za varijable tipa stringa raspoređena je na maksimum, ali koristi se samo dio memorije koji su trenutno zauzeti znakovima stringova. Za opisivanje varijable niza duljine n, n + 1 bajta memorije koriste se: n bajtova - za spremanje znakova niza, n + 1 - bajtova - za spremanje trenutne dužine.

- uporedne operacije su definirane iznad vrijednosti tipova nizova:< <= > >= = <>. Kratki niz je uvijek manji od dugog. Ako su žice jednake duljine, tada se uspoređuju znakovni kodovi.

- moguć je pristup pojedinačnim elementima niza sličnim pristupu elementima niza: a, a. U uglatim zagradama označava se broj stavke retka.

String orijentirane rutine i funkcije.

concat (s1, s2, ...) - funkcija spajanja niza, s1, s2,... - linije, broj linija može biti proizvoljan. Rezultat funkcije je niz. Ako je duljina rezultirajućeg niza veća od 255 znakova, string je skraćen na 255 znakova.

kopija (i), indeks, broj) - funkcija za odabir linije iz izvorne linije s dugo brojati znakova koji počinju s brojem znakova indeks.

brisanje (s, indeks, broj) - postupak uklanjanja duljine podvrsta s iz niza s brojati znakova koji počinju slovom sa brojem indeks.

umetnuti (s1, s2, indeks) - postupak umetanja reda s1 U redu s2počevši od znaka s brojem indeks.

dužina - funkcija za određivanje trenutne dužine niza; vraća broj jednak trenutnoj duljini niza.

pos (s1, s2) - funkcija pretraživanja niza s2 substrings s1. vraća broj pozicije prvog znaka podstrane s1 U redu s2 (ili 0 ako ova linija nije).

val (st, x, kod) - postupak pretvaranja niza s u cijelu ili realnu varijablu x. Parametar kod sadrži 0 ako je konverzija bila uspješna (i u x rezultat konverzije se postavlja) ili broj položaja retka u kojem se nalazi pogrešan znak (u ovom slučaju, x ne mijenja se).

Kompatibilnost i pretvorba tipa. Turbo Pascal je tipkani jezik. Izgrađen je na osnovu strogog pridržavanja koncepta vrsta, prema kojem se sve operacije koje se koriste u jeziku definiraju samo na operandima kompatibilnih tipova.

Dvije vrste se smatraju kompatibilnim ako:

- obojica su istog tipa;

- oba materijala;

- oba cela broja;

- jedan tip je raspon tipa drugog tipa;

- oba su tipa raspona istog tipa baze;

- oba su skupovi sačinjeni od elemenata iste osnovne vrste;

- obje su upakovane linije (definirane prethodnom pakiranom riječi) iste maksimalne dužine;

- jedan je tip niza, a drugi je tip niza ili znak;

- jedna vrsta je bilo koji pokazivač, a druga je pokazivač na objekt povezan s njim;

- oba su proceduralna tipa s istom vrstom rezultata (za vrstu funkcije), brojem parametara i vrstom međusobno odgovarajućih parametara.

Kompatibilnost tipa je posebno važna kod operatora dodjele. Neka je t1 vrsta varijable, a t2 vrsta izraza, odnosno dodjeljuje se t1: \u003d t2. Ovaj zadatak je moguć u sljedećim slučajevima:

- t1 i t2 su iste vrste i ova vrsta se ne odnosi na datoteke, nizove datoteka, zapise koji sadrže polja datoteka ili nizove takvih zapisa;

- t1 i t2 su kompatibilni redni tipovi, a vrijednost t2 leži u rasponu mogućih vrijednosti t1;

- t1 i t2 su stvarni tipovi, a vrijednost t2 leži u rasponu mogućih vrijednosti t1;

- t1 je stvarni tip i t2 je cijeli broj;

- t1 je niz, a t2 je znak;

- t1 je linija, a t2 je upakovana linija;

- t1 i t2 su kompatibilne pakirane linije;

- t1 i t2 su kompatibilni skupovi i svi članovi t2 pripadaju skupu mogućih vrijednosti t1;

- t1 i t2 su kompatibilni pokazivači;

- t1 i t2 su kompatibilni proceduralni tipovi;

- t1 je objekt, a t2 njegov potomak.

U programu se podaci jedne vrste mogu pretvoriti u podatke drugog tipa. Takva konverzija može biti izričita ili implicitna.

Kada izričito pretvaraju tipove, pozivaju se posebne funkcije pretvorbe, čiji argumenti pripadaju jednoj vrsti, a vrijednosti drugoj. Primjer su funkcije koje se već smatraju ord, trunc, round, chr.

Implicitna konverzija moguća je samo u dva slučaja:

- u izrazima koji su sačinjeni od stvarnih i cjelobrojnih varijabli, potonji se automatski pretvaraju u stvarni tip, a cijeli izraz u cjelini poprima stvarni tip;

- isto se memorijsko područje tretira alternativno kao da sadrži podatke jedne ili druge vrste (kombinirajući različite vrste podataka u memoriji).

Poznavanje i razumijevanje tipova podataka sastavni je dio programiranja.

U ovom će tutorialu predstaviti tipove podataka na programskom jeziku Turbo Pascal.

U Pascalu bilo koji predmeti, tj. konstante, varijable, vrijednosti funkcije ili izrazi karakteriziraju se njihovim tipovima. Tip definira skup dopuštenih vrijednosti objekta, kao i skup operacija koje se na njega odnose. Pored toga, tip određuje i format unutarnjeg predstavljanja podataka u memoriji računara. Što se tiče tipova objekata, Pascal je statički jezik. To znači da se tip objekta, na primjer, varijabla, određuje tijekom njegovog opisa i ne može se mijenjati u budućnosti.

Struktura vrsta podataka u Pascalu:

Jednostavne vrste jezika
Jednostavni tipovi uključuju redovne, stvarne, nizove i adrese (pokazivači). Svi oni određuju vrstu samo jedne pojedinačne vrijednosti.

Ordinalni tipovi karakterizirano time da svaki od njih ima ograničen broj mogućih vrijednosti među kojima je uspostavljen linearni poredak. Svaka od vrijednosti može se povezati s određenim cijelim brojem - njenim serijskim brojem.

Cijeli tipovi - označavaju skupove celih brojeva u različitim rasponima. Postoji pet cjelobrojnih tipova koji se razlikuju u rasponu prihvatljivih vrijednosti i veličini zauzete RAM-a. Tipovi celih brojeva identifikuju se pomoću identifikatora: Bajt, ShortInt, Word, Integer, LongInt; njihove su karakteristike prikazane u sljedećoj tablici.

Vrijednosti cijelih tipova pišu se u programu na uobičajen način:
123 4 -3 +345 -699
Decimalna tačka u cijelom unosu nije valjana. Bit će greška napisati cijeli broj na sljedeći način:
123.0
Uz uobičajene decimalne zapise, moguće je zapisati cijeli brojeve u heksadecimalnom formatu koristeći prefiks $, na primjer:
$ 01AF $ FF $ 1A $ F0A1B
Slučaj slova A, B, ..., F nije važan.

Dozvoljene operacije:

  • - zadatak;
  • - sva aritmetika: +, -, *, /, div, mod (u uobičajenoj podjeli [/] rezultat je stvaran!);
  • - poređenje<, >, >=, <=, <>, =.
Boolean tip (Boolean) - sastoji se od samo dvije vrijednosti: lažne (lažne) i istinite (istinite). Riječi Lažno i Istina definirane su u jeziku i u stvari su logičke konstante. Slučaj slova u njihovom pravopisu je irelevantan: FALSE \u003d false. Vrijednosti ove vrste rezultat su procjene uvjetnih i logičkih izraza i sudjelovanja u svim vrstama operatora uslovnog jezika.
Dozvoljene operacije:
  • - zadatak;
  • - poređenje:<, >, >=, <=, <>, =;
  • - logičke operacije: NOT, OR, AND, XOR
Vrsta karaktera (Char) - Ovo je vrsta podataka koja se sastoji od jednog znaka (znak, slovo, šifra). Vrijednost tipa Char može biti bilo koji znak iz ASCII skupa. Ako simbol ima grafički prikaz, tada se u programu piše priložen u jednim navodnicima (apostrofama), na primjer:
"s" "." "*" "" - (prostor)
Da bi predstavio sam apostrof, njegova se slika udvostručuje: "" "".
Ako znak nema grafički prikaz, na primjer, znak tablice ili znak povratka kočije, tada možete koristiti ekvivalentni obrazac za pisanje znakovne vrijednosti, koji se sastoji od prefiksa # i ASCII koda znaka:
#9 #32 #13
Dozvoljene operacije:
  • - zadatak;
  • - poređenje:<, >, >=, <=, <>, \u003d. Znak koji ima veći ASCII broj smatra se velikim.
Vrsta žice (string, string [n]) - ova vrsta podataka definira nizove znakova - nizova. Parametar n određuje maksimalni broj znakova u retku. Ako nije naveden, pretpostavlja se n \u003d 255. Vrijednost vrste niza u programu se piše kao niz znakova zatvorenih u pojedinačne citate (apostrofe), na primjer
"Ovo je tekstni niz" "Ovo je niz"
"1234" je takođe niz, a ne broj
"" - prazan red

Dozvoljene operacije:
  • - zadatak;
  • - sabiranje (spajanje, spajanje); na primjer, S: \u003d "zima" + "" + "je došla!";
  • - poređenje:<, >, >=, <=, <>, \u003d. Nizovi se smatraju jednakim ako su iste dužine i jednaki su znakovima.
Pravi tipovi - označavaju skup realnih brojeva u različitim rasponima. Postoji pet stvarnih tipova koji se razlikuju u rasponu dopuštenih vrijednosti i veličini zauzete RAM-a. Realni tipovi se identifikuju po identifikatorima: Real, Single, Double, Extended, Comp; njihove su karakteristike prikazane u sljedećoj tablici.

Tip Comp iako se odnosi na stvarne tipove, to je ustvari cijeli broj s vrlo ogromnim rasponom vrijednosti.
Vrijednosti stvarnih vrsta mogu se u programu upisati na više načina:
1.456 0.000134 -120.0 65432
+345 0 -45 127E + 12
-1,5E-5 -1,6E + 12 5E4 0,002E-6

Biće pogreška pisanje stvarnog broja na sljedeći način:
.5 (tačno 0,5)
12. (12.0 ili 12 tačno)

Stvarni broj s pomičnim zarezom (eksponencijalni oblik) piše se u paru
<мантисса> E<порядок>
Ova se oznaka shvaća kao "mantisa pomnožena sa deset u stupnju jednakom redoslijedu". Na primjer,
-1,6E + 12 odgovara -1,6 · 1012

Dozvoljene operacije:
- zadatak;
- sva aritmetika: +, -, *, /;
- poređenje:<, >, >=, <=, <>, =.

Kada uspoređujemo stvarne brojeve, treba imati na umu da zbog netačnosti njihovog predstavljanja u memoriji računala (s obzirom na neizbježnost zaokruživanja) treba izbjegavati pokušaje određivanja stroge jednakosti dviju stvarnih vrijednosti. Postoji šansa da se jednakost pokaže lažnom, čak i ako ona zapravo nije.

Raspon ili (ograničen tip) nije unaprijed definirani tip jezika (kao što je, na primjer, Integer ili Char) i stoga mu nijedan identifikator ne odgovara. Ova vrsta je korisnički unos. Pomoću nje možemo definirati novi tip koji će sadržavati vrijednosti samo iz ograničenog pod-raspona nekog osnovnog tipa. Osnovni tip može biti samo cijeli broj, tip Char (tip znaka) i bilo koji od nabrojanih tipova koje unosi programer.

Da biste uveli novi tip - raspon - u blok opisa tipa TYPE, morate navesti ime vrste unosa i granicu raspona kroz poseban simbol raspona ".." (dvije točke zaredom):
Tip
Vek \u003d 1..21; (pod-raspon tipa)
CapsLetters \u003d "A" .. "I"; (pod-opseg tipa Char)

Strukturirani tipovi jezika

Strukturirani tipovi uključuju: niz, zapis, skup, datoteku itd. Svi oni određuju vrstu (ili tipove) neke strukture podataka.

Niz - naručena struktura iste vrste podataka, koja ih pohranjuje uzastopno. Niz mora imati dimenzije koje određuju koliko je elemenata pohranjeno u strukturi. Bilo koji element u nizu može se postići njegovim indeksom.

Vrsta polja određena je konstrukcijom:
Niz [raspon] tipa elementa;

Raspon u uglatim zagradama označava indekse prvog i posljednjeg elementa u strukturi. Primjeri deklariranja tipova i varijabli:

TYPE Vector \u003d niz Real; VAR V1: Vektor; V2: niz bajtova;
Ovdje se varijabla V1 određuje korištenjem gore opisanog tipa Vector; tip varijable V2 konstruira se izravno u fazi njenog opisa.

U nizu vrsta elemenata polja, također možete odrediti niz, formirajući višedimenzionalne strukture. Na primjer, pojavit će se opis dvodimenzionalne strukture (matrica) na sljedeći način:
VAR M1: niz nizova Byte-a; Isto se može pisati mnogo kompaktnije: VAR M2: niz bajtova;
Ovdje nizovi M1 i M2 imaju potpuno istu strukturu - 3x3 kvadratnu matricu.

Pristup elementu polja se vrši navođenjem njegovog indeksa, na primjer:

Writeln (V1); (izlaz na zaslon prvog elementa niza V1) readln (M2); (ulaz trećeg elementa drugog reda matrice M2)
Ovim se završava lekcija o tipovima podataka, tekst je bio gotovo u cijelosti kopirati-zalijepiti (veza će biti niža), jer Ne vidim razloga da svojim materijalima kažem ovaj materijal. Ako je razlika između tipova podataka barem malo jasna, onda je to već dobro.

Osnove programiranja
Svaki profesionalac nekad je bio čajnik. Sigurno vam je poznato stanje u kojem "ne znate kako početi razmišljati, tako razmišljati". Sigurno ste suočeni sa situacijom kada jednostavno ne znate odakle započeti. Ova je knjiga usmjerena upravo na takve ljude koji bi željeli postati programer, ali apsolutno ne znaju kako započeti ovaj put. ...

Gotovo sve cijele vrste podataka su u odnosu na. Ove vrste podataka predstavljaju cijeli brojeve u određenom rasponu. Specifična imena cjelobrojnih tipova i raspona vrijednosti ovise o određenom programskom jeziku, o prevoditelju i načinu kompilacije. Saznajte više o tome u dokumentaciji prevodilaca.

Na primjer, vrsta podataka Integer u Delfima ima raspon od -2147483648 ... 2147483647, dok je u Turbo Pascalu tip podataka Integer predstavlja brojeve u rasponu -35768 ... 32767. Besplatno Pascal ima raspon vrijednosti tipa Integer određeno odabranim načinom.

Budući da Lazarus koristi kompajler Free Pascal, sve što je rečeno o tipovima podataka s obzirom na Free Pascal vrijedi i za Lazarus.

Dakle, cjelobrojni tipovi podataka Free Pascal navedeni su u tablici 13.1.

Tabela 13.1. Cijeli tipovi podataka Besplatno Pascal (Lazarus).

Tip Veličina, bajti Raspon vrijednosti
Bajt 1 0…255
Shortint 1 -128…127
Smallint 2 -35768…32767
Riječ 2 0…65535
Integer 2 ili 4 Zavisi od načina kompilacije
Kardinal 4 0…4294967295
Longint 4 -2147483648…2147483647
Longword 4 0...4294967295
Int64 8 -9223372036854775808...9223372036854775807
QWord 8 0...18446744073709551615

BILJEŠKA
In Free Pascal Types Int64 i QWord nisu! To znači da ih ne možete koristiti, na primjer, za indeksne varijable u petlji. Međutim, doveo sam ih ovamo kako ne bih ubuduće opisivao zasebno i prikupio na jednom mjestu sve cjelobrojne tipove Free Pascal-a. Ako ne razumijete neke riječi, ne bojte se. Vremenom ću o svemu detaljnije pričati.

A sada nekoliko objašnjenja do stola.

U koloni TIP dani su identifikatori tipova podataka (ključne riječi koje prevoditelju ukazuju kojoj vrsti pripadaju ovi ili oni podaci). Naučićete kako koristiti ove identifikatore u sljedećim lekcijama.

U koloni VELIČINA Prikazuje se veličina vrste podataka u memoriji računara. Na primjer, pozitivni cijeli broj može biti predstavljen različitim tipovima: Bajt, Riječ, Kardinal itd. Međutim, broj tipa Kardinal zauzet će 4 bajta u memoriji, a unesite broj Bajt - samo 1 bajt. Stoga, ako sigurno znate da broj s kojim radite nikada neće uzeti vrijednost veću od 255, onda je bolje da ga definirate kao tip Bajt, jer će to uštedeti prostor u memoriji računara. Iako to nije tako jednostavno (nijanse raspodjele memorije i drugih računarskih resursa su izvan dosega).

U koloni RANGE specificiran je raspon vrijednosti koji je određen vrstom podataka. Na primjer, broj poput Bajt može uzeti vrijednosti od 0 do 255.

A sada vježbajte. Napisat ćemo program koji prikazuje raspone vrijednosti svih cjelobrojnih tipova podataka. Izvorni kod ovog programa prikazan je dolje:

Oglas 13.1. Program za prikazivanje raspona cijelih brojeva. program td; ($ mode objfpc) ($ H +) koristi ($ IFDEF UNIX) ($ IFDEF UseCThreads) cthreads, ($ ENDIF) ($ ENDIF) klase (možete dodati jedinice nakon ovoga); begin Writeln ("bajt:", nisko (bajt), "..", visoko (bajt)); Writeln ("Shortint:", Low (Shortint), "..", High (Shortint)); Writeln ("Smallint:", Low (Smallint), "..", visok (Smallint)); Writeln ("Riječ:", niska (riječ), "..", visoka (riječ)); Writeln ("Integer:", Low (Integer), "..", High (Integer)); Writeln ("Kardinal:", Nizak (Kardinal), "..", Visoki (Kardinal)); Writeln ("Longint:", nizak (Longint), "..", visok (Longint)); Writeln ("Duga reč:", niska (duga reč), "..", visoka (duga reč); Writeln ("Int64:", nizak (Int64), "..", visok (Int64)); Writeln ("QWord:", niska (QWord), "..", visoka (QWord)); Readln kraj.

Standardna funkcija Nizak definira minimalnu vrijednost tipa podataka. Funtsia Visokog definira maksimalnu vrijednost. Sa karakteristikama Writeln i Readln već znate malo. O podprogramima (postupcima i funkcijama) govorit ćemo u odgovarajućem odjeljku.

Na kraju ću reći kako se u programu pišu cjelobrojni podaci. Da, kao i svugdje - samo napišite broj, bez navodnika i dodatnih dodatnih znakova. Na primjer, tako

10
178
35278

Istina, ovo se odnosi na brojeve u decimalnom sistemu. Sigurno već znate da postoje i drugi sistemi. Najčešći su binarni, decimalni i heksadecimalni brojevi.

Besplatni Pascal podržava četiri cjelobrojna formata snimanja:

  1. Decimalni zapis. Samo broj, poput 10.
  2. Šesterokutna notacija. Broj s prefiksom $. Na primjer, heksadecimalni broj $ 10 jednak je decimalnom 16.
  3. Octal zapis. Broj s prefiksom &. Na primjer, oktalni broj & 10 je decimalni broj 8.
  4. Binarni zapis. Broj s prefiksom%. Na primjer, binarni broj% 10 je decimalni broj 2.

Zadaća:

Napravite program koji prikazuje raspone cjelobrojnih vrijednosti (listing 13.1). Sastavite program i pokrenite ga. Provjerite jesu li te vrijednosti prikazane u tablici 13.1.

U izvornom kodu programa pronađite red koji postavlja način kompilacije:

($ mod objfpc) ($ H +)

U ovom retku, umesto reči objfpc napiši riječ tp. Odnosno, završna linija trebala bi izgledati ovako:

($ mod tp) ($ H +)

Pokrenite program. Pogledajte raspon vrijednosti tipa Integer. Izvući zaključke.

Naučite razmišljati kao programer, to jest, logično. Nitko vas neće sve žvakati do penzije, kao što to radim sada. Morate se naviknuti da razmišljate sami. U protivnom ćete ući u „majmunski princip učenja“ i tada će vam se šanse da postanete kul programer približiti nuli. Da vam ne pomognem da ne skliznete u nivo „gužve“, povremeno ću ostavljati praznine u vašem treningu tako da pokušate sami smisliti neke stvari.

Mnogo je bolje ako mislite na sebe pogrešna odluka, pogrešku ćete pronaći sami i ispraviti je, nego što ćete uvijek koristiti tuđa ispravna rješenja i glupo ih kopirati.

3.2. Jednostavni tipovi podataka u Turbo Pascalu 7

Jednostavni tip definira uređeni skup vrijednosti parametara. Turbo Pascal ima sljedeće grupe jednostavnih tipova:

  • cijele vrste;
  • boolov tip;
  • tip karaktera;
  • nabrojani tip;
  • vrsta raspona;
  • stvarni tipovi.

Svi jednostavni tipovi, osim stvarnih, nazivaju se redni tipovi. Za vrijednosti ordinalnih tipova definirane su standardne procedure i funkcije: Dec, Inc, Ord, Pred, Succ (vidi klauzulu 13.1).

3.2.1. Cijeli tipovi

Za razliku od Pascala, gdje je definiran jedan cjelobrojni tip, Turbo Pascal ima pet standardnih cjelobrojnih tipova: Shortint, Integer, Longint, Byte, Word. Karakteristike ovih vrsta su date u tabeli. 2

Tabela 2. Tipovi podataka cijelih brojeva

Tip Domet Format Veličina u bajtovima
Shortint -128 .. 127 Ikonički 1
Integer -32768 .. 32767 Ikonički 2
Longint -2147483648 .. 2147483647 Ikonički 4
Bajt 0 .. 255 Nepodpisano 1
Riječ 0 .. 65535 Nepodpisano 2

3.2.2. Boolov tip

Standardni logički tip Boolean (veličina - 1 bajt) je tip podataka, od kojih svaki element može imati samo dvije vrijednosti: True i False. Sljedeći su uvjeti:
Lažni nalog (lažno) \u003d 0
Red (istina) \u003d 1
Succ (lažno) \u003d Tačno
Pred (istina) \u003d lažno

Turbo Pascal 7.0 dodaje još tri logičke vrste, ByteBool (veličina - 1 bajt), WordBool (veličina - 2 bajta) i LongBool (veličina - 4 bajta). Uvedeni su za objedinjavanje s drugim programskim jezicima i sa Windows okruženjem. Njihova razlika od standardnog tipa Boolean leži u stvarnoj vrijednosti parametra ovog tipa koji odgovara vrijednosti True. Za boole mejlove, vrijednost False odgovara broju 0 \u200b\u200bnapisanom u odgovarajućem broju bajtova. Prava vrijednost za tip Boola odgovara broju 1 napisanom u bajtu, a za ostale vrste True vrijednost odgovara bilo kojem broju osim nuli (iako funkcija Ord u ovom slučaju daje vrijednost 1).

3.2.3. Tip karaktera

Standardni tip znakova Char definira kompletni skup znakova ASCII. Ord funkcija Char vrijednosti daje kod odgovarajućeg znaka. Vrijednosti tipa znakova uspoređuju se s njihovim kodovima.

3.2.4. Nabrojeni tip

Nabrojeni tip nije standardni i određuje se skupom identifikatora s kojima se vrijednosti parametara mogu podudarati. Popis identifikatora je naveden u zagradama, identifikatori su odvojeni zarezima:

tip
= ();)

Važno je kojim redoslijedom su navedeni identifikatori prilikom određivanja tipa, jer je prvom identifikatoru dodijeljen serijski broj 0, drugom 1, itd. Isti identifikator može se koristiti u definiranju samo jednog nabrojanog tipa. Ord funkcija vrijednosti nabrojanog tipa daje serijski broj njegove vrijednosti.

Primjer. Nabrojeni tip.

upišite Operat \u003d (Plus, Minus, Mult, Divide);

Boolov tip je poseban slučaj nabrojanog tipa:

upišite Boolean \u003d (Lažno, Istina);

3.2.5. Tip Raspon

U bilo kojem rednom tipu može se razlikovati podskup vrijednosti, određen minimalnom i maksimalnom vrijednošću, koji uključuje sve vrijednosti izvornog tipa koje su unutar tih granica, uključujući i same granice. Takav podskup definira raspon tipa. Raspon tipa je naveden navođenjem minimalne i maksimalne vrijednosti odvojene s dvije točke:

tip \u003d. . ;

Minimalna vrijednost pri određivanju ove vrste ne smije prelaziti maksimalnu.

Primjer. Definicija vrsta raspona.

tip
Desetak \u003d 1..12; (brojevi od 1 do 12)
AddSub \u003d Plus..Minus; (operacije sabiranja i oduzimanja)

3.2.6. Pravi tipovi

Za razliku od standarda jezika Pascal, gdje je definiran samo jedan stvarni tip, Turbo Pascal ima pet standardnih stvarnih vrsta: Real, Single, Double, Extended, Comp. Karakteristike ovih vrsta, vidi tabelu. 3. Tabela 3. Realni tipovi podataka

Tip Domet Broj značajnih znamenki Veličina u bajtovima
Pravi 2.9*10-39..1.7*1038 11-12 6
Jednokrevetna 1.5*10-45..3.4*1038 7-8 4
Dvokrevetna 5.0*10-324.-1.7*10308 15-16 8
Produženo 3.4*10-4932..1.1*104932 19-20 10
Comp -263+1..263-1 19-20 8

Tip Comp je zapravo vrsta celih brojeva povećanog raspona, ali se ne smatra rednim.

Tipovi Single, Double, Extended i Comp mogu se koristiti u programima samo ako postoji aritmetički koprocesor ili kada je uključen emulator koprocesora (vidi odlomke 17.5.8 i 17.7.1).

Podijeli ovo