wtorek, 24 października 2017

Funkcje w języku C++

Funkcje w języku C++

1. Zasięg zmiennej określa zakres widoczności nazwy zmiennej w obrębie pliku.

Zasięg zmiennej to w programowaniu fragment programu (np. obszar lub blok kodu) z którym skojarzone są wartości lub wyrażenia (np. zmienne). Różne języki programowania posiadają różne rodzaje zasięgów widoczności.
Zasięgu najczęściej używa się do:
  • kontrolowania cyklu życia zmiennych
  • kontrolowania widoczności i dostępności zmiennych i stałych w obrębie programu
  • implementacji hermetyzacji
Zasięgi mogą zawierać:
  • deklaracje lub definicje identyfikatorów (np. zmiennych)
  • instrukcje lub wyrażenia definiujące wykonywalny algorytm lub jego część
  • inne, zagnieżdżone zasięgi
2. Ze względu na zasięg zmiennej rozróżniamy zmienne globalne i lokalne:

Zmienna globalna – zmienna istniejąca przez cały czas życia programu i widziana z wielu miejsc w programie.
Nadużywanie zmiennych globalnych może prowadzić do poważnych problemów, takich jak:
  • w przypadku programów wielowątkowych, zmienna taka może być modyfikowana przez dowolny wątek, co prowadzić może do nieokreśloności przy braku synchronizacji wątków.
  • jeśli funkcja używa zmiennej globalnej jako zmiennej pomocniczej, niemożliwe może być jej rekursywne wywołanie
  • zmienne globalne zaśmiecają przestrzeń nazw, w niektórych architekturach może to doprowadzić do przepełnienia stosu
  • na działanie danej części kodu może mieć wpływ kod zupełnie niezwiązany, o ile oba używają tej samej zmiennej globalnej i jeden z nich ją modyfikuje.
  • zmienne globalne mogą kolidować ze zmiennymi lokalnymi (te drugie przesłaniają zmienne globalne o ile posiadają identyczne nazwy).
Zmienna lokalna – zmienna zdefiniowana i dostępna wyłącznie w określonym bloku programu, tworzona w momencie wejścia do tego bloku oraz usuwana z pamięci w momencie wyjścia z danego bloku. Tym samym zasięg zmiennej lokalnej oraz czas jej życia pokrywają się i obejmują blok, w którym zmienna lokalna jest zdefiniowana. Zmienna lokalna ma więc określony, ograniczony zakres istnienia i dostępności. To w jakich blokach programowych można tworzyć zmienne lokalne definiuje składnia konkretnego języka programowania. Typowymi blokami, w których można w różnych językach programowania tworzyć zmienne lokalne, są moduły, podprogramy oraz w pewnych językach programowania także instrukcje blokowe (lub inne instrukcje strukturalne, np. pętla for w języku C++ i inne).

3. Zmienne globalne w języku C++ deklarujemy poza funkcjami.

Zmienne te są widoczne od miejsca deklaracji do końca pliku, również w funkcjach. 

Niezależnie od zmiennych globalnych można wewnątrz funkcji C++ zdeklarować zmiennie lokalne. 
Zmienne te będą widoczne w C++ w części programu od miejsca deklaracji do końca funkcji. W języku C++ zmienne lokalne mogą być również widoczne tylko w obrębie jednego bloku instrukcji {}.

Próba użycia zmiennej lokalnej w programie głównym spowoduje pojawienie się podczas kompilacji błędu niezdeklarowanej zmiennej. 

Zmiennym globalnym pamięć przydzielana jest na cały czas wykonywania programu, natomiast zmiennym lokalnym - tylko na czas działania procedury lub funkcji. 

4. Stosowanie zmiennej lokalnej.

void Usmiechy()
{
int k;
cin >>k;
if (k>0) for (i=0; i<20; i++) cout << ":-)";
else for (i=0; i<20; i++) cout << ":-(";
}

Zmienne globalne mogą zostać przesłonięte. Zdeklarowanie w procedurze lub funkcj zmiennej lokalnej o takiej samej nazwie jak zmienna globalna spowoduje przesłonięcie zmiennej globalnej, co oznacza, że używana będzie zmienna lokalna a nie globalna.

5. Przesyłanie zmiennej globalnej.

#include <iostream>
using namespace std;
int i;
void Usmiechy()
{
int i;
for (i=0; i<20; i++) cout << ":-)";
}
int main ()
{
i=10;
Usmiechy();
cout<<i;
return 0;
}

------------------------------------------------------------------

int main ()
{
for (i=0; i<20; i++) cout << ":-)";
cout << endl;
return 0;
}

Brak komentarzy:

Prześlij komentarz