Tema 6a
Estructuras de control
Secuenciales y selectivas
Estructuras de control
• Controlan el flujo de un algoritmo– Secuencial– Selectiva– Repetitiva
Secuencial
3
4
2
1
3
4
2
1
Secuencial
2
2
)(1
)()(
mxk
mxkxf
Secuencial
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)
Pedir valor de kIngresar valor de kPedir valor de m
Ingresar valor de mPedir valor de x
Ingresar valor de xCalcular aux = k*(x-m)*(x-m)
Calcular f = aux/(1+aux)Mostrar valor de f(x)
Secuencial#include <stdio.h>
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);}
Selectiva (si-entonces)
C
3
4
2
1
3
si no
4
2
1
C
Selectiva (si-entonces)instruccion1;if(condicion)
instrucción2;instrucción 3
instrucción1;
if(condicion){
instrucción2;
instrucción3;
instrucción4;
}
Instrucción5;
Palabrareservada
Bloque
“evaluable”a verdadero o falso
Selectiva (si-entonces)
etoc
xmxk
mxkxf
0
0)(1
)()( 2
2
Selectiva (si-entonces)
Ingresar valor de x
Calcular aux = k*(x-m)*(x-m)
Calcular f = aux/(1+aux)
Mostrar valor de f(x)
x>0
Calcular aux = k*(x-m)*(x-m)Calcular f = aux/(1+aux)
Mostrar valor de f(x)
Ingresar valor de x
x>0si
si
nono
Selectiva (si-entonces)
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);}
Selectiva (si-entonces-sino)
C
3a 3b
4
2
1
si no
3a 3b
si no
4
2
1
C
Selectiva (si-entonces-sino)instruccion1;if(condicion)
instrucción2;else
instrucción 3Instruccion4;
instrucción1;
if(condicion){
instrucción2;
instrucción3;
instrucción4;
}else{
instrucción5;
instrucción6;
}
Instrucción7;
Palabrareservada
“condicion”verdadera
“condicion”falsa
Selectiva (si-entonces-sino)instruccion1;if(condicion1)
instrucción2;else if(condicion2)
instrucción 3else 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)
0)(1
)(00
0)(1
)(
)(
2
2
2
2
xsimxk
mxkxsi
xsimxk
mxk
xf
Selectiva (si-entonces-sino)…
printf("Ingrese valor de x: "); scanf("%lf",&x);
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);
}elsef=0;
} printf("f(%0.2f)=%f [%f]\n",x,f,aux);
…
Selectiva (si-entonces-sino)
• Tarea– Diagramas de flujo– Diagramas de caja
Selectiva (?)
• Es un operados ternario
• Extremadamente compacto
• Muy útil para condiciones simples
Selectiva (?)
condicion?instruccion1:instruccion2;
Se ejecuta si “condicion” es verdadera
Se ejecuta si “condicion” es falsa
Selectiva (?)
#include <stdio.h>
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");
printf("f(x)=1/x, f(%d)=%lf\n",x,f);}
Selectiva (en el caso de)
c
A B CD
1 32
etoc
E
A CB D
C
1 2 3 etoc
E
Selectiva (en el caso de)
switch(<var>){case <op1>:
instruccion1;instruccion2;break;
case <op2>:instruccion3;instruccion4;break;
default : instruccion5;instruccion6;
}
Palabrasreservadas
Terminode casos
Valores de<var>
Variablepor analizar
Ìr al termino
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);
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;
}
}
Selectiva (en el caso de)
• Tarea– Diagramas de flujo– Diagramas de caja
Fin tema 6a
Estructuras de control
Secuenciales y selectivas