En aquest tema, explorarem els conceptes d'abast (scope) i durada (lifetime) de les variables en Delphi/Object Pascal. Aquests conceptes són fonamentals per entendre com i quan les variables són accessibles i quina és la seva vida útil dins d'un programa.
Conceptes Clau
Abast de les Variables
L'abast d'una variable determina la part del codi on la variable és accessible. En Delphi/Object Pascal, l'abast de les variables es pot classificar en:
-
Variables Globals:
- Declarades fora de qualsevol procediment o funció.
- Són accessibles des de qualsevol part del codi després de la seva declaració.
-
Variables Locals:
- Declarades dins d'un procediment o funció.
- Només són accessibles dins del procediment o funció on han estat declarades.
-
Variables de Mòdul:
- Declarades a la secció
implementationd'una unitat. - Són accessibles només dins de la mateixa unitat.
- Declarades a la secció
Durada de les Variables
La durada d'una variable es refereix al temps durant el qual la variable existeix en memòria. En Delphi/Object Pascal, la durada de les variables es pot classificar en:
-
Variables Estàtiques:
- Variables globals i de mòdul.
- Existeixen durant tota l'execució del programa.
-
Variables Dinàmiques:
- Variables locals.
- Existeixen només durant l'execució del procediment o funció on han estat declarades.
Exemples Pràctics
Variables Globals
program GlobalVariablesExample;
var
GlobalVar: Integer; // Variable global
procedure DisplayGlobalVar;
begin
Writeln('GlobalVar: ', GlobalVar);
end;
begin
GlobalVar := 10;
DisplayGlobalVar; // Output: GlobalVar: 10
end.Variables Locals
program LocalVariablesExample;
procedure DisplayLocalVar;
var
LocalVar: Integer; // Variable local
begin
LocalVar := 5;
Writeln('LocalVar: ', LocalVar);
end;
begin
// LocalVar no és accessible aquí
DisplayLocalVar; // Output: LocalVar: 5
end.Variables de Mòdul
unit ModuleVariablesExample;
interface
procedure DisplayModuleVar;
implementation
var
ModuleVar: Integer; // Variable de mòdul
procedure DisplayModuleVar;
begin
ModuleVar := 20;
Writeln('ModuleVar: ', ModuleVar);
end;
end.Variables Dinàmiques
program DynamicVariablesExample;
procedure DisplayDynamicVar;
var
DynamicVar: Integer; // Variable dinàmica
begin
DynamicVar := 15;
Writeln('DynamicVar: ', DynamicVar);
end;
begin
DisplayDynamicVar; // Output: DynamicVar: 15
// DynamicVar ja no és accessible aquí
end.Exercicis Pràctics
Exercici 1: Variables Globals i Locals
- Declara una variable global
GlobalCounteri una variable localLocalCounterdins d'un procediment. - Incrementa ambdues variables dins del procediment i mostra els seus valors.
program Exercise1;
var
GlobalCounter: Integer; // Variable global
procedure IncrementCounters;
var
LocalCounter: Integer; // Variable local
begin
GlobalCounter := GlobalCounter + 1;
LocalCounter := LocalCounter + 1;
Writeln('GlobalCounter: ', GlobalCounter);
Writeln('LocalCounter: ', LocalCounter);
end;
begin
GlobalCounter := 0;
IncrementCounters; // Output: GlobalCounter: 1, LocalCounter: 1
IncrementCounters; // Output: GlobalCounter: 2, LocalCounter: 1
end.Exercici 2: Variables de Mòdul
- Crea una unitat amb una variable de mòdul
ModuleCounter. - Implementa un procediment que incrementi i mostri el valor de
ModuleCounter.
unit Exercise2Module;
interface
procedure IncrementModuleCounter;
implementation
var
ModuleCounter: Integer; // Variable de mòdul
procedure IncrementModuleCounter;
begin
ModuleCounter := ModuleCounter + 1;
Writeln('ModuleCounter: ', ModuleCounter);
end;
end.program Exercise2; uses Exercise2Module; begin IncrementModuleCounter; // Output: ModuleCounter: 1 IncrementModuleCounter; // Output: ModuleCounter: 2 end.
Resum
En aquest tema, hem après sobre l'abast i la durada de les variables en Delphi/Object Pascal. Hem vist com les variables globals, locals i de mòdul tenen diferents àmbits d'accés i durades de vida. També hem practicat aquests conceptes amb exemples pràctics i exercicis.
Aquests conceptes són essencials per escriure codi clar i mantenible, i per evitar errors comuns com l'ús de variables no inicialitzades o la modificació inesperada de variables globals.
Curs de Programació Delphi/Object Pascal
Mòdul 1: Introducció a Delphi/Object Pascal
- Introducció a Delphi i Object Pascal
- Configuració de l'Entorn de Desenvolupament
- Primera Aplicació Delphi
- Sintaxi i Estructura Bàsiques
- Variables i Tipus de Dades
Mòdul 2: Estructures de Control i Procediments
- Declaracions Condicionals
- Bucles i Iteració
- Procediments i Funcions
- Abast i Durada de les Variables
- Gestió d'Errors i Depuració
Mòdul 3: Treballant amb Dades
- Arrays i Cadenes
- Registres i Conjunts
- Tipus Enumerats i Subrang
- Gestió d'Arxius
- Accés a Bases de Dades
Mòdul 4: Programació Orientada a Objectes
- Introducció a la POO
- Classes i Objectes
- Herència i Polimorfisme
- Interfícies i Classes Abstractes
- Gestió d'Excepcions en POO
Mòdul 5: Funcions Avançades de Delphi
- Generics i Col·leccions
- Multifil i Programació Paral·lela
- Desenvolupament Basat en Components
- Biblioteca d'Execució de Delphi (RTL)
- Tècniques Avançades de Depuració
Mòdul 6: Desenvolupament d'Interfícies Gràfiques amb VCL i FMX
- Introducció a VCL
- Creació de Formularis i Controls
- Programació Basada en Esdeveniments
- Introducció a FireMonkey (FMX)
- Desenvolupament Multiplataforma amb FMX
Mòdul 7: Desenvolupament Web i Mòbil
- Desenvolupament Web amb Delphi
- Serveis RESTful
- Desenvolupament Mòbil amb Delphi
- Desplegament d'Aplicacions Mòbils
- Integració amb Serveis Web
Mòdul 8: Millors Pràctiques i Patrons de Disseny
- Organització del Codi i Documentació
- Patrons de Disseny en Delphi
- Tècniques de Refactorització
- Proves Unitàries i Desenvolupament Basat en Proves
- Optimització del Rendiment
