Cjelobrojni tipovi podataka. Pascal

Podaci su opšti koncept za sve čime se oni bave. Računska mašina. Bilo koji tip podataka definira skup vrijednosti koje određena varijabla može uzeti i operacije koje se mogu primijeniti na njih. Svaka varijabla na koju se naiđe u programu mora biti povezana s jednim i samo jednim tipom.

Postoje dvije vrste jednostavnih tipova u Pascalu: redni tipovi i realni tipovi. Ordinalni tip ili definira programer (tip nabrajanja ili tip raspona) ili je označen imenom jednog od tri unaprijed definirana ordinalna tipa: Boolean, Integer ili Char. Realni tip je označen preskriptivnim imenom tipa Real.

Nabrojani tip karakterizira mnogo različitih vrijednosti koje sadrži, među kojima je definiran linearni redoslijed. Same vrijednosti su označene imenima u definiciji ovog tipa.

Opseg (ograničeni) tip je specificiran koristeći minimalne i maksimalne vrijednosti koje se odnose na prethodno opisani redni tip. Ovako se generiše novi redni tip.

Redni tipovi podataka

Redni tip podataka opisuje konačan i uređen skup vrijednosti. Ove vrijednosti se mapiraju u niz rednih brojeva 0,1,2,...; izuzetak je napravljen samo za redne cijele brojeve, koji se preslikavaju na sebe. Svaki redni tip ima minimalnu i maksimalnu vrijednost. Za sve vrijednosti osim minimalne postoji prethodna vrijednost, a za sve vrijednosti osim maksimalne postoji naknadna vrijednost.

Propisane funkcije succ, pred, ord prihvaćaju argumente bilo kojeg od ordinalnih tipova:
succ(X) - daje sljedeću rednu vrijednost nakon X
pred(X) - daje rednu vrijednost koja prethodi X
ord(X) - daje redni broj za X

Za sve redne tipove postoje relacioni operatori = , = i >, pod pretpostavkom da su oba operanda istog tipa.

Boolean tip

Booleova vrijednost je jedna od dvije istinite vrijednosti, označene unaprijed definiranim imenima false i true .

Postoje sljedeće logičke operacije koje daju boolean vrijednost kada ih primjenjujete na logičke operande:
i - logičko I
ili - logičko ILI
ne - logično NE

Također, bilo koja od relacijskih operacija (= , = , > , in) daje logičan rezultat.

Dodatno, boolean tip je definiran tako da je false

Postoje i unaprijed definirane logičke funkcije (tj. funkcije koje daju logički rezultat):
odd(F) - istina ako je cijeli broj F-neparan i rezultat je netačan ako je F-par
eoln(F) - provjera na kraju linije
eof(F) - provjera kraja datoteke

Integer type

Integer tip uključuje niz cijelih brojeva.

Kada radite sa cjelobrojnim operandima, sljedeće aritmetičke operacije dati cjelobrojne vrijednosti:
* - množenje
div - cijeli broj iz dijeljenja
mod - ostatak dijeljenja
+ - dodavanje
- - oduzimanje

U Pascalu postoji i unaprijed definirana konstanta koja se zove MaxInt, koja sadrži maksimalnu vrijednost cjelobrojnog tipa Integer i jednaka je 32767

Cjelokupni rezultat postiže se i sa četiri važne propisane funkcije:
abs(I) - apsolutna vrijednost cjelobrojne vrijednosti I
sgr(I) - cjelobrojna vrijednost I na kvadrat s obzirom da je I trunc(R) - daje cijeli broj realnog broja R
round(R) - vraća zaokruženi cijeli broj. U ovom slučaju: za R>0 znači trunc(R+0,5) , a za R

Ako je I cjelobrojna vrijednost, tada:
succ(I) - daje sljedeću cjelobrojnu vrijednost (I+1)
pred(I) - daje prethodnu cjelobrojnu vrijednost (I-1)

Vrsta karaktera (Char)

Vrijednosti znakova su elementi konačnog i uređenog skupa znakova. Vrijednosti ovog tipa su predstavljene jednim znakom zatvorenim u jednostruke navodnike (apostrofe). Ako je potreban sam apostrof, piše se dva puta.
Primjeri: "*" "G" "3" """" "X"

    Za tip Char primjenjuju se sljedeće minimalne pretpostavke:
  1. Decimalne cifre od 0 do 9 poredane su prema njihovim numeričkim vrijednostima i slijede jedna za drugom (na primjer, succ("5") = "6").
  2. Mogu biti velika slova od "A" do "Z"; ako je tako, onda su poredani po abecednom redu, ali ne moraju nužno da slijede jedan za drugim (npr. "A"
  3. Mogu biti mala slova od "a" do "z"; ako je tako, onda su poredani po abecednom redu, ali ne moraju nužno da slijede jedan za drugim (npr. "a"

Za mapiranje datog skupa znakova u serijske brojeve i nazad, postoje dvije unaprijed definirane funkcije:
ord(C) - daje redni broj znaka C u navedenom uređenom skupu znakova
chr(I) - daje znak sa serijskim brojem I

Za argumente tipa Char, unaprijed definirane funkcije pred i succ mogu se definirati na sljedeći način:
pred(C) = chr(ord(C)-I)
succ(C) = chr(ord(C)+I)

Komentar. Prethodni ili sljedeći simbol ovisi o specificiranom skupu simbola, tako da su oba ova odnosa važeća samo ako prethodni ili sljedeći simbol postoji.

Pravi tip

Vrijednosti realnog tipa su elementi implementacijom definiranog podskupa realnih brojeva.

Sve operacije na stvarnim količinama su okvirne, njihova tačnost je određena implementacijom (mašinom) kojom se bavite. Realni tip se odnosi na jednostavnog tipa, ovo nije redni tip. Realne vrijednosti nemaju redni broj i nema prethodne ili sljedeće vrijednosti za bilo koju od njih.

Ako je barem jedan od operanada realan tip (drugi može biti cijeli broj), sljedeće operacije daju pravi rezultat:
* - množenje
/ - podjela (oba operanda mogu biti cijeli brojevi, ali rezultat je uvijek stvaran)
+ - dodavanje
- - oduzimanje

Postoje propisane funkcije koje daju stvarni rezultat dajući pravi argument:
abs(R) - apsolutna vrijednost R
sqr(R) - R na kvadrat ako je rezultat unutar raspona realnih brojeva

I ove propisane funkcije daju stvarni rezultat s cijelim ili realnim argumentom:
sin(X) - daje sinus od X; X se izražava u radijanima
cos(X) - daje kosinus od X; X se izražava u radijanima
arctan(X) - daje arktangens od X izražen u radijanima
ln(X) - daje vrijednost prirodnog (baza e) logaritma za X, X>0
exp(X) - daje vrijednost eksponencijalne funkcije (tj. na stepen X)
sqrt(X) - daje vrijednost kvadratnog korijena od X, X>=0

Upozorenje. Funkcije pred, succ ne mogu se koristiti za stvarne argumente. Ne možete koristiti vrijednosti realnog tipa prilikom indeksiranja nizova, za kontrolu u petlji s parametrom, za određivanje osnovnog tipa skupova, za indeksiranje u varijantnom operatoru.

Najčešći u matematici numeričke vrste- Ovo cijeli brojevi koji predstavljaju beskonačan broj diskretnih vrijednosti, i validan brojevi koji predstavljaju neograničeni kontinuum vrijednosti.

Opis Pascalovih numeričkih tipova podataka (cijeli brojevi)

Unutar istog jezika mogu se implementirati različiti podskupovi skupa cijelih brojeva. Raspon mogućih vrijednosti cjelobrojnih numeričkih tipova ovisi o njihovoj internoj reprezentaciji, koja može biti jedan, dva ili četiri bajta. Dakle, u Pascalu 7.0 se koriste sljedeći cjelobrojni numerički tipovi podataka:

Sa celim numeričke vrste podataka Pascal može izvesti sljedeće operacije:

  • aritmetika:
    dodatak(+);
    oduzimanje(-);
    množenje(*);
    ostatak podjele (mod);
    eksponencijacija;
    unarni plus (+);
    unarni minus (-).
  • Operacije odnosa:
    odnos jednakosti (=);
    odnos nejednakosti (<>);
    omjer je manji (<);
    omjer veći od (>);
    odnos ne manji od (>=);
    nema vise stava (<=).

Kada deluje sa cjelobrojni numerički tipovi podataka tip rezultata će odgovarati tipu operanda, a ako su operandi različitih cjelobrojnih tipova, tipu operanda koji ima maksimalnu snagu (maksimalni raspon vrijednosti). Moguće prelivanje rezultata se ne kontrolira ni na koji način (važno je!) , što može dovesti do grešaka.

Posebnu pažnju treba posvetiti operaciji dijeljenja cjelobrojnih numeričkih tipova podataka. Pascal dozvoljava dvije operacije dijeljenja, koje se označavaju u skladu s tim "/" I div. Morate znati da rezultat dijeljenja "/" nije cijeli broj, već pravi broj(ovo je tačno čak i ako podijelite 8 sa 2, tj. 8/2=4,0). Division div je cjelobrojna podjela, tj. tip rezultata je cijeli broj.

Opis Pascalovih numeričkih tipova podataka (realne)

Realni numerički tip podataka odnosi se na podskup realnih brojeva koji se mogu predstaviti u takozvanom formatu s pomičnim zarezom s fiksnim brojem cifara. Sa pomičnim zarezom, svaki numerički tip podataka je predstavljen kao dvije grupe cifara. Prva grupa brojeva naziva se mantisa, druga je eksponent. Općenito, numerički tip podataka u obliku s pomičnim zarezom može se predstaviti na sljedeći način: X= (+|-)MP (+ | -) r, gdje je M mantisa broja; r – red brojeva (r – cijeli broj); P – osnova brojevnog sistema. Na primjer, za decimalnu bazu, reprezentacija 2E-1 (ovdje je E baza decimalnog brojevnog sistema) će izgledati ovako: 2*10 -1 =0,2, a reprezentacija 1,234E5 će odgovarati: 1,234*10 5 =123400.0.

Pascal koristi sljedeće tipove realnih brojeva, koji definiraju proizvoljan broj samo s određenom konačnom preciznošću ovisno o internom formatu realnog broja:

Prilikom opisivanja realne varijable tipa real, u memoriji računara će se kreirati varijabla od 4 bajta. U ovom slučaju, 3 bajta će biti data za mantisu, a jedan bajt za red.

Sljedeće operacije se mogu izvesti na stvarnim numeričkim tipovima podataka:

  • aritmetika:
    dodatak (+);
    oduzimanje(-);
    množenje(*);
    podjela(/);
    eksponencijacija;
    unarni plus (+);
    unarni minus (-).
  • Operacije odnosa:
    odnos nejednakosti (<>);
    omjer je manji (<);
    omjer veći od (>);
    odnos ne manji od (>=);
    nema vise stava (<=).

Kao što vidite, Pascal karakteriše bogat raspon realnih tipova, ali pristup numeričkim tipovima podataka single, duplo I produženo moguće samo pod posebnim načinima kompilacije. Ovi numerički tipovi podataka dizajnirani su za hardversku podršku za aritmetiku s pomičnim zarezom, a da bi ih efikasno koristio, vaš PC mora uključivati ​​matematički koprocesor.

Numerički tip podataka zauzima posebnu poziciju u Pascalu. comp, koji se tretira kao realan broj bez eksponencijalnih i razlomaka. zapravo, comp je "veliki" cijeli broj sa predznakom koji zadržava 19..20 značajnih decimalnih cifara. Istovremeno, numerički tip podataka comp u izrazima je u potpunosti kompatibilan s drugim realnim tipovima: sve realne operacije su definirane na njemu, može se koristiti kao argument matematičkim funkcijama, itd.

O pretvaranju Pascalovih numeričkih tipova podataka

U Pascalu su implicitne (automatske) konverzije numeričkih tipova podataka gotovo nemoguće. Izuzetak je napravljen samo za tip cijeli broj, koji je dozvoljen za upotrebu u izrazima kao što su pravi. Na primjer, ako su varijable deklarirane ovako:

Var X: cijeli broj; Y: pravi;

To je operater

će biti sintaktički ispravan, iako postoji cjelobrojni izraz desno od znaka dodjele i realna varijabla lijevo, kompajler će automatski konvertirati numeričke tipove podataka. Obrnuta konverzija je automatski tip pravi u tipu cijeli broj nemoguće u Pascalu. Prisjetimo se koliko je bajtova dodijeljeno za varijable tipa cijeli broj I pravi: za cjelobrojni tip podataka cijeli broj Dodijeljena su 2 bajta memorije, a realno 6 bajtova. Za pretvaranje pravi V cijeli broj Postoje dvije ugrađene funkcije: round(x) zaokružuje realni x na najbliži cijeli broj, trunc(x) skraćuje realni broj odbacivanjem razlomka.

Da bi mašina obrađivala bilo koje ulazne podatke, mora "razumjeti" kojoj vrsti pripadaju varijable u kojima su pohranjene vrijednosti. U nedostatku informacija o formatu podataka, računar neće moći utvrditi je li ova ili ona operacija dopuštena u određenom slučaju: na primjer, intuitivno je jasno da je nemoguće podići pismo na snagu ili uzeti integral niza. Dakle, korisnik mora odrediti koje radnje je dozvoljeno izvršiti sa svakom varijablom.

Kao iu drugim programskim jezicima visokog nivoa, tipovi varijabli u Pascalu su optimizirani za izvršavanje zadataka različitih tipova, imaju različit raspon vrijednosti i dužinu u bajtovima.

Podjela tipova varijabli

Tipovi varijabli u Pascalu se dijele na jednostavne i strukturirane. Jednostavni tipovi uključuju prave i redne tipove. Strukturirani uključuju nizove, zapise, skupove i datoteke. Odvojeno, razlikuju se pokazivači, objekti i proceduralni tipovi.

Pogledajmo redne i realne tipove. Redni tipovi uključuju 5 tipova cijelih brojeva, tip nabrajanja i tip raspona.

Redni tipovi

Postoji 5 tipova cijelih brojeva, koji se razlikuju po dužini bajta i rasponu vrijednosti.

Dužina Byte i ShortInt je 1 bajt. Razlika između njih je u tome što Byte pohranjuje samo ne-negativne vrijednosti, dok ShortInt dozvoljava pohranjivanje negativnih (od -128 do +127). Tipovi Word i Integer međusobno se odnose na sličan način, s jedinom razlikom što je njihova veličina 2 bajta.

Konačno, LongInt vam omogućava pohranjivanje negativnih i pozitivnih vrijednosti koristeći 4 bajta - u 16. stepenu numeričke dimenzije s obje strane nule. Različite vrste varijabli u Pascalu doprinose efikasnom rješavanju korisničkih zadataka, jer u svakom konkretnom slučaju može biti potreban i mali i veliki raspon vrijednosti, a mogu postojati i ograničenja u količini dodijeljene memorije.

Važno je shvatiti da nula zauzima isto toliko memorijskog prostora kao bilo koji drugi broj. Dakle, prilikom formiranja raspona vrijednosti, minimalni negativni broj u apsolutnoj vrijednosti bit će jedan veći od pozitivnog: na primjer, od -128 do +127.

Varijable koje pripadaju mogu imati vrijednost TRUE (true) ili FALSE (false) i zahtijevaju 1 bajt memorije.

Tip CHAR vam omogućava da pohranite bilo koji od mnogih znakova koji postoje u memoriji računara. Istovremeno, u simboličkim varijablama u Pascalu zapravo je pohranjen samo kod znaka, u skladu s kojim se prikazuje njegov grafički oblik.

Pravi tipovi

Među tipovima varijabli u Pascalu postoji nekoliko numeričkih s mogućnošću pisanja razlomka. Razlike između tipova Single, Real, Double i Extended svode se na raspon prihvaćenih vrijednosti, broj značajnih znamenki nakon decimalne točke i veličinu u bajtovima.

Prema gore prikazanom redoslijedu, varijabla svakog tipa će zauzeti 4, 6, 8 ili 10 bajtova.

Nizovi

Strukturirani tipovi podataka su složeni i omogućavaju vam da kombinirate niz jednostavnih vrijednosti unutar jedne varijable. Najbolji primjer je niz, koji se može definirati na sljedeći način:

String=niz char;

Tako smo dobili tip pod nazivom String, koji nam omogućava da definišemo varijable dužine do 100 karaktera. Poslednji red direktno specificira jednodimenzionalni niz Y tipa String. Varijable u Pascalu se opisuju tako što se identifikator postavi na lijevu stranu, a vrijednost varijable na desnu, nakon znaka jednakosti.

Raspon upisanih indeksa omogućava pristup svakom specifičnom elementu niza:

U ovom slučaju čitamo drugi element prethodno kreiranog niza Y.

String varijable u Pascal-u su takođe poseban slučaj jednodimenzionalnog niza, jer je string niz karaktera, odnosno elemenata tipa char.

Postovi

Zapis se sastoji od nekoliko polja ispunjenih podacima bilo koje vrste osim datoteke. Općenito, ova vrsta varijable je slična elementu baze podataka. Na primjer, možete unijeti ime osobe i broj telefona:

tip NTel = Zapis

Prvi red sa leve strane označava naziv tipa, a desno - zapis službene reči. Drugi red sadrži polje sa imenom, treći - telefonski broj. Riječ “kraj” znači da smo unijeli sva polja koja smo željeli i time je proces kreiranja zapisa završen.

Konačno, u posljednjem redu definiramo varijablu One, koja je tipa NTel.

Možete pristupiti i zapisu u cjelini i njegovim pojedinačnim komponentama, na primjer: one.NAME (tj. ime_varijable. ime_polja zapisa).

Fajlovi

Pascal vam omogućava rad sa tekstom, kucanim i neupisanim datotekama, koje su strukturirani niz komponenti istog tipa.

Prilikom čitanja ili pisanja u datoteku, može se koristiti ili puna adresa ili njen kratki oblik:

‘C:\Folder\File2.txt’

Kratka forma se koristi kada se datoteka stavi u fasciklu u kojoj je pohranjen program koji joj pristupa. Puni obrazac se može koristiti u bilo kojoj situaciji.

Varijablu tipa datoteke možete postaviti na sljedeći način:

f1: datoteka cijelog broja;

Za rad s datotekama koriste se različite funkcije i procedure koje povezuju varijablu s datotekom na disku, otvaraju je za čitanje, pisanje i prepisivanje, zatvaraju je kada se završi, omogućavajući vam da kreirate novo ime i brišete datoteku s računala.

Konačno

Bez mogućnosti korištenja različitih tipova varijabli u Pascalu, korisnik neće moći implementirati čak ni najjednostavniji zadatak. Da bi program izvršio algoritam bez grešaka, potrebno je naučiti i funkcijske riječi i sintaksu, jer mašina može „razumjeti“ komande samo ako su napisane na jedini ispravan način.

Redni tipovi uključuju (pogledajte sliku 4.1) cjelobrojne, logičke, karakterne, nabrojane i opsege. Funkcija ORD(X) je primjenjiva na bilo koju od njih, koja vraća redni broj vrijednosti izraza X. Za cjelobrojne tipove, funkcija ORD(X) vraća vrijednost samog X, tj. ORD(X) = X za X koji pripada bilo kojem tipu ljuske. Primjena ORD(X) na boolean, karakter i tipove nabrajanja proizvodi pozitivan cijeli broj u rasponu od 0 do 1 (boolean), 0 do 155 (znak), 0 do 65535 (nabrajanje). Tip raspona zadržava sva svojstva osnovnog ordinalnog tipa, tako da rezultat primjene funkcije ORD(X) na njega ovisi o svojstvima tog tipa.

Funkcije možete primijeniti i na redne tipove:

PRED (X) - vraća prethodnu vrijednost rednog tipa (vrijednost koja odgovara rednom broju ORD(X) - 1), tj.

ORD(PRED(X)) = ORD(X) - 1;

SUCC (X) - vraća sljedeću rednu vrijednost koja odgovara rednom broju ORD(X) +1, tj.

ORD(SUCC(X)) = ORD(X) + 1.

Na primjer, ako program definira varijablu

tada će funkcija PRED(C) vratiti vrijednost "4", a SUCC(C) funkcija će vratiti vrijednost "6".

Ako zamislimo bilo koji redni tip kao uređeni skup vrijednosti koji se povećava s lijeva na desno i zauzima određeni segment na brojevnoj osi, tada funkcija PRED(X) nije definirana za lijevu, a SUCC(X) za desnu kraj ovog segmenta.

Cijeli tipovi. Raspon mogućih vrijednosti cjelobrojnih tipova ovisi o njihovoj internoj reprezentaciji, koja može biti jedan, dva ili četiri bajta. U tabeli 4.1 prikazuje nazive cjelobrojnih tipova, dužinu njihove interne reprezentacije u bajtovima i raspon mogućih vrijednosti.

Tabela 4.1

Kada koristite procedure i funkcije sa cjelobrojnim parametrima, trebali biste se voditi „ugniježđenjem“ tipova, tj. gdje god se WORD može koristiti, BYTE se može koristiti (ali ne i obrnuto), LONGINT „uključuje“ INTEGER, koji zauzvrat uključuje SHORTINT.

Lista procedura i funkcija primjenjivih na cjelobrojne tipove data je u Tabeli 4.2. Pisma b, s, w, i, l izrazi tipa BYTE, SHORTINT, WORD, INTEGER i LONGINT su označeni, respektivno, x je izraz bilo kojeg od ovih tipova; pisma vb, vs, vw, vi, vl, vx označavaju varijable odgovarajućih tipova. Opcioni parametar je naveden u uglastim zagradama.

Tabela 4.2

Standardne procedure i funkcije primjenjive na cijele tipove
Ž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) Byte Vraća visoki bajt argumenta
bok(w) Isto Isto
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) Isto kao parametar Vraća pseudoslučajni broj ravnomjerno raspoređen u rasponu 0...(w-l)
sgr(x) X Vraća kvadrat argumenta
zamijeniti(i) Integer Zamjenjuje bajtove u jednoj riječi
swap(w) Riječ

Kada se radi s cijelim brojevima, tip rezultata će odgovarati tipu operanada, a ako su operandi različitih cjelobrojnih tipova, tipu operanda koji ima maksimalnu snagu (maksimalni raspon vrijednosti). Eventualno prekoračenje rezultata se ni na koji način ne kontrolira, što može dovesti do nesporazuma, na primjer:

a:= 32767; (Maksimalna moguća INTEGER vrijednost)

x:= a + 2; (Prelivanje prilikom evaluacije ovog izraza !}

y:= LongInt(a)+2; (Nema prelivanja nakon prebacivanja varijable na moćniji tip)

WriteLn(x:10:0, y:10:0)

Kao rezultat pokretanja programa dobijamo

Boolean tip. Boolean vrijednosti mogu biti jedna od unaprijed deklariranih konstanti FALSE ili TRUE. Za njih važe pravila:

False< True;

succ(False)= Tačno;

pred(Tačno) = Netačno.

Budući da je Boolean tip redni tip, može se koristiti u operatoru prebrojivog tipa, na primjer:

za 1:= Netačno do Tačno uradi ....

Tip karaktera. Vrijednost tipa karaktera je skup svih PC znakova. Svakom znaku je dodijeljen cijeli broj u rasponu od 0...255. Ovaj broj služi kao kod za interni prikaz simbola, vraća ga funkcija ORD.

ASCII kod se koristi za kodiranje ( Američki standardni kod za razmjenu informacija- Američki standardni kod za razmjenu informacija). Ovo je 7-bitni kod, tj. može kodirati samo 128 znakova u rasponu od 0 do 127. Istovremeno, u 8-bitnom bajtu koji je dodijeljen za pohranjivanje znaka u Turbo Pascalu, možete kodirati dvostruko više znakova u rasponu od 0 do 255. prva polovina znakova PC sa kodovima 0...127 odgovara ASCII standardu (tabela 4.3). Druga polovina znakova sa kodovima 128...255 nije ograničena krutim okvirom standarda i može se mijenjati na različitim tipovima računara (Dodatak 2 pokazuje neke uobičajene opcije kodiranja za ove znakove).

Tabela 4.3

Kodiranje znakova prema ASCII standardu
Kod Simbol Kod Simbol Kod Simbol Kod Simbol
NUL B.L. ® "
ZON ! A a
STX " IN b
ETX # WITH With
EOT $ D d
ENQ % E e
ASK & F f
BEL " G g
B.S. ( H h
NT ) I i
LF * J j
VT + k k
FF , L i
CR - M m
SO . N n
S.I. / O
DEL str P
DC1 Q q
DC2 R r
DC3 S s
DC4 T t
N.A.K. U u
SYN V V
ETB w w
CAN X X
E.M. U U
SUB : z z
ITD / [ {
FS < \ l
G.S. = ] }
R.S. > ^ ~
US ? - n

Znakovi sa kodovima 0...31 odnose se na servisne kodove. Ako se ovi kodovi koriste u tekstu znakova programa, smatraju se razmakom. Kada se koriste u I/O operacijama, mogu imati sljedeće nezavisno značenje:

Simbol Kod Značenje
BEL Call; Prikaz ovog simbola je praćen zvučnim signalom
NT Horizontalna tabela; kada je prikazano na ekranu, pomera kursor na poziciju koja je višestruka od 8 plus 1 (9, 17, 25, itd.)
LF Line translation; kada se prikaže na ekranu, svi naredni znakovi će biti ispisani počevši od iste pozicije, ali u sljedećem redu
VT Vertical tab; kada se prikaže na ekranu, zamjenjuje se posebnim znakom
FF Page run; kada se izlazi na štampač, formira stranicu kada se izlazi na ekran, zamenjuje se posebnim znakom
CR Povrat kočije; uneseno pritiskom na tipku Enter (kada se unese pomoću READ ili READLN, to znači naredbu “Enter” i ne stavlja se u ulazni međuspremnik; kada se izlazi, znači naredbu “Nastavi izlaz s početka tekuće linije”)
SUB Kraj datoteke; unosi se sa tastature pritiskom na Ctrl-Z; pri izlazu se zamjenjuje posebnim znakom
SSC Kraj rada; uneseno sa tastature pritiskom na taster ESC; pri izlazu se zamjenjuje posebnim znakom

Relacijske operacije, kao i ugrađene funkcije, primjenjive su na tip CHAR: SNR(V) - funkcija tipa CHAR; pretvara izraz B tipa BYTE u znak i vraća ga sa njegovom vrijednošću;

UPCASE(CH) - funkcija tipa CHAR; vraća veliko slovo ako je CH malo latinično slovo, u suprotnom vraća sam znak CH, na primjer:

cl:= UpCase("s") ;

c2:= UpCase ("F") ;

WriteLn(cl," ",c2)

Budući da funkcija UPCASE ne obrađuje ćirilicu, rezultat je pokretanja ovog

programi će biti prikazani na ekranu

Tip enuma. Nabrojani tip je specificiran nabrajanjem vrijednosti koje može primiti. Svaka vrijednost je imenovana nekim identifikatorom i nalazi se na listi okruženoj zagradama, na primjer:

boje =(crvena, bijela, plava);

Upotreba nabrojanih tipova čini programe vizualnijim. Ako, na primjer, program koristi podatke povezane s mjesecima u godini, tada slijedi sljedeći fragment programa:

TypeMonth=(jan, februar, mar, april, maj, jun, jul, avgust, septembar, oktobar, novembar, decembar);

mjesec: TypeMonth;

ako je mjesec = aug onda WriteLn("Bilo bi lijepo otići na more!");

Bilo bi, vidite, vrlo jasno. Avaj! U Turbo Pascalu ne možete koristiti ćirilicu u identifikatorima, pa smo primorani pisati ovako:

TypeMonth=(jan,feb,mar,maj,jun,jul,avg,sep,okt,nov,dec);

mjesec: TypeMonth;

ako je mjesec = aug onda WriteLn("Bilo bi lijepo otići na more!");

Korespondencija između vrijednosti nabrojanog tipa i rednih brojeva ovih vrijednosti utvrđuje se redoslijedom nabrajanja: prva vrijednost na listi prima redni broj 0, druga - 1 itd. Maksimalni kapacitet nabrojanog tipa je 65536 vrijednosti, tako da zapravo nabrojani tip definira određeni podskup cijelog tipa WORD i može se smatrati kompaktnom deklaracijom grupe cjelobrojnih konstanti sa vrijednostima 0, 1 itd.

Korišćenje nabrojanih tipova povećava pouzdanost programa omogućavajući vam da kontrolišete vrednosti koje primaju odgovarajuće varijable. Na primjer, neka se zadaju sljedeći nabrojani tipovi:

boje = (crna, crvena, bijela);

ordenal= (jedan, dva, tri);

dani = (ponedjeljak, utorak, srijeda);

U smislu moći i unutrašnjeg predstavljanja, sva tri tipa su ekvivalentna:

ord(crno)=0, ..., ord(bijelo)=2,

ord(jedan)=0, ...ord(tri)=2,

ord(ponedeljak)=0, ...ord(srijeda)=2.

Međutim, ako su varijable definirane

col:colors; num:ordenal;

tada je operaterima dozvoljeno

num:= succ(dva);

dan:= pred(utorak);

ali neprihvatljivo

Kao što je već spomenuto, postoji korespondencija jedan-na-jedan između vrijednosti nabrojanog tipa i skupa cijelih brojeva, specificiranih funkcijom ORD(X). Turbo Pascal takođe dozvoljava obrnutu konverziju: bilo koji izraz tipa WORD može se konvertovati u vrednost tipa enum, sve dok vrednost celobrojnog izraza ne prelazi power1™ tipa nabrajanja. Ova konverzija se postiže korištenjem automatski deklarirane funkcije s imenom nabrojanog tipa (pogledajte odjeljak 4.4). Na primjer, za deklaraciju tipa o kojoj je bilo riječi gore, sljedeće dodjele su ekvivalentne:

col:= boje(0);

Naravno, zadatak

biće neprihvatljivo.

Varijable bilo kojeg nabrojanog tipa mogu se deklarirati bez prethodnog deklariranja tog tipa, na primjer:

boja: (crna, bijela, zelena);

Tip-opseg. Tip raspona je podskup njegovog osnovnog tipa, koji može biti bilo koji redni tip osim tipa raspona. Tip raspona definiran je granicama njegovih vrijednosti unutar osnovnog tipa:

<мин.знач.>..<макс.знач.>

Evo<мин.знач. >- minimalna vrijednost raspona tipa;

<макс.знач.>- njegovu maksimalnu vrijednost.

Na primjer:

cifra = "0".."9";

Tip raspona ne mora biti opisan u odjeljku TYPE, ali se može navesti direktno prilikom deklariranja varijable, na primjer:

Ichr: "A".."Z";.

Prilikom određivanja vrste raspona, morate slijediti sljedeća pravila:

  • dva znaka ".." tretiraju se kao jedan znak, tako da razmaci između njih nisu dozvoljeni;
  • lijeva granica opsega ne smije prelaziti desnu granicu. Tip opsega nasljeđuje sva svojstva svog osnovnog tipa, ali s ograničenjima svoje niže snage. Konkretno, ako je varijabla definirana

dani = (pon, ut, we, th, fr, su, su);

WeekEnd = sa .. su;

tada će ORD(W) vratiti vrijednost 5 dok će PRED(W) rezultirati greškom.

Turbo Pascal standardna biblioteka uključuje dvije funkcije koje podržavaju rad s tipovima raspona:

HIGH(X) - vraća maksimalnu vrijednost tipa opsega kojem varijabla X pripada;

LOW(X) - vraća minimalnu vrijednost tipa raspona.

Sljedeći kratki program će ispisati liniju

WriteLn(niska(k),"..",Visoka(k))

Skup cijelih brojeva je beskonačan, ali uvijek možemo odabrati broj bitova koji će predstavljati bilo koji cijeli broj koji se pojavi prilikom rješavanja određenog problema. Skup realnih brojeva nije samo beskonačan, već je i kontinuiran, pa bez obzira na to koliko bitova uzmemo, neizbježno ćemo naići na brojeve koji nemaju tačnu reprezentaciju. Brojevi s pomičnim zarezom su jedan od mogućih načina predstavljanja realnih brojeva, što je kompromis između preciznosti i raspona prihvaćenih vrijednosti.

Broj s pomičnim zarezom sastoji se od skupa pojedinačnih cifara, konvencionalno podijeljenih na znak, eksponent i mantisu. Eksponent i mantisa su cijeli brojevi koji, zajedno sa predznakom, daju sljedeći prikaz broja s pomičnim zarezom:

Matematički to piše ovako:

(-1) s × M × B E, gdje je s znak, B je osnova, E je eksponent, a M je mantisa.

Baza određuje sistem brojeva. Matematički je dokazano da su brojevi s pomičnim zarezom sa bazom B=2 (binarni prikaz) najotporniji na greške zaokruživanja, pa se u praksi susreću samo baze 2 i rjeđe 10 Za daljnji prikaz uvijek ćemo pretpostaviti B= 2, a formula za broj s pomičnim zarezom će izgledati ovako:

(-1) s × M × 2 E

Šta je mantisa i red? Mantissa je cijeli broj fiksne dužine koji predstavlja najznačajnije bitove realnog broja. Recimo da se naša mantisa sastoji od tri bita (|M|=3). Uzmimo, na primjer, broj "5", koji će u binarnom sistemu biti jednak 101 2. Najznačajniji bit odgovara 2 2 =4, srednji bit (koji je jednak nuli) je 2 1 =2, a najmanji bitni bit je 2 0 =1. Red– ovo je snaga baze (dva) najviše cifre. U našem slučaju E=2. Pogodno je pisati takve brojeve u takozvanom "naučnom" standardnom obliku, na primjer "1.01e+2". Odmah je jasno da se mantisa sastoji od tri znaka, a redosled dva.

Recimo da želimo dobiti razlomak koristeći ista 3 bita mantise. To možemo učiniti ako uzmemo, recimo, E=1. Tada će naš broj biti jednak

1,01e+1 = 1×2 1 +0×2 0 +1×2 -1 =2+0,5=2,5

Očigledno, na ovaj način isti broj može biti predstavljen na različite načine. Razmotrimo primjer sa dužinom mantise |M|=4. Broj "2" se može predstaviti na sljedeći način:

2 = 10 (binarno) = 1.000e+1 = 0.100e+2 = 0.010e+3.

Stoga su već u prvim mašinama brojevi bili predstavljeni u tzv normalizovan oblik, kada se za prvi bit mantise uvijek pretpostavljalo da je jednak jedan.

Ovo štedi jedan bit (pošto implicitni ne mora biti pohranjen u memoriji) i osigurava da je broj jedinstveno predstavljen. U našem primjeru, “2” ima jednu reprezentaciju (“1.000e+1”), a mantisa je pohranjena u memoriji kao “000”, jer vodeća jedinica je implicitno implicirana. Ali novi problem se javlja u normaliziranom predstavljanju brojeva - nemoguće je predstaviti nulu u ovom obliku.

  • Analiza podataka pomoću naredbi za odabir parametara i traženje rješenja
  • Analiza i interpretacija podataka eksperimentalnih psiholoških istraživanja.
  • Analiza izvornih podataka. Tehnički standardi za gradske puteve.
  • ANALIZA DOBIJENIH PODATAKA. DONOŠENJE ODLUKE O DOVOLJNOSTI ILI NEDOVOLJNOSTI KARAKTERISTIKA VODOSNABDIJEVANJA ZA POTREBE SISTEMA ZA NAVODNJAVANJE.
  • Oprema komunikacijskih linija: oprema za prijenos podataka, terminalna oprema, međuoprema.

  • Koncept tipa je jedan od osnovnih koncepata svakog programskog jezika. Objekti (konstante, varijable, funkcije, izrazi) na kojima program radi pripadaju određenom tipu.

    Tip je skup vrijednosti koje programski objekti mogu preuzeti i skup operacija dozvoljenih na tim vrijednostima.

    Na primjer, vrijednosti 1 i 2 su cjelobrojnog tipa i mogu se zbrajati, množiti i drugim aritmetičkim operacijama. Značenja “monitor” i “Pascal” su lingvističke prirode; U najčešće korištenim jezicima mogu se koristiti samo strogo definirani, unaprijed poznati tipovi. Pascal, zajedno sa standardnim tipovima koji se nalaze u drugim jezicima visokog nivoa, dozvoljava programeru da kreira sopstvene tipove.

    Svi tipovi dozvoljeni u jeziku Pascal podijeljeni su u dvije velike grupe: jednostavno i složeno (strukturirano).

    Tip Domet Mantisa, znaci Potrebna memorija (bajtovi)
    REAL 2.9*10E-39..1.7*10E38 11-12
    SINGLE 1.5*10E-45..3.4*10E38 7-8
    DOUBLE 5.0*10E-324..1.7*10E308 15-16
    EXTENDED 1.9*10E-4951..1.1*10E4932 19-20
    COMP -2E+63+1..2E+63-1 10-20

    Efikasna upotreba tipova SINGLE, DOUBLE, EXTEND, COMP je moguća samo kada je omogućena ($N+) direktiva. Podrazumevano je isključeno. Za rješavanje inženjerskih i ekonomskih problema dovoljne su vrijednosti tipa REAL.

    Primjer

    Var Res, Summa, Itog: real;

    Boolean tip podataka je opisan identifikatorom BOOLEAN. Varijable i konstante ovog tipa mogu imati samo jednu od dvije vrijednosti: TRUE (true) ili FALSE (false).

    Primjer

    Var Sel1, Sel2: boolean;

    A,B,C,D: boolean;

    Bulovi izrazi zauzimaju 1 bajt memorije i koriste se u logičkim i relacionim izrazima i za kontrolu redosleda u kojem se programski izrazi izvršavaju.

    bukvalno (znak) tip je opisan standardnim CHAR identifikatorom. Konstante i varijable ovog tipa mogu uzeti jednu od vrijednosti tablice ASCII koda. Značenje konstante ili varijable ovog tipa je zatvoreno u apostrofima.

    Na primjer, Var Bukva, Znak, Simbol: char;

    Bukva:=’A’; Znak:=’+’; Simbol:=’!’

    Varijable tipa znakova zauzimaju 1 bajt u memoriji. Upotreba char podataka u aritmetičkim izrazima je zabranjena. Operacije poređenja mogu se primijeniti na literalne vrijednosti, rezultat ovisi o broju literalne varijable ili konstante u tablici koda.

    Pored standardnih tipova podataka, Pascal podržava skalarne tipove, definisano od strane korisnika. To uključuje enumerable I interval vrste . Ovi tipovi podataka zauzimaju 1 bajt u memoriji, tako da bilo koji tip korisnika ne može sadržavati više od 255 elemenata. Njihova upotreba značajno poboljšava vidljivost programa, olakšava pronalaženje grešaka i štedi memoriju.

    Tip enuma je specificirano direktno navođenjem svih vrijednosti koje varijabla datog tipa može uzeti. Pojedinačne vrijednosti su odvojene zarezima, a cijela lista je zatvorena u zagradama.

    Format

    Tip<имя типа>=(<значение1, значение2, ..., значениеN>);

    Var<идентификатор, ...>: < имя типа>;

    Primjer

    Tip Sezona =(Proljeće, Ljeto, Jesen, Zima);

    Var S1, S2: Sezona;

    Jesen: (septembar, oktobar, novembar);

    Ovaj primjer pokazuje eksplicitno definirani tip podataka korisnika Sezona. Njihova značenja su određena - oznake godišnjih doba. Varijable S1 i S2 mogu imati samo jednu od navedenih vrijednosti. Pokušaj da im se dodijeli bilo koja druga vrijednost će uzrokovati softverski prekid. Treća vrsta nabrajanja je anonimna (nema imena) i specificira se nabrajanjem vrijednosti u Var odjeljku. Jesen je varijabla ovog tipa i može imati vrijednosti septembar, oktobar, novembar. Dakle, bilo koji tip se može specificirati, ali to nije uvijek prihvatljivo. Prva metoda je svakako razumljivija i konzistentnija s prirodom Pascal jezika.

    Interval type omogućava vam da navedete dvije konstante koje definiraju granice raspona vrijednosti za datu varijablu. Za svaku operaciju na intervalnoj varijabli, kompajler generiše rutine provjere kako bi utvrdio da li vrijednost varijable ostaje unutar svog specificiranog raspona. Obje konstante moraju pripadati jednom od standardnih tipova koji nisu realni. Vrijednost prve konstante mora nužno biti manja od vrijednosti druge.

    Format

    Tip<имя типа> = <константа1> .. <константа2>;

    Var<идентификатор>: < имя типа>;

    Primjer

    Tip Dana = 1.. 31;

    Var Work_d, Free_d: Dani;

    U ovom primjeru varijable Work_d, Free_d imaju tip Dani i može uzeti bilo koju vrijednost iz raspona 1. . 31.

    Izlazak iz opsega uzrokuje softverski prekid.

    Možete definirati tip intervala definiranjem granica raspona ne vrijednostima konstanti, već njihovim imenima:

    Konst Min = 1; Max = 31;

    Tip Dani = Min .. Max;

    Var Work_d, Free_d: Dani;

    Strukturirani tipovi tipovi podataka su bazirani na skalarnim tipovima i mogu sadržavati različite njihove kombinacije. Oni definiraju uređenu kolekciju skalarnih elemenata i karakteriziraju ih tipom njihovih komponenti. Pascal jezik pruža sljedeće strukturirane tipove podataka:

    linija - niz znakova zatvoren u apostrofe;

    niz - strukturirani tip podataka koji se sastoji od fiksnog broja elemenata istog tipa, kojima se pristupa preko indeksa ;

    gomila - skup objekata odabranih prema nekoj osobini ili grupi karakteristika koje se mogu posmatrati kao cjelina;

    rekord - skup fiksnog broja komponenti različitih tipova;

    fajl- niz komponenti istog tipa i iste dužine.

    Još dva strukturirana tipa – proceduralni i objektni – teško je preslikati na podatke u konvencionalnom predstavljanju.

    Slika 1- Skup osnovnih tipova Pascal jezika



    Učitavanje...
    Top