TRYB TEKSTOWY


Do tej pory pracowaliśmy w trybie graficznym. Ekran był podzielony na punkty (piksele, 640x480) i każdy można było zmieniać zapalając je w 16 różnych kolorach. Kursor graficzny skazywał punkt, od którego zaczynamy rysować. W trybie tekstowym ekran jest podzielony na pola (80x25), na których można wyświetlić znaki z alfabetu ASCII w 16 kolorach. Miejsce w którym będą się pojawiać znaki wskazuje kursor tekstowy (pozioma mrugająca kreska).

Instrukcje wejścia i wyjścia

Program, by jego działanie miało jakiś sens musi oczywiście przyjmować dane, przekształcać je i wyprowadzać wyniki. Przyjmowanie danych realizujemy za pomocą instrukcji wejścia (READLN), wprowadzając dane za pomocą klawiatury. Wyjście, czyli wyprowadzane wyników, realizujemy na ekranie monitora za pomocą instrukcji WRITE i WRITELN. 

Przykłady zastosowania obu instrukcji przedstawiono poniżej:

writeln(‘Pascal’);      na ekranie wyraz Pascal i kursor przeskoczy do nowego wiersza

write(‘Pascal’);          na ekranie wyraz Pascal i kursor na końcu tego wyrazu kursor nie przenosi się do nowego wiersza

writeln;                       nowy wiersz - kursor przeskakuje do nowego wiersza

write(‘Ala ‘);             

write(‘ma ‘);               na ekranie napis Ala ma kota w jednym wierszu

writeln(‘kota’);          i kursor przeskoczył do nowego wiersza - ostatnie writeln

writeln(‘Ala ‘,’ma ‘,’kota’);              jak poprzednio - instrukcja ma 3 parametry

x:=’Ala ‘; writeln(x,’ma kota’);   jak poprzednio - wypisana zawartość zmiennej x

writeln(2);                  na ekranie pojawi się cyfra 2

writeln(2+2);              na ekranie pojawi się cyfra 4

writeln(‘2+2=’;2+2);          na ekranie pojawi się napis 2+2=4

readln(x);              program oczekuje na wpisanie informacji z klawiatury (mruga kursor). Po wpisaniu danych naciskamy klawisz ENTER i w tym momencie dane zostają przypisane do zmiennej x. Zmiennymi mogą być teksty lub liczby, w zależności od typu zmiennej. Jeśli np. zmienna liczba jest typu byte, to po wpisaniu z klawiatury liczby 25, instrukcja writeln((liczba-20)*3);  wypisze na ekranie liczbę  15

Formatowania wyprowadzanych na ekran napisów

Podczas wyprowadzania na ekran liczb rzeczywistych, np. writeln(10/3);  komputer formatuje liczbę w postaci wykładniczej  3.333333333E+00. Istnieje sposób, aby ta liczba była napisana bardziej „zrozumiale”. Jeśli np. instrukcja będzie wyglądała tak: writeln(10/3:8:3);  na ekranie pojawi się:     3.333. Dodatkowe liczby 8 i 3 oznaczają, że na wynik działania rezerwujemy 8 miejsc, w tym 3 na część ułamkową. Jeśli chcemy bez miejsc po przecinku - wpisujemy np. writeln(10/3:8:0); 

Inne instrukcje

Jeśli chcemy używać dodatkowych instrukcji w trybie tekstowym, musimy używać modułu o nazwie CRT (podobnie jak GRAPH w trybie graficznym);

CLRSCR;               wyczyszczenie ekranu tekstowego - kursor w lewym górnym rogu

TEXTCOLOR()kolor);                        zmiana koloru wyświetlanych tekstów, kolor - 0..15

TEXTBACKGROUND(tło);              zmiana tła, na którym wyświetlane są teksty, tło - 0..7

GOTOXY(x,y);                                     ustawienie kursora w polu o współrzędnych x i y

 

wpisujemy na ekranie teksty i liczby, 
podajemy szerokość napisu i liczbę cyfr po przecinku jeśli to liczba

TEKST03.PAS
program tekstowe03;
uses crt;
var
  liczba:real;         {jeśli wprowadzono liczbę}
  tekst:string;        {jeśli wprowadzono tekst}
  szerokosc,           {szerokość na ekranie - ile odstępu od lewej strony}
  poprzecinku:integer; {ile miejsc po przecinku}
  kod:integer;         {funkcja VAL mówi nam o błędzie}

begin
  clrscr;
  repeat
   write('Wpisz coś: ');
   readln(tekst);            {wpisujemy w postaci tekstowej}
   val(tekst,liczba,kod);    {tu zamieniamy tekst na liczbę}
   if length(tekst) > 0 then {gdy coś wpisano to sprawdzamy}
    if kod <> 0               {gdy jest błąd - wprowadzono tekst}
    then
     begin
      write('Wpisałeś tekst.    ');
      write('Szerokość napisu: ');
      readln(szerokosc);
      writeln(tekst:szerokosc);
     end
    else                      {gdy błędu nie było - wprowadzono liczbę}
     begin
      writeln('Wpisałeś liczbę.');
      write('Szerokość liczby: ');
      readln(szerokosc);
      write('Po przecinku: ');
      readln(poprzecinku);
      writeln(liczba:szerokosc:poprzecinku);
     end;
   writeln;
  until length(tekst)=0;      {koniec gdy wciśniemy enter - pusty napis}
  clrscr;                      {zostawiamy po sobie pusty ekran}
end.


program duzy_lotek;
var
  kule:array[1..49] of byte; {1-niewylosowane  0-wylosowane}
  losy:array[1..6] of byte;  {numery wylosowanych kul}
  i,k:byte;

begin
  for i:=1 to 49 do {kule niewylosowane}
    kule[i]:=1;
  for i:=1 to 6 do  {nie wylosowano zadnej}
    losy[i]:=0;
  randomize;
  i:=0;
  repeat
    k:=random(49)+1;
    if kule[k]<>0 then
    begin
      i:=i+1;
      
      losy[i]:=k;  {zapamietac wylosowana liczbe}
      kule[k]:=0;  {kula juz wylosowana}
    end;
  until i=6;
end.