LENGUAJES DE PROGRAMACIÓN. Solución al examen de Junio 2017, Primera Semana

Documentos relacionados
Variables y tipos básicos 1. Definir una variable de tipo char. Convertirla a una variable de tipo entera e imprimir su valor asociado.

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

MANEJO DE EXCEPCIONES en C++ Dr. Oldemar Rodríguez R. Escuela de Informática Universidad Nacional

Lección 3 Sentencias de control

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

Introducción al lenguaje C

Dobles: Es el caso de la instrucción if-else (punto 1.2).

Introducción a la Programación

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

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

Capítulo 13 INSTRUCCIONES DE CONTROL REPETITIVAS. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Programación: Estructuras de Control

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL

Examen escrito de Programación 1

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Examen de Prácticas de Programación Ingeniería Informática

WHILE Y DO WHILE BREAK EN LENGUAJE C. BUCLES MIENTRAS. FORZAR SALIDA O TERMINACIÓN. EJEMPLO (CU00534F)

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

Estructura de datos y Programación

Tema 2. El lenguaje JAVA

Java para no Programadores

Operadores aritméticos

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

Tema 2: Análisis léxico

Fundamentos de programación

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Examen de Fundamentos de la Programación (Modelo 1)

SESIÓN DE EJERCICIOS E1

TEMA 4. ESTRUCTURAS DE CONTROL

Programación en Lenguaje C

Hoja de ejercicios del Tema 3

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

Paradigmas de lenguajes de programación. Introducción a la programación imperativa. Lenguaje C. Programación imperativa

ESTRUCTURAS DE CONTROL

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

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

Estructuras de Selección, armado de Equipos, y Trabajo #1.

Unidad II Fundamentos de C++ M.C. Juan Carlos Olivares Rojas

Práctica : Creación y uso de métodos

Introducción a Java 10/02/2011. Tokens. Juan Manuel Fernández Peña Curso Rev Tokens. Tokens

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Parte I: Programación en un lenguaje orientado a objetos

Sentencias DO-WHILE EN C++

Construcciones del Lenguaje Java

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Introducción al lenguaje C

Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C. Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas.

Fundamentos de Informática E.U.P. Universidad de Sevilla

3. Estructuras iterativas. 1.2 Análisis: For. 1.1 Problemas iterativos. Fundamentos de Informática Dpto. Lenguajes y Sistemas Informáticos

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

Complejidad de algoritmos recursivos

Al igual que las instrucciones alternativas, las instrucciones repetitivas también se pueden anidar, permitiendo las siguientes combinaciones de

Java para no Programadores

CLAVE EXAMEN: a cd. c u r s o r = c u r s o r. g e t S i g u i e n t e ( ) ; p o s i c i o n ++;

Programación 1 Tema 3. Información, datos, operaciones y expresiones

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE

Tema 3. Estructuras de control y programación estructurada

7. Otras sentencias Sentencia break. 84 A. García-Beltrán y J.M. Arranz

SESIÓN DE EJERCICIOS E1

Tema 2. El lenguaje de programación Java (Parte 1)

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

Informática Lección 5. Arreglos (vectores) Curso Pedro Álvarez y José Ángel Bañares 2/11/2010. Dpto. Informática e Ingeniería de Sistemas.

Boletín de ejercicios de la asignatura de INFORMÁTICA para la realización de las prácticas de laboratorio. Ejercicios de Estructuras de Control

6. Sentencias repetitivas o bucles

Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

Ejercicios sobre recursividad

Programación 1 Tema 3. Información, datos, operaciones y expresiones

Fundamentos de Informática

FUNDAMENTOS DE PROGRAMACIÓN. 1º ING. INFORMÁTICA (Plan 2000) 2ª Convocatoria. 21 de junio de 2001

LENGUAJE. Tema 2 Elementos de un programa

Introducción a C# y la plataforma.net. Pablo Zaidenvoren 2013

Cátedra I Informática Autor I Carlos Bartó

PROGRAMACIÓN N C++ CONSTRUCTORES PROG.C++ L11 CONSTRUCTORES DEL LENGUAJE

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

Tema 6 Control de Flujo

Estructuras de control

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C Sesión 1

PHP: Lenguaje de programación

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

Palabras reservadas de C++ y C. Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones.

Elementos léxicos del lenguaje de programación Java

Guía de Referencia Rápida de C++ (std)

Sentencias de control. Condiciones

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Laboratorio 5 Tema 7. Tipos de Datos Estructurados: Arreglos, Registros y Archivos

Programación (PRG) PRÁCTICA 10. Algoritmos de búsqueda

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

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

Escuela Politécnica Superior de Elche

Algoritmos y Programación Orientada a Objetos I. Contenedoras de tamaño variable y uso de ciclos en otros contextos

GUÍA DE LABORATORIO #3 ESTRUCTURAS ALGORÍTMICAS CONDICIONALES SIMPLES, DOBLES Y MÚLTIPLES

Sebastián García Galán

Prof. Dr.Paul Bustamante

Introducción a C++ Índice

Estructuras de control selectivas

Actividad Algoritmos, Estructura y Programación I. FOR, DO-WHILE

Programación. Test Autoevaluación Tema 3

Transcripción:

Solución al examen de Junio 2017, Primera Semana PREGUNTA 1 (3 puntos) Indique la veracidad o falsedad de cada una de las afirmaciones siguientes, explicando detalladamente en cada caso el motivo de su respuesta. A. (0.5 puntos) Pascal no permite inicializar una variable al declararla. B. (0.5 puntos) Java soporta sólo un tipo de dato entero, que tiene 128 bits. C. (0.5 puntos) Para poder acceder a todos los elementos de un array los compiladores han de almacenar la dirección de memoria de cada uno de sus elementos. D. (0.5 puntos) La recursividad de cola es un tipo de recursividad lineal. E. (0.5 puntos) En C y C++ la expresión de control del bucle for es opcional. F. (0.5 puntos) El algoritmo transform aplica una función especificada a cada uno de los elementos de la secuencia origen, almacenando el resultado en la misma secuencia origen. Solución a la Pregunta 1 A Verdadera Véase la página 112 del texto base. B Falsa Véase la página 117 del texto base. C Falsa Véase la página 1 del texto base. D Verdadera Véase la página 355 del texto base. E Verdadera Véase la página 274 del texto base. F Falsa Véase la página 534 del texto base.

PREGUNTA 2 (1 punto) Escriba la salida por consola producida al ejecutar el programa en C++ escrito a continuación. int main() { int *p1, *p2; int j = 7; int k = ; p1 = new int; *p1 = j; p2 = p1; *p2 = k; p1 = new int; *p1 = 8; Solución a la Pregunta 2 La salida por consola producida al ejecutar el programa es: 7 7 7 8 2 Dpto. de Informática y Automática, UNED

SOLUCIÓN AL EXAMEN DE JUNIO 2017, PRIMERA SEMANA PREGUNTA 3 (1 punto) Escriba la salida por consola producida al ejecutar el programa en C++ escrito a continuación. #include <vector> #include <algorithm> int main() { std::vector<int> vec(4,2); vec.push_back(0); vec.push_back(1); vec.push_back(0); vec.push_back(-5); vec.push_back(-4); vec.push_back(-6); for (unsigned int i=0; i<vec.size(); i++) std::cout << vec.at(i) << " "; std::cout<<std::endl; for (int val=0; val<3; val++) std::cout << count(vec.begin(),vec.end(),val) << std::endl; std::cout << "\n"; for (int val=0; val<3; val++) std::cout << count(vec.begin()+2,vec.end()-1,val) << std::endl; Solución a la Pregunta 3 La salida por consola producida al ejecutar el programa es: 2 2 2 2 0 1 0-5 -4-6 2 1 4 2 1 2 Dpto. de Informática y Automática, UNED 3

PREGUNTA 4 (2.5 puntos) La sucesión de Thue-Morse es una sucesión de números binarios que comienza siempre con el primer valor 0. La sucesión puede obtenerse de manera iterativa, comenzando por el valor cero y concatenando el complemento Booleano de la sucesión existente hasta el momento. A continuación se muestra la sucesión s 4, obtenida mediante 4 iteraciones del método anteriormente descrito, donde C(s) representa el complemento Booleano de s y el operador + representa concatenación. s 1 = 0 s 2 = s 1 +C(s 1 ) = 01 s 3 = s 2 +C(s 2 ) = 0110 s 4 = s 3 +C(s 3 ) = 01101001 4.1 (1.5 puntos) Escriba una función en C++ cuyo prototipo sea: std::vector<bool> sucthuemorse(int N) throw ( std::invalid_argument ); La funcionalidad debe ser la siguiente: Si N es menor que uno, la función lanza una excepción. En caso contrario, aplica el método anteriormente descrito para obtener la sucesión s N y la devuelve como un vector de componentes Booleanos. 4.2 (1 punto) Escriba en C++ un programa principal que realice las acciones siguientes: 1. Escriba un mensaje en la consola solicitando al usuario que éste introduzca por consola el valor den. 2. El valor introducido por el usuario debe almacenarse en una variable entera llamada N. 3. Invocar la función sucthuemorse definida anteriormente, pasándole N como argumento. 4. Si la función lanza una excepción, mostrar un mensaje en la consola indicándolo. En caso contrario, escribir en la consola el contenido del vector devuelto por la función. 5. Terminar. 4 Dpto. de Informática y Automática, UNED

SOLUCIÓN AL EXAMEN DE JUNIO 2017, PRIMERA SEMANA Solución a la Pregunta 4 #include<vector> #include <stdexcept> std::vector<bool> sucthuemorse(int N) throw (std::invalid_argument); int main() { std::cout << "Introduzca N" << std::endl; int N; std::cin >> N; std::vector<bool> v; try { v = sucthuemorse(n); catch ( std::invalid_argument exc ) { std::cout << exc.what() << std::endl; // Salida por consola for (unsigned int i=0; i<v.size(); i++) std::cout << v[i]; std::cout << std::endl; std::vector<bool> sucthuemorse(int N) throw ( std::invalid_argument ) { if ( N < 1 ) throw std::invalid_argument ("ERROR: N menor que uno"); std::vector<bool> v(1,0); // Un componente de valor 0 for ( int i=1; i<n; i++ ) { int ncomp = v.size(); for ( int j=0; j<ncomp; j++ ) v.push_back(!v[j] ); return v; Dpto. de Informática y Automática, UNED 5

PREGUNTA 5 (2.5 puntos) Escriba un programa en C++ que realice las acciones siguientes: 1. Abrir para lectura un fichero de texto llamado datos.txt. Si se produce error, terminar. 2. Leer palabra a palabra el fichero. 3. Calcular el número de palabras que son iguales a cada una de las palabras siguientes: 0, 01, 0110, 01101001. La estructura de datos que debe emplearse para ello es un mapa. La clave debe ser el número de caracteres de la palabra: 1, 2, 4 u 8. El valor para la clave 1, 2, 4 y 8 debe ser el número de palabras leídas del fichero iguales a 0, 01, 0110 y 01101001, respectivamente. 4. Mostrar en la consola el contenido del mapa. 5. Terminar. A continuación se muestra un ejemplo. Supongamos que el contenido del fichero es: 1 01 0 01101001 01100110 01 01 El mensaje escrito en consola por el programa debería ser: 1, 3, 0, 1 indicando que en el fichero aparece la palabra 0 una vez, tres veces la palabra 01, ninguna vez la palabra 0110 y una vez la palabra 01101001. 6 Dpto. de Informática y Automática, UNED

SOLUCIÓN AL EXAMEN DE JUNIO 2017, PRIMERA SEMANA Solución a la Pregunta 5 #include <map> #include <fstream> int main() { // Apertura para lectura del fichero std::ifstream infich("datos.txt", std::ios::in); if (!infich) { std::cout << "Fichero no encontrado" << std::endl; // Mapa donde se almacena el resultado e inicialización std::map<int,int> mpal; mpal[1] = 0; mpal[2] = 0; mpal[4] = 0; mpal[8] = 0; // Lectura del fichero por palabras std::string s; while (!infich.eof() ) { infich >> s; if (!infich.eof() ) { switch ( s.size() ) { case 1: if ( s == "0") mpal[1] = mpal[1] + 1; case 2: if ( s == "01") mpal[2]++; case 4: if ( s == "0110") mpal[4]++; case 8: if ( s == "01101001") mpal[8]++; default: // while // Cierra fichero infich.close(); // Salida por consola std::cout << mpal[1] << ", " << mpal[2] << ", " << mpal[4] << ", " << mpal[8] << std::endl; Dpto. de Informática y Automática, UNED 7