Inicjalizacja zmiennej

Inicjalizacja zmiennej to konstrukcja programistyczna polegająca na nadaniu zmiennej wartości początkowej.

Rodzaje inicjalizacji

Nadanie zmiennej wartości początkowej może być dokonane:

Wartości inicjujące

W przypadku inicjalizacji zmiennej w deklaracji lub w specjalnym bloku, wartość inicjująca musi zostać zapisana w postaci:

Wynika to z faktu, że wartości te muszą być znane na etapie kompilacji. W pozostałych przypadkach, wartość ta może być wyznaczona dopiero w trakcie wykonywania programu, co skutkuje brakiem powyższych ograniczeń.

Inicjalizacje zmiennych

Inicjalizacja w kodzie

Inicjalizacja zmiennej w kodzie jest zwykłą konstrukcją nadania wartości zmiennej, niczym nie różniącą się od dalszych, kolejnych przypisań nowych wartości. Takie nadanie wartości następuje najczęściej w wyniku wykonania przypisania. Ta forma jest dostępna we wszystkich językach programowania, nawet jeżeli specyfika języka inaczej nazywa daną operację (innym terminem). W językach programowania, w których nie wymaga się deklarowania wszystkich zmiennych występujących w kodzie, taka inicjalizacja jest równocześnie deklaracją dynamiczną danej zmiennej, która skutkuje utworzeniem tej zmiennej z nadaną wartością początkową.

Inicjalizacja w prologu pętli

Taka inicjalizacja dotyczy zmiennej sterującej pętlą, w prologu tej pętli, tj. przed przebiegiem pierwszej iteracji. Takiej zmiennej przypisywana jest wartość początkowa zakresu wartości, które będą przyjmowane przez tę zmienną, przy przejściach do kolejnych powtórzeń pętli. Należy jednak zauważyć, że w wielu językach zmienna sterująca może być zwykłą zmienną, która wcześniej bierze udział w różnych obliczeniach i może mieć już nadaną wartość, nie jest już potrzebna inicjalizacja (np. C, C++). W innych językach, mimo że taka zmienna ma już nadaną określoną wartość, być może właściwą, składnia i tak wymaga inicjalizacji takiej zmiennej dla bloku instrukcji iteracyjnej (np. Pascal). I w końcu może być tak, że zmienna sterująca jest lokalna dla danej pętli i wymaga inicjalizacji (np. Ada).

Inicjalizacja parametru argumentem

Inicjalizacja zmiennej powstałej podczas wywołania podprogramu i będącej określonym parametrem, zgodnie z deklaracją danego podprogramu, zależna jest od sposobu kojarzenia argumentów z parametrami formalnymi. Występuje ona w instrukcji wywołania, bądź w wywołaniu podprogramu funkcyjnego w wyrażeniu.

Inicjalizacja domyślna parametru

Przypisanie wartości domyślnej do parametru następuje w instrukcji wywołania lub w wywołaniu funkcji, tylko w przypadku, gdy na liście argumentów nie wyspecyfikowano wartości (argumentu) odpowiadającej kolejnemu parametrowi formalnemu. Poza tym obowiązują zasady identycznej inicjalizacji takiego parametru jak wyżej (jak przy skojarzeniu argumentu z parametrem).

Inicjalizacja w specjalnym bloku, sekcji

Specjalna sekcja, w danym bloku kodu, służąca inicjalizacji zmiennych, jest wykonywana tylko jednokrotnie, przy pierwszym wykonaniu/wywołaniu danego bloku, sekcji. Taka konstrukcja umożliwia nadawanie wartości np. zmiennym statycznym przy pierwszym wywołaniu i zachowanie nowych, zmieniony w wyniku wykonania kodu bloku wartości, w kolejnych wykonaniach/wywołaniach danego bloku.

Inicjalizacja zmiennych w specjalnym bloku, sekcji
Język programowaniaForma zapisuPrzykład
FortranDATA zm1, zm2, … zm_n /w1, w2, … w_n/DATA A, B, C /1, 2, 3/
Icondeklaracje lokalne initial <wyrażenie | {wyrażenia}>static a initial{a=1}

Inicjalizacja w deklaracji zmiennej

Inicjalizacja zmiennej w deklaracji tej zmiennej jest możliwa w wielu językach programowania, choć istnieją języki, w których taka konstrukcja jest niedopuszczalna. Pewne nowsze implementacje języków, w których nie ma tej konstrukcji, mogą ją wprowadzać. Ten sposób nadawania zmiennej wartości początkowej najskuteczniej zapobiega błędom, polegającym na odwołaniu do niezainicjowanej zmiennej, tzn. takiej zmiennej, której nie nadano jeszcze wartości.

Inicjalizacja zmiennych w deklaracjach
Język programowaniaForma zapisuPrzykład
Adaidentyfikator : typ:=wartość;a : INTEGER:=1;
Ctyp identyfikator=wartość;int a=1;
Clipper 5.0deklamator identyfikator:=wartośćPRIVATE a:=1
JavaScriptvar identyfikator= wartość;var a=1;
MASM (Makroasembler)identyfikator DYREKTYWA_TWORZĄCA wartośćZM DB 1
PL/I<DECLARE | DCL> lista_identyfikatorów atrybuty <INITIAL | INIT>(wartość);DCL A FIXED(2,0) INIT(1);
Turbo Pascalconst identyfikator : typ=wartość;const a:integer=1;
C#typ indentyfikator=wartość;int a=1;
var identyfikator=wartość;[a]var a=1;
Visual Basic (Visual Studio 2008)Dim identyfikator [As typ]=wartośćDim A As Integer = 1
Dim identyfikator As New klasaDim St As New Stack(Long)

Uwagi

  1. Konstrukcja dostępna od C# 3.0 – var (C# Reference) (ang.). MSDN. [dostęp 2012-09-30].

Bibliografia

Zobacz też