Deklaracje stałych i zmiennych
Transkrypt
Deklaracje stałych i zmiennych
Deklaracje stałych i zmiennych Głównym zadaniem prawie kaŜdego programu jest obróbka danych. Dane te są przechowywane w pamięci RAM komputera w sposób określony przez architekturę systemu, którym się posługujemy. My jednak, jako Ŝe programujemy w języku wyŜszego poziomu, nie musimy zaprzątać sobie tym głowy. Zmienne Dla nas kaŜda zmienna ma swój identyfikator - nazwę, oraz typ. Dzięki temu moŜemy uŜywać ich w bardzo naturalny sposób. Trzeba juŜ teraz zwrócić uwagę, Ŝe pascal bardzo rygorystycznie podchodzi do kwestii definiowania zmiennych i kontroli typów. W czasach największej popularności tego języka było to uwaŜane za jego główną zaletę. Oznacza to po prostu, Ŝe kaŜdą zmienną trzeba zdefiniować przed blokiem, w którym zostanie ona uŜyta: Program Zmienne; Var { Początek definicji zmiennych } A : Byte; { Instrukcja definicji składa się z trzech części: nazwy, } { dwukropka i typu. } B : Word; { Zmienna B typu Word. } C, D, E : Real; { Definicje moŜna grupować, np. zmienne C, D i E są typu Real. } { Tak więc ogólna postać definicji to: } { Var Variable1 [, Variable2, [, ...]] : Type [; ...]; } Begin A:=2; B:=17; C:=B; D:=C/A; { { { { { Przypisujemy zmiennej A wartość 2. } Zmienna B ma wartość 17. } Zmienna C przyjmuje wartość zmiennej B, czyli 17. } Instrukcja B:=C wywołałaby błąd! } D = 17 / 2, czyli 8.5. } E:=Pi*Pi; { Pi to stała predefiniowana, ale o tym kiedy indziej... } WriteLn('A = ', A); WriteLn('B = ', B); WriteLn('C = ', C:0:2); WriteLn('D = ', D:0:2); WriteLn('E = ', E); End. Tym sposobem poznaliśmy kolejną instrukcję, mianowicie przypisanie. NaleŜy przede wszystkim pamiętać, Ŝe przypisanie to nie to samo, co matematyczne równa-się. Oznacza ono nadanie zmiennej (znajdującej się po lewej) wartości obliczonej z wyraŜenia po prawej. Poprawny jest np. zapis I:=I+1;. Natomiast A:=A; choć poprawny, nie ma Ŝadnego sensu, gdyŜ przed i po wykonaniu instrukcji zmienna A ma tę samą wartość. Dwukropek ze znakiem równości (:=) to tzw. operator przypisania. Stosuje się go wyłącznie do przypisywania zmiennym wartości. W powyŜszym programie występują zmienne typu Byte, Word i Real. Pierwsze dwa typy przechowują liczby całkowite odpowiednio z przedziału 0..255 i 0..65535 (łatwo zauwaŜyć, Ŝe to 0..28-1 i 0..216-1, pierwszy typ zawiera jeden bajt - 8 bitów, a drugi jedno słowo, czyli 2 bajty - 16 bitów). Natomiast zmienna typu Real to liczba rzeczywista (zawiera część ułamkową). ZauwaŜ, Ŝe zmiennej typu Real bez problemu przypisaliśmy wartość Byte, czy Word. Gdybyśmy spróbowali tego w przeciwną stronę otrzymalibyśmy komunikat o błędzie. Dlaczego tak się dzieje? Okazuje się, Ŝe np. wartość 123 moŜe mieć zarówno liczba całkowita, jak i rzeczywista, natomiast 1.23 to wartość charakterystyczna dla tej drugiej. Nie jest to problem nie do przeskoczenia. Istnieje w Pascalu kilka funkcji, które pomogą nam obejść takie ograniczenia. Pierwsza z nich to Round(R: Real): Integer. Jako jedyny argument przyjmuje ona liczbę typu rzeczywistego, zwraca natomiast wartość zaokrągloną do najbliŜszej liczby całkowitej. W trochę inny sposób działa funkcja Trunc(R: Real): Integer. Od poprzedniej róŜni się tym, Ŝe zaokrągla liczby zawsze w dół; innymi słowy: odcina część ułamkową. Dokładniej typami zmiennych zajmiemy się w przyszłości. Na razie wystarczy nam kilka podstawowych: Do przechowywania liczb całkowitych: o Integer - Liczby całkowite ze znakiem, od -32768 do 32767, o Word - Liczby całkowite bez znaku, od 0 do 65535, o ShortInt - Liczby całkowite Ze znakiem, od -128 do 127, o Byte - Liczby całkowite bez znaku, od 0 do 255, Do przechowywania liczb rzeczywistych (patrz: Typy rzeczywiste): o Real - Liczby rzeczywiste (6 bajtów) o Single - Liczby rzeczywiste o pojedynczej precyzji (4 bajty) o Double - Liczby rzeczywiste o podwójnej precyzji (8 bajtów) - Boolean - dla wartości logicznych, np. True, False, - Char - jako jeden znak, np. 'A', #13, - String - jako ciąg znaków, np. 'Niedzwiad', 'abcdef'#32'ghijk'#13#10. Stałe Skoro juŜ wiemy czym są zmienne, zastanówmy się nad zagadnieniem stałych. Wartość stałych (jak sama nazwa wskazuje) nie zmienia się w czasie działania programu (przynajmniej nie powinna, chociaŜ - jak się później okaŜe - jest to moŜliwe). Poza tym stałe nie róŜnią się od zmiennych - posiadają swoją nazwę, typ, wartość i zajmują jakieś miejsce w pamięci. Deklaruje się je w następujący sposób: Program Stale; Const { Słowo kluczowe "Const" rozpoczyna blok definicji stałych } A = 1024; { W takim przypadku kompilator sam rozpozna tym stałej. } Imie = 'Wincenty'; { Tutaj podobnie. } Nazwisko : String = { MoŜemy przenieść resztę do następnej linii - pascal } { nie rozpoznaje znaków niepisanych - spacji, enterów, } { tabulacji. } 'Kadłubek'; { MoŜemy teŜ podać typ stałej. } B : Real = 1; { Gdybysmy nie podali typu "Real" zmienna zostałaby } { zadeklarowana jako całkowita. } Begin WriteLn(Imie, ' ', Nazwisko, ' wita.'); { Taki kod spowodowałby błąd kompilacji: Imie:='Niedzwiad'; Nazwisko:=Imie; } End. Do czego przydadzą nam się stałe? Wyobraź sobie bardzo długi kod, w którym często pojawia się ta sama wartość niech będzie 17. Jest ona kluczowa dla działania algorytmu. AŜ tu nagle pojawia się zły szef i kaŜe nam zamienić siedemnastkę na 19. Co wtedy? Gdyby nie dobrodziejstwa stałych po prostu podmienilibyśmy 32 wystąpienia tej liczby w kodzie, uwaŜając, by nie podmienić za duŜo. Na szczęście moŜemy na początku programu wpisać zwyczajnie Const K = 17; tak, Ŝeby w razie potrzeby od razu wiedzieć gdzie zajrzeć. Na koniec chcę zachęcić do częstego uŜywania stałych - niedługo przekonasz się jak bardzo poprawia to czytelność kodu.