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

Turbo Pascal - 10. lekceTurbo Pascal - 10. lekce

 

Turbo Pascal - 10. lekce

Google       Google       14. 2. 2006       32 353×

Posledně jsme si vysvětlili, jak shromažďovat proměnné a tím si ulehčit práci. Naučili jsme se velmi potřebné metody pro práci se soubory a právě to si vysvětlíme dnes.

Reklama
Reklama

Nejdřív si povíme, jaké Pascal rozlišuje soubory.


Jsou to tyto tři typy:

  • Textové soubory - Text se ukládá ve ,,srozumitelné" podobě člověku a výsledný soubor má stejnou podobu jako normální textový soubor vytvořený v poznámkovém bloku.
  • Typové soubory - Typový soubor nepřečtete bez znalosti použitých proměnných v programu. Do souboru se ukládají veškeré informace o proměnných, proto soubor není ukládaný srozumitelně člověku.
  • Netypové soubory - Asi nejméně používaný formát, do kterého se může uložit cokoliv jakéhokoliv datového typu.

Je nutno dodržovat základní postup práce se soubory:

  • Přiřazení jména souboru
  • Otevření souboru
  • Práce se souborem
  • Uzavření souboru

Měli byste dodržovat pravidlo, že při práci se souborem nebudete otevírat více než dva soubory. Pokud budete pracovat se soubory ihned po ukončení operací, soubor uzavřete! Při otevírání každé počáteční operace se souborem použijte funkci pro ověření přístupnosti souboru.

Dva základní příkazy, jak si jistě domyslíte, jsou pro všechny stejné: pro přiřazení jména souboru a uzavření souboru. Pro přiřazení jména souboru se používá příkaz Assign(nazev_promenne,'Cesta k souboru'); a pro uzavření souboru Close(prirazene_jmeno_souboru);


Textové soubory

Krok po kroku si nyní ukážeme, jak pracovat s textovým souborem. Naprogramujeme si například hru a chceme uložit výsledné skóre do tabulky. Uložení skóre by bylo naprogramováno ve hře jako podprogram, ale já ho jako příklad napíšu jako samostatný program.

Prvním krokem je deklarace proměnné, která nám bude simulovat soubor. Deklaraci provádíme za slůvkem var takhle:


Program skore;
uses crt;
var i,body,vypis:integer;
    soubor:Text;
Begin   
End.

Druhý bod pustupu bude přiřazení jména souboru. Jak jsem výše napsal, provádí se příkazem Assign:


Program skore;
uses crt;
var i,body,vypis:integer;
    soubor:Text;
Begin   
  Assign(soubor,'C:\Hra\Skore.txt');
End.

Přiřazením jména souboru ho neotevíráte ani neprovádíte jinou operaci. Dokonce ani není nutné, aby tento soubor existoval. Prostě jen do proměnné přiřadíte cestu. Pokud máte soubor ve stejném adresáři jako program samotný, stačí napsat do uvozovek pouze jeho název: Assign(soubor,'Skore.txt'); . Platí také, že přípona souboru nemusí být nutně txt, ale příponu si můžete zvolit jakoukoli chcete.

Dalším krokem pro práci s textovým souborem je jeho otevření. Zde už je to složitější, protože musíte vědět. co chcete se souborem udělat. Metody otevření jsou:

  • Rewrite - Pokud soubor na disku existuje, potom se otevře a přepíše se novými daty.
  • Append - Otevření souboru na pozici posledního řádku pro zápis (přidávání do souboru).
  • Reset - Otevření souboru POUZE pro čtení.

Pro naše účely bude jasně nejlepší volba Append. Do souboru budeme připisovat stále nové skóre. Otevřeme si tedy soubor:


Program skore;
uses crt;
var i,body,vypis:integer;
    soubor:Text;
Begin   
  Assign(soubor,'C:\Hra\Skore.txt');
  Append(soubor);
End.

Nyní máme otevřený soubor na jeho konci připravený pro zápis. Na začátku jsem zmínil, že musíme při otevírání souboru a dalších operací zkontrolovat, zda je soubor dostupný. Proto přidáme pár řádků k našemu programu:


Program skore;
uses crt;
var i,body,vypis:integer;
    soubor:Text;
Begin   
  Assign(soubor,'C:\Hra\Skore.txt');
  {$I-}   (* Vypnutí vnitřní kontroly chyb *)
    Append(soubor);
    if IOResult<>0 then Rewrite(soubor);  (* Ověření dostupnosti souboru *)
  {$I+}  (* Znovu zapnutí vnitřní kotroly chyb *)
End.

Máme otevřený soubor i s ověrením a můžeme se pustit do zapsání skóre.

Pro zapisování do souboru se používá ten samý příkaz jako pro výpis na obrazovku jen v trošku pozměněném tvaru: Writeln(nazev_souboru,co_chceme zapsat);

Můžeme zapisovat samozřejmě jak příkazem Write, tak příkazem Writeln. Rozdíl je stejný jako ve výstupu na obrazovku. Toto se rozlišuje až u typových souborů. Nyní si tedy proměnnou body zapíšeme do souboru. Soubor máme otevřený pro zápis na poslední pozici, tzn. pro přidávání do souboru, a proměnnou zapíšeme příkazem Writeln, aby byl soubor přizpůsoben pozdějšímu čtení:


Program skore;
uses crt;
var i,body,vypis:integer;
    soubor:Text;
Begin   
  Assign(soubor,'C:\Hra\Skore.txt');
  {$I-}   
    Append(soubor);
    if IOResult<>0 then Rewrite(soubor); 
  {$I+}  
  Writeln(soubor,body);
End.

Máme tedy zapsána data a chtěli bychom je dostat zpět. Čtení se, stejně jako zapisování, provádí standardním, trochu pozměněným příkazem Read (nazev_soboru,promenna_do_ktere_cteme); . Musíme mít ovšem na paměti, že máme soubor otevřen pro zadávání na konec, proto musíme soubor uzavřít a otevřít ho pro čtení:


Program skore;
uses crt;
var i,body,vypis:integer;
    soubor:Text;
Begin   
  Assign(soubor,'C:\Hra\Skore.txt');
  {$I-}   
    Append(soubor);
    if IOResult<>0 then Rewrite(soubor); 
  {$I+}  
  Writeln(soubor,body);
  Close(soubor);
  Reset(soubor); 
End.

U otevření pro čtení bychom opět měli zapsat kontrolu dostupnosti souboru, ale v tomto případě tam není potřebná. Kontrola je potřebná jen tehdy, když to dá logiku. To už nechám na vás. Přečteme si tedy informace ze souboru a vypíšeme je na obrazovku:


Program skore;
uses crt;
var i,body,vypis:integer;
    soubor:Text;
Begin   
  Assign(soubor,'C:\Hra\Skore.txt');
  {$I-}   
    Append(soubor);
    if IOResult<>0 then Rewrite(soubor); 
  {$I+}  
  Writeln(soubor,body);
  Close(soubor);
  Reset(soubor); 
  Repeat
    Readln(soubor,vypis);
    Writeln(vypis);
  until eof(soubor);
  close(soubor);
  readkey;
  End.

Jistě jste si všimli, že v podmínce cyklu jsem použil zvláštní, vám dosud neznámý, příkaz. Pojďme si tedy několik těchto příkazů vysvětlit.

  • Eoln(nazev_souboru) - End of Line. Zjistí, jestli se nacházíte na konci řádku a vrací hodnotu True nebo False.
  • Eof(nazev_souboru) - End of File. Zjistí, jestli se nacházíte na konci souboru.
  • Erase(nazev_souboru) - Smazání souboru z disku.
  • Rename(nazev_souboru,novy_nazev) - Přejmenování souboru

Takto si lze snadno obstarat obsluhu textových souborů se vším všudy. Dnes jsme toho probrali dost, typové a netypové soubory si necháme na příště.


Domácí úkol

Zadání dnešního úkolu bude jednoduché, ale výsledkem vaší práce bude takřka profesionální program. Udělejte mi jednoduchou hru, která bude obsahovat menu se třemi prvky. Nová hra, Tabulka skóre, Konec. Přes toto úvodní menu už pokračování nechám na vás. Pod novou hrou naprogramujete pomocí příkazů, které již znáte, nějakou jednoduchou hru, která po dohrání vyzve k vložení přezdívky a uloží přezdívku a skóre do souboru. Pod tabulkou skóre bude pouze výpis ze souboru a nějaký ten design (například Nick.......skóre). Jelikož menu musíte řešit příkazem CASE, tak pod položkou konec bude jediný přikaz: Exit;

×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 Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

Reklama
Reklama
Obrázek ke článku ICT PRO školení zaměřené nejenom na ICT

ICT PRO školení zaměřené nejenom na ICT

Dovolte, abychom se představili. Jsme zaměstnanci společnosti ICT Pro, profesionálové v oblasti poskytování komplexních ICT služeb. Neboli služeb spojených s informačními a komunikačními technologiemi, které dnes - ve 21. století - tvoří  nedílnou součást běžného provozu všech moderních firem.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý