Estructuras de control • Controlan el flujo de un algoritmo Tema 6a – Secuencial – Selectiva – Repetitiva Estructuras de control Secuenciales y selectivas Secuencial Secuencial 1 k ( x − m) 2 f ( x) = 1 + k ( x − m) 2 1 2 2 3 3 4 4 Secuencial Secuencial #include <stdio.h> Pedir valor de k Ingresar valor de k Pedir valor de m Ingresar valor de m Pedir valor de x Ingresar valor de x Calcular aux = k*(x-m)*(x-m) Pedir valor de k Ingresar valor de k Pedir valor de m Ingresar valor de m Pedir valor de x Ingresar valor de x Calcular aux = k*(x-m)*(x-m) Calcular f = aux/(1+aux) Mostrar valor de f(x) void main(){ //f(x) = (k*(x-m)^2) / (1+k*(x-m)^2) double f=0,x=0,aux=0; int k=0,m=0; printf("Ingrese valor de k: "); scanf("%d",&k); printf("Ingrese valor de m: "); scanf("%d",&m); printf("Ingrese valor de x: "); scanf("%lf",&x); aux=k*(x-m)*(x-m); f= aux/(1+aux); printf("f(%0.2f)=%f\n",x,f); Calcular f = aux/(1+aux) Mostrar valor de f(x) } 1 Selectiva (si-entonces) 1 1 2 2 Selectiva (si-entonces) instruccion1; if(condicion) instrucción2; instrucción 3 instrucción1; if(condicion){ instrucción2; instrucción3; instrucción4; } Instrucción5; C C si 3 no 3 4 4 “evaluable” a verdadero o falso Palabra reservada Selectiva (si-entonces) Bloque Selectiva (si-entonces) Ingresar valor de x k ( x − m) 2 f ( x) = 1 + k ( x − m) 2 0 x>0 si x>0 Ingresar valor de x no Calcular aux = k*(x-m)*(x-m) etoc x>0 si Calcular aux = k*(x-m)*(x-m) Calcular f = aux/(1+aux) Mostrar valor de f(x) no Calcular f = aux/(1+aux) Mostrar valor de f(x) Selectiva (si-entonces) Selectiva (si-entonces-sino) void main(){ //f(x) = (k*(x-m)^2) / (1+k*(x-m)^2) double f=0,x=0,aux=0; … printf("Ingrese valor de x: "); scanf("%lf",&x); if(x>0){ aux=k*(x-m)*(x-m); f= (aux/1+aux); } printf("f(%0.2f)=%f\n",x,f); } si 1 1 2 2 C 3a C no si 3b no 3a 3b 4 4 2 Selectiva (si-entonces-sino) instruccion1; if(condicion) instrucción2; else instrucción 3 Instruccion4; Palabra reservada “condicion” verdadera instrucción1; if(condicion){ instrucción2; instrucción3; instrucción4; }else{ instrucción5; instrucción6; } Instrucción7; “condicion” falsa Selectiva (si-entonces-sino) k ( x − m) 2 2 1 + k ( x − m) 0 f ( x) = 2 k ( x + m) 1 − k ( x + m) 2 – Diagramas de flujo – Diagramas de caja instruccion1; if(condicion1) instrucción2; else if(condicion2) instrucción 3 else if(condicion3) instruccion4; Instrucción 5; instruccion1; if(condicion1){ instrucción2; }else{ if(condicion2){ instrucción 3 }else{ if(condicion3){ instruccion4; } } } instrucción 5; Selectiva (si-entonces-sino) … printf("Ingrese valor de x: "); scanf("%lf",&x); si x>0 si x=0 si x<0 Selectiva (si-entonces-sino) • Tarea Selectiva (si-entonces-sino) if(x>0){ aux=k*(x-m)*(x-m); f= aux/(1+aux); }else{ if(x<0){ aux=k*(x+m)*(x+m); f= aux/(1-aux); }else f=0; } printf("f(%0.2f)=%f [%f]\n",x,f,aux); … Selectiva (?) • Es un operados ternario • Extremadamente compacto • Muy útil para condiciones simples 3 Selectiva (?) Selectiva (?) #include <stdio.h> condicion?instruccion1:instruccion2; void main(){ int x=0; double f=0; scanf("%d",&x); f = x!=0?1/x:0; x!=0?printf("ok\n"):printf("error\n"); Se ejecuta si “condicion” es falsa Se ejecuta si “condicion” es verdadera printf("f(x)=1/x, f(%d)=%lf\n",x,f); } Selectiva (en el caso de) Selectiva (en el caso de) Variable por analizar c 1 A 2 B etoc C 3 C switch(<var>){ case <op1>: instruccion1; instruccion2; break; case <op2>: instruccion3; instruccion4; break; default : instruccion5; instruccion6; } D 1 2 3 etoc A B C D E E Selectiva (en el caso de) #include <stdio.h> void main(){ char opcion; printf("***************************\n"); printf("************MENU***********\n"); printf("* Ingrese opcion: *\n"); printf("* a) Saldo *\n"); printf("* b) Giro rapido *\n"); printf("* c) Cambio de clave *\n"); printf("***************************\n"); scanf("%c",&opcion); Palabras reservadas Termino de casos Valores de <var> Ìr al termino Selectiva (en el caso de) • Tarea – Diagramas de flujo – Diagramas de caja switch(opcion){ case 'a': printf("Saldo: $%d",10);break; case 'b': printf("Giro rapido: $%d",7000);break; case 'c': printf("Cambio clave: %s","nueva clave");break; default : printf("Error, comando desconocido");break; } } 4 Fin tema 6a Estructuras de control Secuenciales y selectivas 5