Descripción: Clase 2 de Programación, Prof. Gonzalo Müller
Programación
Clase 2. Algoritmos Prof. Gonzalo Müller
[email protected]
Facultad de Ingeniería Universidad Central de Venezuela
Clase Anterior
Pautas de curso. www.scribd.com/gmullerb
Definición de Programador. Fases de la Programación. Metodología para resolución de un problema: Definición, Análisis, Diseño del algoritmo, Prueba del Algoritmo e Implementación
Algoritmo Definición, Características, Partes. Programación – Prof. Gonzalo Müller – Clase 2 – GM - 2
Representación de un algoritmo
Existen básicamente tres formas de representar los algoritmos: Pseudo código. Diagramas de Flujo. Diagramas Rectangulares Estructurados.
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 3
Representación de un algoritmo
Pseudo Código (PC): Expresa a través de frases cada uno de los pasos Casi código. Exige una adecuada indentación. Se debe enfocar a la lógica y no hay los detalles de implementación. Es flexible. Permite una analogía que facilita la codificación.
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 4
Representación de un algoritmo
Diagramas de Flujo (DF): Constituyen una representación gráfica de la secuencia de pasos a realizar. La operaciones se escriben con símbolos normalizados. Las líneas de flujo indica la secuencia de ejecución. Pueden resultar inadecuados debido a que propicia algoritmos no estructurados (excesivas líneas de flujo).
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 5
Representación de un algoritmo
Diagramas Rectangulares Estructurados (DRE): Constituyen una representación gráfica de la secuencia de pasos a realizar. La operaciones se escriben con símbolos normalizados. También conocidos como: Diagramas de NassiSchneiderman. Permiten mantener el orden. Permiten una analogía que facilita la codificación.
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 6
Representación de un algoritmo
Símbolos Básico de un Diagramas de Flujo: Líneas de Flujo: Establece la dirección de la secuencia de pasos
Una línea de flujo con la dirección saliendo de un bloque, se conoce como una línea de flujo de salida del bloque.
Una línea de flujo con la dirección entrando en un bloque, se conoce como una línea de flujo de entrada del bloque.
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 7
Representación de un algoritmo Bloque Terminal: Señala el inicio o el fin del algoritmo. Inicio
Fin
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 8
Representación de un algoritmo Bloque Terminal: Señala el inicio o el fin del algoritmo. Inicio
Nombre
Fin
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 9
Representación de un algoritmo Bloque Terminal: Señala el inicio o el fin del algoritmo. Nombre El bloque inicio siempre tiene solo una línea y es de salida
El bloque fin siempre tiene solo líneas de entrada
Fin
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 10
Representación de un algoritmo Bloque Proceso: Se utiliza para indicar un proceso ó operación.
…
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 11
Representación de un algoritmo Bloque Proceso: Se utiliza para indicar un proceso ó operación.
…
El bloque de proceso siempre tiene una línea de salida (puede tener varias de entrada) Programación – Prof. Gonzalo Müller – Clase 2 – GM - 12
Representación de un algoritmo Bloque Genérico Entrada-Salida: Indica una operación de entrada salida sin especificar un dispositivo especifico para realizar la operación.
…
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 13
Representación de un algoritmo Bloque Genérico Entrada-Salida: Indica una operación de entrada salida sin especificar un dispositivo especifico para realizar la operación.
…
El bloque entrada-salida siempre tiene una línea de salida (puede tener varias de entrada) Programación – Prof. Gonzalo Müller – Clase 2 – GM - 14
Representación de un algoritmo Bloque de Decisión: Establece la dirección de los subsecuentes pasos en función de una condición dada.
…
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 15
Representación de un algoritmo Bloque de Decisión: Establece la dirección de los subsecuentes pasos en función de una condición dada.
…
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 16
Representación de un algoritmo Bloque de Decisión: Establece la dirección de los subsecuentes pasos en función de una condición dada.
…
El bloque de decisión siempre tiene dos de salida (puede tener varias de entrada) Programación – Prof. Gonzalo Müller – Clase 2 – GM - 17
Representación de un algoritmo Conectores: Establece la conexión entre dos bloques que espacialmente no puede ser conectados.
Se usan en pares.
…
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 18
Representación de un algoritmo
Reglas de construcción 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 leída de arriba abajo y de izquierda a derecha.
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 19
Representación de un algoritmo Cada bloque debe tener al menos una línea de flujo de entrada, exceptuando el bloque de inicio. Cada bloque puede tener a lo sumo una línea de flujo de salida, exceptuando el bloque de decisión. El bloque de decisión debe tener dos líneas de flujo de salida.
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 20
Representación de un algoritmo Ejemplo: Construir el diagrama de flujo para leer y sumar dos números.
Fase 1: Análisis y Diseño: DES y DF
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 21
Representación de un algoritmo Ejemplo: Construir el diagrama de flujo para indicar si un número es mayor o igual que otro.
Fase 1: Análisis y Diseño: DES y DF
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 22
Representación de un algoritmo Ejemplo: Construir el diagrama de flujo para comprar el libro de Harry Potter 8.
Fase 1: Análisis y Diseño: DES y DF
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 23
Ejercicios Construir el diagrama de flujo para: a. Bajar de peso. b. Lavar la loza. c. Restar 2 de un número si es negativo y dejarlo igual de lo contrario. Fase 1: Análisis y Diseño: DES y DF
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 24
Representación de un algoritmo
Reglas de construcción de DRE: Toda la secuencia de pasos se coloca dentro de un rectángulo: Paso 1 Paso 2 … Paso n
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 25
Representación 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 Programación – Prof. Gonzalo Müller – Clase 2 – GM - 26
Representación de un algoritmo
Reglas de construcción de Pseudo Código: En la primera línea se debe colocar el nombre del algoritmo. Todo el cuerpo del algoritmo debe ser encerrado entre llaves {}. Nombre { Paso 1 Paso 2 … Paso n } Programación – Prof. Gonzalo Müller – Clase 2 – GM - 27
Representación de un algoritmo Ejemplo 2.2: Construir el PC y DRE para leer y sumar dos números.
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 28
Estructuras Básicas Todo algoritmo se construye con 3 estructuras básicas:
Secuencial.
Selectiva.
Repetitiva.
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 29
Estructura Secuencial Un paso se ejecuta uno detrás de otro. PC Paso 1
DF Paso 1
Paso 2 …
Paso 2
Paso n Paso n
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 30
DRE
Paso 1 Paso 2 Paso n
Estructura Secuencial Ejemplo 2.3: Construir el PC y DRE para leer y sumar dos números.
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 31
Estructura Selectiva Una secuencia de pasos se ejecuta dependiendo de una condición dada. También se le llama condicional. Dos tipos: Sencilla Doble
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 32
Estructura Selectiva
Estructura Condicional Sencilla: Se ejecuta una instrucción si la condición dada es verdadera. PC
DF
DRE
Si (Condición) { Paso }
Condición
F
Condición V
V
Paso
Paso
Ejemplo: fruta Programación – Prof. Gonzalo Müller – Clase 2 – GM - 33
Estructura Selectiva
Estructura Condicional Sencilla: Se ejecuta una instrucción si la condición dada es verdadera. PC
DF
DRE
Si (Condición) { Paso }
Condición
F
Condición V
V
Paso
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 34
Paso
Estructura Selectiva Ejemplo 2.4: Construir el DF, DRE y PC del algoritmo para convertir un número en negativo si es positivo.
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 35
Estructura Selectiva
El paso contenido en las estructuras selectiva es ejecutado SIEMPRE y cuando la condición sea VERDADERA
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 36
Estructura Selectiva
Estructura Condicional Doble: Se ejecuta una de dos de instrucciones dependiendo de la condición dada.
PC Si (Condición) { Paso } sino { Paso’ }
DF
V
Condición
DRE
F
Condición V
Paso
Paso’
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 37
Paso
F
Paso’
Estructura Selectiva Ejemplo 2.5: Construir el DF, DRE y PC del algoritmo para convertir un numero según la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario.
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 38
Estructura Repetitiva Una secuencia de pasos se repite en forma consecutiva dependiendo de una condición dada. También se le llama Bucle o Lazo. Cada repetición se conoce como ciclo o iteración. Dos tipos:
Hacer Mientras
Se ejecuta al menos una vez la secuencia.
Mientras
Puede que nunca se ejecute la secuencia. Programación – Prof. Gonzalo Müller – Clase 2 – GM - 39
Estructura Repetitiva
Estructura Repetitiva Hacer Mientras: Se repite una instrucción verdadera.
mientras
PC Hacer { Paso }
una
condición
DF
dada
sea
DRE
Paso
Paso
Mientras (Condición) Condición V
Mientras (Condición) F
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 40
Estructura Repetitiva
Estructura Repetitiva Hacer Mientras: Se repite una instrucción verdadera.
mientras
PC Hacer { Paso }
una
condición
DF
dada
sea
DRE
Paso
Paso
Mientras (Condición) Condición V
Mientras (Condición) F
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 41
Estructura Repetitiva Ejemplo 2.6: Se requiere leer un número no negativo. Construir el DF, DRE y PC del algoritmo para leer un numero hasta que este sea válido, y presentar en la salida.
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 42
Estructura Repetitiva
Estructura Repetitiva Mientras: Se repite instrucción verdadera.
mientras
PC Mientras (Condición ) { Paso }
una
condición
DF
una dada sea
DRE
Condición
F
Mientras (Condición) V
Paso
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 43
Paso
Estructura Repetitiva
Estructura Repetitiva Mientras: Se repite instrucción verdadera.
mientras
PC Mientras (Condición ) { Paso }
una
condición
DF
una dada sea
DRE
Condición
F
Mientras (Condición) V
Paso
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 44
Paso
Estructura Repetitiva Ejemplo 2.7: Construir el DF, DRE y PC de un algoritmo para convertir un numero dado, incrementándolo de 2 de 2 mientras sea negativo.
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 45
Estructura Repetitiva
El paso contenido en una estructura repetitiva es ejecutado SIEMPRE y cuando la condición sea VERDADERA
Las corridas en frío son de gran utilidad para algoritmos con estructuras repetitivas
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 46
Representación de un algoritmo
Cuadro comparativo:
Fácil codificación Mantiene el Orden Rápida Comprensión Uso Sencillo
PC
DF
DRE
Si
No
Si
+/–
No
Si
No
+/–
+/–
+/–
Si
Si
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 47
Metodología para resolución de un problema Definición del problema Análisis del problema Diseño del algoritmo
Prueba del Algoritmo
Codificación del Algoritmo Programación – Prof. Gonzalo Müller – Clase 2 – GM - 48
Corrida en frío La corrida en frío permite realizar la prueba de un algoritmo antes de pasar a la codificación
Partiendo del Problema se definen una o más pruebas. Se debe conocer de antemano o estimar que resultados generan los datos de entrada para cada prueba: Entrada Salida conocida 1
esperada 1 …
Entrada conocida
Salida esperada
n
n Programación – Prof. Gonzalo Müller – Clase 2 – GM - 49
Corrida en frío
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
Salida esperada
Algoritmo Correcto
Entrada conocida
Salida no esperada
Algoritmo Incorrecto
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 50
Corrida en frío Una de las formas de realizar una corrida en frío es utilizando una tabla.
La tabla de corrida en frío debe contener: 1. Sentencia a ejecutar. 2. Columnas para las datos utilizados. 3. Columnas para las condiciones. 4. Una columna de salida. Programación – Prof. Gonzalo Müller – Clase 2 – GM - 51
Corrida en frío
A partier del Algoritmo se construye la Tabla: Sentencia
Dato 1
Dato 2
…
…
…
…
Datos
Dato N
Condición 1
Condición 2
…
…
…
…
Condiciones
Programación – Prof. Gonzalo Müller – Clase 2 – GM - 52
Condición M
Salida
…
…
Corrida en frío Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero según la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario • entradas y salidas, • requerimientos, • teoría asociada, • restricciones, • etc. Programación – Prof. Gonzalo Müller – Clase 2 – GM - 53
1. Se realiza el análisis
Corrida en frío Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero según la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario Entrada conocida 2
Salida esperada 1
-1
0
0
-1 Programación – Prof. Gonzalo Müller – Clase 2 – GM - 54
2. Se definen las pruebas
Corrida en frío Ejemplo: Realizar una corrida en frio para el algoritmo del ejemplo 2.5. Convertir un numero según la siguiente regla: Sumar 1 si es negativo o Restar 1 de lo contrario Algoritmo Convertidor Leer n V
n