curso básico de algoritmos
Post on 09-Jan-2016
74 Views
Preview:
DESCRIPTION
TRANSCRIPT
Curso Básico de AlgoritmosExponente: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 CONTROLEn 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, iterativas o de salto.
ESTRUCTURAS SELECTIVASEn 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 SimpleConsiste 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:
Diagrama de Flujo Sintaxis
si ( <expresión_lógica> )
<bloque_de_instrucciones>
fin_si
Estructura Selectiva DobleSe 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:
Diagrama de Flujo Sintaxis
si ( <expresión_lógica> )
<bloque_de_instrucciones_1>
sino
<bloque_de_instrucciones_2>
fin_si
Estructura Selectiva MúltipleUna 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:
Diagrama de Flujo Sintaxis
segun_sea ( <expresión> )
<lista_de_valores_1> : <bloque_de_instrucciones_1>
<lista_de_valores_2> : <bloque_de_instrucciones_2>
...
<lista_de_valores_n> : <bloque_de_instrucciones_n>
[ sino : <bloque_de_instrucciones_n+1> ]
fin_segun_sea
Estructuras Selectivas AnidadasEste 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.
EjercicioSe 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ónalgoritmo Signo_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_seafin
Intente elaborar el diagrama de flujo
ESTRUCTURAS ITERATIVASMuchos 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.
Diagrama de Flujo Sintaxis
mientras ( <expresión_lógica> )
<bloque_de_instrucciones>
fin_mientras
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 contador de 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-mientras es 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.
Diagrama de Flujo Sintaxis
hacer
<bloque_de_instrucciones>
mientras ( <expresión_lógica> )
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”
escribir("El resultado es: ", cuadrado)
INICIO
FIN
leer(valor)
cuadrado ← valor ^ 2
escribir("Ingrese un número entero positivo: ")
valor <= 0
Sí
No
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:
Diagrama de Flujo Sintaxis
para <variable> ← <valor_inicial>
hasta <valor_final>
[ incremento <valor_incremento> ]
hacer
<bloque_de_instrucciones>
fin_para
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_parafin
Ciclo “Para”
escribir(contador)Sí
No
contador ← 1 10
incremento 1
restador ← 10 1
decremento 1escribir(restador)
inicio
fin
No
Sí
Estructuras Iterativas AnidadasAl 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.
EjercicioSe 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ónalgoritmo Tabla_de_multiplicar_de_un_numero
variables caracter seguir 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ónhttp://programacion-udo-anaco.webnode.es
top related