Wyrażenie stałe

Wyrażenie stałe jest to wyrażenie zapisane w kodzie źródłowym programu, którego wartość może zostać wyznaczona przez translator już na etapie kompilacji.

W kodzie źródłowym często umieszczane są konkretne wartości, znane na etapie kodowania. Wartości te mogą zostać zapisane za pomocą literałów reprezentujących w danym typie konkretną wartość. W większości implementacji możliwe jest również zapisanie takich wartości w postaci wyrażeń stałych.

Wyrażenia stałe w odróżnieniu od literałów nie stanowią zapisu wprost wartości, lecz jest to zapis wartości za pomocą literałów, w tym zdefiniowanych wcześniej stałych, symboli i makr preprocesora, operatorów oraz wybranych funkcji standardowych. Określona wartość, która ma zostać wpisana do kodu źródłowego, wymaga w tym przypadku wykonania obliczeń. W większości systemów programowania wyrażania takie są obliczane w trakcie przetwarzania kodu źródłowego przez translator, do kodu wynikowego wstawiana jest wyznaczona wartość wyrażenia stałego (a nie kod obliczeniowy zawarty w wyrażeniu).

Stosowanie wyrażeń stałych:

  • uwalnia programistę od pewnych obliczeń przy kodowaniu,
  • stanowi samodokumentowanie się kodu źródłowego, ułatwiające jego późniejsze zrozumienie,
  • ułatwia pisanie złożonych projektów przez grupy programistów (np. poprzez stosowanie wcześniej definiowanych przez innych programistów stałych lub symboli preprocesora bez konieczności znajomości ich wartości, a więc pewne parametryzowanie kompilacji).

Typ wartości wyrażenia stałego wynika najczęściej z kontekstu lub zastosowanych literałów i operatorów. Gdy język dopuszcza takie wyrażenia, to mogą występować wszędzie tam, gdzie można stosować literały reprezentujące konkretne wartości.

Wyrażenia stałe często stosowane są przy deklarowaniu stałych i inicjalizacji zmiennych (zwane także wyrażeniami inicjującymi).

język programowaniamożliwość stosowaniaprzykłady
Turbo Pascal[1]
  • literały
  • operatory
  • zadeklarowane wcześniej stałe
  • wybrane funkcje standardowe modułu System
  • const A=15+Ord('A');
  • const S='A'+'B'+Chr(10)+#$D;
  • const Z=['0'..'9']+['A'..'Z'];
Turbo C[2]
  • literały
  • operatory
  • stałe preprocesora
  • zmienne zainicjowane
  • funkcje
  • int v=5+STALA_PREPR;
  • double x=3-sin(0.2);
Clipper 5.0[3]
  • literały
  • operatory
  • zadeklarowane wcześniej stałe
  • stałe preprocesora
LOCAL x:=12+15/STALA_PREPR
PL/I[4]
  • literały
  • operatory
  • stałe preprocesora
  • zmienne zainicjowane
  • procedury
  • DCL N INITAL(CALL IN(2));
  • DCL (X DEC, Y BIN) INITIAL(5+6-N);
Modula-2[5]
  • literały
  • operatory
  • zadeklarowane wcześniej stałe
  • CONST N=16-1;
  • CONST M=N*N-1;

Zobacz też

Przypisy

  1. Andrzej Marciniak, Borland Pascal 7.0, Wyd. Nakom, Poznań 1994 r., seria: Biblioteka Użytkownika Mikrokomputerów, ISBN 83-85060-53-7, ISSN 0867-6011
  2. Jan Bielecki, Turbo C z grafiką na IBM PC, Wydawnictwa Naukowo-Techniczne, Warszawa 1990, Seria: Mikrokomputery, ISBN 83-204-1101-7
  3. Wojciech Rogowski, Arkadiusz Serodziński, Clipper 5.0, Warszawa: Wydawnictwo PLJ, 1991, ISBN 83-85190-20-1, OCLC 749775734.
  4. Jan Bielecki, Rozszerzony PL/I i JCL w systemie OS/RIAD, Państwowe Wydawnictwo Naukowe, Warszawa 1986, Seria: Biblioteka Informatyki, ISBN 83-01-06146-4
  5. Niklaus Wirth, Modula-2, Wydawnictwa Naukowo-Techniczne, Warszawa 1987, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0828-8