pondelok 26. mája 2014

Programovanie (dátové typy)


  • charakterizujte štruktúrované dátové typy pole, záznam, množina, súbor 
  • definujte dátový typ pole, základné vlastnosti, deklarácia poľa 
  • definujte dátový typ záznam, základné vlastnosti, deklarácia záznamu 
  • definujte dátový typ množina, základné vlastnosti, deklarácia množiny 
  • definujte typ dátový typ súbor, základné vlastnosti, deklarácia súboru 
  • napíšte program podľa zadania 

Štruktúrovaný dátový typ je zoskupením niekoľkých jednoduchších dátových typov. Môže byť homogénny (všetky prvky sú rovnakého typu, napr. pole), alebo heterogénny (zložený z rôznych dátových typov).

Znakové reťazce


Znakový reťazec je údajový typ, ktorý obsahuje nejakú postupnosť znakov (Char). Znaky v znakovom reťazci (t.j. v postupnosti znakov) sú očíslované od 1 až po momentálnu dĺžku reťazca. Túto dĺžku zistíme pomocou štandardnej funkcie Length.

Premennú typu znakový reťazec deklarujeme takto:

var Retazec: string;


Pole


Ak napríklad potrebujeme zaznamenať 1000 čísel, určite ich nezačneme ukladať do tisícich ručne vytvorených premenných nazvaných prem000, prem001, prem002,... Využijeme pole a jediným riadkom ich deklarujeme. Pole sa skladá z veľa "jednoduchších" premenných, tzv. prvkov poľa. Všetky tieto prvky sú rovnakého typu. Pristupujeme k nim (selekcia) pomocou, tzv. indexu. Typom indexu môže byť ľubovoľný ordinálny typ. Typom prvkov poľa môže byť ľubovoľný typ. Štruktúra pole v pamäti zaberá toľko miesta, koľko zaberá jeden prvok krát počet prvkov poľa, t.j. počet rôznych hodnôt typu indexu.

var
 názov_poľa: array[začiatok..koniec]
  of typ_premenných;

Pole číslic

Celé číslo môžeme rozložiť po cifrách do prvkov poľa. Takto môžeme reprezentovať aj oveľa väčšie čísla ako povoľuje Integer (hoci aj 1000-ciferné). Keď zvládneme naprogramovať niektoré aritmetické operácie nad takýmito veľkými číslami, môžeme veľmi presne uskutočniť niektoré výpočty, s ktorými sú inak problémy, napr. faktoriál, Fibonacciho čísla a pod.

Pole znakových reťazcov

Údajová štruktúra pole môže mať prvky ľubovoľného typu, teda aj znakový reťazec. S takýmito premennými, ktoré sú prvkami poľa, sa pracuje rovnako ako s jednoduchými premennými typu reťazec.

Záznam


Záznamy v Pascale sa dajú označiť za predchodcov objektov. Sú to premenné, obsahujúce podradené premenné rôzneho typu.

Máme dve možnosti - buď deklarujeme priamo premennú:

var
 Zaznam: record
  Vlastnost: integer;
  InaVlastnost: string;
 end;

alebo najprv definujeme nový typ a potom vytvoríme premennú tohto typu. Využijeme druhú možnosť.

program ludia;
type
 TClovek = record
  Meno, Priezvisko: string; {2 retazce}
  RokNarodenia: word; {cele cislo}
 end;
var
 Ujo: TClovek;

Množiny


Typ množina je taký údajový typ, ktorý v pascale umožňuje pracovať s niektorými typmi množín podobným spôsobom ako je to obvyklé v matematike. V pascale je povolené vytvárať množiny zložené len z prvkov rovnakého a to niektorého ordinálneho typu - hovoríme mu bázový (základný) typ. Napr. môžeme vytvoriť množinu znakov, množinu malých celých čísel, množinu dní v týždni a pod. Nemôžeme ale vytvoriť množinu, ktorá bude obsahovať napr. čísla aj znaky. Množina môže obsahovať celé čísla alebo iné ordinálne premenné, všetky však musia byť rovnakého typu. Počet prvkov je obmedzený na 256. Ordinálne hodnoty sa môžu pohybovať od 0 do 255.

Definícia množiny sa vždy skladá aj z definície jej bázového typu, napr. zápis

type
  TMnozina = set of 1..100;

var
  A, B: TMnozina;



Súbor - File

Ako pracujeme s textovým súborom používame funkcie read a write.

Zoznam funkcií pre prácu so súbormi 

- najskôr musím súbor definovať napr. var t:TextFile;
- potom musíme premennej súbor priradiť napr. AssignFile(t,'text.txt');
- nasleduje otvorenie súboru:

  • na čítanie Reset(t); 
  • na zápis (ak existuje tak sa najskôr vyčistí) Rewrite(t); 


práca so súborom: 

Read(t,........);
Readln(t,........);
Write(t,........);
Writeln(t,........);

ukončenie práce so súborom CloseFile(t);


- - znamená End of Line (Koniec riadku) a - End of File (koniec súboru)
- riadok textového súboru = postupnosť znakov (aj prázdna) ukončená

Takže ak vidíme:
xyz
zy
x
Tak v skutočnosti to je:
|x|y|z|| |z|y||x|

Čítanie zo súboru 

Príkaz Read(t,premenná); načíta zo súboru 1 znak zapíše ho do premennej a posunie sa o 1 znak ďalej (doprava). Príkazom readln(t) preskočíme všetky znaky v súbore až za najbližšiu značku (na konci súboru nerobí nič). Príkaz readln(t,z) je skrátený tvar pre read(t,z); readln(t);.Teraz konkrétny príklad (zistíme počet medzier v súbore text.txt):

var 
t:TextFile; 
z:char; 
pocet:integer; 
begin 
AssignFile(t,'text.txt'); Reset(t); 
pocet:=0; 
while not Eof(t) do begin 
read(t,z); 
if z=' ' then inc(pocet); 
end; 
CloseFile(t); 
Memo1.Lines.Add('Počet medzier v súbore '+IntToStr(pocet)); 
end; 

Žiadne komentáre:

Zverejnenie komentára