Jeśli zmienna lokalna ma taką samą nazwę jak zmienna w bloku zewnętrznym, to zmienna zewnętrzna jest przesłonięta przez zmienną lokalną. Na zewnątrz tego bloku nadal widoczna jest zmienna zewnętrzna.
Program może komunikować się z wywołanymi procedurami i funkcjami:
• poprzez parametry – gdy trzeba przekazywać różne zmienne lub wartości, poprawia to również czytelność procedur i funkcji, gdyż posiadają one jasno zapisany interfejs komunikacji.
• poprzez zmienne globalne – gdy dotyczy to zmiennych szczególnie ważnych w obrębie całego programu lub gdy dotyczy to dużych rozmiarowo struktur danych, ale ogólnie zmniejsza czytelność programu. Poprawna organizacja wymiany informacji pomiędzy blokami programu jest kwestią kompromisu i stylu programowania.
Przykład
Efekt działania.
Rekurencja
Czy patrzyłeś kiedyś w lustro, w którym było widać drugie lustro, a w tym lustrze znowu pierwsze lustro i w tym pierwszym znowu to drugie i tak bez końca? Obraz tworzy się praktycznie nieprzerwanie.
Coś podobnego dzieje się w rekurencji. Rekurencja to wywołanie jakiejś metody przez samą siebie. W pewnym miejscu następuje ponowne wywołanie siebie od początku. Gdyby nie przerwać rekurencji, trwałaby w nieskończoność.
W programowaniu pewna procedura wywołuje siebie samą i coraz bardziej zagnieżdża się w swoim kodzie. Wiąże się to z odłożeniem pewnej pamięci na tzw. stos. Gdyby nie przerwać tego 'błędnego koła’ pamięć w końcu się skończy, a program przestanie działać.
Rekurencję wykorzystuje się do niektórych metod, takich jak: wypełnianie obrazka jakimś kolorem, wykrywanie min w grze saper, obliczanie pewnych działań matematycznych. Przydaje się także podczas tworzenia drzew katalogów, wyszukiwania plików, budowania forum internetowych i wielu innych zastosowań.
Przykład
PROGRAM silnia(input,output);
VAR
n: integer;
s: integer;
FUNCTION sil(x: integer): integer;
BEGIN
IF x=0 THEN sil:=1
ELSE sil:=x*sil(x-1);
END;
BEGIN
write(’Podaj n=’);
read(n); s:=sil(n);
writeln(’Silnia wynosi =’,s);
readln;
END.
Funkcja silnia jest wykorzystywana do rekurencyjnego obliczania wartości silni z n !
Uwaga program liczy poprawnie silnię jedynie dla małych wartości n. Dlaczego?
Rekurencja polega na możliwości wywoływania funkcji przez samą siebie, oczywiście z innymi parametrami n!=n*(n-1)*(n-2)…*1= n*(n-1)!
Efekt działania programu.