Programování v Pascalu Přednáška 9 RNDr. Hana Havelková.

Slides:



Advertisements
Podobné prezentace
Pro začátek něco lehčího
Advertisements

Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Pascal - příklady.
Programování v Pascalu
Algoritmizace od algoritmu k Pascalu.
Vnitřní řazení v poli (in sito)
1 Vnitřní řazení s využitím dynamických struktur Tvorba spojového seznamu je vcelku triviální záležitostí: a)Vytvořím prázdný seznam příkazem LIST:=nil.
10. Dynamické datové struktury
VISUAL BASIC Práce se soubory.
Fronta - a)Implementace s využitím statických struktur (pole) b)Implementace s využitím dynamických struktur (spojového seznamu) odebírá se ze začátku.
Programování v Pascalu Přednáška 8
Programování v Pascalu Přednáška 4
Programování v Pascalu Přednáška 2
Programování v Pascalu Přednáška 10 RNDr. Hana Havelková.
Programování v Pascalu Přednáška 6
Programování v Pascalu Přednáška 3
Programování v Pascalu Přednáška 5 RNDr. Hana Havelková.
Algoritmizace a programování Datové typy v Delphi - 05
Algoritmizace a programování Podprogramy v Delphi - 10
Programování v Pascalu Přednáška 7
Materiály k přednášce Úvod do programování Ondřej Čepek.
1 Vyhledávání Principy vyhledávání Klasifikace klíče:  Interní klíč – je součástí prohlížených záznamů  Externí klíč – není jeho součástí, je jím např.
Informatika I 3. přednáška
Procedury a funkce Základní charakteristika a použití v programu.
Práce se soubory. * soubory patří k základním datovým prvkům v počítači * převážná většina programovacích jazyků má podporu určité formy práce se soubory.
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro práci se soubory 13 Verze
PRÁCE S PROUDY V.NET FRAMEWORK APLIKACÍCH Architektura technologie.NET Jan Martinovič, FEI - Katedra Informatiky.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Deklarace Radim Štefan. 2 Použité zkratky BP – Borland Pascal De – Delphi.
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_18 Digitální učební materiál Sada: Úvod do programování.
Podmienený príkaz. Kĺúčové slová  Pro podmínky se v Pascalu používají klíčové příkazy IF, THEN a ELSE.  Také se jim říká „príkaz vetvenia"..  Příkaz.
Práce se soubory Soubory se používají pro ukládání dat pro pozdější použití. Dalším a lepším způsobem jak ukládat data je použití databáze. Soubory se.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – OPAKOVANÝM VÝBĚREM NEJVĚTŠÍHO PRVKU (SELECTSORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – PŘÍMOU VÝMĚNOU (BUBBLESORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise, Hlinsko, Adámkova.
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
OSNOVA: a)Programování se soubory b)Záloha databáze v souboru c) Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování.
5. Procedury a funkce Procedura je samostatně odladěný algoritmus, v programu může být volána vícekrát. Dvojí terminologie - rozlišujeme procedury a funkce.
Programovací jazyk PASCAL
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Algoritmizace a programování Binární soubory - 14 Mgr. Josef Nožička IKT Algoritmizace a programování
Příklady v jazyku C – část 4
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
10. Dynamické proměnné Dynamická proměnná se nezavádí deklarací proměnných, ale vzniká za běhu programu provedením speciálního příkazu. Nemá přidělen žádný.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Gymnázium prof. Jana Patočky Jindřišská Praha 1 „Praha & EU: Investujeme do vaší.
Algoritmizace a programování Textové soubory - 13 Mgr. Josef Nožička IKT Algoritmizace a programování
1 Počítače a programování 1 13.přednáška. 2 Obsah přednášky Vstupy a výstupy – 1.část.
GYMNÁZIUM, VLAŠIM, TYLOVA
6. Typ záznam Strukturovaný datový typ - znamená spojení několika elementů stejného nebo různých typů do jedné proměnné. Např. pole je strukturovaný datový.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ PROCEDURY S PARAMETRY – NEJBLIŽŠÍ VYŠŠÍ A NIŽŠÍ ČÍSLO Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise, Hlinsko,
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
Systém souborů. Množina souborů různých typů – Data – Spustitelné programy – Konfigurační a pomocné informace – I/O zařízení Způsob organizace množiny.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
doc. RNDr. Zdeněk Botek, CSc.
Pascal – if Mgr. Lenka Švancarová.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
4. Typ pole 4.1 Jednorozměrná pole
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ
Cvičení 2 Podmíněné příkazy, cykly. Podmíněné příkazy Podmínka – jakýkoliv logický výraz ( a=1,……..) ( a=1,……..) Příkaz – vlastní instrukce, která se.
Cvičení 3-4 Procedury, funkce,řetězce. Procedury Procedura Procedura Procedura je podprogram, který mění stav programu (změnou stavu proměnných nebo změnou.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ CYKLUS S PŘEDEM DANÝM POČTEM OPAKOVÁNÍ – SOUČIN POMOCÍ SOUČTU Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise,
Algoritmy Úkol: Vytvořte algoritmus pro zadání PIN do mobilu.
Algoritmizace a programování Soubory. Oč jde? Vytvoření externího souboru Vytvoření externího souboru Tento soubor může být: Tento soubor může být: Textový.
Úvod do Pythonu – IO operace se soubory.
Strukturované typy proměnných v programovacím jazyce Pascal - 2.hodina
Kurz algoritmizace a programování v jazyce C
Výukový materiál zpracován v rámci projektu
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
program TextovySoubor;
Transkript prezentace:

Programování v Pascalu Přednáška 9 RNDr. Hana Havelková

Typ soubor Druhy souborů Deklarace Základní operace se soubory Textové soubory Typové soubory Netypové soubory Chyby

Druhy souborů textový soubor typový soubor netypový soubor

Základní operace se souborem přiřazení - spojení logického a fyzického jména souboru otevření souboru čtení dat zápis dat uzavření souboru přidávání dat zkrácení souboru

Přístup sekvenční data se čtou postupně od začátku data lze přidávat na konec souboru není možné již zapsané údaje rovnou změnit přímý je možné přímo číst daná data je možné přímo přepsat daná data) je možné přidávat data na konec souboru i jinam (dojde pak k přepsání již zapsaných dat)

Deklarace souboru textový soubor filetypof typový soubor netypový soubor textfile

Přiřazení před otevřením je nutno propojit fyzické a logické jméno souboru pomocí procedury Assign Assign (log_jmeno, fyz_jmeno) log_jmenoidentifikátor souboru uvedený ve var fyz_jmenořetězcový výraz – skutečné jméno souboru var vstup : text; vystup : file of integer; begin Assign (vstup, 'd:\data\seznam.txt'); Assign (vystup, 'c:\temp\cisla.dat'); …

Otevření souboru otevření (vytvoření) nového souboru nebo přepsání již existujícího pomocí procedury Rewrite – otevření pro zápis Rewrite (log_jmeno_souboru) otevření existujícího souboru pro čtení procedurou Reset Reset (log_jmeno_souboru) otevření existujícího textového souboru pro přidávání na konec procedurou Append Append (log_jmeno_souboru)

Chyby při otevření – soubor nejde otevřít zařízení není připraveno soubor, ze kterého chceme číst, neexistuje nemáme dostatečná práva k souboru soubor, do kterého chceme zapisovat (přidávat), neexistuje fyzická chyba zařízení

Zavření souboru procedura Close po ukončení práce se souborem je vhodné soubor uzavřít – jinak by se mohlo stát, že při bufferovaných operacích se posledně zapisovaná data se nepřepíšou z vyrovnávací paměti (bufferu) Close (log_jmeno_souboru)

Zápis do textového souboru procedura Write – zapíše položky uvedené v seznamu do souboru Write (log_jmeno_souboru, seznam položek) procedura WriteLn – zapíše položky uvedené v seznamu do souboru včetně znaku konec řádku WriteLn (log_jmeno_souboru, seznam položek) WriteLn (vystup, 'Seznam jmen'); Write (vystup, '1. '); WriteLn (vystup, 'Adamec Josef'); Write (vystup, '2. '); WriteLn (vystup, 'Bláhová Eva'); …

Čtení z textového souboru procedura Read – přečte údaje ze souboru do položek uvedených v seznamu Read (log_jmeno_souboru, seznam položek) procedura ReadLn – přečte údaje ze souboru včetně znaku konec řádku do položek uvedených v seznamu ReadLn (log_jmeno_souboru, seznam položek) var nadpis, jmeno : string [30]; cislo : string [3]; …. ReadLn (vstup, nadpis); Read (vstup, cislo); ReadLn (vstup, jmeno); ….

Kontrola (test) konce souboru při čtení je nutno kontrolovat, zda nebylo dosaženo konce souboru – specielní znak EOF – end of file testování provedeme funkcí Eof Eof (log_jmeno_souboru) čteme-li za koncem souboru, dojde k chybě

Funkce a procedury pro práci s text. souborem funkce Eof (log_jmeno) vrací true, je-li akt. pozice na konci souboru EoLn (log_jmeno) vrací true, je-li akt. pozice na konci řádku SeekEof (log_jmeno) stejné jako Eof, ale přeskakuje prázdné znaky SeekEoln (log_jmeno) stejné jako EoLn, ale přeskakuje prázdné znaky procedury Append (log_jmeno) otevření souboru na přidávání Assign (log_jmeno, fyz_jmeno)přiřazení skutečného jména souboru log. jménu (proměnné typu text) Flush (log_jmeno) vyprázdnění bufferu do souboru Rewrite (log_jmeno) otevření souboru pro založení Reset (log_jmeno) otevření souboru pro čtení Read, ReadLn (log_jmeno, …) čtení ze souboru Write, WriteLn (log_jmeno, …) zápis do souboru

Založení textového souboru (1) { textovy soubor zaku obsahujici na kazdem radku } { cis, jmeno, prumer zaka } {soubor SEZNAM.TXT } uses Crt; var soubor: text; jm : string [20]; pr : real; cis, i : integer;

Založení textového souboru (2) begin Assign (soubor, 'seznam.txt'); Rewrite (soubor); ClrScr; Write ('zadej cislo '); Readln(cis); while cis <> 0 do begin Write ('Jmeno : '); ReadLn (jm); Write ('Prumer : '); ReadLn (pr); { doplneni jmena na delku 20 znaku} for i:=1 to 20 – length (jm) do jm:=jm+' '; WriteLn (soubor, cis, ' ', jm, pr); {zapis do souboru} Write ('Cislo : '); ReadLn (cis); end; Close (soubor); end.

Kontrolní výpis textového souboru {načtení po jednotlivých položkách v řádcích} var soubor: text; jmeno : string [20]; pr : real; cis : integer; begin Assign (soubor, 'seznam.txt'); Reset (soubor); while not eof (soubor) do begin Read (soubor, cis); Read (soubor, jmeno); ReadLn (soubor, pr); WriteLn (cis:2, jmeno, pr :6 :2); end; Close (soubor); end.

Výpis libovolného textového souboru program VypisSoubor; var soubor : text; radek, jmeno : string; begin Write('Zadej jmeno souboru: '); ReadLn(jmeno); Assign(soubor, jmeno); {$I-} Reset(soubor); {$I+} if IOResult <> 0 then begin WriteLn ('Soubor neexistuje nebo nejde otevrit!'); ReadLn; exit; end; while not eof (soubor) do begin ReadLn (soubor, radek); WriteLn (radek); end; WriteLn(#10'Konec souboru'); ReadLn; end.

Statistika souboru (1) { určení počtu řádků, slov a znaků } program StatistikaSouboru; function JeMezera(z : char) : boolean; begin if (ord(z) <= 32) or (z in [',', '.', ';', '"', ':']) then JeMezera := true else JeMezera := false; end; var soubor : text; jmeno : string; predchozi, nasledujici : char; znaky, slova, radky : integer;

Statistika souboru (2) begin {Write('Zadej jmeno souboru: ');ReadLn(jmeno);} jmeno := 'h:\vstup.txt'; Assign (soubor, jmeno); {$I-} Reset (soubor); {$I+} if IOResult <> 0 then begin WriteLn ('Soubor neexistuje nebo nejde otevrit!'); ReadLn; exit; end; nasledujici := ' '; radky := 0; slova := 0; znaky := 0;

Statistika souboru (3) while not eof (soubor) do begin predchozi := nasledujici ; Read(soubor, nasledujici); Inc(znaky); if nasledujici = #13 then begin {znaky CR a LF ukončují řádek} predchozi := nasledujici ;{#13 a #10} Read (soubor, nasledujici); Inc (radky);Dec(znaky); end; if JeMezera(predchozi) and not (jeMezera(nasledujici)) then Inc(slova); end; if predchozi = #13 then Inc(radky); if pocet > 0 then Inc (radky); WriteLn ('Pocet radku ', radky); WriteLn ('Pocet slov ', slova); WriteLn ('Pocet znaku ', znaky); ReadLn; end.

Typový soubor umožňuje sekvenční přístup přímý přístup zjištění počtu položek čtení i zápis najednou – není nutno otvírat soubor zvlášť pro čtení a zvlášť pro zápis

Funkce a procedury pro práci s typovým souborem funkce Eof (log_jmeno) vrací true, je-li akt. pozice na konci souboru FileSize (log_jmeno) vrací velikost souboru (počet položek) FilePos (log_jmeno) vrací pozici v souboru (0 je začátek, FileSize je konec) Seek (log_jmeno, pozice) nastavení pozice v souboru procedury Assign (log_jmeno, fyz_jmeno)přiřazení skutečného jména souboru log. jménu (proměnné typu file of typ) Rewrite (log_jmeno) otevření souboru pro založení Reset (log_jmeno) otevření existujícího souboru pro čtení i zápis Read (log_jmeno, …) čtení ze souboru Trunc (log_jmeno) zkrácení souboru od akt. pozice do konce Write (log_jmeno, …) zápis do souboru

Přepsání souboru VSTUP.TXT do VSTUP.DAT type TZak :record cis: integer; jmeno : string [20]; pr : real; end; var vstup: text; zaznam: TZak; vystup: file of TZAK; begin Assign (vstup, 'seznam.txt'); Reset (vstup); Assign (vystup, 'seznam.dat'); Rewrite (vystup); while not eof (vstup) do begin Read (vstup, zaznam.cis); Read (vstup, zaznam.jmeno); ReadLn (vstup, zaznam.pr); Write (vystup, zaznam); end; Close (vstup); Close (vystup); end.

Menu pro práci se souborem – deklarace program Soubory; uses Crt; type TZaznam = record jmeno : string [10]; prijmeni : string [15]; string; mobil : string [10]; end; var F : file of TZaznam; Zaznam : TZaznam; Soubor : boolean; volba : char;

Menu pro práci se souborem – zápis procedure Zapis; begin ClrScr; with Zaznam do begin write ('Zadej jmeno : '); readln (jmeno); while jmeno <> '' do begin write ('Prijmeni : '); readln (prijmeni); write (' '); readln ( ); write ('Mobil : '); readln (mobil); write (F,Zaznam); write ('Zadej jmeno : '); readln (jmeno); end;

Menu pro práci se souborem – založení procedure Zalozeni; var JmenoSouboru : string; begin if Soubor then begin Close (F); Soubor:= false; end; ClrScr; write ('Zadejte jmeno souboru : '); Readln(JmenoSouboru); Assign (F,JmenoSouboru); {$I-} Rewrite(F); {$I+} if IOResult<>0 then begin TextColor(red); writeln ('Soubor se nepodarilo zalozit'); writeln ('Zkuste zalozit jiny soubor'); Readkey; TextColor (white); end else begin Soubor := true; Zapis; end; end;

Menu pro práci se souborem – přidání, výpis procedure Pridani; begin Seek (F, FileSize(F)); Zapis; end; procedure Vypis; begin ClrScr; writeln ('Kontrolni vypis souboru'); Seek(F, 0); with Zaznam do begin while not eof (F) do begin read (F, Zaznam); write (prijmeni, ' ' : 16- length (prijmeni)); write (jmeno, ' ' : 11 – length (jmeno)); writeln (mobil, ' ', ); end; ReadKey end;

Menu pro práci se souborem – funkce Menu function Menu : char; var volba : char; begin ClrScr; GotoXY(20,1); writeln('***********************************'); GotoXY(20,2); writeln('* PRACE SE SOUBOREM ł'); GotoXY(20,3); writeln('***********************************'); GotoXY(20,4); writeln('* Zalozeni souboru *'); GotoXY(20,5); writeln('* Vyber souboru *'); GotoXY(20,6); writeln('* Vypis souboru *'); GotoXY(20,7); writeln('* Pridani zaznamu do souboru.. 4 *'); GotoXY(20,8); writeln('* Vyhledani zaznamu *'); GotoXY(20,9); writeln('* Konec prace *'); GotoXY(20,10); writeln('***********************************'); GotoXY(20,11); writeln('Stisknete klavesu podle Vasi volby:'); GotoXY(37,12); Menu := ReadKey; end;

Hlavní program {HLAVNI PROGRAM} begin Soubor := false; repeat volba := Menu; case volba of '1': Zalozeni; '2': Vyber; '3': if Soubor then Vypis else Chyba; '4': if Soubor then Pridani else Chyba; '5': if Soubor then Hledani else Chyba; '6': Konec; end; until volba='6'; end.

Netypový soubor není uveden typ základní jednotka, s níž se pracuje, je tzv. blok je možné číst či zapisovat po jednotlivých bytech po blocích dané velikosti po několika blocích

Funkce a procedury pro práci s netypovým souborem funkce Eof (log_jmeno) vrací true, je-li akt. pozice na konci souboru FileSize (log_jmeno) vrací velikost souboru (počet položek) FilePos (log_jmeno) vrací pozici v souboru (0 je začátek, FileSize je konec) Seek (log_jmeno, pozice) nastavení pozice v souboru procedury Assign (log_jmeno, fyz_jmeno)přiřazení skutečného jména souboru log. jménu (proměnné typu file of typ) Rewrite (log_jmeno [, delka]) otevření souboru pro založení (delka bloku) Reset (log_jmeno [, delka]) otevření existujícího souboru (impl. 128) BlockRead (log_jm, pamět, počet [,vysledek]) čtení ze souboru Trunc (log_jmeno) zkrácení souboru od akt. pozice do konce BlockWrite (log_jm, pamět, počet [,vysledek]) zápis do souboru

Kopírování souboru (1) program CopyFile; {program volame jako : CopyFile zdroj cil} var Odkud, Kam: file; Precteno, Zapsano: Word; Pamet: array [ ] of Char; begin if ParamCount < 2 then begin WriteLn ('Malo parametru'); ReadLn; exit; end;

Kopírování souboru (2) Assign (Odkud, ParamStr(1)); Reset (Odkud, 1); Assign (Kam, ParamStr(2)); Rewrite (Kam, 1); WriteLn ( 'Kopiruje se ', FileSize (Odkud), ' bytu...'); repeat BlockRead (Odkud, Pamet, SizeOf(Pamet), Precteno); BlockWrite (Kam, Pamet, Precteno, Zapsano); until (Precteno = 0) or (Zapsano <> Precteno); Close (Odkud); Close (Kam); WriteLn ('Hotovo'); ReadLn; end.