310 likes | 663 Views
Curso Básico de Algoritmos. Exponente: Ing. Dulmar Tovar 2º PARTE. CONTENIDO. Estructuras de Control Estructuras Selectivas Simple Doble Múltiple Anidamiento Estructuras Iterativas Mientras Hacer-Mientras Para Anidamiento. ESTRUCTURAS DE CONTROL.
E N D
Curso Básico de Algoritmos Exponente: Ing. Dulmar Tovar 2º PARTE
CONTENIDO • Estructuras de Control • Estructuras Selectivas • Simple • Doble • Múltiple • Anidamiento • Estructuras Iterativas • Mientras • Hacer-Mientras • Para • Anidamiento
ESTRUCTURAS DE CONTROL En un programa, por lo general, los enunciados son ejecutados uno después del otro, en el orden en que aparecen escritos. Esto se conoce como ejecución secuencial. Sin embargo, hay ocasiones en que se requiere que ciertas condiciones se verifiquen y se tomen decisiones de acuerdo a éstas, es decir, realizar acciones específicas que bien pudieran cambiar la secuencia de ejecución de un programa. Esto se conoce como transferencia de control, la cual puede realizarse mediante el uso de estructuras de selección, iterativaso de salto.
ESTRUCTURAS SELECTIVAS En control de decisión abarca desde verificar condiciones muy simples hasta estructuras muy complejas, tomando decisiones basadas en ellas. Existen 3 estructuras de selección, a saber: • Simple: Estructura de una sola selección. Ejecuta una acción si una condición es verdadera, de ser falsa la ignora. • Doble:Ejecuta una acción si una condición es verdadera, de ser falsa ejecuta una acción distinta. • Múltiple:Ejecuta una entre muchas acciones diferentes, dependiendo del valor de una expresión.
Estructura Selectiva Simple Consiste en una estructura de selección empleada para elegir entre cursos alternativos de acción. Su funcionamiento es simple: Se evalúa una condición, si es verdadera ejecuta un código, si es falsa, continúa con la ejecución del programa. Su sintaxis es como sigue:
Estructura Selectiva Doble Se le llama estructura de doble selección, porque selecciona entre dos opciones distintas: Ejecuta una acción si la condición es verdadera o ejecuta una acción diferente si la condición es falsa. Su sintaxis se muestra en la siguiente tabla:
Estructura Selectiva Múltiple Una instrucción alternativa múltiple permite seleccionar, por medio de una expresión, el siguiente bloque de instrucciones a ejecutar de entre varios posibles, ya que prueba una variable o expresión por separado contra cada uno de los valores constantes enteros que pude asumir, lo que conduce a tomar distintas acciones. Su sintaxis se muestra en la siguiente tabla:
Estructuras Selectivas Anidadas Este tipo de estructuras prueban para muchos casos, colocando estructuras dentro de otras, es decir, anidándolas entre ellas, así las instrucciones alternativas permiten realizar las siguientes combinaciones de anidamiento: • Simple en simple. • Simple en doble. • Simple en múltiple. • Doble en doble. • Doble en simple. • Doble en múltiple. • Múltiple en múltiple. • Múltiple en doble. • Múltiple en simple.
Ejercicio Se quiere diseñar el algoritmo de un programa que: 1º) Muestre el listado de los signos del zodíaco, con sus números asociados. 2º) Pida por teclado un número (dato entero) asociado a un signo del zodíaco. 3º) Muestre la categoría a la que pertenece el signo del zodíaco seleccionado. Nota: Si el número introducido por el usuario, no está asociado a ningún signo del zodíaco, se mostrará el mensaje: "ERROR: <número> no está asociado a ningún signo.".
Solución algoritmoSigno_del_zodiaco variables entero numero inicio escribir( "Listado de signos del zodíaco:" ) escribir( "1. Aries" ) escribir( "2. Tauro" ) escribir( "3. Géminis" ) escribir( "4. Cáncer" ) escribir( "5. Leo" ) escribir( "6. Virgo" ) escribir( "7. Libra" ) escribir( "8. Escorpio" ) escribir( "9. Sagitario" ) escribir( "10. Capricornio" ) escribir( "11. Acuario" ) escribir( "12. Piscis" ) ...
Solución escribir( "Introduzca número de signo: " ) leer( numero ) segun_sea( numero ) 1, 5, 9 : escribir( "Es un signo de Fuego." ) 2, 6, 10 : escribir( "Es un signo de Tierra." ) 3, 7, 11 : escribir( "Es un signo de Aire." ) 4, 8, 12 : escribir( "Es un signo de Agua." ) sino : escribir( "ERROR: ", numero, " no está asociado a ningún signo." ) fin_segun_sea fin Intente elaborar el diagrama de flujo
ESTRUCTURAS ITERATIVAS Muchos problemas en la vida real son una ejecución repetida de un conjunto de tareas. Esto se denomina iteración o bucle (loop). En el apartado anterior se estudió el uso de las sentencias de control (toma de decisiones). En este punto, se aprenderán construcciones que ayudan a repetir una porción de un algoritmo un cierto número de veces. Éstas se denominan construcciones iterativas.
Ciclo “Mientras” Es una estructura de repetición que permite al programador especificar una acción, en tanto cierta condición se mantenga verdadera. Entre las sentencias del ciclo debe haber una que modifique la condición de iteración del bucle, lo cual asegura la ejecución finita del mismo. De no haberla, o de estar mal formulada, podría generarse lo que se llama un bucle infinito.
Ciclo “Mientras” algoritmo ejemplo_mientras_1 variables entero contador, suma, valor inicio suma ← 0 contador ← 1 mientras(contador < 10) escribir("Ingrese un valor: ") leer(valor) suma ← suma + valor contador ← contador + 1 fin_mientras escribir("El resultado es: ", suma) fin
Ciclo “Mientras” Como puede observarse, se declara una variable contadorde tal manera que el ciclo se ejecute hasta que ésta llegue a un valor determinado (10), ya que en ese instante la relación contador < 10 da un resultado falso, lo que culmina el ciclo. Esto se conoce como repetición controlada por contador. Si no hay una sentencia de control de repetición del ciclo ó si la misma está mal formulada, el programa se ejecutaría infinitamente. Esto ocurriría si, por ejemplo, en el programa mostrado se elimina la sentencia contador+1; o si se coloca algo como, digamos, contador-1.
Ciclo “Mientras” También se nota la presencia de la variable suma, la cual obtiene información adicional en cada iteración (suma ← suma + valor). En este caso, la misma se conoce como variable acumuladora, ya que, como su nombre lo indica, va acumulando valores (pueden ser proporcionados por el usuario o en forma automática, según lo especifique el programador). • Cuando se acumula una suma o resta, esta variable suele ser inicializada en 0. • Cuando se acumula un producto o división, suele ser inicializada en 1.
Ciclo “Mientras” algoritmo ejemplo_mientras_2 variables entero contador, suma, valor inicio suma ← 0 contador ← 1 escribir("Ingrese un valor: ") leer(valor) mientras(valor <> -1) suma ← suma + valor contador ← contador + 1 escribir("Ingrese un valor: ") leer(valor) fin_mientras escribir("El resultado es: ", suma) fin
Ciclo “Mientras” En el ejemplo anterior se puede observar la instrucción mientras(valor <> -1). Es decir, se eligió un valor para indicar el fin del ciclo (en este caso -1). Este tipo de control se conoce como repetición controlada por centinela, aplicable a aquellos casos en los que no se tiene certeza sobre cuántas iteraciones se deben realizar durante la ejecución de un algoritmo. Intente elaborar el diagrama de flujo de ambos ejemplos
Ciclo “Hacer-Mientras” La sentencia hacer-mientrases otra construcción iterativa que se usa cuando el cuerpo de un bucle se debe ejecutar al menos una vez. En este caso la condición es verificada al final, entonces el cuerpo del bucle se ejecuta al menos una vez.
Ciclo “Hacer-Mientras” En el siguiente ejemplo se ilustra cómo se utiliza esta sentencia: algoritmo ejemplo_hacer_mientras variables entero valor, cuadrado inicio hacer escribir("Ingrese un número entero positivo: ") leer(valor) mientras(valor <= 0) cuadrado ← valor^2 escribir("El resultado es: ", cuadrado) fin El uso más frecuente de hacer-mientras es en la validación de entradas y programas iterativos (con menú)
Ciclo “Hacer-Mientras” INICIO escribir("Ingrese un númeroenteropositivo: ") leer(valor) Sí valor <= 0 No cuadrado ← valor ^ 2 escribir("El resultadoes: ", cuadrado) FIN
Ciclo “Hacer-Mientras” Diferencias entre “Mientras” y “Hacer-Mientras”: • En mientras se evalúa la condición y luego se ejecuta el bloque de instrucciones, y en hacer-mientras ocurre todo lo contrario. • En mientras se puede ejecutar el ciclo 0 o más veces, en hacer-mientras se ejecuta al menos 1 vez.
Ciclo “Para” La estructura de repetición para permite ejecutar, repetidamente, un bloque de instrucciones, en base a un valor inicial y a un valor final, ya que la misma maneja de manera automática todos los detalles de la repetición controlada por contador, es decir, incorpora los tres componentes de una estructura iterativa:
Ciclo “Para” En el siguiente ejemplo se ilustra cómo se utiliza esta sentencia: algoritmo ejemplo_para variables entero contador, restador inicio para contador ← 1 hasta 10 incremento 1 hacer escribir(contador) fin_para para restador ← 10 hasta 1 decremento 1 hacer escribir(restador) fin_para fin
Ciclo “Para” inicio contador ← 1 10 incremento 1 Sí escribir(contador) No restador ← 10 1 decremento 1 Sí escribir(restador) No fin
Estructuras Iterativas Anidadas Al igual que en las estructuras selectivas, las iterativas también pueden anidarse entre sí, logrando las siguientes combinaciones: • mientras en mientras • mientras en hacer-mientras • mientras en para • hacer-mientras en hacer...mientras • hacer-mientras en para • hacer-mientras en mientras • para en para • para en mientras • para en hacer-mientras Incluso las selectivas e iterativas pueden anidarse entre sí, logrando unas 18 combinaciones adicionales.
Ejercicio Se quiere diseñar el algoritmo de un programa que muestre por pantalla la tabla de multiplicar de un número entero introducido por el usuario. Condiciones: • El proceso debe repetirse mientras que el usuario lo desee. • Debe ser un número entero positivo.
Solución algoritmoTabla_de_multiplicar_de_un_numero variables caracterseguir entero i, numero inicio hacer /* Inicio del anidamiento */ hacer escribir( "Introduzca un número entero: " ) leer( numero ) /* Inicio del anidamiento */ si( numero <= 0 ) escribir( “El número debe ser positivo“ ) fin_si /* Fin del anidamiento */ mientras( numero <= 0 ) /* Fin del anidamiento */ ...
Solución ... escribir( "La tabla de multiplicar de ", numero, " es: " ) /* Inicio del anidamiento */ para i ← 1 hasta 10 hacer escribir( numero, " * ", i, " = ", i * numero ) fin_para /* Fin del anidamiento */ escribir( "¿Desea ver otra tabla (s/n)?: " ) leer( seguir ) mientras( seguir <> 'n' ) fin Intente elaborar el diagrama de flujo
Gracias por su atención http://programacion-udo-anaco.webnode.es