La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Tipos definidos por el usuario –Enumerativos type boolean.

Presentaciones similares


Presentación del tema: "Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Tipos definidos por el usuario –Enumerativos type boolean."— Transcripción de la presentación:

1 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Tipos definidos por el usuario –Enumerativos type boolean is (False, True); type Color is (Rojo, Amarillo, Azul, Naranja, Verde, Violeta); type Dias is (Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo); D: Dias; Lunes < Martes < Miercoles < Jueves < Viernes < Sabado < Domingo for I in Rojo..Azul loop.... end loop; for I in Color loop.... end loop; package DiasIO is new Enumeration_IO(Dias); use DiasIO; Get(D); Put(D);

2 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde2 Tipos definidos por el usuario –Restricciones, rangos y subtipos I: integer; J: integer range ; K: integer range ; Habiles: Dias range Lunes..Viernes; –Los subtipos son compatibles con su tipo base y con los otros subtipos del mismo tipo base I := J; -- CompatiblesK := I; -- Compatibles -- CONSTRAINT_ERROR J := I; -- CompatiblesJ := K; -- Compatibles -- CONSTRAINT_ERROR I := K; -- CompatiblesK := J; -- Compatibles -- CONSTRAINT_ERROR subtype Year is integer range ; subtype Habiles is Dias range Lunes..Viernes; subtype Primarios is Color range Rojo..Azul; for I in Habiles loop... end loop; for I in Year loop... end loop;

3 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde3 Tipos definidos por el usuario –Atributos de tipos discretos First Last Pos Succ Pred Val Image Value with Text_IO; use Text_IO; procedure Clase4_UserTypes is type Dias is (Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo); D: Dias := Domingo; package DIO is new Enumeration_IO(Dias); package IIO is new Integer_IO(integer); use DIO, IIO; begin Put(Dias'First); -- LUNES Put(Dias'Last); -- DOMINGO Put(Dias'Pos(Lunes)); -- 0 Put(Integer'Pos(0)); -- 0 Put(Integer'Pos(-10)); Put(Integer'Pos(10)); Put(Dias'Succ(Lunes)); -- MARTES --Put(Dias'Succ(Domingo)); -- error en compilación --Put(Dias'Succ(D)); -- CONSTRAINT_ERROR Put(Dias'Pred(Domingo)); -- SABADO Put(Dias'Val(0)); -- LUNES Put(Dias'Image(Lunes)); -- LUNES (valor string) Put(Dias'Value("Lunes")); -- LUNES (valor enumerativo) end Clase4_UserTypes;

4 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde4 Tipos definidos por el usuario –Arrays Declaración type Dias is (Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo); type Vector is array (1..5) of integer; Contadores: array (1..5) of integer; LetraMin: character := 'A'; type VectorDias is array (LetraMin..'Z') of Dias; type VectorBoolean is array (Dias) of boolean; VD: VectorDias; VB: VectorBoolean; Acceso a elementos Contadores(3) := 0; I := Contadores(4); VB(VD(LetraMin)) := VD('Z') > Lunes;

5 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde5 Tipos definidos por el usuario –Arrays Agregates –Asignación a la estructura completa en una sola instrucción Contadores := (0, 0, 0, 0, 0); Contadores := (1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0); Contadores := (1|2|3|4|5 => 0); Contadores := (1..5 => 0); Contadores := (1|3 => 0, others => 10); Contadores := (others => 0); VB := (Sabado|Martes..Miercoles|Domingo => Contadores(2) = Contadores(5), Lunes => true, others => false);

6 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde6 Tipos definidos por el usuario –Arrays Compatibilidad A: array (1..5) of integer; B, C: array (1..5) of integer; A := (1, 2, 3, 4, 5); B := A; -- ilegal (tipos anónimos) C := A; -- ilegal (tipos anónimos) B := C; -- ilegal (tipos anónimos) Para que sean compatibles type Vector is array (1..5) of integer; D: Vector; E, F: Vector; D := (1, 2, 3, 4, 5); E := D; -- legal (tipos de igual nombre) F := D; -- legal (tipos de igual nombre) E := F; -- legal (tipos de igual nombre)

7 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde7 Tipos definidos por el usuario –Arrays multidimensionales procedure Clase4_ArrayMultidimensionales is type Matriz1 is array (1..10, 1..10) of integer; type Vector is array (1..10) of integer; type Matriz2 is array (1..10) of Vector; M1: Matriz1; M2: Matriz2; begin M1(1, 1) := 0; M2(1)(1) := 0; M2(1) := (1..10 => 1); M2(2) := (others => 2); M2 := (1 => (others => 1), 2|4|6..9 => (others => 2), 3|5|10 => (others => 3)); M1 := (1 => (others => 1), 2|4|6..9 => (others => 2), 3|5|10 => (others => 3)); end Clase4_ArrayMultidimensionales;

8 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde8 Tipos definidos por el usuario –Arrays ilimitados type Vector is array (integer range <>) of integer; type Matriz is array (integer range <>, integer range <>) of integer; –Las variables y constantes deben ser siempre limitadas V1: Vector(1..10); V2: Vector(10..15); V3: Vector(16..25); M1: Matriz(1..10, 1..10); subtype SubVector is Vector(1..10); subtype SubMatriz is Matriz(1..10, 1..10); SV: SubVector; SM: SubMatriz; –Compatibilidad (nombre de tipo + cantidad de elementos) V1 := V2; -- incompatibles V1 := V3; V2 := V3; -- incompatibles SV := V1; SV := V2; -- incompatibles SV := V3;

9 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde9 Tipos definidos por el usuario –Atributos de los arrays Siendo A variable o constante de tipo array o un tipo array limitado: A'First(N) A'Last(N) A'Length(N) -- A'Last(N) - A'First(N) + 1 ARange(N) -- A'First(N)..A'Last(N) for I in ARange(N) loop... end loop;

10 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde10 Tipos definidos por el usuario –Registros procedure Clase4_Registros is type Fecha is record Dia: integer range 1..31; Mes: integer range 1..12; Ano: integer range ; end record; F: Fecha; M: integer; begin F.Dia := 20; M := F.Mes; F := (13, 4, 1980); F := (Dia => 13, Mes => 4, Ano => 1980); F := (Dia|Mes => 4, others => 1980); end Clase4_Registros;

11 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde11 Tipos definidos por el usuario –Registros. Valores de campos por default type Fecha is record Dia: integer range := 13; Mes: integer range := 4; Ano: integer range := 1980; end record; F: Fecha; -- F inicializado en (13, 4, 1980) Los valores de campos por default pueden ser expresiones

12 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde12 Tipos definidos por el usuario –Registros. Los valores de campos por default pueden ser expresiones with Text_IO; use Text_IO; procedure Clase4_RegistrosDefault is N: integer := 4; type Rec is record Val1: integer := N; Val2: character; end record; X: Rec; package IIO is new Integer_IO(integer); use IIO; procedure Proc is Y: Rec; begin Put(Y.Val1); end Proc; begin Put(X.Val1); N := 6; Proc; Put(X.Val1); end Clase4_RegistrosDefault;

13 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde13 Tipos definidos por el usuario en Java ______________________________________________________ enum Dias (Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo); ______________________________________________________ int[] anArray; // declare an array of integers anArray = new int[10]; // create an array of integers // assign a value to each array element and print for (int i = 0; i < anArray.length; i++) { anArray[i] = i; System.out.print(anArray[i] + " "); } System.out.println();


Descargar ppt "Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Tipos definidos por el usuario –Enumerativos type boolean."

Presentaciones similares


Anuncios Google