En este tema, exploraremos dos conceptos fundamentales en la programación: el ámbito (scope) y el ciclo de vida (lifetime) de las variables. Comprender estos conceptos es crucial para escribir código eficiente y libre de errores.

  1. Ámbito de las Variables

El ámbito de una variable se refiere a la región del código donde la variable es accesible. En Delphi/Object Pascal, el ámbito de una variable puede ser:

  • Local: La variable es accesible solo dentro del bloque de código donde se declara.
  • Global: La variable es accesible desde cualquier parte del programa.
  • De Clase: La variable es accesible desde cualquier método de la clase.

1.1 Variables Locales

Las variables locales se declaran dentro de un procedimiento, función o bloque de código. Solo son accesibles dentro de ese bloque.

procedure ExampleProcedure;
var
  localVar: Integer; // Variable local
begin
  localVar := 10;
  WriteLn('Valor de localVar: ', localVar);
end;

1.2 Variables Globales

Las variables globales se declaran fuera de cualquier procedimiento o función, generalmente al inicio del programa o unidad. Son accesibles desde cualquier parte del programa.

var
  globalVar: Integer; // Variable global

procedure ExampleProcedure;
begin
  globalVar := 20;
  WriteLn('Valor de globalVar: ', globalVar);
end;

begin
  globalVar := 10;
  ExampleProcedure;
  WriteLn('Valor de globalVar: ', globalVar);
end.

1.3 Variables de Clase

Las variables de clase (también conocidas como campos) se declaran dentro de una clase y son accesibles desde cualquier método de la clase.

type
  TMyClass = class
  private
    classVar: Integer; // Variable de clase
  public
    procedure SetClassVar(value: Integer);
    procedure ShowClassVar;
  end;

procedure TMyClass.SetClassVar(value: Integer);
begin
  classVar := value;
end;

procedure TMyClass.ShowClassVar;
begin
  WriteLn('Valor de classVar: ', classVar);
end;

  1. Ciclo de Vida de las Variables

El ciclo de vida de una variable se refiere al tiempo durante el cual la variable existe en la memoria. En Delphi/Object Pascal, el ciclo de vida de una variable depende de su tipo de ámbito.

2.1 Ciclo de Vida de Variables Locales

Las variables locales se crean cuando se entra en el bloque de código donde se declaran y se destruyen cuando se sale de ese bloque.

procedure ExampleProcedure;
var
  localVar: Integer;
begin
  localVar := 10;
  WriteLn('Valor de localVar: ', localVar);
end; // localVar se destruye aquí

2.2 Ciclo de Vida de Variables Globales

Las variables globales se crean cuando el programa comienza y se destruyen cuando el programa termina.

var
  globalVar: Integer;

begin
  globalVar := 10;
  WriteLn('Valor de globalVar: ', globalVar);
end. // globalVar se destruye aquí

2.3 Ciclo de Vida de Variables de Clase

Las variables de clase se crean cuando se instancia la clase y se destruyen cuando la instancia de la clase se destruye.

type
  TMyClass = class
  private
    classVar: Integer;
  public
    procedure SetClassVar(value: Integer);
    procedure ShowClassVar;
  end;

var
  myObject: TMyClass;

begin
  myObject := TMyClass.Create;
  myObject.SetClassVar(10);
  myObject.ShowClassVar;
  myObject.Free; // classVar se destruye aquí
end.

  1. Ejercicios Prácticos

Ejercicio 1: Variables Locales y Globales

  1. Declara una variable global globalCounter de tipo Integer.
  2. Crea un procedimiento IncrementCounter que incremente globalCounter en 1.
  3. Crea un procedimiento ShowCounter que muestre el valor de globalCounter.
  4. Llama a IncrementCounter y ShowCounter desde el bloque principal del programa.
var
  globalCounter: Integer;

procedure IncrementCounter;
begin
  Inc(globalCounter);
end;

procedure ShowCounter;
begin
  WriteLn('Valor de globalCounter: ', globalCounter);
end;

begin
  globalCounter := 0;
  IncrementCounter;
  ShowCounter;
end.

Ejercicio 2: Variables de Clase

  1. Define una clase TCounter con una variable de clase counter de tipo Integer.
  2. Crea un método Increment que incremente counter en 1.
  3. Crea un método Show que muestre el valor de counter.
  4. Instancia la clase TCounter y llama a los métodos Increment y Show.
type
  TCounter = class
  private
    counter: Integer;
  public
    procedure Increment;
    procedure Show;
  end;

procedure TCounter.Increment;
begin
  Inc(counter);
end;

procedure TCounter.Show;
begin
  WriteLn('Valor de counter: ', counter);
end;

var
  myCounter: TCounter;

begin
  myCounter := TCounter.Create;
  myCounter.Increment;
  myCounter.Show;
  myCounter.Free;
end.

  1. Resumen

En esta sección, hemos aprendido sobre el ámbito y el ciclo de vida de las variables en Delphi/Object Pascal. Hemos visto cómo las variables locales, globales y de clase tienen diferentes ámbitos y ciclos de vida. Además, hemos practicado estos conceptos con ejercicios prácticos.

Conceptos Clave:

  • Ámbito de las Variables: Local, Global, De Clase.
  • Ciclo de Vida de las Variables: Depende del ámbito.
  • Variables Locales: Existen solo dentro del bloque de código.
  • Variables Globales: Existen durante toda la ejecución del programa.
  • Variables de Clase: Existen mientras la instancia de la clase exista.

Con estos conocimientos, estás preparado para gestionar mejor las variables en tus programas, asegurando un uso eficiente de la memoria y evitando errores comunes relacionados con el ámbito y el ciclo de vida de las variables.

Curso de Programación en Delphi/Object Pascal

Módulo 1: Introducción a Delphi/Object Pascal

Módulo 2: Estructuras de Control y Procedimientos

Módulo 3: Trabajando con Datos

Módulo 4: Programación Orientada a Objetos

Módulo 5: Características Avanzadas de Delphi

Módulo 6: Desarrollo de GUI con VCL y FMX

Módulo 7: Desarrollo Web y Móvil

Módulo 8: Mejores Prácticas y Patrones de Diseño

Módulo 9: Proyecto Final

© Copyright 2024. Todos los derechos reservados