Introducció

L'àmbit de les variables (també conegut com a "scope" en anglès) és un concepte fonamental en la programació que determina on una variable és accessible dins del codi. Comprendre l'àmbit de les variables és crucial per evitar errors i escriure codi clar i mantenible.

Tipus d'Àmbit

Àmbit Local

Les variables locals són aquelles que es defineixen dins d'una funció o bloc de codi i només són accessibles dins d'aquest context.

def funcio_exemple():
    variable_local = 10
    print(variable_local)  # Accessible dins de la funció

funcio_exemple()
# print(variable_local)  # Error: variable_local no està definida fora de la funció

Àmbit Global

Les variables globals es defineixen fora de qualsevol funció o bloc de codi i són accessibles des de qualsevol part del programa.

variable_global = 20

def funcio_exemple():
    print(variable_global)  # Accessible dins de la funció

funcio_exemple()
print(variable_global)  # Accessible fora de la funció

Àmbit de Bloc

En alguns llenguatges de programació, com C++ o JavaScript, les variables poden tenir un àmbit de bloc, el que significa que només són accessibles dins del bloc de codi on es defineixen (per exemple, dins d'un bucle o una condició).

if (true) {
    let variable_bloc = 30;
    console.log(variable_bloc);  // Accessible dins del bloc
}
// console.log(variable_bloc);  // Error: variable_bloc no està definida fora del bloc

Àmbit de Variables en Funcions

Variables Locals

Les variables declarades dins d'una funció són locals a aquesta funció i no poden ser accedides des de fora.

def funcio_exemple():
    variable_local = 10
    print(variable_local)

funcio_exemple()
# print(variable_local)  # Error: variable_local no està definida fora de la funció

Variables Globals

Per accedir a una variable global dins d'una funció, es pot utilitzar la paraula clau global en alguns llenguatges de programació.

variable_global = 20

def funcio_exemple():
    global variable_global
    variable_global = 30
    print(variable_global)

funcio_exemple()
print(variable_global)  # Sortida: 30

Variables No Locals (Enclavament de Funcions)

En llenguatges que permeten l'enclavament de funcions, com Python, es pot accedir a variables de funcions externes utilitzant la paraula clau nonlocal.

def funcio_externa():
    variable_externa = 40

    def funcio_interna():
        nonlocal variable_externa
        variable_externa = 50
        print(variable_externa)

    funcio_interna()
    print(variable_externa)

funcio_externa()
# Sortida:
# 50
# 50

Exercicis Pràctics

Exercici 1: Variables Locals i Globals

  1. Defineix una variable global x amb el valor 5.
  2. Defineix una funció que imprimeixi el valor de x.
  3. Defineix una altra funció que canviï el valor de x a 10 i després imprimeixi x.
  4. Crida les dues funcions i imprimeix x després de cada crida.
# Solució
x = 5

def imprimir_x():
    print(x)

def canviar_x():
    global x
    x = 10
    print(x)

imprimir_x()  # Sortida: 5
canviar_x()   # Sortida: 10
print(x)      # Sortida: 10

Exercici 2: Àmbit de Bloc (Només per Llenguatges amb Àmbit de Bloc)

  1. Defineix una variable y dins d'un bloc if i intenta imprimir-la fora del bloc.
  2. Observa el comportament i explica per què es produeix un error (si és el cas).
// Solució
if (true) {
    let y = 15;
    console.log(y);  // Accessible dins del bloc
}
console.log(y);  // Error: y no està definida fora del bloc

Resum

En aquesta secció, hem après sobre els diferents tipus d'àmbit de les variables: local, global i de bloc. També hem vist com les variables es comporten dins de les funcions i com podem accedir a variables globals i no locals. Comprendre l'àmbit de les variables és essencial per escriure codi clar i evitar errors comuns.

Amb aquests coneixements, estàs preparat per avançar al següent tema del curs.

© Copyright 2024. Tots els drets reservats