06a-Est de control selectivas

Anuncio
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
Descargar