Add Papers Marked0
Paper checked off!

Marked works

Viewed0

Viewed works

Shopping Cart0
Paper added to shopping cart!

Shopping Cart

Register Now

internet library
Atlants.lv library
FAQ
5,99 € Add to cart
Add to Wish List
Want cheaper?
ID number:613975
 
Author:
Evaluation:
Published: 01.06.2009.
Language: Latvian
Level: Secondary school
Literature: n/a
References: Not used
Table of contents
Nr. Chapter  Page.
I.  VISPĀRĒJĀ DAĻA (Ieraksti)    4
II.  SPECIĀLĀ DAĻA    9
II.1.  Uzdevuma nostādne    9
II.2.  Ieejas dati    9
II.3.  Izejas dati    10
II.4.  Algoritma apraksts    10
II.4.1.  Galvenā programma    10
II.4.2.  Procedūra playsnd    11
II.4.3.  Procedūra UpdateProgressBar    11
II.4.4.  Procedūra MouseInit    11
II.4.5.  Funkcija CanInput    11
II.4.6.  Procedūra DrawDigit    11
II.4.7.  Procedūra FillArray    11
II.4.8.  Procedūra DrawSelect    12
II.4.9.  Procedūra DrawHint    12
II.4.10.  Procedūra DrawGrid    12
II.4.11.  Procedūra GridAdd    12
II.4.12.  Procedūra CellDel    13
II.4.13.  Procedūra CellDraw    13
II.4.14.  Procedūra GameStart    13
II.4.15.  Procedūra GameRules    14
II.4.16.  Procedūra GameScores    14
II.4.17.  Procedūra MenuInit    14
II.4.18.  Procedūra MenuMain    15
II.5.  Lietotāja instrukcija    15
III.  PIELIKUMI    17
III.1.  Programmas teksts    17
III.2.  Algoritma blokshēma    27
III.2.1.  Pamatprogrammas blokshēma    27
III.2.2.  Procedūra playsnd    28
III.2.3.  Procedūra UpdateProgressBar    29
III.2.4.  Procedūra MouseInit    30
III.2.5.  Funkcija CanInput    31
III.2.6.  Procedūra DrawDigit    32
III.2.7.  Procedūra DrawGrid    33
III.2.8.  Procedūra GridAdd    34
III.2.9.  Procedūra GameStart    35
III.2.10.  Procedūra GameRules    38
III.2.11.  Procedūra GameScores    39
III.3.  Ieejas/izejas datu piemērs    40
Extract

Radītāju vērtības var inkrementēt un dekrementēt, izmantojot atbilstoši Inc un Dec, turklāt tipizētais radītājs tiek palielināts vai samazināts par viņam atbilstoša tipa izmēra vērtību. Praksē tas nozīmē ka, ja atmiņā pēc kārtas tiek izvietoti vienāda tipa mainīgie, un radītājs norāda uz pirmo, tad pēc vērtības palielināšanas ar Inc procedūras palīdzību radītājs noradīs uz nākamo mainīgo. Ar radītājiem atļauts lietot salīdzināšanu un vienādību (=) un nevienādību (<>), citi nav pieļaujami.
Tā kā palaižot programmu rādītāji satur norādi uz nil – rādītāju konstante, kas norāda uz adresi atmiņā $0000:$0000, šos rādītājus vajag inicializēt ar procedūru New1. Procedūra New atrod brīvo atmiņas apgabalu, kur var glabāt nepieciešamos datus un rādītājā saglabā šī atmiņas apgabala adresi, ja vairs brīvās atmiņas nav, tad tiek radīta izpildlaika kļūda un programma tiek pārtraukta. Aizņemto atmiņu var atbrīvot ar Dispose2 palīdzību. Gan New, gan Dispose ir tikai viens parametrs – rādītājs, ar kuru tiek veikta atbilstoša darbība.
2. piemērā ir vienkārša programma ar rādītāju izmantošanu.
type
PInteger = ^Integer; {izveidojam PInteger tipu, kas būs rādītāja tips, kas norāda uz Integer skaitļiem}

var
a: PInteger; {paziņojam PInteger rādītāju}
b: ^Integer; {paziņojam rādītāju, kas norādīs uz Integer tipa skaitli}

begin
New(a);
New(b); {izveidojam jaunus dinamiskos mainīgos}
a^ := 1; {a := 1; rakstīt nedrīkst, jo a ir rādītājs nevis Integer}
b^ := 2;
Inc(a^);
WriteLn('a = ', a^); {izvada a = 2}
Dispose(a);
Dispose(b); {atbrīvojam atmiņu}
{WriteLn('b = ', b^); radis kļūdu, jo b atkal norāda uz nil}
end.
Pastāv iespēja izmantot netipizētos radītājus, kas nenorāda ne uz kāda noteikta tipa dinamisko mainīgo, bet vienkārši uz rezervēto atmiņas apgabalu. Šādi rādītāji ir noderīgi gadījumos, kad rezervēt atmiņu nenoteiktam datu tipam, piemērām, strādājot ar grafiku to ir ērti izmantot attēla saglabāšanai. Šādus rādītājus var sadaļā apzīmē vienkārši ar Pointer. Tā kā par šiem nav zināmi tādi dati, ka norādāmo dinamisko datu izmērs, tad tos nav iespējam izmantot ar New un Dispose procedūrām. To vietā ir jāizmanto GetMem3 atmiņas rezervēšanai, un FreeMem4 atmiņas atbrīvošanai. Abām procedūrām ir divi vienādi parametri. Pirmais parametrs ir rādītājs, un otrs ir atmiņas apgabala izmērs, uz kuru norāda šis rādītājs. Programmētājam pašam ir jāseko, lai gan GetMem, gan FreeMem parametros tiktu pierakstīts vienāds izmērs ar atbilstošu rādītāju.
3. piemērā ir programmā, kurā ir pielietots netipizēts rādītājs kopumā ar GetImage procedūru.
uses Graph;
var
Gd, Gm: Integer;
P: Pointer; {netipizētais rādītājs}
Size: Word;
begin
Gd := Detect;
InitGraph(Gd, Gm, ''); {grafikas inicializācija}
if GraphResult <> grOk then
Halt(1); {kļūdas gadījuma parstraucam programmu}
Bar(0, 0, GetMaxX, GetMaxY); {nokrāsojam visu ekrānu}
Size := ImageSize(10, 20, 30, 40); {iegāstam attēla izmēru}
GetMem(P, Size); {rezervejam atmiņu attēla saglabāšanai}
GetImage(10, 20, 30, 40, P^); {saglabājam attēlu}
Readln; {gaidam ENTER}
ClearDevice; {attīram ekrānu}
PutImage(100, 100, P^, NormalPut); {izvadam saglabāto attēlu}
Readln; {gaidam ENTER}
FreeMem(P, Size); {atbrīvojam atmiņu}
CloseGraph; {atslēdzam grafiku}
end.
Darbam ar dinamisko atmiņu ir paredzētas vēl divas procedūras. Ar procedūru Mark1 var saglabāt dinamiskās atmiņas stāvokli. Šai procedūrai tiek norādīts viens rādītājs, kurā arī tiks saglabāta informācija par dinamiskās atmiņas stāvokli. Lai atgrieztu atmiņu saglabātajā stāvoklī jāizmanto procedūra Release2, kurai kā vienīgais parametrs tiek norādīts rādītājs, kurā tika saglabāts atmiņas stāvoklis. Kopā ar šīm abām procedūrām nevajadzētu lietot procedūras FreeMem un Dispose, jo tas var radīt konfliktus.…

Author's comment
Load more similar papers

Atlants

Choose Authorization Method

Email & Password

Email & Password

Wrong e-mail adress or password!
Log In

Forgot your password?

Draugiem.pase
Facebook

Not registered yet?

Register and redeem free papers!

To receive free papers from Atlants.com it is necessary to register. It's quick and will only take a few seconds.

If you have already registered, simply to access the free content.

Cancel Register