Pievienot darbus Atzīmētie0
Darbs ir veiksmīgi atzīmēts!

Atzīmētie darbi

Skatītie0

Skatītie darbi

Grozs0
Darbs ir sekmīgi pievienots grozam!

Grozs

Reģistrēties

interneta bibliotēka
Atlants.lv bibliotēka
5,99 € Ielikt grozā
Gribi lētāk?
Identifikators:613975
 
Autors:
Vērtējums:
Publicēts: 01.06.2009.
Valoda: Latviešu
Līmenis: Vidusskolas
Literatūras saraksts: Nav
Atsauces: Nav
SatursAizvērt
Nr. Sadaļas nosaukums  Lpp.
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
Darba fragmentsAizvērt

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.…

Autora komentārsAtvērt
Parādīt vairāk līdzīgos ...

Atlants

Izvēlies autorizēšanās veidu

E-pasts + parole

E-pasts + parole

Norādīta nepareiza e-pasta adrese vai parole!
Ienākt

Aizmirsi paroli?

Draugiem.pase
Facebook

Neesi reģistrējies?

Reģistrējies un saņem bez maksas!

Lai saņemtu bezmaksas darbus no Atlants.lv, ir nepieciešams reģistrēties. Tas ir vienkārši un aizņems vien dažas sekundes.

Ja Tu jau esi reģistrējies, vari vienkārši un varēsi saņemt bezmaksas darbus.

Atcelt Reģistrēties