Zmienne i stałe

1. Deklarowanie oraz rodzaje zmiennych

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;

2. Stałe

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";

........

3. Pobieranie danych od użytkownika

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.

4. Operatory

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ę:

OperatorOpis
:=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
divDzieli wartości lub liczby. Zwraca wartość całkowitą
modZwraca 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ść.