Zmienne oraz stałe można porównać do pudełka, które przechowuje jakąś informację. Dodatkowo masz możliwość przeprowadzania operacji na zmiennych takich jak np. dodanie do obecnej wartości zmiennej innej liczby. Nie ma co ukrywać, że zmienne są wykorzystywane w każdym języku programowania. Zmienne deklaruję się w sekcji var przed instrukcją begin. Pierwszym parametrem jest dowolna nazwa dla zmiennej dzięki, której będziemy mieli dostęp do jej wartości, dalej podajesz typ dla przechowywanych informacji przez zmienną. Poniższa tabela zawiera zbiór możliwych typów wraz z wartością:
Nazwa |
Znaczenie |
Zakres
wartości |
Przykład |
integer |
liczba
całkowita ze znakiem |
-32768..+32767 |
-14574 |
real |
liczba
rzeczywista |
2.9*10-39..1.7*1038 |
1.23245e17 |
char |
znak |
znaki
o kodach 0..255 |
'a' |
string |
napis
(łańcuch, ciąg znaków) |
ciąg
do 255 znaków |
'Napis' |
boolean |
wartość
logiczna |
prawda
(true) lub fałsz (false) |
false |
word |
słowo |
0..65535 |
56412 |
byte |
bajt |
0..255 |
127 |
shortint |
krótka
liczba całkowita ze znakiem |
-128..+127 |
-13 |
longint |
długa
liczba całkowita ze znakiem |
-2147483648..+2147483647 |
-1986734234 |
single |
krótka
liczba rzeczywista |
1.5*10-45..3.4*1037 |
3.14e01 |
double |
długa
liczba rzeczywista |
5.0*10-324..1.7*10308 |
-1.8e+234 |
extended |
bardzo
długa liczba rzeczywista |
3.4*10-4932..1.1*104932 |
4.5e2345 |
comp |
bardzo
długa liczba całkowita |
-9.2*1018..9.2*1018 |
6e12 |
pointer |
wskaźnik |
0000h:0000h..FFFFh:FFFFh |
$1234:ABCD |
Cztery pierwsze typy wymienione w tabeli stanowią podstawowy zestaw, którym będziesz posługiwał się podczas pisania programów. Typy całkowite (integer, word, shortint, byte, longint), typ znakowy (char) oraz logiczny (boolean) tworzą z kolei grupę tzw. typów porządkowych (ang. ordinal types), w ramach których określona jest relacja porządku (czyli kto przed kim, a kto po kim).
Typy całkowite używane są w programach do reprezentacji liczników, adresów i indeksów tablic oraz zawartości komórek pamięci (byte i word). Pamiętaj, że ze względu na specyficzną reprezentację wewnętrzną liczb całkowitych przekroczenie zakresu dopuszczalnego dla danego typu powoduje "przeskoczenie" na drugi koniec zakresu (np. dodanie 1 do 32767 da w wyniku -32768). Efekt ten zwykle nie jest sygnalizowany przez kompilator i może prowadzić do dość dziwacznego zachowania programów. Aby go uniknąć, możesz zastosować pojemniejszy typ (np. longint).
Drugą obszerną grupę tworzą typy rzeczywiste, przeznaczone do przechowywania wartości niecałkowitych i realizacji większości bardziej złożonych obliczeń matematycznych. W większości przypadków zadowalające rezultaty osiąga się przy użyciu liczb typu real, jednak dla poprawy dokładności, powiększenia zakresu wartości i przyspieszenia obliczeń warto odwołać się do jednego z pozostałych typów. Ich wykorzystanie wymaga zadeklarowania użycia w programie tzw. koprocesora arytmetycznego (specjalnego układu przeznaczonego do operowania na liczbach rzeczywistych, dostępnego jako oddzielny układ lub wbudowanego w procesory 486DX i "lepsze") albo tzw. emulatora, czyli specjalnego podprogramu "udającego" koprocesor. Aby było możliwe odwołanie się do koprocesora, należy włączyć opcję Numeric Processing - 8087/80287 w polu dialogowym Options-Compiler, zaś włączenie emulacji realizuje znajdująca się poniżej opcja Emulation. Alternatywą jest umieszczenie w programie tzw. dyrektyw kompilatora, mających odpowiednio postać {$N+} i {$E+}.
Typy znakowy i łańcuchowy wykorzystywane są do reprezentowania napisów i wszelkiej informacji "słownej". Typ boolean pozwala na przechowywanie wartości logicznych, wykorzystywanych do sterowania działaniem programu, zaś typ wskaźnikowy (pointer) używany jest w operacjach na zawartości pamięci komputera (nieco dziwny zapis $1234:ABCD oznacza adres komórki pamięci w postaci szesnastkowej, sygnalizowanej znakiem $).
Na tym zakończymy ten krótki rozdział. Na kolejnych kilku stronach zajmiemy się wyrażeniami i ich elementami składowymi, zaś w charakterze ćwiczenia proponuję Ci zmodyfikowanie naszego programu tak, by obliczał on pole trójkąta na podstawie wprowadzonej z klawiatury długości podstawy i wysokości.
Specjalnym rodzajem zmiennych są tak zwane stringi. Mogą one przechowywać całe łańcuchy znaków - cały tekst łącznie z liczbami. A oto przykładowe zadeklarowanie zmiennej przechowującej całkowitą wartość liczby:
var
X : Integer;
Stałe są w znacznym stopniu podobne do zmiennych. Różnią się tylko tym,
co wskazuje już sama nazwa, tzn. wartość zmiennej można zmienić podczas wykonywania
aplikacji zaś stałej nie. Zmienne deklaruję się zaraz po słowie program. Zamiast var
umieszcza się w sekcji const. Po za tym co tu gadać najlepiej przedstawię to na przykładzie:
program stale;
const
STALE = "21";
........
No i nastąpił moment, w którym mogę przedstawić Ci konieczne zastosowanie zmiennej. Przedstawię Ci teraz jak w prosty sposób możesz pobrać jakąś wartość od użytkownika twojego programu. W końcu czym byłby program do, którego nie można by wprowadzić żadnych danych ? Do pobierania danych od użytkownika służy funkcja readln(zmienna); Chyba wiele nie trzeba wyjaśniać. W nawiase podajesz nazwę zmiennej do której ma zostać zapisana wartość podana przez użytkonika.
Do wykonywania operacji na zmiennych służą tak zwane operatory. Dzięki nim można operować wartościami zmiennych. Zresztą co będę gadał. Sam przeanalizuj poniższą tabelkę:
Operator | Opis |
:= | Przypisuje zmiennej jakąś wartość |
= | Operator porównuję wartości |
+ | Dodaję wartości lub zmienne |
- | Odejmuję wartości lub zmienne |
* | Mnoży wartości lub zmienne |
/ | Dzieli wartości lub zmienne |
div | Dzieli wartości lub liczby. Zwraca wartość całkowitą |
mod | Zwraca resztę z dzielenia |
Stwórzmy teraz na podsumowanie powyższych informacji programik, który będzie pobierał od użytkownika jakąś wartość do zmiennej i podnosił ją do potęgi. Najpierw przeanalizuj źródło, później je z grubsza omówię.
program potega;
var
X : Integer;
Begin
write('Podaj jakąś liczbę: ');
readln(X);
writeln('Oto jej potęga: ', X*X);
writeln('Naciśnij enter, aby zakończyć aplikację');
readln;
end.
Na sam początek nazwa programu. Później deklarujemy zmienną "X" o typie liczby całkowitej - integer. Dalej wypisujemy wskazuwkę dla używającego program i pobieramy do wcześniej zadeklarowaniej zmiennej liczbę. Wymnażamy ją i wypisujemy wartość.