Diferencia entre revisiones de «PrInf09: if anidados»
(→Contenido de la práctica) |
(→Ejemplo de ejecución) |
||
| (No se muestran 18 ediciones intermedias del mismo usuario) | |||
| Línea 17: | Línea 17: | ||
== Contenido de la práctica == | == Contenido de la práctica == | ||
| − | En la práctica anterior teníamos que mostrar un mensaje si la temperatura transformada estaba entre | + | En la práctica anterior teníamos que mostrar un mensaje si la temperatura transformada estaba entre 0 ºC y 100 ºC. En esta práctica vamos a modificar el programa que hayamos escrito, para mostrar los siguientes mensajes: |
| − | * Si la temperatura calculada está por debajo de | + | * Si la temperatura calculada está por debajo de 0 ºC, tendrá que mostrar el mensaje ''X ºF corresponden a HIELO''. |
| − | * Si la temperatura calculada está por encima de | + | * Si la temperatura calculada está por encima de 100 ºC, tendrá que mostrar el mensaje ''X ºF corresponden a VAPOR''. |
| + | donde ''X'' es la temperatura en grados Farenheit, escrita con dos decimales. | ||
| − | Si llamamos ''c'' a la temperatura que hemos calculado en grados Celsius, en la práctica anterior tendremos que haber escrito un trozo de código parecido al siguiente: | + | Si llamamos ''c'' a la temperatura que hemos calculado en grados Celsius y ''f'' a la temperatura que introduce el usuario en grados Farenheit, en la práctica anterior tendremos que haber escrito un trozo de código parecido al siguiente: |
| − | {#tag:source|if c >= 0 && c <= 100 | + | {{#tag:source|if c >= 0 && c <= 100 |
| + | fprintf('AVISO: La temperatura %.2f F está entre 0 C y 100 C\n', f); | ||
| + | end|lang="matlab"}} | ||
| + | |||
| + | Como ya sabemos, la sentencia ''if'' también admite una cláusula ''else'', para ejecutar comandos si no se cumple la condición. En nuestro caso, cuando no se cumple la condición tenemos que mostrar un mensaje, ''HIELO'' o ''VAPOR'', que dependerá del valor de la temperatura ''c''. Es decir, el programa modificado puede ser inicialmente el siguiente: | ||
| + | {{#tag:source|if c >= 0 && c <= 100 | ||
| + | fprintf('AVISO: La temperatura %.2f F está entre 0 C y 100 C\n', f); | ||
| + | else | ||
| + | % Muestra VAPOR si c es mayor que 100 | ||
| + | % O muestra HIELO si c es menor que 0 | ||
| + | end|lang="matlab"}} | ||
| + | |||
| + | Si quieres usar el programa automático que comprueba si la práctica es correcta, tienes que usar el comando ''fprintf'' para mostrar los mensajes. Por ejemplo, para mostrar el mensaje ''HIELO'' tienes que escribir: | ||
| + | |||
| + | {{#tag:source|fprintf('%.2f corresponden a HIELO\n', f);|lang="matlab"}} | ||
| + | |||
| + | {{Tarea | Modifica el programa de la práctica anterior, sustituyendo parte del código escrito en la práctica anterior con el trozo de código que se muestra en el párrafo de encima. Sustituye los comentarios dentro de la cláusula ''else'' por el código que creas necesario para realizar las modificaciones pedidas. Las pistas necesarias para saber cómo modificar el programa se dan en el vídeo [[Prog12: Condiciones (if anidados)]]}} | ||
| + | |||
| + | === Ejemplo de ejecución === | ||
| + | |||
| + | Si el usuario introduce 5 como valor de entrada, tu programa debe producir la siguiente salida: | ||
| + | <pre> | ||
| + | 5.00 F corresponden a HIELO | ||
| + | El equivalente a 5.00 F en grados Celsius es -15.00 C | ||
| + | </pre> | ||
| + | |||
| + | Si introduce 150, debe producir la siguiente salida | ||
| + | <pre> | ||
| + | AVISO: La temperatura 150.00 F está entre 0 C y 100 C | ||
| + | El equivalente a 150.00 F en grados Celsius es 65.56 C | ||
| + | </pre> | ||
| + | |||
| + | Si introduce 1000, debe producir la siguiente salida | ||
| + | <pre> | ||
| + | 1000.00 ºF corresponden a VAPOR | ||
| + | El equivalente a 1000.00 F en grados Celsius es 537.78 C | ||
| + | </pre> | ||
== Comprobación de la práctica == | == Comprobación de la práctica == | ||
| + | |||
| + | Puedes comprobar si tu programa es correcto usando este programa: [http://mat.caminos.upm.es/w/images/6/69/CompruebaPr09.m CompruebaPr09.m] | ||
Dale al botón derecho y elige guardar como. Cópialo en el mismo directorio donde hayas guardado la solución de la práctica. Luego puedes comprobar si tu programa es correcto escribiendo | Dale al botón derecho y elige guardar como. Cópialo en el mismo directorio donde hayas guardado la solución de la práctica. Luego puedes comprobar si tu programa es correcto escribiendo | ||
| Línea 32: | Línea 71: | ||
En este caso, la solución de la práctica está guardada en un fichero llamado ''miSolucion.m''. Cambia el nombre al llamar a ''CompruebaPr09'' si tu programa se llama diferente. | En este caso, la solución de la práctica está guardada en un fichero llamado ''miSolucion.m''. Cambia el nombre al llamar a ''CompruebaPr09'' si tu programa se llama diferente. | ||
| − | El programa no comprueba ninguna parte del programa desarrollada en alguna práctica anterior, solo comprueba si el mensaje se muestra cuando la temperatura está entre 0ºC y 100 ºC, | + | El programa no comprueba ninguna parte del programa desarrollada en alguna práctica anterior, solo comprueba si el mensaje se muestra cuando la temperatura está entre 0ºC y 100 ºC, o si se muestran los mensajes correspondientes cuando la temperatura está por debajo de 0 ºC o por encima de 100 ºC. Se probarán diferentes temperaturas, y se mostrará si el resultado es el esperado (mensaje que empieza por ''OK''). Si en algún caso no es el esperado, mostrará un mensaje que empieza por ''WARN'' o por ''ERR''. |
== Ejercicio post-práctica == | == Ejercicio post-práctica == | ||
| + | |||
| + | Además de ''else'', existe otra cláusula, denominada ''elseif'' que facilita la lectura del código cuando existen muchos ''if'' anidados. Modifica tu programa para que use las cláusulas ''elseif'' necesarias, de modo que no haya ''if'' anidados. | ||
| + | |||
| + | Consulta la [http://www.mathworks.es/es/help/matlab/ref/elseif.html documentación de MATLAB sobre elseif] y la [http://www.gnu.org/software/octave/doc/interpreter/The-if-Statement.html Octave también], para averiguar cómo aplicarlo a tu programa. | ||
[[Categoría:Prácticas de Informática]] | [[Categoría:Prácticas de Informática]] | ||
Revisión actual del 17:09 4 oct 2013
| Práctica de Informática | |
|---|---|
| if anidados | |
| Práctica anterior | Siguiente práctica |
| Este artículo es un guión de prácticas de Informática | |
En la práctica 6 vimos cómo hacer que un programa tomara decisiones, usando la instrucción if. En la práctica 7 vimos cómo escribir condiciones algo más complejas para usarlas con if, que entrenamos también en el programa de la práctica 8. Ahora vamos a ver cómo combinar varios if juntos, técnica que se conoce como if anidados. Para ello, modificaremos el programa de la práctica anterior.
Contenido
1 Requisitos previos
Es imprescindible haber realizado previamente la práctica 8.
Es también muy recomendable visualizar este vídeo antes de realizar esta práctica:
2 Vídeos posteriores
Tras realizar esta práctica, es conveniente ver estos vídeos e intentar implementar el programa que se explica en ellos:
- Prog13: Ejemplo -- Segundo programa (1/3)
- Prog14: Ejemplo -- Segundo programa (2/3)
- Prog15: Ejemplo -- Segundo programa (3/3)
3 Contenido de la práctica
En la práctica anterior teníamos que mostrar un mensaje si la temperatura transformada estaba entre 0 ºC y 100 ºC. En esta práctica vamos a modificar el programa que hayamos escrito, para mostrar los siguientes mensajes:
- Si la temperatura calculada está por debajo de 0 ºC, tendrá que mostrar el mensaje X ºF corresponden a HIELO.
- Si la temperatura calculada está por encima de 100 ºC, tendrá que mostrar el mensaje X ºF corresponden a VAPOR.
donde X es la temperatura en grados Farenheit, escrita con dos decimales.
Si llamamos c a la temperatura que hemos calculado en grados Celsius y f a la temperatura que introduce el usuario en grados Farenheit, en la práctica anterior tendremos que haber escrito un trozo de código parecido al siguiente:
if c >= 0 && c <= 100
fprintf('AVISO: La temperatura %.2f F está entre 0 C y 100 C\n', f);
endComo ya sabemos, la sentencia if también admite una cláusula else, para ejecutar comandos si no se cumple la condición. En nuestro caso, cuando no se cumple la condición tenemos que mostrar un mensaje, HIELO o VAPOR, que dependerá del valor de la temperatura c. Es decir, el programa modificado puede ser inicialmente el siguiente:
if c >= 0 && c <= 100
fprintf('AVISO: La temperatura %.2f F está entre 0 C y 100 C\n', f);
else
% Muestra VAPOR si c es mayor que 100
% O muestra HIELO si c es menor que 0
endSi quieres usar el programa automático que comprueba si la práctica es correcta, tienes que usar el comando fprintf para mostrar los mensajes. Por ejemplo, para mostrar el mensaje HIELO tienes que escribir:
fprintf('%.2f corresponden a HIELO\n', f);
| |
Tarea: | Modifica el programa de la práctica anterior, sustituyendo parte del código escrito en la práctica anterior con el trozo de código que se muestra en el párrafo de encima. Sustituye los comentarios dentro de la cláusula else por el código que creas necesario para realizar las modificaciones pedidas. Las pistas necesarias para saber cómo modificar el programa se dan en el vídeo Prog12: Condiciones (if anidados) |
3.1 Ejemplo de ejecución
Si el usuario introduce 5 como valor de entrada, tu programa debe producir la siguiente salida:
5.00 F corresponden a HIELO El equivalente a 5.00 F en grados Celsius es -15.00 C
Si introduce 150, debe producir la siguiente salida
AVISO: La temperatura 150.00 F está entre 0 C y 100 C El equivalente a 150.00 F en grados Celsius es 65.56 C
Si introduce 1000, debe producir la siguiente salida
1000.00 ºF corresponden a VAPOR El equivalente a 1000.00 F en grados Celsius es 537.78 C
4 Comprobación de la práctica
Puedes comprobar si tu programa es correcto usando este programa: CompruebaPr09.m
Dale al botón derecho y elige guardar como. Cópialo en el mismo directorio donde hayas guardado la solución de la práctica. Luego puedes comprobar si tu programa es correcto escribiendo
CompruebaPr09('miSolucion');En este caso, la solución de la práctica está guardada en un fichero llamado miSolucion.m. Cambia el nombre al llamar a CompruebaPr09 si tu programa se llama diferente.
El programa no comprueba ninguna parte del programa desarrollada en alguna práctica anterior, solo comprueba si el mensaje se muestra cuando la temperatura está entre 0ºC y 100 ºC, o si se muestran los mensajes correspondientes cuando la temperatura está por debajo de 0 ºC o por encima de 100 ºC. Se probarán diferentes temperaturas, y se mostrará si el resultado es el esperado (mensaje que empieza por OK). Si en algún caso no es el esperado, mostrará un mensaje que empieza por WARN o por ERR.
5 Ejercicio post-práctica
Además de else, existe otra cláusula, denominada elseif que facilita la lectura del código cuando existen muchos if anidados. Modifica tu programa para que use las cláusulas elseif necesarias, de modo que no haya if anidados.
Consulta la documentación de MATLAB sobre elseif y la Octave también, para averiguar cómo aplicarlo a tu programa.