Programación II. Relación de Ejercicios. Sonido e Imagen. Tema 1: Almacenamiento en Memoria Secundaria. Ficheros 2

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Programación II. Relación de Ejercicios. Sonido e Imagen. Tema 1: Almacenamiento en Memoria Secundaria. Ficheros 2"

Transcripción

1 Programación II Relación de Ejercicios UNIVERSIDAD DE MÁLAGA Dpto. Lenguajes y CC. Computación E.T.S.I. Telecomunicación Sonido e Imagen Contenido Tema : Almacenamiento en Memoria Secundaria. Ficheros Tema : Tipos Abstractos de Datos 3 Tema.: Programacion Modular Tema.: Tipos Abstractos de Datos Tema 3: Gestión de Memoria Dinámica 8 Tema 3.: Listas Enlazadas Tema 3.: Abstracción en la Gestión de Memoria Dinámica Tema 4: Introducción a la Programación Orientada a Objetos 6 Tema 5: Colecciones Prácticas de Laboratorio Práctica : Almacenamiento Persistente de Datos Práctica : Tipos Abstractos de Datos (I) Práctica 3: Tipos Abstractos de Datos (II) Práctica 4: Tipos Abstractos de Datos (III) Práctica 5: Gestión de Memoria Dinámica Práctica 6: Abstracción en la Gestión de Memoria Dinámica (I) Práctica 7: Abstracción en la Gestión de Memoria Dinámica (II) Práctica 8: Introducción a la Programación Orientada a Objetos Práctica 9: La Clase Vector de la Biblioteca Estándar Prácticas de Autoevaluación 4 Gestión de Factoría de Androides Gestión de Tareas Periódicas cc Esta obra se encuentra bajo una licencia Reconocimiento-NoComercial-CompartirIgual 4. Internacional (CC BY-NC-SA 4.) de Creative Commons. Véase

2 Tema : Almacenamiento en Memoria Secundaria. Ficheros. Escribir un programa que cuente el número de letras minúsculas, de letras mayúsculas y de dígitos de un fichero.. Escribir un programa con la opción de encriptar y de desencriptar un fichero de texto, dependiendo de la extensión del fichero de entrada. La encriptación (codificación) consiste en que dado un fichero de texto de entrada (extensión txt) genere otro fichero de salida encriptado (extensión cod). Esta codificación consiste reemplazar cada letra por la tercera siguiente de forma circular (ej. a d, b e,, w z, x a, y b, z c). La opción de desencriptado consiste en leer un fichero codificado (extensión cod) y recuperar la información original en un fichero de texto (extensión txt). 3. Escribir un programa para procesar información sobre los clientes de una agencia matrimonial. El programa debe crear un fichero de texto (cuyo nombre se leerá por teclado) en el que se guarde la información de un número indeterminado de personas. La información que se guardará por cada persona será: Nombre: Edad Género Arte Deporte Libros Música Cadena de caracteres. int. char (M/F). char (S/N). char (S/N). char (S/N). char (S/N). La información correspondiente a cada persona se leerá del teclado. El proceso finalizará cuando se teclee un campo Nombre que esté vacío. 4. Ampliar el programa que procesa clientes de una agencia matrimonial para que tome los datos de todos los candidatos a estudiar del fichero del ejercicio anterior, lea el cliente del teclado y finalmente genere como resultado un fichero (cuyo nombre será leído desde teclado) con toda la información correspondiente a los candidatos aceptados. Una persona del fichero de entrada se considerará aceptable como candidato si tiene diferente género y por lo menos tres aficiones comunes con respecto al aspirante introducido por pantalla. (El programa debe ser capaz de trabajar con cualquier número de personas en el fichero de entrada). 5. Codifique un programa que cree un fichero para contener los datos relativos a los artículos de un almacén. Para cada artículo habrá de guardar la siguiente información: Código del artículo Nombre del artículo Existencias Precio Numérico Cadena de caracteres Numérico Numérico Se deberá pedir datos de cada artículo por teclado hasta que se teclee (cero) como código de artículo. 6. Escriba un programa que tome como entrada el fichero del ejercicio anterior y una condición sobre los campos existencias o precio. La condición podrá ser: <campo> [<,<=,>,>=, ==,! =] <número> Este programa debe generar como salida un fichero que contenga todos aquellos artículos para los que se cumple la condición de entrada.

3 Tema : Tipos Abstractos de Datos Tema.: Programacion Modular Diseñe e implemente los siguientes Módulos, dentro del espacio de nombres umalcc, así como programas de utilización que permitan comprobar su funcionamiento.. Diseñe un módulo que proporcione soporte adecuado a la arímetica con números complejos. El módulo deberá definir el tipo Complejo, así como los siguientes subprogramas: void sumar ( Complejo & r, const Complejo & a, const Complejo & b) ; // Devuelve un numero complejo ( r ) que c o n t i e n e e l r e s u l t a d o de // sumar l o s numeros complejos ( a ) y ( b ). void restar ( Complejo & r, const Complejo & a, const Complejo & b) ; // Devuelve un numero complejo ( r ) que c o n t i e n e e l r e s u l t a d o de // r e s t a r l o s numeros complejos ( a ) y ( b ). void multiplicar ( Complejo & r, const Complejo & a, const Complejo & b) ; // Devuelve un numero complejo ( r ) que c o n t i e n e e l r e s u l t a d o de // m u l t i p l i c a r l o s numeros complejos ( a ) y ( b ). void dividir ( Complejo & r, const Complejo & a, const Complejo & b) ; // Devuelve un numero complejo ( r ) que c o n t i e n e e l r e s u l t a d o de // d i v i d i r l o s numeros complejos ( a ) y ( b ). bool iguales ( const Complejo & a, const Complejo & b) ; // Devuelve t r u e s i l o s numeros complejos ( a ) y ( b ) son i g u a l e s. void escribir ( const Complejo & a) ; // Muestra en p a n t a l l a e l numero complejo ( a ) void leer ( Complejo & a) ; // Lee de t e c l a d o e l v a l o r d e l numero complejo ( a ). // Lee l a p a r t e r e a l y l a p a r t e imaginaria d e l numero. Diseñe un módulo que proporcione soporte adecuado a la arímetica con números racionales. El módulo deberá definir el tipo Racional, así como los subprogramas adecuados teniendo en cuenta las siguientes consideraciones: Los números racionales se representan mediante fracciones, donde tanto el numerador como denominador son de tipo int). Las fracciones se representarán en todo momento normalizadas (simplificadas): Es recomendable implementar un subprograma privado de simplificación de la fracción mediante el cálculo del máximo común divisor (m.c.d.) del numerador y el denominador y su posterior división por dicho m.c.d. Para calcular el máximo común divisor de dos numeros enteros positivos n y m, el algoritmo de Euclides funciona como se indica a continuación: a) Si n < m, entonces se intercambian los valores de n y m (para asegurarnos que n siempre sea mayor o igual que m). b) Si el valor de m es distinto de, entonces sea r el resto de la división entera entre n y m; después modificamos los valores de n y m de la siguiente forma: n toma ahora el valor de m y m toma ahora el valor de r (el resto de la división entera entre n y m calculado anteriormente), y se repite este proceso especificado hasta que el valor de m sea igual a. c) Finalmente, cuando el proceso iterativo acaba, el valor de n es el máximo común divisor de ambos números. Para simplificar la determinación del signo de la fracción puede asumirse que el denominador de la fracción es siempre positivo (por lo que una fracción de signo negativo tendrá un numerador de signo negativo y un denominador de signo positivo). El número cero se guardará siempre en su forma canónica /. Debe evitarse en todo momento la asignación de cero a un denominador. Debe proporcionar subprogramas para leer, escribir, sumar, restar, multiplicar y dividir fracciones. Pueden también suministrarse métodos para comparación de números racionales (iguales, menor, etc). void sumar ( Racional & r, const Racional & r, const Racional & r ); // Asigna a l numero r a c i o n a l ( r ) e l r e s u l t a d o de // sumar l o s numeros r a c i o n a l e s ( r ) y ( r ) void restar ( Racional & r, const Racional & r, const Racional & r ); 3

4 // Asigna a l numero r a c i o n a l ( r ) e l r e s u l t a d o de // r e s t a r l o s numeros r a c i o n a l e s ( r ) y ( r ) void multiplicar ( Racional & r, const Racional & r, const Racional & r ); // Asigna a l numero r a c i o n a l ( r ) e l r e s u l t a d o de // m u l t i p l i c a r l o s numeros r a c i o n a l e s ( r ) y ( r ) void dividir ( Racional & r, const Racional & r, const Racional & r ); // Asigna a l numero r a c i o n a l ( r ) e l r e s u l t a d o de // d i v i d i r l o s numeros r a c i o n a l e s ( r ) y ( r ) void escribir ( const Racional & r); // Muestra en p a n t a l l a e l v a l o r d e l numero r a c i o n a l ( r ) void leer ( Racional & r); // Lee de t e c l a d o e l v a l o r d e l numero r a c i o n a l ( r ) bool igual ( const Racional & r, const Racional & r ); // Devuelve t r u e s i e l numero r a c i o n a l ( r ) es i g u a l a ( r ) bool menor ( const Racional & r, const Racional & r ); // Devuelve t r u e s i e l numero r a c i o n a l ( r ) es menor que ( r ) 3. Diseñe un módulo que proporcione soporte adecuado a la manipulación de polinomios de grados positivos menores que. El módulo deberá definir el tipo Polinomio, así como las siguientes operaciones: double evaluar ( const Polinomio & a, double x); // Devuelve e l r e s u l t a d o de e v a l u a r e l polinomio ( a ) // para un v a l o r de ( x ) e s p e c i f i c a d o como parametro void derivar ( Polinomio & r, const Polinomio & a); // PRECOND: (&r!= &a ) // Devuelve un polinomio ( r ) que c o n t i e n e e l r e s u l t a d o de // c a l c u l a r l a d e r i v a d a d e l polinomio ( a ) void sumar ( Polinomio & r, const Polinomio & a, const Polinomio & b); // PRECOND: ((& r!= &a)&&(&r!= &b ) ) // Devuelve un polinomio ( r ) que c o n t i e n e e l r e s u l t a d o de // sumar l o s polinomios ( a ) y ( b ) void escribir ( const Polinomio & a) ; // Muestra en p a n t a l l a e l contenido d e l polinomio ( a ) void leer ( Polinomio & a) ; // Lee de t e c l a d o e l v a l o r d e l polinomio ( a ) // Lee pares de c o e f i c i e n t e y grado hasta que e l c o e f i c i e n t e sea cero Tema.: Tipos Abstractos de Datos Diseñe e implemente los siguientes TADs, dentro del espacio de nombres umalcc, así como programas de utilización que permitan comprobar su funcionamiento.. TAD número complejo que defina los siguientes métodos públicos: class Complejo { public : Complejo () ; // Constructor por Defecto Complejo ( double parte_real, double parte_imag ) ; // Constructor e s p e c i f i c o double parte_real () const ; // Devuelve l a p a r t e r e a l d e l numero complejo double parte_imag () const ; // Devuelve l a p a r t e imaginaria d e l numero complejo void sumar ( const Complejo & a, const Complejo & b) ; // Asigna a l numero complejo ( a c t u a l ) e l r e s u l t a d o de // sumar l o s numeros complejos ( a ) y ( b ). void restar ( const Complejo & a, const Complejo & b) ; // Asigna a l numero complejo ( a c t u a l ) e l r e s u l t a d o de // r e s t a r l o s numeros complejos ( a ) y ( b ). void multiplicar ( const Complejo & a, const Complejo & b) ; // Asigna a l numero complejo ( a c t u a l ) e l r e s u l t a d o de // m u l t i p l i c a r l o s numeros complejos ( a ) y ( b ). void dividir ( const Complejo & a, const Complejo & b) ; // Asigna a l numero complejo ( a c t u a l ) e l r e s u l t a d o de // d i v i d i r l o s numeros complejos ( a ) y ( b ). bool igual ( const Complejo & b) const ; // Devuelve t r u e s i e l numero complejo ( a c t u a l ) es // i g u a l a l numero complejo ( b ) void escribir () const ; // Muestra en p a n t a l l a e l numero complejo ( a c t u a l ) 4

5 } ; void leer () ; // Lee de t e c l a d o e l v a l o r d e l numero complejo ( a c t u a l ). // Lee l a p a r t e r e a l y l a p a r t e imaginaria d e l numero. TAD polinomio de grados positivos menores que que defina los siguientes métodos públicos: class Polinomio { public : Polinomio (); // D e s t r u c t o r Polinomio (); // Constructor por Defecto Polinomio ( const Polinomio & p); // Constructor de copia Polinomio & operator =( const Polinomio & p); // Operador de Asignacion int max_grado () const ; // Devuelve e l mayor grado d e l polinomio a c t u a l // cuyo c o e f i c i e n t e es d i s t i n t o de cero void poner ( int e, double c); // Asigna e l c o e f i c i e n t e ( c ) a l termino de grado ( e ) // d e l polinomio a c t u a l double obtener ( int e) const ; // Devuelve e l c o e f i c i e n t e c o r r e s p o n d i e n t e a l // termino de grado ( e ) d e l polinomio a c t u a l double evaluar ( double x) const ; // Devuelve e l r e s u l t a d o de e v a l u a r e l polinomio a c t u a l // para un v a l o r de ( x ) e s p e c i f i c a d o como parametro void derivar ( const Polinomio & a); // PRECOND: ( t h i s!= &a ) // Asigna a l polinomio a c t u a l e l r e s u l t a d o de // c a l c u l a r l a d e r i v a d a d e l polinomio ( a ) void sumar ( const Polinomio & a, const Polinomio & b); // PRECOND: ( ( t h i s!= &a)&&( t h i s!= &b ) ) // Asigna a l polinomio a c t u a l e l r e s u l t a d o de // sumar l o s polinomios ( a ) y ( b ) void escribir () const ; // Muestra en p a n t a l l a e l contenido d e l polinomio a c t u a l void leer (); // Lee de t e c l a d o e l v a l o r d e l polinomio a c t u a l // Lee pares de c o e f i c i e n t e y grado hasta que e l c o e f i c i e n t e sea cero }; 3. Un conjunto de números enteros es una colección de elementos homogéneos (números enteros) sin repetición y ninguna relación de orden entre ellos (no ordenados y sin repetición). Defina un TAD Conjunto de números enteros que defina los siguientes métodos públicos: class Conjunto { public : Conjunto (); // D e s t r u c t o r Conjunto (); // Constructor por Defecto : conjunto v a c i o Conjunto ( const Conjunto & c); // Constructor de copia Conjunto & operator =( const Conjunto & c); // Operador de Asignacion void clear (); // Elimina todos l o s elementos d e l conjunto a c t u a l ( queda v a c i o ) bool es_vacio () const ; // Devuelve t r u e s i e l conjunto a c t u a l e s t a v a c i o void incluir ( int e); // I n c l u y e e l elemento ( e ) en e l conjunto a c t u a l ( s i n r e p e t i c i o n ) void eliminar ( int e); // Elimina e l elemento ( e ) d e l conjunto a c t u a l bool pertenece ( int e) const ; // Devuelve t r u e s i e l elemento ( e ) p e r t e n e c e a l conjunto a c t u a l bool es_subconjunto ( const Conjunto & a) const ; // Devuelve t r u e s i e l conjunto a c t u a l es subconjunto d e l conjunto ( a ) void union_conj ( const Conjunto & a, const Conjunto & b); // PRECOND: ( ( t h i s!= &a)&&( t h i s!= &b ) ) 5

6 }; // Asigna a l conjunto a c t u a l e l r e s u l t a d o de // l a union de l o s conjuntos ( a ) y ( b ) void interseccion ( const Conjunto & a, const Conjunto & b); // PRECOND: ( ( t h i s!= &a)&&( t h i s!= &b ) ) // Asigna a l conjunto a c t u a l e l r e s u l t a d o de // l a i n t e r s e c c i o n de l o s conjuntos ( a ) y ( b ) void diferencia ( const Conjunto & a, const Conjunto & b); // PRECOND: ( ( t h i s!= &a)&&( t h i s!= &b ) ) // Asigna a l conjunto a c t u a l e l r e s u l t a d o de // l a d i f e r e n c i a de l o s conjuntos ( a ) y ( b ) void diferencia_simetrica ( const Conjunto & a, const Conjunto & b); // Asigna a l conjunto a c t u a l e l r e s u l t a d o de // l a d i f e r e n c i a s i m e t r i c a de l o s conjuntos ( a ) y ( b ) void escribir () const ; // Muestra en p a n t a l l a e l contenido d e l conjunto a c t u a l void leer (); // Lee de t e c l a d o e l v a l o r d e l conjunto a c t u a l, 4. TAD matriz matemática de números reales (de dimensiones menores de N N) que defina los siguientes métodos públicos: class Matriz { public : Matriz (); // D e s t r u c t o r Matriz (); // Constructor por Defecto : matriz v a c i a Matriz ( int nfils, int ncols ); // Constructor e s p e c i f i c o : crea matriz de ( n f i l s ) x ( n c o l s ) con v a l o r e s Matriz ( const Matriz & m); // Constructor de copia Matriz & operator =( const Matriz & m); // Operador de Asignacion void clear ( int nfils, int ncols ); // Elimina todos l o s elementos de l a matriz a c t u a l, y asigna // a l a matriz a c t u a l una matriz de ( n f i l s ) x ( n c o l s ) con v a l o r e s int nfils () const ; // Devuelve e l numero de f i l a s de l a matriz a c t u a l int ncols () const ; // Devuelve e l numero de columnas de l a matriz a c t u a l void poner ( int f, int c, double val ); // PRECOND: ( <= f && f < n f i l s ( ) && <= c && c < n c o l s ( ) ) // Asigna e l v a l o r ( v a l ) a l elemento de l a f i l a ( f ) // y columna ( c ) de l a matriz a c t u a l double obtener ( int f, int c) const ; // PRECOND: ( f < n f i l s ( ) && c < n c o l s ( ) ) // Devuelve e l v a l o r d e l elemento de l a f i l a ( f ) // y columna ( c ) de l a matriz a c t u a l void sumar ( const Matriz & a, const Matriz & b); // PRECOND: ( ( t h i s!= &a)&&( t h i s!= &b ) ) // Asigna a l a matriz a c t u a l e l r e s u l t a d o de // sumar l a s matrices ( a ) y ( b ) void restar ( const Matriz & a, const Matriz & b); // PRECOND: ( ( t h i s!= &a)&&( t h i s!= &b ) ) // Asigna a l a matriz a c t u a l e l r e s u l t a d o de // r e s t a r l a s matrices ( a ) y ( b ) void multiplicar ( const Matriz & a, const Matriz & b); // PRECOND: ( ( t h i s!= &a)&&( t h i s!= &b ) ) // Asigna a l a matriz a c t u a l e l r e s u l t a d o de // m u l t i p l i c a r l a s matrices ( a ) y ( b ) void escribir () const ; // Muestra en p a n t a l l a e l contenido de l a matriz a c t u a l void leer (); // Lee de t e c l a d o e l v a l o r de l a matriz a c t u a l, // Lee n f i l s, n c o l s y l o s v a l o r e s de l o s elementos }; 5. Un TAD Lista de números enteros es una secuencia de elementos homogéneos (números enteros), donde cada elemento ocupa una determinada posición dentro de la secuencia, de tal forma que se puede acceder a cada elemento por la posición donde se encuentra. Así mismo, también es posible insertar y eliminar 6

7 elementos de la secuencia en la posición indicada, manteniendo el mismo orden posicional de los elementos en la secuencia. Diseñe e implemente el TAD que proporcione los siguientes métodos públicos: class ListaInt { public : ListaInt () ; // D e s t r u c t o r ListaInt () ; // Constructor por Defecto ListaInt ( const ListaInt & o) ; // Constructor de copia ListaInt & operator = ( const ListaInt & o) ; // Operador de Asignacion bool llena () const ; // Devuelve t r u e s i e l numero de elementos almacenados // al c a nz a l a capacidad maxima de almacenamiento int size () const ; // Devuelve e l numero de elementos almacenados void clear () ; // Elimina todos l o s elementos de l a l i s t a a c t u a l ( queda v a c i a ) void insertar ( int pos, int dato ) ; // PRECOND: (! l l e n a ( ) && <= pos && pos <= s i z e ( ) ) // I n s e r t a ( dato ) en l a l i s t a a c t u a l en l a p o s i c i o n ( pos ) void eliminar ( int pos ) ; // PRECOND: ( <= pos && pos < s i z e ( ) ) // Elimina de l a l i s t a a c t u a l e l elemento que ocupa l a p o s i c i o n ( pos ) int acceder ( int pos ) const ; // PRECOND: ( <= pos && pos < s i z e ( ) ) // Devuelve e l elemento de l a l i s t a a c t u a l que ocupa l a p o s i c i o n ( pos ) void modificar ( int pos, int dato ); // PRECOND: ( <= pos && pos < s i z e ( ) ) // Asigna ( dato ) a l elemento de l a l i s t a a c t u a l que ocupa l a p o s i c i o n ( pos ) } ; 7

8 Tema 3: Gestión de Memoria Dinámica Tema 3.: Listas Enlazadas. Diseñe un módulo (programación modular) que proporcione soporte adecuado a la manipulación de listas enlazadas en memoria dinámica (véase siguiente figura). El módulo deberá definir el tipo PNodo como un puntero a un registro en memoria dinámica de tipo Nodo que contiene un enlace al siguiente nodo, así como un dato de tipo int. Además, el módulo deberá definir los siguientes subprogramas. Diseñe también un módulo principal que permita comprobar la corrección del módulo lista implementado. lista: void inicializa ( PNodo & lista ) ; // I n i c i a l i z a ( l i s t a ) a una l i s t a v a c i a void destruir ( PNodo & lista ) ; // Destruye todos l o s elementos de l a l i s t a, l i b e r a n d o // todos l o s nodos de memoria dinamica. ( l i s t a ) queda v a c i a void escribir ( PNodo lista ) ; // Muestra en p a n t a l l a e l contenido de ( l i s t a ) PNodo buscar ( PNodo lista, int dt) ; // Devuelve un puntero a l nodo que c o n t i e n e e l elemento // i g u a l a ( dt ). Si no se encuentra, entonces d e v u e l v e NULL void insertar_principio ( PNodo & lista, int dt) ; // I n s e r t a un elemento a l p r i n c i p i o de ( l i s t a ) void insertar_final ( PNodo & lista, int dt) ; // I n s e r t a un elemento a l f i n a l de ( l i s t a ) void insertar_ord ( PNodo & lista, int dt) ; // I n s e r t a un elemento de forma ordenada en ( l i s t a ), que debe e s t a r ordenada void eliminar_primero ( PNodo & lista ) ; // Elimina e l primer elemento de ( l i s t a ), s i e x i s t e void eliminar_ultimo ( PNodo & lista ) ; // Elimina e l ultimo elemento de ( l i s t a ), s i e x i s t e void eliminar_elem ( PNodo & lista, int dt) ; // Elimina de ( l i s t a ) e l primer elemento i g u a l a ( dt ), s i e x i s t e PNodo situar ( PNodo lista, int pos ) ; // Devuelve un puntero a l nodo que se encuentra en l a p o s i c i o n // i n d i c a d a por ( pos ). La p o s i c i o n cero () i n d i c a e l primer nodo. // Si e l nodo no e x i s t e, entonces d e v u e l v e NULL void insertar ( PNodo & lista, int pos, int dt) ; // I n s e r t a en ( l i s t a ) un elemento en l a p o s i c i o n i n d i c a d a por ( pos ) void eliminar ( PNodo & lista, int pos ) ; // Elimina de ( l i s t a ) e l elemento de l a p o s i c i o n i n d i c a d a por ( pos ), s i e x i s t e PNodo duplicar ( PNodo lista ) ; // Devuelve un puntero a una nueva l i s t a r e s u l t a d o de d u p l i c a r en // memoria dinamica l a l i s t a r e c i b i d a como parametro PNodo leer () ; // Devuelve una l i s t a con l o s numeros l e i d o s de t e c l a d o ( en e l mismo // orden que son i n t r o d u c i d o s ) h asta que l e a e l numero ( que no es // i n t r o d u c i d o ) void eliminar_mayor ( PNodo & lista ) ; // Elimina e l mayor elemento de ( l i s t a ), s i e x i s t e void purgar ( PNodo & lista, int dt) ; // Elimina de ( l i s t a ) todos l o s elementos que sean i g u a l e s a ( dt ), s i e x i s t e n. Un conjunto de números enteros es una colección de elementos homogéneos (números enteros) sin repetición y ninguna relación de orden entre ellos (no ordenados y sin repetición). Un conjunto de elementos se puede representar mediante una lista enlazada, donde cada nodo contiene un elemento del conjunto. Por ejemplo el conjunto con los elementos {,, 3} puede ser representado por la siguiente lista enlazada: lista: 3 8

9 Diseñe un módulo (programación modular) que proporcione soporte adecuado a la manipulación de conjuntos de números enteros implementados mediante listas enlazadas en memoria dinámica (véase figura anterior). El módulo deberá definir el tipo Conjunto como un registro con un campo de tipo PNodo, que se define como un tipo puntero a un registro en memoria dinámica de tipo Nodo que contiene un enlace al siguiente nodo, así como un dato de tipo int. Además, el módulo deberá definir los siguientes subprogramas. Diseñe también un módulo principal que permita comprobar la corrección del módulo implementado. void inicializar ( Conjunto & c); // I n i c i a l i z a ( c ) a un conjunto v a c i o void destruir ( Conjunto & c); // Destruye todos l o s elementos d e l conjunto, l i b e r a n d o // todos l o s nodos de memoria dinamica. ( c ) queda v a c i o bool es_vacio ( const Conjunto & c) ; // Devuelve t r u e s i e l conjunto ( c ) e s t a v a c i o void incluir ( Conjunto & c, int e); // I n c l u y e e l elemento ( e ) en e l conjunto ( c ) ( s i n r e p e t i c i o n ) void eliminar ( Conjunto & c, int e); // Elimina e l elemento ( e ) d e l conjunto ( c ) bool pertenece ( const Conjunto & c, int e) ; // Devuelve t r u e s i e l elemento ( e ) p e r t e n e c e a l conjunto ( c ) void escribir ( const Conjunto & c) ; // Muestra en p a n t a l l a e l contenido d e l conjunto ( c ) void leer ( Conjunto & c); // Lee de t e c l a d o e l v a l o r d e l conjunto ( c ) bool es_subconjunto ( const Conjunto & a, const Conjunto & b) ; // Devuelve t r u e s i e l conjunto ( a ) es subconjunto d e l conjunto ( b ) void union_conj ( Conjunto & c, const Conjunto & a, const Conjunto & b); // Asigna a l conjunto ( c ) e l r e s u l t a d o de // l a union de l o s conjuntos ( a ) y ( b ) ( d u p l i c a l o s nodos ) void interseccion ( Conjunto & c, const Conjunto & a, const Conjunto & b); // Asigna a l conjunto ( c ) e l r e s u l t a d o de // l a i n t e r s e c c i o n de l o s conjuntos ( a ) y ( b ) ( d u p l i c a l o s nodos ) void diferencia ( Conjunto & c, const Conjunto & a, const Conjunto & b); // Asigna a l conjunto ( c ) e l r e s u l t a d o de // l a d i f e r e n c i a de l o s conjuntos ( a ) y ( b ) ( d u p l i c a l o s nodos ) void diferencia_simetrica ( Conjunto & c, const Conjunto & a, const Conjunto & b); // Asigna a l conjunto ( c ) e l r e s u l t a d o de // l a d i f e r e n c i a s i m e t r i c a de l o s conjuntos ( a ) y ( b ) ( d u p l i c a l o s nodos ) void copiar ( Conjunto & d, const Conjunto & o) ; // Copia ( d u p l i c a ) e l conjunto ( o ) en e l conjunto ( d ) Nota: aunque el orden en el que se encuentran los elementos en el conjunto no es importante, y por lo tanto, la opción más simple para incluir elementos en él podría ser insertar siempre los elementos por el principio, con objeto de prácticar los conceptos de listas enlazadas, en esta práctica, los elementos del conjunto serán insertados (sin repetición) ordenados en la lista enlazada donde se encuentran almacenados. 3. Diseñe un módulo (programación modular) que proporcione soporte adecuado a la manipulación de listas doblemente enlazadas en memoria dinámica (véase siguiente figura). El módulo deberá definir el tipo PNodo como un puntero a un registro en memoria dinámica de tipo Nodo que contiene un enlace al siguiente nodo, un enlace al nodo anterior, así como un dato de tipo int. Además, el módulo deberá definir los siguientes subprogramas. Diseñe también un módulo principal que permita comprobar la corrección del módulo lista implementado. lista: void inicializa ( PNodo & lista ) ; // I n i c i a l i z a ( l i s t a ) a una l i s t a v a c i a void destruir ( PNodo & lista ) ; // Destruye todos l o s elementos de l a l i s t a, l i b e r a n d o // todos l o s nodos de memoria dinamica. ( l i s t a ) queda v a c i a void escribir ( PNodo lista ) ; // Muestra en p a n t a l l a e l contenido de ( l i s t a ) PNodo buscar ( PNodo lista, int dt) ; // Devuelve un puntero a l nodo que c o n t i e n e e l elemento // i g u a l a ( dt ). Si no se encuentra, entonces d e v u e l v e NULL 9

10 void insertar_principio ( PNodo & lista, int dt) ; // I n s e r t a un elemento a l p r i n c i p i o de ( l i s t a ) void insertar_final ( PNodo & lista, int dt) ; // I n s e r t a un elemento a l f i n a l de ( l i s t a ) void insertar_ord ( PNodo & lista, int dt) ; // I n s e r t a un elemento de forma ordenada en ( l i s t a ), que debe e s t a r ordenada void eliminar_primero ( PNodo & lista ) ; // Elimina e l primer elemento de ( l i s t a ), s i e x i s t e void eliminar_ultimo ( PNodo & lista ) ; // Elimina e l ultimo elemento de ( l i s t a ), s i e x i s t e void eliminar_elem ( PNodo & lista, int dt) ; // Elimina de ( l i s t a ) e l primer elemento i g u a l a ( dt ), s i e x i s t e PNodo situar ( PNodo lista, int pos ) ; // Devuelve un puntero a l nodo que se encuentra en l a p o s i c i o n // i n d i c a d a por ( pos ). La p o s i c i o n cero () i n d i c a e l primer nodo. // Si e l nodo no e x i s t e, entonces d e v u e l v e NULL void insertar ( PNodo & lista, int pos, int dt) ; // I n s e r t a en ( l i s t a ) un elemento en l a p o s i c i o n i n d i c a d a por ( pos ) void eliminar ( PNodo & lista, int pos ) ; // Elimina de ( l i s t a ) e l elemento de l a p o s i c i o n i n d i c a d a por ( pos ), s i e x i s t e PNodo duplicar ( PNodo lista ) ; // Devuelve un puntero a una nueva l i s t a r e s u l t a d o de d u p l i c a r en // memoria dinamica l a l i s t a r e c i b i d a como parametro PNodo leer () ; // Devuelve una l i s t a con l o s numeros l e i d o s de t e c l a d o ( en e l mismo // orden que son i n t r o d u c i d o s ) h asta que l e a e l numero ( que no es // i n t r o d u c i d o ) void eliminar_mayor ( PNodo & lista ) ; // Elimina e l mayor elemento de ( l i s t a ), s i e x i s t e void purgar ( PNodo & lista, int dt) ; // Elimina de ( l i s t a ) todos l o s elementos que sean i g u a l e s a ( dt ), s i e x i s t e n Tema 3.: Abstracción en la Gestión de Memoria Dinámica. Un polinomio en x de grado arbitrario se puede representar mediante una lista enlazada, donde cada nodo contiene el coeficiente y el exponente de un término del polinomio, y donde los coeficientes con valor cero () no serán almacenados. Por ejemplo el polinomio 5x 4x 5 puede ser representado por la siguiente lista enlazada: lista: Diseñe e implemente el TAD polinomio que defina los siguientes métodos públicos, así como un programa para comprobar su funcionamiento: class Polinomio { public : Polinomio (); // D e s t r u c t o r Polinomio (); // Constructor por Defecto Polinomio ( const Polinomio & p); // Constructor de copia Polinomio & operator =( const Polinomio & p); // Operador de Asignacion int max_grado () const ; // Devuelve e l mayor grado d e l polinomio a c t u a l // cuyo c o e f i c i e n t e es d i s t i n t o de cero void poner ( int e, double c); // Asigna e l c o e f i c i e n t e ( c ) a l termino de grado ( e ) // d e l polinomio a c t u a l double obtener ( int e) const ; // Devuelve e l c o e f i c i e n t e c o r r e s p o n d i e n t e a l // termino de grado ( e ) d e l polinomio a c t u a l double evaluar ( double x) const ; // Devuelve e l r e s u l t a d o de e v a l u a r e l polinomio a c t u a l // para un v a l o r de ( x ) e s p e c i f i c a d o como parametro void derivar ( const Polinomio & a);

11 }; // Asigna a l polinomio a c t u a l e l r e s u l t a d o de // c a l c u l a r l a d e r i v a d a d e l polinomio ( a ) void sumar ( const Polinomio & a, const Polinomio & b); // Asigna a l polinomio a c t u a l e l r e s u l t a d o de // sumar l o s polinomios ( a ) y ( b ) void escribir () const ; // Muestra en p a n t a l l a e l contenido d e l polinomio a c t u a l void leer (); // Lee de t e c l a d o e l v a l o r d e l polinomio a c t u a l // Lee pares de c o e f i c i e n t e y grado hasta que e l c o e f i c i e n t e sea cero. Un conjunto de números enteros es una colección de elementos homogéneos (números enteros) sin repetición y ninguna relación de orden entre ellos (no ordenados y sin repetición). Un conjunto de elementos se puede representar mediante una lista enlazada, donde cada nodo contiene un elemento del conjunto. Por ejemplo el conjunto con los elementos {,, 3} puede ser representado por la siguiente lista enlazada: lista: 3 Diseñe e implemente el siguiente TAD conjunto de números enteros que defina los siguientes métodos públicos, así como un programa para comprobar su funcionamiento: class Conjunto { public : Conjunto (); // D e s t r u c t o r Conjunto (); // Constructor por Defecto : conjunto v a c i o Conjunto ( const Conjunto & c); // Constructor de copia Conjunto & operator =( const Conjunto & c); // Operador de Asignacion void clear (); // Elimina todos l o s elementos d e l conjunto a c t u a l ( queda v a c i o ) bool es_vacio () const ; // Devuelve t r u e s i e l conjunto a c t u a l e s t a v a c i o void incluir ( int e); // I n c l u y e e l elemento ( e ) en e l conjunto a c t u a l ( s i n r e p e t i c i o n ) void eliminar ( int e); // Elimina e l elemento ( e ) d e l conjunto a c t u a l bool pertenece ( int e) const ; // Devuelve t r u e s i e l elemento ( e ) p e r t e n e c e a l conjunto a c t u a l bool es_subconjunto ( const Conjunto & a) const ; // Devuelve t r u e s i e l conjunto a c t u a l es subconjunto d e l conjunto ( a ) void union_conj ( const Conjunto & a, const Conjunto & b); // Asigna a l conjunto a c t u a l e l r e s u l t a d o de // l a union de l o s conjuntos ( a ) y ( b ) void interseccion ( const Conjunto & a, const Conjunto & b); // Asigna a l conjunto a c t u a l e l r e s u l t a d o de // l a i n t e r s e c c i o n de l o s conjuntos ( a ) y ( b ) void diferencia ( const Conjunto & a, const Conjunto & b); // Asigna a l conjunto a c t u a l e l r e s u l t a d o de // l a d i f e r e n c i a de l o s conjuntos ( a ) y ( b ) void diferencia_simetrica ( const Conjunto & a, const Conjunto & b); // Asigna a l conjunto a c t u a l e l r e s u l t a d o de // l a d i f e r e n c i a s i m e t r i c a de l o s conjuntos ( a ) y ( b ) void escribir () const ; // Muestra en p a n t a l l a e l contenido d e l conjunto a c t u a l void leer (); // Lee de t e c l a d o e l v a l o r d e l conjunto a c t u a l, }; 3. Hay muchas aplicaciones en las que se deben almacenar en la memoria matrices de grandes dimensiones. Si la mayoría de los elementos de la matriz son ceros, ésta, en lugar de almacenarse en un array bidimensional, se puede representar más eficientemente utilizando listas enlazadas donde los elementos nulos y filas nulas no serán almacenadas.

12 Así, defina la clase MatrizDispersa en el espacio de nombres umalcc_aux que represente dicha abstracción y proporcione las siguientes operaciones: class MatrizDispersa { public : MatrizDispersa (); // D e s t r u c t o r MatrizDispersa (); // Constructor por Defecto : matriz v a c i a MatrizDispersa ( int nfils, int ncols ); // Constructor e s p e c i f i c o : crea matriz de ( n f i l s ) x ( n c o l s ) con v a l o r e s MatrizDispersa ( const MatrizDispersa & m); // Constructor de copia MatrizDispersa & operator =( const MatrizDispersa & m); // Operador de Asignacion void clear ( int nfils, int ncols ); // Elimina todos l o s elementos de l a matriz a c t u a l, y asigna // a l a matriz a c t u a l una matriz de ( n f i l s ) x ( n c o l s ) con v a l o r e s int nfils () const ; // Devuelve e l numero de f i l a s de l a matriz a c t u a l int ncols () const ; // Devuelve e l numero de columnas de l a matriz a c t u a l void poner ( int f, int c, double val ); // PRECOND: ( <= f && f < n f i l s ( ) && <= c && c < n c o l s ( ) ) // Asigna e l v a l o r ( v a l ) a l elemento de l a f i l a ( f ) // y columna ( c ) de l a matriz a c t u a l double obtener ( int f, int c) const ; // PRECOND: ( f < n f i l s ( ) && c < n c o l s ( ) ) // Devuelve e l v a l o r d e l elemento de l a f i l a ( f ) // y columna ( c ) de l a matriz a c t u a l }; Utilice la siguiente estructura para implementar la matriz dispersa, donde hay una lista enlazada ordenada (ascendentemente por número de fila) para acceder por filas, y a partir de un determinado nodo fila, se puede acceder a la lista enlazada ordenada (ascendentemente por número de columna) donde se encuentran los elementos pertenecientes a dicha fila y a la columna especificada en el nodo cuyo valor es distinto de cero. Por ejemplo, la siguiente figura representa la siguiente matriz: nfil ncol filas con las siguientes especificaciones adicionales: El método obtener permite conocer el valor de un determinado elemento de la matriz especificado por su fila y columna correspondiente. En caso de que dicho elemento no esté almacenado, entonces su valor es cero. El método poner permite asignar un determinado valor a un determinado elemento de la matriz especificado por su fila y columna correspondiente. Solo se almacenarán los elementos de valor distinto de cero, considerando que si un elemento no está almacenado, es que su valor es cero. Si una fila no tiene elementos distintos de cero, el nodo correspondiente a dicha fila no será almacenado. Si el valor a almacenar es distinto de cero, si el elemento ya existe, se reemplazará su valor, en otro caso se añadirá a la estructura.

13 Si el valor a almacenar es cero, habrá que eliminar dicho elemento de la estructura si es que existe. Si como consecuencia de ello, la fila queda sin elementos, habrá que eliminar el nodo correspondiente de dicha lista. 4. Se debe diseñar e implementar el tipo abstracto de datos Matriz de números reales en el espacio de nombre umalcc, junto con las operaciones necesarias para su gestión y tratamiento. Utilice para su implementación la clase MatrizDispersa realizada en el ejercicio anterior. class Matriz { public : Matriz (); // D e s t r u c t o r Matriz (); // Constructor por Defecto : matriz v a c i a Matriz ( int nfils, int ncols ); // Constructor e s p e c i f i c o : crea matriz de ( n f i l s ) x ( n c o l s ) con v a l o r e s Matriz ( const Matriz & m); // Constructor de copia Matriz & operator =( const Matriz & m); // Operador de Asignacion void clear ( int nfils, int ncols ); // Elimina todos l o s elementos de l a matriz a c t u a l, y asigna // a l a matriz a c t u a l una matriz de ( n f i l s ) x ( n c o l s ) con v a l o r e s int nfils () const ; // Devuelve e l numero de f i l a s de l a matriz a c t u a l int ncols () const ; // Devuelve e l numero de columnas de l a matriz a c t u a l void poner ( int f, int c, double val ); // PRECOND: ( <= f && f < n f i l s ( ) && <= c && c < n c o l s ( ) ) // Asigna e l v a l o r ( v a l ) a l elemento de l a f i l a ( f ) // y columna ( c ) de l a matriz a c t u a l double obtener ( int f, int c) const ; // PRECOND: ( f < n f i l s ( ) && c < n c o l s ( ) ) // Devuelve e l v a l o r d e l elemento de l a f i l a ( f ) // y columna ( c ) de l a matriz a c t u a l void sumar ( const Matriz & a, const Matriz & b); // PRECOND: ( ( t h i s!= &a)&&( t h i s!= &b ) ) ; // Asigna a l a matriz a c t u a l e l r e s u l t a d o de // sumar l a s matrices ( a ) y ( b ) void restar ( const Matriz & a, const Matriz & b); // PRECOND: ( ( t h i s!= &a)&&( t h i s!= &b ) ) ; // Asigna a l a matriz a c t u a l e l r e s u l t a d o de // r e s t a r l a s matrices ( a ) y ( b ) void multiplicar ( const Matriz & a, const Matriz & b); // PRECOND: ( ( t h i s!= &a)&&( t h i s!= &b ) ) ; // Asigna a l a matriz a c t u a l e l r e s u l t a d o de // m u l t i p l i c a r l a s matrices ( a ) y ( b ) void escribir () const ; // Muestra en p a n t a l l a e l contenido de l a matriz a c t u a l void leer (); // Lee de t e c l a d o e l v a l o r de l a matriz a c t u a l, // Lee n f i l s, n c o l s y l o s v a l o r e s de l o s elementos }; 5. Implemente un programa principal que permita comprobar el funcionamiento del tipo abstracto de datos Matriz definido previamente. 6. Se dispone de un procesador con varias etapas, y de unas determinadas tareas que se ejecutarán pasando sucesivamente por todas las etapas del procesador, desde la primera hasta la última. Como el procesador dispone de varias etapas, es posible que esté procesando simultáneamente diferentes tareas. Por tanto, una tarea sólo podrá pasar a la siguiente etapa si ésta se encuentra libre. La siguiente figura muestra un procesador con cuatro etapas y dos tareas, la tarea T va ejecutándose por la etapa e y la tarea T va ejecutándose por la etapa e4. procesador t t e e e3 e4 Se debe diseñar la estructura de datos necesaria para representar la información del estado del procesador en cada momento. Para ello, se sigue el esquema mostrado en la siguiente figura. Como se puede observar 3

14 cada etapa se representa con dos elementos, una lista de nodos intermedios con tantos nodos como réplicas (véase más adelante) haya de la etapa (en el ejemplo sólo se muestra una réplica por cada etapa) y los correspondientes nodos de etapa. Cada nodo de etapa contendrá su identificador, el número de la tarea que está ejecutando (un número cero indica que está libre, es decir, no está ejecutando ninguna tarea), y un puntero al primer nodo de la lista de nodos intermedios de la siguiente etapa. También se puede observar que la tarea T se está ejecutando en la etapa y la tarea T se está ejecutando en la etapa 4. procesador 3 4 Es posible que en un determinado momento interese ampliar la potencia de una determinada etapa. Para ello, se replicará dicha etapa haciendo tantos duplicados de la misma como se desee. Así mismo, es posible que interese reducir la potencia de una determinada etapa, para ello se eliminarán réplicas de la misma. Defina el TAD Procesador que implemente la estructura de datos especificada anteriormente, y que proporcione los siguientes métodos públicos, así mismo, también se deberá implementar un programa principal que permita su utilización: a) El Constructor recibe el número de etapas que tiene un determinado procesador, y crea la estructura base de étapas sin replicación y todas en estado inicial libre, como se muestra en la siguiente figura para un procesador de 4 etapas: procesador 3 4 b) El Destructor libera todos los recursos asociados al objeto que está siendo destruido. c) El método Mostrar muestra en pantalla la estructura interna de un procesador. Por ejemplo, para la figura anterior: Etapa: Replica: libre Replica: libre Etapa: Replica: tarea Replica: tarea Etapa: 3 Replica: libre Etapa: 4 Replica: libre d) Un método Replicar, que se usará para ampliar la potencia de una determinada etapa del procesador actual. Recibe como parámetros el identificador de la etapa a replicar y el número de réplicas que deseamos añadir. Las réplicas añadidas tendrán el estado inicial libre (no tienen asignadas la ejecución de ninguna tarea). Las réplicas se añadirán a la estructura añadiendo (en cualquier posición SALVO AL PRINCIPIO) nodos a la lista de nodos intermedios correspondiente a la etapa y nodos de etapa apuntados desde los nodos intermedios añadidos. Como se puede observar, todas las réplicas añadidas deben apuntar al primer nodo intermedio de la etapa siguiente (salvo en la última etapa). La siguiente figura muestra el resultado de añadir dos réplicas de la etapa a la figura anterior: procesador 3 4 La siguiente figura muestra el resultado de añadir una réplica de la etapa a la figura anterior: 4

15 procesador 3 4 e) Un método para Compactar que se usará para disminuir el número de réplicas de una etapa del procesador actual. Para ello, recibe como parámetro el identificador de la etapa a compactar y elimina todas las réplicas de dicha etapa cuyo estado sea libre (no esté ejecutando ninguna tarea). Al compactar etapas habrá que tener en cuenta que: De cada etapa deberá quedar al menos una réplica. Las réplicas que estén ejecutando alguna tarea no pueden ser eliminadas. No se podrá liberar la memoria ocupada por el primer nodo de la lista de nodos intermedios de una etapa (pues sirve de enlace entre una etapa y la siguiente). En caso de que la compactación requiera eliminar la primera réplica de una etapa (porque esté libre), el puntero al nodo de etapa del primer nodo de la lista de nodos intermedios pasará a apuntar a un nodo de etapa que permanezca tras la compactación. Por ejemplo, para la siguiente figura: procesador 3 4 la siguiente figura es el resultado de compactar la etapa de la figura anterior: procesador 3 4 f ) El método AvanzarEvaluacion intenta avanzar una tarea de una determinada etapa a la siguiente. Para ello, recibe como parámetro el número de tarea (distinto de cero) que pretende avanzar a la siguiente etapa. Si la tarea es nueva, buscará una réplica libre de la primera etapa del procesador. Si no hay réplicas libres en esta primera etapa, entonces lanzará una excepción. Si la tarea se está ejecutando en la última etapa del procesador, entonces la tarea habrá terminado su ejecución, y su número desaparecerá de la estructura. En otro caso, intenta avanzar la tarea desde la réplica de la etapa en que se encuentra ejecutándose hasta alguna réplica libre de la siguiente etapa. Si no hay ninguna réplica libre de la siguiente etapa, entonces lanzará una excepción. g) Así mismo, también deberá ser posible realizar la copia y asignación (duplicación) de la estructura de datos que representa a un determinado procesador. 7. Diseñe un programa que permita utilizar el TAD especificado en el ejercicio anterior. 5

16 Tema 4: Introducción a la Programación Orientada a Objetos. Para calcular los sueldos de cada empleado de una factoría, se diseña la siguiente jerarquía de clases polimórficas: Empleado Factoria AgVentas Directivo AgVentas_A AgVentas_B Directivo_A Directivo_B La clase polimórfica Empleado representa un empleado general de una factoría, tiene un constructor que permite crear un objeto con el nombre (string) del empleado recibido como parámetro, y proporciona los siguientes métodos públicos virtuales: clone(): devuelve un puntero a un nuevo objeto creado como copia del objeto actual. sueldo(): calcula y devuelve el sueldo del empleado. En caso de no tener información suficiente para calcular el sueldo, entonces devolverá. nombre(): devuelve el nombre del objeto empleado actual. La clase polimórfica AgVentas representa un agente de ventas general, empleado de una factoría, tiene un constructor que permite crear un objeto con el nombre (string) del empleado recibido como parámetro, y proporciona los siguientes métodos públicos virtuales: clone(): devuelve un puntero a un nuevo objeto creado como copia del objeto actual. borrar_ventas(): reinicia a cero la cantidad total de ventas que acumula este agente de ventas. anyadir_ventas(x): permite añadir una cantidad de euros recibida como parámetro a la cantidad total de ventas que acumula este agente de ventas. ventas(): devuelve la cantidad total de ventas que acumula este agente de ventas. La clase polimórfica AgVentas_A representa un agente de ventas de clase A, empleado de una factoría, tiene un constructor que permite crear un objeto con el nombre (string) del empleado recibido como parámetro, y proporciona los siguientes métodos públicos virtuales: clone(): devuelve un puntero a un nuevo objeto creado como copia del objeto actual. sueldo(): redefine este método para calcular y devolver el sueldo de este tipo de agente de ventas, según la siguiente ecuación: sueldo =. +. total_ventas. La clase polimórfica AgVentas_B representa un agente de ventas de clase B, empleado de una factoría, tiene un constructor que permite crear un objeto con el nombre (string) del empleado recibido como parámetro, y proporciona los siguientes métodos públicos virtuales: clone(): devuelve un puntero a un nuevo objeto creado como copia del objeto actual. sueldo(): redefine este método para calcular y devolver el sueldo de este tipo de agente de ventas, según la siguiente ecuación: sueldo = total_ventas. La clase polimórfica Directivo representa un directivo general, empleado de una factoría, tiene un constructor que permite crear un objeto con el nombre (string) del empleado recibido como parámetro, y proporciona los siguientes métodos públicos virtuales: clone(): devuelve un puntero a un nuevo objeto creado como copia del objeto actual. La clase polimórfica Directivo_A representa un directivo de clase A, empleado de una factoría, tiene un constructor que permite crear un objeto con el nombre (string) del empleado recibido como parámetro, y proporciona los siguientes métodos públicos virtuales: 6

17 clone(): devuelve un puntero a un nuevo objeto creado como copia del objeto actual. sueldo(): redefine este método para calcular y devolver el sueldo de este tipo de directivos, según la siguiente ecuación: sueldo = 5. La clase polimórfica Directivo_B representa un directivo de clase B, empleado de una factoría, tiene un constructor que permite crear un objeto con el nombre (string) del empleado recibido como parámetro, y proporciona los siguientes métodos públicos virtuales: clone(): devuelve un puntero a un nuevo objeto creado como copia del objeto actual. sueldo(): redefine este método para calcular y devolver el sueldo de este tipo de directivos, según la siguiente ecuación: sueldo = 3. La clase polimórfica Factoria representa una factoría con un máximo de empleados, su constructor por defecto permite crear un nuevo objeto de clase Factoria sin ningún empleado, y proporciona los siguientes métodos públicos virtuales: clone(): devuelve un puntero a un nuevo objeto creado como copia del objeto actual. anyadir_empleado(e, ok): intenta añadir el empleado que recibe como primer parámetro (de entrada) a la lista de empleados de la factoría actual. Si la operación es posible o no, entonces devuelve true o false, respectivamente, en el segundo parámetro (de salida). sueldos(): muestra en pantalla tanto el nombre como el sueldo de cada empleado de la factoría. Finalmente, el programa principal creará un objeto de la clase Factoria, le añadirá empleados (Directivo_A, Directivo_B, AgVentas_A y AgVentas_B) y ventas acumuladas a los agentes de ventas, y calculará sus sueldos. Así mismo, tambien probará que la clonación de la factoría funciona adecuadamente.. Se desea simular el comportamiento de una serie de vehículos, por lo que se establece la siguiente jerarquía de clases: Vehiculo Automovil Bicicleta Todo objeto de la clase base polimórfica Vehiculo debe guardar en su estado la siguiente información y definir el siguiente constructor: ident: identificador del vehículo (cadena de caracteres). distancia: la distancia recorrida por el vehículo con respecto al punto de partida (origen) del mismo (unsigned). Vehiculo(i): inicializa el identificador del vehículo con i y su distancia a cero. Además, el comportamiento de los objetos Vehículo queda definido por los siguientes métodos públicos virtuales: id(): devuelve el indentificador del vehículo consultar_dist(): devuelve un unsigned con la distancia recorrida por el vehículo estacionar(): establece la distancia recorrida por el vehículo en (origen) tiene_energia(): indica si el vehículo tiene energía (función lógica). Debe devolver siempre true mover(): incrementa en el valor de la distancia recorrida por el vehículo. clone(): devuelve un puntero a un objeto Vehiculo, copia del vehículo actual Además, la clase Vehículo proporciona a sus clases derivadas los siguientes métodos protected, para poder manipular adecuadamente su estado interno: mover(x): incrementa en x el valor de la distancia recorrida por el vehículo. 7

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso 2013-2014. 1º Grado en Informática Práctica 2: Memoria dinámica y Bibliotecas Objetivos Practicar conceptos

Más detalles

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros Práctica 3. Paso de parámetros entre subrutinas 1. Objetivo de la práctica El objetivo de esta práctica es que el estudiante se familiarice con la programación en ensamblador y el convenio de paso de parámetros

Más detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF ESCUELA POLITÉCNICA SUPERIOR GRADO EN DISEÑO IND. INFORMÁTICA CURSO 2012-13 PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF HASTA AHORA... En prácticas anteriores se ha aprendido: La estructura principal de un

Más detalles

Tema 6. Gestión dinámica de memoria

Tema 6. Gestión dinámica de memoria Tema 6. Gestión dinámica de memoria http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz@icc.uji.es Estructuras de datos y de la

Más detalles

Ficha de Aprendizaje N 13

Ficha de Aprendizaje N 13 Ficha de Aprendizaje N 13 Curso: Lógica y lenguaje de programación Tema: Fundamentos de programación Duración: 2 horas pedagógicas Logros de aprendizaje Identifica los diferentes tipos de operadores que

Más detalles

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso 2013-2014. 1º Grado en Informática Práctica 1: Punteros Objetivos Se hará hincapié en la aritmética de punteros

Más detalles

Programación en java. Estructuras algorítmicas

Programación en java. Estructuras algorítmicas Programación en java Estructuras algorítmicas Estructuras algoritmicas 1. Conceptos basicos 1. Dato 2. Tipos de datos 3. Operadores 2. dsd Conceptos Basicos DATO: se considera una representación simbólica

Más detalles

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola) Objetivos de la sesión Entender el tipo de programas que se pueden realizar con aplicaciones de consola. Conocer el concepto de variable, la forma en que se declaran y su utilización. Conocer la forma

Más detalles

Introducción al tipo Vector Cómo guardar una colección de datos conceptualmente relacionados? - almacenar los 100 primeros números primos, - al

Introducción al tipo Vector Cómo guardar una colección de datos conceptualmente relacionados? - almacenar los 100 primeros números primos, - al Tema 6. Vectores 1. Introducción y Definiciones 2. Operaciones elementales con vectores 3. Definición y manejo de vectores (arrays arrays) en C 4. Operación de Recorrido secuencial de un vector 5. Operación

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Ing. Ricardo Coppo rcoppo@uns.edu.ar Qué es un Objeto? Un objeto es una instancia de una clase Las clases actuán como modelos que permiten la creación

Más detalles

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C Laboratorio de Arquitectura de Redes Punteros en lenguaje C Punteros en lenguaje C Definición Declaración e inicialización de punteros Operadores de punteros: «*» y «&» Operaciones con punteros Operaciones

Más detalles

Algoritmos y Programación I

Algoritmos y Programación I Algoritmos y Programación I ARREGLOS Y ESTRUCTURAS EN C Arreglos Un arreglo o vector es un conjunto de datos del mismo tipo, almacenados de forma contigua (es decir uno al lado del otro) en memoria principal.

Más detalles

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los

Más detalles

lasmatemáticas.eu Pedro Castro Ortega materiales de matemáticas

lasmatemáticas.eu Pedro Castro Ortega materiales de matemáticas 1. Fracciones Una fracción es una expresión del tipo a b, donde a y b son números naturales llamados numerador y denominador, respectivamente. 1.1. Interpretación de una fracción a) Fracción como parte

Más detalles

Operaciones de números racionales

Operaciones de números racionales Operaciones de números racionales Yuitza T. Humarán Martínez Adapatado por Caroline Rodriguez Departamento de Matemáticas Universidad de Puerto Rico en Arecibo El conjunto de los números racionales consiste

Más detalles

Una base de datos de Access puede estar conformada por varios objetos, los más comunes son los siguientes:

Una base de datos de Access puede estar conformada por varios objetos, los más comunes son los siguientes: MICROSOFT ACCESS DEFINICIÓN MS Access es un programa para manejar bases de datos. Una base de datos es un conjunto de datos de un determinado tema o contexto, almacenados de forma sistemática, para obtener

Más detalles

6.1.- Introducción a las estructuras de datos Tipos de datos Arrays unidimensionales: los vectores Operaciones con vectores.

6.1.- Introducción a las estructuras de datos Tipos de datos Arrays unidimensionales: los vectores Operaciones con vectores. TEMA 6: ESTRUCTURAS DE DATOS (Arrays). CONTENIDO: 6.1.- Introducción a las estructuras de datos. 6.1.1.- Tipos de datos. 6.2.- Arrays unidimensionales: los vectores. 6.3.- Operaciones con vectores. 6.4.-

Más detalles

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero TEMA 7: Ficheros 7.1.-Concepto de fichero Todas las estructuras de datos que hemos visto hasta ahora utilizan memoria principal. Esto tiene dos limitaciones importantes: 1. Los datos desaparecen cuando

Más detalles

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos Contenido Introducción...1 Objeto...2 Atributo...2 Métodos...2 Clase...3

Más detalles

Boletín 7 Herencia. String Titular; Nombre del dueño de la cuenta double Saldo: Dinero disponible en la cuenta

Boletín 7 Herencia. String Titular; Nombre del dueño de la cuenta double Saldo: Dinero disponible en la cuenta Boletín 7 Herencia Ejercicio 1: Dentro de un sistema bancario que ya está funcionando disponemos de una clase CUENTA, los datos que guarda dicha clase son los siguientes: String Titular; Nombre del dueño

Más detalles

PROGRAMACION ORIENTADA A OBJETOS EN C++

PROGRAMACION ORIENTADA A OBJETOS EN C++ PROGRAMACION ORIENTADA A OBJETOS EN C++ 1- INTRODUCCIÓN El lenguaje C++ representa el resultado de los esfuerzos realizados para proporcionar las ventajas de la programación Orientada a Objetos a un lenguaje

Más detalles

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa PROGRAMACIÓN 10. Prof. Dolores Cuiñas H. Recuerde que estos son apuntes muy simplificados que deberá completar con la bibliografía recomendada APUNTES Nº 4 ESTRUCTURA SECUENCIAL GENERAL La estructura secuencial

Más detalles

ÁREA: MATEMÁTICAS UNIDAD : 1 TEMPORALIZACIÓN: OCTUBRE 1ª QUINCENA OBJETIVOS CONTENIDOS CRITERIOS DE EVALUACIÓN

ÁREA: MATEMÁTICAS UNIDAD : 1 TEMPORALIZACIÓN: OCTUBRE 1ª QUINCENA OBJETIVOS CONTENIDOS CRITERIOS DE EVALUACIÓN ÁREA: MATEMÁTICAS UNIDAD : 1 TEMPORALIZACIÓN: OCTUBRE 1ª QUINCENA Conocer los nueve primeros órdenes de unidades y las equivalencias entre ellos. Leer, escribir y descomponer números de hasta nueve cifras.

Más detalles

Computación II. Introducción a Visual Basic

Computación II. Introducción a Visual Basic Computación II Introducción a Visual Basic Introducción a Visual Basic Microsoft Visual Basic es un conjunto de herramientas que posibilitan el desarrollo de aplicaciones para Windows de una manera rápida

Más detalles

TEMA 1 CONJUNTOS NUMÉRICOS

TEMA 1 CONJUNTOS NUMÉRICOS TEMA 1 CONJUNTOS NUMÉRICOS. Objetivos / Criterios de evaluación O.1.1 Realizar correctamente operaciones con fracciones: Suma, resta, producto, cociente, potencia y radicación. O.1.2 Resolver operaciones

Más detalles

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA CONTENIDOS: 1. TIPOS DE DATOS 2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIICADORES COMO LOCALIDADES DE MEMORIA OBJETIO EDUCACIONAL: El alumno conocerá las reglas para cambiar fórmulas matemáticas

Más detalles

Informática y Programación Escuela de Ingenierías Industriales y Civiles Curso 2010/2011

Informática y Programación Escuela de Ingenierías Industriales y Civiles Curso 2010/2011 Módulo 2. Fundamentos de Programación Informática y Programación Escuela de Ingenierías Industriales y Civiles Curso 2010/2011 1 CONTENIDO Tema 1. Conceptos generales de algorítmica Tema 2. Sentencias

Más detalles

Llamamos potencia a todo producto de factores iguales. Por ejemplo: 3 4 =

Llamamos potencia a todo producto de factores iguales. Por ejemplo: 3 4 = 1. NÚMEROS NATURALES POTENCIAS DE UN NÚMERO NATURAL Llamamos potencia a todo producto de factores iguales. Por ejemplo: 3 4 = 3 3 3 3 El factor que se repite es la base, y el número de veces que se repite

Más detalles

Enteros (Z):..., -3, -2, -1, 0, 1, 2, 3,... Números enteros (positivos o negativos), sin decimales. Incluye a los naturales.

Enteros (Z):..., -3, -2, -1, 0, 1, 2, 3,... Números enteros (positivos o negativos), sin decimales. Incluye a los naturales. Tema 1: Números Reales 1.1 Conjunto de los números Naturales (N): 0, 1, 2, 3. Números positivos sin decimales. Sirven para contar. Enteros (Z):..., -3, -2, -1, 0, 1, 2, 3,... Números enteros (positivos

Más detalles

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1 Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos

Más detalles

Definición de Memoria

Definición de Memoria Arquitectura de Ordenadores Representación de Datos en Memoria Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Definición de Memoria DRM-1 La memoria

Más detalles

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos. 1 Programación II, Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos. Objetivos Utilizar la sintaxis de las funciones

Más detalles

ESCUELA DE INFORMÁTICA

ESCUELA DE INFORMÁTICA TÉCNICO EN SISTEMAS LABORAL SUBMODULO TEMA 1 (Visual Basic for Application) Microsoft VBA (Visual Basic for Applications) es el lenguaje de macros de Microsoft Visual Basic que se utiliza para programar

Más detalles

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES TRABAJO DE PRÁCTICAS. Convocatoria de junio de 2013

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES TRABAJO DE PRÁCTICAS. Convocatoria de junio de 2013 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Ingeniería Técnica en Informática de Sistemas Segundo curso Departamento de Informática y Análisis Numérico Escuela Politécnica Superior Universidad de Córdoba

Más detalles

1

1 Curso: BORLAN DELPHI 5 Curso de desarrollo de aplicaciones Windows utilizando el entorno de programación Borland Delphi 5. Se estudian las particularidades del lenguaje Delphi, así como su sintaxis; sus

Más detalles

Las clases como tipos de datos definidos por el usuario

Las clases como tipos de datos definidos por el usuario . La clase Fraccional. Representación en UML de los niveles de acceso 3. Categorías de los objetos que aparecen en los métodos 4. El puntero this. Métodos operadores La clase Fraccional Vamos a diseñar

Más detalles

Programación en Visual Basic Ricardo Rodríguez García

Programación en Visual Basic Ricardo Rodríguez García Manual Básico de Programación en Visual Basic 1.- Estructura de un proyecto Visual Basic Los programas o aplicaciones desarrolladas en Visual Basic van a constituir un único paquete que denominaremos proyecto.

Más detalles

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 1 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 2 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo

Más detalles

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

MICROSOFT WORD 2016 Básico

MICROSOFT WORD 2016 Básico MICROSOFT WORD 2016 Básico METODOLOGÍA DE LOS CURSOS Cursos interactivos sobre materias especializadas en los que el alumno avanza de forma guiada bajo una concepción learning by doing (aprender haciendo).

Más detalles

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas Unidad II Fundamentos de programación en Java Ing. José Luis Llamas Cárdenas En java para poder escribir se emplea el objeto System.out, t pero para leer del teclado es necesario emplear System.in Et Este

Más detalles

Funciones. Parámetros por valor

Funciones. Parámetros por valor Funciones I Parámetros por valor Fundamentos de Programación Fundamentos de Programación I Llamada a la función definición subprograma Subprogramas en C++ Funciones 1 Una función es un subprograma que

Más detalles

SCUACAC026MT22-A16V1. SOLUCIONARIO Ejercitación Generalidades de números

SCUACAC026MT22-A16V1. SOLUCIONARIO Ejercitación Generalidades de números SCUACAC026MT22-A16V1 0 SOLUCIONARIO Ejercitación Generalidades de números 1 TABLA DE CORRECCIÓN GUÍA PRÁCTICA EJERCITACIÓN GENERALIDADES DE NÚMEROS Ítem Alternativa 1 E 2 D 3 B 4 E 5 A 6 E 7 B 8 D 9 D

Más detalles

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Java Avanzado Facultad de Ingeniería. Escuela de computación. 2 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 5 3 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo de sus prácticas

Más detalles

Guía para maestro. Fracciones algebraicas. Compartir Saberes.

Guía para maestro. Fracciones algebraicas. Compartir Saberes. Guía para maestro Guía realizada por Yenny Marcela Naranjo Máster en Educación Matemática yennymarce3@gmail.com Las fracciones algebraicas son generalmente explicadas mediante la simbología matemática,

Más detalles

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES. APUNTADORES. La memoria de una máquina esta ordenada en forma de celdas numeradas consecutivamente y que se pueden manipular individualmente o en grupos contiguos. La siguiente figura muestra una representación

Más detalles

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs. Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1

Más detalles

MATEMÁTICAS 4. º CURSO UNIDAD 7: DIVISIÓN

MATEMÁTICAS 4. º CURSO UNIDAD 7: DIVISIÓN MATEMÁTICAS 4. º CURSO UNIDAD 7: DIVISIÓN OBJETIVOS Calcular divisiones cuyo divisor es un número dígito. Reconocer si una división es exacta o entera. Conocer y aplicar la relación entre los términos

Más detalles

UNIDAD V: ARR R EGL G OS O BIDI D MENS N IONALE L S

UNIDAD V: ARR R EGL G OS O BIDI D MENS N IONALE L S UNIDAD V: ARREGLOS BIDIMENSIONALES DIMENSIONALES UNIDAD V: ARREGLOS BIDIMENSIONALES 1.1 GENERALIDADES: Las matrices son una colección finita, homogénea y ordenada de datos. Su información está organizada

Más detalles

9.1. Insertar filas en una hoja

9.1. Insertar filas en una hoja UNIDAD 9. INSERTAR Y ELIMINAR ELEMENTOS (I) Vamos a ver las diferentes formas de insertar y eliminar filas, columnas, celdas y hojas, operaciones muy útiles cuando tenemos un libro ya creado y queremos

Más detalles

Práctica 7: Clases en C++ La Clase Clmagen

Práctica 7: Clases en C++ La Clase Clmagen Práctica 7: Clases en C++ La Clase Clmagen 0. Instrucciones sobre la entrega de la práctica 7 En esta práctica a entregar por el alumno de forma individual se usará una clase imagen en C++ con el fin de

Más detalles

El lenguaje C. 1. Identificadores, constantes y variables

El lenguaje C. 1. Identificadores, constantes y variables Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria

Más detalles

Representación de la información

Representación de la información Laboratorio de Introducción a las Ciencias de la Computación Página 1 UNIERSIDAD CATÓLICA DE SANTA MARÍA PROGRAMA PROESIONAL DE INGENIERÍA DE SISTEMAS SESIÓN 2: Representación de la información OBJETIOS

Más detalles

WorkManager E.D. Manual guía de usuario Diseñador de formularios

WorkManager E.D. Manual guía de usuario Diseñador de formularios WorkManager E.D. Manual guía de usuario Diseñador de formularios En esta sección se crean y diseñan formularios. Para ingresar, clic en el menú Configuración/ Diseñador de formularios. Lista de formularios

Más detalles

Tabla de Símbolos. Programación II Margarita Álvarez

Tabla de Símbolos. Programación II Margarita Álvarez Programación II Margarita Álvarez La tabla de símbolos es una estructura global utilizada por distintos módulos del compilador. Es el principal atributo heredado. Almacena todos los nombres declarados

Más detalles

UNIDAD 1: NÚMEROS NATURALES OBJETIVOS

UNIDAD 1: NÚMEROS NATURALES OBJETIVOS UNIDAD 1: NÚMEROS NATURALES Realizar las operaciones con números naturales (suma, resta, multiplicación y división) y operaciones combinadas de las anteriores. Diferenciar entre división exacta y entera,

Más detalles

Introducción a la programación

Introducción a la programación Introducción a la programación Resolución de Problemas El objetivo principal para que las personas aprendan a programar en algún lenguaje de programación en particular es utilizar el computador como una

Más detalles

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen Fundamentos de Informática. Dpto. de ATC - Página 1 de 8 conceptos Manejo de ficheros en C Contienen los datos que se almacenan en dispositivos de almacenamiento masivo: disquetes, discos duros, DROM,

Más detalles

Preparación para Álgebra 1 de Escuela Superior

Preparación para Álgebra 1 de Escuela Superior Preparación para Álgebra 1 de Escuela Superior Este curso cubre los conceptos mostrados a continuación. El estudiante navega por trayectos de aprendizaje basados en su nivel de preparación. Usuarios institucionales

Más detalles

Guía - Taller # 2 (JAVA)

Guía - Taller # 2 (JAVA) CEET - Distrito Capital Programa de Formación: ADSI 150752 TRIMESTRE VI Conocimiento de Conocimiento: Aplicar diversos estilos de Programación usando herramientas para Desarrollo Web Instructor: Ing. Espec.

Más detalles

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

Más detalles

UNIDAD DE APRENDIZAJE I

UNIDAD DE APRENDIZAJE I UNIDAD DE APRENDIZAJE I Saberes procedimentales Interpreta y utiliza correctamente el lenguaje simbólico para el manejo de expresiones algebraicas. 2. Identifica operaciones básicas con expresiones algebraicas.

Más detalles

Números Racionales. Repaso para la prueba. Profesora: Jennipher Ferreira Curso: 7 B

Números Racionales. Repaso para la prueba. Profesora: Jennipher Ferreira Curso: 7 B Números Racionales Repaso para la prueba Profesora: Jennipher Ferreira Curso: 7 B Tipos de Fracciones Fracciones propias: Son aquellas en las que el denominador es mayor al numerador, y su valor es menor

Más detalles

Programación estructurada (Introducción a lenguaje C)

Programación estructurada (Introducción a lenguaje C) Programación estructurada (Introducción a lenguaje C) M. en C. Sergio Luis Pérez Pérez UAM CUAJIMALPA, MÉXICO, D. F. Trimestre 15-I Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada

Más detalles

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

Más detalles

Procesadores de lenguaje Tema 6 La tabla de símbolos

Procesadores de lenguaje Tema 6 La tabla de símbolos Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de

Más detalles

Lección 10: División de Polinomios. Dra. Noemí L. Ruiz Limardo 2009

Lección 10: División de Polinomios. Dra. Noemí L. Ruiz Limardo 2009 Lección 10: División de Polinomios Dra. Noemí L. Ruiz Limardo 009 Objetivos de la lección Al finalizar esta lección los estudiantes: Dividirán polinomios de dos o más términos por polinomios de uno y dos

Más detalles

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto

Más detalles

Tema 2. El lenguaje JAVA

Tema 2. El lenguaje JAVA Tema 2. El lenguaje JAVA Nomenclatura habitual Variables Tipos de variables Tipos primitivos Referencias Arrays Operadores Operadores de Java Precedencia de operadores Sentencias de control Sentencias

Más detalles

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algoritmos y programas. Algoritmos y Estructuras de Datos I Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de

Más detalles

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Word 2013 LIBRO 3

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Word 2013 LIBRO 3 Computación Aplicada Universidad de Las Américas Aula virtual de Computación Aplicada Módulo de Word 2013 LIBRO 3 Contenido REFERENCIAS EN WORD 2013... 3 NOTAS AL PIE... 3 NOTAS AL FINAL... 7 CITAS...

Más detalles

Instituto Tecnológico de Celaya

Instituto Tecnológico de Celaya CADENAS DE CARACTERES Hasta ahora se han manejado variables de tipo caracter cuyo valor es un sólo caracter. En algunos casos, sin embargo, es necesario usar variables cuyos valores sean un conjunto (cadena)

Más detalles

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

Descripción y Contenido del Curso. Programación C++ Capacity Academy. Descripción y Contenido del Curso Programación C++ Capacity Academy Educación en Tecnología de la Información Online, Efectiva y Garantizada Qué aprenderá si toma este Curso? En este curso aprenderás todo

Más detalles

Estructura de Datos: Archivos

Estructura de Datos: Archivos Estructura de Datos: Archivos Registros (record) Un registro es una estructura que consiste de un número fijo de componentes llamados campos. Los campos pueden ser de diferentes tipos y deben tener un

Más detalles

FRACCIONES EQUIVALENTES 3.1.1

FRACCIONES EQUIVALENTES 3.1.1 FRACCIONES EQUIVALENTES 3.. Fracciones que nombran el mismo valor se llaman fracciones equivalentes, como 2 3 = 6 9. Un método para encontrar fracciones equivalentes es usar la identidad multiplicativa

Más detalles

4. Operadores Operador asignación

4. Operadores Operador asignación Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre

Más detalles

CONJUNTOS NUMÉRICOS. La noción de número es tan antigua como el hombre mismo ya que son necesarios para resolver situaciones de la vida diaria.

CONJUNTOS NUMÉRICOS. La noción de número es tan antigua como el hombre mismo ya que son necesarios para resolver situaciones de la vida diaria. CONJUNTOS NUMÉRICOS La noción de número es tan antigua como el hombre mismo ya que son necesarios para resolver situaciones de la vida diaria. Por ejemplo, usamos números para contar una determinada cantidad

Más detalles

1. Sobrecarga de operadores. 2. Métodos operadores unarios Operador de incremento (prefijo)

1. Sobrecarga de operadores. 2. Métodos operadores unarios Operador de incremento (prefijo) . Sobrecarga de operadores. unarios Operador de incremento (prefijo). Devolución de objetos en los métodos. Retorno por referencia Sobrecarga de operadores Los operadores aceptan uno o varios operandos

Más detalles

Estructuras en LabVIEW.

Estructuras en LabVIEW. Estructuras en LabVIEW. Sumario: 1. Ejecución según el flujo de datos. 2. Estructuras básicas disponibles en LabVIEW. a) Estructura Sequence. b) Estructura Case. c) Estructura For Loop. d) Estructura While

Más detalles

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison LABORATORIO DE PROCESADORES DE LENGUAJE Curso: 2008-2009 Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison Planteamiento del problema En esta práctica se trata de realizar, mediante el

Más detalles

Programación Avanzada para Sistemas de Telecomunicación Arrays

Programación Avanzada para Sistemas de Telecomunicación Arrays Programación Avanzada para Sistemas de Telecomunicación Arrays Juan Carlos Cruellas cruellas@ac.upc.es Objetos y clases Introducción. Vectores de datos primitivos. Vectores de objetos. Introducción En

Más detalles

4.- Leer tres números y escribirlos en orden decreciente

4.- Leer tres números y escribirlos en orden decreciente Ejercicios tema 3 2.- Leer dos números y decir cuál es el menor 3.- Leer tres números y decir cuál es el mayor 4.- Leer tres números y escribirlos en orden decreciente 5.- Los siguientes fragmentos de

Más detalles

Apuntadores (Punteros)

Apuntadores (Punteros) Apuntadores (Punteros) x9ff10 X int 209 SESION 7 *ptr Definición Llamados también punteros. Un Apuntador es una variable que contiene una dirección de memoria, la cual corresponderá a un dato o a una variable

Más detalles

TEMA 4. ESTRUCTURAS DE CONTROL

TEMA 4. ESTRUCTURAS DE CONTROL M.P. Sesmero, P. de Toledo, F.J. Ordoñez, J. Gómez-Romero, J.A. Iglesias, J.L. Mira Programación TEMA 4. ESTRUCTURAS DE CONTROL Grado en Ingeniería en Tecnologías Industriales Programación CONTENIDOS 4.1.

Más detalles

INSTITUCIÓN EDUCATIVA LICEO DEPARTAMENTAL ÁREA DE TECNOLOGÍA E INFORMÁTICA

INSTITUCIÓN EDUCATIVA LICEO DEPARTAMENTAL ÁREA DE TECNOLOGÍA E INFORMÁTICA INSTITUCIÓN EDUCATIVA LICEO DEPARTAMENTAL ÁREA DE TECNOLOGÍA E INFORMÁTICA GUÍA DE INFORMÁTICA (Operaciones matemáticas) Profesor: Germán Rodríguez López Año lectivo 2006-2007 1 OPERACIONES MATEMÁTICAS

Más detalles

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas Herramientas de Programación M.C. Juan Carlos Olivares Rojas Febrero 2011 Temario Simbología Reglas para la construcción de Diagramas Pseudocódigo Temario Tipos de Datos y Expresiones Estructuras lógicas

Más detalles

Cuando se enumeran todos los elementos que componen el conjunto. A = { 1, 2, 3, 4, 5 }

Cuando se enumeran todos los elementos que componen el conjunto. A = { 1, 2, 3, 4, 5 } LOS NÚMEROS REALES TEMA 1 IDEAS SOBRE CONJUNTOS Partiremos de la idea natural de conjunto y del conocimiento de si un elemento pertenece (* ) o no pertenece (* ) a un conjunto. Los conjuntos se pueden

Más detalles

Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa.

Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa. Constantes y variables Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa. pi = 3.1416 Variable: Es un espacio en la memoria de la computadora que

Más detalles

CONTENIDOS Y CRITERIOS DE EVALUACIÓN MATEMÁTICAS 6º ED.

CONTENIDOS Y CRITERIOS DE EVALUACIÓN MATEMÁTICAS 6º ED. . G r e d o s S a n D i e g o V a l l e c a s CONTENIDOS Y CRITERIOS DE EVALUACIÓN MATEMÁTICAS 6º ED. PRIMERA EVALUACIÓN El Sistema de numeración decimal El sistema de numeración decimal. Lectura y escritura

Más detalles

UNIDAD 1: NÚMEROS RACIONALES OBJETIVOS

UNIDAD 1: NÚMEROS RACIONALES OBJETIVOS UNIDAD 1: NÚMEROS RACIONALES Distinguir las distintas interpretaciones de una fracción. Reconocer fracciones equivalentes. Amplificar fracciones. Simplificar fracciones hasta obtener la fracción irreducible.

Más detalles

UNIDAD 4: FUNCIONES POLINOMIALES Y RACIONALES

UNIDAD 4: FUNCIONES POLINOMIALES Y RACIONALES UNIDAD 4: FUNCIONES POLINOMIALES Y RACIONALES En la Sección anterior se abordó contenidos relacionados con las funciones y gráficas, continuamos aprendiendo más sobre funciones; en la presente unidad abordaremos

Más detalles

Vamos a profundizar un poco sobre los distintos tipos de datos que podemos introducir en las celdas de una hoja de cálculo

Vamos a profundizar un poco sobre los distintos tipos de datos que podemos introducir en las celdas de una hoja de cálculo Tipos de datos. Vamos a profundizar un poco sobre los distintos tipos de datos que podemos introducir en las celdas de una hoja de cálculo Valores Constantes: Es un dato que se introduce directamente en

Más detalles

La sintaxis básica para definir una clase es la que a continuación se muestra:

La sintaxis básica para definir una clase es la que a continuación se muestra: DEFINICIÓN DE CLASES Y OBJETOS EN C# Sintaxis de definición de clases La sintaxis básica para definir una clase es la que a continuación se muestra: class nombreclase miembros De este modo se definiría

Más detalles

Programación Estructurada

Programación Estructurada Programación Estructurada PROGRAMACIÓN ESTRUCTURADA 1 Sesión No. 7 Nombre: Estructuras de datos Contextualización Cuando un programa suele ser muy extenso, un problema clásico de los programadores es la

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Nombre: Carné: Examen C++ - Junio Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Examen Grupo B Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción.... 1 1.1 Ejercicio 1:

Más detalles

Estructuras Secuénciales

Estructuras Secuénciales Estructuras Secuénciales Los algoritmos más sencillos de realizar son los que no toman decisiones, tan solo se dedican a realizar o ejecutar instrucción tras instrucción en el orden determinado. Estos

Más detalles

Tema: Excel Formulas, Funciones y Macros

Tema: Excel Formulas, Funciones y Macros 1 Facultad Escuela Lugar de Ejecución : Ingeniería. : Biomédica : Laboratorio de Biomédica Tema: Excel Formulas, Funciones y Macros Objetivos Específicos Conocer los conceptos básicos en relación a la

Más detalles

Tema 3 Álgebra Matemáticas I 1º Bachillerato. 1

Tema 3 Álgebra Matemáticas I 1º Bachillerato. 1 Tema 3 Álgebra Matemáticas I 1º Bachillerato. 1 TEMA 3 ÁLGEBRA 3.1 FACTORIZACIÓN DE POLINOMIOS LA DIVISIBILIDAD EN LOS POLINOMIOS Un polinomio P(x) es divisible por otro polinomio Q(x) cuando el cociente

Más detalles