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.