En Ada, los subprogramas son bloques de código que realizan tareas específicas y pueden ser reutilizados en diferentes partes de un programa. Los subprogramas en Ada se dividen en dos categorías principales: procedimientos y funciones.

Procedimientos

Definición de Procedimientos

Un procedimiento es un subprograma que realiza una acción pero no devuelve un valor. Los procedimientos se utilizan para ejecutar secuencias de instrucciones que no requieren un resultado de retorno.

Sintaxis de un Procedimiento

procedure Nombre_Procedimiento (Parametro1: in Tipo; Parametro2: out Tipo) is
begin
    -- Cuerpo del procedimiento
end Nombre_Procedimiento;

Ejemplo de Procedimiento

procedure Saludar (Nombre: in String) is
begin
    Put_Line ("Hola, " & Nombre & "!");
end Saludar;

En este ejemplo, el procedimiento Saludar toma un parámetro de entrada Nombre de tipo String y muestra un saludo en la consola.

Llamada a un Procedimiento

begin
    Saludar ("Ada");
end;

Parámetros de Procedimientos

Los parámetros de un procedimiento pueden ser de tres tipos:

  • in: Parámetro de entrada (solo lectura).
  • out: Parámetro de salida (solo escritura).
  • in out: Parámetro de entrada/salida (lectura y escritura).

Ejemplo con Parámetros in y out

procedure Sumar (A: in Integer; B: in Integer; Resultado: out Integer) is
begin
    Resultado := A + B;
end Sumar;

Funciones

Definición de Funciones

Una función es un subprograma que realiza una acción y devuelve un valor. Las funciones se utilizan cuando se necesita calcular y devolver un resultado.

Sintaxis de una Función

function Nombre_Funcion (Parametro1: in Tipo) return Tipo_Retorno is
begin
    -- Cuerpo de la función
    return Valor;
end Nombre_Funcion;

Ejemplo de Función

function Sumar (A: in Integer; B: in Integer) return Integer is
begin
    return A + B;
end Sumar;

En este ejemplo, la función Sumar toma dos parámetros de entrada A y B de tipo Integer y devuelve la suma de ambos.

Llamada a una Función

declare
    Resultado: Integer;
begin
    Resultado := Sumar (5, 3);
    Put_Line (Integer'Image(Resultado));
end;

Diferencias entre Procedimientos y Funciones

Característica Procedimiento Función
Retorno de valor No devuelve un valor Devuelve un valor
Uso típico Realizar acciones Calcular y devolver resultados
Sintaxis de llamada Nombre_Procedimiento (Parametros); Variable := Nombre_Funcion (Parametros);

Ejercicios Prácticos

Ejercicio 1: Procedimiento de Multiplicación

Escribe un procedimiento llamado Multiplicar que tome dos números enteros como parámetros de entrada y devuelva el resultado de la multiplicación como un parámetro de salida.

procedure Multiplicar (A: in Integer; B: in Integer; Resultado: out Integer) is
begin
    Resultado := A * B;
end Multiplicar;

Ejercicio 2: Función de División

Escribe una función llamada Dividir que tome dos números enteros como parámetros de entrada y devuelva el resultado de la división.

function Dividir (A: in Integer; B: in Integer) return Float is
begin
    return Float(A) / Float(B);
end Dividir;

Soluciones

Solución al Ejercicio 1

procedure Multiplicar (A: in Integer; B: in Integer; Resultado: out Integer) is
begin
    Resultado := A * B;
end Multiplicar;

Solución al Ejercicio 2

function Dividir (A: in Integer; B: in Integer) return Float is
begin
    return Float(A) / Float(B);
end Dividir;

Conclusión

En esta sección, hemos aprendido sobre los subprogramas en Ada, específicamente procedimientos y funciones. Los procedimientos se utilizan para realizar acciones sin devolver un valor, mientras que las funciones realizan cálculos y devuelven un resultado. Hemos visto ejemplos prácticos y ejercicios para reforzar estos conceptos. En el próximo módulo, exploraremos los tipos de datos avanzados en Ada, como arreglos y registros.

© Copyright 2024. Todos los derechos reservados