FIUBA Algoritmos y programación 3
|
|
- Francisco Hidalgo Villanueva
- hace 8 años
- Vistas:
Transcripción
1 FIUBA Algoritmos y programación 3 Trabajo práctico 2: Algo Hero er cuatrimestre, er entrega (trabajo grupal) Integrantes: 90365, Nahuel Lucero, nahuel.bm6@gmail.com 91299, Diego Meller, mellerster@gmail.com 84155, Leandro Alessandrello, leandro.aless@gmail.com 90562, Alejandro Daza, wa.dazamillone@gmail.com Fecha de entrega: 10/6/2010 Corrector: Nota Final: Introducción 2 Descripción basica del juego 2 Dinámica del juego 2 Normas Generales de Entrega 2 Elementos a entregar 3 Supuestos 3 Modelo de dominio 4 Detalles de implementación 6 Excepciones 6 Diagramas de clases 7/8 Diagramas de secuencia 9 Código fuente 10 Checklist de corrección 29
2 Introducción El presente trabajo consiste en el desarrollo de un juego símil Guitar Hero. Descripción básica del juego Algo-Hero es un juego que pone a prueba las habilidades del jugador para manipular el teclado de la computadora y seguir un ritmo determinado. El juego consiste en una secuencia de niveles, en cada uno de los cuales el usuario debe presionar ciertas combinaciones de teclas según se lo va especificando el juego. A medida que el usuario pasa de nivel, estos se vuelven más complejos, agregando más combinaciones de teclas. El juego permite al jugador tocar canciones con una guitarra eléctrica. La guitarra se simula con el teclado. Se definen 4 teclas que permiten al jugador tocar parte de la melodía. El juego muestra al jugador cuales son las teclas que debe tocar. Las notas van moviéndose hacia la parte inferior de la pantalla, y el jugador debe presionar la tecla asociada a cada nota en el momento justo que alcanza la parte inferior de la pantalla. Cada vez que el jugador toca la nota correcta, suma puntos. Dinámica del juego El jugador selecciona una canción a tocar. En base a la canción seleccionada, el modelo del juego arma la partitura (es decir, las notas y figuras musicales asociadas a la canción). A su vez cada canción tiene asociado un compás. Dada la partitura, el compás, y el mapeo de cada nota a cada tecla, el juego puede calcular en qué momento debe presionarse cada tecla, y en base a eso armar un mapa temporal que más adelante se mostrará al usuario por pantalla. Normas generales de entrega Ø La estructura de carpetas que se entrega deberá tener como raíz una carpeta o paquete con el siguiente nombre: algo3c[1 2 3]g[número de grupo]. Donde 1, 2 o 3 es el curso en el cual está inscripto el grupo. Ej: algo3c1g8 es la carpeta que deberá usar el grupo 8 del curso 1 (turno tarde). Ø La documentación deberá estar en 1 sólo archivo (texto y diagramas) preferiblemente en formato.pdf o en su defecto como.doc. Ø Deberá coordinar con su ayudante asignado si se entregará el código fuente impreso y su formato.
3 Elementos a entregar Ø Una aplicación Java o C# que responda al enunciado del trabajo práctico, con todas las estructuras de datos, atributos y comportamiento necesario para la resolución del MODELO del juego. (NO incluye visualización e interacción con el usuario). Ø Pruebas unitarias automatizadas (utilizando JUnit para Java y NUnit para C#) que contemplen las siguientes condiciones: Ø Ø Ø Creación de una canción, con sus correspondientes notas y figuras musicales y tiempo de compás Ø Creación de un mapeo entre notas y teclas Ø Prueba de los métodos del modelo que permiten ir obteniendo las teclas a presionar en forma ordenada y obtener el mapa temporal de teclas a presionar (estos son los métodos que después se utilizarán para implementar la parte visual). Diagrama de clases de las clases principales de la aplicación. Diagrama de secuencia para los casos que se consideren relevantes. Supuestos Debido a la subjetividad del enunciado, se realizaron varios supuestos a la hora realizar el trabajo práctico, a saber: En una partitura podría haber dos o más notas en un mismo instante de tiempo, lo que en teoría musical se conoce como Acorde. Pero, a diferencia de la teoría musical, manejaremos acordes con notas de distinta duración. No se desea poder representar partituras musicales complejas, por lo que no se tuvieron en cuenta conceptos como ligadura, puntillo, clave, etc. La cantidad de teclas distintas a presionar en un nivel no es fija (4). La frecuencia fundamental de las notas es un parámetro que deberá manejar la aplicación. Modelo de dominio El trabajo practico se realizó a través del método clásico : Análisis, Diseño, Implementación y Pruebas, aunque no en forma de cascada sino en forma iterativa. Análisis Básicamente, el análisis está condensado en el enunciado: se requiere desarrollar una aplicación similar al video-juego Guitar Hero, que represente internamente las canciones utilizando los conceptos de teoría musical. Diseño
4 Se partió de una clase básica del dominio del problema: la clase Nota. Esta clase representa, como su nombre lo indica, una nota musical, con su nombre, duración musical y su frecuencia. Consideramos que no era necesario modelar clases que representen a cada nota musical, pues dos notas distintas solo se diferenciarían por su estado. Tampoco se consideró necesario modelar clases para representar las figuras musicales, pues, en este contexto, una figura musical no posee comportamiento. En cambio, se decidió manejar la duración de las notas representando las figuras musicales con constantes. A partir de la clase Nota, y considerando que nuestra aplicación debe soportar acordes, se decidió diseñar la clase Acorde, que representara un conjunto no ordenado de notas. Tomamos como la duración musical del acorde a la de la nota de mayor duración. En base a Acorde, se diseñó una clase que represente un compás (clase Compás). En nuestro modelo, un compás estará compuesto de acordes, es decir, cada nota de un compás corresponderá (estará incluida) en un, y solo un, acorde. La duración musical del compás será la suma de las duraciones de los acordes que lo componen. Puesto que se tienen 12 notas distintas y un acorde no puede contener notas repetidas, un acorde tendrá, como máximo, 12 notas. El próximo paso fue diseñar una clase Partitura, que define, como uno de sus atributos, una Duración de compás. Básicamente, en nuestro modelo, la partitura es un conjunto de compases. La duración esta expresada en cantidad de figuras musicales, y, puesto que dicha duración es invariante en una partitura, solo podrá incorporar compases que posean esa duración. Para modelar las distintas canciones del juego, se diseño la clase Canción. Esta clase posee como atributos: El nombre de la canción La representación de la canción a través de una partitura (instancia de Partitura) El Tiempo de compás (tiempo físico que representa la duración de un compás), el cual es el mismo para todos los compases de la partitura. Una referencia a una instancia de la clase MapeoDeTeclas (ver más adelante), que representa un mapeo entre notas y las teclas que deberá presionar el usuario cuando dicha nota suene. Una referencia a una instancia de la clase MapaTemporal (ver más adelante), que representara un mapeo en el tiempo de las teclas a presionar en cada instante. Esta clase será la encargada de manejar la lógica principal del juego, delegando en la clase MapaTemporal. Tendrá métodos para obtener las teclas a presionar en un instante dado y verificar si una combinación de teclas dada es correcta en un instante de tiempo. La clase MapeoDeTeclas permite asociar teclas a cada nota distinta, obtenerlas y/o eliminarlas.
5 Para el cálculo del mapeo en el tiempo, se decidió delegar esta responsabilidad de la clase Canción a otra clase, MapaTemporal. Esta clase está compuesta de instancias de la clase NodoTemporal. Cada uno de estos nodos representará en el mapa temporal un acorde, teniendo información (atributos) sobre: El tiempo físico relativo al comienzo de la canción en el que el acorde se empieza a tocar. Las teclas a presionar, correspondientes al acorde. La cantidad de tiempo físico en el que el jugador deberá mantener presionadas las teclas (duración del acorde). La clase MapaTemporal será la encargada de transformar los acordes en Nodos, y también, tendrá métodos para obtener, para un tiempo de reproducción de canción dado, el nodo correspondiente. Implementación La implementación del diseño se realizo en la plataforma Microsoft.NET, particularmente trabajando con el lenguaje C# (Ver Código fuente ). Detalles de implementación Las figuras musicales se implementaron utilizando constantes enumeradas (enum), expresando todas las duraciones en semicorcheas, es decir: Redonda = 16, Blanca = Redonda / 2 = 8, etc. La duración de compás también esta expresada en cantidad de semicorcheas, por lo que, si un compás dura 4 negras, la duración de compás se deberá setear como 4 * NEGRA, donde NEGRA es el valor del enum correspondiente a la figura musical negra. Las teclas se representan mediante las constantes enumeradas nativas del lenguaje, localizadas en System.Window.Input. Excepciones Para la aplicación se crearon 4 excepciones: AcordeLlenoException: Se lanzará cuando se intente agregar más de 12 notas a un acorde. MapeoDeTeclasInvalidoException: Se lanzará cuando se quiera acceder en el mapeo de teclas a las teclas asociadas a una nota y esta no se encuentre. NotaInvalidaException: Será lanzada por la clase MapeoDeTeclas cuando el nombre de una nota no sea válido. TiempoInvalidoException: Será lanzada por la clase MapeoTemporal cuando se reciba un tiempo de reproducción mayor que la duración total de la canción.
6 Diagramas de clases
7
8 Diagramas de secuencia El siguiente diagrama de secuencia representa la creación de un MapeoTemporal a partir de una Canción: El siguiente diagrama representa la obtención de las teclas a presionar en un instante dado:
9 Código fuente Acorde.cs namespace AlgoHero.Modelo using System; using System.Collections.Generic; using System.Text; using System.Collections; public enum ctes MAX_NOTAS = 12 ; public class Acorde : IEnumerable #region Atributos private int duracion; private IList notas; #region Constructor public Acorde() /* Postcondición: crea un acorde vacío de duración musical 0. this.notas = new List<Nota>(); this.duracion = 0; #region Métodos
10 public void AddNota(Nota unanota) /* Agrega una nota al acorde. Si el acorde está lleno, lanza una excepcion del tipo * AcordeLlenoException. Si la duración de la nota es máxima asigna esta duración al * acorde. * Postcondición: Lanza AcordeLlenoException si el acorde está lleno. Sino, lo agrega. if ((ctes)this.cantidad == ctes.max_notas) throw new AcordeLlenoException("No se pueden agregar mas notas al acorde."); notas.add(unanota); if (this.duracion < unanota.duracion) this.duracion = unanota.duracion; public double CalcularDuracionEnSeg(double tiempodecompas, int duraciondecompas) /* Calcula el tiempo físico que dura el acorde y lo devuelve. * Precondición: tiempodecompas y duraciondecompas deben ser no negativos. * Postcondicion: lanza ArgumentException si los argumentos son invalidos. if (tiempodecompas < 0 duraciondecompas < 0) throw new ArgumentException("Ingresó una duracion o tiempo de compás negativa"); double tiempodesemicorchea = tiempodecompas / duraciondecompas; return (this.duracion * tiempodesemicorchea); public IEnumerator GetEnumerator() /* Implementa un iterador para esta clase ("foreach")
11 for (int i = 0; i < this.notas.count; i++) yield return this.notas[i]; public bool EsVacio() return (this.cantidad == 0); #region Propiedades public int Duracion get return this.duracion; public int Cantidad get return this.notas.count; Cancion.cs namespace AlgoHero.Modelo using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Windows.Input; public class Cancion #region Atributos private string nombre; private Partitura partitura;
12 private double tiempodecompas; private MapeoDeTeclas mapeo; private MapaTemporal mapatemporal; Atributos #region Constructores public Cancion(string nombre, Partitura partitura, double tiempodecompas, MapeoDeTeclas mapeo) /* Precondiciones: tiempodecompas debe ser un número entero positivo mayor a 0. * Postcondición: lanza ArgumentException si tiempodecompas es inválido. if (tiempodecompas <= 0) throw new ArgumentException("El tiempo de compás debe ser positivo."); this.nombre = nombre; this.partitura = partitura; this.tiempodecompas = tiempodecompas; this.mapeo = mapeo; this.calcularmapatemporal(); #region Propiedades public string Nombre get return nombre; public Partitura Partitura get return partitura; public double TiempoDeCompas get return tiempodecompas;
13 public MapeoDeTeclas Mapeo get return mapeo; set mapeo = value; public MapaTemporal MapaTemporal get return mapatemporal; public double Duracion //Obtiene la duracion total de la cancion, en segundos. get return this.mapatemporal.tiempototal; #region Métodos public void Play() throw new NotImplementedException(); private void CalcularMapaTemporal() this.mapatemporal = new MapaTemporal(this); public IList<Key> ObtenerTeclasAPresionar(double tiempodereproduccion) /* Obtiene las teclas a presionar para un instante de reproduccion de la cancion. * Precondiciones: El tiempo debe ser no negativo y no mayor a la duracion total de la cancion. * Postcondiciones: Lanza ArgumentException si tiempo es negativo. Lanza TiempoInvalidoException * si tiempodereproduccion es mayor que la duracion de la cancion.
14 NodoTemporal nodocorrespondiente = this.mapatemporal.obtenernodocorrespondiente(tiempodereproduccion); return nodocorrespondiente.teclas; public bool EsValida(IList<Key> teclaspresionadas, double tiempodereproduccion) /* Devuelve TRUE si la combinacion de teclas es valida para el instante tiempodereproduccion. * Precondiciones: El tiempo debe ser no negativo y no mayor a la duracion total de la cancion. * Postcondiciones: Lanza ArgumentException si tiempo es negativo. Lanza TiempoInvalidoException * si tiempodereproduccion es mayor que la duracion de la cancion. IList<Key> teclascorrectas = this.obtenerteclasapresionar(tiempodereproduccion); foreach (Key tecla in teclaspresionadas) if (!teclascorrectas.contains(tecla))// esto no contempla si al usuario le faltaron teclas por presionar return false; return true; Compas.cs namespace AlgoHero.Modelo using System;
15 using System.Collections.Generic; using System.Text; using System.Collections; public class Compas #region Atributos private IList acordes; #region Constructor public Compas() acordes = new List<Acorde>(); #region Métodos public void AddAcorde(Acorde unacorde) /* Postcondicion: Se agregó un acorde al compás. this.acordes.add(unacorde); public int CalcularDuracion() /* Calcula la duración musical de todo el compás. * Postcondición: Devuelve la duración del compás. int acumulado = 0; foreach (Acorde acorde in acordes) acumulado += acorde.duracion; return acumulado; public bool EsVacio()
16 return (this.acordes.count == 0); public IEnumerator GetEnumerator() /* Implementa un iterador para esta clase ("foreach") for (int i = 0; i < this.acordes.count; i++) yield return this.acordes[i]; Duracion.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace AlgoHero.Modelo public enum Duracion REDONDA = 16, BLANCA = REDONDA / 2, NEGRA = REDONDA / 4, CORCHEA = REDONDA / 8, SEMICORCHEA = REDONDA / 16 MapaTemporal.cs namespace AlgoHero.Modelo using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Windows.Input;
17 public class MapaTemporal private double tiempototal; /*Tiempo total de la canción (segundos). Utilizado en el constructor *para calcular el tiempo donde empieza cada acorde. private IList<NodoTemporal> listanodostemporales; #region Constructor public MapaTemporal(Cancion unacancion) /* Crea una mapa temporal a partir de unacancion. this.tiempototal = 0; this.listanodostemporales = new List<NodoTemporal>(); foreach (Compas compas in unacancion.partitura.compases) this.agregaracordescomonodos(compas, unacancion.tiempodecompas, unacancion.partitura.duraciondecompas, unacancion.mapeo); #region Métodos private IList<Key> ObtenerTeclasAPresionar(Acorde unacorde, MapeoDeTeclas mapeodeteclas) /* Devuelve las teclas que el jugador debe presionar para un acorde dado. * Lanza MapeoDeTeclasInvalidoException si no se puede acceder a las teclas correspondientes * a alguna nota. IList<Key> teclasapresionar = new List<Key>(); foreach(nota nota in unacorde)
18 string nombrenota = nota.nombre; try IList<Key> teclasdenota = mapeodeteclas.getteclaspara(nombrenota); foreach(key tecla in teclasdenota) if (!teclasapresionar.contains(tecla)) teclasapresionar.add(tecla); catch(notainvalidaexception) throw new MapeoDeTeclasInvalidoException(); return teclasapresionar; private void AgregarAcordesComoNodos(Compas uncompas, double tiempodecompas, int duraciondecompas, MapeoDeTeclas mapeodeteclas) /* Recorre los acordes de uncompas; para cada acorde, calcula las teclas a presionar, calcula * su duracion en segundos, y con ellos crea un NodoTemporal que es agregado al MapaTemporal. * El tiempoacumulado de la Cancion es incrementado en la cantidad que dura el acorde, que será * el tiempoacumulado del proximo NodoTemporal. foreach (Acorde acorde in uncompas) IList<Key> teclasapresionar = ObtenerTeclasAPresionar(acorde, mapeodeteclas); double duraciondelacorde = acorde.calcularduracionenseg(tiempodecompas, duraciondecompas);
19 NodoTemporal nodo = new NodoTemporal(this.tiempoTotal, duraciondelacorde, teclasapresionar); this.addnodo(nodo); this.tiempototal += duraciondelacorde; /*Al agregar el ultimo nodo, sera el tiempo total *de la cancion. private void AddNodo(NodoTemporal unnodo) this.listanodostemporales.add(unnodo); public NodoTemporal ObtenerNodoCorrespondiente(double tiempodereproduccion) /* Devuelve el nodo correspondiente con el tiempo de reproduccion de la cancion * ('tiempodereproduccion'), o null si no lo encuentra. * Precondiciones: tiempodereproduccion es positivo o cero, y esta expresado en segundos. * Postcondiciones: Lanza ArgumentException si tiempodereproduccion es negativo. Lanza * TiempoInvalidoException si tiempodereproduccion es mayor que el tiempo total de la cancion. * Devuelve un NodoTemporal válido si lo encunetra, o null en caso contrario. if (tiempodereproduccion < 0) throw new ArgumentException("El tiempo de reproduccion debe ser no negativo."); if (tiempodereproduccion > this.tiempototal) throw new TiempoInvalidoException( "El tiempo de reproduccion es mayor que el tiempo total de la Cancion."); //Iteramos hasta obtener el nodo correspondiente foreach (NodoTemporal nodo in this.listanodostemporales)
20 nodo.duracion)) if (tiempodereproduccion >= nodo.tiempodeinicio && tiempodereproduccion < (nodo.tiempodeinicio + return nodo; return null; #region Propiedades public int Cantidad get return this.listanodostemporales.count; public double TiempoTotal get return this.tiempototal; MapeoDeTeclas.cs namespace AlgoHero.Modelo using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Input; public class MapeoDeTeclas
21 /* Esta clase representa un mapeo de notas a teclas. Implementada a traves de un Dictionary cuyas * clave son los nombres de las notas y sus valores son una coleccion de teclas. Estas colecciones * deben implementar la interfaz IList provista por el lenguaje. * Las teclas se representan mediante constantes enumeradas definidas en System.Windows.Input #region Atributos private IDictionary< string, IList<Key> > mapeo; private static string[] NombresDeNotas = "DO", "DO#", "RE", "RE#", "MI", "FA", "FA#", "SOL", "SOL#", "LA", "LA#", "SI", "SILENCIO" ; #region Constructor public MapeoDeTeclas() /* Crea una mapeo de teclas con todas las notas musicales válidas, y sin teclas asociadas. this.mapeo = new Dictionary< string, IList<Key> >(); foreach (string nombre in NombresDeNotas) this.mapeo.add(nombre, new List<Key>()); #region Métodos public void AddTeclasPara(string nombredenota, IList<Key> teclas) /* Agrega al mapeo las teclas asociadas a la nota cuyo nombre es 'nombredenota'. * * Precondiciones: nombredenota deber ser un nombre de nota musical válido. *
22 NotaInvalidaException. * Postcondiciones: Si nombredenota es inválido, lanza string nombreenlimpio = ValidarNombre(nombreDeNota); //Obtenemos la lista de teclas asociada a la nota IList<Key> listateclas = this.mapeo[nombreenlimpio]; //Agregamos las teclas que correspondan foreach (Key tecla in teclas) // Si alguna de las teclas ya se encontraba en el mapeo, no la agrega nuevamente if (!listateclas.contains(tecla)) listateclas.add(tecla); private string ValidarNombre(string unnombredenota) /* Verifica si el nombre de la nota es válido. Si lo es, devuelve el nombre sin espacios en blanco de mas y * en mayusculas. Si no lo es, lanza NotaInvalidaException. string nombreenlimpio = unnombredenota.trim().toupper(); if (!NombresDeNotas.Contains(nombreEnLimpio)) throw new NotaInvalidaException("El nombre de la nota es invalido."); return nombreenlimpio; public IList<Key> GetTeclasPara(string nombredenota) /* Devuelve las teclas asociadas a la nota cuyo nombre es 'nombredenota'. *
23 * Precondiciones: nombredenota deber ser un nombre de nota musical válido. * * Postcondiciones: Si nombredenota es inválido, lanza NotaInvalidaException. string nombreenlimpio = ValidarNombre(nombreDeNota); return (this.mapeo[nombreenlimpio]); public void EliminarTeclasPara(string nombredenota, IList<Key> teclas) /* Elimina del mapeo las teclas asociadas a la nota 'nombredenota' que sean iguales * a las teclas contenidas en 'teclas'. * * Precondiciones: nombredenota deber ser un nombre de nota musical válido. * * Postcondiciones: Si nombredenota es inválido, lanza NotaInvalidaException. string nombreenlimpio = ValidarNombre(nombreDeNota); IList<Key> listateclas = this.mapeo[nombreenlimpio]; foreach(key tecla in teclas) // si 'tecla' no está asociada a la nota, no hace nada if (listateclas.contains(tecla)) listateclas.remove(tecla); public void EliminarTeclasPara(string nombredenota) /* Elimina del mapeo todas las teclas asociadas a la nota 'nombredenota'.
24 * * Precondiciones: nombredenota deber ser un nombre de nota musical válido. * * Postcondiciones: Si nombredenota es inválido, lanza NotaInvalidaException. string nombreenlimpio = ValidarNombre(nombreDeNota); this.mapeo[nombreenlimpio].clear(); public bool TieneTeclas() /* Devuelve true si ninguna nota en el mapeo tiene teclas asociadas. * Devuelve false si alguna nota en el mapeo tiene alguna tecla asociada. foreach (IList<Key> teclas in this.mapeo.values) if (teclas.count!= 0) return false; return true; NodoTemporal.cs namespace AlgoHero.Modelo using System; using System.Collections; using System.Collections.Generic; using System.Text;
25 using System.Windows.Input; public class NodoTemporal private double tiempodeinicio; // tiempo físico en segundos, donde empieza el acorde private double duracion; // tiempo físico en segundos, cuanto tiempo se mantienen presionadas las teclas private IList<Key> teclas; // conjunto de teclas a apretar #region Constructor public NodoTemporal(double tiempodeinicio, double duracion, IList<Key> teclas) /* Precondiciones: tiempodeinicio debe ser >= 0, duracion debe ser > 0 * Postcondicion: Lanza ArgumentException en caso parámetros inválidos. if (tiempodeinicio < 0 duracion <= 0) throw new ArgumentException("El tiempodeinicio debe ser >= 0 y/o la duracion > 0."); this.tiempodeinicio = tiempodeinicio; this.duracion = duracion; this.teclas = teclas; #region Propiedades public double TiempoDeInicio get return this.tiempodeinicio; public IList<Key> Teclas get return this.teclas; public double Duracion
26 get return this.duracion; #region Métodos public override bool Equals(object obj) NodoTemporal otronodo; try otronodo = (NodoTemporal)obj; return (this == otronodo); catch return false; public static bool operator ==(NodoTemporal unnodo, NodoTemporal otronodo) return ((unnodo.tiempodeinicio == otronodo.tiempodeinicio)); public static bool operator!=(nodotemporal unnodo, NodoTemporal otronodo) return!(unnodo == otronodo); Nota.cs namespace AlgoHero.Modelo using System; using System.Collections.Generic; using System.Text;
27 using System.Collections; public class Nota #region Atributos private string nombre; private int duracion; private double frecuencia; #region Constructor public Nota(string nombre, int duracion) /* Precondiciónes: nombre debe un nombre nota musical válido. * duracion debe ser la duración musical que corresponde a la nota musical. //Validacion de la duracion Duracion[] duraciones = (Duracion[])Enum.GetValues(typeof(Duracion)); List<Duracion> lista_duraciones = new List<Duracion>(duraciones); if(!lista_duraciones.contains((duracion)duracion)) throw new ArgumentException("Duracion de nota inválida."); this.duracion = duracion; //Lanza ArgumentException si el nombre no es correcto this.frecuencia = this.calcularfrecuencia(nombre); this.nombre = nombre.toupper(); #region Métodos private double CalcularFrecuencia(string nombre)
28 /* Precondición: nombre debe ser el nombre de una nota musical válida. * Postcondición: Devuelve la frecuencia de la nota ingresada. * Caso contrario, si la nota es inválida, se lanza una excepción ArgumentException. string[] Nombres = "DO", "DO#", "RE", "RE#", "MI", "FA", "FA#", "SOL", "SOL#", "LA", "LA#", "SI", "SILENCIO" ; double[] Frecuencias = , , , , , , , , 415.3, 440, , , 0.0 ; List<string> lstnombres = new List<string>(Nombres); inválida"); if (lstnombres.lastindexof(nombre.toupper())!= -1) return Frecuencias[lstNombres.IndexOf(nombre.ToUpper())]; else throw new ArgumentException("La nota ingresada es public override bool Equals(object obj) Nota otranota; try otranota = (Nota)obj; return (this == otranota); catch return false; public static bool operator ==(Nota unanota, Nota otranota) return ((unanota.frecuencia == otranota.frecuencia) && (unanota.duracion == otranota.duracion) && (unanota.nombre == otranota.nombre)); public static bool operator!=(nota unanota, Nota otranota)
29 return!(unanota == otranota); #region Propiedades public string Nombre get return this.nombre; public int Duracion get return this.duracion; public double Frecuencia get return this.frecuencia; Partitura.cs namespace AlgoHero.Modelo using System; using System.Collections.Generic; using System.Text; using System.Collections; public class Partitura : IEnumerable #region Atributos private int duraciondecompas; //Duracion en semicorcheas private IList compases;
30 #region Constructor public Partitura(int duraciondecompas) /* Crea una Partitura vacía y con la duración de compás recibida. * Precondición: duraciondecompas deber ser un número entero positivo. * Postcondición: lanza una excepción ArgumentException si la duraciondecompas no es válida. if (duraciondecompas <= 0) throw new ArgumentException("La duración debe ser un número positivo."); this.duraciondecompas = duraciondecompas; compases = new List<Compas>(); #region Métodos public void AddCompas(Compas uncompas) /* Precondición: uncompas debe tener una duración igual a la de la partitura. * Postcondición: Agregó el compás a la partitura si la duración es válida, caso * contrario lanza ArgumentException. if (uncompas.calcularduracion()!= this.duraciondecompas) throw new ArgumentException("El compás tiene una duración inválida"); compases.add(uncompas); public IEnumerator GetEnumerator() /* Implementa un iterador para esta clase ("foreach")
31 for (int i = 0; i < this.compases.count; i++) yield return this.compases[i]; public bool EsVacio() return (this.compases.count == 0); #region Propiedades public int DuracionDeCompas get return duraciondecompas; public IList Compases get return this.compases;
32 Checklist de corrección Esta sección es para uso exclusivo de la cátedra, por favor no modificar. Carpeta Generalidades Son correctos los supuestos y extensiones? Es prolija la presentación? (hojas del mismo tamaño, numeradas y con tipografía uniforme) Modelo Está completo? Contempla la totalidad del problema? Respeta encapsulamiento? Hace un buen uso de excepciones? Utiliza polimorfismo en las situaciones esperadas? Diagramas Diagrama de clases Está completo? Está bien utilizada la notación? Diagramas de secuencia Está completo? Es consistente con el diagrama de clases? Está bien utilizada la notación? Diagrama de estados Está completo? Está bien utilizada la notación? Diagrama de paquetes Está completo? Está bien utilizada la notación? Código Generalidades Respeta estándares de codificación? Está correctamente documentado?
33
Algoritmos y Programación III 75.07. Cursos 1, 2 y 3. Trabajo Práctico 2. Fi-ormula 3
Algoritmos y Programación III 75.07 Cursos 1, 2 y 3 Trabajo Práctico 2 Introducción Fi-ormula 3 Enunciado General Introducción El presente trabajo consiste en el desarrollo de un juego del tipo de carreras
Más detallesFUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005
Dpto. de Ingeniería de Sistemas Telemáticos E.T.S.I. Telecomunicación Universidad Politécnica de Madrid FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Normas de examen: Con libros y apuntes Duración: 2 horas
Más detallesPontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación
Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación Competencias IIC1103 Introducción a la Programación (I/2010) Interrogación 1 13 de Abril de 2010
Más detallesTema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle
Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Tipos de herencia Herencia y niveles de visibilidad Herencia y creación Redefinición de métodos Conversión
Más detallesTema: Sobrecarga de Operadores.
Programación II. Guía 7 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Sobrecarga de Operadores. Objetivos Describir como redefinir (sobrecargar) operadores para que funcionen
Más detallesFIUBA - 7507 Algoritmos y programación 3
FIUBA - 7507 Algoritmos y programación 3 Trabajo práctico 2: BombitaRodriguez 1er cuatrimestre, 2012 (trabajo grupal) Nombre Padrón email Algoritmos y programación 3 1C2012 - TP 2: BombitaRodriguez 1/10
Más detallesProgramación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVA Jorge Pérez Introducción a la Computación Jorge Pérez Programación Orientada a Objetos en JAVA 1 / 36 Orientación a Objetos OO es un paradigma de modelación y programación
Más detallesRESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA
UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí
Más detallesPruebas de unidad con JUnit
Pruebas de unidad con JUnit Cuando se implementa software, resulta recomendable comprobar que el código que hemos escrito funciona correctamente. Para ello, implementamos pruebas que verifican que nuestro
Más detallesConceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos
Conceptos ELO329: Diseño y Programación Orientados a Objetos 1 Paradigmas de Programación Historia: Los computadores parten cableados por hardware, Luego se introduce la programación en binario, Se desarrolla
Más detallesEn cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.
Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa
Más detallesTema: Arreglos de Objetos en C++.
Programación II. Guía 5 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Arreglos de Objetos en C++. Objetivos Específicos Describir la implementación de arreglos de Objetos.
Más detallesText Mining: Distancia de Levenshtein
Text Mining: Distancia de Levenshtein La distancia de Levenshtein es un potente algoritmo que puede ser aplicado para tareas de Text Mining. Determina una medida de similaridad o cercanía entre dos cadenas
Más detallesEXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011
EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 1. (0,75 PUNTOS) Identificad a continuación las sentencias que son ciertas, descartando
Más detallesISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA
ARREGLOS EN JAVA I I N T R O D U C C I Ó N En las sesiones anteriores, los datos manejados en los programas han sido datos simples (carácter, entero, reales) En un gran número de problemas es necesario
Más detallesUML, ejemplo sencillo sobre Modelado de un Proyecto
UML, ejemplo sencillo sobre Modelado de un Proyecto Normal &DOLILFDU 0L3DQRUDPD 626 (VFULEHSDUD1RVRWURV Por Armando Canchala Contenido Introducción Objetivo Requerimientos Casos de Uso Subcasos de Uso
Más detallesTema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código
Tema 6 Reutilización de código Programación 2015-2016 Programación - Tema 6: Reutilización de código 1 Tema 6. Reutilización de código Modularidad. Implementación de métodos. Uso de métodos. Programación
Más detallesModulo 1 El lenguaje Java
Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto
Más detallesTutorial de UML. Introducción: Objetivos: Audiencia: Contenidos:
Tutorial de UML Introducción: El Lenguaje de Modelamiento Unificado (UML - Unified Modeling Language) es un lenguaje gráfico para visualizar, especificar y documentar cada una de las partes que comprende
Más detallesIntroducción a la Programación Orientada a Objetos
Introducción a la Programación Orientada a Objetos El paradigma imperativo. En un programa se tienen una serie de variables con las cuales operamos y modificamos mediante sentencias y funciones para producir
Más detalles4. METODOLOGÍA. 4.1 Materiales. 4.1.1 Equipo
4. METODOLOGÍA 4.1 Materiales 4.1.1 Equipo Equipo de cómputo. Para el empleo del la metodología HAZOP se requiere de un equipo de cómputo con interfase Windows 98 o más reciente con procesador Pentium
Más detallesALGORITMICA Y PROGRAMACION POR OBJETOS I
ALGORITMICA Y PROGRAMACION POR OBJETOS I Nivel 2 Definiendo situaciones y manejando casos Marcela Hernández Hoyos Qué vamos a aprender en este nivel: Diferencia entre clase y objeto Modelar características
Más detallesBANCOS. Manejo de Bancos. Como crear una ficha de Banco? Como modificar los datos de una ficha de Banco? Como borrar una ficha de Banco?
BANCOS El Sistema de Gestión Administrativa permite el manejo de los movimientos bancarios. Seleccionada la opción de Bancos, el sistema presentara las siguientes opciones. Manejo de Bancos Manejo de movimientos
Más detallesProgramación de Objetos.Net C# LDP3501-2011 / DUOC-AV
Actividades: Programación de Objetos.Net C# LDP3501-2011 / DUOC-AV Creación y Manejo de una Colección de Negocio... 1 Creación de la Colección de Negocio... 1 Agregar elementos a la Colección... 1 Mejorando
Más detallesCréditos académicos. Ignacio Vélez. Facultad de Ingeniería Industrial. Politécnico Grancolombiano
Créditos académicos Ignacio Vélez Facultad de Ingeniería Industrial Politécnico Grancolombiano 11 de noviembre de 2003 Introducción Cuando se habla del sistema de créditos muchas personas consideran que
Más detallesTrabajo Práctico N 4: Diseño por Contratos
1. Defina los contratos de las siguientes clases: Trabajo Práctico N 4: Diseño por Contratos a. La clase Fecha representa una fecha en el formato dia, mes y año. Especificar los contratos para asegurar
Más detallesSOLUCION PARCIAL TASK SCHEDULER. Task Scheduler
Task Scheduler Se necesita modelar una aplicación que permita definir tareas y ejecutarlas en forma programada. Las tareas pueden ser: La ejecución de programa cualquiera o comando del sistema operativo,
Más detallesSISTEMA DE BECAS AL EXTERIOR
SISTEMA DE BECAS AL EXTERIOR Manual del Becado En este manual se describen los diferentes procesos que ejecuta el becado en el desarrollo de sus estudios en el exterior. Todos los procesos serán ejecutados
Más detallesNIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS
1 NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Árboles Binarios y Árboles Binarios Ordenados 2 Contenido Árboles binarios Iteradores Árboles binarios ordenados 3 Árboles binarios Algunas definiciones para
Más detallesOPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)
APRENDERAPROGRAMAR.COM OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B) Sección: Cursos Categoría: Tutorial básico del programador web: PHP desde cero
Más detallesIntroducción a la programación orientada a objetos
Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación
Más detallesCLASE # 5 TÉCNICAS DE CAJA BLANCA
CLASE # 5 TÉCNICAS DE CAJA BLANCA 750105M - TÉCNICAS DE PRUEBAS DE SOFTWARE INGENIERÍA DE SISTEMAS Y COMPUTACIÓN UNIVERSIDAD DEL VALLE SEMESTRE 2013A - DOCENTE BEATRIZ FLORIAN GAVIRIA Basado Parcialmente
Más detallesPROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOS Clase 1. Introducción Profesor: Diego Sánchez Gómez Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases
Más detallesJava Inicial (20 horas)
Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción
Más detalles11. Algunas clases estándar de Java (II)
122 A. García-Beltrán y J.M. Arranz 11. Algunas clases estándar de Java (II) Objetivos: a) Presentar la clase predefinida en Java para trabajar con arrays b) Interpretar el código fuente de una aplicación
Más detallesProgramación III. 1. Facultad: Ingeniería Escuela: Computación Asignatura:Programación III I. OBJETIVOS II. INTRODUCCIÓN TEÓRICA
Programación III. 1 Facultad: Ingeniería Escuela: Computación Asignatura:Programación III GUIA1: Uso de C# modo consola. I. OBJETIVOS Qué el estudiante: Conozca el lenguaje de programación Visual C#.Net
Más detallesComente: Los bancos siempre deberían dar crédito a los proyectos rentables. Falso, hay que evaluar la capacidad de pago.
Explique Brevemente en que consiste el leasing y nombre los diferentes tipos existentes. Es un mecanismo de financiamiento de Activos el cual permite el uso del activo por un periodo determinado a cambio
Más detallesTEMA 3. CLASES. EJERCICIOS
TEMA 3. CLASES. EJERCICIOS EJERCICIO 1 Considere la siguiente clase: public class IdentifyMyParts { public static int x = 7; public int y = 3; a. Cuáles son las variables de clase? b. Cuáles son las variables
Más detalles10/09/2015 1.0 Primera versión del documento Federico González. 13/09/2015 1.0 Revisión de SQA Alejandro Tosi
PlainStock Modelo de de Prueba Versión 5.0 Historia de revisiones Fecha Versión Descripción Autor 10/09/2015 1.0 Primera versión del documento Federico González 13/09/2015 1.0 Revisión de SQA Alejandro
Más detallesCentro de Capacitación en Informática
Fórmulas y Funciones Las fórmulas constituyen el núcleo de cualquier hoja de cálculo, y por tanto de Excel. Mediante fórmulas, se llevan a cabo todos los cálculos que se necesitan en una hoja de cálculo.
Más detallesCompiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015
Departamento de Cs. e Ingeniería de la Computación Universidad Nacional del Sur Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015 1. Introducción Este documento
Más detallesDISEÑO DEL SOFTWARE TRAFFIC ANALYZER. Analyzer. En este capítulo se reporta el desarrollo que se llevó a cabo para realizar el software
3 Diseño del Software Traffic Analyzer En este capítulo se reporta el desarrollo que se llevó a cabo para realizar el software que analiza el tráfico en redes de telefonía y computadoras, denominado Traffic
Más detallesOrganización de Computadoras
Organización de Computadoras Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Segundo Cuatrimestre de 2015 Proyecto N 1 Programación en Lenguaje C El objetivo principal
Más detallesTienda Virtual Synergy (Parte 2)
Tienda Virtual Synergy (Parte 2) El catálogo electrónico de productos es la base de toda la aplicación por lo que siempre será necesario instalarlo. Los siguientes dos módulos (tienda virtual y módulo
Más detallesObjetivo de aprendizaje del tema
Computación II Tema 3. Identificadores, palabras clave y tipos de datos Objetivo de aprendizaje del tema Al finalizar el tema serás capaz de: Distinguir i entre modificadores d válidos y no válidos. Enumerar
Más detallesEstructura de datos tipo vector.
Estructura de datos tipo vector. Hemos empleado variables de distinto tipo para el almacenamiento de datos (variables int, float, String) En esta sección veremos otros tipos de variables que permiten almacenar
Más detallesPráctica 2: Simón dice
Práctica 2: Simón dice Fecha de entrega: 31 de enero de 2016 0.- Descripción del juego (Wikipedia.org) Simon dice es un juego electrónico, creado por Ralph Baer, que consiste en reproducir una secuencia
Más detallesPART II: Moviendo al jugador
UNITY PART II: Moviendo al jugador El movimiento se lo vamos a dar a través de un programa Definición de programa: Un programa es una secuencia de instrucciones, escritas para realizar una tarea específica
Más detalles2.2 Transformada de Laplace y Transformada. 2.2.1 Definiciones. 2.2.1.1 Transformada de Laplace
2.2 Transformada de Laplace y Transformada 2.2.1 Definiciones 2.2.1.1 Transformada de Laplace Dada una función de los reales en los reales, Existe una función denominada Transformada de Laplace que toma
Más detallesProgramación Orientada a Objetos con Java
Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la
Más detallesCURSO BÁSICO PARA TOCAR EL PIANO. 1. Introducción. Capítulo siguiente: 2 - Las claves
CURSO BÁSICO PARA TOCAR EL PIANO 1. Introducción Capítulo siguiente: 2 - Las claves Aunque tenemos dos manos, existe solo un juego de teclas. Si tocamos de izquierda a derecha estas teclas, notaremos que
Más detallesCurso de Java POO: Programación orientada a objetos
Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos
Más detallesCAPITULO 3 REDES HIBRIDAS-COMPLEJAS. 3.1 Descripción de la Red Híbrida Compleja (HCNN)
CAPITULO 3 REDES HIBRIDAS-COMPLEJAS 3.1 Descripción de la Red Híbrida Compleja (HCNN) La predicción de eventos caóticos que se presentan en un mundo que nos rodea es de gran interés. Especialmente en aquellos
Más detallesTitulación: Ingeniero Técnico en Informática de Gestión Curso: 2º
1. Ejercicio (1 punto) Dado el array A={8, 3, 7, 1, 4, 9, 5, 2, 6 Describir cual es el estado del array A después de cada paso principal del algoritmo: InsertionSort. {8, 3, 7, 1, 4, 9, 5, 2, 6 {3, 8,
Más detallesProgramación Orientada a Objetos. Java: Excepciones
Programación Orientada a Objetos Java: Excepciones Eduardo Mosqueira Rey LIDIA Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España
Más detallesPatrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype
Temario Patrones de Diseño de Software Fundamentos de Ingeniería de SW Jocelyn Simmonds GOF: Patrones Creacionales Patrones Estructurales ILI-236 (JS) Patrones II 1 / 31 ILI-236 (JS) Patrones II 2 / 31
Más detallesCurso 0 de Informática
Curso 0 de Informática 2015-2016 Tema 1: Introducción a la Informática y Conceptos básicos 1 Motivación (I): En los procesos industriales, cada vez es mayor el uso de sistemas informáticos para: Monitorización,
Más detallesEtapa de Diseño: Gestión de Hotel Diseño de Sistemas Software
Etapa de Diseño: Gestión de Hotel Diseño de Sistemas Software Antonio Falcón Aragón José Luis Falcón Ramírez Carlos Villegas Nuñez 15 de marzo de 2010 1 Índice 1. Diseño de la Aplicación 3 1.1. Diagrama
Más detallesAGRUPA P R OBJET E OS 1
AGRUPAR OBJETOS 1 Son objetos que pueden almacenar un número arbitrario de objetos. Para formar colecciones usaremos la clase ArrayList. Para poder utilizar dicha clase habrá que importar el paquete java.util,
Más detallesClases y Objetos. Informática II Ingeniería Electrónica
Clases y Objetos Informática II Ingeniería Electrónica Los Tipos de Datos Hasta ahora, en un programa podemos usar para representar variables a: Tipos fundamentales : enteros (int), caracteres (char),
Más detallesTema 5. Diseño detallado.
Ingeniería del Software II 2011 Tema 5. Diseño detallado. Diseño del Software. Los requisitos y el análisis orientado a objetos se centran en aprender a hacer lo correcto: Entender los objetos de nuestro
Más detallesInstalación del programa PSPP y obtención de una distribución de frecuencias.
Práctica 2. Instalación del programa PSPP y obtención de una distribución de frecuencias. Con esta práctica instalaremos el programa PSPP. El programa es un software específico para el análisis estadístico
Más detallesModelos y Bases de Datos
Modelos y Bases de Datos MODELOS Y BASES DE DATOS 1 Sesión No. 10 Nombre: Álgebra Relacional Contextualización En qué consiste el álgebra relacional? Se ha planteado hasta el momento cada uno de los procesos
Más detallesTecnólogo Informático- Estructuras de Datos y Algoritmos- 2009
Árboles Ejemplos de estructuras arborescentes: con forma de árbol Regla de Alcance: los objetos visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier
Más detallesProgramación Orientada a Objetos en C#.NET CAPÍTULO 8 E V E N T O S. Ing. Bruno López Takeyas, M.C. http://www.itnuevolaredo.edu.
CAPÍTULO 8 E V E N T O S 2 http://www.itnuevolaredo.edu.mx/takeyas 1 Preguntas detonadoras Quéesunevento? Paraquésirve? Qué temas se deben dominar para implementar aplicaciones con eventos? Qué se requiere
Más detallesInstalación y configuración inicial del sistema SIU-Kolla Versión 3.0.0
Instalación y configuración inicial del sistema SIU-Kolla Versión 3.0.0 Tabla de contenido 1. Instalación inicial del sistema... 3 2. Configuración inicial del sistema... 5 3. Migración desde versión anterior...
Más detallesSolución al Examen de Prácticas de Programación (Ingeniería Informática)
Solución al Examen de Prácticas de Programación (Ingeniería Informática) Junio 2006 Parte I. Cuestiones (3 puntos=50% nota del examen) 1) Se desea crear un conjunto de clases para representar en un programa
Más detallesEscuela Universitaria Politécnica Grado en Ingeniería Informática Fundamentos de Programación II ENUNCIADO DE PRÁCTICAS CONVOCATORIA DE SEPTIEMBRE
Escuela Universitaria Politécnica Grado en Ingeniería Informática Fundamentos de Programación II ENUNCIADO DE PRÁCTICAS CONVOCATORIA DE SEPTIEMBRE OBJETIVOS Aprender el manejo de entrada/salida con ficheros
Más detallesEjercicio 1 (3 puntos).-
URJC Ingeniería Técnica de Gestión Abril 2011 Asignatura: SOFTWARE AVANZADO Normas: La prueba consta de 2 ejercicios. La máxima nota del examen es un 8. Siendo la práctica la que añade los 2 puntos que
Más detallesPrimer Parcial Septiembre 5 de 2009
Primer Parcial Septiembre 5 de 2009 Algoritmos y Lenguajes II Reglas del juego Tal como se le dijo antes, durante este examen usted no puede pedir ABSOLUTAMENTE nada prestado a sus compañeros, ni hablar
Más detalles9. Objetos y clases. 9.1. Clases
Programación orientada a objetos con Java 103 9. Objetos y clases Objetivos: a) Presentar el concepto de objeto, clase, atributo, método e instancia b) Interpretar el código fuente de una aplicación Java
Más detallesTesting. Tipos, Planificación y Ejecución de Pruebas
Testing Tipos, Planificación y Ejecución de Pruebas Contenido Definiciones del Testing de Software Objetivos, conceptos Tipos de Test Testing a-la RUP Rol del Testing en el proceso Artefactos Trabajadores
Más detalles1. VIRTUALIZACION DEL PROCESO REAL.
CAPITULO IV DISEÑO 86 En este capítulo se muestra el diseño realizado para el desarrollo del CD Interactivo del Museo e Historia Militar de la Fuerza Armada de El Salvador, se ilustra claramente el proceso
Más detallesProgramación I: Funciones y módulos
Programación I: Funciones y módulos Esteban De La Fuente Rubio 2 de abril de 23 Índice. Funciones.. Definición y llamado de funciones............................................. 2.2. Parámetros por omisión..................................................
Más detallesUso de funciones en Excel
Uso de funciones en Excel Las funciones son fórmulas predefinidas que ejecutan cálculos utilizando valores específicos, denominados argumentos, en un orden determinado o estructura. Por ejemplo, la función
Más detallesSGIC. Propuesta para Plan de Telefonía y Perfiles de Consumo
SGIC Propuesta para Plan de Telefonía y Perfiles de Consumo A continuación se presenta una propuesta para tratar los planes de telefonía y los perfiles de consumo en el SGIC. Las clases naranjas son las
Más detallesMANUAL DE USUARIOS DEL MODULO DE EVALUACIÓN DE DESEMPEÑO SISTEMA DE ADMINISTRACIÓN DE SERVIDORES PÚBLICOS (SASP)
MINISTERIO DE ADMINISTRACIÓN PÚBLICA (MAP) Dirección de Tecnología de la Información y Comunicación MANUAL DE USUARIOS DEL MODULO DE EVALUACIÓN DE DESEMPEÑO SISTEMA DE ADMINISTRACIÓN DE SERVIDORES PÚBLICOS
Más detalles8. Sentencia return y métodos
92 A. García-Beltrán y J.M. Arranz 8. Sentencia return y métodos Objetivos: a) Describir el funcionamiento de la sentencia return b) Interpretar el resultado de una sentencia return en el código fuente
Más detallesUNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos
2.1. Principios básicos del Modelado de Objetos UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos Hoy en día muchos de los procesos que intervienen en un negocio o empresa y que resuelven
Más detallesIV. CARGUE DE SOPORTES
IV. CARGUE DE SOPORTES Esta opción de cargue de soportes se ha realizado para efectuar las correcciones necesarias en cuanto a cargue de servicio se refiere, como anulación, modificación de RIPS de algún
Más detallesSISTEMA DE APARTADO DE SALAS PARA EVENTOS
SISTEMA DE APARTADO DE SALAS PARA EVENTOS Dirección General de Comunicaciones e Informática Febrero 2008 1 INDICE 1. Objetivos del Sistema... 3 10. Solución de problemas... 23 2. Introducción... 4 3. Requisitos...
Más detalles2.2.- Paradigmas de la POO
2.2.- Paradigmas de la POO Los principios propios de la orientación a objetos son: 2.2.1.- Abstracción de Datos 2.2.2.- Encapsulamiento 2.2.3.- Ocultamiento 2.2.4.- Herencia 2.2.5.- Polimorfismo Cualquier
Más detallesIdentificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java
Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores Las variables se utilizan en programación para almacenar temporalmente
Más detallesÁrboles. Cursos Propedéuticos 2015. Dr. René Cumplido M. en C. Luis Rodríguez Flores
Árboles Cursos Propedéuticos 2015 Dr. René Cumplido M. en C. Luis Rodríguez Flores Contenido de la sección Introducción Árbol genérico Definición y representación Árboles binarios Definición, implementación,
Más detalles1. PLANTEAMIENTO DEL PROBLEMA. 1.1 Descripción del problema
1. PLANTEAMIENTO DEL PROBLEMA 1.1 Descripción del problema Son muchas las necesidades que presentan los niños y las niñas en el nivel de Educación Parvularia, debido a que es el primer peldaño de la educación
Más detallesLABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL
OBJETIVO Mejorar el nivel de comprensión y el manejo de las destrezas del estudiante para utilizar formulas en Microsoft Excel 2010. 1) DEFINICIÓN Una fórmula de Excel es un código especial que introducimos
Más detallesInteligencia Artificial II. Razonamiento con ontologías
Inteligencia Artificial II Curso 2008 09 Trabajo de curso Razonamiento con ontologías Antonio Jiménez Mavillard Enunciado Una ontología es una representación formal de un determinado dominio o área de
Más detallesSISTEMA ETAP en línea Estándares Tecnológicos para la Administración Pública
JEFATURA DE GABINETE DE MINISTROS SISTEMA ETAP en línea Estándares Tecnológicos para la Administración Pública Manual para los Organismos Índice Índice... 2 Descripción... 3 Cómo solicitar la intervención
Más detallesUNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO. Introducción FACULTAD DE INGENIERÍA. Ordenación
Introducción Uno de los procedimientos más comunes y útiles en el procesamiento de datos, es la clasificación u ordenación de los mismos. Se considera ordenar al proceso de reorganizar un conjunto dado
Más detalles15. Parámetros o argumentos
Programación orientada a objetos con Java 161 15. Parámetros o argumentos Objetivos: a) Profundizar en el concepto de parámetro de una clase e indicar su mecanismo de funcionamiento. b) Interpretar el
Más detallesMANUAL DE USUARIO CONTROL LOGÍSTICO DE TIEMPOS
MANUAL DE USUARIO CONTROL LOGÍSTICO DE TIEMPOS Para ingresar al panel de control del Control Logístico de Tiempos, se debe ingresar a la página www.satrack.com e ingresar el usuario suministrado al adquirir
Más detallesCASO PRÁCTICO DISTRIBUCIÓN DE COSTES
CASO PRÁCTICO DISTRIBUCIÓN DE COSTES Nuestra empresa tiene centros de distribución en tres ciudades europeas: Zaragoza, Milán y Burdeos. Hemos solicitado a los responsables de cada uno de los centros que
Más detallesFRAMEWORK 2 Creación de Servicios Web
Creación de Versión 1.1 Área de Aplicaciones Especiales y Arquitectura de Software Página 1 de 21 Hoja de Control Título Documento Referencia Responsable de Creación de Área de Aplicaciones Especiales
Más detallesPara crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas.
Formularios TEMA: FORMULARIOS. 1. INTRODUCCIÓN. 2. CREACIÓN DE FORMULARIOS. 3. INTRODUCIR DATOS EN UN FORMULARIO. 4. MODIFICAR UN FORMULARIO 5. MANERAS DE GUARDAR UN FORMULARIO. 6. IMPRIMIR FORMULARIOS.
Más detallesManual del Modelizador. 28 de enero de 2009
Índice de contenidos Introducción... 1 Proceso de ejecución de modelos... 1 Origen de datos... 3 Detalles técnicos... 3 Lenguaje de programación... 3 Estructura de los modelos... 3 Biblioteca de clases...
Más detallesÉSTE DOCUMENTO SUFRIÓ UN CAMBIO SIGNIFICATIVO
Allende y Manuel Acuña, Edificio Pharmakon, Ramos Arizpe, Coahuila MEXICO, C.P. 25900 Teléfonos y Fax(844) 488-3346, 488-1344, 488-1667 01800-835-4224 calidad@icai.org.mx MANUAL DE PROCEDIMIENTOS DE LA
Más detallesMultitarea en Java. Rafa Caballero - UCM
Multitarea en Java Rafa Caballero - UCM Programa Monoproceso (monotarea) En cada momento hay una única instrucción ejecutándose Se dice que el programa es monotarea, o monoproceso o monohebra (o single
Más detallesSECRETARÍA DE FINANZAS DEL DISTRITO FEDERAL P05 PANEL DE CONTROL DEL PROGRAMA HONORARIOS
SECRETARÍA DE FINANZAS DEL DISTRITO FEDERAL P05 PANEL DE CONTROL DEL PROGRAMA HONORARIOS ROLES: ADMN_HON_05 Fecha:30ƒ08ƒ2012 1/26 2/26 PANEL DE CONTROL DEL PROGRAMA DE HONORARIOS Objetivo : Permite crear
Más detallesPlataforma de Contratación del Sector Público
del Sector Público Dirección General del Patrimonio del Estado Subdirección General de Coordinación de la Contratación Electrónica Versión: 1. Fecha: 10/12/2015 DEL PATRIMONIO DEL DEL ESTADO CONTROL DE
Más detallesMetodología y Tecnología de la Programación
Metodología y Tecnología de la Programación Curso 2008/09 Tema 7 Tipos de Datos Abstractos Temario 7.1 Concepto de Tipo de Datos Abstracto 7.2 Clasificación de Tipos de Datos Abstractos 7.3 Especificación
Más detalles