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