Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación



Documentos relacionados
TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

Modulo 1 El lenguaje Java

Programación Orientada a Objetos en JAVA

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

Para dudas, comentarios escribe a: C BASICO

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Que es PHP? Que se puede hacer con PHP? Sintaxis del lenguaje. Variables. Operadores básicos. Condicionales. Ciclos.

11. Algunas clases estándar de Java (II)

Ejemplos de conversión de reales a enteros

Prof. Dr. Paul Bustamante

Programación estructurada

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015

Reglas del juego. 2 o más jugadores

Tema 5 Sentencias de control de flujo. Fundamentos de Informática

Tema 6: Problemas Especiales de Programación Lineal

Programación III. 1. Facultad: Ingeniería Escuela: Computación Asignatura:Programación III I. OBJETIVOS II. INTRODUCCIÓN TEÓRICA

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

Multitarea en Java. Rafa Caballero - UCM

Tema 2. Software. Informática (1º Ingeniería Civil)

CLASE # 5 TÉCNICAS DE CAJA BLANCA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Preliminares. Tipos de variables y Expresiones

Estructuras de repetición

MATERIAL 2 EXCEL 2007

ZCARTAS: Iniciación a la suma y resta de números enteros Introducción Actividad 1: Escenario con cartas numeradas desde -2 hasta 2...

Capítulo 4 Procesos con estructuras de repetición

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación IIC1103 Introducción a la Programación

Introducción a PHP. * No es necesario declarar previamente las variables.

Modelos y Bases de Datos

Práctica 2: Simón dice

Informática I. While & do While

SISTEMA ETAP en línea Estándares Tecnológicos para la Administración Pública

ESTRUCTURAS CONDICIONALES EN PHP: SWITCH, CASE, BREAK. EJEMPLOS DE USO Y EJERCICIOS RESUELTOS. (CU00820B)

Tema 4: Estructuras de Control Estructura y Contenidos

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

Primer Parcial Septiembre 5 de 2009

INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL. Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones

BANCOS. Manejo de Bancos. Como crear una ficha de Banco? Como modificar los datos de una ficha de Banco? Como borrar una ficha de Banco?

Práctica 1 El juego de los chinos

Prof. Dr. Paul Bustamante

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Curso 0 de Informática

FACULTAD DE INGENIERÍA

5 Ecuaciones lineales y conceptos elementales de funciones

INGENIERÍA DEL SOFTWARE. 4º ING. INFORMÁTICA (UPV/EHU) 29 de MAYO de 2006

TAREA 2 Diseño de un juego

x

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

PREPARANDO EL ENTORNO DE DESARROLLO PARA PROGRAMAR EN PHP. DESCARGAR E INSTALAR NOTEPAD++ (CU00808B)

Manual de Procedimiento

7-11 ABRIL. Reflexiones de la mañana DAR VIDA. Quiero Ver. Video

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

Hoja1!C4. Hoja1!$C$4. Fila

MANUAL DE AUTOMATRÍCULA

TUTORIAL DE PHP. M. en C. Erika Vilches. Parte 2.

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

Centro de Capacitación en Informática

PHP y MySQL. Indice: Switch Bucles For While do...while

ALGORITMICA Y PROGRAMACION POR OBJETOS I

Fracciones. Objetivos. Antes de empezar

Prof. Dr. Paul Bustamante

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

RULETA. El jugador selecciona las fichas y pone sus fichas en su selección en la mesa.

LINUX - Los archivos de órdenes I

8. Sentencia return y métodos

Estructuras Repetitivas: SENTENCIA WHILE EN MATLAB INFORMÁTICA T2 INGENIERÍA INDUSTRIAL JORNADA ESPECIAL

LA TIR, UNA HERRAMIENTA DE CUIDADO MBA. Fernando Javier Moreno Brieva

Tema: Arreglos de Objetos en C++.

Trabajo Práctico N 4: Diseño por Contratos

Divisibilidad y números primos

AUTOR CARLOS EDUARDO BUENO VERGARA JORGE ARMANDO BUENO VERGARA USO DE LOS OBJETOS DEL PROGRAMA. Dfd INFORMÁTICA II PROFESOR. JOSÉ FRANCISCO AMADOR

Educar a los hijos. La estrategia principal: economía de fichas

Introducción. Visual Basic para Aplicaciones (VBA) en Excel: aspectos elementales

Examen Septiembre Curso Programación en C++ Pág. 1

Curso de Excel Avanzado

Introducción al lenguaje Java

CUANTO SE REQUIERE ENTRENAR PARA TERMINAR UNA CARRERA DE 5K?

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Estructuras de Repetición Repita Mientras

PROGRAMA DE DIRECCIÓN Y DESARROLLO DE RECURSOS HUMANOS (PDDRH)

Tecnologías en la Educación Matemática. Expresiones. Datos. Expresiones Aritméticas. Expresiones Aritméticas 19/08/2014

MANUAL TIENDA VIRTUAL. Paseo del Gran Capitán, Nº 62, Salamanca. Telf.: Fax:

UML, ejemplo sencillo sobre Modelado de un Proyecto

EJERCICIOS DE PROGRAMACIÓN RELACIÓN VII (EJERCICIOS DE REPASO)

10. Algunas clases estándar de Java (I)

MATEMÁTICAS APLICADAS A LAS C.C. SOCIALES

Herramientas para juegos matemáticos en DEDOS

Dominar las tablas de multiplicar

AcciGame, FINANCIERO. Tu Inversión Virtual. M. En C. Eduardo Bustos Farías

A practicar: Interactivos de matemáticas para niños

Estructuras de Datos y Algoritmos Práctica I - Curso 2012/13

Guía de Uso. Hemos creado esta Guía de Uso para que puedas aprovechar al máximo tu experiencia en StartBull.

MÉTODO DEL CAMBIO DE BASE PARA CÁLCULO MANUAL DE SUBREDES CON IP V4.0

Dirección de Operaciones

2. Estructura de un programa en Java

Transcripció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 Las competencias a evaluar con esta prueba son las siguientes: 1. Explicar los siguientes conceptos relativos a un programa computacional. 2. Aplicar las técnicas fundamentales para la resolución de problemas computacionales identificar los datos relevantes de un problema y las relaciones entre ellos, y descomponer problemas grandes en varios problemas más pequeños para resolver diferentes tipos de problemas con la ayuda del computador. 3. Aplicar el razonamiento algorítmico para establecer la solución a un problema como una secuencia de pasos bien definidos, incluyendo pasos condicionales y repetición de pasos. Pregunta 1 (30 %) Conceptos (40 %) Imagine la siguiente situación. Se te solicita desarrollar un programa de importancia nacional que simule la intercepción de un misil enemigo mediante el uso de un misil enviado por ti. Diseñas el programa, dentro del cual hay todo tipo de elementos como for, while, if-else y otros. Ya estás preparado, por lo que te sientas frente a tu computador para comenzar a programar. En ese momento te enteras mediante una noticia online que hay un virus nuevo que afecta al sistema operativo que ocupas, el cual borra la palabra if y la palabra else cada vez que la escribes, y tu computador está infectado. En definitiva, no puedes programar ocupando el control de flujo if-else. La pregunta es, existe alguna forma de desarrollar de igual forma un programa completo sin ocupar if-else? Si no la hay, por qué?. Y si la hay, cuál será la equivalencia del siguiente trozo de código mediante esta solución? int x = Usuario. entero (" Ingrese cualquier numero entero "); int y = Usuario. entero (" Ingrese cualquier numero entero "); if(x>y){ // Codigo desconocido if else { // Codigo desconocido else

Posible Solución: Claro que la hay, y es simplemente utilizando una combinación entre boolean y while para simular el comportamiento de un if y un else. No hay que olvidar que el else es simplemente un if con la condición negada, y fijándose que si se ingresó al if, no se puede ingresar al else, nunca. int x = Usuario. entero (" Ingrese cualquier numero entero "); int y = Usuario. entero (" Ingrese cualquier numero entero "); boolean entro_al_if = false ; /* La variable de tipo boolean entro_al_if es MUY importante. Sin ella, se podra entrar al if y despues al else ( no olvidar que x puede cambiar de valor dentro del "// Codigo desconocido if" */ while (x>y &&! entro_al_if ){ // if // Codigo desconocido if entro_al_if = true ; while (x <=y &&! entro_al_if ){ // else // Codigo desconocido else Pauta Corrección: Total 3 puntos. Decir que Sí, exista una forma. Puntos:0.5 Solución en código considera complementariedad de condiciones entre el if y el else. Puntos:1.0 Solución en código considera que dentro del Código desconocido if el valor de x puede cambiar y por lo tanto hay que tener cuidado para que no se pueda entrar al if y luego al else. Puntos:1.5 Aplicación (60 %) 1. Detalle el resultado mostrado en consola luego de la ejecución del siguiente programa. import iic1103package.*; public class Principal { public static void main ( String [] args ){ // Parte 1 int r = -1; for ( int i =0; i <5; i ++){ r = r + i; r - -; Usuario. mensaje ("r = " + r); String a = "5"; a = a + r; Usuario. mensaje ("a = " + a); // Parte 2 for ( int i =5; i <10; i ++){ Usuario. mensaje ("i = " + i); for ( int j= -1; j <1; j ++){ i = i - j; Usuario. mensaje (i*j); // Parte 3 int year = 2010;

String sem = "1 "; int x = 2016; while (x > year ){ x = x - 2; Usuario. mensaje (x +1); if ( x %2 == 0){ --x; Usuario. mensaje ( sem + ": " + (x + 1)); Pauta y Solución: Total puntos: 6.0 El resultado en consola es el siguiente: r = 4 Puntos:0.7 a = 54 Puntos:0.5 i = 5 Puntos:0.1-6 Puntos:0.2 0 Puntos:0.4 i = 7 Puntos:0.4-8 Puntos:0.4 0 Puntos:0.4 i = 9 Puntos:0.4-10 Puntos:0.4 0 Puntos:0.4 2015 Puntos:0.1 1 : 2014 Puntos:0.8 2012 Puntos:0.4 2010 Puntos:0.4 Pregunta 2 (40 %) Una persona dispone de los siguientes alimentos para consumir: Alimento Calorías 1.- Cazuela de Ave 340 2.- Completo 700 3.- Durazno 48 4.- Cerveza 96 Tabla 1: Alimentos Y para utilizar las calorías consumidas el individuo puede participar las veces que quiera en un triatlón, el cual consiste en correr durante 15 minutos, luego hacer 15 minutos de bicicleta y finalmente nadar por 15 minutos. En las actividades mencionadas las calorías se gastan de la siguiente forma:

Actividad Física Calorías utilizadas por 15 min. de actividad Correr (12 km/hr) 231 Caminar(6 km/hr) 74 Ciclismo 148 Natación 111 Tabla 2: Actividades Realice un programa en Java que permita al usuario indicar cuántas porciones de cada tipo de alimento va a consumir. El usuario puede modificar cuantas veces quiera la cantidad de porciones que le asigna a cada tipo de alimento. Este proceso se realiza hasta que el usuario ingrese un valor distinto al de la Tabla 1, por ejemplo el valor 0 (cero), el cual indica que ya no se consumirán mas porciones de ningún alimento. Validando que: El alimento ingresado pertenezca a los de la lista (tabla 1). Las cantidades ingresadas sean valores enteros mayores o iguales a cero. Una vez indicada la cantidad total de calorías ingresadas, el programa debe indicar cuál es el número mínimo de repeticiones en el triatlón para gastar las calorías consumidas (no importa que se pase un poco, pero el excedente no puede ser mayor a lo gastado en un ciclo de triatlón). Considere que cada vez que el individuo ya ha participado 2 veces seguidas en la triatlón corriendo, el trayecto que debió hacer corriendo esta tercera vez lo hace caminando por un tema de agotamiento. Tener en cuenta que: al correr a 12 km/hr en 15 min se recorren 3 Km. y al caminar a 6 km/hr en 15 min. se recorren 1,5 Km. considere que el trayecto caminando es de 3 Km, es decir gasta el doble de calorías. Pauta Corrección: Total 10 puntos. Definir todas las variables/constantes (8 en total, 4 de cada tabla). Puntos:0.5 Definir la variable que sume las calorías ingeridas. Puntos:0.5 Definir la variable que sume las calorías utilizadas. Puntos:0.5 Validar que el alimento a ingerir esté en la tabla (1-4) o por defecto sea el valor de fin (cero). Puntos:2 Validar que si el usuario ingresa el valor de fin (cero) Puntos: se termine la ejecución del ciclo. Puntos:2 Validar que si ya ha participado dos veces seguidas en el triatlón corriendo la tercera vez sea caminando. Puntos:2 Participar en el triatlón hasta que las calorias ingeridas sean menores o iguales a las calorias utilizadas. Puntos:2

Imprimir el número mínimo de repeticiones en el triatlón para gastar las calorías consumidas. Puntos:0.5 Posible Solución: import iic1103package. Usuario ; public class P2 { public static final int CAZUELA = 340; public static final int COMPLETO = 700; public static final int DURAZNO = 48; public static final int CERVEZA = 96; public static final int CORRER = 231; public static final int CAMINAR = 74; public static final int CICLISMO = 148; public static final int NATACION = 111; public static void main ( String [] args ) { int alimento ; int caloriasingeridas = 0; int caloriasutilizadas = 0; int porcion = 0; int participaciontriatlon = 0; do { alimento = Usuario. entero (" Ingrese alimento a ingerir "); switch ( alimento ) { case 1: { porcion = Usuario. entero (" Ingrese la porcion de cazuela "); caloriasingeridas = caloriasingeridas + ( CAZUELA * porcion ); case 2: { porcion = Usuario. entero (" Ingrese la porcion de completo "); caloriasingeridas = caloriasingeridas + ( COMPLETO * porcion ); case 3: { porcion = Usuario. entero (" Ingrese la porcion de durazno "); caloriasingeridas = caloriasingeridas + ( DURAZNO * porcion ); case 4: { porcion = Usuario. entero (" Ingrese la porcion de cerveza "); caloriasingeridas = caloriasingeridas + ( CERVEZA * porcion ); case 0: { Usuario. mensaje (" Ahora realizaremos los calculos... "); default : { Usuario. mensaje (" El Alimento ingresado no es valido, intentelo nuevamente "); // switch while ( alimento!= 0); while ( caloriasingeridas > caloriasutilizadas ) { participaciontriatlon ++; // si es la participacion multiplo de 3 debe caminar y no correr if ( participaciontriatlon % 3 == 0) { // CALCULO EN TRAYECTO caloriasutilizadas = caloriasutilizadas + (2 * CAMINAR + CICLISMO + NATACION ); // 2* CAMINAR -- > para // recorrer los 3km Usuario. mensaje (" en 3");

else { caloriasutilizadas = caloriasutilizadas + ( CORRER + CICLISMO + NATACION ); Usuario. mensaje (" en otro "); Usuario. mensaje (" Para gastar las " + caloriasingeridas + " debes participar al menos " + participaciontriatlon + " veces en la triatlon "); Pregunta 3 (40 %) En un casino se estrena un nuevo tipo de juego que consiste en tirar 3 dados con un número distinto de caras y elegir un número. El jugador toma los dados, los lanza y si los 3 resultados suman el número que eligió, gana. El premio es inversamente proporcional a la probabilidad de que gane. El casino quiere poder evaluar esto cada vez que un jugador elige los dados que va a utilizar y el número que quiere sacar. Para ello, le ha pedido un programa que pida al usuario los 4 valores (el número de caras de cada uno de los dados más la suma a la que va a apostar) e imprima en la consola todas las combinaciones ganadoras que pueden ocurrir y finalmente el número total de combinaciones que sirven versus las combinaciones totales. El casino tiene dados de 4, 6, 8, 10, 12y20 caras, pero asuma para efectos del programa que cada dado puede tener cualquier valor entero positivo de caras, numeradas desde la 1 en adelante. No hay problema utilizar dados con tamaños repetidos. Asuma también que el usuario ingresará valores correctos, por lo que no necesita validarlos. EJEMPLO: Para los dados 2, 3 y 4 y el valor 10 el resultado es: Las combinaciones ganadoras son 0 de 24. Para los dados 2, 4 y 6 y el valor 12 el resultado es: La combinación 2-4-6 suma 12. Las combinaciones ganadoras son 1 de 48 Para los dados 2, 4 y 6 y el valor 10 el resultado es: La combinación 1-3-6 suma 10. La combinación 1-4-5 suma 10. La combinación 2-2-6 suma 10. La combinación 2-3-5 suma 10. La combinación 2-4-4 suma 10. Las combinaciones ganadoras son 5 de 48 Pauta Corrección:

Pedir los valores correctamente: 1 pto. Iterar sobre todos los valores posibles: 2 pts. Limitar correctamente los valores a los dados existentes: 1 pto. Evaluar la condición y mostrar las combinaciones correctas: 1 pto. Calcular la suma y mostrar el total al final: 1 pto. Posible Solución: import iic1103package. Usuario ; public class P3 { public static void main ( String [] args ) { int dado1 = Usuario. entero (""); int dado2 = Usuario. entero (""); int dado3 = Usuario. entero (""); int suma = Usuario. entero (""); int combinaciones = 0; for ( int i = 1; i <= dado1 ; i ++) { for ( int j = 1; j <= dado2 ; j ++) { for ( int k = 1; k <= dado3 ; k ++) { if ( i + j + k == suma ) { Usuario. mensaje (" La combinacion " + i + "-" + j + "-" + k + " suma " + suma + "."); combinaciones ++; Usuario. mensaje (" Las combinaciones ganadoras son " + combinaciones + " de " + dado1 * dado2 * dado3 );