estructuras de seleccion

Anuncio
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
ESTRUCTURAS DE SELECCION
Una estructura secuencial está formada por una secuencia de instrucciones que
se ejecutan en orden una a continuación de la otra.
Las estructuras selectivas se utilizan para tomar decisiones (por eso también se
llaman estructuras de decisión o alternativas). El mecanismo de acción evalúa
una condición, y, a continuación, en función del resultado, se lleva a cabo una
opción u otra. Es importante tener en cuenta que: un programa está diseñado
para evaluar una condición, y actuar en consecuencia, según que la condición sea
verdadera o falsa.
La representación de una estructura selectiva se hace con las palabras (sin
entonces si, si no) en pseudocodigo (if, then, else), para el diagrama de flujo con la
figura geométrica en forma de rombo o bien un triángulo. Las estructuras
selectivas o alternativas pueden ser:
 Simples
 Dobles
 Múltiples
ALTERNATIVA SIMPLE (si-entonces)
El lenguaje C posee un concepto muy amplio de lo que es verdadero. Para C,
cualquier valor que sea distinto de cero es verdadero, siendo por tanto falso solo si
el valor cero. Es por ello que una expresión del tipo if(x) será verdad siempre que
el valor de la variable x sea distinto de cero, sea cual sea el tipo de la variable x.
El concepto de sentencia en C es igual que el de otros muchos lenguajes. Por
sentencia se entiende en C cualquier instrucción simple o bien, cualquier conjunto
de instrucciones simples que se encuentren encerradas entre los caracteres { y },
que marcan respectivamente el comienzo y el final de una sentencia.
La forma general de la sentencia if es:
if (condición
sentencia;
else
sentencia;
Recomendación: Nunca coloque un ; (punto y
coma) después de la condición del if porque
esto crearía una estructura vacía (sin cuerpo)
ya que las instrucciones que hay dentro de él
se ejecutan aunque la condición sea falsa.
1
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
Siendo el else opcional. Si la condición es verdadera se ejecuta la sentencia
asociada al if, en caso de que sea falsa la condición se ejecuta la sentencia
asociada al else (si existe el else). Veamos algunos ejemplos de sentencias if:
int a,b;
if (a>b)
{
b--;
a=a+5;
}
else
{
a++;
b=b-5;
}
if (b-a!=7)
b=5;
Realice un algoritmo en pseudocódigo que permita obtener la suma de dos
números teniendo en cuenta que el primer número tiene que ser mayor que el
segundo y si el resultado de la suma es mayor o igual que 230 se dividirá entre 2
Algoritmo que permite Calcular la suma de dos números
Declaración de Variables
Número_1, Número_2, Suma: Entero
Inicio
Escribir “Calcular la suma de dos números”
Escribir “Introduzca los siguientes datos:”
Escribir “Primer número: ”
Leer(Número_1)
Escribir “Segundo número: ”
Leer(Número_2)
Si (Número_1 > Número_2) Entonces
Escribir “Se realizará la suma el primer número es mayor que el segundo”
Suma  Número_1 + Número_2
Si (Suma>=230) Entonces
2
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
Escribir “La suma es mayor a 230 se dividirá entre 2”
Suma  Suma / 2
Fin Si
Fin Si
Escribir “El resultado es: ”, Suma
Fin
ALTERNATIVA DOBLE (si – entonces – sino/ if – then - else)
Las sentencias de control if pueden ir anidadas. Un if anidado es una sentencia if
que es el objeto de otro if o else. Esta anidación de if/else puede presentar la
problemática de decidir que else va asociado a cada if.
Lo más frecuente es encontrar situaciones donde si una condición se cumple se
ejecuta un grupo de instrucciones, pero si no se cumple, deben ejecutarse otras.
La instrucción “Si ... entonces ... Sino...” facilita este tipo de programación. La
estructura que le corresponde es:
SI (condición) entonces
instrucciones 1
SINO
instrucciones 2
FINSI
C++ utiliza las siguientes
convenciones:
= Asignar un valor a una
variable.
== Comparar dos expresiones.
Ejemplo
Se desea calcular la raíz cuadrada de un número...
INICIO
LEER ( numero )
SI (numero > 0) entonces
raíz = √ numero
SINO
ESCRIBIR (“Error. ¡Debe ingresar valores positivos!”)
FINSI
ESCRIBIR (raíz)
FIN
3
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
ALTERNATIVA MULTIPLE (switch - case)
Una estructura de repetición le permite al programador especificar que se repita
una acción mientras cierta condición se mantenga verdadera.
En algunas ocasiones hay algoritmos que contendrán una serie de decisiones
para los cuales utilizar if/else if en escala es tedioso. Para estos casos se puede
hacer uso de la estructura de selección múltiple switch en la cual una variable o
expresión se probará por separado contra cada uno de los valores constantes
enteros que puede asumir y de acuerdo con ellos determinar qué acción se debe
seguir.
La función switch consta de una variable entera que lo controla, un conjunto de
etiquetas case que se usan para cada valor implicado, una etiqueta default que
corresponde a los casos en que los casos case no corresponden. Aunque no es
obligatorio cada case debe utilizar la instrucción break para que rompa la
estructura o ciclo definido por el caso Para default no es necesario utilizar break
ya que será el único caso evaluado
La estructura que le corresponde es:
La sintaxis de un switch es la siguiente:
switch (expresion)
{
case opcion1:
/*Conjunto de instrucciones*/
break;
case opcion2:
/*Conjunto de instrucciones*/
4
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
break;
case opcion3:
/*Conjunto de instrucciones*/
break;
.
.
.
Default:
/*Conjunto de instrucciones*/
}
PROGRAMACION EN FALCON C++
//Nombre del Autor:
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <math.h>
void menu();
void raiz();
int Num;
using namespace std;
int main()
{
system ("pause");
menu();
}
void menu()
{
int Opc;
cout<<"MENU PRINCIPAL"<<endl<<endl;
cout<<" 1. Calcular la raiz de un numero"<<endl<<endl;
cout<<" 2. Elevar un numero al cubo"<<endl<<endl;
cout<<" 3. salir"<<endl<<endl;
5
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
cout<<" Ingrese la opcion: ";
cin >>Opc;
switch(Opc){
case 1:
raiz();
break;
case 2 :
float cubo;
cout<<"Ingrese el numero para elevar al cubo: ";
cin>>Num;
cubo = Num*Num*Num ;
cout<<"El resultado es: "<< cubo <<endl;
break;
case 3 :
default:
cout<<"Hasta luego";
break;
cout<<"la opcion ingresada esta errada, ingrese nuevamente";
}
system("pause");
//return 0;
}
void raiz()
{
float raiz;
cout<<"Ingrese el numero para calcular su raiz: ";
cin>>Num;
if (Num > 0 )
{
raiz= sqrt (Num);
cout<<"El resultado es: "<<raiz<<endl;
}
else {
cout<<" Error numero negativo no tiene raiz"<<endl;
}
menu();
}
6
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
Lógica de Programación - 204022
Recordemos:
Recuerdan que, una de las primeras preguntas que me hago al abordar el
ejercicio, es definir lo que no conozco de este ejercicio.
Perfecto cubo, y la raiz? (ojo, la raiz no lo conozco pero lo puedo calcular con la
expresión sqrt (nombre_variable) y utilizando la librería math.h)
7
Descargar