Professional Documents
Culture Documents
Clase 2. Algoritmos
Prof. Gonzalo Mller
gmullerb@mail.com
Clase Anterior
Pautas de curso.
www.scribd.com/gmullerb
Definicin de Programador. Fases de la Programacin. Metodologa para resolucin de un problema: Definicin, Anlisis, Diseo del algoritmo, Prueba del Algoritmo e Implementacin Algoritmo Definicin, Caractersticas, Partes.
Programacin Prof. Gonzalo Mller Clase 2 GM - 2
Representacin de un algoritmo
Existen bsicamente tres formas de representar los algoritmos: Pseudo cdigo. Diagramas de Flujo. Diagramas Rectangulares Estructurados.
Representacin de un algoritmo
Pseudo Cdigo (PC): Expresa a travs de frases cada uno de los pasos Casi cdigo. Exige una adecuada indentacin. Se debe enfocar a la lgica y no hay los detalles de implementacin. Es flexible. Permite una analoga que facilita la codificacin.
Representacin de un algoritmo
Diagramas de Flujo (DF): Constituyen una representacin grfica de la secuencia de pasos a realizar. La operaciones se escriben con smbolos normalizados. Las lneas de flujo indica la secuencia de ejecucin. Pueden resultar inadecuados debido a que propicia algoritmos no estructurados (excesivas lneas de flujo).
Representacin de un algoritmo
Diagramas Rectangulares Estructurados (DRE): Constituyen una representacin grfica de la secuencia de pasos a realizar. La operaciones se escriben con smbolos normalizados. Tambin conocidos como: Diagramas de NassiSchneiderman. Permiten mantener el orden. Permiten una analoga que facilita la codificacin.
Representacin de un algoritmo
Smbolos Bsico de un Diagramas de Flujo: Lneas de Flujo: Establece la direccin de la secuencia de pasos
Una lnea de flujo con la direccin saliendo de un bloque, se conoce como una lnea de flujo de salida del bloque. Una lnea de flujo con la direccin entrando en un bloque, se conoce como una lnea de flujo de entrada del bloque.
Representacin de un algoritmo
Bloque Terminal: Seala el inicio o el fin del algoritmo.
Inicio
Fin
Representacin de un algoritmo
Bloque Terminal: Seala el inicio o el fin del algoritmo.
Inicio
Nombre
Fin
Representacin de un algoritmo
Bloque Terminal: Seala el inicio o el fin del algoritmo.
Nombre
El bloque inicio siempre tiene solo una lnea y es de salida El bloque fin siempre tiene solo lneas de entrada
Fin
Representacin de un algoritmo
Bloque Proceso: Se utiliza para indicar un proceso operacin.
Representacin de un algoritmo
Bloque Proceso: Se utiliza para indicar un proceso operacin.
El bloque de proceso siempre tiene una lnea de salida (puede tener varias de entrada)
Programacin Prof. Gonzalo Mller Clase 2 GM - 12
Representacin de un algoritmo
Bloque Genrico Entrada-Salida: Indica una operacin de entrada salida sin especificar un dispositivo especifico para realizar la operacin.
Representacin de un algoritmo
Bloque Genrico Entrada-Salida: Indica una operacin de entrada salida sin especificar un dispositivo especifico para realizar la operacin.
El bloque entrada-salida siempre tiene una lnea de salida (puede tener varias de entrada)
Programacin Prof. Gonzalo Mller Clase 2 GM - 14
Representacin de un algoritmo
Bloque de Decisin: Establece la direccin de los subsecuentes pasos en funcin de una condicin dada.
Representacin de un algoritmo
Bloque de Decisin: Establece la direccin de los subsecuentes pasos en funcin de una condicin dada.
Representacin de un algoritmo
Bloque de Decisin: Establece la direccin de los subsecuentes pasos en funcin de una condicin dada.
El bloque de decisin siempre tiene dos de salida (puede tener varias de entrada)
Programacin Prof. Gonzalo Mller Clase 2 GM - 17
Representacin de un algoritmo
Conectores: Establece la conexin entre dos bloques que espacialmente no puede ser conectados.
Se usan en pares.
Representacin de un algoritmo
Reglas de construccin de Diagramas de Flujo: Contiene un nico bloque terminal que indica inicio. Puede contener varios bloques terminal que indican el final. Debe ser organizado de tal forma que la secuencia sea leda de arriba abajo y de izquierda a derecha.
Representacin de un algoritmo
Cada bloque debe tener al menos una lnea de flujo de entrada, exceptuando el bloque de inicio. Cada bloque puede tener a lo sumo una lnea de flujo de salida, exceptuando el bloque de decisin. El bloque de decisin debe tener dos lneas de flujo de salida.
Representacin de un algoritmo
Ejemplo: Construir el diagrama de flujo para leer y sumar dos nmeros.
Representacin de un algoritmo
Ejemplo: Construir el diagrama de flujo para indicar si un nmero es mayor o igual que otro.
Representacin de un algoritmo
Ejemplo: Construir el diagrama de flujo para comprar el libro de Harry Potter 8.
Ejercicios
Construir el diagrama de flujo para: a. Bajar de peso. b. Lavar la loza. c. Restar 2 de un nmero si es negativo y dejarlo igual de lo contrario. Fase 1: Anlisis y Diseo: DES y DF
Representacin de un algoritmo
Reglas de construccin de DRE: Toda la secuencia de pasos se coloca dentro de un rectngulo:
Paso 1 Paso 2 Paso n
Representacin de un algoritmo
En el primer bloque se debe colocar el nombre del algoritmo. En el ltimo bloque se debe colocar Fin.
Nombre
Paso 1 Paso 2 FIN
Programacin Prof. Gonzalo Mller Clase 2 GM - 26
Representacin de un algoritmo
Reglas de construccin de Pseudo Cdigo: En la primera lnea se debe colocar el nombre del algoritmo. Todo el cuerpo del algoritmo debe ser encerrado entre llaves {}. Nombre
{ Paso 1 Paso 2 Paso n }
Programacin Prof. Gonzalo Mller Clase 2 GM - 27
Representacin de un algoritmo
Ejemplo 2.2: Construir el PC y DRE para leer y sumar dos nmeros.
Estructuras Bsicas
Todo algoritmo se construye con 3 estructuras bsicas:
Secuencial. Selectiva. Repetitiva.
Estructura Secuencial
Un paso se ejecuta uno detrs de otro.
PC
Paso 1 Paso 2 Paso n Paso n Paso 2
DF
Paso 1
DRE
Estructura Secuencial
Ejemplo 2.3: Construir el PC y DRE para leer y sumar dos nmeros.
Estructura Selectiva
Una secuencia de pasos se ejecuta dependiendo de una condicin dada. Tambin se le llama condicional. Dos tipos:
Sencilla Doble
Estructura Selectiva
Estructura Condicional Sencilla: Se ejecuta una instruccin si la condicin dada es verdadera.
PC
Si (Condicin) { Paso } Condicin
V F V
DF
DRE
Condicin Paso
Paso
Ejemplo: fruta
Programacin Prof. Gonzalo Mller Clase 2 GM - 33
Estructura Selectiva
Estructura Condicional Sencilla: Se ejecuta una instruccin si la condicin dada es verdadera.
PC
Si (Condicin) { Paso } Condicin
V F V
DF
DRE
Condicin Paso
Paso
Estructura Selectiva
Ejemplo 2.4: Construir el DF, DRE y PC del algoritmo para convertir un nmero en negativo si es positivo.
Estructura Selectiva
El paso contenido en las estructuras selectiva es ejecutado SIEMPRE y cuando la condicin sea VERDADERA
Estructura Selectiva
Estructura Condicional Doble: Se ejecuta una de dos de instrucciones dependiendo de la condicin dada.
PC
Si (Condicin) { Paso } sino { Paso }
DF
DRE
Condicin
Condicin
V F
Paso
Paso
Paso
Paso
Estructura Selectiva
Ejemplo 2.5: Construir el DF, DRE y PC del algoritmo para convertir un numero segn la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario.
Estructura Repetitiva
Una secuencia de pasos se repite en forma consecutiva dependiendo de una condicin dada. Tambin se le llama Bucle o Lazo. Cada repeticin se conoce como ciclo o iteracin. Dos tipos:
Hacer Mientras
Se ejecuta al menos una vez la secuencia.
Mientras
Puede que nunca se ejecute la secuencia.
Programacin Prof. Gonzalo Mller Clase 2 GM - 39
Estructura Repetitiva
Estructura Repetitiva Hacer Mientras: Se repite una instruccin mientras una condicin dada sea verdadera.
PC
Hacer { Paso } Mientras (Condicin)
F
DF
DRE
Paso Condicin
V
Estructura Repetitiva
Estructura Repetitiva Hacer Mientras: Se repite una instruccin mientras una condicin dada sea verdadera.
PC
Hacer { Paso } Mientras (Condicin)
F
DF
DRE
Paso Condicin
V
Estructura Repetitiva
Ejemplo 2.6: Se requiere leer un nmero no negativo. Construir el DF, DRE y PC del algoritmo para leer un numero hasta que este sea vlido, y presentar en la salida.
Estructura Repetitiva
Estructura Repetitiva Mientras: Se repite una instruccin mientras una condicin dada sea verdadera.
PC
Mientras (Condicin ) { Paso }
DF
F
DRE
Condicin
V
Estructura Repetitiva
Estructura Repetitiva Mientras: Se repite una instruccin mientras una condicin dada sea verdadera.
PC
Mientras (Condicin ) { Paso }
DF
F
DRE
Condicin
V
Estructura Repetitiva
Ejemplo 2.7: Construir el DF, DRE y PC de un algoritmo para convertir un numero dado, incrementndolo de 2 de 2 mientras sea negativo.
Estructura Repetitiva
El paso contenido en una estructura repetitiva es ejecutado SIEMPRE y cuando la condicin sea VERDADERA
Las corridas en fro son de gran utilidad para algoritmos con estructuras repetitivas
Representacin de un algoritmo
Cuadro comparativo:
PC Fcil codificacin Mantiene el Orden Rpida Comprensin Uso Sencillo Si +/ No +/ DF No No +/ Si DRE Si Si +/ Si
Corrida en fro
La corrida en fro permite realizar la prueba de un algoritmo antes de pasar a la codificacin Partiendo del Problema se definen una o ms pruebas. Se debe conocer de antemano o estimar que resultados generan los datos de entrada para cada prueba: Entrada Salida
conocida 1 Entrada conocida Salida esperada esperada 1
n
Programacin Prof. Gonzalo Mller Clase 2 GM - 49
Corrida en fro
Para cada prueba se debe ejecutar uno a uno los pasos del algoritmo desde los valores de entrada hasta obtener los valores de salida.
Entrada conocida Entrada conocida Salida esperada Salida no esperada
Corrida en fro
Una de las formas de realizar una corrida en fro es utilizando una tabla. La tabla de corrida en fro debe contener: 1. Sentencia a ejecutar. 2. Columnas para las datos utilizados. 3. Columnas para las condiciones. 4. Una columna de salida.
Programacin Prof. Gonzalo Mller Clase 2 GM - 51
Corrida en fro
A partier del Algoritmo se construye la Tabla:
Sentencia
Dato 1
Dato 2
Dato N
Condicin 1
Condicin 2
Condicin M
Salida
Datos
Condiciones
Corrida en fro
Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero segn la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario entradas y salidas, requerimientos, teora asociada, restricciones, etc.
Programacin Prof. Gonzalo Mller Clase 2 GM - 53
1. Se realiza el anlisis
Corrida en fro
Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero segn la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario
Entrada conocida 2 -1 0 Salida esperada 1 0 -1
Programacin Prof. Gonzalo Mller Clase 2 GM - 54
Corrida en fro
Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero segn la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario
Algoritmo Convertidor Leer n
V
n<0
n=n+1
n=n-1
Escribir n Fin
Programacin Prof. Gonzalo Mller Clase 2 GM - 55
3. Se construye el algoritmo
Corrida en fro
Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero segn la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario
Algoritmo Convertidor Leer n
V
Corrida en fro
Sentencia
n<0
n=n+1
n=n-1
Escribir n Fin
Programacin Prof. Gonzalo Mller Clase 2 GM - 56
4. Se construye la tabla
Corrida en fro
Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero segn la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario
Algoritmo Convertidor Leer n
V
Corrida en fro
Sentencia
n Datos
n<0
n=n+1
n=n-1
Escribir n Fin
Programacin Prof. Gonzalo Mller Clase 2 GM - 57
4. Se construye la tabla
Corrida en fro
Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero segn la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario
Algoritmo Convertidor Leer n
V
Corrida en fro
Sentencia
n<0 Condiciones
n<0
n=n+1
n=n-1
Escribir n Fin
Programacin Prof. Gonzalo Mller Clase 2 GM - 58
4. Se construye la tabla
Corrida en fro
Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero segn la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario
Algoritmo Convertidor Leer n
V
Corrida en fro
Sentencia
n<0
Salida
n<0
n=n+1
n=n-1
Escribir n Fin
Programacin Prof. Gonzalo Mller Clase 2 GM - 59
4. Se construye la tabla
Corrida en fro
Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero segn la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario
Algoritmo Convertidor Leer n
V
Corrida en fro
Entrada conocida
Sentencia
n<0
Salida
2
F
n<0
n=n+1
n=n-1
Escribir n Fin
Programacin Prof. Gonzalo Mller Clase 2 GM - 60
Corrida en fro
Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero segn la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario
Algoritmo Convertidor Leer n
V
Corrida en fro
Entrada conocida
Sentencia
n
2
n<0
Salida
2
F
n<0
Leer n
n=n+1
n=n-1
Escribir n Fin
Programacin Prof. Gonzalo Mller Clase 2 GM - 61
Corrida en fro
Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero segn la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario
Algoritmo Convertidor Leer n
V
Corrida en fro
Sentencia
n
2
n<0
2<0
Salida
n<0
Leer n F si
n=n+1
n=n-1
Escribir n Fin
Programacin Prof. Gonzalo Mller Clase 2 GM - 62
Corrida en fro
Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero segn la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario
Algoritmo Convertidor Leer n
V
Corrida en fro
Sentencia
n
2
n<0
2<0 F
Salida
n<0
Leer n F si
n=n+1
n=n-1
Escribir n Fin
Programacin Prof. Gonzalo Mller Clase 2 GM - 63
Corrida en fro
Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero segn la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario
Algoritmo Convertidor Leer n
V
Corrida en fro
Sentencia
n
2
n<0
2<0 F
Salida
n<0
Leer n F si n=n-1
n=n+1
n=n-1
2-1 1
Escribir n Fin
Corrida en fro
Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero segn la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario
Algoritmo Convertidor Leer n
V
Corrida en fro
Sentencia
n
2
n<0
2<0 F
Salida
n<0
Leer n F si n=n-1
Escribir n
n=n+1
n=n-1
2-1 1 1
Escribir n Fin
Corrida en fro
Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero segn la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario
Algoritmo Convertidor Leer n
V
Corrida en fro
Sentencia
n
2
n<0
2<0 F
Salida
n<0
Leer n F si n=n-1
Escribir n
n=n+1
n=n-1
2-1 1 1
Escribir n Fin
Corrida en fro
Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero segn la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario
Algoritmo Convertidor Leer n
V
Corrida en fro
Entrada conocida
Sentencia
n
2
n<0
2<0 F
Salida
2
F
n<0
Leer n si n=n-1
Escribir n
n=n+1
n=n-1
2-1 1 1
Salida esperada
Escribir n Fin
Corrida en fro
Corrida en fro
Tratar de definir tantos casos de pruebas como caminos crticos tenga el algoritmo de tal manera de evaluarlos todos
Convertidor Leer n
V
n<0
n=n+1
n=n-1
Escribir n Fin
Corrida en fro
Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.7.
Ejercicio
2. Para cada uno de los siguientes problemas: a) Sumar 3 nmeros. b) Sumar 2 nmeros si son iguales y los multiplique de lo contrario. c) Dividir 2 nmeros, el menor entre el mayor. d) Leer nmeros hasta que el ledo sea mayor que 5 y escribir en la salida el ltimo nmero. e) Disminuir un nmero de 2 en 2 hasta que este sea negativo y escribir resultado en la salida. Fase 1: Anlisis y Diseo: DES, DF y DRE. Realizar una corrida en fro.
Programacin Prof. Gonzalo Mller Clase 2 GM - 71
Resumen
Representacin de un algoritmo: Pseudo Cdigo. Diagramas de Flujo. Diagramas de Rectangulares Estructurados. Estructura Secuencial. Estructura Selectiva: Sencilla Doble Estructura Repetitiva: Hacer Mientras Mientras Corrida en fro
Programacin Prof. Gonzalo Mller Clase 2 GM - 72