Está en la página 1de 12

ESTRUCTURAS DE CONTROL SELECTIVAS

Estas estructuras se utilizan para la toma de decisiones dentro de un programa, y la


podemos clasificar en:
 Estructura selectiva simple ------ (si …… entonces)
 Estructura selectiva doble …… (si …. entonces …. sino…)
 Estructura selectiva anidada …. (si …. sino …. si …… sino …)
 Estructura selectiva múltiple …. (si múltiple o según sea ……)

Estructura de Control Selectiva simple (Condicional Simple)


Permite ejecutar una acción o grupo de acciones solo si se cumple una determinada
condición, es decir:

Diagrama de flujo

si
Pseudocodigo Condición
no
--
si (condición) A----
entonces -----
---- -----
---- -
----
----
fin_Si
---- B---
---- ---- B Es independiente de la
---- ---- condición
----

Donde la condición, es una condición o grupo de condiciones a evaluarse.


A: Representa la operación o grupo de operaciones a realizar
si la condición es verdadera.

Codificación en C++
Formato 1
Si el modulo A, tiene una sola instrucción o acción, no es
necesario encerrar entre llaves, es decir:
if (condition)
a1;
b1;
b2;
----

Formato 2
Si el modulo A tiene de 2 a más instrucción o acciones, se
debe tratar como un bloque, es decir encerrar entre llaves.
es decir:
if (condition)
a1;
a2;
---
---

b1;
b2;
----

Ejemplo
Si deseamos cambiar el signo de un número en caso de que sea negativo.

Pseudocódigo Código en C++


------- If (numero <0)
------
numero = -1*numero;
si (numero < 0)
entoces cout<<numero;
numero -1*numero
--------
finsi
Escribir numero -------
--------

ESTRUCTURA DE CONTROL SELECTIVA DOBLE (CONDICIONAL DOBLE)


Permite seleccionar una ruta de dos rutas posibles en base a
la verdad o falsedad de una condición. Es decir:
Diagrama de flujo

no Condició si
n

B----- A-----
-- --
---- ----
---- ----
---- ----
---- C----- ----
--
----
----
----
Pseudocódigo Codificación en C++ Formato2
---- Formato 1 ------
Si (condición) ------- If(condición)
entonces If(condición) a1;
a1 a1; a2;
a2 else ----
----- b1; an;
an c1;
Sino c2; else
b1 if(codicion) b1;
b2 a1; b2;
----- else -----
bn {b1; bn;
finsi b2;
c1 } c1;
c2 C1; c2;
…….. C2; ----
.---

Ejemplo.
Escribir un algoritmo para ingresar tres números, y determinar el mayor, menor y el
término medio;
Datos
Entrada Salida
Tres números: a,b,c: var. de tipo real Numero mayor: ma: real
Numero menor: me: real
Termino medio: ce :real
Psudocodigo Código C++
Algoritmo mayor_medio_menor int main()
Variables: {//Declracion de variables
real: a,b,c,ma,me,ce float a,b,c,ma,me,ce;
Inicio //Datos
// datos cout<<"Primer numero : ";
Escribir (“primer número : “) cin>>a;
Leer (a) out<<"Segundo numero : ";
Escribir (“segundo número : “) cin>>b;
Leer (b) out<<"Tercer numero : ";
Escribir (“tercer numero : “) cin>>c;
Leer (c) //Proceso
//proceso if(a>b)
Si (a>b) {ma=a;
entonces me=b;
ma<-a }
me<-b else
sino {ma=b;
ma<-b me=a;
me<-a }
finsi if(c>ma)
si (c>ma) ma=c;
entonces if(c<me)
ma<-c me=c;
finsi ce=(a+b+c)-(ma+me);
si (c<me) cout<<" mayor : "<<ma<<endl;
entonces cout<<" medio : "<<ce<<endl;
me<-c cout<<" menor : "<<me<<endl;
finsi getche();
ce<-(a+b+c)-(ma+me) return 0;
//salida }
Escribir (“Mayor : “,ma)
Escribir (“Medio : “,ce)
Escribir (“Menor : “,me)

Ejemplo
Elaborar un programa que pida el sueldo de un empleado y determine su bonificación

a) Si el Empleado gana menos de 500, la bonificaron será de 15%


b) Si el Empleado gana 500 o más, la bonificaron será del 10%

El programa deberá imprimir la bonificación que le corresponde a ese empleado junto


con su nuevo sueldo.
Datos

Entrada
Sueldo del trabajador : sueldo: v.real pseudocodigo
Salida algoritmo bonificación
Bonificación : bonif : v.real constantes:
Nuevo sueldo : tot v.real p15<- 0.15, p10<-0.1
variables
real: sueldo,bonif,tot
Código en C++ inicio
#include <iostream> //datos
#include <coni.h>
escribir (“Ingrese Sueldo : “)
using namespace std;
int main() leer (sueldo)
{
//proceso
float sueldo,bonif,tot ;
cout<<" Ingrese Sueldo: "; Si (sueldo >=500)
cin>>sueldo;
Entonces
if (sueldo>=500)
bonif= sueldo* 0.10; bonif<- sueldo*p10
else
Sino
bonif= sueldo*0.15;
tot= sueldo+ bonif; bonif<-sueldo*p15
cout<<"\n Su sueldo es: "<<sueldo;
tot<- sueldo + bonif
cout<<"\n La bonificacion es: "<<bonif;
cout<<"\n El sueldo total es: //salida
"<<tot<<endl;
Escribir (“Su bonificación es : “,bonif)
getche();
return 0; Escribir (“su nuevo sueldo es : “,tot
}
Fin

ESTRUCTURA SELECTIVA ANIDADA O EN CASCADA


La estructura selectiva anidada, es una cadena de estructuras selectivas que se conectan
de la parte falsa (else) de la actual con la parte si (if) de la siguiente, hasta llegar a la
última estructura selectiva para resolver un determinado problema. Es decir:
Pseudocódigo Codificación en C++
------- -------
------- -------
Si (c1) If (c1)
Entonces a1;
a1 else
sino if (c2)
si (c2) a2;
entonces else
a2 if (c3)
si (c3) a3;
entonces else
a3 a4:
sino
b1
a4
-----
finsi
finsi
finsi
b1
-----

Ejemplo.
Escribir un algoritmo que ingrese un valor para x, y que calcule
h(x) = f(x) + g(x), según la siguiente regla de correspondencia.
| x| s i x <−5
{ 2
F(x)= x +3 x +9 , si−5≤ x <10 g(x) =
e|2 x +1|si x ≥ 10
x−3‖, si x< 0
{‖√
x 5 +1 , si x ≥ 0

Pseudocodigo Codigo en C++


Algoritmo <suma_de_funciones> #include<iostream>
Variables #include<conio.h>
Real : x,fx,gx,hx #include <math.h>
Inicio using namespace std;
//Datos
Escribir “ Ingrese un valor para x :” int main()
Leer(x) {//declaracion de variables
float x,fx,gx,hx;
//Datos
//Proceso cout<<" Ingrese un valor para x :"<<endl;
Si (x<-5) cin>>x;
Entonces //proceso
fx<- abs(x)+2 if (x<-5)
Sino fx=abs(x)+2;
Si (x<10 ^ x<=-5 else
Entonces if(x<10 && x>=-5)
fx<- x 2+ 3 x +9 fx=x*x+3*x+9;

Sino else

fx<- e|2 x+1| fx=exp(abs(2*x+1));


if(x<0)
finsi
gx=floor(x-3);
finsi
else
si (x<0)
gx=(sqrt(pow(x,5)+1));
entonces
hx=fx+gx;
gx<- ‖x−3‖
else //Salida
5
gx<- √ x +1 cout<<"F ("<<x<<")="<<fx<<endl;
finsi cout<<"G ("<<x<<")="<<gx<<endl;
hx<- fx + gx cout<<"F ("<<x<<")+"<<"G("<<x<<") = "<<hx<<endl;
//Salida getche();
Escribir “ F(“,x,”) + G(“,x,”) = “,hx return 0;
fin }

ESTRUCTURA DE CONTROL SELECTIVA MULTIPE


(Según sea o caso de /case)
Se usa en situaciones donde hay varias alternativas de selección, esto en función del
valor que tome el selector (condición). Es decir;
selector

1 2 …. n sino

A1 A2 An X

Seudocódigo Codificación en C++


Según- sea (selector) hacer ------
Inicio switch(selector)
1: acción A1,salir {case 1:a1;break;
2: acción A2,salir case 2: a2;break;
3: acción A3,salir case 3: a3;break;
* -------
* -----
* case n: an;break;
* default: X;break;
n: acción An,salir }
Fin b1;
caso contrario : acción X,salir b2;
Fin – Según ----
……

Donde :

selector . – El valor que representa debe ser un valor entero o de tipo char, de ninguna
manera puede ser real ni cadena.
A1,A2,…,An. – Puede ser una sentencia simple o compuesta.

Obs.
El selector puede ser una variable, una expresio; sin embargo el valor que representa
debe ser entero (int) o carácter (char). De ninguna manera puede ser real ni cadena.
Casos Especiales

selector

1,3,5 2,4 …. 7,11 sino

A1 A2 An X

switch(selector)
{case 1: case 3: case 5: a1;
a2;
break;
case 2: case 4: a1;
a2;
break;
case 7: case 11: a1;
a2;
break;
default; x;break;
}

switch(selector)
{case ‘A’: case ‘a’: a1;
a2;
break;
case ‘B’: case ‘C’: a1;
a2;
break;
case ‘y’: case ‘z’: a1;
a2;
break;
default; x;break;
}

Ejemplo:
Elaborar un programa que permita hacer conversiones de temperatura entre grados Fahrenheit, Celsius,
Kelvin y Ranking. Primero debe preguntar que tipo de grados quiere convertir. Por ejemplo si se le indica
que se desea convertir una temperatura en grados Fahrenheit, debe leer la cantidad de grados y luego su
equivalente en grados Celsius, Kelvin y Rankine, y así hacer lo mismo en cada uno de los casos otros tipo,
para convertir a Celsius la temperatura Fahrenheit se le resta y se le multiplica por 5/9, para convertir a
Kelvin, se le suma 273 a los grados Celsius. Para convertir a rankine a los grados Fahrenheit se le suma 460.

#include <cstdlib>
#include <iostream>
using namespace std;

int main()
{
int op1;
float f,c,k,r;
cout<< "\n conversiones de temperatura";
cout<< "\n1 De oF a oC, oK ,oR";
cout<< "\n2 De oC a oF, oK, oR";
cout<< "\n3 De oK a oF, oC, oR";
cout<< "\n4 De oR a oF, oC, oK";
cout<< "\n seleccione opcion:";
cin>>op1;
switch(op1)
{
case 1 : cout<<"\n Ingrese temperatura en oF:";
cin >>f;
c=(f-32)*5/9;
k=c+273;
r=f+460;
cout<< "\n"<<"oF cequivale a:";
cout<< "\n"<<c<<"oC";
cout<< "\n"<<k<<"oK";
cout<< "\n"<<r<<"oR";break;

case 2 : cout<<"\n Ingrese temperatura en oC:";


cin>>c;
f=(9/5*c)+32;
k=c+273;
r=f+460;
cout<<"\n"<<"oC cequivale a:";
cout<<"\n"<<f<<"oF";
cout<<"\n"<<k<<"oK";
cout<<"\n"<<r<<"oR";break;

case 3 : cout<< "\nIngrese temperatura en oK:";


cin>>k;
c=k-273;
f=(9/5*c)+32;
r=f+460;
cout<<"\n"<<"oK cequivale a:";

cout<<"\n"<<c<<"oC";
cout<<"\n"<<f<<"oF";
cout<<"\n"<<r<<"oR";break;

case 4 : cout<< "\n Ingrese temperatura en oR:";


cin>>r;
f=r-460;
c=(f-32)*5/9;
k = c+273;
cout<< "\n"<<" oR cequivale a:";

cout<< "\n"<<f<<"oF";
cout<< "\n"<<c <<"oC";
cout<< "\n"<<k<<"oK";break;

default : cout<< "\n ERROR, pulse 1,2,3,4,";break;


}
cout<< "\n";
system("PAUSE");
return 0;
}

Interuptores,Switches o Flags

Es un campo de memoria que puede tomar dos valores (0,1) (falso o cierto) se utiliza para:
 Recordar en un determinado punto de un programa la ocurrencia o no de un suceso anterior.
 Para salir de un bucle o para decidir qué acción realizar.
 Para hacer que dos acciones diferentes se ejecutan alternativamente dentro de un programa.

Menú de Opciones

Conjunto de acciones que se presenta al usuario, entre las cuales desea elegir una de
ellas, dependiendo de la decisión se realizaran una serie de acciones.
Ejemplo.
Escribir un pseudocódigo que ingrese dos números y un operador (+, -, *, /), el programa
debe calcular el resultado de la operación seleccionada.

//Datos
Entrada Pseudocódigo Código en C++
#include <iostream>
Dos numenos: n1,n2 : Algoritmo calculadora #include <conio.h>
v. real using namespace std;
Operador: (+,-,*,/) : op Variables: //programa principal
v.caracter Real: n1,n2,r int main()
Carácter: op {//declaracion de variables de E/S
Salida Entero: opok float n1,n2,r;
Inicio char op;
Resultado: r v.real Escribir (“Ingrese dos Numeros “) int opok;
Interruptor: opok: v. leer (n1,n2) //Datos
entero Escribir (“Ingrese un Operador : “) cout<<"Ingrese dos numeros :
1: todas las op OK Leer(op) "<<endl;
2: operador errado //Procesao cin>>n1>>n2;
0:div por cero Opok<-1 cout<<"Ingrese un operador :
Según sea (op) (+,-,*./) : ";
‘+’ : r<-n1+n2,salto cin>>op;
‘-’ : r<-n1-n2,salto //Proceso
‘*’ : r<-n1*n2,salto opok=1;
‘/’ : si (n2<>0) switch (op)
Entonces {case '+': r=n1+n2;break;
r<-n1/n2 case '-': r=n1-n2;break;
sino case '*': r=n1*n2;break;
opok<-0 case '/': if (n2!=0)
finsi r=n1+n2;
salto else
caso contrario opok=0;
opok<-2 break;
finsegun default: opok=2;break;
si (opok=1)
entonces }
escribir (n1,op,n2,” = “,r) if (opok==1)
sino cout<<n1<<op<< n2<<" =
si (opok=0) "<<r<<endl;
entonces
escribir (“No se puede else
dividir por cero”) if(opok==0)
sino cout<<" No se puede
escribir “ Op errado “ dividir por cero"<<endl;
finsi else
finsi cout<<"Operador
fin Errado "<<endl;
getche();
return 0;
}

También podría gustarte