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