Programowanie/Podstawowe konstrukcje/Zmienna

Zmienna

edytuj

Zmienna jest synonimem pewnego obszaru pamięci, służącego do przechowywania danych.

Zmienna ma nazwę oraz wartość. Nazwa pozwala na jednoznaczną identyfikację zmiennej. Nazwa ma formę orzekającą.

Część języków programowania (w tym język C) przed pierwszym użyciem zmiennej wymaga jej zadeklarowania – musimy powiadomić kompilator, że w programie będziemy chcieli użyć zmiennej, podać jej nazwę i typ. Niektóre języki skryptowe nie wymagają deklarowania zmiennych przed pierwszym użyciem.

Typ zmiennej

edytuj

Typ zmiennej określa rodzaj danych przechowywanych w danej informacji. Najczęściej wykorzystywane typy zmiennych to liczba całkowita, liczba rzeczywista, wartość logiczna (prawda/fałsz), pojedyncza litera, napis. Ściślej ujmując, typ składa się z trzech elementów:

  • zbiór wartość przechowywanych przez zmienną (jakie informacje przechowuje zmienna)
  • zbiór relacji (np. czy napis może być porównany z liczbą rzeczywistą)
  • zbiór operacji (jakie działania można wykonać z danych rodzajem zmiennej)

Każda zmienna posiada pewien rozmiar (zajmuje określoną liczbę bajtów) i może przechować określoną wielkość danych.

Przykładowo, typ znakowy (w języku C jest to char) zajmuje jeden bajt i przechowuje kod jednego znaku ASCII. Na jednym bajcie można przechować 256 wartości (2^8) i liczba znaków w tabeli ASCII wynosi także 256 (nie wszystkie znaki są literami, część spełnia inne role).

//deklaracja zmiennej przechowującej znak
char znakASCII;

// przypisanie wartości zmiennej
znakASCII = 'a';
// teraz zmienna znakASCII przechowuje litekę 'a'

Drugi przykład. Liczba całkowita. W języku C dostępne jest wiele typów danych całkowitoliczbowych. Zostało to opisane w dokumentacji języka C (także w książce Wikibooks o języku C). Określona kombinacji bitów w zmiennej całkowitoliczbowej może przechować liczbę całkowitą.

//deklaracja przykładowej zmiennej całkowitej bez znaku (nieujemnej)
unsigned int liczbaAtomowa;

// przypisanie wartości zmiennej
liczbaAtomowa = 2;
// teraz zmienna liczbaAtomowa przechowuje liczbę 2

Przypisanie wartości zmiennej

edytuj

Zmienna może przechowywać pewną wartość. Do nadania zmiennej wartości służy instrukcja przypisania. Jest ona zapisywana różnie w zależności od języka programowania. W większości języków wykorzystywany jest znak równości.

Przyjrzyjmy się poniższemu przykładowi:

//deklaracja zmiennej; zmienna przechowuje liczbę wiewiórek w parku miejskim w Lublinie.
integer liczba_wiewiórek;

liczba_wiewiórek <- 9;//jeden z zapisów przypisania wartości
liczba_wiewiórek = 10;// tak przypisujemy wartość w języku C
liczba_wiewiórek := 11;// a tak w Pascalu

wypisz liczba_wiewiórek;

Powyższy, zapisany w pseudokodzie "program" tworzy zmienną o nazwie liczba_wiewiórek, której typem są liczby całkowite (integer to w języku angielskim liczba całkowita). W drugiej, trzeciej i czwartej linii kodu program nadaje zmiennej wartość liczbową oraz wypisuje ją na ekranie komputera.

Nazywanie zmiennych

edytuj

Zauważmy, że nazwa zmiennej powinna dobrze zdefiniować przechowywaną weń informację.

Pierwsze prawo Jacksona mówi, że tzn. nazwa zmiennej w programie powinna odzwierciedlać element w opisywanym systemie rzeczywistym (tutaj: programie komputerowym).

Znaczenie zmiennej często dobrze jest opisać dodatkowo komentarzem objaśniającym dokładniej jej sens.

Zmienne przechowujące liczby mogą mieć formę orzekającą.

// liczba książek matematyczych na półce Jana Kowalskiego
// w dniu 20 czerwca 2019r.
int liczba_książek_matematycznych = 40;

// Liczba pracowników naukowych i naukowo - technicznych 
// w Instytucie Plazmy i Mikrosyntezy Laserowej
int liczba_ludzi_w_instytucie = 400;

Jeżeli wartość jest wzięta ze wzoru matematycznego, to można ją przekształcić tak, aby brzmieniowo przypominała opisywaną wielkość. Ważne jest podanie miejsca jej pochodzenia (Która książka / autor / strona / nr wzoru)

 
//wymiary stołu Adama Szczerskiego [cm]
double długosc_stolu = 120.0; 
double szerokosc_stolu = 50.0;

//masa Ziemi, na podstawie: Tablica stałych fizycznych, wyd. Moskwa 1990r. ISBN 12345
double masa_ziemi = 6.02e23;

/*zmienna wzięta z książki */
///przenikalność elektryczna próżni [F/m]
//(tablice matematyczno - fizyczno - astronomiczne, Adamantan, Warszawa 2001, tylna okładka)
epislon_zero = 8.85418782e-12;

// inna zmienna opisana wzorem matematycznym
// wyznacznik równania kwadratowego
double delta;


Zmienne reprezentujące wartości logiczne (prawda / fałsz) mogą mieć formę orzekającą. W języku C typ logiczny (_Bool) jest dostępny od wersji C99.

_Bool data_jest_poprawna = false;
_Bool dane_przetworzone;
_Bool użytkowniczka_chce_kontynuować = true;


Wartości tekstowe (litery, napisy) także powinny mieć nazwę odzwierciedlającą ich znaczenie.

/*
Dane osobowe obywatela Jasia Kowalskiego, syna Jakuba
*/
char* imie;
char* nazwisko;
char* ulica;
char* nazwa_województwa

Nazwy zmiennych zazwyczaj powinny spełniać pewne ustalone standardy kodowania.

Przykładowo, w języku C nazwy zmiennych zaczynają się zwykle z małej litery. Kolejne człony nazwy mogą być oddzielone poprzez dodanie znaku podkreślenia lub dużego znaku.

przykład:

//
int bardzo_dluga_zmienna;
//lub
int bardzoDlugaZmienna; //styl "camel"

Użycie zmiennych

edytuj

Zmienne mogą być używane w wyrażeniach arytmetycznych i logicznych. Przykład: obliczanie prędkośći

/* Najpierw staranna dokumentacja. Podajemy informację, co robi dany fragment kodu,
 * kto go napisał i kiedy. Z jakiej książki wzięto użyte wzory. I inne informacje,
 * które mogą być użyteczne dla osób przeglądających kod.
 *
 * Obliczanie prędkości średniej. 
 * Autor: Mku84.
 * Data utworzenia 07.04.2016r.
 * opis algorytmu: algorytm oblicza średnią prędkość ciała na drodze s w czasie t.
 * metoda: v <- s / t
 *         gdzie: v: prędkośc ciała (m/s)
 *                s: długośc drogi (m)
 *                t: czas ruchu ciała (s)
 * źródło metody: jaka książka, jaka strona, jaki wzór
 */

/*
 * deklaracja zmiennych
 * wszystkie zmienne przechowują zmienne rzeczywiste (podwójna precyzja)
 * oznaczenia: jak w algorytmie
 */
double v;
double s;
double t;

// przypisanie wartości zmiennym
// droga == 10 m
s = 10.0;

// czas == 5 s
t = 5.0;

/*
* obliczenie prędkości średniej zgodnie z algorytmem
*/
v = s / t;

// teraz już prędkość średnia obliczona

Zauważmy, że taki z pozoru trywialny fragment kodu wymaga pewnej ilości objaśnień. Opisujemy więc go. Następnie deklarujemy zmienne przechowujące liczby rzeczywiste. Użyliśmy typu o podwójnej precyzji (double). Następnie nastąpiło przypisanie zmiennym wartości. Od tej pory zmienne przechowują wartości. Wreszcie nastąpiło wyliczenie szukanej prędkości. Kompilator zobaczył znak '='. Po lewej stronie jest zmienna. Zatem następuje przypisanie wartości zmiennej v. A wartość ta wynosi tyle, ile wyrażenie po stronie prawej. Wyrażenie to w języku C jest obliczane przez podzielenie wartości zmiennej 's' przez wartość zmiennej 't'.