Pascal tipovi podataka
Bilo koji podatak (konstante, varijable, vrijednosti funkcija ili izrazi) u Turbo Pascalu karakteriziraju njihovi tipovi. Tip definira skup važećih vrijednosti koje objekt može imati, kao i skup važećih operacija koje se mogu primijeniti na njega. Tip takođe određuje format internog prikaza podataka u memoriji računara.
Sljedeći tipovi podataka postoje u Turbo Pascalu.
1) Jednostavni tipovi:
- pravi;
- simbolički;
- logički (logički);
- na listi;
– ograničen (domet).
2) Kompozitni (strukturirani) tipovi:
– regularni (nizovi);
– kombinovano (evidencija);
- fajl;
- višestruki;
- string;
- objekti.
3) Referentni tipovi (ukucani i neupisani pokazivači).
4) Proceduralni tipovi.
Turbo Pascal obezbeđuje mehanizam za kreiranje novih tipova podataka, tako da ukupan broj tipova koji se koriste u programu može biti proizvoljno veliki.
cjelobrojni tip. Vrijednosti cjelobrojnog tipa su elementi podskupa cijelih brojeva. U Turbo Pascalu postoji pet cjelobrojnih tipova. Njihovi nazivi, raspon vrijednosti, dužina reprezentacije u bajtovima dati su u tabeli. 6.
Tabela 6
Cjelobrojni tipovi podataka
Cjelobrojne varijable su deklarirane korištenjem gore rezerviranih riječi:
i, j, k: cijeli broj;
Podaci cjelobrojnog tipa pohranjuju se točno u memoriju. Na primjer, varijable tipa cijeli broj zauzimaju 2 bajta (16 bita) u memoriji, koji su raspoređeni na sljedeći način: 1 bit je rezerviran za pohranjivanje predznaka broja (0 ako je broj pozitivan, a 1 ako je negativan) i 15 bitova za pohranjivanje broja u binarnom sistemu računanja. Maksimalni decimalni broj koji se može zapisati kao 15-bitni binarni broj je 32767.
Kada se koriste procedure i funkcije sa cjelobrojnim parametrima, treba se voditi „ugniježđenjem“ tipova, tj. gdje god se koristi riječ, bajt je dozvoljen (ali ne i obrnuto), longint "uključuje" cijeli broj, koji zauzvrat uključuje shortint.
Cjelobrojni tip definira pet osnovnih operacija koje također rezultiraju cijelim brojem: +, -,*, div, mod (sabiranje, oduzimanje, množenje, cijelobrojno dijeljenje i ostatak dijeljenja cijelog broja). U aritmetičkim izrazima, operacije *, div, mod imaju veći prioritet od operacija +, -. Primjeri pisanih izraza:
Lista procedura i funkcija primjenjivih na cjelobrojne tipove data je u tabeli. 7. Slova b, s, w, i, l označavaju izraze tipa byte, shortint, word, integer i longint, respektivno; x je izraz bilo kojeg od ovih tipova; identifikatori vb, vs, vw, vi, vl, vx označavaju varijable odgovarajućih tipova. Opcioni parametar je naveden u uglastim zagradama.
Tabela 7
Standardne procedure i funkcije primjenjive na tipove cijelih brojeva
Žalba | Vrsta rezultata | Akcija |
trbušnjaci(x) | x | Vraća modul x |
Chr(b) | Char | Vraća znak po njegovom kodu |
Dec(vx[, i]) | - | Smanjuje vrijednost vx za i, a u nedostatku i - za 1 |
Inc(vx[,i]) | - | Povećava vrijednost vx za i, a u nedostatku i - za 1 |
bok(i) | bajtova | Vraća visoki bajt argumenta |
bok(i) | bajtova | Isto |
Lo(i) | bajtova | Vraća niži bajt argumenta |
nisko (w) | bajtova | Isto |
Nepar (l) | bajtova | Vraća true ako je argument neparan broj |
Slučajno(w) | Kao parametar | Vraća pseudo-slučajni broj ravnomjerno raspoređen u rasponu 0...(w-1) |
Kvadrat (x) | x | Vraća kvadrat argumenta |
Swap(i) | Integer | |
Zamjena (w) | Riječ | Zamijenite bajtove u jednoj riječi |
succ(x) | Kao parametar | Vraća sljedeću cjelobrojnu vrijednost, tj. x+1 |
pred(x) | Kao parametar | Vraća prethodnu cjelobrojnu vrijednost, tj. x-1 |
Kada se radi s cijelim brojevima, tip rezultata će odgovarati tipu operanda, a ako su operandi različitih cjelobrojnih tipova, tipu operanda koji ima maksimalni raspon vrijednosti. Moguće prekoračenje rezultata se ne kontrolira, što može dovesti do grešaka u programu.
Pravi tip. Vrijednosti realnih tipova definiraju proizvoljan broj sa određenom konačnom preciznošću ovisno o internom formatu realnog broja. U Turbo Pascalu postoji pet pravih tipova (tabela 8).
Tabela 8
Pravi tipovi podataka
Realne varijable su deklarirane korištenjem gore rezerviranih riječi:
Realni broj u memoriji računara sastoji se od 3 dijela:
Znak broja;
Eksponencijalni dio;
Mantisa broja.
Mantisa ima dužinu od 23 (pojedinačne) do 63 (proširene) binarne cifre, što obezbeđuje tačnost od 7-8 za pojedinačne i 19-20 za proširene decimalne cifre. Decimalna tačka (zarez) se podrazumeva ispred leve (najznačajnije) cifre mantise, ali kada se radi sa brojem, njena pozicija se pomera ulevo ili udesno u skladu sa binarnim redosledom broja pohranjenog u eksponencijalnom delu , stoga se operacije nad realnim brojevima nazivaju aritmetičkim pokretnim zarezom (zarezom).
Tipovima Single, Double i Extended se pristupa samo pod posebnim načinima kompilacije. Da biste omogućili ove režime, izaberite stavku menija Opcije, Kompajler... i omogućite opciju 8087/80287 u grupi Numerička obrada.
Posebnu poziciju u Turbo Pascalu zauzima tip Comp, koji se tretira kao realan broj bez eksponencijalnih i razlomaka. Zapravo, Comp je predpisani veliki cijeli broj koji pohranjuje 19 do 20 značajnih decimalnih cifara. Istovremeno, Comp je u potpunosti kompatibilan sa svim drugim realnim tipovima u izrazima: na njemu su definirane sve realne operacije, može se koristiti kao argument matematičkih operacija itd.
Realni brojevi su dati decimalno u jednom od dva oblika.
AT forma fiksne tačke zapis se sastoji od cijelog broja i razlomka, odvojenih jedan od drugog tačkom, na primjer:
0.087 4.0 23.5 0.6
AT oblik s pomičnim zarezom unos sadrži slovo E, što znači "pomnoži sa deset na stepen", a stepen je cijeli broj, na primjer:
7E3 6.9E-8 0.98E-02 45E+04
Sljedeće operacije su definirane na objektima realnog tipa: +, -, *, /.
Operatori "*" i "/" imaju veći prioritet od operatora "+" i "-".
Ako je barem jedan operand realan, tada operacije +, -, *, / vode do stvarnog rezultata. Operacija dijeljenja / dovodi do stvarnog rezultata u slučaju dva cjelobrojna operanda, na primjer: 9/3 = 3.0.
Za rad sa stvarnim podacima mogu se koristiti standardne matematičke funkcije prikazane u tabeli 1. 9. Rezultat ovih funkcija je također stvaran.
Tabela 9
Matematičke funkcije koje rade sa stvarnim podacima
Nije dozvoljeno koristiti varijable i konstante tipa REAL:
– u funkcijama pred(x), succ(x), ord(x);
– kao indeksi nizova;
– kao oznake u izjavama o prijenosu kontrole;
– kao kontrolne varijable (parametri ciklusa).
Za pretvaranje realnog broja u cijeli broj, možete koristiti sljedeće funkcije:
trunc(x) je cijeli broj x (x je realan);
round(x) – zaokruživanje na najbliži cijeli broj (x je realan).
tip karaktera. Varijable znakova se deklariraju korištenjem rezervirane riječi char:
Vrijednosti ovog tipa se biraju iz narudženog skupa znakova (iz ASCII skupa) koji se sastoji od 256 znakova. Svakom znaku je dodijeljen cijeli broj iz raspona 0..255. Na primjer, velika slova latinice A..Z imaju šifre 65..90, a mala slova 97..122.
Vrijednost varijable tipa karaktera je jedan znak zatvoren u apostrofe, na primjer:
'F' '8' '*'
Znakovne varijable se mogu upoređivati jedna s drugom poređenjem znakovnih kodova.
Postoje funkcije koje uspostavljaju korespondenciju između znaka i njegovog koda:
ord(s) - daje broj simbola iz;
chr(i) - vraća znak sa brojem i.
Ove funkcije su inverzne jedna od druge.
boolean tip. Boolean varijable se deklariraju korištenjem rezervirane riječi boolean:
p1, p2: boolean;
Booleove varijable uzimaju dvije vrijednosti: istinito(istinito), false(Netačno).
Ove vrijednosti su poredane na sljedeći način: false< true. false имеет порядковый номер 0, true имеет порядковый номер 1.
Logičkim varijablama se može ili direktno dodijeliti vrijednost ili se može koristiti logički izraz. Na primjer,
a, d, g, b: boolean;
Relacijske operacije (<, <=, >, >=, =, <>) primijenjen na cjelobrojne, realne i karakterne varijable daju logički rezultat.
Logičke operacije nad operandima booleovog tipa takođe daju logički rezultat (operacije su navedene u opadajućem redosledu prioriteta) (za detalje pogledajte tabele 3 i 5):
ne – negacija (NE operacija);
i - logičko množenje (operacija I);
ili – logičko sabiranje (operacija ILI);
xor - ekskluzivno OR.
Izraz (ne a) ima suprotno značenje od a.
Izraz (a i b) daje vrijednost istinitom samo ako su i a i b istiniti, u suprotnom vrijednost ovog izraza je lažna.
Izraz (a ili b) procjenjuje se na false samo ako su i a i b netačni, u svim ostalim slučajevima rezultat je istinit.
Nabrojani tip. Nestandardni nabrojani tip je specificiran nabrajanjem kao nazivi vrijednosti koje varijabla može uzeti. Svaka vrijednost je imenovana nekim identifikatorom i nalazi se na listi zatvorenoj u zagradama. Opšti oblik opisa nabrojanog tipa:
x = (w1, w2, …, wn);
gdje je x ime tipa, w1, w2,…, wn su vrijednosti koje varijabla tipa x može uzeti.
Ove vrijednosti su poređane w1 Sljedeće standardne funkcije primjenjuju se na argument nabrojanog tipa w: succ(w), pred(w), ord(w). boja=(crvena, crna, žuta, zelena) ww=(lijevo, gore, desno, dolje); f: niz ww; succ(d) = žuta; Varijable a i b su tipa w. mogu uzeti jednu od tri vrijednosti i dalje Relacijske operacije su primjenjive na vrijednosti nabrojanog tipa: =,<>, <=, >=, <, >. Dozvoljeno je specificirati konstante nabrojanog tipa direktno u sekciji var bez upotrebe sekcije tip, Na primjer c,d: (crvena, crna, žuta, zelena); Domet (ograničen) tip. Kada definirate ograničeni tip, specificirate početne i krajnje vrijednosti koje varijabla tipa raspona može uzeti. Vrijednosti su razdvojene sa dvije tačke. Opis ograničenog tipa je Ovdje je a naziv tipa, min, max su konstante. Prilikom navođenja ograničenog tipa, moraju se poštovati sljedeća pravila: – obje granične konstante min i max moraju biti istog tipa; – Ograničeni tip se kreira iz podataka osnovnog tipa, koji može biti cijeli broj, karakter ili nabrojani tip. Na primjer: boja = crvena..žuta; slovo = 'a'..'f'; - Varijable ograničenog tipa mogu se deklarirati u sekciji var bez pozivanja na odjeljak tipa: – ograničeni tip nasljeđuje sva svojstva osnovnog tipa od kojeg je kreiran; – minimalno ograničenje mora uvijek biti manje od maksimalnog ograničenja. Nizovi. Niz je složeni tip, koji je struktura koja se sastoji od fiksnog broja komponenti istog tipa. Tip komponente naziva se osnovni tip. Sve komponente niza se mogu lako naručiti i bilo kojoj od njih se može pristupiti jednostavnim navođenjem njenog rednog broja. Opis niza u odjeljku var izgleda kao: a: niz of t2; gdje je a ime niza, niz, of– službene riječi (što znači “niz…”), t1 – tip indeksa; t2 – tip komponente (bazni tip). Broj indeksa određuje dimenziju niza. Indeksi mogu biti cjelobrojni (osim longint), karakterni, logički, nabrojani i tipovi raspona. Indeksi su odvojeni zarezima i stavljeni u uglaste 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 sljedeći: c: niz realnih; Po određenoj vrijednosti indeksa, možete odabrati određenu komponentu niza (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 cijelih brojeva: Opis ovog niza je sljedeći: b od cijelog broja; Ovdje je b ime niza, prvi indeks je broj reda i uzima vrijednosti od 1 do 2, drugi je broj kolone i uzima vrijednosti od 1 do 4. Prema određenim vrijednostima indeksa, možete odabrati specifičnu komponentu niza (na primjer, b znači element tabele u prvom redu i trećoj koloni, tj. broj -4). Indeksi mogu biti proizvoljni izrazi, koji odgovaraju tipu indeksa iz deklaracije niza: a: niz realnih; a[(i+1)*2] := 24; Skup operacija nad elementima niza u potpunosti je određen tipom ovih elemenata. string type. Vrsta stringa - skup nizova znakova proizvoljne dužine (od nule do datog broja). Varijable tipa string opisuju se pomoću servisne riječi string: b: string ; Posebnosti: – vrijednost string varijable se može unijeti pomoću tastature, dodijeljena u naredbi o dodjeli, pročitana iz datoteke. U ovom slučaju, dužina unesenog niza može biti bilo koja (manja od navedene veličine, jednaka veličini ili više, u drugom slučaju, dodatni znakovi se odbacuju); a:= 'Rezultati'; – dozvoljeno je koristiti operaciju konkatenacije u operatoru dodjeljivanja, jer nizovi mogu dinamički mijenjati svoju dužinu: a:= a + 'kalkulacije'; – maksimalna dužina varijable stringa je 255 karaktera, ova indikacija dužine se može izostaviti: a: string; a1: string ; Varijable a i a1 su iste (ekvivalentan opis). - memorija za varijable string tipa je maksimalno dodijeljena, ali se koristi samo dio memorije koji je trenutno zauzet znakovima niza. Za opisivanje string varijable dužine n koristi se n + 1 bajt memorije: n bajtova - za pohranjivanje znakova niza, n + 1-ti bajt - za pohranjivanje trenutne dužine. – operacije poređenja su definirane na vrijednostima tipova nizova:< <= > >= = <>. Kratki niz je uvijek manji od dugog. Ako su stringovi iste dužine, onda se kodovi znakova upoređuju. – pristup pojedinačnim elementima niza moguć je na isti način kao i pristup elementima niza: a, a. Uglaste zagrade označavaju broj elementa linije. Procedure i funkcije fokusirane na rad sa stringovima. konkat (s1, s2,…)- funkcija spajanja nizova, s1, s2,…- linije, broj linija može biti proizvoljan. Rezultat funkcije je niz. Ako je rezultirajući niz duži od 255 znakova, tada se string skraćuje na 255 znakova. kopija(e, indeks, broj)– funkcija izdvajanja niza iz izvornog niza s dugo count znakova koji počinju brojem karaktera index. izbrisati(e, indeks, broj) je postupak za uklanjanje podniza dužine iz niza s count znakova, počevši od znaka sa brojem index. umetak (s1, s2, indeks)- postupak umetanja linije s1 u niz s2, počevši od znaka s brojem index. dužina(e)– funkcija za određivanje trenutne dužine stringa, vraća broj jednak trenutnoj dužini stringa. pos(s1, s2)- funkcija pretraživanja u nizu s2 podnizovi s1. vraća broj pozicije prvog znaka podniza s1 U redu s2(ili 0 ako ova linija ne postoji). val(st, x, kod)– postupak za pretvaranje stringa s u cjelobrojnu ili realnu varijablu x. Parametar kod sadrži 0 ako je konverzija bila uspješna (i u x postavlja se rezultat konverzije) ili broj pozicije niza na kojem je pronađen pogrešan znak (u ovom slučaju vrijednost x se ne mijenja). Kompatibilnost i konverzija tipa. Turbo Pascal je kucani jezik. Izgrađen je na osnovu strogog pridržavanja koncepta tipova, prema kojem su sve operacije koje se koriste u jeziku definisane samo na operandima kompatibilnih tipova. Dvije vrste se smatraju kompatibilnim ako: - oba su istog tipa; oba su stvarna; - oba su netaknuta – jedan tip je tip opsega drugog tipa; – oba su tipovi raspona istog osnovnog tipa; – oba su skupovi sastavljeni od elemenata istog osnovnog tipa; – oba su pakirani nizovi (definirani prethodnom pakiranom riječi) iste maksimalne dužine; - jedan je niz tipa, a drugi je niz tipa ili karakter; - jedan tip je bilo koji pokazivač, a drugi je pokazivač na srodni objekt; – oba su proceduralna tipa sa istim tipom rezultata (za tip funkcije), brojem parametara i tipom međusobno odgovarajućih parametara. Kompatibilnost tipova poprima poseban značaj u izjavama o dodjeli. Neka je t1 tip varijable, a t2 tip izraza, odnosno dodjela je t1:=t2. Ovaj zadatak je moguć u sljedećim slučajevima: – t1 i t2 su istog tipa i ovaj tip se ne odnosi na datoteke, nizove datoteka, zapise koji sadrže polja datoteke ili nizove takvih zapisa; – t1 i t2 su kompatibilni redni tipovi i vrijednost t2 leži u rasponu mogućih vrijednosti t1; – t1 i t2 su realni tipovi, a vrijednost t2 leži u rasponu mogućih vrijednosti t1; – t1 je realan tip, a t2 je cjelobrojni tip; – t1 – niz i t2 – simbol; – t1 je niz, a t2 je upakovani niz; – t1 i t2 su kompatibilni pakirani nizovi; – 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 je njegovo dijete. U programu se podaci jednog tipa mogu konvertovati u podatke drugog tipa. Takva konverzija može biti eksplicitna ili implicitna. Eksplicitna konverzija tipa poziva posebne funkcije konverzije čiji su argumenti jednog tipa, a čije su vrijednosti drugog tipa. Primjer su već razmatrane funkcije ord, trunc, round, chr. Implicitna konverzija je moguća samo u dva slučaja: - u izrazima koji se sastoje od realnih i cjelobrojnih varijabli, potonje se automatski pretvaraju u realni tip, a cijeli izraz kao cjelina dobija realni tip; - isto memorijsko područje se naizmjenično tretira kao da sadrži podatke jednog ili drugog tipa (kombinacija podataka različitih tipova u memoriji). Kada deklarirate varijablu, morate navesti njen tip. Tip varijable opisuje skup vrijednosti koje može poduzeti i radnje koje se mogu izvršiti na njoj. Deklaracija tipa definira identifikator koji označava tip. Jednostavni tipovi se dijele na standardne (redne) i nabrojane (ograničene). Turbo Pascal ima četiri ugrađena standardna tipa: integer (integer), real (real), boolean (boolean) i char (character). Turbo Pascal ima pet ugrađenih tipova cijelih brojeva: shortint (kratki cijeli broj), integer (cijeli broj), longint (dugi cijeli broj), bajt (dugački bajt) i word (dugačka riječ). Svaki tip označava određeni podskup cijelih brojeva, kao što je prikazano u sljedećoj tabeli. Ugrađeni cjelobrojni tipovi. Domet Format 8 bitova potpisano 16 bitova potpisano 2147483648 +2147483647 32 bita potpisano 8 bita bez predznaka 16 neoznačenih bitova Aritmetičke operacije nad operandima cjelobrojnog tipa izvode se u skladu sa sljedećim pravilima: Operacije koje se izvode nad cijelim brojevima: “+” - dodavanje “-“ - oduzimanje "*" - množenje SQR - kvadratura DIV - odbacuje razlomak nakon dijeljenja MOD - dobiti cijeli ostatak nakon dijeljenja ABS - broj modula RANDOM(X) - dobijanje slučajnog broja od 0 do X A:=100 ; b:=60 ; a DIV b rezultat je 1 i MOD b rezultat je 40 Cjelobrojne varijable su deklarirane na sljedeći način: var lista varijabli: tip; Na primjer: var a,p,n:integer; Realni tip se odnosi na podskup realnih brojeva koji se mogu predstaviti u formatu s pomičnim zarezom s fiksnim brojem cifara. Vrijednost s pomičnim zarezom obično uključuje tri vrijednosti - m, b i e - tako da je m*b e, gdje je b uvijek 10, a m i e su cjelobrojne vrijednosti u rasponu realnog tipa. Ove m i e vrijednosti dalje definiraju raspon i preciznost stvarnog tipa. Postoji pet vrsta pravih tipova: real, single, duble, exnende, comp. Realni tipovi se razlikuju po opsegu i preciznosti pridruženih vrijednosti Opseg i decimalne cifre za realne tipove Domet Brojevi 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 nad realnim brojevima: Varijable realnog tipa su opisane kako slijedi: Na primjer: Tip char je bilo koji znak zatvoren u apostrofe. Da biste apostrof predstavili kao karakternu varijablu, stavite ga u apostrof: ''''. Svaki znak ima svoj kod i broj. Redni brojevi cifara 0,1..9 sortirani su uzlaznim redom. Redni brojevi slova su također u rastućem redoslijedu, ali ne moraju nužno da slijede jedan za drugim. Znakovi za poređenje odnose se na podatke znakova: > , < , >=, <=, <> . Na primjer: 'A'< ‘W’ Funkcije koje se primjenjuju na karakterne varijable: Nabrojani tip podataka je tako nazvan jer je specificiran kao nabrajanje konstanti u strogo definiranom redoslijedu i u strogo definiranom broju. Nabrojani tip se sastoji od liste konstanti. Varijable ovog tipa mogu uzeti vrijednost bilo koje od ovih konstanti. Deklaracija nabrojanog tipa izgleda ovako: gdje<список констант>- ovo je posebna vrsta konstanti, odvojenih zarezima i imaju svoj serijski broj, počevši od 0. Na primjer: Možete izvršiti sljedeće operatore dodjele: Skretanje:=jug; odlazak:=Avgust; zapremina:=rezervoar; ali ne možete raditi mješovite zadatke: Polazak:=jug; volume:=Avgust; Sljedeće funkcije se primjenjuju na varijable nabrojanog tipa: 1. ORD - serijski broj 2. PRED - prethodni element 3. SUCC je sljedeći element. Nabrojane varijable tipa se mogu porediti jer su poređane i numerisane. Dakle, izrazi: sjever< юг, июнь < январь имеют значения TRUE, а юг>zapad i tenk<бочка значение FАLSE. Ako varijabla ne uzima sve vrijednosti svog tipa, već samo u određenom rasponu, onda se može smatrati varijablom ograničenog tipa. Svaki ograničeni tip je definiran nametanjem ograničenja na osnovne tipove. Opisuje se ovako: U tom slučaju potrebno je poštovati sljedeća pravila: Možete to opisati odmah u odjeljku deklaracije varijable: U Pascalu varijable karakteriziraju njihove tip. Tip je svojstvo varijable, prema kojem varijabla može preuzeti skup vrijednosti koje dozvoljava ovaj tip, i sudjelovati u skupu operacija dozvoljenih za ovaj tip. Tip definira skup važećih vrijednosti koje varijabla datog tipa može uzeti. Takođe definiše skup dozvoljenih operacija iz varijable ovog tipa i definiše reprezentaciju podataka u RAM-u računara. Na primjer: n:integer; Pascal je statički jezik, što znači da se tip varijable određuje kada se deklarira i ne može se mijenjati. Pascal jezik ima razvijen sistem tipova - svi podaci moraju pripadati prethodno poznatom tipu podataka (bilo standardni tip kreiran tokom razvoja jezika ili korisnički definisani tip koji definiše programer). Programer može kreirati svoje tipove sa proizvoljnom složenom strukturom zasnovanom na standardnim tipovima ili tipovima koje je korisnik već definisao. Broj kreiranih tipova je neograničen. Prilagođeni tipovi u programu su deklarisani u sekciji TYPE formatom: [ime] = [tip] Standardni sistem tipova ima razgranatu, hijerarhijsku strukturu. Primarni u hijerarhiji su jednostavni tipovi. Takvi tipovi su prisutni u većini programskih jezika i nazivaju se jednostavnim, ali u Pascalu imaju složeniju strukturu. Strukturirani tipovi grade se prema određenim pravilima od jednostavnih tipova. Pointers formiraju se iz jednostavnih pogleda i koriste se u programima za postavljanje adresa. Proceduralni tipovi su inovacija Turbo Pascal jezika i omogućavaju vam da se pozivate na potprograme kao da su promenljive. Objekti su također novi, a namijenjeni su da se koriste kao objektno orijentirani jezik. U Pascalu postoji 5 tipova cjelobrojnih tipova. Svaki od njih karakterizira raspon prihvaćenih vrijednosti i njihovo mjesto u memoriji. Pri korištenju cijelih brojeva treba se voditi ugniježđenošću tipova, tj. manji tipovi raspona mogu biti ugniježđeni unutar većih tipova raspona. Tip Byte može biti ugniježđen u sve tipove koji zauzimaju 2 i 4 bajta. Istovremeno, tip Short Int, koji zauzima 1 bajt, ne može biti ugniježđen u tip Word, jer nema negativne vrijednosti. Postoji 5 pravih tipova: Integer tipovi su tačno predstavljeni u računaru. Za razliku od cjelobrojnih tipova, vrijednost realnih tipova definira proizvoljan broj samo sa određenom konačnom preciznošću, ovisno o formatu broja. Realni brojevi su u kompjuteru predstavljeni fiksnim ili pokretnim zarezom. 2358.8395
0.23588395*10 4
0,23588395*E 4 Posebnu poziciju u Pascalu zauzima Comp tip, u stvari, to je veliki cijeli broj sa predznakom. Ovaj tip je kompatibilan sa svim realnim tipovima i može se koristiti za velike cijele brojeve. Kada se predstavljaju realni brojevi s pomičnim zarezom, decimalni zarez se uvijek podrazumijeva ispred lijeve ili najviše mantise, ali kada se radi s brojem, pomiče se ulijevo ili udesno. Redni tipovi kombinuju nekoliko jednostavnih tipova. To uključuje: Zajedničke karakteristike za redne tipove su: svaki tip ima konačan broj mogućih vrijednosti; vrijednost ovih tipova se može porediti na određeni način i sa svakim brojem se može uporediti određeni broj, koji je redni broj; susjedne vrijednosti rednih tipova razlikuju se za jedan. Za vrijednosti ordinalnog tipa može se primijeniti funkcija ODD(x), koja vraća redni broj argumenta x. Funkcija PRED(x) - vraća prethodnu vrijednost rednog tipa. PRED(A) = 5. SUCC(x) Funkcija - Vraća sljedeću vrijednost ordinalnog tipa. SUCC(A) = 5. Vrijednosti tipova znakova su 256 znakova izvan skupa koje dozvoljava tablica kodova računara koji se koristi. Početna oblast ovog skupa, odnosno raspon od 0 do 127, odgovara skupu ASCII kodova u koje se učitavaju znakovi abecede, arapski brojevi i specijalni znakovi. Znakovi početne oblasti su uvek prisutni na tastaturi računara. Starije područje se naziva alternativno, sadrži znakove nacionalnih abeceda i razne specijalne znakove, te pseudografske znakove koji ne odgovaraju ASCII kodu. Vrijednost tipa karaktera zauzima jedan bajt u RAM-u. U programu su vrijednosti zatvorene u apostrofe. Također, vrijednosti se mogu specificirati u obliku njegovog ASCII koda. U tom slučaju, ispred broja sa šifrom mora biti znak #. C:= 'A' Postoje dvije vrijednosti tipa Boolean: True (True) i False (False). Varijable ovog tipa su specificirane uslužnom riječju BOOLEAN. Boolean vrijednost zauzima jedan bajt u RAM-u. Vrijednosti True i False odgovaraju numeričkim vrijednostima 1 i 0. Postoji podskup njegovog osnovnog tipa, koji može biti bilo koji redni tip. Tip raspona definiran je granicama unutar osnovnog tipa. [min-vrijednost]…[maksimalna vrijednost] Tip opsega se može navesti u odeljku Tip kao određeni tip ili direktno u odeljku Var. Prilikom definiranja tipa raspona, treba se voditi: Ovaj tip se odnosi na redne tipove i specificira se navođenjem onih vrijednosti koje može nabrojati. Svaka vrijednost je imenovana nekim identifikatorom i nalazi se na listi uokvirenoj u zagradama. Nabrojani tip je specificiran u Tip: narodi = (muškarci, žene); Prva vrijednost je 0, druga vrijednost je 1 i tako dalje. Maksimalna snaga 65535 vrijednosti. Tip stringa pripada grupi strukturiranih tipova i sastoji se od osnovnog tipa Char. Tip stringa nije redni tip. Definira skup znakovnih nizova proizvoljne dužine do 255 znakova. U programu se tip stringa deklarira riječju String. Pošto je String osnovni tip, deklarisan je u jeziku, a deklaracija varijable tipa String se vrši u Var. Kada deklarirate varijablu tipa string iza Stringa, preporučljivo je navesti dužinu niza u uglastim zagradama. Određuje cijeli broj između 0 i 255. Fam: String; Određivanje dužine stringa omogućava kompajleru da dodijeli određeni broj bajtova u RAM-u za datu varijablu. Ako dužina stringa nije specificirana, kompajler će dodijeliti maksimalni mogući broj bajtova (255) za vrijednost ove varijable. Lekcija govori o glavnim standardnim tipovima podataka u Pascalu, konceptu varijable i konstante; objašnjava kako se radi s aritmetičkim operacijama Pascal je kucani programski jezik. To znači da su varijable koje pohranjuju podatke specifičnog tipa podataka. One. program direktno treba da naznači koji se podaci mogu pohraniti u određenu varijablu: tekstualni podaci, numerički podaci, ako su numerički, onda cjelobrojni ili razlomak, itd. To je prije svega potrebno kako bi računar "znao" koje operacije se mogu izvoditi sa ovim varijablama i kako ih pravilno izvesti. Na primjer, dodavanje tekstualnih podataka, ili kako se to pravilno naziva u programiranju - konkatenacija - je uobičajeno spajanje nizova, dok se dodavanje numeričkih podataka događa bit po bit, osim toga, razlomci i cijeli brojevi se takođe zbrajaju u različitim načine. Isto važi i za druge operacije. Razmotrite najčešće tipove podataka u Pascalu. Mora se imati na umu da prilikom pisanja programa u Pascalu cijeli broj(prevedeno s engleskog kao cijeli broj) se najčešće koristi, jer je raspon vrijednosti najtraženiji. Ako je potreban širi raspon, koristite longint(dugi cijeli broj, prevedeno sa engleskog long integer). Tip bajt u Pascal-u se koristi kada nema potrebe da se radi sa negativnim vrednostima, isto važi i za tip riječ(samo je raspon vrijednosti ovdje mnogo veći). Primjeri kako su varijable opisane (deklarirane) u Pascalu: program a1; varx,y:integer; (tip cjelobrojnog) myname:string; (tip stringa) begin x:=1; y:=x+16; myname:="Petar"; writeln ("ime: ",moje ime, ", starost: ", y) kraj. rezultat: Obratite pažnju na to kako Koriste se Pascal komentari. U primjeru, komentari, tj. servisni tekst koji "nije vidljiv" kompajleru je zatvoren u vitičastim zagradama. Obično, komentare daju programeri kako bi razjasnili isječke koda. Zadatak 3. Stanovništvo Moskve je a = 9.000.000 stanovnika. Stanovništvo Novog Vasjukova je jednako b=1000 stanovnika. Napišite program koji utvrđuje razliku u broju stanovnika između dva grada. Koristite varijable Realni brojevi u Pascalu i općenito u programiranju su nazivi razlomaka. Realni tip u Pascalu je najčešće korišten od realnih tipova. Gore su predstavljeni jednostavni tipovi podataka u Pascalu, koji uključuju: Za izlaz vrijednosti varijabli realnog tipa obično se koristi formatirani izlaz: p:=1234.6789; WriteIn(p:6:2); (1234.68) Uz jednostavne tipove, jezik se također koristi strukturirani tipovi podataka i pokazivači, što će biti tema narednih Pascal lekcija. Često program unaprijed zna da će varijabla poprimiti određenu vrijednost i da je neće mijenjati tokom izvršavanja cijelog programa. U ovom slučaju morate koristiti konstantu. Deklaracija konstante u Pascal-u se javlja prije deklaracije varijabli (prije servisne riječi var) i izgleda ovako: Primjer opisa konstante u Pascalu: const x=17; varmyname:string; begin myname:="Petar"; writeln ("ime: ", moje ime, ", starost: ", x) kraj. Kako bi se ostavile uvlake nakon izlaza vrijednosti varijabli, kako se vrijednosti ne bi "spajale" jedna s drugom, uobičajeno je da se kroz dvotočku naznači koliko znakova je potrebno dati za izlaz od vrijednosti: Ovdje se vrijedi detaljnije zadržati na nekim aritmetičkim operacijama. Primjer rada Inc.: x:=1; inc(x); (Povećava x za 1, tj. x=2) writeln (x) Složenija upotreba inc procedure: a:=-9; b:=abs(a); (b=9) Primjer korištenja neparne funkcije: varx:integer; beginx:=3; writeln(sqr(x)); (odgovor 9) kraj. Formula je: exp(ln(a)*n) , gdje je a broj, n je stepen (a>0). Međutim, u pascal abc kompajleru, eksponencijacija je mnogo lakša: varx:integer; beginx:=9; writeln(sqrt(x)); (odgovor 3) kraj. Zadatak 4. Poznate su dimenzije kutije šibica: visina - 12,41 cm, širina - 8 cm, debljina - 5 cm. Izračunajte osnovnu površinu kutije i njenu zapreminu Zadatak 5. U zoološkom vrtu postoje tri slona i dosta zečeva, a broj zečeva se često mijenja. Slon treba da pojede sto šargarepa dnevno, a zec dve. Svako jutro čuvar zoološkog vrta prijavljuje broj zečeva na kompjuter. Računar, kao odgovor, treba da kaže pratiocu ukupan broj šargarepa koje danas treba hraniti zečevima i slonovima. Zadatak 6. To je poznato x kg slatkiša a rublja. Odredite koliko y kg ovih slatkiša, kao i na koliko kilograma slatkiša se može kupiti k rublja. Sve vrijednosti unosi korisnik. Federalna agencija za obrazovanje apstraktno "VRSTE PODATAKA U PASCAL-u" 1. Tipovi podataka Bilo koji podatak, tj. Konstante, varijable, svojstva, vrijednosti funkcije ili izrazi karakteriziraju njihovi tipovi. Tip definira skup važećih vrijednosti koje objekt može imati, kao i skup važećih operacija koje se mogu primijeniti na njega. Pored toga, tip takođe određuje format internog prikaza podataka u memoriji računara. Generalno, jezik Object Pascal karakteriše razgranata struktura tipova podataka (slika 1.1). Jezik pruža mehanizam za kreiranje novih tipova, tako da ukupan broj tipova koji se koriste u programu može biti proizvoljno velik. Podaci koji se obrađuju u programu podijeljeni su na varijable, konstante i literale: Konstante
su podaci čije su vrijednosti postavljene u odjeljku deklaracije konstante i ne mijenjaju se tokom izvršavanja programa. Varijable
su deklarisani u sekciji deklaracije varijable, ali za razliku od konstanti, one dobijaju svoje vrednosti već tokom izvršavanja programa i te vrednosti se mogu menjati. Konstante i varijable se mogu pozvati po imenu. Doslovno
nema identifikator i predstavljen je direktno vrijednošću u tekstu programa. Tip definira skup vrijednosti koje elementi podataka mogu preuzeti i skup operacija dozvoljenih na njima. Ovo i sljedeća četiri poglavlja pružaju detaljan opis svake vrste.
1.1 Jednostavni tipovi Jednostavni tipovi uključuju redni, realni i tipove datuma i vremena. Redni tipovi razlikuju se po tome što svaki od njih ima konačan broj mogućih vrijednosti. Ove vrijednosti se mogu poredati na određeni način (otuda naziv tipova) i, stoga, svaka od njih može biti povezana s nekim cijelim brojem - rednim brojem vrijednosti. Pravi tipovi, striktno govoreći, takođe imaju konačan broj vrednosti, što je određeno formatom unutrašnjeg prikaza realnog broja. Međutim, broj mogućih vrijednosti realnih tipova je toliko velik da nije moguće pridružiti cijeli broj (njegov broj) svakom od njih. tip datuma i vremena dizajniran za pohranjivanje datuma i vremena. U stvari, koristi pravi format za ove svrhe. 1.1.1 Redni tipovi Redni tipovi uključuju (pogledajte sliku 1.1) cijeli broj, boolean, karakter, enum i raspon. Za bilo koji od njih primjenjiva je funkcija Ord(x) koja vraća redni broj vrijednosti izraza X. Rice. 1.1 - Struktura tipova podataka Za cijeli tipa, funkcija ord(x) vraća vrijednost samog x, to jest, Ord(X) = x za x koji pripada bilo kojem cijeli tip. Primjena Naredbe(x) na logicno
, simbolički i nabrojani tipovi daje pozitivan cijeli broj u rasponu od 0 do 1 ( boolean tip), od 0 do 255 ( simbolički), od 0 do 65535 ( enumerable). Tip-opsegčuva sva svojstva osnovnog ordinalnog tipa, tako da rezultat primjene funkcije ord(x) na njega ovisi o svojstvima tog tipa. Funkcije se također mogu primijeniti na redne tipove: predvidjeti(x)- vraća prethodnu vrijednost rednog tipa (vrijednost koja odgovara rednom redu (x) -1, tj. ord(pred(x)) = ord(x) - 1; succ(x)- vraća sljedeću vrijednost ordinalnog tipa koja odgovara ordinalu ord(x) + 1, tj. ord(Succ(x)) = ord(x) + 1. Na primjer, ako program definira varijablu tada će funkcija PRED(c) vratiti znak "4", a funkcija SUCC(c) će vratiti znak "6". Ako zamislimo bilo koji redni tip kao uređeni skup vrijednosti koje se povećavaju s lijeva na desno i zauzimaju određeni segment na brojevnoj osi, tada funkcija pred (x) nije definirana za lijevi kraj, a succ (x) - za desni kraj ovog segmenta. Cjelobrojni tipovi
. Raspon mogućih vrijednosti za cjelobrojne tipove ovisi o njihovoj internoj reprezentaciji, koja može biti jedan, dva, četiri ili osam bajtova. U tabeli. 1.1 navodi imena cjelobrojnih tipova, dužinu njihove interne reprezentacije u bajtovima i raspon mogućih vrijednosti. Tabela 1.1 - Cjelobrojni tipovi Vrste duga rijec i int64 prvi put predstavljen u verziji 4 i tipovima Smallint i kardinal nedostaje u Delphiju 1. Tip cijeli broj za ovu verziju, potrebno je 2 bajta i ima raspon vrijednosti od -32768 do +32767, tj. isto kao Smallint
. Kada se koriste procedure i funkcije sa cjelobrojnim parametrima, treba se voditi „ugniježđenjem“ tipova, tj. gde god se može koristiti riječ, dozvoljena je upotreba bajtova(ali ne i obrnuto) Longint"ulazi" Smallint, što zauzvrat uključuje Shortint
. Lista procedura i funkcija primjenjivih na cjelobrojne tipove data je u tabeli. 1.2. Slova b, s, w, i, l označavaju izraze, respektivno, tipa bajtova
, Shortint, Word, Integer i Longint
, x je izraz bilo kojeg od ovih tipova; slova vb, vs, vw, vi, vl, vx označavaju varijable odgovarajućih tipova. Opcioni parametar je naveden u uglastim zagradama. Tabela 1.2 – Standardne procedure i funkcije primjenjive na tipove cijelih brojeva Kada se radi s cijelim brojevima, tip rezultata će odgovarati tipu operanda, a ako su operandi različitih cjelobrojnih tipova, zajedničkom tipu koji uključuje oba operanda. Na primjer, kada djelujete sa shortint i riječ zajednički će biti tip cijeli broj. Podrazumevano, Delphi kompajler ne generiše kod koji kontroliše da li je vrednost van opsega, što može dovesti do zabune. Boolean tipovi
. Boolean tipovi su Boolean, ByteBool, Bool, wordBool i longbool. U standardnom Pascalu definiran je samo tip Boolean, drugi Booleov tipovi su uvedeni u Object Pascal radi kompatibilnosti sa Windows: tipovima Boolean i ByteBool zauzimaju po jedan bajt svaki, Bool i wordbool- 2 bajta, longbool- 4 bajta. Booleove vrijednosti mogu biti jedna od unaprijed deklariranih konstanti False (false) ili True (true). Budući da je Boolean tip redni tip, može se koristiti u naredbi petlje tipa brojanja. U Delphiju 32 for Boolean značenje Ord (Tačno) = +1, dok za ostale tipove ( bool, wordbool itd.) Ord (True) = -1, tako da ove vrste operatora treba pažljivo koristiti! Na primjer, za verziju Delphi 6, izvršni showMessage (" ---") izraz u sljedećoj petlji za nikada neće biti izvršeno: za L:= Netačno do Tačno ShowMessage("--); Ako zamijenimo tip parametra petlje L u prethodnom primjeru sa Boolean, petlja će se pokrenuti i poruka će se pojaviti dva puta na ekranu. [Za Delphi verzije 1 i 2 ord (Tačno) =+1 za bilo koji logički tip.] Tip karaktera
. Vrijednosti tipa znakova su skup svih PK znakova. Svakom znaku je dodijeljen cijeli broj u rasponu od 0...255. Ovaj broj služi kao kod za interni prikaz karaktera, a vraća ga funkcija ord. Windows kodiranje koristi ANSI kod (nazvan po Američkom nacionalnom institutu za standarde, američkom institutu za standarde koji je predložio ovaj kod). Prva polovina PC karaktera sa kodovima 0...127 odgovara tabeli 1.3. Druga polovina znakova sa kodovima 128...255 mijenja se za različite fontove. Standardni Windows fontovi Arial Cyr, Courier New Cyr i Times New Roman za predstavljanje ćiriličnih znakova (bez slova “ë” i “Ë”) koriste posljednja 64 koda (od 192 do 256): “A”... “Â ” su kodirane vrijednosti 192..223, “a”... “i” - 224...255. Znakovi "Ë" i "ë" imaju šifre 168 i 184, respektivno. Tabela 1.3 - Kodiranje znakova prema ANSI standardu Simboli sa kodovima 0...31 odnose se na servisne kodove. Ako se ovi kodovi koriste u simboličkom tekstu programa, smatraju se razmacima.Standardni tipovi
Cjelobrojni tip (cijeli broj)
Pravi tip (pravi)
Vrsta karaktera (char)
nabrojani tip
ograničenog tipa
indeks tipa =0 ..63 ; slovo='a'..'z'; varchar1,char2:slovo; a,g:index ; Redni tipovi
Tip karaktera
Boolean (boolean) tip
Tip-opseg
Nabrojani tip
string type
Cjelobrojni tipovi podataka u Pascalu
Tip
Domet
Potrebna memorija (bajtovi)
bajt
0..255
1
shortint
-128..127
1
cijeli broj
-32768.. 32767
2
riječ
0..65535
2
longint
-2147483648..2147483647
4
ime: Petar, godina: 17Komentari u Pascalu
Stvarni tipovi podataka u Pascalu
Tip
Domet
Potrebna memorija (bajtovi)
pravi
2.9*10E-39..1.7*10E38
6
single
1,5 * 10 E-45 .. 3,4 * 10E38
4
duplo
5*10E-324..1.7*10E308
8
produženo
1,9 * 10E-4951 .. 1,1 * 10E4932
10
Konstante u Pascalu
1
2
3
4
5
6
const x= 17 ; var moje ime: string ; begin myname: = "Petar" ; writeln ("name: " , myname, ", age: " , x) end .
"Prekrasan" izlaz cijelih i realnih brojeva
Aritmetičke operacije u Pascalu
Redoslijed operacija
Pascal standardne aritmetičke procedure i funkcije
Inc(x,n) gdje je x redni tip, n je cjelobrojni tip; procedura povećava x za n.a: =- 9 ; b:=abs(a); (b=9)
(S=širina * debljina, V=površina*visina)Ime
Dužina, bajtovi
Raspon vrijednosti
kardinal
4
0. .. 2 147 483 647
bajtova
1
0...255
Shortint
1
-128...+127
Smallint
2
-32 768...+32 767
Riječ
2
0...65 535
Integer
4
Longint
4
-2 147 483 648...+2 147 483 647
int64
8
-9*1018...+9*1018
duga rijec
4
0. . .4 294 967 295
Žalba
Vrsta rezultata
Akcija
trbušnjaci (x)
x
Vraća modul x
chr(b)
Char
Vraća znak po njegovom kodu
dec(vx[, i])
-
Smanjuje vrijednost vx za i, a u nedostatku i - za 1
inc(vx[,i])
-
Povećava vrijednost vx za i, a u nedostatku i - za 1
bok(w)
bajtova
Vraća najviši luk argumenta
zdravo(ja)
Isto
Vraća treći bajt
Lo(i)
“
Vraća niži bajt argumenta
niska (w)
“
Isto
neparan(l)
Boolean
Vraća True ako je argument neparan broj
Slučajno(w)
Kao parametar
Vraća pseudo-slučajni broj ravnomjerno raspoređen u rasponu 0...(w-l)
sqr(x)
X
Vraća kvadrat argumenta
zamijeniti(i)
Integer
Zamijenite bajtove u jednoj riječi
swap(w)
Riječ
Također
Šifra
Simbol
Šifra.
Simbol
Šifra.
Simbol
Šifra
Simbol
0
NUL
32
BL
64
@
96
"
1
ZON
33
!
65
ALI
97
a
2
STX
34
“
66
AT
98
b
3
ETX
35
#
67
With
99
sa
4
EOT
36
$
68
D
100
d
5
ENQ
37
%
69
E
101
e
6
ACK
38
&
70
F
102
f
7
BEL
39
"
71
G
103
d
8"
BS
40
(
72
H
104
h
9
HT
41
)
73
I
105
i
10
LF
42
*
74
J
106
j
11
VT
43
+
75
To
107
k
12
FF
44
F
76
L
108
1
13
CR
45
-
77
M
109
m
14
SO
46
78
N
110
n
15
SI
47
/
79
0
111
o
16
DEL
48
0
80
R
112
P
17
DC1
49
1
81
Q
113
q
18
DC2
50
2
82
R
114
r
19
DC3
51
3
83
S
115
s
20
DC 4
52
4
84
T
116
t
21
NAK
53
5
85
U
117
u
22
SYN
54
6
86
V
118
v
23
ETB
55
7
87
W
119
W
24
CAN
56
8
88
X
120
x
25
EM
57
9
89
Y
121
At
26
SUB
58
:
90
Z
.122
z
27
ITD
59
;
91
t
123
{
28
FS
60
<
92
\
124
1
29
GS
61
=
93
]
125
}
30
RS
62
>
94
L
126
~
31
US
63
F
95
127
r