3. Sentencia `if`

Anuncio
Sentencias de control
Fundamentos de Informática
EUP-ULPGC
Jose Torres
Introducción
Programa: secuencia de instrucciones =>
flujo de ejecución = orden en que se ejecutan
Hasta ahora ejecución secuencial = orden en el que aparecen
en el texto del programa
Esto es limitado, necesitamos:
- ejecutar conjunto de instrucciones solo si se cumple una
condición (expresión booleana)
- repetir un conjunto de instrucciones un número de veces
Existen sentencias de control (de flujo) para expresar los
distintos flujos de ejecución
Fundamentos de Informática
EUP-ULPGC
Jose Torres
Tipos de flujos de ejecución que son implementados mediante
sentencias de control:
− secuencia: ejecución sucesiva de dos o más operaciones;
Una instrucción detrás de otra separadas por ‘;’
− selección: se realiza una u otra operación, dependiendo de
una condición
Sentencias ‘if’, ‘if-else’ y ‘switch’
− iteración: repetición de una operación mientras se cumpla una
condición (bucle)
Sentencias ‘while’, ’for’ y ’do-while’
Fundamentos de Informática
EUP-ULPGC
Jose Torres
Fundamentos de Informática
EUP-ULPGC
Jose Torres
Sentencia if (selección)
Forma general:
if (expresion)
instrucción;
Si la expresion lógica es verdadera (valor mayor que 0) => se
ejecuta la instrucción
La expresion debe estar entre paréntesis
Si se cumple la condición se ejecuta la instrucción
Si no se cumple no se ejecuta y se pasa a la siguiente instrucción
Fundamentos de Informática
EUP-ULPGC
Jose Torres
La instrucción puede ser compuesta = secuencia de
instrucciones entre llaves
if (expresión)
{
instrucción_1;
instrucción_2;
...
instrucción_n;
}
Si se cumple la condición se ejecutan las instrucciones
Si no se cumple no se ejecutan y se pasa a la siguiente
instrucción después de ‘}’
Fundamentos de Informática
EUP-ULPGC
Jose Torres
Diagrama de flujo:
Fundamentos de Informática
EUP-ULPGC
Jose Torres
Ejemplo 1: programa que lee un número y comprueba si es
mayor que cero
#include <stdio.h>
main()
{
int numero;
/* leer el numero */
printf("Introduzca un numero: ");
scanf("%d", &numero);
if (numero > 0)
printf("El numero %d es mayor que cero.\n", numero);
if (numero <= 0)
printf("El numero %d no es mayor que cero.\n", numero);
}
Fundamentos de Informática
EUP-ULPGC
Jose Torres
Ejemplo 2: programa que lee un número y lo eleva al cuadrado
si es >0
#include <stdio.h>
main()
{
int numero, cuadrado;
/* leer el numero */
printf("Introduzca un numero: ");
scanf("%d", &numero);
if (numero > 0)
{
cuadrado = numero * numero;
printf("El cuadrado de %d es %d.\n", numero, cuadrado);
}
if (numero <= 0) printf("El numero no es mayor que 0.\n”);}
Fundamentos de Informática
EUP-ULPGC
Jose Torres
Sentencia if-else (selección)
Forma ampliada de la sentencia if
Forma general:
if (expresión)
intrucción_1;
else
intrucción_2;
Si expresión es:
- verdadera (valor mayor que 0) => se ejecuta intrucción_1
- falsa (valor igual a 0) => se ejecuta intrucción_2
Fundamentos de Informática
EUP-ULPGC
Jose Torres
Si las sentencias son compuestas se ponen entre llaves
if (expresión)
{
intrucción_1a;
intrucción_2a;
…
intrucción_na;
}
else
{
intrucción_1b;
intrucción_2b;
…
intrucción_mb;
}
Fundamentos de Informática
EUP-ULPGC
Jose Torres
Sentencia if-else, diagrama de flujo:
Fundamentos de Informática
EUP-ULPGC
Jose Torres
Ejemplo : programa que lee un número e indica si es mayor que
cero:
#include <stdio.h>
main()
{
int numero;
/* leer el numero */
printf("Introduzca un numero: ");
scanf("%d", &numero);
if (numero > 0)
printf("El numero %d es mayor que cero.\n", numero);
else
printf("El numero %d no es mayor que cero.\n", numero);
}
Fundamentos de Informática
EUP-ULPGC
Jose Torres
Ejemplo : programa que lee un número y calcula el cuadrado si
es mayor que cero y el cubo si no lo es
#include <stdio.h>
main()
{
int numero, resultado;
/* Leo el número */
printf("Introduzca un numero: ");
scanf("%d", &numero);
…
Fundamentos de Informática
EUP-ULPGC
Jose Torres
if (numero > 0)
{
printf("\nEl numero %d es mayor que cero. Calculo el
cuadrado\n", numero);
resultado=numero*numero;
}
else
{
printf("\nEl numero %d no es mayor que cero. Calculo el
cubo\n\n", numero);
resultado=numero*numero*numero;
}
printf(“El resultado es %d”, resultado);
}
Fundamentos de Informática
EUP-ULPGC
Jose Torres
Se puede usar el if-else para seleccionar la operación a realizar
#include <stdio.h>
main()
{
int oper_1, oper_2, resultado;
char opcion;
/* ¿Qué operación? */
printf(“Presiona ‘s’ para sumar y ‘m’ para multiplicar “);
scanf(“%c”, &opcion);
/* Leo el primer operando*/
printf("\nIntroduce el primer operando: ");
scanf("%d", &oper_1);
Fundamentos de Informática
EUP-ULPGC
Jose Torres
/* Leo el segundo operando*/
printf("Introduce el segundo operando: ");
scanf("%d", &oper_2);
if (opcion == ‘s’)
{
resultado = oper_1 + oper_2;
printf(“\nLa suma es %d “, resultado);
}
else
{
resultado = oper_1 * oper_2;
printf(“\nEl producto es %d“, resultado);
}
}
Fundamentos de Informática
EUP-ULPGC
Jose Torres
Las instrucciones dentro de un if-else pueden ser a su vez
sentencias if-else
if (e1)
S1
else
if (e2)
S2
else
S3
El funcionamiento sería:
− si e1 es verdadera se ejecuta S1
− si e1 es falsa y e2 es verdadera se ejecuta S2
− si e1 es falsa y e2 es falsa se ejecuta S3
Fundamentos de Informática
EUP-ULPGC
Jose Torres
Ejemplo: comprobar si un número es menor, mayor o igual que 0
#include <stdio.h>
void main() {
int numero;
printf("Introduzca un numero: ");
scanf("%d", &numero);
if (numero < 0)
printf (“El numero es menor que cero.\n”);
else
if (numero > 0)
printf (“El numero es mayor que cero.\n”);
else
printf (“El numero es igual que cero.\n”); }
Fundamentos de Informática
EUP-ULPGC
Jose Torres
falso
falso
(numero < 0)
verdadero
(numero > 0)
verdadero
printf (“El numero es menor que cero.\n”);
printf (“El numero es mayor que cero.\n”);
printf (“El numero es igual que cero.\n”);
Este sería el diagrama de flujo del ejemplo anterior
Fundamentos de Informática
EUP-ULPGC
Jose Torres
Descargar