Estructuras de decisión en C INFORMATICA I Estructuras de decisión en C CLASE 11
Chiste del día
AGENDA Introducción Introducción Sentencia if Sentencia if else 1 Introducción 1 Introducción 2 Sentencia if 3 Sentencia if else 4 Sentencia if anidada 5 Sentencia switch
Estructuras de Control Introducción Estructuras de Control Las estructuras de control, son aquellas que permiten controlar el flujo de ejecución de un programa Tres tipos de Estructuras: Secuencial De selección Cíclicas o de repetición
ESTRUCTURAS DE DECISIÓN LÓGICA Estas estructuras se usan para la toma de decisiones lógicas. Son usadas para elegir entre diferentes alternativas de acción.
Estructura Condicional Se utiliza para indicarle al computador que debe evaluar una condición y, a partir del resultado, ejecutar un bloque de instrucciones correspondiente. La forma más común está compuesta por: Una proposición (condición) que se evalúa Operadores relacionales (<,<=, ==,>, >=,!=) Dos bloques de instrucciones que se ejecutan, Uno cuando la condición es verdadera Y otro cuando ésta es falsa.
Estructura Condicional Las proposiciones pueden ser sencillas o compuestas. Las proposiciones compuestas se forman con dos o más proposiciones sencillas unidas por los operadores lógicos (y, o, no). La estructura condicional tiene dos variantes: • Selección doble. • Selección múltiple.
ESTRUCTURA CONDICIONAL DE SELECCIÓN MÚLTIPLE Se quiere tener una acción por cada posible valor de una variable, mas de dos elecciones posibles. switch (selector) { case val1: Instrucciones1; break; case val2: Instrucciones2; … case valN: InstruccionesN; default: InstruccionesDefault; }
AGENDA Introducción Sentencia if Sentencia if Sentencia if else 1 Introducción 2 Sentencia if 2 Sentencia if 3 Sentencia if else 4 Sentencia if anidada 5 Sentencia switch
Sentencia if (estructura condicional) Es la estructura de control mas utilizada. if (condicionVerdadera) { instrucciones1; } else instrucciones2; Si condicion entonces instrucciones1 SiNo instrucciones2 Fin_si Nota: las {} no son necesarias cuando el bloque de instrucciones solo contiene una sola instrucción
If: de una sola condición Sentencia if If: de una sola condición if (condicionVerdadera) { instrucciones; } Ejemplo: Realizar un programa que diga si un numero ingresado es mayor. Menor o igual a un segundo dato ingresado. Programa que dice si dos números enteros son divisibles entre si
If: de una sola condición Sentencia if #include <stdio.h> int main (void) { float num1,num2; / * comparar número introducido por usuario * / printf(“Introduzca un primer número: " ) ; scanf ("%f",&num1); printf(“Introduzca el segundo numero: " ) ; scanf ("%f",&num2); / * comparar número */ if (num1> num2) printf ("%f es mayor que %f\n",num1,num2); if (num1< num2) printf ("%f es mayor que %f\n", num1,num2); if (num1== num2) printf ("%f es igual %f\n",num1, num2); return 0; } If: de una sola condición
If: de una sola condición Sentencia if If: de una sola condición if (condicionVerdadera) { instrucciones; } Ejemplo: Realizar un programa que diga si un numero ingresado es mayor. Menor o igual a un segundo dato ingresado. Programa que dice si dos números enteros son divisibles entre si
If: de una sola condición Sentencia if #include <stdio.h> int main (void) { int n, d; printf ( "Introduzca dos enteros: " ) ; scanf ("%d %d",&n,&d); if (n%d == 0) printf ( " %d es divisible por %d\n",n,d); return 0; } If: de una sola condición
AGENDA Introducción Sentencia if Sentencia if else Sentencia if else 1 Introducción 2 Sentencia if 3 Sentencia if else 3 Sentencia if else 4 Sentencia if anidada 5 Sentencia switch
If: de dos alternativas Sentencia if else If: de dos alternativas if (condicionVerdadera) { Instrucciones1 } else Instrucciones2 Ejemplo: Realizar un programa que sabiendo la nota diga si un alumno perdió o ganó la materia de informática.
If: de dos alternativas #include <stdio.h> int main(void) { float nota; /* comparar número introducido por usuario* / printf(“Introduzca la nota: " ) ; scanf ("%f",¬a); if (nota>=3.0){ printf("El estudiante Ganó la materia"); } else printf("El estudiante NO Ganó la materia"); return 0; Sentencia if else If: de dos alternativas
AGENDA Introducción Sentencia if Sentencia if else 1 Introducción 2 Sentencia if 3 Sentencia if else 4 Sentencia if anidada 4 Sentencia if anidada 5 Sentencia switch
Sentencia if anidada If: anidados if (condicion1) { Instrucciones1 } else if (condicion2){ Instrucciones2 . else if (condicionN){ InstruccionesN else{ InstruccionesE Se utilizan cuando interesa realizar acciones que involucren mas De dos alternativas
Sentencia if anidada If: anidados Ejemplo: Realizar un programa que reciba un numero de 1 a 7 y que diga cual dia de la semana corresponde a este numero. Programa que dice si un numero es mayor, es menor, o es igual a cero
AGENDA Introducción Sentencia if Sentencia if else 1 Introducción 2 Sentencia if 3 Sentencia if else 4 Sentencia if anidada 5 Sentencia switch 5 Sentencia switch
Sentencia switch Selección de una entre múltiples alternativas. la selección se basa en el valor de una variable simple o de una expresión simple denominada expresión de control o selector. El valor de esta expresión puede ser de tipo int o char, pero no de tipo float ni double
Sentencia switch Sentencia switch
Sintaxis switch (selector) { segun selector haga case val1: val1: Sentencia switch Sintaxis switch (selector) { case val1: Instrucciones1; break; case val2: Instrucciones2; … case valN: InstruccionesN; default: InstruccionesDefault; } segun selector haga val1: lista de instrucciones 1 val2: lista de instrucciones 2 …. valN: lista de instrucciones N otrosValores: lista de instrucciones otros Fin segun
Sentencia switch Sentencia switch Es una alternativa para los IF anidados. Cuando se quiere evaluar una variable para mas de dos valores. if (condicion1) { Instrucciones1 } else if (condicion2) Instrucciones2 . else if (condicionN) InstruccionesN else InstruccionesE switch Variable { case Val1: Instrucciones1 break; case Val2: Instrucciones2 ……. case ValN: InstruccionesN default: InstruccionesDefault }
Sentencia switch Ejemplo: (Comparación switch con if-else-if). Realizar un programa que reciba un numero de 1 a 7 y que diga cual dia de la semana corresponde a este numero. Realice un programa que muestre si una letra ingresada es vocal o no
Ejemplo if ((car == 'a') || (car == 'A')) Sentencia if if ((car == 'a') || (car == 'A')) printf ( "%c es una vocal\n",car) ; else if ((car == 'e') || (car == 'E')) printf ( "%c es una vocal\n",car); else if ((car == 'i') || (car == '1')) printf ( "%c es una vocal\n",car else if ((car == 'o') || (car == 'O')) printf ( "%c es una vocal\n", car) ; else if ((car == 'u') || (car == 'U')) else printf ( "%c no es una vocal\n",car);
Ejemplo switch (car) { case ´a´: case ´A´: case ´e´: case ´E´: Sentencia if switch (car) { case ´a´: case ´A´: case ´e´: case ´E´: case ´i´: case ´I´: case ´o´: case ´O´: case ´u´: case ´U´: printf (“La letra %c es una vocal\n”,car); break; default: printf(“La letra %c NO es una vocal\n”,car); }
Sentencia switch if vs switch Cualquier código con estructura switch se puede reemplazar con una estructura if y sus variantes (Lo contrario a veces es impractico). 1 La ventaja del Switch es que es más claro. 2 Útil para la implementación de Menus. 3 Más rápido en ejecución
Bibliografía Joyanes Aguilar, Luis. PROGRAMACIÓN EN C. Metodología, algoritmos y estructura de datos Capitulo3. H.M. Deitel, P.J. Deitel. Como programar en C y C++ Google
GRACIAS POR SU ATENCIÓN