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

Turbo Pascal - 10. lekceTurbo Pascal - 10. lekce

 

Turbo Pascal - 10. lekce

Google       Google       14. 2. 2006       39 585×

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.

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 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ý