En este tema, aprenderemos sobre los operadores y las expresiones en Ada. Los operadores son símbolos que indican al compilador que debe realizar una operación específica, como aritmética, lógica o de comparación. Las expresiones son combinaciones de variables, constantes, literales y operadores que se evalúan para producir un valor.

Contenido

Operadores Aritméticos

Los operadores aritméticos se utilizan para realizar operaciones matemáticas básicas. Ada soporta los siguientes operadores aritméticos:

Operador Descripción Ejemplo
+ Suma A + B
- Resta A - B
* Multiplicación A * B
/ División A / B
** Exponenciación A ** B
mod Módulo A mod B

Ejemplo de Código

with Ada.Text_IO; use Ada.Text_IO;

procedure Arithmetic_Operators is
   A : Integer := 10;
   B : Integer := 3;
   Result : Integer;
begin
   Result := A + B;
   Put_Line("A + B = " & Integer'Image(Result));

   Result := A - B;
   Put_Line("A - B = " & Integer'Image(Result));

   Result := A * B;
   Put_Line("A * B = " & Integer'Image(Result));

   Result := A / B;
   Put_Line("A / B = " & Integer'Image(Result));

   Result := A mod B;
   Put_Line("A mod B = " & Integer'Image(Result));

   Result := A ** B;
   Put_Line("A ** B = " & Integer'Image(Result));
end Arithmetic_Operators;

Operadores de Comparación

Los operadores de comparación se utilizan para comparar dos valores. Ada soporta los siguientes operadores de comparación:

Operador Descripción Ejemplo
= Igual a A = B
/= No igual a A /= B
< Menor que A < B
<= Menor o igual que A <= B
> Mayor que A > B
>= Mayor o igual que A >= B

Ejemplo de Código

with Ada.Text_IO; use Ada.Text_IO;

procedure Comparison_Operators is
   A : Integer := 10;
   B : Integer := 3;
begin
   if A = B then
      Put_Line("A es igual a B");
   else
      Put_Line("A no es igual a B");
   end if;

   if A /= B then
      Put_Line("A no es igual a B");
   else
      Put_Line("A es igual a B");
   end if;

   if A < B then
      Put_Line("A es menor que B");
   else
      Put_Line("A no es menor que B");
   end if;

   if A <= B then
      Put_Line("A es menor o igual que B");
   else
      Put_Line("A no es menor o igual que B");
   end if;

   if A > B then
      Put_Line("A es mayor que B");
   else
      Put_Line("A no es mayor que B");
   end if;

   if A >= B then
      Put_Line("A es mayor o igual que B");
   else
      Put_Line("A no es mayor o igual que B");
   end if;
end Comparison_Operators;

Operadores Lógicos

Los operadores lógicos se utilizan para realizar operaciones lógicas. Ada soporta los siguientes operadores lógicos:

Operador Descripción Ejemplo
and Y lógico A and B
or O lógico A or B
not Negación lógica not A

Ejemplo de Código

with Ada.Text_IO; use Ada.Text_IO;

procedure Logical_Operators is
   A : Boolean := True;
   B : Boolean := False;
begin
   if A and B then
      Put_Line("A and B es True");
   else
      Put_Line("A and B es False");
   end if;

   if A or B then
      Put_Line("A or B es True");
   else
      Put_Line("A or B es False");
   end if;

   if not A then
      Put_Line("not A es True");
   else
      Put_Line("not A es False");
   end if;
end Logical_Operators;

Operadores de Asignación

El operador de asignación se utiliza para asignar un valor a una variable. Ada utiliza el símbolo := para la asignación.

Ejemplo de Código

with Ada.Text_IO; use Ada.Text_IO;

procedure Assignment_Operator is
   A : Integer;
begin
   A := 10;
   Put_Line("El valor de A es " & Integer'Image(A));
end Assignment_Operator;

Precedencia de Operadores

La precedencia de operadores determina el orden en que se evalúan los operadores en una expresión. La siguiente tabla muestra la precedencia de los operadores en Ada, de mayor a menor precedencia:

Operadores Descripción
** Exponenciación
not Negación lógica
*, /, mod Multiplicación, División, Módulo
+, - Suma, Resta
=, /=, <, <=, >, >= Comparación
and, or Lógicos
:= Asignación

Ejemplo de Código

with Ada.Text_IO; use Ada.Text_IO;

procedure Operator_Precedence is
   A : Integer := 10;
   B : Integer := 3;
   C : Integer := 5;
   Result : Integer;
begin
   Result := A + B * C; -- Multiplicación se evalúa primero
   Put_Line("A + B * C = " & Integer'Image(Result));

   Result := (A + B) * C; -- Paréntesis cambian la precedencia
   Put_Line("(A + B) * C = " & Integer'Image(Result));
end Operator_Precedence;

Ejemplos Prácticos

Ejemplo 1: Calculadora Simple

with Ada.Text_IO; use Ada.Text_IO;

procedure Simple_Calculator is
   A, B, Result : Integer;
   Operator : Character;
begin
   Put("Ingrese el primer número: ");
   Get(A);
   Put("Ingrese el operador (+, -, *, /, mod): ");
   Get(Operator);
   Put("Ingrese el segundo número: ");
   Get(B);

   case Operator is
      when '+' => Result := A + B;
      when '-' => Result := A - B;
      when '*' => Result := A * B;
      when '/' => Result := A / B;
      when 'm' => Result := A mod B;
      when others => Put_Line("Operador no válido");
   end case;

   Put_Line("El resultado es: " & Integer'Image(Result));
end Simple_Calculator;

Ejercicios

Ejercicio 1: Operaciones Aritméticas

Escribe un programa que solicite al usuario dos números y realice las siguientes operaciones: suma, resta, multiplicación, división y módulo. Muestra los resultados en la pantalla.

Ejercicio 2: Comparaciones

Escribe un programa que solicite al usuario dos números y compare si el primer número es mayor, menor o igual al segundo número. Muestra el resultado de la comparación en la pantalla.

Ejercicio 3: Operaciones Lógicas

Escribe un programa que solicite al usuario dos valores booleanos y realice las siguientes operaciones lógicas: AND, OR y NOT. Muestra los resultados en la pantalla.

Soluciones

Solución Ejercicio 1

with Ada.Text_IO; use Ada.Text_IO;

procedure Arithmetic_Operations is
   A, B : Integer;
begin
   Put("Ingrese el primer número: ");
   Get(A);
   Put("Ingrese el segundo número: ");
   Get(B);

   Put_Line("A + B = " & Integer'Image(A + B));
   Put_Line("A - B = " & Integer'Image(A - B));
   Put_Line("A * B = " & Integer'Image(A * B));
   Put_Line("A / B = " & Integer'Image(A / B));
   Put_Line("A mod B = " & Integer'Image(A mod B));
end Arithmetic_Operations;

Solución Ejercicio 2

with Ada.Text_IO; use Ada.Text_IO;

procedure Comparison_Operations is
   A, B : Integer;
begin
   Put("Ingrese el primer número: ");
   Get(A);
   Put("Ingrese el segundo número: ");
   Get(B);

   if A > B then
      Put_Line("A es mayor que B");
   elsif A < B then
      Put_Line("A es menor que B");
   else
      Put_Line("A es igual a B");
   end if;
end Comparison_Operations;

Solución Ejercicio 3

with Ada.Text_IO; use Ada.Text_IO;

procedure Logical_Operations is
   A, B : Boolean;
begin
   Put("Ingrese el primer valor booleano (True/False): ");
   Get(A);
   Put("Ingrese el segundo valor booleano (True/False): ");
   Get(B);

   Put_Line("A and B = " & Boolean'Image(A and B));
   Put_Line("A or B = " & Boolean'Image(A or B));
   Put_Line("not A = " & Boolean'Image(not A));
end Logical_Operations;

Conclusión

En esta sección, hemos aprendido sobre los diferentes tipos de operadores en Ada, incluyendo aritméticos, de comparación, lógicos y de asignación. También hemos visto cómo la precedencia de operadores afecta la evaluación de las expresiones. Los ejemplos prácticos y ejercicios proporcionados te ayudarán a reforzar estos conceptos. En el próximo tema, exploraremos las estructuras de control en Ada.

© Copyright 2024. Todos los derechos reservados