Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porEladio Varas Modificado hace 11 años
1
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Overloading de subprogramas procedure Put(Item: in integer; Width: in integer := 0); procedure Put(Item: character); –Identificación por tipo o cantidad de parámetros –Conflictos posibles procedure Over(A: in character) is begin Put(A); end Over; procedure Over(A: in character; B: in character := ' ') is begin if B = ' ' then Put(B); else Put(A); end if; end Over; Over('X');
2
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde2 Operadores –Los operadores son funciones function "+"(X, Y: in integer) return integer; function "*"(X, Y: in float) return float; function "and"(X, Y: in boolean) return boolean; –Uso: como operador o como función I := 1 + 4;Put(1 + 4);B := A and B; I := "+"(1, 4);Put("+"(1, 4));B := "and"(A, B); –Ejemplo function "and"(X, Y: in boolean) return boolean is -- si X es TRUE, devuelve X and Y; si no, X xor Y Result : boolean; begin if X then Result := X and Y; else Result := X xor Y; end if; return Result; end "and";
3
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde3 –Pero esa solución produce una recursión infinita function "and"(X, Y: in boolean) return boolean is -- si X es TRUE, devuelve X and Y; si no, X xor Y Result : boolean; begin if X then Result := standard."and"(X, Y); else Result := X xor Y; end if; return Result; end "and"; –Package Standard Contiene todos los identificadores predefinidos por el lenguaje Entre otras cosas: –Define los tipos Boolean, Integer, Float, Character, String –Define los subtipos Natural, Positive –Define los operandos sobre esos tipos
4
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde4 Reglas para el overloading de operadores –Se puede hacer overloading de todos los operadores predefinidos excepto de los operadores de short circuit (and then, or else) y los de membership (in, not in) –Deben ser definidos como funciones y tener la misma cantidad de parámetros que la versión predefinida –No se permiten valores de parámetros por default –No hay restricciones sobre los tipos de los parámetros y del resultado –El overloading de los operadores relacionales de orden (, >=) se ajusta a las reglas anteriores –No se puede hacer overloading explícito del /= sino implícitamente al hacer overloading del =, excepto que el tipo de retorno NO sea el boolean predefinido –El overloading del = hace overloading implícito del /=
5
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde5 with Text_IO; use Text_IO; procedure Clase3_OverOper is function "and"(X, Y: in boolean) return boolean is -- si X es TRUE, devuelve el and entre X e Y -- si X es FALSE, devuelve el xor entre X e Y Result : boolean; begin if X then Result := standard."and"(X, Y); else Result := X xor Y; end if; return Result; end "and"; package BIO is new Enumeration_IO(boolean); package IIO is new Integer_IO(integer); use IIO; procedure Put(B: in boolean) is begin BIO.Put(B); New_Line; end Put;
6
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde6 function "/="(A, B: in integer) return integer is begin return (A + B) * 2; end "/="; function "="(A, B: in integer) return boolean is begin return true or (A > B); end "="; begin Put(1 + 4); -- 5 Put("+"(1, 4)); -- 5 New_line; Put(1 = 4); -- FALSE Put("="(A => 1, B => 4)); -- TRUE New_line; Put(1 /= 4); -- TRUE -- Put("/="(A => 1, B => 4)); expresión ambigua (no puede resolver Put) IIO.Put("/="(A => 1, B => 4)); -- 10 New_line; Put(B => "/="(A => 1, B => 4)); -- FALSE New_line;
7
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde7 Put(true and true); -- TRUE Put("and"(true, false)); -- FALSE Put(true and false); -- FALSE Put(false and true); -- TRUE Put(false and false); -- FALSE end Clase3_OverOper;
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.