Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Gabimet
  • Përshkrimi i llojeve të të dhënave në pascal. Numrat e plotë në paskal

Përshkrimi i llojeve të të dhënave në pascal. Numrat e plotë në paskal

Elementet më të rëndësishme të një programi janë variablat. Ato ndikojnë në rrjedhën e ngjarjeve në program gjatë ekzekutimit të tij. Për shembull, nëse nuk do të specifikonim vlerën e ndryshores Name, kujt do t'i drejtohej rezultati i përshëndetjes nga programi?

Variablat mund të përmbajnë të dhëna krejtësisht të ndryshme. Për shembull, në një variabël emri i dikujt mund të ruhet, në një tjetër - viti i lindjes, në të tretën - lartësia, etj. Të dhëna të tilla të ndryshme përfaqësohen nga një kompjuter në mënyra të ndryshme. Emri është një varg karakteresh, viti i lindjes është një numër i plotë, lartësia është një numër real (për shembull, lartësia është 1,72 m).

Mënyra se si paraqiten të dhënat nga një kompjuter përcaktohet nga ai lloji... Përveç kësaj, lloji i të dhënave përcakton se cilat veprime lejohen në këto të dhëna.

Më poshtë janë llojet kryesore të të dhënave standarde të gjuhës Turbo-Pascal:

  1. I PLOTË- të dhënat e numrave të plotë në rangun nga –32768 në 32767, zënë dy bajt në memorie;
  2. REAL- numrat realë në rangun nga 2.9´10 -39 (2.9E-39) deri në 1.7´10 38 (1.7E38), zënë gjashtë bajt;
  3. CHAR- një karakter i vetëm, një bajt;
  4. STRING- një varg karakteresh, numri i karaktereve në një varg (gjatësia e vargut) është i kufizuar në numrin N në kllapa katrore, zë N + 1 bajt (nëse numri N nuk është specifikuar, atëherë gjatësia maksimale e vargut është 255 karaktere) ;
  5. BULLIAN- tip boolean, ka dy vlera: FALSE (false) dhe TRUE (true), një bajt.

Vini re se INTEGER, CHAR dhe Llojet BOOLEAN i referohen rendore llojet (llojet rendore).

Siç e mbani mend ndoshta, kur përshkruani një ndryshore, pas emrit të saj vendoset një dy pika dhe më pas tregohet lloji. Nëse disa variabla janë të të njëjtit lloj, emrat e tyre mund të renditen të ndarë me presje.

Një shembull i përshkrimit të variablave të llojeve të ndryshme:

Delphi / Pascal

var a, b, c: numër i plotë; shuma: reale; Alfa, Beta: char; S: varg; S_1: varg; t: boolean;

a, b, c: numër i plotë;

shuma: reale;

Alfa, Beta: char;

S: varg [25];

S_1: varg;

t: boolean;

Vini re se S_1 është një varg karakteresh, por nuk specifikon një gjatësi kur e përshkruan atë. Në këtë rast, vetë përpiluesi vendos gjatësinë maksimale të mundshme - 255 karaktere.

Ekzistojnë lloje të tjera të paracaktuara të të dhënave për ruajtjen e numrave të plotë dhe realë. Karakteristikat e tyre janë paraqitur në tabelat e mëposhtme. Krahasoni këto lloje me tipet INTEGER dhe REAL, të paraqitura edhe në tabela.

Gama

Madhësia në bajt

SHKURTËR
I PLOTË
GJATET

2147483648 .. 2147483647

BYTE
FJALA

Llojet reale të të dhënave

Gama

Shifra të rëndësishme

Madhësia në bajt

REAL

2.9´10 -39 .. 1.7´10 3 8

SINGLE

1,5´10 - 45 .. 3,4´10 3 8

DYFISHTE

5.0´10 -3 24 .. 1.7´10 3 08

I ZGJERUAR

3.4´10 -4932 .. 1.1´10 49 32

KOMP

2 63 +1 .. 2 63 -1

Çfarë lloji të të dhënave për të përdorur

Kaq shumë lloje të ndryshme, thoni ju, dhe cilin duhet të përdorni?
Kjo varet nga detyra që ju është caktuar. Për shembull, ju duhet një variabël në të cilin do të ruani lartësinë e një personi të caktuar (vlera reale): në këtë rast, mjafton të përdorni tipin SINGLE. Nëse ndonjë variabël përdoret nga ju për të numëruar numrin e objekteve të caktuara (vlera e plotë pozitive), atëherë mendoni nëse ky numër mund të jetë më i madh se 255, nëse jo, përdorni BYTE, nëse mundet, nuk mund të bëni pa WORD, dhe në mund të nevojiten edhe disa raste LONGINT.

Për të mësuar më shumë rreth llojeve të ndryshme, shtypni Shift + F1 në mjedisin Turbo-Pascal (do të shfaqet dritarja e indeksit të ndihmës) dhe më pas zgjidhni objektin e interesit (për shembull, shkruani 'lloj' ose 'real').

Agjencia Federale për Arsimin

abstrakte

"LLOJET E TË DHËNAVE NË PASCAL"

1. Llojet e të dhënave

Çdo të dhënë, d.m.th. konstantet, variablat, vetitë, vlerat e funksionit ose shprehjet karakterizohen nga llojet e tyre. Një lloj përcakton grupin e vlerave të vlefshme që mund të ketë një objekt, si dhe grupin e operacioneve të vlefshme që janë të zbatueshme për të. Përveç kësaj, lloji përcakton edhe formatin e paraqitjes së brendshme të të dhënave në kujtesën e PC.

Në përgjithësi, gjuha Object Pascal karakterizohet nga një strukturë e degëzuar e llojeve të të dhënave (Fig. 1.1). Gjuha ofron një mekanizëm për krijimin e llojeve të reja, për shkak të të cilit numri i përgjithshëm i llojeve të përdorura në program mund të jetë aq i madh sa dëshironi.

Të dhënat e përpunuara në program ndahen në variabla, konstante dhe literale:

Konstante janë të dhëna, vlerat e të cilave vendosen në seksionin e deklarimit konstant dhe nuk ndryshojnë gjatë ekzekutimit të programit.

Variablat janë deklaruar në seksionin e deklarimit të ndryshoreve, por ndryshe nga konstantet, ato marrin vlerat e tyre tashmë gjatë ekzekutimit të programit dhe këto vlera mund të ndryshohen. Konstantet dhe variablat mund të aksesohen me emër.

Literal nuk ka identifikues dhe përfaqësohet në tekstin e programit drejtpërdrejt nga vlera.

Një lloj përcakton grupin e vlerave që mund të marrin elementët e të dhënave dhe grupin e operacioneve të lejuara në to.

Të gjitha llojet janë përshkruar në detaje në këtë dhe në katër kapitujt e ardhshëm.

1.1 Llojet e thjeshta

Llojet e thjeshta përfshijnë llojet rendore, llojet reale dhe llojet e datës-kohës.

Llojet rendore ndryshojnë në atë që secila prej tyre ka një numër të kufizuar vlerash të mundshme. Këto vlera mund të renditen në një mënyrë të caktuar (prandaj emri i llojeve) dhe, për rrjedhojë, secila prej tyre mund të shoqërohet me një numër të plotë - numrin rendor të vlerës.

Llojet reale, në mënyrë rigoroze, kanë gjithashtu një numër të fundëm vlerash, i cili përcaktohet nga formati i paraqitjes së brendshme të një numri real. Sidoqoftë, numri i vlerave të mundshme të llojeve reale është aq i madh sa nuk është e mundur të lidhet një numër i plotë (numri i tij) me secilën prej tyre.

Lloji i datës dhe kohës të destinuara për ruajtjen e datës dhe orës. Në fakt, ai përdor një format real për këto qëllime.

1.1.1 Llojet rendore

Llojet rendore përfshijnë (shih Figurën 1.1) numrin e plotë, boolean, karakterin, të numëruar dhe llojin e diapazonit. Funksioni Ord (x) është i zbatueshëm për cilindo prej tyre, i cili kthen vlerën rendore të shprehjes X.


Oriz. 1.1 - Struktura e tipit të të dhënave

Për e tërë të llojeve, funksioni ord (x) kthen vlerën e x vetë, domethënë Ord (X) = x për x që i përket ndonjë e tërë lloji. Zbatimi i rendit (x) në logjike , simbolike dhe të numërueshme llojet jep një numër të plotë pozitiv në rangun 0 deri në 1 ( tip boolean), nga 0 në 255 ( simbolike), nga 0 në 65535 ( të numërueshme). Lloji i gamës ruan të gjitha vetitë e tipit rendor bazë, kështu që rezultati i aplikimit të funksionit ord (x) në të varet nga vetitë e këtij lloji.

Ju gjithashtu mund të aplikoni funksione për llojet rendore:

para (x)- kthen vlerën e mëparshme të tipit rendor (vlera që i përgjigjet numrit rendor ord (x) -1, pra ord (рred (х)) = оrd (х) - 1;

succ (x)- kthen vlerën tjetër të tipit rendor, që i korrespondon numrit rendor ord (х) +1, pra ord (Succ (х)) = ord (х) + 1.

Për shembull, nëse programi përcakton variablin

atëherë funksioni PRED (c) do të kthejë karakterin "4", dhe funksioni SUCC (c) do të kthejë karakterin "6".

Nëse imagjinojmë ndonjë lloj rendor si një grup vlerash të renditura që rriten nga e majta në të djathtë dhe që zënë një segment të caktuar në boshtin numerik, atëherë funksioni pred (x) nuk përcaktohet për të majtën, dhe succ (x) - për fundi i djathtë i këtij segmenti.

Llojet e numrave të plotë ... Gama e vlerave të mundshme për llojet e numrave të plotë varet nga përfaqësimi i tyre i brendshëm, i cili mund të jetë një, dy, katër ose tetë bajt. Tabela 1.1 liston emrat e llojeve të numrave të plotë, gjatësinë e paraqitjes së tyre të brendshme në bajt dhe gamën e vlerave të mundshme.

Tabela 1.1 - Llojet e numrave të plotë

Emri Gjatësia, bajt Gama e vlerave
Kardinali 4 0. .. 2 147 483 647
Bajt 1 0...255
Shkurt 1 -128...+127
Smallint 2 -32 768...+32 767
fjalë 2 0...65 535
Numër i plotë 4
Longint 4 -2 147 483 648...+2 147 483 647
Int64 8 -9*1018...+9*1018
Fjalë e gjatë 4 0. . .4 294 967 295

Llojet Fjalë e gjatë dhe Int64 u prezantuan për herë të parë në versionin 4, dhe llojet Smallint dhe Kardinali nuk disponohet në Delphi 1. Lloji numër i plotë për këtë version merr 2 bajt dhe ka një gamë vlerash nga -32768 në +32767, domethënë është njësoj si Smallint .

Gjatë përdorimit të procedurave dhe funksioneve me parametra të plotë, duhet të udhëhiqet nga "foleja" e llojeve, dmth. kudo që mund të përdoret fjalë, lejohet përdorimi Bajt(por jo anasjelltas), në Longint"Përfshirë" Smallint e cila nga ana e saj përfshin Shkurt .

Lista e procedurave dhe funksioneve të zbatueshme për llojet e numrave të plotë është dhënë në tabelë. 1.2. Shkronjat b, s, w, i, l tregojnë përkatësisht shprehje të tipit Bajt , Shortint, Word, Integer dhe Longint ,

x është një shprehje e ndonjë prej këtyre llojeve; shkronjat vb, vs, vw, vi, vl, vx tregojnë variabla të llojeve përkatëse. Një parametër opsional tregohet në kllapa katrore.

Tabela 1.2 - Procedurat dhe funksionet standarde të zbatueshme për llojet e numrave të plotë

Apelim Lloji i rezultatit Veprimi
abs (x) x Kthen modulin x
chr (b) Char Kthen një karakter sipas kodit të tij
dhjetor (vx [, i]) - Zvogëlon vlerën e vx me i, dhe në mungesë të i - me 1
inc (vx [, i]) - Rrit vlerën e vx me i, dhe në mungesë të i, me 1
Përshëndetje (w) Bajt Kthen harkun e rendit të lartë të argumentit
Përshëndetje (unë) Gjithashtu Kthen bajtin e tretë
Ja (i) Kthen bajtin më pak të rëndësishëm të argumentit
Ja (w) Gjithashtu
tek (l) Boolean Kthen True nëse argumenti është një numër tek
E rastësishme (w) Njësoj si parametri Jep një numër pseudo të rastësishëm të shpërndarë në mënyrë të barabartë në intervalin 0 ... (w-l)
sqr (x) X Kthen katrorin e argumentit
ndërroj (i) Numër i plotë Ndërron bajtet me një fjalë
shkëmbejmë (w) fjalë Gjithashtu

Për operacionet me numra të plotë, lloji i rezultatit do të korrespondojë me llojin e operandëve, dhe nëse operandët janë të llojeve të ndryshme të numrave të plotë, lloji i zakonshëm, i cili përfshin të dy operandët. Për shembull, kur veproni me shkurtim dhe fjalë e zakonshme do të jetë lloji numër i plotë... Në cilësimin e paracaktuar, përpiluesi Delphi nuk gjeneron kod që kontrollon mundësinë e kontrollit nëse një vlerë është jashtë rrezes, gjë që mund të çojë në konfuzion.

Llojet Boolean ... Llojet Boolean përfshijnë Boolean, ByteBool, Bool, wordBool dhe LongBool... Në Pascal standard, përcaktohet vetëm lloji Boolean, pjesa tjetër e llojeve boolean janë futur në Object Pascal për përputhshmëri me Windows: llojet Boolean dhe ByteBool zënë një bajt secili, Bool dhe WordBool- 2 bajt secila, LongBool- 4 bajt. Vlerat Boolean mund të jenë një nga konstantet e deklaruara më parë False ose True.

Meqenëse tipi boolean është një tip rendor, ai mund të përdoret në një operator cikli të një lloji të numërueshëm. Në Delphi 32 për Boolean kuptimi

Ord (E vërtetë) = +1, ndërsa për llojet e tjera ( Bool, WordBool etj.)

Ord (E vërtetë) = -1, kështu që ky lloj operatori duhet të përdoret me kujdes! Për shembull, për Delphi 6, deklarata e ekzekutueshme tregon Message ("---") në ciklin e mëposhtëm për nuk do të ekzekutohet as edhe një herë:

për L: = E gabuar në e vërtetë

ShowMessage ("-);

Nëse e zëvendësojmë llojin e parametrit të ciklit L në shembullin e mëparshëm me Boolean, cikli do të funksionojë dhe mesazhi do të shfaqet dy herë në ekran. [Për versionet 1 dhe 2 të Delphi, ord (E vërtetë) = + 1 për çdo lloj boolean.]

Lloji i personazhit ... Vlerat e tipit të karakterit janë grupi i të gjithë karaktereve të PC. Secilit karakter i caktohet një numër i plotë në rangun 0 ... 255. Ky numër shërben si kod për paraqitjen e brendshme të simbolit dhe kthehet nga funksioni ord.

Windows përdor kodin ANSI për kodim (emërtuar sipas Institutit Kombëtar të Standardeve Amerikane - Instituti Amerikan i Standardeve që propozoi këtë kod). Gjysma e parë e karaktereve të PC me kode 0 ... 127 korrespondon me tabelën 1.3. Gjysma e dytë e karaktereve me kode 128 ... 255 ndryshon për shkronja të ndryshme. Shkronjat standarde të Windows Arial Cyr, Courier New Cyr dhe Times New Roman për të përfaqësuar karakteret cirilike (pa shkronjat "ё" dhe "Ё") përdorin 64 kodet e fundit (nga 192 në 256): "A" ... "Z" janë vlerat e koduara 192..223, "a" ... "i" - 224 ... 255. Simbolet "Ё" dhe "ё" kanë përkatësisht kodet 168 dhe 184.

Tabela 1.3 - Kodimi i karaktereve sipas standardit ANSI

Kodi Simboli Kodi. Simboli Kodi. Simboli Kodi Simboli
0 NUL 32 BL 64 @ 96 "
1 ZON 33 ! 65 A 97 a
2 STX 34 66 V 98 b
3 ETX 35 # 67 ME 99 Me
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 N 104 h
9 Ht 41 ) 73 Unë 105 i
10 LF 42 * 74 J 106 j
11 VT 43 + 75 TE 107 k
12 FF 44 F 76 L 108 1
13 CR 45 - 77 M 109 m
14 KËSHTU QË 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 P 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 MUND 56 8 88 X 120 x
25 EM 57 9 89 Y 121 Kanë
26 NËN 58 : 90 Z .122 z
27 ESC 59 ; 91 t 123 {
28 FS 60 < 92 \ 124 1
29 GS 61 = 93 ] 125 }
30 Rs 62 > 94 L 126 ~
31 SHBA 63 F 95 127 r

Simbolet me kodet 0 ... 31 i referohen kodeve të shërbimit. Nëse këto kode përdoren në tekstin e karaktereve të programit, ato konsiderohen si hapësira.

Të tipit karakter Operacionet e marrëdhënieve janë të zbatueshme, si dhe funksionet e integruara:

Сhar (në)- funksion si karakter; konverton shprehjen në tip Bajt në një simbol dhe e kthen atë me vlerën e tij;

Rasti i madh (CH)- funksion si karakter; kthen një shkronjë të madhe nëse ch është një shkronjë e vogël latine, përndryshe kthen karakterin ch (për cirilikën kthen karakterin origjinal).

Lloji i numëruar ... Një lloj i numëruar përcaktohet nga një numërim i vlerave që mund të marrë. Çdo vlerë emërtohet nga një identifikues dhe ndodhet në një listë të rrethuar me kllapa, për shembull:

ngjyrat = (e kuqe, e bardhë, blu);

Përdorimi i llojeve të numëruara i bën programet më të qarta.

Korrespondenca midis vlerave të tipit të numëruar dhe numrave rendorë të këtyre vlerave përcaktohet nga rendi i numërimit: vlera e parë në listë merr rendore 0, e dyta - 1, e kështu me radhë. Kardinaliteti maksimal i një lloj i numëruar është 65536 vlera, prandaj, në fakt, një lloj i numëruar specifikon një nëngrup të llojit të numrit të plotë fjalë dhe mund të konsiderohet si një deklaratë kompakte e një grupi konstantesh të plota me vlera 0, 1, etj.

Përdorimi i llojeve të numëruara rrit besueshmërinë e programeve për shkak të aftësisë për të kontrolluar vlerat që marrin variablat përkatës. Konvertimi i kundërt lejohet në Object Pascal: çdo shprehje e llojit fjalë mund të konvertohet në një vlerë të numëruar për sa kohë që vlera e shprehjes së numrit të plotë nuk e kalon kardinalitetin e atij lloji. Ky konvertim arrihet duke përdorur një funksion të deklaruar automatikisht me emrin e një lloji të numëruar.

Lloji i gamës ... Lloji i diapazonit është një nëngrup i llojit të tij bazë, i cili mund të jetë çdo lloj rendor përveç llojit të diapazonit.

Lloji i diapazonit përcaktohet nga kufijtë e vlerave të tij brenda llojit bazë:

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

Këtu<мин. знач. >- vlera minimale e llojit të diapazonit;<макс. знач. >- vlera maksimale e tij.

Lloji i diapazonit nuk ka nevojë të përshkruhet në seksionin tip, por mund të specifikohet drejtpërdrejt kur deklarohet një ndryshore.

Kur përcaktoni një lloj vargu, duhet të udhëhiqeni nga rregullat e mëposhtme:

dy karaktere ".." trajtohen si një karakter, kështu që nuk lejohen hapësira midis tyre; kufiri i majtë i diapazonit nuk duhet të kalojë kufirin e tij të djathtë.

Një lloj vargu trashëgon të gjitha vetitë e llojit të tij bazë, por me kufizime për shkak të kardinalitetit të tij më të ulët. Në veçanti, nëse përcaktohet një variabël.

Biblioteka standarde e Object Pascal përfshin dy funksione që mbështesin punën me llojet e diapazonit:

E lartë (x)- kthen vlerën maksimale të llojit të diapazonit të cilit i përket ndryshorja x;

E ulët (x)- kthen vlerën minimale të llojit të diapazonit.

1.1.2 Llojet reale

Ndryshe nga llojet rendore, vlerat e të cilave krahasohen gjithmonë me një numër numrash të plotë dhe, për rrjedhojë, përfaqësohen në PC absolutisht saktësisht, vlerat e llojeve reale përcaktojnë një numër arbitrar vetëm me njëfarë saktësie të fundme, në varësi të formati i brendshëm i numrit real.

Tabela 1.4 - Llojet reale

Në versionet e mëparshme të tipit Delphi 1 ... 3 Reale mori 6 bajt dhe kishte një gamë vlerash nga 2.9 * 10-39 në 1.7 * 1038. Në versionet 4 dhe 5, ky lloj është i barabartë me llojin Dyfishtë... Nëse kërkohet (për arsye përputhshmërie) përdorni 6-byte Reale, duhet të specifikoni direktivën e përpiluesit (SREALCOMPATIBILITY ON).

Siç mund ta shihni nga tabela. 1.4, një numër real në Object Pascal zë nga 4 deri në 10 byte të njëpasnjëshme dhe ka strukturën e mëposhtme në memorien e PC.

Këtu s është shifra e nënshkruar e numrit; e - pjesa eksponenciale; përmban rend binar; m është mantisa e numrit.

Mantisa m ka një gjatësi prej 23 (për beqare) deri në 63 (për Zgjeruar) e shifrave binare, e cila siguron një saktësi prej 7 ... 8 për beqare dhe 19 ... 20 për Zgjeruar shifra dhjetore. Pika dhjetore (presja) nënkuptohet përpara pjesës së majtë (më domethënëse) të mantisës, por kur manipuloni një numër, pozicioni i tij zhvendoset majtas ose djathtas në përputhje me rendin binar të numrit të ruajtur në pjesën eksponenciale. prandaj veprimet mbi numrat realë quhen aritmetikë me pikë lundruese (presje) ...

Vini re se bashkëprocesori aritmetik përpunon gjithmonë numrat në format Zgjeruar, dhe tre llojet e tjera reale në këtë rast fitohen thjesht duke i shkurtuar rezultatet në madhësinë e dëshiruar dhe përdoren kryesisht për të kursyer memorie.

Llojet zënë një vend të veçantë në Object Pascal. komp dhe Monedha, të cilët trajtohen si numra realë me pjesë thyesore me gjatësi fikse: in komp pjesa e pjesshme ka një gjatësi prej 0 shifrash, domethënë thjesht mungon, in valutë gjatësia e pjesës thyesore është -4 shifra dhjetore. Në fakt, të dy llojet përcaktojnë një numër të plotë të madh të nënshkruar që ruan 19 ... 20 shifra dhjetore domethënëse (në brendësi ato zënë 8 bajt të njëpasnjëshëm). Në të njëjtën kohë, në shprehje komp dhe valutë janë plotësisht të pajtueshme me çdo lloj tjetër real: mbi to përcaktohen të gjitha operacionet reale, ato mund të përdoren si argumente të funksioneve matematikore etj. Fusha më e përshtatshme e zbatimit të këtyre llojeve janë llogaritjet kontabël.

1.1.3 Lloji i datës-kohës

Lloji i datës dhe kohës përcaktohet nga një identifikues standard TDateTime dhe është menduar për ruajtjen e njëkohshme të datës dhe orës. Në paraqitjen e brendshme, ai zë 8 bajt dhe është i ngjashëm valutëështë një numër real me një pjesë fikse thyesore: data ruhet në pjesën e plotë të numrit dhe koha ruhet në pjesën thyesore. Data përcaktohet si numri i ditëve që kanë kaluar që nga 30 dhjetor 1899, dhe koha përcaktohet si pjesë e ditës që nga ora 0, kështu që vlera 36444.837 korrespondon me datën 10/11/1999 dhe ora 20:05. Numri i ditëve mund të jetë negativ, megjithatë, vlerat më pak se -693594 (që korrespondojnë me datën 00.00.0000 nga Lindja e Krishtit) injorohen nga funksionet e konvertimit nga data në varg.

Mbi të dhënat si TDateTime Përcaktohen të njëjtat veprime si me numrat realë, dhe konstantet dhe variablat e llojeve të plota dhe reale mund të marrin pjesë në shprehjet e këtij lloji.

Që nga lloji TDateTime në përputhje me formatin e numrave realë, ju mund të përcaktoni lehtësisht datën që është disa ditë përpara ose prapa nga data e dhënë: për këtë mjafton që respektivisht të shtoni ose zbritni numrin e plotë të dëshiruar nga data e dhënë.

1.2 Llojet e strukturuara

Secili prej llojeve të strukturuara (dhe në Object Pascal ka katër prej tyre: vargje, regjistrime, grupe dhe skedarë) karakterizohet nga shumëllojshmëria e elementeve që formojnë këtë lloj. Çdo element, nga ana tjetër, mund t'i përkasë një lloji të strukturuar, i cili na lejon të flasim për folenë e mundshme të llojeve. Object Pascal lejon thellësi arbitrare të foleve të llojeve, por gjatësia totale e secilit prej tyre në paraqitjen e brendshme nuk duhet të kalojë 2 GB.

Për pajtueshmërinë me Pascal standard, Object Pascal lejohet të paraprijë një deklaratë të tipit të strukturuar me një fjalë të rezervuar të paketuara, duke udhëzuar kompajlerin që të ruajë sa më shumë memorien e alokuar për objektet e tipit të strukturuar; por përpiluesi në fakt e injoron këtë aluzion: "paketimi" i të dhënave në Object Pascal bëhet automatikisht kurdoherë që është e mundur.

1.2.1 Vargjet

Vargjet në Object Pascal janë shumë të ngjashme me llojet e ngjashme të të dhënave në gjuhë të tjera programimi. Një tipar dallues i vargjeve është se të gjithë përbërësit e tyre janë të dhëna të të njëjtit lloj (ndoshta të strukturuara). Këta komponentë mund të porositen lehtësisht dhe secili prej tyre mund të arrihet duke specifikuar thjesht numrin e tij serial.

Një përshkrim i llojit të grupit përcaktohet si më poshtë:

<имя типа>= grup [<сп.инд.типов>] të<тип>;

Këtu<имя типа>- identifikues i saktë; grup, prej- fjalë të rezervuara (array, from);<сп.инд.типов>- një listë me një ose më shumë lloje të indekseve, të ndara me presje; kllapat katrore rreth listës janë një kërkesë sintaksore;<тип>- çdo lloj Objekt Pascal.

Si lloje indeksi në Object Pascal, mund të përdorni çdo lloj rendor që ka një kardinalitet jo më shumë se 2 GB (d.m.th., përveç Fjalë e gjatë dhe Int64)

Thellësia e foleve të llojeve të strukturuara në përgjithësi, dhe, rrjedhimisht, e vargjeve, është arbitrare, kështu që numri i elementeve në listën e llojeve të indeksit (dimensioni i grupit) nuk është i kufizuar, por gjatësia totale e paraqitjes së brendshme të çdo grupi nuk mund të tejkalojnë 2 GB. Në memorien e PC-së, elementët e grupit ndjekin njëri-tjetrin në mënyrë që kur lëvizni nga adresat më të ulëta në adresat më të larta, indeksi më i djathtë i grupit ndryshon më shpejt.

Në Object Pascal, ju mund t'i kaloni të gjithë elementët e një grupi në një grup tjetër të të njëjtit lloj me një operator caktimi.

1.2.2 Të dhënat

Regjistrimi është një strukturë të dhënash e përbërë nga një numër fiks i komponentëve të quajtur fusha regjistrimi. Ndryshe nga një grup, komponentët (fushat) e një rekord mund të jenë të llojeve të ndryshme. Për të bërë të mundur referimin e një komponenti të veçantë të regjistrimit, emërtohen fushat.

Struktura e deklaratës së llojit të rekordit është si më poshtë:

<имятипа>= rekord<сп.полей>fundi;

Këtu<имя типа>- identifikues i saktë; rekord / fund- fjalë të rezervuara (rekord, fund);<сп.полей>- lista e fushave; është një sekuencë e seksioneve të një regjistrimi me një pikëpresje midis tyre.

Çdo seksion i një regjistrimi përbëhet nga një ose më shumë identifikues fushash, të ndarë me presje.

Fjali rasti ... i, e cila hap pjesën e variantit, duket si operatori përkatës i përzgjedhjes, por në fakt luan vetëm rolin e një lloj fjale shërbimi që tregon fillimin e pjesës së variantit. Kjo është arsyeja pse në fund të variantit nuk duhet të vendosni fund si çift të rasti ... i... (Duke qenë se pjesa e variantit është gjithmonë e fundit në regjistrim, ajo ndiqet nga fundi, por vetëm si një çift për t'u regjistruar). Çelësi i përzgjedhjes në propozim rasti ... i në fakt injorohet nga përpiluesi: kërkesa e vetme për të në Object Pascal është që çelësi të përcaktojë një lloj rendor standard ose të paradeklaruar.

Emrat e fushave duhet të jenë unikë brenda rekordit ku janë deklaruar, megjithatë, nëse të dhënat përmbajnë fusha regjistrimi, domethënë ato janë të vendosura brenda njëri-tjetrit, emrat mund të përsëriten në nivele të ndryshme të foleve.

1.2.3 Komplete

Kompletet - këto janë grupe të të njëjtit lloj objektesh të lidhura logjikisht me njëri-tjetrin. Natyra e lidhjeve ndërmjet objekteve nënkuptohet vetëm nga programuesi dhe nuk kontrollohet në asnjë mënyrë nga Object Pascal. Numri i elementeve të përfshira në grup mund të ndryshojë nga 0 në 256 (një grup që nuk përmban elementë quhet bosh). Është mospërputhja e numrit të elementeve të tyre që grupet ndryshojnë nga vargjet dhe rekordet.

Dy grupe konsiderohen ekuivalente nëse dhe vetëm nëse të gjithë elementët e tyre janë të njëjtë, dhe rendi i elementeve në grup është indiferent. Nëse të gjithë elementët e një grupi përfshihen edhe në një tjetër, ato flasin për përfshirjen e grupit të parë në të dytin. Një grup bosh përfshihet në ndonjë tjetër.

Përshkrimi i llojit të grupit është si më poshtë:

<имя типа>= grup prej<базовый тип>;

Këtu<имя типа>- identifikues i saktë; grup, i- fjalë të rezervuara (bashkë, nga);<базовый тип>- lloji bazë i elementeve të grupit, i cili mund të jetë çdo lloj rendor, përveç Word, Integer, Longint, Int64 .

Për të përcaktuar një grup, përdoret i ashtuquajturi konstruktor i grupit: një listë e specifikimeve të elementeve të grupit, të ndara nga njëri-tjetri me presje; lista është e rrethuar me kllapa katrore. Specifikimet e elementit mund të jenë konstante ose shprehje të një lloji bazë, si dhe një lloj vargu i të njëjtit lloj bazë.

Struktura e brendshme e grupit është e tillë që secilit prej elementeve të tij i caktohet një shifër binare (një bit); nëse elementi përfshihet në grup, biti përkatës ka vlerën 1, përndryshe - 0. Në të njëjtën kohë, njësia minimale e memories është një bajt që përmban 8 bit, kështu që kompajleri ka ndarë një bajt për grupet, dhe si si rezultat, kardinaliteti i secilit prej tyre u bë 8 elemente. Kardinaliteti maksimal i një grupi është 256 elementë. Për grupe të tilla, përpiluesi alokon 16 bajt të njëpasnjëshëm.

Dhe një eksperiment tjetër: ndryshoni diapazonin e llojit bazë në 1..256. Megjithëse kardinaliteti i këtij lloji është 256 elementë, kur përpiqet të përpilojë programin, përpiluesi do të raportojë një gabim: Kompletet mund të kenë më së shumti 256 elementë (Grupet mund të kenë jo më shumë se 256 elementë) që nga numërimi i elementeve të grupit. fillon nga zero pavarësisht kufirit të poshtëm të deklaruar në program ... Përpiluesi lejon përdorimin si lloj bazë të një lloji të intervalit të plotë me një kufi minimal 0 dhe maksimum 255, ose çdo lloj të numëruar me jo më shumë se 256 elementë (kardinaliteti maksimal i një tipi të numëruar është 65536 elemente).

1.3 Vargjet

Llojet e mëposhtme përdoren për përpunimin e tekstit në Object Pascal:

linjë e shkurtër varg i shkurtër ose varg [n] ku n<= 255;

rresht i gjatë varg ;

varg i gjerë WideString ;

varg i përfunduar me null pchar .

E përbashkëta e këtyre llojeve është se çdo varg trajtohet si një grup karakteresh njëdimensionale, numri i karaktereve në të cilin mund të ndryshojë në një program që funksionon: për vargun [n], gjatësia e vargut varion nga 0 në n. , për varg dhe pchar- nga 0 në 2 GB.

Standard Pascal përdor vetëm vargje të shkurtra Vargu [n]... Në memorie, një vargu i tillë i ndahet n + i bajt, bajt i parë përmban gjatësinë aktuale të vargut, dhe vetë karakteret janë të vendosura duke filluar nga bajt i 2-të. Meqenëse në këtë rast ndahet një bajt për gjatësinë e vargut, gjatësia maksimale e një vargu të shkurtër nuk mund të kalojë 255 karaktere. Për të deklaruar një varg të shkurtër me gjatësi maksimale, synohet lloji standard Tela e shkurtër(ekuivalente Varg).

Windows përdor gjerësisht vargjet me ndërprerje null, të cilat janë vargje karakteresh të kufizuara nga karakteri # o. Gjatësia maksimale e një vargu të tillë kufizohet vetëm nga memoria e disponueshme dhe mund të jetë shumë e madhe.

Delphi 32-bit prezanton një lloj të ri varg duke kombinuar komoditetet e të dy llojeve. Kur punoni me këtë lloj, memoria shpërndahet sipas nevojës (dinamikisht) dhe kufizohet nga memoria e disponueshme e disponueshme për programin.

1.4 Memoria e treguesve dhe grumbullit

1.4.1 Kujtesa dinamike

Kujtesa dinamike- kjo është RAM-i i PC-së që i jepet programit kur ai është në punë. Shpërndarja dinamike e të dhënave nënkupton përdorimin e memories dinamike drejtpërdrejt gjatë kohës që programi është duke u ekzekutuar. Në të kundërt, alokimi statik bëhet nga përpiluesi Object Pascal gjatë përpilimit të programit. Me alokimin dinamik, nuk dihet paraprakisht as lloji dhe as sasia e të dhënave që duhen ndarë.

1.4.2 Treguesit

PC RAM është një koleksion qelizash për ruajtjen e informacionit - bajt, secila prej të cilave ka numrin e vet. Këta numra quhen adresa, ato ju lejojnë të përdorni çdo bajt memorie. Object Pascal i siguron programuesit një mjet fleksibël të menaxhimit të memories së grumbullit - të ashtuquajturit tregues. Një tregues është një variabël që përmban adresën e bajtit të kujtesës si vlerë të tij. Duke përdorur tregues, mund të alokoni cilindo nga llojet e njohura të të dhënave në Object Pascal në grumbull. vetëm disa prej tyre ( Byte, Char, ShortInt, Boolean) zënë një bajt në paraqitjen e brendshme, pjesa tjetër - disa të afërta. Prandaj, në fakt, treguesi adreson vetëm bajtin e parë të të dhënave.

Në mënyrë tipike, një tregues lidhet me disa lloj të dhënash. Ne do t'i quajmë tregues të tillë të shtypur. Për të deklaruar një tregues të shtypur, përdorni simbolin ^, i cili vendoset përpara tipit përkatës.

Në Object Pascal, ju mund të deklaroni një tregues dhe të mos e lidhni atë me ndonjë lloj të caktuar të dhënash. Për këtë përdoret lloji standard. tregues, Për shembull:

Treguesit e këtij lloji do të quhen të pashtypshëm. Meqenëse treguesit e pashtypshëm nuk shoqërohen me një lloj specifik, është e përshtatshme t'i përdorni ato për të shpërndarë në mënyrë dinamike të dhëna, struktura dhe lloji i të cilave ndryshojnë gjatë rrjedhës së programit.

Siç është përmendur tashmë, vlerat e treguesve janë adresat e variablave në memorie, kështu që mund të pritet që vlera e një treguesi të kalojë në një tjetër. Në fakt kjo nuk është e vërtetë. Në Object Pascal, ju mund të kaloni vetëm vlera midis treguesve të lidhur me të njëjtin lloj të dhënash.

1.4.3 Alokimi dhe lirimi i memories dinamike

E gjithë memoria e grumbullit në Object Pascal trajtohet si një grup solid bajtësh i quajtur grumbull.

Memoria për çdo variabël të alokuar dinamikisht ndahet me procedurën New. Parametri për të thirrur këtë procedurë është një tregues i shtypur. Si rezultat i thirrjes, treguesi fiton një vlerë që korrespondon me adresën nga e cila mund të vendosen të dhënat. Vlera e treguar nga treguesi, domethënë të dhënat aktuale të alokuara në grumbull, shënohen me simbolin ^, i cili vendoset menjëherë pas treguesit. Nëse nuk ka asnjë simbol ^ pas treguesit, atëherë do të thotë adresa ku ndodhen të dhënat. Ka kuptim të mendojmë përsëri për atë që sapo u tha: vlera e çdo treguesi është një adresë dhe për të treguar se nuk po flasim për një adresë, por për të dhënat që ndodhen në këtë adresë, një ^ vendoset pas treguesin (ndonjëherë ky referohet si tregues dereferencues).

Të dhënat e alokuara në mënyrë dinamike mund të përdoren kudo në program ku lejohen për konstante dhe variabla të llojit të duhur

Kujtesa dinamike jo vetëm që mund të merret nga grumbulli, por edhe të kthehet prapa. Për këtë përdoret procedura Dispose. Për shembull, operatorët

Dispon (pJ);

Hidh (pR);

do të kthejë në grumbull memorien që i është caktuar më parë treguesve pJ dhe pR (shih më lart).

Vini re se procedura Dispose (pPtr) nuk e ndryshon vlerën e treguesit pPtr, por vetëm e kthen kujtesën e lidhur më parë me këtë tregues në grumbull. Megjithatë, riaplikimi i procedurës në një tregues të lirë do të rezultojë në një gabim në kohën e ekzekutimit. Programuesi mund të shënojë treguesin e liruar me fjalën e rezervuar zero.

1.5 Tipi pseudonimet

Për çdo lloj, ju mund të deklaroni pseudonime sa të doni. Për shembull:

TMyInteger = Integer;

Në të ardhmen, pseudonimi mund të përdoret në të njëjtën mënyrë si lloji bazë:

Mylnt: TMyInteger;

Mylnt: = 2 * Rrumbullakët (pi);

Këto lloj pseudonimesh përdoren zakonisht për ta bërë kodin më të lexueshëm. Sidoqoftë, në Object Pascal, ju mund të deklaroni pseudonime të shtypura fort duke shtuar llojin e fjalës së rezervuar përpara emrit të llojit bazë:

TMyIntegerType = lloji Integer;

MylntVar: TMyIntegerType;

Nga këndvështrimi i kompajlerit, pseudonimet e shtypura janë të pajtueshme me llojin bazë në lloje të ndryshme shprehjesh, por në fakt ato deklarojnë një lloj të ri të dhënash, kështu që nuk mund të përdoren si parametra formalë të thirrjeve nënrutinë në vend të llojit bazë. Nëse, për shembull, deklarohet një procedurë

funksioni MylntFunc (APar: numër i plotë): Integer;

atëherë një thirrje e tillë ndaj saj

MylntFunc (MylntVar)

do të konsiderohet si i gabuar nga përpiluesi.

Pseudonimet e shtypura fort bëjnë që përpiluesi të gjenerojë informacione të tipit të ekzekutimit (RTTI). Ky informacion zakonisht përdoret nga mjedisi Delphi për të mbështetur funksionimin e llojeve të ndryshme të redaktuesve.

Kur përshkruani një ndryshore, duhet të specifikoni llojin e saj. Lloji i një ndryshoreje përshkruan grupin e vlerave që mund të marrë dhe veprimet që mund të kryhen në të. Përshkrimi i llojit përcakton një identifikues që tregon llojin.

Llojet e thjeshta ndahen në tipe standarde (rendore) dhe të numëruara (të kufizuara).

Llojet standarde

Turbo Pascal ka katër lloje standarde të integruara: integer, real, boolean dhe char.

Lloji i plotë

Turbo Pascal ka pesë lloje të integruara të numrave të plotë: shortint, integer, longint, byte dhe word. Çdo lloj tregon një nëngrup specifik të numrave të plotë, siç tregohet në tabelën e mëposhtme.

Llojet e integruara të numrave të plotë.

Gama

Formati

8 bit të nënshkruar

16 bit të nënshkruar

2147483648 +2147483647

Nënshkruar 32 bit

8 bit të panënshkruara

16 bit të panënshkruara

Veprimet aritmetike në operandët e një lloji të plotë kryhen në përputhje me rregullat e mëposhtme:

  1. Një tip konstante me numër të plotë është lloji i numrit të plotë të integruar me diapazonin më të vogël që përfshin vlerën e asaj konstante të numrit të plotë.
  2. Në rastin e një operacioni binar (një operacion që përdor dy operandë), të dy operandët konvertohen në llojin e tyre të përbashkët përpara se të veprohet. Lloji i zakonshëm është tipi i integruar i integruar me diapazonin më të vogël që përfshin të gjitha vlerat e mundshme të të dy llojeve. Për shembull, lloji i zakonshëm për një numër të plotë me gjatësi bajti është numër i plotë, dhe lloji i zakonshëm për një numër të plotë dhe numër të plotë me gjatësi fjalësh është një numër i plotë i gjatë. Veprimi kryhet sipas saktësisë së tipit gjenerik dhe lloji i rezultatit është tipi gjenerik.
  3. Shprehja në të djathtë në deklaratën e detyrës vlerësohet pavarësisht nga madhësia e ndryshores në të majtë.

Veprimet e kryera në numra të plotë:

"+" - shtim

“-“ - zbritje

"*" - shumëzim

SQR - katrore

DIV - pas ndarjes, hedh pjesën e pjesshme

MOD - marrja e një mbetjeje numër të plotë pas ndarjes

ABS - moduli i numrave

RANDOM (X) - marrja e një numri të rastësishëm nga 0 në X

Përgjigje: = 100; b: = 60; një rezultat DIV b - 1 a MOD b rezultat - 40

Variablat e tipit integer përshkruhen si më poshtë:

var lista e variablave: lloji;

Për shembull: var a, p, n: numër i plotë;

Lloji i vërtetë (i vërtetë)

Një tip real është një nëngrup numrash realë që mund të përfaqësohen në formatin me pikë lundruese me një numër fiks shifrash. Shkrimi i një vlere me pikë lundruese zakonisht përfshin tre vlera - m, b dhe e - të tilla që m * b e, ku b është gjithmonë 10 dhe m dhe e janë numra të plotë në intervalin real. Këto vlera m dhe e përcaktojnë më tej gamën dhe saktësinë e tipit real.

Ekzistojnë pesë lloje të llojeve reale: real, single, duble, exnende, comp. Llojet reale ndryshojnë në diapazonin dhe saktësinë e vlerave të tyre të lidhura

Diapazon dhe shifra dhjetore për llojet reale

Gama

Numrat

2,9x10E-39 deri në 1,7x10E 38

1,5x10E-45 deri në 3,4x10E 38

5,0x10E-324 deri në 1,7x10E 308

3.4x10E-493 deri në 1.1x10E 403

2E 63 deri në 2E 63

Veprimet e kryera në numra realë:

  • Të gjitha operacionet janë të vlefshme për numra të plotë.
  • SQRT (x) është rrënja katrore e numrit x.
  • SIN (X), COS (X), ARCTAN (X).
  • LN (X) -logaritmi natyror.
  • EXP (X) -eksponenti X (ex x).
  • EXP (X * LN (A)) - fuqizimi (A x).
  • Lloji i funksioneve të konvertimit:
    • TRUNC (X) - hedh pjesën e pjesshme;
    • ROUND (X) - rrumbullakim.
  • Disa rregulla të veprimeve aritmetike:
    • Nëse në operacionin aritmetik hasen numra të tipit real dhe të plotë, rezultati do të jetë i tipit real.
    • Të gjitha pjesët përbërëse të shprehjes shkruhen në një rresht.
    • Përdoren vetëm kllapa.
    • Ju nuk mund të vendosni dy shenja aritmetike në një rresht.

Variablat e tipit real përshkruhen si më poshtë:

var lista e variablave: lloji;

Për shembull:

var d, g, k: real;

Lloji i karakterit (char)

Lloji char përfshin çdo karakter të mbyllur në apostrofa. Për të përfaqësuar një apostrof si një variabël simbolik, duhet ta mbyllni atë në një apostrof: ''''''.

Çdo simbol ka kodin dhe numrin e vet. Numrat vijues të shifrave 0.1..9 renditen në rend rritës. Edhe numrat serialë të shkronjave janë në rritje, por jo domosdoshmërisht pasojnë njëri-tjetrin.

Karakteret krahasuese janë të zbatueshme për të dhënat e karaktereve:

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

Për shembull: 'A'< ‘W’

Funksionet që zbatohen për ndryshoret simbolike:

  1. ORD (X) - përcakton numrin rendor të karakterit X. Rendi (‘a’) = 97;
  2. CHR (X) - përcakton një karakter sipas numrit. chr (97) = 'a';
  3. PRED (X) - kthen karakterin që i paraprin karakterit X. Pred (‘B’) = ‘A’;
  4. SUCC (X) - kthen karakterin pas karakterit X. succ ('A') = 'B';

Lloji i numëruar

Lloji i të dhënave të numëruar është quajtur kështu sepse është specifikuar si një numërim i konstanteve në një rend të përcaktuar rreptësisht dhe në një sasi të përcaktuar rreptësisht. Një lloj i numëruar përbëhet nga një listë konstantesh. Variablat e këtij lloji mund të marrin vlerën e cilësdo prej këtyre konstanteve. Përshkrimi i llojit të numëruar është:

Lloji<имя типа>= (lista e konstantave); Var<имя переменной>:<имя типа>;

ku<список констант>është një lloj i veçantë konstantesh të ndara me presje që kanë numrin e tyre rendor, duke filluar nga 0.

Për shembull:

drejtimi i tipit = (veri, jug, perëndim, lindje); muaj = (qershor, korrik, gusht, janar); kapaciteti = (kovë, fuçi, bombola, rezervuar); var kthesë: drejtim; nisja: muaj; vëllimi: kapaciteti; var kthesë: (veri, jug, perëndim, lindje); nisja: (qershor, korrik, gusht, janar); vëllimi: (kovë, fuçi, bombola, rezervuar);

Ju mund të ekzekutoni operatorët e mëposhtëm të caktimit:

Kthesë: = në jug; nisja: = gusht; vëllimi: = rezervuari;

por detyrat e përziera nuk mund të kryhen:

Nisja: = në jug; vëllimi: = gusht;

Funksionet e mëposhtme zbatohen për variablat e numëruar:

1. ORD - numri serial

2. PRED është elementi pararendës

3. SUCC është një element përcjellës.

PRED (fuçi) = kovë; SUCC (jug) = perëndim; ORD (korrik) = 1;

Variablat e një lloji të numëruar mund të krahasohen sepse ato janë të renditura dhe të numëruara. Pra shprehje: veri< юг, июнь < январь имеют значения TRUE, а юг>perëndim dhe dollar<бочка значение FАLSE.

Lloji i kufizuar

Nëse një variabël nuk i pranon të gjitha vlerat e llojit të tij, por vetëm në një gamë të caktuar, atëherë ai mund të konsiderohet si një variabël i një lloji të kufizuar. Çdo lloj i kufizuar specifikohet duke zbatuar një kufizim në llojet bazë.

Është përshkruar kështu:

LLOJI<имя типа>= konstante1 .. konstante2

Në këtë rast, duhet të respektohen rregullat e mëposhtme:

  1. Të dyja konstantat e kufizuara duhet të jenë të të njëjtit lloj.
  2. Çdo lloj i thjeshtë përveç realit mund të përdoret si lloj bazë.
  3. Vlera fillestare gjatë përcaktimit të tipit të kufizuar nuk duhet të jetë më e madhe se vlera përfundimtare.
indeksi i tipit = 0 ..63; shkronja = 'a' .. 'z'; var char1, char2: shkronja; a, g: indeksi;

Mund ta përshkruani drejtpërdrejt në seksionin e përshkrimit të ndryshores:

var a, g: 0 ..63; char1, char2: 'a' .. 'z'. Bazat e programimit
Çdo profesionist ka qenë dikur një çajnik. Me siguri e njihni gjendjen kur "nuk dini si të filloni të mendoni për të arritur këtë". Ju ndoshta keni hasur në një situatë ku thjesht nuk dini nga të filloni. Ky libër u drejtohet vetëm atyre njerëzve që dëshirojnë të bëhen programues, por nuk dinë fare si ta nisin këtë rrugë. ...

Pothuajse të gjitha llojet e të dhënave me numra të plotë janë. Këto lloje të të dhënave përfaqësojnë numra të plotë në një gamë të caktuar. Emrat e saktë të llojeve të numrave të plotë dhe diapazonit të vlerave varen nga gjuha specifike e programimit, nga përpiluesi dhe nga mënyra e përpilimit. Mësoni më shumë rreth kësaj në dokumentacionin e përpiluesit.

Për shembull, lloji i të dhënave Numër i plotë në Delphi ka një gamë prej -2147483648 ... 2147483647, ndërsa në Turbo Pascal lloji i të dhënave është Numër i plotë paraqet numra në rangun -35768 ... 32767. Në Free Pascal, një sërë vlerash si Numër i plotë përcaktohet nga mënyra e zgjedhur.

Meqenëse Lazarus përdor përpiluesin Free Pascal, ajo që është thënë për llojet e të dhënave në lidhje me Pascalin e Lirë është gjithashtu e vërtetë për Lazarus.

Pra, llojet e të dhënave të numrave të plotë të Pascal Free janë renditur në tabelën 13.1.

Tabela 13.1. Llojet e të dhënave me numra të plotë Pascal (Lazarus).

Një lloj Madhësia, bajt Gama e vlerave
Bajt 1 0…255
Shkurt 1 -128…127
Smallint 2 -35768…32767
fjalë 2 0…65535
Numër i plotë 2 ose 4 Varet nga mënyra e përpilimit
Kardinali 4 0…4294967295
Longint 4 -2147483648…2147483647
Fjalë e gjatë 4 0...4294967295
Int64 8 -9223372036854775808...9223372036854775807
QWord 8 0...18446744073709551615

SHËNIM
Në Pascal Free, llojet Int64 dhe QWord nuk jane! Kjo do të thotë që ju nuk mund t'i përdorni ato, për shembull, për variablat e indeksit në sythe. Megjithatë, i solla këtu, për të mos i përshkruar veçmas në të ardhmen dhe për të mbledhur në një vend të gjitha llojet e numrave të plotë të Pascalit të lirë. Nëse nuk i kuptoni disa nga fjalët, mos u shqetësoni. Në kohën e duhur do t'ju tregoj për gjithçka në më shumë detaje.

Dhe tani disa shpjegime për tabelën.

Në një kolonë NJË LLOJ jepen identifikuesit e llojeve të të dhënave (fjalë kyçe që i tregojnë kompajlerit se cilit lloj i përket kjo apo ajo e dhënë). Do të mësoni se si t'i përdorni këta identifikues në mësimet e mëposhtme.

Në një kolonë PERMASA tregohet madhësia që zë lloji i të dhënave në memorien e kompjuterit. Për shembull, një numër i plotë pozitiv mund të përfaqësohet nga lloje të ndryshme: Bajt, fjalë, Kardinali etj Megjithatë, një numër si Kardinali do të zënë 4 bajt në memorie, ndërsa një numër si Bajt- vetëm 1 bajt. Prandaj, nëse e dini me siguri se numri me të cilin po punoni nuk do të marrë kurrë një vlerë më të madhe se 255, atëherë është më mirë ta përcaktoni atë si një lloj Bajt, pasi kjo do të kursejë hapësirë ​​në kujtesën e kompjuterit. Edhe pse gjithçka nuk është aq e thjeshtë këtu (nuancat e ndarjes së kujtesës dhe burimeve të tjera kompjuterike janë përtej qëllimit).

Në një kolonë GAME specifikohet diapazoni i vlerave në të cilat funksionon lloji i të dhënave. Për shembull, një numër si Bajt mund të marrë vlera nga 0 në 255.

Tani praktikoni. Le të shkruajmë një program që shfaq vargjet e vlerave të të gjitha llojeve të të dhënave të numrave të plotë. Kodi burimor për këtë program tregohet më poshtë:

Listimi 13.1. Një program për shfaqjen e vargjeve të numrave të plotë. programi td; ($ mode objfpc) ($ H +) përdor ($ IFDEF UNIX) ($ IFDEF UseCTthreads) cthreads, ($ ENDIF) ($ ENDIF) Klasat (mund të shtoni njësi pas kësaj); filloni Writeln ("Byte:", Low (Byte), "..", Lartë (Byte)); Writeln ("Shortint:", E ulët (Shortint), "..", Lartë (Shortint)); Writeln ("Smallint:", E ulët (Smallint), "..", E lartë (Smallint)); Writeln ("Fjala:", E ulët (Fjalë), "..", E lartë (Fjalë)); Writeln ("Numër i plotë:", ​​I ulët (Numër i plotë), "..", I lartë (Numër i plotë)); Writeln ("Kardinal:", I ulët (Kardinal), "..", I lartë (Kardinal)); Writeln ("Longint:", Low (Longint), "..", Lartë (Longint)); Writeln ("Longword:", Low (Longword), "..", High (Longword)); Writeln ("Int64:", E ulët (Int64), "..", Lartë (Int64)); Writeln ("QWord:", E ulët (QWord), "..", E lartë (QWord)); Readln; fund.

Funksioni standard E ulët përcakton vlerën minimale të llojit të të dhënave. Funckia Lartë përcakton vlerën maksimale. Me funksione ShkruaniLn dhe LexoniLn tashmë jeni pak të njohur. Ne do të flasim më në detaje rreth nënprocedurave (procedurave dhe funksioneve) në seksionin përkatës.

Më në fund, do t'ju tregoj se si shkruhen të dhënat e plota në një program. Dhe ashtu si kudo tjetër - thjesht shkruani numrin, pa thonjëza dhe ndonjë karakter shtesë. Për shembull, kështu

10
178
35278

Vërtetë, kjo vlen për numrat në sistemin e shënimeve dhjetore. Ju ndoshta e dini tashmë se ka sisteme të tjera. Më të përdorurit janë sistemet e numrave binar, dhjetorë dhe heksadecimal.

Free Pascal mbështet katër formate të shënimeve me numra të plotë:

  1. Shënim dhjetor... Vetëm një numër si 10.
  2. Shënim heksadecimal... Një numër i prefiksuar me $. Për shembull, 10 dollarë heksadecimal është e barabartë me 16 dhjetore.
  3. Shënim oktal... Një numër i parashtesuar me &. Për shembull, oktal dhe 10 janë të barabartë me 8 dhjetore.
  4. Shënimi binar... Një numër i parashtesuar me%. Për shembull, numri binar% 10 është i barabartë me dhjetorin 2.

Detyre shtepie:

Krijoni një program që shfaq vargjet e vlerave të numrave të plotë (Lista 13.1). Përpiloni programin dhe ekzekutoni atë. Sigurohuni që këto vlera të përputhen me ato të paraqitura në tabelën 13.1.

Në kodin burimor të programit, gjeni rreshtin që përcakton mënyrën e përpilimit:

($ modaliteti objfpc) ($ H +)

Në këtë rresht, në vend të fjalës objfpc shkruaj një fjalë tp... Kjo do të thotë, linja që rezulton duhet të duket si kjo:

($ mode tp) ($ H +)

Ekzekutoni programin. Shikoni gamën e vlerave si Numër i plotë... Nxirrni përfundime.

Mësoni të mendoni si programues, domethënë logjikisht. Askush nuk do të përtypë gjithçka derisa të dalësh në pension, siç po bëj unë tani. Duhet të mësoheni të mendoni vetë. Përndryshe, ju do të rrëshqasni në "parimin e majmunit të të mësuarit" dhe atëherë shanset tuaja për t'u bërë një programues i shkëlqyer do t'i afrohen zeros. Për t'ju ndihmuar të mos rrëshqasni në nivelin e "mbytjes", unë do të lë periodikisht boshllëqe në stërvitjen tuaj, në mënyrë që të përpiqeni të kuptoni vetë disa gjëra.

Është shumë më mirë nëse ju vetë mendoni për vendim i gabuar, ju vetë do ta gjeni gabimin dhe do ta rregulloni vetë, se sa do të përdorni gjithmonë zgjidhjet e sakta të njerëzve të tjerë dhe do t'i kopjoni ato marrëzisht.

LEKTORIA 2

Bazat e programimit.

Hyrje në Pascal. Llojet e të dhënave. Operacionet.

Alfabeti i gjuhësPaskalin

Çdo gjuhë natyrore përbëhet nga elementë të tillë si simbole, fjalë, fraza, fjali. Edhe gjuha programuese ka elemente të ngjashme: simbole, fjalë, shprehje (fraza), operatorë (fjali).

Fjalët formohen nga një koleksion simbolesh. Shprehjet - këto janë grupe fjalësh dhe operatorë - këto janë kombinime fjalësh dhe shprehjesh. Simbolet gjuhësore - ka shenja (shkronja) elementare që përdoren për të hartuar një lloj teksti. Pra, grupi i këtyre simboleve formon alfabetin e gjuhës.

Alfabeti Pascal përbëhet nga:

1. Shkronjat e mëdha dhe të vogla të alfabetit latin, i cili përfshin karakteret e mëposhtme:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z - shkronjat e mëdha;

A b c d e f g h i j k l m n o p q r s t u v w x y z - shkronjat e vogla;

2. Numrat dhjetorë arabë: 0 1 2 3 4 5 6 7 8 9;

3. shifra heksadecimal (të ndërtuara nga shifra dhjetore dhe shkronjat nga A në F);

4. 32 shkronja të mëdha dhe të vogla të alfabetit rus;

5. personazhe të veçanta:

Kombinimet e karaktereve të veçanta mund të formojnë karaktere të përbëra:

: = detyrë;

< >jo e barabartë;

> = më i madh ose i barabartë;

<= меньше или равно;

Gama e vlerave;

(* *) ose () - koment.

Struktura e një programi Pascal

Në mënyrë që përpiluesi Pascal të kuptojë saktë se çfarë veprimesh priten prej tij, programi juaj duhet të formatohet në përputhje të plotë me sintaksën (rregullat për ndërtimin e programeve) të kësaj gjuhe.

Çdo program Pascal mund të përbëhet nga blloqet e mëposhtme (në tekstin e mëtejmë, pjesët opsionale shënohen me kllapa katrore):

program<имя_программы>;

[përdor<имена_подключаемых_модулей>;]

[etiketë<список_меток>;]

[konst<имя_константы> = <значение_константы>;]

[lloj<имя_типа> = <определение_типа>;]

[var<имя_переменной> : <тип_переменной>;]

[procedurë<имя_процедуры> <описание_процедуры>;]

[funksioni<имя_функции> <описание_функции>;]

fillimi (fillimi i pjesës kryesore të programit)

<операторы>

fund. (* fundi i pjesës kryesore të programit *)

Versionet e mëvonshme të përpiluesve të Pascal nuk kërkojnë më të specifikojnë emrin e programit, domethënë programin e linjës<имя_программы>; mund të hiqet. Por kjo është e mundur vetëm nëse i gjithë programi është i përfshirë në një skedar-moduli. Nëse programi përbëhet nga disa pjesë të pavarura - module, atëherë secila prej tyre duhet të ketë një kokë (program ose njësi).

Çdo nga seksionet opsionale të listuara mund të ndodhë më shumë se një herë në tekstin e programit, sekuenca e tyre e përgjithshme mund të ndryshojë gjithashtu, por rregulli kryesor i gjuhës Pascal duhet të respektohet gjithmonë: përpara se të përdoret një objekt, ai duhet të deklarohet dhe përshkruhet.

Përpiluesit e Pascal nuk bëjnë dallimin midis shkronjave të vogla dhe të mëdha, dhe injorojnë karakteret e hapësirës së bardhë, kështu që teksti i programit mund të strukturohet në mënyrë që të jetë më i përshtatshëm për t'u lexuar dhe korrigjuar.

Direktivat e përpiluesit

Një rresht që fillon me simbole ($, nuk është një koment, por një direktivë përpiluesi - një komandë e veçantë nga e cila varet procesi i përpilimit dhe ekzekutimit të një programi. Do t'i shqyrtojmë direktivat në ato seksione të cilave u referohen "me kuptim".

Për shembull, linja ($ I-, Q +) çaktivizon vërtetimin e I/O, por mundëson kontrollin e tejkalimit llogaritës.

Identifikuesit

Emrat që u jepen objekteve të programit (konstantet, llojet, variablat, funksionet dhe procedurat dhe i gjithë programi në tërësi) quhen identifikues. Ato mund të përbëhen vetëm nga numra, shkronja latine dhe shenjën "_" (nënvizim). Megjithatë, një shifër nuk mund të fillojë një emër. Identifikuesit mund të jenë të çdo gjatësie, por nëse dy emra kanë të njëjtat 63 karaktere të para, atëherë emrat e tillë konsiderohen identikë.

Mund t'i jepni objekteve të programit çdo emër, por ju duhet që ato të jenë të ndryshme nga fjalët e rezervuara të përdorura nga gjuha Pascal, sepse përpiluesi nuk do të pranojë gjithsesi variabla me emra "të huaj".

Këtu është një listë e fjalëve më të zakonshme të rezervuara:

zbatimi i vargjeve shl

vargu i ndërfaqes së rastit

konst label pastaj

përdor treguesin e skedarit

procedura larg var

për program ndërsa

rekord përpara me

funksioni përsërit xor

Variablat dhe llojet e të dhënave

Një variabël është një objekt programi, vlera e të cilit mund të ndryshojë gjatë ekzekutimit të programit.

Lloji i të dhënave është një karakteristikë e gamës së vlerave që mund të marrin variablat e këtij lloji të të dhënave.

Të gjitha variablat e përdorur në program duhet të përshkruhen në një seksion të veçantë var sipas modelit të mëposhtëm:

var<имя_переменной_1> [, <имя_переменной_2, _>] : <имя_типа_1>;

<имя_переменной_3> [, <имя_переменной_4, _>] : <имя_типа_2>;

Gjuha Pascal ka një grup të madh të llojeve të ndryshme të të dhënave, por tani do të tregojmë vetëm disa prej tyre. Më tej do të flasim për të gjitha llojet e të dhënave.

Konstante

Një konstante është një objekt, vlera e të cilit dihet edhe para fillimit të ekzekutimit të programit.

Konstantet janë të nevojshme për hartimin e programeve vizuale, janë të pazëvendësueshme kur përdorni vlera të përsëritura në mënyrë të përsëritur në tekstin e programit, ato janë të përshtatshme nëse është e nevojshme të ndryshoni këto vlera menjëherë në të gjithë programin.

Ekzistojnë tre lloje konstantesh në Pascal:

Konstante pa emër (numra dhe numra, simbole dhe vargje, grupe);

Konstante të pashtypura të emërtuara;

Konstante të emërtuara të shtypura.

Konstante pa emër

Konstantet e paemërtuara nuk kanë emra, prandaj nuk kanë nevojë të përshkruhen.

Lloji i një konstante të paemërtuar përcaktohet automatikisht, si parazgjedhje:

Çdo sekuencë numrash (mundësisht e paraprirë nga një shenjë "-" ose "+", ose e thyer me një pikë të vetme) interpretohet nga përpiluesi si një konstante pa emër - një numër (numër i plotë ose real);

Çdo sekuencë e karaktereve të mbyllura në apostrofa trajtohet si një konstante pa emër - një varg;

Çdo sekuencë e numrave të plotë ose karaktereve të ndara me presje, e rrethuar me kllapa katrore, perceptohet si një konstante pa emër - një grup.

Përveç kësaj, ekzistojnë dy konstante të veçanta të vërtetë dhe false, të cilat lidhen me llojin e të dhënave boolean.

Shembuj të përdorimit të konstantave të paemërtuar përfshijnë operatorët e mëposhtëm:

real2: = 12,075 + x;

string4: = "abc" + string44;

set5: = * set55;

boolean6: = e vërtetë;

Konstante të pashtypura

Konstantet e emërtuara, siç sugjeron emri i tyre, duhet të kenë një emër. Prandaj, këta emra duhet t'i raportohen përpiluesit, domethënë të përshkruhen në një seksion të veçantë konst.

Nëse nuk specifikoni llojin e një konstante, atëherë nga pamja e saj përpiluesi vetë do të përcaktojë se cilit lloj (bazë) i përket. Çdo konstante e përshkruar tashmë mund të përdoret kur deklarohen konstante të tjera, variabla dhe lloje të dhënash. Këtu janë disa shembuj të përshkrimit të konstanteve të pashtypura me emër:

Konstantet e shtypura

Konstantet e emërtuara të shtypura janë variabla (!) Me një vlerë fillestare që dihet tashmë në kohën kur programi fillon. Prandaj, së pari, konstantet e shtypura nuk mund të përdoren për të përcaktuar konstante të tjera, lloje të të dhënave dhe variabla, dhe së dyti, vlerat e tyre mund të ndryshohen gjatë ekzekutimit të programit.

Përshkrimi i konstantave të shtypura ndjek modelin e mëposhtëm:

konst<имя_константы> : <тип_константы> = <начальное_значение>;

Shembujt e mëposhtëm tregojnë se si ta bëni këtë:

const n: numër i plotë = -10;

b: boolean = e vërtetë;

Ne do të japim shembuj të konstantave të shtypura të llojeve të tjera ndërsa studiojmë llojet përkatëse të të dhënave.

Llojet e të dhënave Pascal

Përpiluesit Pascal kërkojnë që informacioni rreth sasisë së memories së nevojshme për ekzekutimin e një programi të jepet përpara ekzekutimit të një programi. Për ta bërë këtë, në seksionin që përshkruan variablat (var), duhet të listoni të gjitha variablat e përdorur në program. Përveç kësaj, ju gjithashtu duhet t'i tregoni përpiluesit se sa memorie do të zërë secila prej këtyre variablave.

E gjithë kjo mund t'i komunikohet programit thjesht duke specifikuar llojin e ndryshores së ardhshme. Duke pasur informacion për llojin e një ndryshoreje, përpiluesi "kupton" sa bajt duhet të ndahen për të, çfarë veprimesh mund të kryhen me të dhe në çfarë ndërtimesh mund të marrë pjesë.

Për lehtësinë e programuesve, ka shumë lloje standarde të të dhënave në gjuhën Pascal, plus aftësinë për të krijuar lloje të reja të dhënash bazuar në ato ekzistuese (standarde ose, përsëri, të përcaktuara nga vetë programuesi), të cilat quhen të ndërtuara.

Ndarja në lloje bazë dhe të ndërtuara të të dhënave në Pascal është paraqitur në tabelë:

Llojet e të dhënave rendore (diskrete).

Llojet e të dhënave të adresës

Llojet e strukturuara të të dhënave

Llojet e të dhënave aritmetike

Llojet bazë të të dhënave

Logjike

Karakteri

Reale

Atypisi

tregues i indeksuar

Llojet e ndërtuara

Të numërueshme

javë = (su, mo, tu, ne, th, fr, sa);

Treguesi i shtypur

Array

Varg vargu

Regjistro rekord

Procedurale

Objekt

Intervali (vargu)

Llojet e të dhënave të ndërtuara nga programuesi

Llojet e të dhënave rendore

Ndër llojet bazë të të dhënave, dallohen llojet rendore. Ky emër mund të justifikohet në dy mënyra:

1. Çdo element i tipit rendor mund të shoqërohet me një numër unik (rendor). Vlerat numërohen duke filluar nga zero. Përjashtim bëjnë llojet e të dhënave shortint, integer dhe longint. Numri i tyre përkon me vlerat e elementeve.

2. Përveç kësaj, mbi elementet e çdo lloji rendor përcaktohet një rend (në kuptimin matematikor të fjalës), i cili varet drejtpërdrejt nga numërimi. Kështu, për çdo dy elementë të një tipi rendor, mund të thuash me siguri se cili prej tyre është më i vogël dhe cili është më i madh.

Rutina standarde për trajtimin e llojeve të të dhënave rendore

Vetëm për vlerat e llojeve rendore, përcaktohen funksionet dhe procedurat e mëposhtme:

1. Funksioni ord (x) kthen numrin rendor të vlerës së ndryshores x (në lidhje me llojin të cilit i përket ndryshorja x).

2. Funksioni pred (x) kthen vlerën para x-it (nuk zbatohet për elementin e parë të tipit).

3. Funksioni succ (x) kthen vlerën pas x (nuk zbatohet për elementin e fundit të tipit).

4. Procedura inc (x) kthen vlerën pas x (për llojet e të dhënave aritmetike, kjo është ekuivalente me operatorin x: = x + 1).

5. Procedura inc (x, k) kthen vlerën kth pas x (për llojet e të dhënave aritmetike, kjo është ekuivalente me operatorin x: = x + k).

6. Procedura dec (x) kthen vlerën që i paraprin x (për llojet e të dhënave aritmetike, kjo është ekuivalente me operatorin x: = x-1).

7. Procedura dec (x, k) kthen vlerën k-të para x-it (për llojet e të dhënave aritmetike, kjo është ekuivalente me operatorin x: = x-k).

Në pamje të parë, duket se rezultati i përdorimit të procedurës inc (x) përkon plotësisht me rezultatin e përdorimit të funksionit succ (x). Sidoqoftë, ndryshimi midis tyre shfaqet në kufijtë e diapazonit të lejuar. Funksioni succ (x) është i pazbatueshëm për elementin maksimal të tipit, por procedura inc (x) nuk do të gjenerojë asnjë gabim, por, duke vepruar sipas rregullave të mbledhjes së makinës, do të shtojë një njësi tjetër në numrin e elementit. Numri, natyrisht, do të dalë jashtë rrezes dhe, për shkak të shkurtimit, do të kthehet në numrin e vlerës minimale të diapazonit. Rezulton se procedurat inc () dhe dec () perceptojnë çdo lloj rendor sikur të ishte "i mbyllur në një unazë": menjëherë pas të fundit përsëri vjen vlera e parë.

Le të shpjegojmë gjithçka që është thënë me një shembull. Për llojin e të dhënave

lloji i gjashtëmbëdhjetë = 0..15;

Përpjekja për të shtuar 1 në 15 do të prodhojë rezultatin e mëposhtëm:

Njësia fillestare do të jetë e prerë, dhe për këtë arsye inc (15) = 0.

Një situatë e ngjashme në kufirin e poshtëm të diapazonit të lejuar të një lloji arbitrar të të dhënave rendore vërehet për procedurën dec (x) dhe funksionin pred (x):

dec (min_element) = max_element

Llojet e të dhënave që lidhen me rendoren

1. Lloji boolean ka dy vlera: false dhe true, dhe barazitë e mëposhtme janë të vërteta për to:

ord (e gabuar) = 0, ord (e vërtetë) = 1, e rreme

pred (e vërtetë) = e rreme, succ (e rreme) = e vërtetë,

inc (e vërtetë) = false, inc (false) = e vërtetë,

dec (e vërtetë) = false, dec (false) = e vërtetë.

2. Tipi i karakterit char përmban 256 karaktere të tabelës së zgjeruar ASCII (për shembull, "a", "b", "i", "7", "#"). Numri i karaktereve i kthyer nga ord () është i njëjtë me numrin e karaktereve në tabelën ASCII.

3. Llojet e të dhënave të plota përmblidhen në një tabelë:

Lloji i të dhënave

Numri i bajteve

Gama

2147483648..2147483647

4. Llojet e të dhënave të numëruara specifikohen në seksionin tip me numërim të qartë të elementeve të tyre. Për shembull:

lloji javë = (diell, e hënë, e martë, e mërkurë, e enjte, e premte, e shtunë)

Kujtojmë se për këtë lloj të dhënash:

inc (sat) = diell, dhjetor (diell) = u ul.

5. Llojet e të dhënave të intervalit specifikohen vetëm nga kufijtë e diapazonit të tyre. Për shembull:

lloji muaj = 1..12;

budni = mon..fri;

6. Llojet e të dhënave, të ndërtuara nga programuesi, përshkruhen në seksionin tip sipas shabllonit të mëposhtëm:

lloji<имя_типа> = <описание_типа>;

Për shembull:

shkruani lat_bukvy = "a" .. "z", "A" .. "Z";

Llojet bazë të të dhënave janë standarde, kështu që nuk ka nevojë t'i përshkruani ato në seksionin e tipit. Sidoqoftë, nëse dëshironi, mund ta bëni këtë, për shembull, duke dhënë përkufizime të gjata emra të shkurtër. Le të themi duke prezantuar një lloj të ri të dhënash

tip int = numër i plotë;

mund ta shkurtoni pak tekstin e programit.

Llojet reale të të dhënave

Kujtoni se këto lloje të të dhënave janë aritmetike, por jo rendore.

Lloji i të dhënave

Numri i bajteve

Gama (vlera absolute)

1.5*10-45..3.4*1038

2.9*10-39..1.7*1038

5.0*10-324..1.7*10308

3.4*10-4932..1.1*104932

Llojet e të dhënave të ndërtuara

Këto lloje të dhënash (së bashku me operacionet e përcaktuara për to) do t'i shqyrtojmë më tej gjatë disa leksioneve.

Operacionet dhe Shprehjet

Veprimet aritmetike

Le të flasim për operacionet - veprime standarde të lejuara për variablat e një ose një tjetër lloji bazë të të dhënave. Baza do të formohet nga veprimet aritmetike dhe logjike.

Shënim: Të gjitha operacionet e mëposhtme (përveç unary "-" dhe jo) kërkojnë dy operandë.

1. Operacionet logjike (dhe - logjike DHE, ose - logjike OSE, jo - logjike NOT, xor - ekskluzive OR) janë të zbatueshme vetëm për vlerat e tipit boolean. Ato gjithashtu rezultojnë në vlera të tipit boolean. Këtu janë tabelat e vlerave për këto operacione:

e vërtetë e rreme e vërtetë

false false false

e vërtetë false false

2. Operacionet e krahasimit (=,<>, >, <, <=, >=) janë të zbatueshme për të gjitha llojet e bazës. Rezultatet e tyre janë gjithashtu vlera boolean.

3. Veprimet e aritmetikës me numra të plotë janë të zbatueshme vetëm për llojet e numrave të plotë. Rezultati i tyre është një numër i plotë, lloji i të cilit varet nga llojet e operandëve.

a div b - pjesëtimi i plotë i a me b (ndoshta nuk ka nevojë të kujtojmë se ndarja me 0 është e ndaluar, kështu që në raste të tilla operacioni gjeneron një gabim). Rezultati do të jetë i tipit të të dhënave të përbashkët për llojet të cilave u përkasin operandët.

Për shembull, (shortint div byte = integer). Kjo mund të shpjegohet si më poshtë: numri i plotë është lloji minimal, i të cilit si bajt dhe shkurtesa janë nënbashkësi.

a mod b - duke marrë pjesën e mbetur kur pjesëtohet a me b tërësisht. Lloji i rezultatit, si në rastin e mëparshëm, përcaktohet nga llojet e operandëve, dhe 0 është një vlerë e ndaluar për b. Ndryshe nga modaliteti i operacionit matematik, i cili gjithmonë rezulton në një numër jo negativ, shenja e rezultatit të modës së funksionimit "programues" përcaktohet nga shenja e operandit të tij të parë. Kështu, nëse në matematikë (-2 mod 5) = 3, atëherë kemi (-2 mod 5) = -2.

a shl k - zhvendos vlerën e a me k bit majtas (kjo është ekuivalente me shumëzimin e vlerës së ndryshores a me 2k). Rezultati i operacionit do të jetë i të njëjtit lloj si operandi (ët) e parë.

a shr k - zhvendos vlerën e a me k bit djathtas (kjo është ekuivalente me ndarjen e vlerës së ndryshores a me 2k plotësisht). Rezultati i operacionit do të jetë i të njëjtit lloj si operandi (ët) e parë.

dhe, ose, jo, xor janë operacione aritmetike binare që punojnë me bitet e paraqitjes binare të numrave të plotë, sipas të njëjtave rregulla si veprimet e tyre logjike përkatëse.

4. Veprimet e përgjithshme aritmetike (+, -, *, /) janë të zbatueshme për të gjitha llojet aritmetike. Rezultati i tyre i përket llojit të të dhënave të përbashkët për të dy operandët (përjashtimi i vetëm është operacioni i ndarjes fraksionale /, rezultati i të cilit është gjithmonë i llojit të të dhënave reale).

Operacione të tjera

Ka operacione të tjera që janë specifike për vlerat e disa llojeve standarde të të dhënave Pascal. Ne do t'i shqyrtojmë këto operacione në seksionet përkatëse:

#, në, +, *,: shih leksionin 5 “Simbolet. Vargjet. grupe "

@, ^: shih Leksionin 7, "Adresat dhe treguesit"

Funksionet standarde aritmetike

Funksionet standarde aritmetike janë gjithashtu të lidhura me veprimet aritmetike. Ne ofrojmë një listë të tyre me një përshkrim të shkurtër në tabelë.

Funksioni

Përshkrim

Lloji i argumentit

Lloji i rezultatit

Vlera (moduli) absolute e një numri

Aritmetika

Përputhet me llojin e argumentit

Tangjent hark (në radianë)

Aritmetika

Reale

Kosinus (në radianë)

Aritmetika

Reale

Ekspozues (ish)

Aritmetika

Reale

Marrja e pjesës thyesore të një numri

Aritmetika

Reale

Marrja e pjesës së plotë të një numri

Aritmetika

Reale

Logaritmi natyror (baza e)

Aritmetika

Reale

Kontrolli i numrave tek

Kuptimi i numrit

Reale

Rrumbullakimi në numrin e plotë më të afërt

Aritmetika

Rrumbullakimi poshtë - në numrin e plotë më të vogël më të afërt

Aritmetika

Sinus (në radianë)

Aritmetika

Reale

katrore

Aritmetika

Reale

Nxjerrja e rrënjës katrore

Aritmetika

Reale

Shprehjet aritmetike

Të gjitha veprimet aritmetike mund të kombinohen me njëri-tjetrin - natyrisht, duke marrë parasysh llojet e të dhënave të lejuara për operandët e tyre.

Operandët e çdo operacioni mund të jenë variabla, konstante, thirrje funksioni ose shprehje të bazuara në operacione të tjera. Të gjitha së bashku quhet shprehje.

Shembuj të shprehjeve aritmetike:

(x<0) and (y>0) është një shprehje, rezultati i së cilës është i tipit boolean;

z shl abs (k) - operandi i dytë është një thirrje standarde e funksionit;

(x mod k) + min (a, b) + trunc (z) - një kombinim i veprimeve aritmetike dhe thirrjeve të funksionit;

tek (rrumbullakët (x / abs (x))) është një shprehje me shumë nivele.

Rendi i llogaritjes

Nëse në shprehje vendosen kllapa, atëherë llogaritjet kryhen sipas renditjes: sa më e vogël të jetë thellësia e foleve të kllapave, aq më vonë llogaritet operacioni i mbyllur në to. Nëse nuk ka kllapa, atëherë së pari llogariten vlerat e operacioneve me përparësi më të lartë, pastaj ato me përparësi më të ulët. Disa operacione të njëpasnjëshme me të njëjtin prioritet llogariten në sekuencën "nga e majta në të djathtë".

Tabela 2.1. Prioritetet (për të gjithë) të operacioneve Pascal

Artikujt kryesorë të lidhur