Stała (informatyka)

Stała - symbol, 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 Object Pascalu i Pascalu);
  • 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ęzykach C/C++ nie ma typowych stałych, w zamian używa się dyrektywy preprocesora #define, natomiast w poniższym przykładzie foo2 to tzw. literał zmienny, czyli zmienna (wraz ze wszystkimi jej własnościami), która jest traktowana jak stała.:

#define PI 3.1415

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

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 {.

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ęzyków Object Pascal i Pascal stała może mieć dwie postacie[2][3]:

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, zwanego też stałą typowaną[4] (ang. typed constant). 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 reinicjalizowane. 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 taki 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');

Zobacz też

Przypisy

  1. a b c 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
  2. Constants - Free Pascal wiki, wiki.freepascal.org [dostęp 2021-12-18].
  3. Declared Constants - RAD Studio, docwiki.embarcadero.com [dostęp 2021-12-18].
  4. Typed constants, www.freepascal.org [dostęp 2021-12-18].