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:
- w kodzie (treści) programu
- w kodzie, w prologu instrukcji iteracyjnej
- w wywołaniu podprogramu w wyniku przypisania parametrowi wartości argumentu
- w wywołaniu podprogramu w wyniku przypisania parametrowi wartości domyślnej argumentu
- w specjalnym bloku, sekcji
- w deklaracji zmiennej.
Wartości inicjujące
W przypadku inicjalizacji zmiennej w deklaracji lub w specjalnym bloku, wartość inicjująca musi zostać zapisana w postaci:
- literału, lub
- wyrażenia stałego.
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.
Język programowania | Forma zapisu | Przykład |
---|---|---|
Fortran | DATA zm1, zm2, … zm_n /w1, w2, … w_n/ | DATA A, B, C /1, 2, 3/ |
Icon | deklaracje 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.
Język programowania | Forma zapisu | Przykład |
---|---|---|
Ada | identyfikator : typ:=wartość; | a : INTEGER:=1; |
C | typ identyfikator=wartość; | int a=1; |
Clipper 5.0 | deklamator identyfikator:=wartość | PRIVATE a:=1 |
JavaScript | var 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 Pascal | const 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 klasa | Dim St As New Stack(Long) |
Uwagi
- ↑ Konstrukcja dostępna od C# 3.0 – var (C# Reference). MSDN. [dostęp 2012-09-30]. (ang.).
Bibliografia
- Ryszard K. Kott, Krzysztof Walczak. Programowanie w języku Fortran 77, Wydawnictwa Naukowo-Techniczne, Warszawa 1991, ISBN 83-204-1362-1
- Andrzej Marciniak, Borland Pascal 7.0, Wyd. Nakom, Poznań 1994 r., ISBN 83-85060-53-7, ISSN 0867-6011
- Jan Bielecki, Turbo C z grafiką na IBM PC, Wydawnictwa Naukowo-Techniczne, Warszawa 1990, Seria: Mikrokomputery, ISBN 83-204-1101-7
- Wojciech Rogowski, Arkadiusz Serodziński, Clipper 5.0, Wydawnictwo PLJ, Warszawa 1991, ISBN 83-85190-20-1
- 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
- Ralph E. Griswold, Madge T. Griswold, Icon, Wydawnictwa Naukowo-Techniczne, Warszawa 1987, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0871-7
- A. Nico Habermann, Dewayne E. Perry, Ada dla zaawansowanych, Wydawnictwa Naukowo-Techniczne, Warszawa 1989 r., seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-1058-4