Umíte pascalsky - 24.lekce ...

Umíte pascalsky?
24.lekce
Vytisknout  

Výstup na monitor, okna

1. Výstup na monitor

Při výstupu na monitor budeme používat funkce a procedury z jednotky CRT a musíme to překladači oznámit pomocí příkazu
uses CRT;
hned za hlavičkou programu.

Přemístění kurzoru na určené místo zajistí procedura
GotoXY(x,y)
kde význam souřadnic x,y na monitoru objasňuje obrázek:



Zjistit aktuální souřadnice kurzoru na obrazovce umožňují funkce
WhereX (x-ovou souřadnici) a WhereY (y-ovou souřadnici)

Obrazovku maže procedura (kurzor umístí do levého horního rohu) ClrScr

Nastavení intensity vystupujících znaků provádí procedury
HigVideo - vysoká intensita
NormVideo - normální intensita (jako při spuštění programu)
LowVideo - nízká intensita

Vystupujícím znakům můžeme určit barvu pozadí a barvu textu procedurami:
TextColor(barva) - barva textu
TextBackGround(barva) - barva pozadí

Pro definování barev lze požít konstant (0-7) pro TextBackGround a (0-15) pro TextColor:

Black = 0; {černá}
Blue = 1; {modrá}
Green = 2; {zelená}
Cyan = 3; {kobaltově modrá}
Red = 4; {červená}
Magenta = 5; {fialová}
Brown = 6; {hnědá}
LightGrey = 7; {světle šedá}
DarkGrey = 8; {tmavě šedá}
LightBlue = 9; {světle modrá}
Light Green = 10; {světle zelená}
LightCyan = 11; {světle kobaltově modrá}
LightRed = 12; {světle červená}
LightMagenta = 13; {světle fialová}
Yellow = 14; {žlutá}
White = 15; {bílá}
Blink = 128; {blikání}


Blikání způsobí přičtení čísla 128 k číslu barvy.

2. Okna

Okno je část obrazovky, do které směřuje veškerý výstup. Není-li okno instalováno, směřuje výstup na celou obrazovku.

Ökno definuje procedura
Window(x1,y1,x2,y2)
x1,y1 - souřadnice levého horního rohu
x2,y2 - souřadnice pravého dolního rohu
Po umístění kurzoru příkazem GotoXY(1,1) je výstup směrován do tohoto okna.
Pokud se chceme vrátit k celé obrazovce, použijeme Window(1,1,80,25);

Příklad:
Sestavte program Vek_do_Okna, který napíše barevně nadpis Výpočet stáří, vytvoří orámované okno s návodem pro opakované zadání jména a roku narození a v druhém okně umožní data načíst a zobrazit stáří člověka.

Myšlenka (hrubý algoritmus):

< tisk nadpisu na zadanou posici zvolenou barvou písma na zvoleném pozadí>
< vytvoření orámečkovaného okna s návodem>
< vytvoření druhého okna>
< opakuj dokud nechceme ukončit
     - výzva k zadání volby (výpočet - konec)
     - zadej jméno a rok narození
     - vypočti a vytiskni stáří>
< zrušení oken a výmaz obrazovky>

Program Vek_do_Okna může vypadat takto:

program Vek_do_Okna;
  uses Crt;
  const letos = 2003;
  var jmeno:STRING[25];
         rok,stari,volba:integer;
         LHx1,LHy1,PDx1,PDy1,LHx2,LHy2,PDx2,PDy2:integer;
{použití knihovny pro práci s monitorem}


{souřadnice rohů oken}
{LHx1=x-ová souř.levého hor.rohu 1.okna ...}
 
procedure Nadpis;
  begin
    TextBackGround(Blue);
    ClrScr;
    TextColor(Yellow);
    GoToXY(34,3);
    writeln('Vypocet stari');
{nastaví modré pozadí}
{vymaže obrazovku}
{nastaví žluté písmo}
{přemístí kurzor na pozici [34,3]}
{napíše Vypocet stari}
  end;

procedure Prvni_Okno;
  begin
    LHx1:=3;LHy1:=5;PDx1:=77;PDy1:=13;
    Window(LHx1,LHy1,PDx1,PDy1);
    TextBackGround(White);
    TextColor(Black);
    ClrScr;
    Window(LHx1+1,LHy1+1,PDx1-1,PDy1-1);
    TextBackGround(Blue);
    TextColor(White);
    ClrScr;
    GoToXY(2,2);
    writeln('Tento program po zadani jmena a roku narozeni vypocita tvuj vek.');
    writeln(' 1 - vypocet');
    writeln(' 0 - konec');
{souřadnice rohů okna}
{vytvoření okna}
{pozadí okna bílé}
{text černý}
{vymazání okna}
{vytvoření okna o 1 menší}
{pozadí okna modré}
{text bílý}
{vymazání okna}
{z většího okna zůstane pouze bílý rámeček}
{tisk návodu}

  end;

procedure Druhe_okno;
  begin
    LHx2:=3;LHy2:=15;PDx2:=77;PDy2:=22;
    Window(LHx2,LHy2,PDx2,PDy2);
    TextBackGround(White);
    TextColor(Black);
    ClrScr;
    repeat
      writeln(' Zadejte svoji volbu (0-1):');readln(volba);
      ClrScr;
      case volba of
        1: begin
              writeln(' Zadejte jmeno:');readln(jmeno);
              writeln(' Zadejte rok narozeni:');readln(rok);
              writeln(' Vas vek je ',letos-rok, ' let');
            end;
        0:;
      end;
    until volba=0;
    Window(1,1,80,25);
    ClrScr;
{souřadnice rohů 2.okna}
{vytvoření 2.okna}
{bílé pozadí}
{černé písmo}
{výmaz vnitřku okna}

{opakuj}
{výzva k zadání volby}


{zadání jména}
{zadání roku narození}
{výpočet a tisk stáří}

{ukončení programu}



{odstranění oken}

  end;

Begin
 Nadpis;
 Prvni_Okno;
 Druhe_Okno;
{tisk nadpisu}
{první orámované okno s návodem}
{druhé okno se vstupem a výstupem}
End.



Domácí úkol:

    Doplňte program Hokej z předchozí lekce o volbu Doma_Venku, která ze souboru hokejistů vytvoří dva nové soubory - hrajících doma a hrajících v cizině. Dále program doplňte o návod, vstupy a výstupy v oknech.

On-line účast na řešení úkolu

Řešit úkol Prohlídka hodnocení úkolu Dotazy,připomínky

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.