La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

CI TEORIA semana 4 Estructura Algorítmica: SELECCIÓN

Presentaciones similares


Presentación del tema: "CI TEORIA semana 4 Estructura Algorítmica: SELECCIÓN"— Transcripción de la presentación:

1 CI TEORIA semana 4 Estructura Algorítmica: SELECCIÓN Selección Simple: “SI” Ejemplo en C: if Selección Doble: “SI-SINO” Ejemplo en C: if – else Selección Doble en cascada: “SI-SINO-SI” Ejemplo en C: if – else { if – else { … } …. } Selección Múltiple: “SEGÚN” Ejemplo en C: switch

2 Expresiones Lógicas en C
#include <stdio.h> #define TRUE 1 #define FALSE 0 void main() { int a,b,x,y; /* se declaran de tipo entero */ x =5; y = 10; a = TRUE; b = a && x; printf(“b= %d\n”, b ); b = a && y; b = x == y; b = a && x != y; } Cualquier variable entera con un valor distinto de cero, se considera Verdadera Resultado: b = TRUE b = FALSE

3 Expresiones Lógicas en C
/* Aplicación de Operadores en C */ #include <stdio.h> #define TRUE 1 #define FALSE 0 void main() { int i= 15, j, k, l; j = (( 15 > i--) > ( 14 < ++i )) && TRUE; printf(“\nEl valor de j es: %d”, j); k = ! ( ‘b’ != ‘d’ ) > ( i – 16 ); printf(“\nEl valor de k es: %d”, k); l = ( ! ( 34 > ( 70 % 2 )) || FALSE ); printf(“\nEl valor de l es: %d ”, l); } Que imprime Este programa ?? Imprime: El valor de j es: 0 El valor de k es: 1 El valor de l es: 0

4 Estructura de Selección Simple “SI”
acción condición F V Pseudocódigo (acción simple) SI ( condición )    acción a Pseudocódigo (acción compuesta) SI ( condición ) {    acción 1    acción 2             acción n } En C: If ( condición ) { sentencia_1; sentencia_2; } If ( condición )     sentencia_1;

5 Estructura de Selección Simple “SI”
Problema: Codificar un programa que al recibir el promedio de un alumno en un curso, escribe “Aprobado” si el promedio es mayor o igual a 6 Análisis: Entrada: Se recibe variable de tipo real que representa el promedio del alumno. Pre-condición: dato real. Salida: Se debe imprimir si esta aprobado si se cumple la condición establecida, con el formato “Aprobado” Proceso: Si se cumple la expresión lógica ‘el promedio es mayor o igual a 6’, entonces se imprimirá “Aprobado”. Sea Pro la variable real que representa el promedio Diagrama de Flujo 2 1 INICIO Pro Pro >= 6 “Aprobado” FIN V F Verificación: Corrida Dato Pro Resultado ,75 “Aprobado” ,90 ,00 ,80 “Aprobado” 3

6 Estructura de Selección Simple “SI”
Problema: Codificar un programa que al recibir el promedio de un alumno en un curso, escribe “Aprobado” si el promedio es mayor o igual a 6 Diagrama de Flujo 2 Codificación en Lenguaje C /* Promedio curso: El programa recibe como dato el promedio de un alumno en un curso , escribe “Aprobado” si su promedio es mayor o igual a 6 */ #include <stdio.h> #define VALOR 6 void main() { float Pro; printf( "Ingrese el promedio del curso: \a \n " ); scanf( "%f", &Pro ); if ( Pro >= VALOR) printf( " \”Aprobado\” \n" ); } 4 INICIO Pro Pro >= 6 “Aprobado” FIN V F

7 Estructura de Selección Doble “SI – SINO”
Pseudocódigo (acción simple) SI ( condicion) acciona SINO    accionb Pseudocódigo (acción compuesta) SI ( condicion ) {    acciona1          accionan } SINO {    accionb1          accionbn } V F condición acción A acción B En C: If ( condición ) {     sentencia_1; sentencia_2; } else { sentencia_3; sentencia_4; If ( condición )     sentencia_1; else sentencia_2;

8 Estructura de Selección Doble “SI – SINO”
Problema: Codificar un programa que al recibir el promedio de un alumno en un curso, escribe “Aprobado” si el promedio es mayor o igual a 6, sino escribir “Reprobado” Análisis: Entrada: Se recibe variable de tipo real que representa el promedio del alumno. Pre-condición: dato real. Salida: Se debe imprimir si esta aprobado si se cumple la condición establecida, con el formato “Aprobado”, sino “Reprobado” Proceso: Si se cumple la expresión lógica ‘el promedio es mayor o igual a 6’, entonces se imprimirá “Aprobado, sino “Reprobado” Sea Pro la variable real que representa el promedio Diagrama de Flujo 2 1 INICIO Pro Pro >= 6 “Reprobado” FIN V F “Aprobado” Verificación: Corrida Dato Pro Resultado ,75 “Aprobado” ,90 “Reprobado” ,00 “Reprobado” ,80 “Aprobado” 3

9 Estructura de Selección Doble “SI – SINO”
Problema: Codificar un programa que al recibir el promedio de un alumno en un curso, escribe “Aprobado” si el promedio es mayor o igual a 6, sino escribir “Reprobado” Diagrama de Flujo 2 Codificación en Lenguaje C /* Promedio curso: El programa recibe como dato el promedio de un alumno en un curso , escribe “Aprobado” si su promedio es mayor o igual a 6, sino escribe “Reprobado” */ #include <stdio.h> #define VALOR 6 void main() { float Pro; printf( "Ingrese el promedio del curso: \a \n " ); scanf( "%f", &Pro ); if ( Pro >= VALOR) printf( " \”Aprobado\” \n" ); else printf( " \”Reprobado\” \n" ); } 4 INICIO Pro Pro >= 6 “Reprobado” FIN V F “Aprobado”

10 Estructura de Selección Doble en Cascada “SI-SINO-SI”
Pseudocódigo ( accion simple ) SI ( condicion1 )     accion1 SINO     SI ( condicion2 )         accion2     SINO          SI ( condicion3 )             accion3         .         .                   .         SINO             acciondefecto

11 Estructura de Selección Doble en Cascada “SI-SINO-SI”
Pseudocódigo ( accion compuesta) SI ( condicion1 ) {     acciona1 accionan } SINO     SI ( condicion2 ) {         accionb … accionbn }     SINO          .         .                   SINO {             acciondefecto1 …. acciondefecton En C: If ( condición_a )          sentencia_a; else     if ( condición_b )          sentencia_b;     else                  sentencia_por_defecto; If ( condición_a )  {        sentencia_a1; sentencia_a2; } else if ( condición_b ) {         sentencia_b1; sentencia_b2;    } else                  sentencia_por_defecto;

12 Estructura de Selección Doble en Cascada “SI-SINO-SI”
Problema: Codificar un programa que al recibir un numero entero, determine si pertenece al intervalo (10,100) e imprimir “Si pertenece”, de lo contrario imprimir “No pertenece” Análisis: Entrada: Se recibe variable de tipo entera, num. Salida: Se debe imprimir “Si pertenece” si num pertenece a (10,100) de lo contrario se imprime “No pertenece” Proceso: El algoritmo debe determinar si la variable num, se encuentra dentro o fuera del intervalo, para lo cual se usa una estructura de selección en cascada. Verificamos si el num <= 10, si 0 < num < 100, o si por defecto num > = 100, en cuyos casos se imprime lo que corresponda. 1 Diagrama de Flujo 2 INICIO num num <= 0 FIN V F “No pertenece” (num >0) y (num<100) “Si pertenece”

13 Estructura de Selección Doble en Cascada “SI-SINO-SI”
Verificación: Corr num Resultado “No pertenece” “Si pertenece” “Si pertenece” “No pertenece” 3 Codificación 4 /* Programa que determina si num pertenece al intervalo (10,100) */ #include <stdio.h> #define RANGO_INF 10 #define RANGO_SUP 100 void main() { int num; printf( "Introduce un número " ); scanf( "%i", &num ); if ( num < RANGO_INF ) printf ( “No pertenece \n" ); else if ( (num>RANGO_INF) && (num<RANGO_SUP) ) printf ( “Si pertenece \n" ); else printf( “No pertenece \n" ); }

14 Estructura de Selección Doble en Cascada “SI-SINO-SI”
Problema: Leer los datos de las ventas de tres vendedores de una tienda de discos, escribir las mismas en forma descendente” Análisis: Entrada: Se reciben tres variables de tipo flotante, p, s y r. Salida: Se deben imprimir las mismas variables ordenadas descendentemente, es decir, de mayor a menor. Proceso: El algoritmo debe comparar las variables entre si y determinar la mayor de todas, y luego compara las dos restantes y determina la mayor de estas dos y encontrar asi la intermedia y la menor. Para esto, se usa una estructura de selección en cascada, que permite comparar dos variables, p > s ?, si es verdad, entonces compara p > r ?, si esto es verdad, compara s > r ?, si todo esto se cumple, es decir p>s>r es Verdadero, entonces imprime p, s, r. Esto es una sola rama del árbol que se genera en la estructura de selección en cascada. De las diferentes ramas salen todos los posibles casos: p>r>s, r>p>s, r>s>p, s>p>r, s>r>p, 1

15 Estructura de Selección Doble en Cascada “SI-SINO-SI”
Problema: Leer los datos de las ventas de tres vendedores de una tienda de discos, escribir las mismas en forma descendente 2 Diagrama de Flujo INICIO p, s, r p > s FIN V F p > r s > r p, r, s r, p, s s, p, r s, r, p r, s, p Verificar ! 3

16 Estructura de Selección Doble en Cascada “SI-SINO-SI”
/* Imprime en orden descendente, 3 valores de ventas */ #include <stdio.h> void main() { float p, s, r; printf( "Ingrese las ventas de los tres vendedores" ); scanf( "%f %f %f", &p, &s, &r ); if ( p > s ) if ( p > r ) if ( s > r ) printf(“\n El orden es: %f %f %f”,p,s,r); else printf(“\n El orden es: %f %f %f”,p,r,s); else printf(“\n El orden es: %f %f %f”,r,p,s); else if ( s > r ) printf(“\n El orden es: %f %f %f”,s,p,r); printf(“\n El orden es: %f %f %f”,s,r,p); else printf((“\n El orden es: %f %f %f”,r,s,p); } 4 Codificación en C:

17 Estructura de Selección Múltiple “SEGÚN”

18 Estructura de Selección Múltiple “SEGÚN”
selector valor1 valor2 Valor3, valor4 valor5 valorx acción 1 acción 2 acción 3 acción 5 acción x

19 Estructura de Selección Múltiple “SEGÚN”
Pseudocódigo ( acción simple ) SEGÚN ( selector ) {      CASO c1 : accion1      CASO c2 : accion2      CASO c3 : accion3                .                .                .      CASO cn : accionn      DEFECTO : acciondefecto } Pseudocódigo ( acción compuesta) SEGÚN ( selector ) {      CASO c1 : { acciona1 accionan }      CASO c2 : accion2      CASO c3 : accion3                .                .                .      CASO cn : accionn      DEFECTO : acciondefecto }

20 Estructura de Selección Múltiple “SEGÚN”
Código en C: /* Ejemplo switch */ int numero; /* 1 es Primavera…*/ char nombreEst; /* estaciones */ switch (numero) {     case 1  : nombreEst = ‘P’; break;     case 2  : nombreEst = ‘V’;     case 3  : nombreEst = ‘O’;     default : nombreEst = ‘I’; }     switch ( selector ) {     case c1: acción_c1; acción_c11; break;     case c2: acción_c2;     case c3: acción_c3; acción_c31 . . case cn: acción_cn;     default : accion_defecto; /*opcional*/ }    

21 Estructura de Selección Múltiple “switch”
#include <stdio.h> int main() { int num; printf( "Introduce un número " ); scanf( "%i", &num ); switch( num ) case 1: printf( "Es un 1\n" ); break; case 2: printf( "Es un 2\n" ); case 3: printf( "Es un 3\n" ); default: printf( "No es ni 1, ni 2, ni 3\n" ); } #include <stdio.h> int main() { int num; printf( "Introduce un número " ); scanf( "%i", &num ); if ( num==1 ) printf( "Es un 1\n" ); else if ( num==2 ); printf( "Es un 2\n" ); else if ( num==3 ) printf( "Es un 3\n" ); else printf( "No era ni 1, ni 2, ni 3\n“); } múltiples casos con if-else con switch

22 Estructura de Selección Múltiple “switch”
Problema: Construir diagrama de flujo y el programa en C, que al recibir como datos dos variables enteras, Obtenga el resultado de evaluar la siguiente función | t/5, si Op = 1 | t ** t, si Op = 2 F(t) = | 6*t/2, si Op=3, 4 | 1, para cualquier otro caso Análisis: Entrada: Se reciben dos variables enteras, Op representa el tipo de operación a realizar, y t el valor que se usa para el calculo de la función Salida: Se deben imprimir el resultado de la función f(t), para Op y t dado. Proceso: El algoritmo debe comparar el valor de Op, contra las opciones dadas por la función, que son: 1,2,3,4, y cualquier otro caso, y en cada caso realizar el calculo correspondiente de la función para el t dado. Para esto usaremos una estructura de selección múltiple “Según”. 1

23 Estructura de Selección Múltiple “switch”
2 Diagrama de Flujo INICIO Op, t Op 1 2 3, 4 otro cal  t/5 cal  t**t cal  6*t/2 cal  1 Op, t, cal FIN Verificar ! 3

24 Estructura de Selección Múltiple “switch”
/* funcion matematica, El programa obtiene el resultado de una funcion */ #include <stdio.h> #include <math.h> void main() { int Op, t; float cal; printf( "Ingrese la opcion del calculo de la función y el valor a calcular" ); scanf( "%d %d", &Op, &t ); switch( Op ) case 1: cal = t/5; break; case 2: cal = pow(t,t); break; case 3: case 4: cal = 6*t/2; break; default: cal = 1; break; } printf( “Resultado f(%d) = %f, para Op=%d \n“, t, cal, Op ); 4 Codificación en C:

25 Estructura de Selección Múltiple “SEGÚN”
#include <stdio.h> #define TRUE 1 int main() { int mes, dias, bisiesto; /* bisiesto es TRUE si el año es bisiesto */ bisiesto = TRUE; /* suponemos que el año es bisiesto */ printf( "Introduce el numero del mes \n “); scanf( "%i", &mes ); switch( mes ) case 1: /* los meses enero, marzo, mayo, julio, agosto, octubre y diciembre tienen 31 dias */ case 3: case 5: case 7: case 8: case 10: /* verificar la sintaxis del compilador DevC++, lineal o cada case debajo del otro */ case 12: dias = 31; break; case 2: if ( bisiesto ) dias = 29; else dias = 28; default: dias = 30; } printf ( “Dias del mes son %d\n “,dias); Dado el numero del mes Determinar numero de días Se supone año bisiesto


Descargar ppt "CI TEORIA semana 4 Estructura Algorítmica: SELECCIÓN"

Presentaciones similares


Anuncios Google