Darbs ar datnēm

Preview:

DESCRIPTION

Vienošanās Nr. 2008/0001/1DP/1.2.1.2.2./08/IPIA/VIAA/002. Darbs ar datnēm. Daugavpils Valsts ģimnāzija Edgars Pudulis. Ievads. - PowerPoint PPT Presentation

Citation preview

Darbs ar datnēm

Daugavpils Valsts ģimnāzija

Edgars Pudulis

Vienošanās

Nr. 2008/0001/1DP/1.2.1.2.2./08/IPIA/VIAA/002

Ievads

Atverot Windows katalogu C diskā var redzēt, ka operētājsistēma sastāv no daudzām datnēm, kas noteiktā momentā tiek ielādētas brīvpiekļuves atmiņā. Piemēram nospiežot Start Programs Microsoft Word, tiek aktivizēta datne, kas atrodas

C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE10 mapē ar nosaukumu winword.exe

Lai varētu nolasīt un ierakstīt datus no datnēm, sākumā datne jāsasaista ar datnes mainīgo. Izmantojot šo mainīgo varēs piekļūt datnē esošajiem datiem. Datus un datni sasaista ar Assign palīdzību. Tā vispārīgais pieraksts: Assign (<datnes mainīgais>, <datnes nosaukums>);

Datnes nosaukumā jānorāda pilns ceļš uz datni. Piemēram:             Var datne: Text; Begin Assign (datne, ‘c:\mape\dati.txt’);

Datu sasaiste

Reset (<datnes mainīgais>); - atver sasaistīto datni datu nolasīšanai (šajā gadījumā datnei jau ir jābūt izveidotai). Atverot datni kursors ir tās sākumā.

Rewrite (<datnes mainīgais>); - atver un izveido jaunu datni, gadījumā, ja tāda datne jau eksistē, tās saturs tiek izdzēsts

Close (<datnes mainīgais>); - aizver datni, šo komandu ieteicams vienmēr lietot programmas noslēgumā.

Datnes atvēršana un aizvēršana

Readln(<datnes mainīgais, <programmas mainīgie>) – datu nolasīšanas komanda no datnēm, vienlaicīgi var nolasīt arī vairākus mainīgos. Piemēram: Readln(datne,x,y,z,c);

Write(<datnes mainīgais>,mainīgie) – datu ierakstīšanas komanda datnē. Piemēram:Write(datne, x,’ ‘,y) – ievadām rezultātus datnē atdalot tos ar tukšuma simbolu.

Var izmantot arī Writeln, tad mainīgie datnē tiks ievadīti nevis rindā, bet kolonnā.

Datu nolasīšana un ieraksts

1.uzdevums: Teksta datne text.txt, kas atrodas C:\DATI satur divus skaitļus, kas viens no otra atdalīti ar tukšuma simbolu. Izvadīt uz ekrāna abus skaitļus un šo skaitļu summu.Risinājums: uses crt;var datne:text; x,y :integer; begin clrscr; assign(datne,'c:\dati\text.txt'); reset(datne); readln(datne,x,y); write(x,' ',y,' ',x+y);readln;close(datne);end.

Datnes atvēršana un ieraksts datnē

Nedaudz papildināsim jau iepriekš minēto uzdevumu ar papildus darbībām

2.uzdevums: Teksta datne text.txt, kas atrodas mapē C:\DATI , satur divus skaitļus, kas viens no otra atdalīti ar tukšuma simbolu. Izvadīt uz ekrāna abus skaitļus, bet šo skaitļu reizinājumu izvadīt šīs pašas mapes DATI jaunā datnē rezult.txt

Datnes atvēršana un ieraksts datnē

uses crt;var dat1,dat2:text; x,y :integer;BEGINclrscr; assign(dat1,'c:\dati\text.txt'); assign(dat2,'c:\dati\rezult.txt'); reset(dat1); readln(dat1,x,y); write(x,' ',y); rewrite(dat2); write(dat2,x*y);readln;close(dat1); close(dat2);END.

2.uzdevuma risinājums

3.uzdevums

3.uzdevums: Teksta datne text1.txt, kas atrodas C:\DATI satur trīs skaitļus, kas viens no otra atdalīti ar tukšuma simbolu. Izvadīt datnē rezult.txt lielāko no šiem skaitļiem.

3.uzdevuma risinājumsuses crt;var dat1,dat2:text; x,y,z,L:integer;BEGINassign(dat1,'c:\dati\text.txt');assign(dat2,'c:\dati\rezult.txt');reset(dat1); rewrite(dat2);readln(dat1,x,y,z); If x>y then L:=x else L:=y; If z>L then L:=z;write(dat2,L);close(dat1); close(dat2);END.

Eof (<datnes mainīgais>); funkcija, kuru izmanto strādājot ar datnēm, kas palīdz noteikt kursora atrašanās vietu.  Visbiežāk uzdevumos izmanto tāpēc, lai noteiktu datnes beigas jeb pēdējo elementu.          

Funkcija Eof pieņem vērtību True (patiess), ja kursors atrodas datnes beigās, vai arī gadījumā, ja datne ir tukša.

Visos pārējos gadījumos funkcija pieņem vērtību False (aplams).

Funkcija EOF

4.uzdevums. Datne C:\DATI satur teksta virkni, nolasīt no datnes un izvadīt šo tekstu uz ekrāna.uses crt;var dat1:text; x:char;BEGINclrscr; assign(dat1,'c:\dati\text.txt'); reset(dat1); While NOT eof(dat1) do

BEGIN Read(dat1,x); Write(x); END;

readln;close(dat1);END.

Piemērs ar funkciju EOF

Kamēr nav pēdējais datnes elements...,

...nolasi kārtējo elementu no datnes un izvadi uz ekrāna

Append (<datnes mainīgais>); izmanto teksta datņu atvēršanai. Šī procedūra atver eksistējošu datni datu ievadam datnes beigās. Atverot datni ar šo komandu, kursors atrodas datnes beigās nevis sākumā kā tas notiek ar RESET. Šo procedūru lieto, ja nepieciešams papildināt kādu datni.

Eoln (<datnes mainīgais>); izmanto lai noteiktu, vai ir sasniegtas datnē ierakstītas teksta rindiņas beigas. Funkcija Eoln atgriež vērtību True, ja kursors atrodas kādas teksta datnes rindas beigās vai arī ja datne ir tukša, bet visos citos gadījumos - vērtību False.

Papildus funkcijas teksta datņu apstrādei

4.uzdevums ar datnes papildināšanu.

Izveidojiet datni mapē C:\DATI text.txt un ierakstiet šajā datnē tekstu “Pavasaris ir “.

Papildināt šo ierakstu ar jebkuru turpinājumu, kurš tiek ievadīts no tastatūras, piemēram, “jauks gadalaiks”.

Pēc programmas izpildes atveriet datni text.txt un pārliecinieties vai tā ir papildināta ar Jūsu ievadīto tekstu.

Piemērs ar APPEND

uses crt;var dat1:text; x:string;BEGINclrscr; assign(dat1,'c:\dati\text.txt'); append(dat1);write('Ievadiet turpinajumu teikumam PAVASARIS IR '); Readln(x); write(dat1,x);readln;close(dat1);END.

Piemērs ar APPEND (risinājums)

5.Uzdevums. Divu teksta datņu satura savienošana.

Izveidojiet divas datnes mapē C:\DATI text1.txt un text2.txt ierakstiet pirmajā datnē tekstu

“Pavasaris ir “, bet otrajā datnē “jauks gadalaiks”.

Papildiniet pirmo datni ar otrās datnes tekstu.

Pēc programmas izpildes atveriet datni text.txt, kurai ir jāsatur teikums “Pavasaris ir jauks gadalaiks”.

Piemērs ar EOLN

uses crt; var dat1,dat2:text; x:char;BEGIN assign(dat1,'c:\dati\text1.txt'); assign(dat2,'c:\dati\text2.txt'); append(dat1); reset(dat2);while NOT eoln(dat2) do

BEGIN read(dat2,x); write(dat1,x); END;

readln;close(dat1); close(dat2);end.

Piemērs ar EOLN (risinājums)

6.uzdevums: Teksta datnē text.txt, kas atrodas mapē C:\DATI, pirmajā rindā ir ierakstīts masīva A elementu skaits N un caur vienu tukšuma simbolu skaitlis N1. Katrā nākošajā rindā (vienā kolonnā) ir ierakstīti masīva A elementi no 1 līdz N.

Izvadīt šīs mapes DATI jaunā datnē rezult.txt katra masīva elementa reizinājumu ar skaitli N1 vienā kolonnā (katrā rindā savs skaitlis).

Uzdevums izmantojot masīva elementus

uses crt;var dat1,dat2:text; N,N1,i :integer;a:array [1..50] of integer;BEGINclrscr; assign(dat1,'c:\dati\text.txt'); assign(dat2,'c:\dati\rezult.txt'); reset(dat1); rewrite(dat2); readln(dat1,N,N1); for i:=1 to N do BEGIN readln(dat1,a[ i ]); writeln(dat2,a[ i ]*N1); END;readln;close(dat1); close(dat2);END.

6.uzdevuma risinājums

Paldies par uzmanību!

Recommended