Logo Studenta

ESTRUCTURAS ALGORITMICAS SELECTIVAS

¡Este material tiene más páginas!

Vista previa del material en texto

ESTRUCTURAS ALGORITMICAS SELECTIVAS.
1.1 ESTRUCTURAS ALGORITMICAS SELECTIVAS.
Una estructura algorítmica selectiva es empleada cuando el proceso de solución para un problema depende directamente de una condición previamente establecida.
1.1.-ESTRUCTURA SELECTIVA DOBLE if-else.
Cuando en la solución de un problema se desarrolla un proceso que depende de si la evaluación realizada a una condición dada es cierta o falsa, se dice que tenemos una condicional doble.
Esta condicional es conocida como if-else, y básicamente opera de la siguiente manera:
Si la condición planteada es cierta el programa realizará un proceso definido por el algoritmo del problema planteado, sí esta por el contrario nos da como resultado de la evaluación un valor negativo se ejecutarán operaciones determinadas para dicha situación, la sintaxis que se debe seguir para esta estructura es la siguiente:
Sintaxis:
……………..
if(proposición 1)
{
Operación 1; (Cuando se cumple la condición estas operaciones realiza el programa)
}
else
{
Operación 2; (Cuando no se cumple la condición estas operaciones realiza el programa)
}
Si la expresión es VERDADERA (distinta de Ø) se ejecuta proposición 1; en caso contrario, se ejecuta proposición 1.
Para resolver problemas en los cuales se involucran las estructuras selectivas es necesario auxiliarse de operadores relacionales y operadores lógicos, los cuales nos sirven para darle sentido a la condición establecida, estos operadores se muestran en las siguientes tablas.
1.1.1.-Operadores de relación y lógicos
Los operadores de relación y los operadores lógicos se emplean para formar expresiones booleanas. Una expresión booleana sólo puede tomar dos valores : VERDADERO o FALSO.
 En C, se considera que una expresión equivale a una expresión booleana FALSA, cuando al evaluarla su resultado es cero. Si el resultado de una expresión es distinto de 0, se considera que tiene un valor lógico de verdad.
TABLA 1.1.-Operadores relacionales.
	Operador.
	Función
	==
!=
<
>
<=
>=
	Igual a.
Diferente de.
Menor que.
Mayor que.
Menor o igual que.
Mayor o igual que.
TABLA 1.1.-Operadores lógicos.
	Operador.
	Función.
	!
&&
||
	Negación.
Conjunción.
Disyunción.
Ejemplo 1.1.-Al teclear una letra para indicar el sexo, la liga de futbol femenil definirá si puede o no pertenecer a la misma. 
DIAGRAMA DE FLUJO.
inicio
fin
Lastima esta liga es exclusiva para mujeres
letra=f
Felicidades usted puede formar parte de alguno de nuestros equipos
letra
CÓDIGO
#include<stdio.h>
#include <conio.h>
int main()
{
char letra;
clrscr();
printf("Escriba su sexo\nmasculino-m-\nFemenino –f- ");
scanf("%c",&letra);
if(letra=='f')
{
printf("\nFelicidades usted puede formar parte de alguno de nuestros equipos");
}
else
{
printf("\nLastima esta liga es exclusiva para mujeres");
}
getch();
return Ø;
}
En el ejemplo anterior aplicamos una variable de tipo carácter, que como puedes observar el valor que se le asigna se encierra con una comilla (‘f’), por otro lado en la sentencia condicional if se abren y cierran los paréntesis, pero no se concluye con el (;), posteriormente se abre una llave y al concluir la operación se cierra, sin embargo esto solo se hace cuando hay mas de una instrucción, ya que al existir una sola línea de instrucción ( la impresión de un letrero o una operación matemática que no requiere más de una línea), no es necesario realizar dicha operación, nosotros lo haremos simplemente para crear un hábito, con la intención de evitar que se puedan presentar errores de sintaxis al inicio por falta de práctica. 
Ejemplo 1.1.- Desarrolle el diagrama de flujo y el código para un programa en el que al ingresar el salario mensual de un trabajador se determine si este es aspirante, o no a la obtención de un crédito hipotecario, el requisito es contar con un ingreso mensual mínimo de 40000 pesos.
DIAGRAMA DE FLUJO.
inicio
fin
Lo sentimos usted no es candidato para el crédito.
Ing<=4000
Usted es candidato para el crédito hipotecario
ing
CÓDIGO.
#include<stdio.h>
#include<conio.h>
float ing;
int main ()
{
printf(""\n \t Ingrese su salario mensual por favor : \t ");
scanf("%f",&ing);
if(b<4ØØØ)
printf("\n \t Lo sentimos no es candidato al crédito");
else
printf("\n\t Usted es candidato para el crédito");
getch();
return Ø;
}
1.3.-CONDICIONES COMPUESTAS.
Una condición compuesta se define como dos o más condiciones simples unidas por los llamados operadores lógicos.
Ejemplo:
if ( (sueldo> 7 ØØØ) && ( sexo=='m') ) etc, etc, etc.
Ejemplo 1.3.-Desarrolle un programa que al capturar el tres valores indique si con ellos se puede formar un triangulo equilátero.
CÓDIGO.
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
float a,b,c;
printf("dame el valor de A:");
scanf("%f",&a);
printf("dame el valor de B:");
scanf("%f",&b);
printf("dame el valor de C:");
scanf("%f",&c);
if(a!=Ø&&b!= Ø&&c!=Ø)
{
if(a==b&&b==c)
{
printf("es un triangulo equilatero");
}
if(a!=b&&b!=c&&c!=a&&c*c!=a*a+b*b&&c>a&&c>b)
{
printf("es un triangulo escaleno");
}
if(a!=b&&b!=c&&c!=a&&a*a!=c*c+b*b&&a>c&&a>b)
{
printf("es un triangulo escaleno");
}
if(a!=b&&b!=c&&c!=a&&b*b!=a*a+c*c&&b>a&&b>c)
{
printf("es un triangulo escaleno");
}
if(a!=b&&b!=c&&c!=a&&c*c==a*a+b*b&&c>a&&c>b)
{
printf("es un triangulo Escaleno-rectangulo");
}
if(a!=b&&b!=c&&c!=a&&a*a==c*c+b*b&&a>c&&a>b)
{
printf("es un triangulo Escaleno-rectangulo");
}
if(a!=b&&b!=c&&c!=a&&b*b==a*a+c*c&&b>a&&b>c)
{
printf("es un triangulo Escaleno-rectangulo");
}
if(a==b&&b!=c&&c*c==a*a+b*b&&c>a&&c>b)
{
printf("es un triangulo Rectangulo-Isoseles");
}
if(c==b&&b!=a&&a*a==c*c+b*b&&a>c&&a>b)
{
printf("es un triangulo Rectangulo-Isoseles");
}
if(a==c&&b!=c&&b*b==a*a+c*c&&b>a&&b>c)
{
printf("es un triangulo Rectangulo-Isoseles");
}
if(a==b&&b!=c&&c*c!=a*a+b*b&&c>a&&c>b)
{
printf("este triangulo no se pude formar");
}
if(c==b&&b!=a&&a*a!=c*c+b*b&&a>c&&a>b)
{
printf("este triangulo no se pude formar");
}
if(a==c&&b!=c&&b*b!=a*a+c*c&&b>a&&b>c)
{
printf("este triangulo no se pude formar");
}
if(a==b&&b!=c&&c*c!=a*a+b*b&&a>c&&b>c)
{
printf("es un triangulo isoseles");
}
if(c==b&&b!=a&&a*a!=c*c+b*b&&c>a&&b>a)
{
printf("es un triangulo isoseles");
}
if(a==c&&b!=c&&b*b!=a*a+c*c&&a>b&&c>b)
{
printf("es un triangulo isoseles");
}
}
else
{
printf("este triangulo no se puede formar");
}
getch();
return Ø;
}
En el ejercicio anterior no se desarrolla el diagrama de flujo debido a que se pretende que el estudiante lo desarrolle durante la clase con la ayuda del profesor, para poner en práctica los conocimientos adquiridos hasta este momento.
Ejemplo 1.4.-Desarrolla un diagrama de flujo y el respectivo código para un programa que limite el acceso a un club de polo donde los miembros deben ser mayores de 18 años, ser hombres y tener como mínimo un ingreso de 3Ø,ØØØ pesos mensuales.
DIAGRAMA DE FLUJO.
inicio
e i s
e>18&i≥30000&s=1
Lo sentimos no puedes ser parte del club
Bienvenido al club
fin
CÓDIGO.
#include<stdio.h>
#include<conio.h>
float ing;
int main ()
{
Int e,i,s;
printf(""\n \t Ingrese su edad por favor : \t ");
scanf("%d",&e);
printf(""\n \t Ingrese su ingreso mensual por favor : \t ");
scanf("%d",&i);
printf(""\n \t Ingrese su sexo -1 masculino 2 femenino- por favor : \t ");
scanf("%d",&s);
if(e>=18 & i>=3ØØØØ)
printf("\n \t Bienvenido al club");
else
printf("\n\t Lo sentimos no puedes ser parte del club");
getch();
return Ø;
}
Ejemplo 1.5.-Desarrolla un diagrama de flujo y el respectivo código para un programa que divida dos números reales, cuando el denominador tenga un valor diferente a cero, y que mande al usuario el mensaje “no se puede realizar la operación” en caso de que el denominador sea cero.
DIAGRAMA DE FLUJO.
inicio
a,b
b←0
no se puede realizar la operación
r←=a/b
r
fin
CÓDIGO
#include<stdio.h>
#include<conio.h>
int main ()
{
float r,a,b;
printf(""\n \t Dame el numero divisor: ");
scanf("%f",&b);
printf(""\n \t Dame el numero dividendo: ");
scanf("%f",&a);
if(b== Ø)
printf(("\n \tNo se puede dividir");
else
{
 r=a/b;
printf(""\n \t El resultado es: %.2f",r);}
getch();
return Ø;
}
Ejemplo 1.6.- Dado un circuito eléctrico con dos resistencias el programa calcula la resistencia total, la corriente total y la potencia total del sistema, el usuario puede elegir entre una configuración en serie o en paralelo.
DIAGRAMA DE FLUJO.
inicio
r1,r2,vt.
op=1
req←r1+r2a/b
req←(r1*r2)/(r1+r2)
It←vt/req
pt← vt*it)
req, it,pt
fin
CÓDIGO.
#include <stdio.h>
#include<conio.h>
int main ()
{
float r1,r2,req,vt,it,pt;
int op;
printf(""\n \tIngrese el voltaje de la fuente: \t ");
scanf("%f",&vt);
printf(""\n \t Introduzca el valor de la resistencia uno: \t ");
scanf("%f",&r1);
printf(""\n \t Introduzca el valor de la resistencia dos: \t ");
scanf("%f",&r2);
printf(""\n \t Elija un tipo de conexión para el circuito-1serie 2paralelo: \t ");
scanf("%d",&op);
if(op==1)
{
req=r1+r2;
}
else
 { 
req=(r1*r2) / (r1+r2);
}
it=vt / req;
pt=it*vt;
printf(""\n \t La resistencia total del circuito es:\t%f ",req);
printf(""\n \t La corriente total del circuito es:\t%f ",it);
printf(""\n \t La potencia consumida por el circuito es:\t%f ",pt);
getch();
return Ø;
}
1.4.-ESTRUCTURA SELECTIVA MÚLTIPLE switch
A partir del presente tema los diagramas de flujo se dejarán cono actividad al estudiante, por lo tanto no se presentaran mas.
Esta estructura de selección nos permite generar un programa en el cual se encuentran algoritmos para diferentes tipos de ejercicios, de tal manera que presentamos un menú de opciones que el usuario seleccionara solo una, y el programa ejecuta únicamente esa rama pasando por alto los demás algoritmos.
La sintaxis que se debe seguir para esta estructura es la siguiente:
…..
switch(op)
{
case 1:
operaciones;
break;
case 2:
operaciones;
break;
case 3:
operaciones;
break;
…
…
…
case n:
operaciones;
break;
default:
operaciones;
break;
}
…
Ejemplo 1.7.-Desarrolle el código para un programa que realice las 4 operaciones básicas (suma, resta, multiplicación y división), según la opción que elija el usuario.
#include <stdio.h>
#include <conio.h>
int main ()
{
clrscr();
int op;
float sum,mult,div,rest,a,b;
printf(“\n\tIngrese el primer número=”);
scanf(“%d”,a”);
printf(“\n\tIngrese el segundo número=”);
scanf(“%d”,b);
printf(“\n\tSeleccione una opción -1suma 2resta 3multiplicación 4división-:\t”);
scanf(“%d”,op”);
switch (op)
{
case 1:
sum=a+b;
printf(“\n\n\n\t\t\tLa suma de los números es =%f”,sum);
break;
case 2:
rest=a-b;
printf(“\n\n\n\t\t\tLa resta de los números es =%f”,rest);
break;
case3:
mult=a*b;
printf(“\n\n\n\t\t\tLamultiplicación de los números es =%f”,mult);
break;
case 4:
if(b== Ø)
printf(("\n \tNo se puede dividir");
else
{
div=a/b;
printf(“\n\n\n\t\t\tLa división de los números es =%f”,div);
break;
default;
printf(“La opción no existe”);
break;
}
getch();
return Ø; }
Ejemplo 1.8.- Elabora el código para un programa el cual al seleccionar una opción calcule el volumen de un prisma triangular, cuadrangular, rectangular, cilíndrico, y hexagonal
*Para evitar confusiones en algunos prismas como el rectangular donde existen dos alturas una en la base y la otra propiamente del prisma se emplearán las variables W para indicar el ancho de la base, D para la altura de la base y H para la altura del prisma.
#include<stdio.h>
#include<conio.h>
#include<math.h>
float W,D,H,tri,cua,rec,cil,hex;
int op;
int main ()
{
printf("selecione tipo de prisma (1.-triangular 1.-cuadrangular 3.-rectangular 4.-cilindrico 5.-hexagonal)");
scanf("%d",&op);
switch(op)
{
case 1:printf("ingrese la medida de la base");
scanf("%f",&W);
printf("Ingrese la medida de la altura");
scanf("%f",&D);
printf("ingrese el largo del prisma");
scanf("%f",&H);
tri=((W*D)/2)*H;
printf("el volumen del prisma es = %2f",tri);
break;
case 2:printf("ingrese la medida de la base");
scanf("%f",&D);
printf("ingrese el largo del prisma");
scanf("%f",&H);
cua=(D*D)*H;
printf("el volumen del prisma es = %2f",cua);
break;
case 3:printf("ingrese la medida de la base");
scanf("%f",&W);
printf("Ingrese la medida de la altura");
scanf("%f",&D);
printf("ingrese el largo del prisma");
scanf("%f",&H);
rec=(W*D)*H;
printf("el volumen del prisma es = %2f",rec);
break;
case 4:printf("ingrese la medida del radio");
scanf("%f",&W);
printf("ingrese el largo del prisma");
scanf("%f",&H);
cil=M_PI*pow(W,2)*H;
printf("el volumen del prisma es = %2f",cil);
break;
case 5:printf("ingrese la medida del perimetro");
scanf("%f",&W);
printf("Ingrese la medida del apotema");
scanf("%f",&D);
printf("ingrese el largo del prisma");
scanf("%f",&H);
hex=(W*D)*H;
printf("el volumen del prisma es = %2f",hex);
break;
default;
printf(“La opción no existe”);
break;
}
getch ();
return Ø;
}
Ejemplo 1.9.-Realice el código para un programa en el cual al seleccionar una opción calcule loas resistencias de carga cuando se tiene un diodo, la resistencia mínima de la base en un transistor, los parámetros eléctricos en un arreglo con dos resistencias en serie y paralelo.
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main ()
{
float RL,vd,id,ic,vb,,Rb,beta,ib,r1,r2,req,vt,it,pt,rtot;	
int op;
printf("seleccione tipo de calculo a realizar -1resistencia de carga para un diodo 2 resistencia de carga para la base de un transistor 3Corrientotal,resistencia total y potencia total en un circuito serie con dos resistencias 4 Corriente total, resistencia total y potencia total en un circuito paralelo con dos resistencias-");
scanf("%d",&op);
switch(op)
{
case 1:
printf("\n\n\t\tDame el voltaje de la fuente: \t ");
scanf("%f",&vt);
printf("\n\n\t\tDame el voltaje del diodo: \t ");
scanf("%f",&vd);
printf("\n\n\t\tDame la corriente del diodo: \t ");
scanf("%f",&id);
 RL=(vt-vd)/id;
printf("\n\n\t\tEl valor de la resistencia mínima es:\t %.2f",RL);
break;
case 2:
printf("\n\n\t\t Dame el valor de corriente en colector:");
scanf("%f",&ic);
printf("\n\n\t\t Dame el valor del voltaje de base:");
scanf("%f",&vb);
printf("\n\n\t\t Dame el valor del factor beta:");
scanf("%f",&beta);
ib=ic/beta;
Rb=(vb-0.7)/ib;
printf("\n\n\t\t La resistencia de base para un transistor es:\t %.2f",Rb);
break;
case 3:
printf(""\n \tIngrese el voltaje de la fuente: \t ");
scanf("%f",&vt);
printf(""\n \t Introduzca el valor de la resistencia uno: \t ");
scanf("%f",&r1);
printf(""\n \t Introduzca el valor de la resistencia dos: \t ");
scanf("%f",&r2);
req=r1+r2;
it=vt / req;
pt=it*vt;
printf(""\n \t La resistencia total del circuito es:\t%f ",req);
printf(""\n \t La corriente total del circuito es:\t%f ",it);
printf(""\n \t La potencia consumida por el circuito es:\t%f ",pt);
break;
case 4:
printf(""\n \tIngrese el voltaje de la fuente: \t ");
scanf("%f",&vt);
printf(""\n \t Introduzca el valor de la resistencia uno: \t ");
scanf("%f",&r1);
printf(""\n \t Introduzca el valor de la resistencia dos: \t ");
scanf("%f",&r2);
req=(r1*r2) / (r1+r2);
it=vt / req;
pt=it*vt;
printf("\n \t La resistencia total del circuito es:\t%f ",req);
printf("\n \t La corriente total del circuito es:\t%f ",it);
printf("\n \t La potencia consumida por el circuito es:\t%f ",pt);
break;
default:
printf("\n \t La opción no existe ");
break;
 }
getch ();
return Ø;
}
Ejemplo 1.10.-Realice el código para un programa en el cual al seleccionar una letra (opción) despliegue la palabra águila para la letra a, la palabra vaca para la letra , las palabras caballo y camello para la letra c, y para cualquier otra letra la palabra no hay ( emplee las funciones getchar y puts).
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
 char letra; /*Declaración de variables tipo carácter*/
printf("\n \tdame una letra : "); 
letra = getchar(); /*asignación del carácter ingresado a la variable letra*/
getchar();
switch (letra)
{
case 'a': puts("\n \táguila");
break;
case 'b': 
puts("\n \tvaca");
break;
case 'c': 
puts("\n \tcaballo ");
puts("\n \tcamello");
break;
default:
puts("no hay");
break;
}
getchar();
}
EJERCICIOS DE REFORZAMIENTO.
Elabora los diagramas de flujo y los respectivos códigos para los siguientes programas.
1.-Al recibir la calificaciónde un alumno le indique si puede o no ingresar a la universidad.
1.-Al recibir un número indique si este es submúltiplo de dos o no.
3.-Dado un dato realizar la conversión de centímetros a pulgadas o de pulgadas a centímetros según sea el caso.
4.-Dado un dato realizar la conversión de grados centígrados a grados farenhei según sea el caso 
5.-Al ingresar la edad y el grado de estudios define si es apto o no para trabajar en una empresa manufacturera como supervisor.
6.-Al recibir 4 números, los compare y los imprima en orden descendente.
7.-Sume, reste, divida y multiplique dos vectores, según la opción seleccionada, independientemente de que los vectores estén en su forma polar o rectangular.
8.-Calcule velocidad, longitud y aceleración en caída libre, tiro parabólico y movimiento rectilíneo uniformemente acelerado, según la opción elegida.
9.- Al introducir la fecha de nacimiento imprima el signo zodiacal de la persona.
10.-Conversión de pesos a dólares, de dólares a pesos, de euros a pesos, de pesos a euro, de dólares a euros y de euros a dólares (considera el tipo de cambio como: 1 Dólar-12 pesos, 1 Euro-18 pesos).

Continuar navegando