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.
Curso de Programación en Ada
Módulo 1: Introducción a Ada
Módulo 2: Conceptos Básicos
- Variables y Tipos de Datos
- Operadores y Expresiones
- Estructuras de Control
- Bucles en Ada
- Subprogramas: Procedimientos y Funciones
Módulo 3: Tipos de Datos Avanzados
Módulo 4: Programación Modular
Módulo 5: Concurrencia y Programación en Tiempo Real
Módulo 6: Temas Avanzados
Módulo 7: Mejores Prácticas y Optimización
- Estilo de Código y Mejores Prácticas
- Depuración y Pruebas
- Optimización del Rendimiento
- Consideraciones de Seguridad