Stała (informatyka)

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

Stała - identyfikator, któremu przypisana wartość (liczbowa, tekstowa, itp.) nie może być zwykle zmieniana podczas wykonywania programu (chyba, że stosuje on samomodyfikujący się kod). Choć wartość ta jest określana tylko raz, można się do niej odwoływać w programie wielokrotnie (w zależności od jej widoczności). Stosowanie stałej zamiast wielokrotnie tych samych wartości, wyrażeń stałych, literałów itp., nie tylko ułatwia konserwację kodu, ale i dostarcza dla niej nazwę opisową, zwiększając czytelność kodu.

Wartość stałej w zależności od języka może być:

  • znana na etapie kompilacji i nie może się zmienić w trakcie działania programu (const w Pascalu, const w C i C++);
  • ustawiona jednorazowo (jeśli dotyczy stałego wskaźnika), a potem nie może się zmienić, jednak obiekt wskazywany przez ten stały wskaźnik może zmieniać swoje wartości (const w C++, final w Javie);
  • ustawiona jednorazowo (jeśli dotyczy przekazywania parametrów funkcji przez stałą), a potem również nie może się zmienić, ponieważ takie parametry są przekazywane przez wartość (const w C/C++);

W języku C/C++:

#define PI 3.1415
 
float func(const float foo) {
    const float foo2 = 2.7182*sin(PI);
    ...
}


Stała jest często mylona z literałem, który jest zapisem danej wartości w danym punkcie programu. Stała jest natomiast identyfikatorem przypisanym do danego literału. Każde wystąpienie tego identyfikatora w kodzie źródłowym programu jest równoznaczne z wystąpieniem odpowiadającego mu literału.[1]

W przypadku języka Turbo Pascal stała może mieć dwie postacie:

identyfikator = wyrażenie_stałe;

lub

identyfikator : typ = literał_danego_typu;

Wyrażenie stałe, w najprostszym przypadku, jest liczbą, łańcuchem lub nazwą literału (identyfikatorem stałej)[1] Druga postać stałej stosowana jest do zdefiniowania literału zmiennego. Literały zmienne mogą być traktowane jak zmienne (i takie też mają własności), którym przypisano wartość początkową. Mogą one w kodzie źródłowym zmieniać swoją pierwotną wartość, jednak nie są one reinicjalizowe. Toteż w przypadku zdefiniowania ich lokalnie w funkcji lub procedurze, literały zmienne posiadają wartości z poprzedniego wywołania. Z tego też względu zaleca się używanie ich wyłącznie w sposób jakby były stałymi.[1]

const e    = 2.7182;      { pierwsza postać stałej }
      imie = 'Adam';
      wiek  : byte = 33;   { druga postać stałej - literały zmienne }
      lan   : string[7] = 'alfa'; 
      digit : array [0..5] of char = ('0','1','2','3','4','5');


Także dyrektywa #define w językach C i C++ nie jest stałą, lecz poleceniem dla preprocesora, aby ten odpowiednio zmodyfikował tekst kodu źródłowego przed przekazaniem go kompilatorowi − czyli zastąpił odpowiednią nazwę określonym tekstem, np.:

#define begin {

zastępuje każde wystąpienie (prócz wystąpień w cudzysłowach) słowa "begin" znakiem "{"

Zobacz też[edytuj | edytuj kod]

Przypisy

  1. 1,0 1,1 1,2 Andrzej Marciniak, Turbo Pascal 7.0, Wyd. Nakom, Poznań 1994 r., seria: Biblioteka Użytkownika Mikrokomputerów, ISBN 83-85060-68-5, ISSN 0867-6011