Umíte pascalsky - 23.lekce ... |
Umíte pascalsky? 23.lekce |
Vytisknout |
|||||||||||||||||||||||||||||||||||||||||||||||||||
Datový typ soubor (typový soubor) Zadávat data při každém běhu programu z klávesnice je nepohodlné. Proto je počítač vybaven prostředky pro uchovávání dat - vnější paměti. Datový typ soubor umožňuje práci s takto uloženými daty. Soubor je posloupnost složek stejného typu, které jsou uloženy ve vnější paměti a jsou pro ně definovány určité operace. Počet složek souboru je proměnlivý. V každém okamžiku je přístupná jeho jediná složka. Pascal rozlišuje několik druhů souborů: typové - s definovaným typem složek textové - posloupnosti znaků členěné do řádků netypové - složky mají libovolnou strukturu Datový typ soubor deklarujeme takto: type <název> = file of <typ složky> ; typový <název> = text ; textový <název> = file ; netypový V této lekci se budeme věnovat typovým souborům. Například typový soubor pro uložení dat hokejisty bychom mohli deklarovat následovně: type THrac = record jmeno: string[30]; oddil: string[5]; goly: integer; nahravky: integer; end ; THraci = file of THrac ; Proměnná typu soubor se deklaruje obvyklým způsobem. Pokud tedy chceme pracovat s proměnnou hraci, která je typu soubor výše deklarovaného typu Thraci, pak použijeme deklaraci: var hraci: THraci; Pro další práci se souborem v programu je nejprve nutné přiřadit proměnné typu soubor jméno skutečného souboru na disku. To provádí procedura assign, která má tvar: assign(<proměnná typu soubor>,<jméno souboru na disku>); Jméno souboru je proměnná typu string. Například: assign(hraci,'C:/hokej.dta'); Všechny oprace s proměnnou hraci se budou provádět na diskovém souboru C:/hokej.dta. Po přiřazení jména je nutné soubor otevřít (jinak s ním nelze pracovat). Toho lze dosáhnout dvěma způsoby: rewrite(<jméno souboru>) založí nový diskový soubor (existující je přepsán), do kterého můžeme zapisovat,číst a aktualizovat složky - otevření k zápisu reset(<jméno souboru>) otevře existující soubor (pokud neexistuje, dojde k chybě), ze kterého můžeme číst a aktualizovat - otevření ke čtení Přístup ke složkám otevřeného souboru může být: sekvenční - postupný přístup k jednotlivým složkám přímý - přístup ke složkám zadáním pořadového čísla požadované složky (první má pořadové číslo 0) kombinovaný - kombinace obou možností Přímý přístup ke složce s daným pořadovým číslem umožňuje procedura seek: seek(<jméno souboru>,<pořadí složky>) Tedy seek(hraci,4) umožní přímý přístup k 5. hokejistovi v souboru hraci. seek(hraci,0) umožní přímý přístup k 1. hokejistovi v souboru hraci. Funkce filesize(<jméno souboru>) udává aktuální počet složek v souboru a tedy: seek(hraci,filesize(hraci)) umořní přímý přístup k poslednímu hokejistovi v souboru hraci. Funkce pro práci se soubory (typovými). eof(<jméno souboru>) udává,zda je aktuální složka poslední složkou souboru (pak je true jinak false) filepos(<jméno souboru>) udává pořadí aktuální složky v souboru filesize(<jméno souboru>) udává aktuální počet složek souboru Procedury pro práci se soubory (typovými). truncate(<jméno souboru>) smaže všechny složky od aktuální složky až do konce souboru read(<jméno souboru>,<jméno proměnné>) uvedené proměnné (může jich být víc) je přiřazena aktuální složka souboru a aktuální složkou se stává následující složka - čtení ze souboru write(<jméno souboru>,<jméno proměnné>) uvedená proměnné je zapsána jako aktuální složka souboru a aktuální složkou se stává následující složka - zápis do souboru A nyní si můžeme práci s typovým souborem ukázat na příkladě: Příklad: Sestavte program Hokej pro zpracování kanadského bodování hokejistů. Sledovat budeme jméno,oddíl,branky a nahrávky hokejistů. Podle volby uživatele program umožní zadat údaje, vypsat údaje a vyhledat údaje zadaného hokejisty. Myšlenka (hrubý algoritmus): <dokud nechceš skončit opakuj následující činnost - Nacti_hrace zadání údajů hokejistů - Napis_hrace výpis údaje hokejistů - Najdi_hrace najdi údaje hokejisty> Program Hokej může vypadat takto:
Domácí úkol: Doplňte program Hokej o volby Opravit - umožňující aktualizovat údaje hokejisty a Přidat - umožňující přidat nového hokejistu k již zapsaným hokejistům. On-line účast na řešení úkolu Pomocí volby Řešit můžete (po přihlášení) odeslat vaše řešení domácího úkolu (každý úkol smíte řešit jen jednou). Volbou Hodnocení si přečtete hodnocení a komentář od vyučujícího. Dotaz nebo připomínku můžete opakovaně zasílat pomocí tlačítka Dotazy, Komunikace (na levém okraji) zobrazuje příklad možné komunikace s vyučujícím. |