curso básico de algoritmos

30
Curso Básico de Algoritmos Exponente: Ing. Dulmar Tovar 2º PARTE

Upload: meryl

Post on 09-Jan-2016

72 views

Category:

Documents


2 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Curso Básico de Algoritmos

Curso Básico de AlgoritmosExponente:Ing. Dulmar Tovar

2º PARTE

Page 2: Curso Básico de Algoritmos

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ciclo “Hacer-Mientras”

escribir("El resultado es: ", cuadrado)

INICIO

FIN

leer(valor)

cuadrado ← valor ^ 2

escribir("Ingrese un número entero positivo: ")

valor <= 0

No

Page 22: Curso Básico de Algoritmos

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

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

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

Ciclo “Para”

escribir(contador)Sí

No

contador ← 1 10

incremento 1

restador ← 10 1

decremento 1escribir(restador)

inicio

fin

No

Page 26: Curso Básico de Algoritmos

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

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

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

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

Gracias por su atenciónhttp://programacion-udo-anaco.webnode.es