pondělí 8. února 2010

Práce se soubory III

Nejjednodušší ukázka práce se soubory!
Postup:

  1. Uložte si tenhle soubor (text viz níže) na svůj disk.
  2. Do stejné složky k němu vytvořte textový soubor s názvem "muj.txt". Obsah tohoto textového souboru může být libovolný. Měl by však obsahovat několik řádků (zhruba 200 znaků či více).
  3. Spusťte pascalský program z této ukázky.
  4. Tento program 
    1. otevře textový soubor "muj.txt"
    2. načte soubor "muj.txt"
    3. vypíše tento soubor na obrazovku
    4. po stisknutí klávesy skončí
    5. zavře soubor "muj.txt"

Úkol:
Upravte tento program tak, aby vstupem byl textový soubor a výstupem byla melodie hraná pomocí SOUND.
Vstup bude tvořen dvojicemi číslic frekvence, délka tónu.




uses crt;
var f: text;
    pom: string;

begin
assign(f, 'muj.txt');     (* přiřadíme jméno *)
reset(f);                 (* otevřeme soubor *)
while not eof(f) do begin (* dokud nedojdeme na poslední řádek *)
 readln(f, pom);          (* načteme řádek do proměnné *)
 writeln(pom);            (* vypíšeme řádek na obrazovku *)
 repeat until keypressed;
 end;
close(f); (* ukončíme práci se souborem *)
end.



řešení úkolu:

  1. vytvoř si textový soubor "muj.txt"
  2. do něj zapiš číslice, které reprezentují frekvenci, která bude "hrát"
  3. tyto číslice budou pod sebou
  4. do stejné složky jako je uložen "muj.txt" ulož následující soubor v jazyce pascal (viz níže)
  5. tento soubor bude přehrávat melodii zadanou textovým souborem

nevýhoda: textový soubor určuje frekvenci, ignoruje však délku tónu, ta je napevno nastavena v programu
nutno makat dál...


uses crt;
var f: text;
    n, pom : word;


procedure pipni (F, T : word);
{F jako Frekvence, T jako do, kterou to bude pištět na oné frekvenci}
{interval vhodných F je ideální zjistit experimentem nebo vygooglit}
 begin
   Sound(F); { Píp }
   Delay(T); { na T ms }
   NoSound; { Úleva! Blaho! }
 end;



begin
     assign(f, 'muj.txt');     (* přiřadíme jméno *)
     reset(f);                 (* otevřeme soubor *)
     while not eof(f) do begin (* dokud nedojdeme na poslední řádek *)
           readln(f, pom);          (* načteme řádek do proměnné *)
           writeln(pom);            (* vypíšeme řádek na obrazovku *)
           pipni (pom,300);         (* vesele pípneme s nastavenou frekvencí načtenou ze souboru "muj.txt", ale s pevnou délkou nastavenou zde  *)

 end;

repeat until keypressed;
close(f); (* ukončíme práci se souborem *)
end.

Žádné komentáře:

Okomentovat