Curso Básico de Algoritmos
description
Transcript of Curso Básico de Algoritmos
![Page 1: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/1.jpg)
Curso Básico de AlgoritmosExponente:Ing. Dulmar Tovar
2º PARTE
![Page 2: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/2.jpg)
CONTENIDO Estructuras de Control Estructuras Selectivas
Simple Doble Múltiple Anidamiento
Estructuras Iterativas Mientras Hacer-Mientras Para Anidamiento
![Page 3: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/3.jpg)
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.
![Page 4: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/4.jpg)
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.
![Page 5: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/5.jpg)
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
![Page 6: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/6.jpg)
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
![Page 7: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/7.jpg)
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
![Page 8: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/8.jpg)
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.
![Page 9: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/9.jpg)
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.".
![Page 10: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/10.jpg)
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" ) ...
![Page 11: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/11.jpg)
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
![Page 12: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/12.jpg)
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.
![Page 13: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/13.jpg)
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
![Page 14: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/14.jpg)
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
![Page 15: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/15.jpg)
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.
![Page 16: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/16.jpg)
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.
![Page 17: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/17.jpg)
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
![Page 18: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/18.jpg)
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
![Page 19: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/19.jpg)
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> )
![Page 20: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/20.jpg)
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ú)
![Page 21: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/21.jpg)
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
![Page 22: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/22.jpg)
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.
![Page 23: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/23.jpg)
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
![Page 24: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/24.jpg)
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
![Page 25: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/25.jpg)
Ciclo “Para”
escribir(contador)Sí
No
contador ← 1 10
incremento 1
restador ← 10 1
decremento 1escribir(restador)
inicio
fin
No
Sí
![Page 26: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/26.jpg)
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.
![Page 27: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/27.jpg)
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.
![Page 28: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/28.jpg)
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 */ ...
![Page 29: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/29.jpg)
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
![Page 30: Curso Básico de Algoritmos](https://reader036.fdocuments.co/reader036/viewer/2022070406/5681412e550346895dad11c9/html5/thumbnails/30.jpg)
Gracias por su atenciónhttp://programacion-udo-anaco.webnode.es