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

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.