Fundamentos de Informática Primero de Ingeniería Técnica Industrial Mecánica, Química, Electricidad y Electrónica Departamento de Tecnologías de la Información PRÁCTICA 4. SENTENCIAS DE CONTROL DE SELECCIÓN. 1. Introducción. En esta práctica deberá aplicar todos los conceptos vistos en la primera parte del Tema 5 de teoría, (Control de flujo del programa), que trata sobre las Sentencias de Control de Selección (if else y switch). Una vez más queremos insistir en la importancia de diferenciar claramente dos cosas: • Por un lado, entender el concepto de Sentencia de Control de Selección y saber cómo se modifica el control del flujo del programa a raíz del uso de este tipo de sentencias. • Por otro lado, aprender a utilizar adecuadamente las dos sentencias de control de selección que ofrece el lenguaje C: if else y switch. 2. Conceptos nuevos Los conceptos nuevos introducidos son: 1) Flujo del programa. 2) Sentencias de Control de Selección. 3) Evaluación de una condición presente en una sentencia de control (realmente este concepto ya se vio en el Tema 4, pero en esta práctica usted podrá entender la verdadera utilidad de las condiciones y comprobar si sabe evaluar y diseñar condiciones adecuadamente.) 3. Lenguaje C Las nuevas características de C que ha aprendido y necesita saber para la realización de esta práctica son: 1) 2) 3) 4) 5) 6) Funcionamiento de la sentencia de control if Funcionamiento de la sentencia de control if else Funcionamiento de la sentencia de control if else-if Posibilidad de anidamientos de las sentencias if, if else e if else-if Funcionamiento de la sentencia switch Posibilidad de anidamiento de las sentencias switch 4. Entorno DevC++. Es fundamental para que entienda el verdadero funcionamiento de las sentencias de control, poder ejecutar el programa paso a paso y observar cuál es el desarrollo del flujo del programa. Para ello son imprescindibles utilizar dos cosas: Fundamentos de Informática Primero de Ingeniería Técnica Industrial Mecánica, Química, Electricidad y Electrónica Departamento de Tecnologías de la Información • La opción de ejecución paso a paso (Depurar (F8) Æ Avanzar Paso a Paso (Shift F7) ) que permite ejecutar el programa instrucción a instrucción, viendo así cómo se desarrolla. • La opción del menú de depuración Añadir Watch (F4), que permite ver cómo va variando el contenido de aquellas variables del programa que deseemos. Investigue en casa, antes de asistir a las prácticas, estas dos herramientas que se ofrecen para depurar programas. 5. Ejercicios propuestos Con todo lo que ha visto en la primera parte del Tema 5 de teoría, usted ya puede comenzar a hacer programas en C. A continuación le ofrecemos una serie de ejercicios que debería usted intentar hacer antes de asistir a prácticas: 1) Encuentre los errores de la siguiente sentencia escrita en lenguaje C if x > 25.0 y=x else y = z; 2) ¿Qué valor se le asigna a la variable consumo en la sentencia if siguiente si la variable velocidad vale 120? ¿y si velocidad vale 110?. Si quiere estar seguro de que su respuesta está bien, codifique el ejemplo con DevC++. if (velocidad > 80) consumo = 10.0; else if (velocidad > 100) consumo = 12.00; else if (velocidad > 120) consumo =15.00 3) Escribir un programa que lea una nota de un examen por teclado y devuelva la calificación que tiene. La calificación podrá ser: Suspenso (0-4.99), Aprobado (5-6.99), Notable (7-8.99), Sobresaliente (9-9.99) o Matricula de Honor (10). Realice este ejercicio utilizando la sentencia de control switch. 4) Repita el ejercicio anterior pero utilizando la sentencia de control if else-if. 5) Mejore el ejercicio anterior de modo que si el usuario introduce un valor menor que cero o un valor mayor que 10 se muestre por pantalla un mensaje de error y finalice el programa. 6) Escribir un programa que lea dos números enteros por teclado y determine cuál es el mayor y cual es el menor. También deberá considerar el caso en el que los dos números sean iguales. Fundamentos de Informática Primero de Ingeniería Técnica Industrial Mecánica, Química, Electricidad y Electrónica Departamento de Tecnologías de la Información 7) Escribir un programa que lea tres números enteros por teclado y muestre por pantalla el mayor de los tres. 8) Escribir un programa que lea tres números enteros por teclado y emita un mensaje indicando si están o no en ordenados en orden creciente. 9) Escribir un programa que muestre por pantalla la cantidad de memoria, expresada en bytes, que ocupa cada uno de los siguientes tipos de datos existentes en C: char, unsigned char, int, short int, unsigned short int, long int, float y double. Comparar y analizar el resultado. Nota: Existe en C el operador sizeof(), que le servirá para llevar a buen fin este ejercicio. Ejemplo: El programa deberá sacar por pantalla una frase como ésta para cada tipo de dato: “Una variable de tipo ----- ocupa en memoria ----- bytes”. Así para el tipo entero el programa sacaría por pantalla: “Una variable de tipo short int ocupa en memoria 2 bytes”. 10) Dadas las variables enteras: i = 10, j=5 y k = -2, y las variables de tipo carácter c1=‘w’ y c2 = ‘?’. Indique si las siguientes condiciones son ciertas o falsas. a) (i < 10) && ( j = = 5); b) ( i <= 10 ) && ( j = = 5 ); c) ! ( k > 3); d) ( k != 3 ) || ( c1 = = ‘w’ ); e) ( c1 = = 119 ) && ( c2 = = ‘?’ ); f) ( ( i > 10) || ( k <= 0) ) && (( c1 = = ’w’) && ( c2 = = 63 )) g) ( ( i > 9) && ( k <= -1) ) && (( c1 = = ’t’) || ( c2 = = 63 )) h) ( ( i > 9) && ( k <= -1) ) && ( c1 = = ’t’) || ( c2 = = 65 ) i) ( k = = -2) || ( i > 20) || (j != 5) || ( c1 = = ‘w’ ) || (c2 = = 63) j) (( k + j ) = = 3 ) && (( i + j – 2) = = 17) 11) Escribir un programa que permita introducir por teclado tres números enteros y responda si los números son iguales. 12) Escribir un programa que permita introducir por teclado tres letras y responda si existen al menos dos letras iguales. 13) Realizar un programa en el que el usuario introduce un número entero y el programa responde si el número es par o impar. Fundamentos de Informática Primero de Ingeniería Técnica Industrial Mecánica, Química, Electricidad y Electrónica Departamento de Tecnologías de la Información 14) Realizar un programa que pida dos números enteros por teclado y muestre por pantalla el siguiente menú: MENU 1. 2. 3. 4. Sumar Restar Multiplicar Dividir Elija opción: El usuario deberá elegir una opción y el programa deberá mostrar el resultado por pantalla. y finalizar. Realizar el ejercicio utilizando switch( ). 15) Mejorar el programa anterior para en aquellos casos en los que el usuario elige una opción distinta de las 4 posibles el programa muestre un mensaje de error (por ejemplo: “Error. Opción no válida”) y a continuación finalice. Si estos ejercicios le parecen insuficientes, o le gustaría consultar ejercicios resueltos y comentados, le recomendamos que consulte el libro “Programación en C” de Byron Gottfried o cualquier otro libro, manual o tutorial de C que contenga ejercicios resueltos y explicados. 6. Conocimientos mínimos Después de haber realizado esta práctica usted debería responder sin dilación a las siguientes preguntas. Si no es así es que no ha aprendido lo suficiente, de modo que deberá repasar algunos conceptos. • Qué es una sentencia de control. • Qué es el flujo de un programa. • Cómo se modifica el flujo de un programa cuando utilizamos una sentencia de control de selección. • Qué sentencias de control de selección ofrece el lenguaje C. • Cuál es el diagrama de flujo de la sentencia if. • Cuál es el diagrama de flujo de la sentencia if else. • Cuál es el diagrama de flujo de la sentencia switch. • Qué limitaciones tiene la sentencia switch respecto a la sentencia if else-if. • En qué situaciones se debe utilizar la sentencia switch. • Qué ocurre si omite las palabra break en uno de los case de una sentencia switch 7. La Frase.... “Un computador hará lo que le digas, pero ello puede ser muy diferente de lo que tengas en mente.” Joseph Weizenbaum.