En aquest tema, explorarem els operadors i les expressions en Ada. Els operadors són símbols que indiquen a l'ordinador que realitzi operacions específiques sobre una o més variables. Les expressions són combinacions de variables, constants i operadors que es poden avaluar per produir un valor.
Tipus d'Operadors
Ada proporciona diversos tipus d'operadors que es poden classificar en les següents categories:
- Operadors Aritmètics
- Operadors de Relació
- Operadors Lògics
- Operadors de Concatencació
- Operadors d'Atribució
Operadors Aritmètics
Els operadors aritmètics s'utilitzen per realitzar operacions matemàtiques bàsiques. Aquests són:
| Operador | Descripció | Exemple |
|---|---|---|
+ |
Suma | A + B |
- |
Resta | A - B |
* |
Multiplicació | A * B |
/ |
Divisió | A / B |
mod |
Mòdul (residu) | A mod B |
** |
Exponenciació | A ** B |
Exemple de Codi
with Ada.Text_IO; use Ada.Text_IO;
procedure Arithmetic_Operators is
A : Integer := 10;
B : Integer := 3;
Sum : Integer;
Difference : Integer;
Product : Integer;
Quotient : Float;
Remainder : Integer;
Power : Float;
begin
Sum := A + B;
Difference := A - B;
Product := A * B;
Quotient := Float(A) / Float(B);
Remainder := A mod B;
Power := Float(A) ** Float(B);
Put_Line("Sum: " & Integer'Image(Sum));
Put_Line("Difference: " & Integer'Image(Difference));
Put_Line("Product: " & Integer'Image(Product));
Put_Line("Quotient: " & Float'Image(Quotient));
Put_Line("Remainder: " & Integer'Image(Remainder));
Put_Line("Power: " & Float'Image(Power));
end Arithmetic_Operators;Operadors de Relació
Els operadors de relació s'utilitzen per comparar dos valors. Aquests són:
| Operador | Descripció | Exemple |
|---|---|---|
= |
Igual a | A = B |
/= |
Diferent de | A /= B |
< |
Menor que | A < B |
<= |
Menor o igual que | A <= B |
> |
Major que | A > B |
>= |
Major o igual que | A >= B |
Exemple de Codi
with Ada.Text_IO; use Ada.Text_IO;
procedure Relational_Operators is
A : Integer := 10;
B : Integer := 3;
begin
if A = B then
Put_Line("A is equal to B");
elsif A /= B then
Put_Line("A is not equal to B");
end if;
if A < B then
Put_Line("A is less than B");
elsif A > B then
Put_Line("A is greater than B");
end if;
if A <= B then
Put_Line("A is less than or equal to B");
elsif A >= B then
Put_Line("A is greater than or equal to B");
end if;
end Relational_Operators;Operadors Lògics
Els operadors lògics s'utilitzen per combinar expressions booleanes. Aquests són:
| Operador | Descripció | Exemple |
|---|---|---|
and |
I lògic | A and B |
or |
O lògic | A or B |
not |
Negació lògica | not A |
Exemple de Codi
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 is True");
else
Put_Line("A and B is False");
end if;
if A or B then
Put_Line("A or B is True");
else
Put_Line("A or B is False");
end if;
if not A then
Put_Line("not A is True");
else
Put_Line("not A is False");
end if;
end Logical_Operators;Operadors de Concatencació
Els operadors de concatenació s'utilitzen per unir cadenes de text. Aquests són:
| Operador | Descripció | Exemple |
|---|---|---|
& |
Concatenació | "Hello" & " World" |
Exemple de Codi
with Ada.Text_IO; use Ada.Text_IO; procedure Concatenation_Operators is Str1 : String := "Hello"; Str2 : String := " World"; Result : String; begin Result := Str1 & Str2; Put_Line(Result); end Concatenation_Operators;
Operadors d'Atribució
Els operadors d'atribució s'utilitzen per assignar valors a les variables. Aquests són:
| Operador | Descripció | Exemple |
|---|---|---|
:= |
Atribució | A := B |
Exemple de Codi
with Ada.Text_IO; use Ada.Text_IO;
procedure Assignment_Operators is
A : Integer;
B : Integer := 10;
begin
A := B;
Put_Line("A: " & Integer'Image(A));
end Assignment_Operators;Exercicis Pràctics
Exercici 1: Operacions Aritmètiques
Escriu un programa que demani a l'usuari dos números enters i mostri la suma, resta, producte, quocient, residu i potència dels dos números.
Solució
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
procedure Arithmetic_Exercise is
A : Integer;
B : Integer;
Sum : Integer;
Difference : Integer;
Product : Integer;
Quotient : Float;
Remainder : Integer;
Power : Float;
begin
Put("Enter first number: ");
Get(A);
Put("Enter second number: ");
Get(B);
Sum := A + B;
Difference := A - B;
Product := A * B;
Quotient := Float(A) / Float(B);
Remainder := A mod B;
Power := Float(A) ** Float(B);
Put_Line("Sum: " & Integer'Image(Sum));
Put_Line("Difference: " & Integer'Image(Difference));
Put_Line("Product: " & Integer'Image(Product));
Put_Line("Quotient: " & Float'Image(Quotient));
Put_Line("Remainder: " & Integer'Image(Remainder));
Put_Line("Power: " & Float'Image(Power));
end Arithmetic_Exercise;Exercici 2: Comparació de Nombres
Escriu un programa que demani a l'usuari dos números enters i mostri si el primer número és igual, diferent, menor, menor o igual, major o major o igual que el segon número.
Solució
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
procedure Comparison_Exercise is
A : Integer;
B : Integer;
begin
Put("Enter first number: ");
Get(A);
Put("Enter second number: ");
Get(B);
if A = B then
Put_Line("A is equal to B");
elsif A /= B then
Put_Line("A is not equal to B");
end if;
if A < B then
Put_Line("A is less than B");
elsif A > B then
Put_Line("A is greater than B");
end if;
if A <= B then
Put_Line("A is less than or equal to B");
elsif A >= B then
Put_Line("A is greater than or equal to B");
end if;
end Comparison_Exercise;Resum
En aquesta secció, hem après sobre els diferents tipus d'operadors en Ada, incloent-hi els operadors aritmètics, de relació, lògics, de concatenació i d'atribució. També hem vist exemples pràctics de com utilitzar aquests operadors en programes Ada. Els exercicis pràctics proporcionats ajuden a reforçar els conceptes apresos i a aplicar-los en situacions reals. En la propera secció, explorarem les estructures de control en Ada.
Curs de Programació en Ada
Mòdul 1: Introducció a Ada
Mòdul 2: Conceptes Bàsics
- Variables i Tipus de Dades
- Operadors i Expressions
- Estructures de Control
- Bucles en Ada
- Subprogrames: Procediments i Funcions
Mòdul 3: Tipus de Dades Avançats
Mòdul 4: Programació Modular
Mòdul 5: Concurrència i Programació en Temps Real
Mòdul 6: Temes Avançats
Mòdul 7: Millors Pràctiques i Optimització
- Estil de Codi i Millors Pràctiques
- Depuració i Proves
- Optimització del Rendiment
- Consideracions de Seguretat
