LENGUAJES DE PROGRAMACIÓN. Trabajo Práctico - Junio de 2016

Documentos relacionados
A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información 1º año

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Hoja de ejercicios del Tema 3

PRACTICA FINAL Laboratorio Programación II Abril 2006 JUEGO HUNDIR LA FLOTA.

MOVIMIENTO ARMÓNICO SIMPLE

Práctica 2: Periodicidad

2).- Nombre de función. Para obtener una lista de funciones disponibles, haga clic en una celda y presione MAYÚSC+F3.

ESTRUCTURAS REPETITIVAS EN PHP

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

Actividad colaborativa Ejercicios de programación Programación básica C++

Ecuaciones, ecuación de la recta y sistemas

MODELADO Y SIMULACIÓN. Febrero de Primera semana

1.- Para cada uno de los siguientes problemas escribir el diagrama de flujo y el pseudocódigo de un programa que lo resuelva:

PHP: Lenguaje de programación

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)

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

Laboratorio 02: Ejercicios de programación en C

Ejercicios de programación Luis Francisco García Martínez Ingeniería de Sistemas Programa de Ingeniería de Sistemas

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

Ejercicio 1.- En las construcciones siguientes para qué valores de la variable RangoI se ejecutará la sentencia de asignación?

Materia: Matemática de 5to Tema: Método de Cramer. Marco Teórico

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

MOVIMIENTO ONDULATORIO

5to. ESTANDARES MATEMATICOS COMUNES FUNDAMENTALS

ULADECH Escuela Profesional de Contabilidad

4. NÚMEROS PSEUDOALEATORIOS.

CAPÍTULO 3: PORCIONES Y NÚMEROS ENTEROS

EJERCICIO 1. CREACIÓN DE UNA FUNCIÓN

Práctica Final de Microsoft Excel

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial

EXAMEN FÍSICA 2º BACHILLERATO TEMA 3: ONDAS

Informática Ingeniería en Electrónica y Automática Industrial

Cursada Segundo Cuatrimestre 2012 Guía de Trabajos Prácticos Nro. 1

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

Introducción. Flujo Eléctrico.

Recalculo de cuotas RT

Tema 2 Introducción a la Programación en C.

LABORATORIO No. 3 MODELAMIENTO Y ANALISIS DINAMICO DE SISTEMAS ELECTRICOS

1.1 CASO DE ESTUDIO: JUEGO DE CRAPS

Funciones y Condicionales Introducción a la Programación

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

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

Estructuras de control

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

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

Asignatura: Estructuras de Datos. Año Escolar: Grado y Sección: 6to INF A-B Docente: Ing. Yesika Medina

Formato de Numero Microsoft Excel.

EJERCICIOS RESUELTOS DE INTEGRAL DEFINIDA

MANZANOS. Pregunta Completa la tabla: n=1 n=2 n=3 n=4. n= Número de manzanos Números de coníferas

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

Unidad: Movimiento Circular

MATEMATICA GRADO 9 II PERIODO PROF. LIC. ESP. BLANCA NIEVES CASTILLO R. CORREO: cel

PROPIEDADES DE LOS CAMPOS. Cada campo de una tabla dispone de una serie de características que proporcionan un control

Ejercicios Jerarquía de Memoria

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

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

Algoritmos. Autor: José Ángel Acosta Rodríguez

Distinguir las diferentes estructuras de repetición utilizadas en problemas con bucles: mientras, repetir mientras, para.

Estructuras de Control

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

1. Practica con la siguiente hoja. Las celdas que contienen las fórmulas son de color rojo. Deberás realizar las indicaciones que se adjuntan:

Materia: Matemática de Tercer Año Tema: Pendiente

Contenidos. Tema 2: Conceptos estadísticos fundamentales. Distribuciones de frecuencias unidimensionalales. Enfoques de la Estadística

Sectorizar.

UNIDAD: NÚMEROS Y PROPORCIONALIDAD. Los elementos del conjunto IN = {1, 2, 3, 4, 5, 6, 7,...} se denominan números

Figura 17 Barra de iconos

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

Universidad Nacional del Santa FACULTAD DE INGENIERIA E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0 MI PRIMER PROYECTO

PRÁCTICA 2: MODELADO DE SISTEMAS

Programación Orientada a Objetos Métodos Guía de Ejercicios v9.7

Tema 3: Números racionales

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.

6 DINAMICA DEL CUERPO RIGIDO

3.2. Programación estructurada. Principal. Modulo 1 Modulo 2 Modulo 3 Modulo 4. Modulo Modulo Modulo 3 1 Modulo 4 1 Modulo 4 2. Pág.

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

Práctica 0. Emulador XENON de la computadora CESIUS

Tema 7: Programación con Matlab

Algoritmos y Programación I

Operación que hiciste en la calculadora

Aplicación: cálculo de áreas XII APLICACIÓN: CÁLCULO DE ÁREAS

Programación I. Práctica parcial: el juego de los barquitos (ENTREGA OBLIGATORIA)

Bloques Aritméticos - Multiplicadores

Introducción al tipo de dato ARRAY

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

Movimiento Armónico Simple

Jornadas sobre Gnu/Linex: Uso de Software Libre en las Administraciones públicas. Sonia Pizarro Redondo

Más ejercicios y soluciones en fisicaymat.wordpress.com

FUNCIONES CON DESCARTES. HOJA DE TRABAJO

2.2 Rectas en el plano

Variables aleatorias

Guía para cambio y solicitud de contraseña de acceso a los Sistemas Académicos Institucionales

Resolución de Problemas y Algoritmos Clase 6: Repetición (continuación)

Java para programadores

Operaciones básicas con hojas de cálculo

PROBLEMAS RESUELTOS SELECTIVIDAD ANDALUCÍA MATEMÁTICAS II TEMA 5: INTEGRALES

Ejercicios Física PAU Comunidad de Madrid Enunciados Revisado 18 septiembre 2012.

Ing. Ramón Morales Higuera

Práctica 1 Pasa la calculadora

Tema 3. Electrónica Digital

FUNCIONALIDAD EN EL ERP SA DIAGRAMA DE PROCESO

Transcripción:

Trabajo Práctico - Junio de 2016 INSTRUCCIONES El trabajo práctico debe realizarse de manera individual. No debe realizarse en grupo. Se penalizará cualquier uso compartido de las soluciones propuestas y de los códigos programados. El trabajo debe entregarse a través del curso virtual de la asignatura en la plataforma Alf. La fecha límite de entrega es el día 16 de abril. El alumno debe entregar un fichero comprimido, en formato zip o tar, que contenga: Una memoria en la cual explique la solución a los ejercicios, incluyendo los listados documentados del código C++ desarrollado. Este documento deberá estar en formato pdf. Los ficheros del código fuente C++ solución a los ejercicios. No deben entregarse ficheros ejecutables. El nombre del fichero comprimido debe ser la concatenación del nombre y apellidos del alumno. Por ejemplo, LuisaGomezMartin.zip

CRITERIOS DE EVALUACIÓN Para que el trabajo pueda ser corregido, es imprescindible que el alumno entregue dentro del plazo establecido un fichero comprimido que contenga la memoria en formato pdf y el código fuente C++ de los ejercicios que haya realizado. El trabajo se compone de 4 ejercicios, cada uno de los cuales se valorará sobre 2.5 puntos. Para aprobar el trabajo es necesario que la suma de las puntuaciones obtenidas en los ejercicios sea mayor o igual que 5. Si el código solución de un ejercicio tiene errores de compilación o no tiene la funcionalidad pedida, dicho ejercicio se valorará con cero puntos. Si el código solución de un ejercicio compila sin errores y tiene la funcionalidad pedida, la puntuación en dicho ejercicio será al menos de 2 puntos. Se valorará positivamente la eficiencia y la adecuada documentación del código, así como la presentación y calidad de las explicaciones proporcionadas en la memoria. 2 Dpto. de Informática y Automática, UNED

TRABAJO PRÁCTICO - JUNIO DE 2016 EJERCICIO 1 La distancia entre dos puntos en el plano, p i = {x i,y i } y p j = {x j,y j }, se calcula de la forma siguiente: d i,j = (x i x j ) 2 +(y i y j ) 2 donde las coordenadas x i,y i, x j ey j son números reales. Escriba un programa en C++ que realice las acciones siguientes: 1. Solicitar al usuario que éste introduzca por consola los valores de las coordenadasx 1, y 1,..., x 5, y 5 de 5 puntos, y leer de la consola dichos valores. 2. Sean p 1 = {x 1,y 1 },...,p 5 = {x 5,y 5 } los cinco puntos leídos de la consola. Calcular la suma de la distancia entre puntos consecutivos, es decir; D = 4 i=1 d i,i+1 y mostrar dicho valor en la consola. Esta distancia es la longitud del camino p 1 p 2 p 3 p 4 p 5. 3. Para los cinco puntos leídos de la consola, calcular qué camino o caminos tienen la longitud mínima, satisfaciendo que comienzan en p 1, finalizan en p 5, y pasan una única vez, en cualquier orden, por los puntos p 2, p 3 y p 4. Mostrar el valor de dicha distancia mínima en la consola, así como el correspondiente camino o caminos. 4. Terminar. Dpto. de Informática y Automática, UNED 3

EJERCICIO 2 En la Figura 1.1 se muestra un objeto de masa M que puede deslizar con rozamiento sobre el suelo y que se encuentra unido a una pared inmóvil mediante un muelle. Muelle Objeto de masa M Pared Suelo Figura 1.1: Sistema mecánico. La evolución en el tiempo de la velocidad v y la posición x del objeto viene descrita por las ecuaciones siguientes: M dv dt dx dt = K (x L 0 ) b v = v donde K es la constante de proporcionalidad del muelle,l 0 es su elongación natural, y b es la constante de rozamiento entre el objeto y el suelo. Se supone que el valor de cada una de estas magnitudes, así como la masa del objeto, permanecen constantes en el tiempo. Aplicando el método de integración de Euler explícito a las dos ecuaciones anteriores se obtiene: M vi+1 v i h x i+1 x i h = K (x i L 0 ) b v i = v i donde x i, v i representan la posición y la velocidad del objeto en el instante de tiempot = i h, y donde h es el tamaño del paso de integración. 4 Dpto. de Informática y Automática, UNED

TRABAJO PRÁCTICO - JUNIO DE 2016 Manipulando las expresiones anteriores puede obtenerse la posición x i+1 y la velocidad v i+1 en el instante (i+1) h, a partir de la posición x i y la velocidad v i en el instante i h, conocidas las magnitudes constantes K, L 0, M y b, y el valor del paso de integración h. v i+1 = v i K h M (x i L 0 ) b h M v i (1.1) x i+1 = x i +h v i (1.2) para i = 0,...,N 1. Escriba un programa en C++ que realice las acciones siguientes: 1. Declarar dos constantes, una int llamada N y otra double llamada h, y asignarles respectivamente los valores 1000 y0.01. 2. Solicitar al usuario que éste introduzca por consola los valores de las magnitudesk,l 0,M yb, las cuales deben ser números reales mayores que cero. Si no se satisface esta condición, el programa debe mostrar un mensaje de error y terminar. 3. Solicitar al usuario que éste introduzca por consola el valor inicial de la posición, x 0. El valor de x 0 debe ser un número real en el intervalo [0.8 L 0,1.2 L 0 ]. Si no se satisface esta condición, el programa debe mostrar un mensaje de error y terminar. 4. Calcular x i y v i, para i = 1,...,N, empleando para ello las Ecs. (1.1) y (1.2). Se considera que la velocidad inicial siempre vale cero, es decir, v 0 = 0. Los valores x i y v i, con i = 0,...,N, deben almacenarse en sendos arrays de N +1 componentes de tipo double. 5. Grabar en un fichero de texto llamado sistmecanico.txt los valores t i, x i, v i con i = 0,...,N. El fichero deberá tener tres columnas (tiempo, posición y velocidad) y N + 1 filas. Los valores de la posición y la velocidad se mostrarán en formato fijo, con 5 dígitos detrás del punto decimal. El tiempo se mostrará en formato fijo, con 2 dígitos detrás del punto decimal. 6. Terminar. Dpto. de Informática y Automática, UNED 5

EJERCICIO 3 El método descrito a continuación es uno de los más sencillos y rápidos para generar observaciones de una variable aleatoria discreta X. 1. Obtener una observación independiente u de una distribución U(0, 1). 2. Calcular: i = u n (1.3) La función x, denominada ceil, devuelve el menor número entero que es mayor o igual quex. Por ejemplo, 3.1 y 3.8 valen 4. El valor entero n es el número de componentes de un array predeterminado (a 1,...,a n ), que se calcula a partir de la función de probabilidad de la variable aleatoria X. 3. Devolver a i. Esto es, el componente i-ésimo del array(a 1,...,a n ). A continuación se muestra un ejemplo. Supongamos que se desea generar observaciones de una variable aleatoria discreta X, cuyo conjunto de valores posibles es{1,2,...,10}, y cuya función de probabilidad es: f X (x) = x 55 con x = 1,...,10 (1.4) Es decir, la probabilidad de que la variable valga 1 es 1, la de que valga 2 es 2, 55 55 la de que valga 3 es 3 y así sucesivamente. 55 Las observaciones pueden generarse aplicando el algoritmo anterior, empleando el siguiente array den = 55 elementos: 1,2,2,3,3,3,4,4,4,4,...,10,...,10 (1.5) Obsérvese que el primer componente del array tiene valor 1, los dos siguientes valor 2, los tres siguientes valor 3, y así sucesivamente. Los 10 últimos componentes del array tienen valor 10. 6 Dpto. de Informática y Automática, UNED

TRABAJO PRÁCTICO - JUNIO DE 2016 Escriba un programa en C++ que genere 10000 observaciones independientes de la variable aleatoria X, cuya función de probabilidad se muestra en (1.4). A continuación, el programa debe calcular la probabilidad empírica a partir de esos datos y compararla con la teórica. El programa debe realizar las acciones siguientes: 1. Declarar dos constantes int llamadas N y n, y asignarles los valores 10000 y 55 respectivamente. 2. Declarar un array llamado a con n componentes int. Empleando bucles for, asignar valor a los componentes del array tal como se muestra en (1.5). 3. En un fichero de texto llamado obsx.txt, escribir N = 10000 observaciones aleatorias independientes de la variable aleatoria discreta X, cuya probabilidad f X (x) es (1.4), empleando para ello el algoritmo descrito anteriormente. Para obtener u 1,...,u N puede emplear el generador de números pseudoaleatorios que desee. Por ejemplo, la función rand(). 4. Leer los datos del fichero obsx.txt y calcular la probabilidad con la que aparece cada uno de los diez posibles valores dex: {1,2,...,10}. 5. Mostrar en la consola, para cada uno de los 10 posibles valores dex: la probabilidad empírica calculada de los datos del fichero, la correspondiente probabilidad teórica (véase (1.4)) y la diferencia entre ambas. Las probabilidades y sus diferencias se mostrarán en formato fijo, con 4 dígitos detrás del punto decimal. 6. Terminar. Dpto. de Informática y Automática, UNED 7

EJERCICIO 4 Se propone realizar un programa en C++ que obtenga el trazo dibujado por una tiza en su movimiento sobre una pizarra. Las acciones a realizar por la tiza se leerán de un fichero de texto. Éstas pueden ser: apoyarse sobre la pizarra, levantarse de la pizarra y avanzar en la dirección indicada. A continuación se explica todo ello con detalle. La pizarra es una región plana cuadrada, recubierta por un mallado de N N celdas cuadradas, donde N = 41. La celda (0,0) se encuentra en el extremo inferior izquierdo de la pizarra y la celda(40,40) en el extremo superior derecho. La tiza se encuentra inicialmente apoyada sobre la pizarra y situada en la celda (I x,i y ), dondei x = I y = 21. La tiza puede moverse en cuatro direcciones: hacia arriba, hacia abajo, hacia la izquierda y hacia la derecha. Si la tiza se mueve estando apoyada sobre la pizarra, entonces dibuja en la pizarra. Si por el contrario el movimiento se produce mientras la tiza no está apoyada sobre la pizarra, entonces ese movimiento no produce dibujo alguno. El movimiento de la tiza se describe mediante una secuencia arbitraria de los seis comandos siguientes: APOYA_TIZA LEVANTA_TIZA AVANCE_N AVANCE_S AVANCE_E AVANCE_O Apoya la tiza sobre la pizarra Levanta la tiza de la pizarra La tiza se desplaza una celda hacia arriba La tiza se desplaza una celda hacia abajo La tiza se desplaza una celda hacia la derecha La tiza se desplaza una celda hacia la izquierda La secuencia de comandos está escrita en un fichero de texto llamado comand.txt. Los comandos pueden estar separados entre sí por espacios en blanco y saltos de línea. El programa debe abrir dicho fichero e ir leyéndolo palabra a palabra. Si la palabra leída coincide con uno de los comandos, el programa debe realizar la acción indicada por el comando. Si no coincide, el programa debe mostrar en la consola un mensaje y terminar. El mensaje debe ser lo más descriptivo posible, indicando qué texto produce el error. La estructura de datos empleada en el programa para representar la pizarra y los trazos dibujados en ella deberá ser un array bidimensionaln N de bool. Cada componente está asociado con una de las celdas. Un componente del array vale 8 Dpto. de Informática y Automática, UNED

TRABAJO PRÁCTICO - JUNIO DE 2016 true cuando la celda asociada ha sido visitada por la tiza, estando ésta apoyada sobre la pizarra. En caso contrario vale false. Una vez ejecutados los comandos escritos en comand.txt, el programa debe escribir en un fichero de texto llamado result.txt información relativa al valor del array bidimensional y a continuación debe terminar. La escritura en el fichero result.txt debe hacerse de la manera siguiente: Cada fila del array debe escribirse en una línea del fichero. Las filas deben escribirse en orden decreciente, de manera que la última fila en ser escrita sea la cero. Cada componente del array bidimensional dará lugar a la escritura de un punto o un asterisco: Si vale false, se escribirá un punto. Si vale true, se escribirá un asterisco. De esta forma, los trazos dibujados por la tiza quedarán representados mediante asteriscos. Las celdas que no han sido dibujadas por la tiza se representarán mediante puntos. El programa debe ir vigilando que la tiza no salga de la pizarra. Cuando se ejecute un comando que haga que la tiza salga de la pizarra (ya sea estando la tiza levantada o apoyada), el programa debe escribir en la consola un aviso indicándolo, escribir el fichero result.txt a partir del valor actual del array y terminar. A fin de ilustrar cuál debe ser el funcionamiento del programa, se muestran a continuación dos ejemplos. En cada caso se indica el contenido del fichero comand.txt, que es proporcionado por el usuario y leído por el programa, y del fichero result.txt, que es generado por el programa. Dpto. de Informática y Automática, UNED 9

Ejemplo 1 Contenido del fichero comand.txt: AVANCE_N AVANCE_N AVANCE_N AVANCE_N AVANCE_N Contenido del fichero result.txt:...********************...*......*......*......*......*... El programa debe escribir un mensaje en la consola indicando que la tiza ha salido de la pizarra. 10 Dpto. de Informática y Automática, UNED

TRABAJO PRÁCTICO - JUNIO DE 2016 Ejemplo 2 Contenido del fichero comand.txt: AVANCE_N AVANCE_N AVANCE_N AVANCE_N AVANCE_N LEVANTA_TIZA AVANCE_N AVANCE_N AVANCE_N AVANCE_N AVANCE_N AVANCE_O AVANCE_O AVANCE_O AVANCE_O AVANCE_O APOYA_TIZA AVANCE_N AVANCE_N AVANCE_N AVANCE_N AVANCE_N AVANCE_S AVANCE_S AVANCE_S AVANCE_S AVANCE_S LEVANTA_TIZA AVANCE_E AVANCE_E AVANCE_N APOYA_TIZA LEVANTA_TIZA AVANCE_E AVANCE_E AVANCE_N APOYA_TIZA LEVANTA_TIZA AVANCE_E AVANCE_E AVANCE_N APOYA_TIZA AVANCE_S AVANCE_S AVANCE_S AVANCE_S AVANCE_S Contenido del fichero result.txt:...***********......*...*......*...*...*......*...*...*.*......*...*.*...*......*...*...*......*......*......*......*......*......*......*......******... En este caso el programa no debe mostrar ningún mensaje de error o aviso en la consola. Dpto. de Informática y Automática, UNED 11