Wejście wyjście znakowe (I/O)
Procedury wyjścia:
write( f, p ) , gdzie f jest zmienną plikową
write( p )
writeln( f, p )
writeln( p )
writeln( f )
writeln
Procedury wejścia:
read( f, p )
read( p )
readln( f, p )
readln( p )
readln( f )
readln
Obsługa klawiatury
Każde wciśnięcie klawisza powoduje wprowadzenie do bufora klawiatury kodu lub kodów znaku odpowiadającego wciśniętemu klawiszowi. Bufor ten ma określoną pojemność. Jeżeli znaki wprowadzone do bufora nie zostaną z niego usunięte, to bufor się zapełni i nie będzie przyjmował kolejnych znaków. Objawia się to charakterystycznym piszczeniem przy wciskaniu klawiatury. Do obsługi bufora klawiatury służą poniższe funkcje.
ReadKey Wywołanie tej bezparametrowej funkcji powoduje pobranie znaku z bufora klawiatury. Po jej wywołaniu znak ten jest usuwany z bufora.
KeyPressed Funkcja zwraca wynik typu logicznego, który mówi czy w buforze klawiatury jest jakiś (choćby jeden) znak do pobrania. Jeśli w klawiaturze są znaki do pobrania to wynik jest TRUE jeśli bufor jest pusty to wynik jest FALSE.
Funkcje matematyczne
Funkcja |
Przykład |
Opis |
abs |
y := abs(x) |
wartość bezwzględna |x| |
cos |
y := cos(x) |
kosinus kąta x [rad] |
exp |
y := exp(x) |
e do potęgi x czyli ex |
ln |
y := ln(x) |
logarytm naturalny z x czyli ln(x) |
pi |
y := pi |
liczba p (funkcja bezargumentowa) |
sin |
y := sin(x) |
sinus kąta x [stopnie kąta podawane w radianach] |
sqr |
y := sqr(x) |
kwadrat liczby x czyli x2 |
sqrt |
y := sqrt(x) |
pierwiastek kwadratowy z liczby x |
x do potęgi y czyli x y w Pascalu zapiszemy tak: exp(y*ln(x))
Funkcje dla typów porządkowych
Ord( w ) Funkcja ta zwraca wynik typu integer, który podaje "numer" porządkowy danej wartości porządkowej w. Np.:
Typ w |
w |
Ord(w ) |
integer |
-10 |
-10 |
Boolean |
false |
0 |
Boolean |
true |
1 |
Char |
'a' |
97 |
(slony, gorzki, kwasny) |
gorzki |
1 |
Pred( w ), Succ( w ) Funkcje te zwracają wynik typu zgodnego z typem wyrażenia w. Funkcja Pred() zwraca poprzednika wartości w o ile taki istnieje, natomiast funkcja Succ() zwraca następnika wartości w o ile taki istnieje. Oto przykłady:
Typ w |
Pred(w ) |
w |
Succ(w ) |
integer |
-11 |
-10 |
-9 |
integer |
5 |
6 |
7 |
Boolean |
** błąd ** |
false |
true |
Boolean |
false |
true |
** błąd ** |
Char |
'b' |
'c' |
'd' |
(slony, gorzki, kwasny) |
** błąd ** |
slony |
gorzki |
Dec( z ), Inc( z ),
Procedury te modyfikują wartość zmiennej z. Wywołanie Dec(z) jest równoważne z := Pred(z) a wywołanie Inc(z) odpowiada wyrażeniu z := Succ(z). Np.:
Typ z |
z przed |
Przykład |
z po |
integer |
-10 |
Inc(z) |
-9 |
Char |
'h' |
Inc(z) |
'i' |
(slodki, slony, kwasny, pikantny, gorzki) |
kwasny |
Inc(z) |
pikantny |
Konwersja typów
W poniższych opisach n, m oraz i są wyrażeniami typu całkowitego; x jest wyrażeniem typu rzeczywistego; w - wyrażeniem typu liczbowego; s -wyrażeniem typu string a vs - zmienną typu string
Chr() - zamiana char na integer
Round() - zamiana real na integer
Str() - zamiana liczba na string
Trunc() - zamiana real na integer
Val() - zamiana string na liczba
Chr( n ) Funkcja dokonuje konwersji z typu całkowitego na znakowy. Wynik funkcji jest typu Char czyli znak o kodzie n.
Wywołanie |
Wynik |
Uwagi |
Chr(27) |
|
Znak ESC - niedrukowalny |
Round( x ), Trunc( x )
Obie funkcje dokonują konwersji z typu rzeczywistego na całkowity. Wynikiem funkcji jest liczba typu całkowitego (LongInt). W przypadku funkcji Round() konwersja polega na zaokrągleniu, zgodnie z zasadami stosowanymi w matematyce, wyrażenia x do liczby całkowitej. Natomiast w przypadku funkcji Trunc() konwersja polega tylko na obcięciu części ułamkowej.
Wywołanie |
Wynik |
Round(1.25) |
1 |
Str( w, vs )
Procedura dokonuje konwersji z typu liczbowego na typ łańcuchowy. Pierwszy parametr w może być uzupełniony opisem pola w formacie
w : n
lub tylko dla wyrażeń rzeczywistych w formacie
w : n : m
Tu n oznacza szerokość pola a m liczbę miejsc po przecinku. Sens opisu pola jest identyczny jak w procedurze write, writeln. Szczegóły w opisie szerokości pola tych procedur. Działa to tak, że w jest zamieniane na łańcuch tekstowy a następnie jest on wstawiany do zmiennej vs. Jeżeli rozmiar zmiennej vs nie pozwala na wpisanie całego łańcucha to do zmiennej vs zostanie wstawionych tylko tyle znaków, ile może się w niej zmieścić.
Rozmiar s |
Wywołanie |
Wynik |
1 |
str(12,s) |
'1' |
Val( s, z, e )
Procedura dokonuje konwersji z typu łańcuchowego na liczbowy. Tutaj z jest zmienną typu rzeczywistego lub całkowitego natomiast e jest zmienną typu word. Procedura działa podobnie jak procedura read. Dokonuje ona zamiany napisu s na liczbę typu zgodnego z typem zmiennej z, o ile taka konwersja jest możliwa. Do zmiennej e wpisywany jest kod błędu. Jeśli konwersja przebiegła bezbłędnie, to e=0. Jeśli wystąpił błąd, to w e znajdzie się numer znaku z łańcucha s, który spowodował ten błąd.
Wywołanie |
z |
e |
Uwagi |
val('1234',z,e) |
1234 |
0 |
ok |
Przetwarzanie łańcuchów tekstowych
W poniższych opisach n oraz i są wyrażeniami typu całkowitego; s -wyrażeniem typu string a vs - zmienną typu string
Length() - długość łańcucha
Copy() - wydzielenie podłańcucha
Pos() - znalezienie podłańcucha
Delete() - usunięcie podłańcucha
Insert() - wstawienie łańcucha do łańcucha
Length( s )
Funkcja zwarca długość łańcucha tekstowego s jako liczbę typu całkowitego (byte).
Wywołanie |
Wynik |
Length('Free Pascal') |
11 |
Copy( s, i, n )
Funkcja, której wynikiem jest dana typu string, wyciąga z łańcucha s podłańcuch o długości co najwyżej n znaków zaczynający się od pozycji i-tej. Znaki w łańcuchu numerowane są od 1 w górę.
Wywołanie |
Wynik |
copy('Free Pascal',6,6) |
'Pascal' |
Pos( s1, s )
Funkcja zwraca wynik typu całkowitego, który jest numerem pozycji w łańcucha s, od której zaczyna się podłańcuch s1. Jeżeli łańcuch s nie zawiera podłańcucha s1 to wynikiem jest 0.
Wywołanie |
Wynik |
pos('Free', 'Free Pascal') |
1 |
Delete( vs, i, n )
Procedura ta usuwa ze zmiennej łańcuchowej vs podłańcuch o długości conajwyżej n znaków zaczynający się od pozycji i-tej. Znaki w łańcuchu numerowane są od 1 w górę.
s przed |
Wywołanie |
s po |
'Free Pascal' |
delete(s,5,7) |
'Free' |
Insert( s, vs, i )
Procedura wstawia łańcuch s do zmiennej łańcuchowejvs począwszy od pozycji danej wyrażeniem i
s przed |
Wywołanie |
s po |
'Pascal' |
insert('Free ',s,1) |
'Free Pascal' |
Inne funkcje modułu CRT
W poniższym opisie w - jest wyrażeniem typu Word; b, x, y - wyrażeniami typu Byte
ClrScr - procedura czyści ekran (aktualne okno) w kolorze tła u ustawia kursor w lewym górnym rogu
ClrEol - procedura czyści wiersz od miejsca połozenia kursora do konica lini pozostawiając kursor na swoim miejscu.
GoToXY(x,y) - procedura ustawia kursor w x-tej kolumnie i y-tym wierszu. Lewy górny róg ma współrzędne (1,1)
WhereX, WhereY - bezparametrowe funkcje podające położenie kursora (kolumnę, wiersz) jako liczbę typu Byte
TextBackground(b) - procedura ustalająca kolor tła b = 0 .. 15 (dodanie 128 daje efekt migania)
TextColor(b) - procedura ustalająca kolor tekstu b = 0 .. 15.
LowVideo, HighVideo, NormVideo - procedury: przyciemniają (Low), rozjaśniają (High) kolor tekstu, albo przywracają początkowe (jak w chwili uruchomienia programu) ustawienia kolorów (NormVideo).
CursorOff, CursorOn, CursorBig - procedury ukrywają (off), przywracają (on) lub zmieniają kursor na duży (big).
DelLine, InsLine - procedury usuwają wiersz (del) lub wstawiają (ins) pusty w miejscu położenia kursora. Powoduje to przewinięcie części ekranu znajdującej się poniżej kursora, w górę ze wstawieniem pustego wiersza u dołu ekranu dla (del) lub w dół dla (ins)
Delay(w) - procedura zawiesza wykonanie programu na w milisekund.
Sound(w), NoSound - procedury włączają (sound) dźwiek o częstotliwości w Hz lub wyłączają (nosound).
4