DINF2 PASCAL práca so súbormi

python-pascal

Príprava na vyučovaciu hodinu Ing. Peter Tokoš, 28.04.2017

Vyučovací predmet: informatika
Ročník: tretí, 3447 K grafik digitálnych médií
Tematický celok: práca so súbormi
Téma: textové súbory, základné príkazy pre prácu s textovými súbormi v Pascale
Vstupné požiadavky na vedomosti, zručnosti a návyky:
žiak pozná štruktúru programu, vie pracovať so základnými príkazmi vstupu a výstupu, úplným podmienečným príkazom, cyklom repeat-until, pozná dátové typy, žiak pozná aj základné príkazy otvárania, čítania a zápisu do textového súboru.

Ciele (kognitívne, afektívne, psychomotorické):

kognitívne (Niemierko):
a) pochopiť princíp kopírovania obsahu netypového súboru do novo vytvoreného súboru, zmenou malých písmen (a-z) na veľké pri kopírovaní.
b) pochopiť ASCII tabuľku
afektívne (deBlock):
- akceptovať pravidlá BOZP v počítačovej učebni,
psychomotorické (deBlock):
- predviesť správny prstoklad na klávesnici

Kľúčové kompetencie: (Referenčný rámec kľúčových kompetencií, ISCED 3A, podľa ŠVP 34 polygrafia a médiá, pre študijný odbor 3447 K grafik digitálnych médií)
- komunikácia v materinskom jazyku: pri práci s FreePascal/Lazarus, pri písaní komentárov k jednotlivým častiam zdrojového kódu
- digitálna kompetencia: využívanie počítača a softvéru FreePascal/Lazarus pri riešení algoritmov s využívaním cyklov
- učebná kompetencia: žiaci ju rozvíjajú pri riešení úlohy so zameraním na prácu so súbormi.

Typ vyučovacej hodiny: vyučovacia hodina základného typu

Vyučovacie metódy:
- motivačná: motivačný rozhovor
- expozičná: informačno-receptívna, demonštrovania a pozorovania,
- fixačná: riešenie úlohy
- diagnostická: prezentácia výsledkov úlohy, otázky a odpovede (frontálne)
Organizačné formy:
- individuálna, frontálna

Učebné pomôcky a didaktická technika:
- interaktívna tabuľa, projektor, počítač, internet, FreePascal/Lazarus

Pri vyučovaní budú dodržiavané všetky didaktické zásady.

Úvod (motivácia):
Motivačným rozhovorom vzbudzujeme záujem žiakov o programovanie a algoritmizáciu, resp. hľadanie riešení konkrétneho problému. Žiakom položíme otázku, čo si predstavujú pod pojmom súbor, typový a netypový súbor, a či počuli o tabuľke ASCII a jej význame.
V závere motivácie oboznámime žiakov s cieľom vyučovacej hodiny, ktorým je kopírovanie obsahu súboru do nového súboru, a súčasne zmena písmen z malých na veľké.

Opakovanie predošlého učiva:
Krátke zopakovanie použitia cyklu repeat-until a základných príkazov pre prácu s textovými súbormi:
Pri programovaní v akomkoľvek jazyku sa dosť často používa cyklus. Slúži na opakovanie určitého kroku alebo krokov. Vždy si treba pamätať, že počet opakovaní musí byť konečný, pretože nekonečný program nebude nikdy na osoh.
repeat
príkaz(y)
until nepravdiva_podmienka
Daný príkaz sa bude opakovať, kým bude mať logický príkaz (zisťovaný na konci) hodnotu false.
Základné príkazy pre prácu so súbormi:
Assing - Prepojenie premennej s konkrétnym súborom na disku.
Textový súbor otvoríme jednou z procedúr:
Reset - ak z neho potrebujeme čítať. Súbor už musí na disku existovať.
Rewrite - kvôli zapisovaniu. Ak súbor nejestvuje, vytvorí sa. Pokiaľ však existuje, prepíše sa a stratíme jeho pôvodný obsah!
Append - pre pripisovanie na koniec súboru. Ten už musí existovať.
Parametrom týchto procedúr je vždy premenná symbolizujúca súbor (typ text).
Rewrite(Subor) po otvorení môžeme do súboru zapisovať, čítať z neho a pod.
Procedúra ReadLn(subor, riadok) prečíta riadok zo súboru súbor a zapíše ho do premennej riadok. Posunie sa ukazovateľ (predstavme si ho ako kurzor), takže pri ďalšom volaní tejto procedúry sa číta vždy ďalší a ďalší riadok.
WriteLn(subor, riadok) zapíše do súboru hodnotu druhého parametra a vytvorí nový riadok.
Obdobne fungujú procedúry Read a Write.
Close(súbor) zatvorí súbor.

Sprístupňovanie nového učiva (expozícia):
Učiteľ vysvetlí žiakom význam a použitie tabuľky ASCII
Vysvetlenie kopírovania súborov a zmena obsahu pri kopírovaní na konkrétnom príklade.
Žiaci pracujú spoločne s vyučujúcim, učiteľ svoje kroky vysvetľuje, píšu sa komentáre a poznámky k zdrojovému kódu:

Program  Subor;
Uses Crt, SysUtils; //pripojenie kniznic
//definovanie premennych
var nazov1, nazov2:string;
    subor1: file;
    subor2: TextFile;
    znak:byte;
    pocet:integer;
    subor_ok:boolean;

begin
clrscr;
//kontrola existencie súboru pomocou funkcie FileExists z kniznice SysUtils
 repeat
  writeln('zadaj nazov vstupneho suboru:');
  readln(nazov1);
   if FileExists(nazov1) = false then
    begin
     subor_ok:=false;
     writeln('subor [', nazov1, '] neexistuje');
    end
   else
     subor_ok:= true;
 until  subor_ok = true;



 //vytvorenie cieloveho suboru
 repeat
  writeln('zadaj nazov vystupneho suboru:');
  readln(nazov2);
   if Length(nazov2)>0 then subor_ok:=true;
 until subor_ok=true;

 Assign(subor1,nazov1); //prepojenie so suborom na HDD
 Reset(subor1,1); //citanie zo suboru
 Assign(subor2,nazov2); //prepojenie so suborom na HDD
 Rewrite(subor2);// zapis do suboru

 repeat
  //nacitanie bloku dat zo suboru do pamati pri netypovych suboroch
  //vhodne pouzit pri kopirovani suborov, kde sa nezaujimam o typ obsahu
  BlockRead(subor1,znak,1,pocet);
   if pocet=1 then
    begin
    //identifikacia pismena a-z v netypovom subore podla tabulky ASCII
     if(znak>=Ord('a'))and(znak<=Ord('z'))then
      write(subor2, Chr(znak-Ord('a')+Ord('A'))) // zapise pismeno ako velke
     else
      write(subor2, Chr(znak)); // zapis ostatnych znakov
    end;
 until pocet=0;
 writeln('spracovanie dokoncene');
 //uzatvorenie suborov
 Close(subor2);
 CLose(subor1);
 readln;
end.

V priebehu práce učiteľ vysvetľuje žiakom použité príkazy a funkcie:
Netypový súbor sa používa pre ukladanie a čítanie blokov dát. Je určený pre rýchlu prácu so súborom, pretože čítanie a zápis prebieha po blokoch pomocou DMA (Direct Memory Acces - priami prístup do pamäti), kde dáta z disku idú zvláštnym DMA kanálom priamo do pamäti RAM a nie cez registre procesoru => rýchlejšie spracovanie. Dáta pre prenos môžu byť v premennej ľubovoľného typu (okrem typu „súbor“).
Veľkosť jednej položky súboru je možno určiť pri vytváraní alebo otváraní v rozsahu 1 - 65535 bajtov, implicitne veľkosť je 128 bajtov. Určuje sa podľa veľkosti bufferu.

Učiteľ ďalej vysvetlí žiakom jednotlivé segmenty kódu:
var f : file; { premenná f netypového súboru }
Špeciálne procedúry pre práci s netypovým súborom:
Rewrite(f[,veľkosť]) - vytvorenie a otvorenie nového súboru pre čítanie i zápis a určení veľkosti položky
Reset(f[,veľkosť]) - otvorenie existujúceho súboru pre čítanie i zápis a určenie veľkosti položky
Blockread(f,Buff,Count[,Result]) - načítanie bloku dát zo súboru do pamäti
Buff - identifikátor premennej ľubovoľného typu pre dáta
Count - požadovaný počet položiek pre prenos
Result - nepovinný parameter - počet skutočne prenesených položiek

Precvičovanie a upevňovanie učiva (aplikácia a fixácia):

V ďalšej časti vyučovacej hodiny žiaci odpovedajú na otázky učiteľa. Otázky sa týkajú jednotlivých častí predošlého príkladu. Otázky:
a) popíšte význam a funkciu týchto príkazov: Assing( ), Reset( ), Rewrite( ), BlockRead( ), Close( ),
b) popíšte algoritmus, pomocou ktorého prekopírujeme obsah jedného súboru do novo vytvoreného súboru.
Zadanie domácej úlohy:
Vytvorte program, ktorý prekopíruje obsah v netypovom súbore do nového súboru. Zároveň nech je prekopírovaný obsah celý napísaný malými písmenami.

Pedagogická reflexia:
Učiteľ vytvorí žiakom priestor na sebareflexiu, žiaci majú možnosť slovne zhodnotiť priebeh hodiny, pozitíva, negatíva. Na záver učiteľ pochváli žiakov za aktivitu a taktiež slovne zhodnotí hodinu.

Rubriky: