Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Tipos definidos por el usuario –Parámetros array ilimitados.

Slides:



Advertisements
Presentaciones similares
Programación Orientada a Objetos (con Java)
Advertisements

2. Manejo de memoria Manejo de memoria estática
Curso de java básico (scjp)
SENTENCIAS SECUENCIALES
ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION
Curso de Java Capitulo 6: Cadenas y Arrays Profesor:
Insercion de datos..
Lenguaje PHP Capítulo 4.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
ADA: lenguaje de programación concurrente
Metodología de la Programación
Programación I Teoría III
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Packages –Unidad de compilación que permite la especificación.
Desarrollo de Aplicaciones para Internet
Presentación Asignatura POF030 Semana 1. Contenido En forma general, los conceptos que se estudiarán en la asignatura son: – Procedures – Functions –
Curso de Programación 1 Plan 97
Tema 2: Lenguaje PHP básico
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Un lenguaje de programación para sistema empotrados
Tema 1. Introducción a la programación (Lenguaje java).
Programación en Matlab
EXCEPCIÓN DE ERRORES.
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Tipos definidos por el usuario –Punteros Tipo access:
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;
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Subprogramas –Encabezamiento –Declaraciones –Cuerpo –Encabezamiento.
Seminario de Lenguajes A – Opción Ada Estructura general de programas –Especificación de contexto –Encabezado –Declaraciones –Cuerpo Seminario de Lenguajes.
Seminario de Lenguajes A – Opción Ada
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Genéricos –Molde a partir del cual se pueden crear instancias.
Tipos de Datos.
PL/SQL Francisco Moreno Universidad Nacional.
Programación Orientada a Objetos en Java
Marzo 2007 Lenguajes Visuales Clase III.
C lase 10 COMPUTACION /17/2014Computacion - Fac. Ingeniería2  Ademas de los ya vistos (tipos simples), puede usarse como parámetros variables.
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
Vectores en java.
Manipulación de caracteres e hileras de texto
Lenguaje Pascal: Ana Laureano_UAM-A Lenguajes de Programación Pascal Profesora Ana Lilia Laureano - Cruces Universidad Autónoma Metropolitana - Azcpotzalco.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
MÓDULO DE PROCEDIMIENTOS Los módulos también pueden contener subrutinas y funciones → MÓDULO DE PROCEDIMIENTOS  PROCEDIMIENTOS → son compilados como parte.
1 Procedimientos Es un conjunto de sentencias incluidas entre las declaraciones Sub o Function y End Sub/Function VB utiliza varios tipos de procedimientos:
POO Java Módulo 3 Elementos de programas Identificadores
PL/SQL Francisco Moreno Universidad Nacional.
SQL SERVER APLICADO (SSA010) Ariel Alexis Fierro Sáez DuocUC.
TRAMPAS EN EL DISEÑO DE LENGUAJES CON RELACIÓN A LOS NOMBRES - REGLAS DE ALCANCE - COMPILACIÓN POR SEPARADO CONTROL DE FLUJO - EVALUACIÓN DE EXPRESIONES.
Universidad de Tarapacá Fundamentos Lenguaje y Programación Rodrigo Cornejo Mejías Jonathan Cea Chávez Marcelo Gómez Gonzales.
Arboles Binarios de expresiones
PRÁCTICA INVENTADA TOP MANTA Matías Blanco – Sergio Pérez.
16/04/ Sesión 11 Funciones y procedimientos Ing. Ricardo Inquilla.
Clase 12 COMPUTACION 2009 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Estáticos Integer Real Char Boolean String Archivos Registros.
Curso Programación en Java
Introduccion. Los lenguajes de programación surgieron para facilitar las tareas de programación, su evolución ha estado marcada por diferentes ideas que.
Clase 10: Estructuras de datos y arreglos.
Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas.
Tipos de Datos (Data Types)
Programación en Pascal
Sesión 17 Tipos de datos Estruturados Arreglos de Registros Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
PL/SQL Francisco Moreno Universidad Nacional.
1 6. PARAMETRIZACIÓN. 2 Parametrización La parametrización permite realizar una abstracción de la identidad de varios ejemplos de los datos Los valores.
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
VBA – Elementos del Lenguaje
Programación I Arreglos. Los elementos de un arreglo son todos del mismo tipo de dato (todos integer o real o char o registros o aún arreglos)
Definir un vector Forma general Variable=[tipo]*tamaño Tipo: es el valor inicial con el cual quedarán llenas todas las posiciones creadas del vector. Tamaño:
Agenda Clase 11 Parametrización. Pasaje de parámetros (modos). Razones de escogencia entre modos. Clausuras como parámetros. Etiquetas, Conformat Arrays,
Capítulo.3 - Diseño Lógico Combinacional con VHDL
Arreglos y comunicación Usuario
Visual Basic FUNCIONES Y PROCEDIMIENTOS
Algorítmica y Programación
MODULA Lenguaje de Programación Anabel Martín González
5 Paquetes ORACLE Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
2012-BM5A. Unos tips antes de empezar: C# es Case Sensitive (sensible a mayúsculas) Pepe ≠ pepe ≠ pEpE Las asignaciones se hacen con “=” y las comparaciones.
Transcripción de la presentación:

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Tipos definidos por el usuario –Parámetros array ilimitados with Text_IO; use Text_IO; procedure Clase5_ParamArrayIlim is type Matriz is array (integer range <>, integer range <>) of integer; package IntIO is new Integer_IO(integer); use IntIO; procedure Put(Mat: in Matriz) is begin for X in Mat'Range loop for Y in Mat'Range loop Put(Mat(X, Y)); end loop; New_Line; end loop; end Put; M: Matriz(1..5, 1..10) := (others => (others => 0)); begin Put(M); end Clase5_ParamArrayIlim;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde2 Tipos definidos por el usuario –Slices Es un mecanismo que provee Ada para hacer referencia a una parte de un array (sólo unidimiensionales) type Vector is array (integer range <>) of integer; package IIO is new Integer_IO(integer); use IIO; procedure Put(V: Vector) is begin for I in V'Range loop Put(V(I), 2); end loop; end Put; V: Vector(1..10); I: integer; W: Vector(11..15) := (others => 5); begin V(2..6) := (1, 2, 3, 4, 5); V(7..10) := (1, 2, 3, 4); V(1) := 1; V(2..6) := W; W := V(3..7); W(11..13) := V(8..10); Put(V); Put(V(1)); Put(V(1..1)); I := V(1); I := V(1..1); -- ilegal end Clase5_Slices;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde3 Tipos definidos por el usuario –Strings El tipo String es un array ilimitado predefinido como: subtype Positive is integer range 1..integer'Last; type String is array (Positive range <>) of character; Como el tipo String es un array ilimitado, la declaración de variables debe incluir la restricción de rango. S1: String(1..4); S2: String(1..4); Agregate para arreglos String: S1 := ('P', 'e', 'p', 'e'); S2 := "Pepe"; En la declaración de constantes se puede omitir la restricción C: constant String := "Pepe";

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde4 Tipos definidos por el usuario –Strings El Put predefinido en el package Text_IO, podría ser: procedure Put(S: in String) is begin for I in S'Range loop Put(S(I)); end loop; end Put;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde5 Tipos definidos por el usuario –Strings Lo molesto de que los strings sean arrays es que con la declaración: Name: String(1..30); no se puede asignar: Name := "Pepe"; sino que se debe asignar: Name := "Pepe "; Pero los slices pueden aliviar un poco el manejo Name(1..4) := "Pepe"; y por otro lado procedure Get_Line(Item: out String; Last: out Natural); Name(1..Last) := Item;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde6 Tipos definidos por el usuario –Arreglos dinámicos Los arreglos locales pueden ser dinámicos, es decir tomar sus límites en ejecución: procedure Proc(N: integer) is A: array(1..N) of integer; begin end Proc; Proc(5); Proc(10); Por ejemplo: type Vector is array(integer range <>) of integer; function Concat(X, Y: in Vector) return Vector is Z: Vector(1..X'Length + Y'Length); begin Z(1..X'Length) := X; Z(X'Length + 1..Z'Length) := Y; return Z; end Concat;

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde7 Tipos definidos por el usuario –Operaciones sobre Arrays Concatenación & Comparación por igualdad/desigualdad =, /= –definidos aunque tengan distintos límites –Dos arrays de distintas longitudes son distintos Para arreglos unidimensionales con elementos de tipos discretos:, >= –Se aplican elemento a elemento el orden lexicográfico Para arreglos unidimensionales con elementos de tipo boolean and, or, xor –Se aplican elemento a elemento –El resultado es un array del mismo tipo que los operandos

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde8 Tipos definidos por el usuario –Registros parametrizados Registros con discriminante: –el tipo de un campo depende del valor del parámetro subtype Rango is integer range 0..50; type Arreglo is array (Rango range <>) of integer; type VarArray(Len: Rango := 0) is record Valor: Arreglo(1..Len); end record; –El valor por default del parámetro es opcional. Si aparece, se puede declarar variables sin restricción VA1: VarArray(4); -- limitado VA2: VarArray; -- ilimitado => valor por default –El valor del parámetro se puede consultar pero no asignar Put(VA1.Len); Put(VA2.Len); VA1.Len := 5; -- ilegal VA2.Len := 5; -- ilegal

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde9 Tipos definidos por el usuario –Registros parametrizados Registros con discriminante: –El valor del parámetro de un registro limitado no puede cambiar –El valor de los parámetros de una variable registro parametrizado puede cambiar sólo en las siguientes condiciones: »Valor por default para el parámetro en la declaración del tipo »Variable declarada ilimitada (sin restricción) »Asignar valor a todo el registro en una única asignación –Por ejemplo: VA1.Valor := (1, 2, 3, 4); VA2.Valor := (...); -- rango vacío, no se puede asignar VA1 := VA2; -- No se puede VA2 := VA1; VA1 := VA2; -- Ahora sí se puede VA2 := (5, (1, 2, 3, 4, 5)); VA2 := (VA1.Len, VA1.Valor);

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde10 Tipos definidos por el usuario –Registros parametrizados Registros variantes: –El conjunto de campos definidos en un tipo registro puede variar dependiendo de los valores de los parámetros –Ejemplo (próxima diapositiva) –En el case deben ser consideradas todas las alternativas. Puede usarse la alternativa others –Los nombres de los campos deben ser ditintos aunque pertenezcan a distintas alternativas –Si para alguna alternativa no se declaran campos, se utiliza el null

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde11 type EstadoCivil is (Soltero, Casado, Divorciado, Viudo); type DNI is new integer range 10_000_ _999_999; type Fecha is record Dia: integer range 1..31; Mes: integer range 1..12; Ano: integer range ; end record; type Persona(EstCivil: EstadoCivil := Soltero) is record Nombre: String(1..30); Ident: DNI; FechaNacimiento: Fecha; case EstCivil is when Soltero => null; when Casado => Conyuge: DNI; DiaCasamiento: Fecha; when Divorciado|Viudo => FechaFin: Fecha; end case; end record; P1: Persona(Soltero); P2: Persona; begin P1.Nombre := "Campodónico Juan Maria Ignacio"; P1.Ident := 22_333_777; P1.FechaNacimiento := (23, 12, 1970); P2 := P1; P2 := (Casado, P2.Nombre, P2.Ident, P2.FechaNacimiento, 22_444_888, (23, 12, 2000)); P2 := (Divorciado, P2.Nombre, P2.Ident, P2.FechaNacimiento, (27, 4, 2003)); P2.Conyuge := P1.Ident; -- Constraint_error end Clase5_Variantes;