PASCAL - FUNKCJE STANDARDOWE
W Pascalu dostępny jest szereg tzw. "Funkcji standardowych" - czyli takich funkcji i procedur, które można spotkać we
wszystkich kompilatorach.
Najważniejsze funkcje standardowe w Turbo Pascalu dające w wyniku wartość liczbową to:
•
ABS(x:real):real - Wartość bezwzględna z x
•
ARCTAN(x:real):real - Funkcja trygonometryczna ArcTg z x
•
COS(x:real):real - Funkcja trygonometryczna cosinus z x
•
EXP(x:real):real - e do potęgi x
•
FRAC(x:real):real - Część ułamkowa z liczby x
•
INT(x:real):real - Część całkowita z liczby x
•
LN(x:real):real - Logarytm naturalny z x
•
PI:real - Warość stałej pi
•
SIN(x:real):real - Funkcja trygonometryczna sinus z x
•
SQR(x:real):real - Kwadrat x
•
SQRT(x:real):real - Pierwiastek kwadratowy z x
•
ROUND(x:real):longint - Zaokrąglenie liczby x do wartości całkowitej
•
TRUNC(x:real):longint - Zaokrąglenie liczby x do wartości całkowitej przez odrzucenie części całkowitej
UWAGA: Wszystkie funkcje trygonometryczne w parametrze oczekują kąta podawanego w radianach!
A oto przykłady ich użycia:
y := 2*sin(3)+sin(2*x);
delta :=sqr(b)-4*a*c;
WRITE i WRITELN czyli pisanie po ekranie
Zwykle największą część każdego programu stanowi tzw. "Interface użytkownika". Mianem tym określa się fragment
odpowiedzialny za komunikację z użytkownikiem - najczęściej przy użyciu monitora i klawiatury.
Funkcje WRITE i WRITELN należą do specjalnej klasy procedur, która ma zmienną liczbę parametrów. Procedury te
pozwalają wypisać na ekranie wartość zmiennej, wyrażenia lub tekst.
Różnica pomiędzy obiema procedurami polega na tym, że WRITE po wypisaniu tekstu na ekranie pozostawia kursor w
bieżącym wierszu za ostatnim wypisanym znakiem (chyba, że wiersz się skończy), zaś WRITELN ustawia kursor w
pierwszej kolumnie następnego wiersza.
Parametrami procedur mogą być dowolne zmienne, stałe lub wyrażenia dające w wyniku wartość numeryczną, CHAR,
logiczną lub łańcuchową (tekst) lub wartości powyzszych typów. Poszczególne argumenty oddziela się przecinkami.
Wartości tekstowe należy zapisać w apostrofach pojedynczych.
Przykład:
WRITE('Podaj wartość x:',x);
WRITELN('x1=',(-b-sqrt(delta))/(2*a),' x2=',,(-b+sqrt(delta))/(2*a));
Szczególnym przypadkiem jest użycie funkcji WRITELN bez żadnych argumentów (także bez nawiasu), które
powoduje zakończenie wiersza i przejście kursora do następnego wiersza.
Wielkości wypisywane przez procedury WRITE i WRITELN można formatować - tzn. określać od której kolumny
rozpocznie się ich wypisywanie, a dla wartości liczbowych dodatkowo można określić ilość miejsc przed i po znaku
separatora dziesiętnego.
Formatowanie wielkości typu CHAR, logicznego, łańcuchowego i liczb całkowitych odbywa się poprzez wstawienie za
wartością znaku ":" i liczby określającej ilość kolumn zajmowanych przez wartość.
Formatowanie wielkości typu rzeczywistego odbywa się podobnie jak dla liczb całkowitych. Znak ":" i pierwsza liczba
określają ilość kolumn, które ma zajmować wypisywana wartość. Dodatkowo może wystąpić drugi znak ":" i liczba,
która określa ilość cyfr po separatorze dziesiętnym. Liczby są odpowiednio zaokrąglane.
Wartości wyrównywane są prawostronnie. Wartości nie mieszczące się w zadanym polu powodują jego rozszerzenie.
Przy formatowaniu wartości liczbowych należy pamiętać, że do wartości należy także znak i separator dziesiętny!
Przykład:
WRITELN('A=':10,a:0:3);
READ i READLN
Procedury READ i READLN służą do wczytywania danych z klawiatury. Różnica pomiędzy nimi polega na tym, że
procedura READLN po wczytaniu zadanych wartości pomija wszystkie inne znaki wprowadzone przez użytkownika aż
do naciśnięcia klawisza ENTER (znaku nowej linii). Ma to znaczenie przy wczytywaniu dużej ilości danych (np.
macierzy).
Procedura RAEDLN bez parametrów czeka aż użytkownik naciśnie klawisz ENTER - taka konstrukcja jest często
stosowana jako element wstrzymujący wykonywanie programu do chwili, kiedy użytkownik pozwoli na kontynuacje
(np. aby można było zapoznać się z wynikami).
Jeszcze pare słów o poleceniu Dec i Inc. Istnieje możliwość ustawienia zakresu o który wartość ta ma być
zwiększana:
Inc(i, 2);
Takie coś powoduje zwiększanie zmiennej i nie o jeden, ale o dwa oczka....
Low() - zwraca wartość najmniejszą typu lub zmiennej będącej argumentem funkcji
Hight() - zwraca wartość najmniejszą typu lub zmiennej będącej argumentem funkcji
Funkcje "Pred" i "Succ"
Funkcje te mają bardzo podobne działania do Inc i Dec. Z tą różnicą, że Perd i Succ zwraca rezultad gdyż
jest to funkcja. Pred zmniejsza o jeden swój parametr:
Pred(10);
// zmniejszanie o jeden - da cyfre 9
Natomiast Succ odwrotnie - zwiększa o jeden:
Succ(9);
// zwiększenie o jeden - da cyfrę 10
Object Pascal oferuje także zaokrąglanie liczb w górę lub w dół. Służa do tego polecenia: Trunc i Round:
I := Round(8 / 3);
// zaokrąglanie do góry - da cyfre 3
I := Trunc(8 / 3);
// zaokrąglanie do dołu - da 2
możliwe jest także obcinanie reszty do zera lub miejsca przed przecinkiem do zera.
I := Frac(8 / 3);
//0.667
I := Int(18 / 3);
// da 2
W tym przykładze następuje rzutowanie zmiennej "Byte" na "Char".
var
B : Byte;
C : Char;
begin
B := 123;
// jakas cyfra
C := Char(B);
// rzutowanie
ShowMessage(C);
var
B : Byte;
C : Char;
begin
B := 123;
// jakas cyfra
C := Chr(B);
// zamiana ( uzyskanie znaku poprzez zamiane cyfry )
ShowMessage(C);
Istnieje też funkcja, która to odwraca - tzn., podajesz znak, a funkcja zamienia ten znak na numer ASCII tego
znaku. Do tego służy funkcja "Ord":
var
B : Byte;
C : Char;
begin
C := '{';
// znak
B := Ord(C);
// uzyskanie numeru znaku
ShowMessage(IntToStr(B));
// wyswietlenie numeru