Turbo Pascal – 11. lekce
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Turbo Pascal – 11. lekceTurbo Pascal – 11. lekce

 

Turbo Pascal – 11. lekce

Google       Google       16. 4. 2006       33 168×

V minulém díle jsme si vysvětlili, jak pracovat s textovými soubory. Doba jde ovšem dopředu a nám se víc budou hodit soubory typové a probereme si i soubory netypové.

Soubory v Pascalu jsou takřka nepostradatelné při větších programech, jak jsme si již vysvětlili minule. Ovšem řešit všechno přes textové soubory je neefektivní a také bezpečnost je velmi nízká. Proto si dnes vysvětlíme typové soubory.

Typové soubory

Typové soubory vnesly do programování novou šťávu, protože v sobě uchovávají informace o proměnných, a tudíž s nimi lze pracovat velmi flexibilně.

Všechny složky typových souborů mají stejnou délku a následují postupně za sebou. Tato vlastnost nám umožňuje volně se pohybovat po souboru, a to následujícími způsoby:

  • Sekvenční přístup (postupný)
  • Přímý přístup ke složkám podle jejich pořadového čísla, kde první složka souboru má pořadové číslo 0
  • Kombinovaný přístup (kombinace obou předchozích metod)

Jednotlivé přístupy si vysvětlíme dále. Nyní se pustíme do samotného zavedení a práce se souborem.

Deklarace souboru:

Jak jsme již z Pascalu zvyklí, nejprve si musíme si všechno nadeklarovat v deklarační části a typový soubor není výjimkou. K deklaraci použijeme záznam (vysvětleno v lekci 9). Poté se soubor nadeklaruje jako soubor, jehož typ je záznam: soubor: File of lide;

Nejlepší bude uvést si příklad:


Program typsoubor;
uses crt;
Type lide = Record
              jmeno:string;
              vek:integer;
              vyska:real;
            end;  
var soubor : File of lide;
Begin
end.

Takto jsme si tedy nadeklarovali soubor a jeho typ, který budeme používat. Znamená to, že soubor, se kterým budeme pracovat, je typový a bude pracovat jen s proměnnými ze záznamu lidé.

První kroky se souborem

Jak jsme si již vysvětlili v minulé lekci, první, co musíme udělat se souborem, je přiřazení jména souboru, tzn. název souboru na disku, na který se bude zapisovat. To učiníme příkazem Assign: Assign (název proměnné souboru,'název souboru');. V našem případě takto:


Program typsoubor;
uses crt;
Type lide = Record
              jmeno:string;
              vek:integer;
              vyska:real;
            end;  
var soubor : File of lide;
Begin
  clrscr;
  Assign(soubor,'Lide.dat');
end.

U typových souborů neplatí žádné pravidlo pro příponu souboru. Můžete si sami zvolit, jaký typ souboru chcete použít. V našem příkladu budeme používat soubor Lide.dat

Máme tedy přiřazené jméno a jediné, co nám zbývá, abychom mohli se souborem pracovat, je soubor otevřít.

Otevření souboru

Máme dvě metody otevření souboru a každá má jinou funkci, tak se na ně podíváme:

Rewrite
Pokud soubor na disku neexistuje, je vytvořen a připraven na zápis. Pokud soubor již existuje, přepíše se celý novými daty. Syntaxe: Rewrite(proměnná souboru)
Reset
Otevření existujícího souboru na disku. Pokud soubor neexistuje, program zahlásí chybu. Syntaxe: Reset(proměnná souboru)

Oba typy otevření souboru umožňují číst i zapisovat ze souboru.

V minulé lekci jsme se naučili jak ošetřit neexistující soubor na disku a to samé použijeme i zde:


Program typsoubor;
uses crt;
Type lide = Record
              jmeno:string;
              vek:integer;
              vyska:real;
            end;  
var soubor : File of lide;
Begin
  clrscr;
  Assign(soubor,'Lide.dat');
  {$I-}   (* Vypnutí vnitřní kontroly chyb *)
    Reset(soubor); (* Zkouška otevření souboru *)
    if IOResult<>0 then Rewrite(soubor);  (* Ověření dostupnosti souboru *)
  {$I+}  (* Znovuzapnutí vnitřní kotroly chyb *)
end.

Nyní jsme otevřeli soubor. Pokud soubor na disku neexistuje, založili jsme nový.

Úplně posledním krokem v práci se souborem je samozřejmě zavření souboru. Pamatujte si, že je nezbytné vždy soubor uzavřít. Uzavření provedeme opět příkazem Close(proměnná souboru);.


Program typsoubor;
uses crt;
Type lide = Record
              jmeno:string;
              vek:integer;
              vyska:real;
            end;  
var soubor : File of lide;
Begin
  clrscr;
  Assign(soubor,'Lide.dat');
  {$I-}   
   Reset(soubor); 
   if IOResult<>0 then Rewrite(soubor);  
  {$I+}  
  Close(soubor);
end.

Vše nezbytné pro samotnou práci se soubory jsme si tedy vysvětlili a můžeme se pustit do samého těla práce.

Práce se soubory

Operace, které můžeme provádět se soubory, jsou vstupní, výstupní a ostatní operace.

Výstupní operace

Výstupní operace znamená zapisovat do souboru, pohybovat se v souboru a další funkce pro práci se soubory:

Write
Zapisování hodnot (proměnných) do souboru. Syntaxe: Write(soubor,promenna);
Seek
Přesunutí v souboru na určitou složku souboru. Syntaxe: Seek(soubor,pořadí složky);
Eof
Zjištění konce souboru. Pokud se nacházíte na konci souboru, vrací hodnotu TRUE. Syntaxe: Eof(soubor);
FilePos
Vrací hodnotu (číslo) složky, ve které se právě nacházíte. Syntaxe: FilePos(soubor);
FileSize
Vrací hodnotu (počet) všech složek v souboru. Syntaxe: FileSize(soubor);
Truncate
Smazání všech složek od aktuální až do konce souboru. Syntaxe: Truncate(soubor);

Toto jsou základní výstupní operace se soubory. My je použijeme v našem případě a zapíšeme si jednu složku do souboru. Nejdříve si přidáme do deklarační části proměnnou, která má typ jako soubor.


Program typsoubor;
uses crt;
Type lide = Record
              jmeno:string;
              vek:integer;
              vyska:integer;
            end;  
var soubor : File of lide;
    clovek : lide;  
Begin
  clrscr;
  Assign(soubor,'Lide.dat');
  {$I-}   
   Reset(soubor); 
   if IOResult<>0 then Rewrite(soubor);  
  {$I+}  
  clovek.jmeno:='Tomas';
  clovek.vek:=17;
  clovek.vyska:=183;
  Write(soubor,clovek);
  Close(soubor);
end.

Zapsali jsme si hodnotu do souboru. Nyní ji můžeme ze souboru přečíst.

Vstupní operace

Vstupní operace je pouze jedna a je to čtení ze souboru.

Read
Vyčte ze souboru složku, kterou rozdělí do proměnných podle záznamu. Syntaxe: Read(soubor,promenna);

Zkusíme si námi vložené údaje opět vyčíst.


Program typsoubor;
uses crt;
Type lide = Record
              jmeno:string;
              vek:integer;
              vyska:integer;
            end;  
var soubor : File of lide;
    clovek : lide;  
Begin
  clrscr;
  Assign(soubor,'Lide.dat');
  {$I-}   
   Reset(soubor); 
   if IOResult<>0 then Rewrite(soubor);  
  {$I+}  
  clovek.jmeno:='Tomas';
  clovek.vek:=17;
  clovek.vyska:=183;
  Write(soubor,clovek);
  Close(soubor);
 
  Reset(soubor);
  Read(soubor,clovek);
  Close(soubor);
end.

Vyčetli jsme ze souboru naše údaje. Jistě jste si všimli, že před čtením jsme museli soubor uzavřit. Na to nikdy nezapomeňte, protože jinak se vám do souboru neuloží změny.

Poslední dvě oprace, o kterých si povíme s typovými soubory:

Erase
Smazání souboru z disku. Syntaxe: Erase(soubor);
Rename
Přejmenování souboru. Syntaxe: Rename(soubor,'nové jméno');

Naučili jsme se tedy veškerou práci s typovými soubory a můžeme se jen v rychlosti podívat na netypové.

Netypové soubory

Netypové soubory se používají hlavně tehdy, když dopředu nevíme, jaký typ souboru použijeme nebo máme k dispozici. Netypové soubory se hlavně používají pro přístup ke všem typům souborů na disku.

Netypovým souborům nechci ve svém kurzu přikládat zvláštní pozornost. Já sám jsem je nikdy nepoužil. S netypovými soubory se pracuje skoro stejně jako s typovými soubory s rozdílem dvou příkazů:

BlockWrite
Přečte z netypového souboru určitý sektor dat. Syntaxe: BlockWrite(soubor,promenna,počet,celkem);
BlockRead
Chová se stejně jako BlockWrite, ale místo zapisování čte ze souboru. Syntaxe: BlockRead(soubor,proměnná,počet,celkem);

Ostatní funkce jsou stejné nebo velice podobné jako u typových souborů, ale s netypovými soubory se v mém kurzu nesetkáte. Pokud by byl opravdu velký zájem, mohl bych napsat něco jako lekci navíc o těchto souborech.

Jsme tedy u konce dnešní lekce se soubory. Čeká nás už jen domácí úkol.

Domácí úkol

Použijte svůj domácí úkol z 9. lekce se záznamy. Záznam zapište do soubru (všech 6) a pak je všechny opět vypište. Aby někdo nepodváděl, tak na zapsání a vypsání záznamů si zvolte dvě proměnné.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
Autor programuje v Pascalu.

Nové články

Obrázek ke článku Stavebnice umělé inteligence 1

Stavebnice umělé inteligence 1

Článek popisuje první část stavebnice umělé inteligence. Obsahuje lineární a plošnou optimalizaci.  Demo verzi je možné použít pro výuku i zájmovou činnost. Profesionální verze je určena pro vývojáře, kteří chtějí integrovat popsané moduly do svých systémů.

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý