Introducción a los Algoritmos
Introducción a la Programación
Unidad 2- Algoritmos
Concepto de Algoritmo
◦ Un algoritmo es una secuencia ordenada de acciones (llamadas
“acciones primitivas”) que pueden ser ejecutadas por una máquina y
que dan la solución a un problema dado.
◦ Un algoritmo es un método para resolver un problema mediante una
serie de pasos.
◦ Los algoritmos son independientes tanto del lenguaje de
programación en que se expresan como de la computadora que los
ejecuta.
◦ En cada problema el algoritmo se puede expresar en un lenguaje
diferente de programación y ejecutarse en una computadora distinta;
sin embargo, el algoritmo será siempre el mismo.
Unidad 2- Algoritmos
Propiedades de los Algoritmos
◦ Un algoritmo debe ser preciso e indicar el orden de realización de
cada paso.
◦ Un algoritmo debe estar definido. Si se sigue un algoritmo dos
veces, se debe obtener el mismo resultado cada vez.
◦ Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe
terminar en algún momento; o sea, debe tener un numero finito de
pasos.
Unidad 2- Algoritmos
◦ La definición de un algoritmo debe describir tres partes: Entrada,
Proceso y Salida.
Ejemplo:
Un cliente ejecuta un pedido a una fábrica. La fábrica examina
en su banco de datos la ficha del cliente, si el cliente es
solvente entonces la empresa acepta el pedido; en caso
contrario, rechazará el pedido.
Pasos del Algoritmo:
1. Inicio.
2. Leer el pedido.
3. Examinar la ficha del cliente.
4. Si el cliente es solvente, aceptar pedido; en caso contrario, recha zar pedido.
5. Fin.
Unidad 2- Algoritmos
Fases en la resolución de problemas
◦ El proceso de resolución de un problema conduce a la escritura
de un programa y a su ejecución. Se puede considerar una serie
de fases o pasos comunes, que generalmente se deben seguir.
◦ Las fases de resolución de un problema con computadora son:
Análisis del problema.
Diseño del algoritmo.
Codificación.
Compilación y ejecución.
Verificación.
Depuración.
Mantenimiento.
Documentación.
Unidad 2- Algoritmos
Análisis del problema
Esta fase requiere una clara definición, donde se contemple
exactamente lo que debe hacer el programa y el resultado o solución
deseada.
Para poder definir bien un problema es conveniente responder a las
siguientes preguntas:
¿,Qué entradas se requieren? (tipo y cantidad).
¿Cuál es la salida deseada? (tipo y cantidad).
¿Qué método produce la salida deseada?
Unidad 2- Algoritmos
◦ Diseño del algoritmo
En la etapa de diseño se determina como hace el programa la tarea
solicitada. Los métodos más eficaces para el proceso de diseño se
basan en el conocido por divide y vencerás.
La resolución de un problema complejo se realiza dividiendo el
problema en subprogramas y a continuación dividir estos
subprogramas en otros de nivel más bajo, hasta que pueda ser
implementada una solución en la computadora. Este método se
conoce técnicamente como diseño descendente (top-down) o
modular.
Cada subprograma es resuelto mediante un módulo (subprograma)
que tiene un solo punto de entrada y un solo punto de salida.
Unidad 2- Algoritmos
◦ Enunciado 1:
Preparar una tortilla de papas de 3 huevos.
Acciones:
T.1 meclar papas, huevos y algo de sal en un recipiente
T.2 Freirla
Entrada: ingredientes y utensilios.
Proceso: elaboración de la receta en la cocina.
Salida: terminación del plato.
Unidad 2- Algoritmos
◦ Enunciado 1: Entrada: ingredientes y utensilios
Preparar una tortilla de papas de 3 huevos. empleados.
Proceso: elaboración de la receta en
Acciones: la cocina.
T.1 meclar papas, huevos y una pizca de Sal en un recimpiente
t1.1 Cortar las papas en láminas
Salida: terminación del plato (por
t1.2 Dorar las papas ejemplo, cordero).
T1.2.1 colocar las papas en el recipiente
Si las papas estan doradas
entonces
T1.2.2 retirarlas
sino
T.1.2.3 dejarlas un tiempo mas
t1.3 Batir los huevos en un recipiente
T1.3.1 tomar un huevo de la mesada x
T1.3.2 tomar un huevo de la mesada 3
T1.3.3 cascar el huevo y verter su contenido en el recipiente
T1.3.4 tirar la cascara en el recipiente de residuos
t1.4 Verter las papas en el recipiente y echar una pizca de sal
T.2 Freirla
t2.1 Calentar el aceite en la sarten
t2.2 verter el contenido del recipiente en la sarten
t2.3 dorar la tortilla
Unidad 2- Algoritmos
Herramientas de Programación para diseñar algoritmos
◦ Para representar un algoritmo se debe utilizar algún método que
permita independizar dicho algoritmo del lenguaje de
programación elegido.
◦ Ello permitirá que un algoritmo pueda ser codificado
indistintamente en cualquier lenguaje.
◦ Para conseguir este objetivo se precisa que el algoritmo sea
representado gráfica o numéricamente para su transformación en
un programa, es decir, su codificación.
Unidad 2- Algoritmos
Representación de Algoritmos.
1. Gráfica
2. No Gráfica
Los métodos usuales para representar un algoritmo son:
Los mas populares son:
1. Diagrama de flujo
2. Lenguaje de especificación de algoritmos: pseudocódigo,
Otros metodos:
3. Diagrama N-S (Nassi-Schneiderman),
4. Lenguaje formal español, inglés ...
5. Fórmulas
Unidad 2- Algoritmos
◦ Diagramas de flujo
Un diagrama de flujo (flowchart) es una representación gráfica
de un algoritmo. Los símbolos utilizados han sido
normalizados por el Instituto Norteamericano de
Normalización (ANSI).
Unidad 2- Algoritmos
Los más frecuentemente empleados según PSINT:
◦ Inicio
Si
◦ Asignacion
◦ Lectura
◦ Escritura
Unidad 2- Algoritmos
Los más frecuentemente empleados se muestran
a continuación:
◦ Según
Para
◦ Repetir Mientras
Unidad 2- Algoritmos
Ejemplo suma 5 primeros números naturales:
Unidad 2- Algoritmos
◦ Pseudocódigo
El pseudocódigo es una herramienta de programación en la que
las instrucciones se escriben en palabras que facilitan tanto la
escritura como la lectura de programas. En esencia, el
pseudocódigo se puede definir como un lenguaje de
especificaciones de algoritmos.
Unidad 2- Algoritmos
Ejemplo suma 5 primeros números naturales:
Proceso sin_titulo
vnumero<-0
vsuma<-0
para vnumero=1 hasta 5 con paso 1
vsuma<-vsuma+vnumero
Finpara
escribir "Este es la suma:", vsuma
FinProceso
Unidad 2- Algoritmos
Diagrama N-S (Nassi-Schneiderman)
◦ El Diagrama N-S (Nassi-Schneiderman) -también conocido
como diagrama de Chapin- es como un diagrama de flujo en el
que se omiten las flechas de unión y las cajas son contiguas.
Las acciones sucesivas se escriben en cajas sucesivas y, como
en los diagramas de flujo, se pueden escribir diferentes
acciones en una caja.
Unidad 2- Algoritmos
Unidad 2- Algoritmos
• Ejemplo suma 5 primeros números naturales:
Unidad 2- Algoritmos
◦ Ejemplo:
Dados 3 números, determinar el numero mayor y el menor
Unidad 2- Algoritmos
Codificación
◦ Es la escritura en un lenguaje de programación de la representación
del algoritmo desarrollada en las etapas precedentes. Dado que el
diseño de un algoritmo es independiente del lenguaje de
programación utilizado para su implementación, el código puede ser
escrito con igual facilidad en un lenguaje o en otro.
◦ Documentación interna: Como se verá más tarde, la documentación de
un programa se clasifica en interna y externa. La documentación
interna es la que se incluye dentro del código del programa fuente
mediante comentarios que ayudan a la comprensión del código.
Unidad 2- Algoritmos
Compilación y ejecución de un programa
◦ Una vez que el algoritmo se ha convertido en un programa fuente debe
ser traducido a lenguaje de máquina, este proceso se realiza con el
compilador y el sistema operativo que se encarga prácticamente de la
compilación.
◦ Si tras la compilación se presentan errores (errores de compilación) en
el programa fuente, es preciso volver a editar el programa, corregir los
errores y compilar de nuevo
Unidad 2- Algoritmos
Verificación y depuración de un programa
◦ Verificación o compilación es el proceso de ejecución del programa con una amplia
variedad de datos de entrada, llamados datos de test o prueba, que determinarán si
el programa tiene errores.
◦ La depuración es el proceso de encontrar los errores del programa y corregir o
eliminar dichos errores. Cuando se ejecuta un programa, se pueden producir tres
tipos de errores:
Errores de compilación. Se producen normalmente por un uso incorrecto de
las reglas del lenguaje de programación y suelen ser errores de síntesis.
Errores de ejecución. Estos errores se producen por instrucciones que la
computadora puede comprender pero no ejecutar. Ejemplos típicos son:
división por cero.
Errores lógicos. Se producen en la lógica del programa y la fuente del error
suele ser el diseño del algoritmo. Estos errores son los más difíciles de
detectar, ya que el programa puede funcionar y no producir errores de
compilación ni de ejecución, y sólo puede advertir el error por la obtención de
resultados incorrectos.
Unidad 2- Algoritmos
Como Mitigar errores lógicos.
◦ Prueba de escritorio del algoritmo
La prueba de escritorio es una herramienta útil para entender que hace
un determinado algoritmo, o para verificar que un algoritmo cumple con
la especificación sin necesidad de ejecutarlo.
Proceso sin_titulo vnumero vsuma
vnumero<-0 0
vsuma<-0 0 0
para vnumero=1 hasta 5 con paso 1 5
vsuma<-vsuma+vnumero 15
Finpara
escribir "Este es la suma:", vsuma 15
FinProceso
Unidad 2- Algoritmos
Documentación y mantenimiento
◦ La documentación de un problema consta de las descripciones
de los pasos a dar en el proceso de resolución de un problema.
◦ Programas pobremente documentados son difíciles de leer,
más difíciles de depurar y casi imposibles de mantener y
modificar.
◦ La documentación de un programa puede ser interna y externa.
La documentación interna es la contenida en líneas de
comentarios.
La documentación externa incluye análisis, diagramas de flujo
y/o pseudocódigos, manuales de usuario con instrucciones
para ejecutar el programa y para interpretar los resultados.
Unidad 2- Algoritmos
Ejercicio 1:
◦ Diagramar un algoritmo que describa la lógica para una
persona que viaja de lunes a viernes para ir a estudiar
aacceder a la universidad de JCPaz.
Entrada: zona en la que vive y transporte que toma
Proceso: Transportar al estudiante hasta la universidad
Salida: Al entrar a la universidad llama a sus padres y notifica.
Unidad 2- Algoritmos
◦ Enunciado 1:
◦ Diagramar un algoritmo que describa la lógica para una persona que viaja de lunes a viernes para ir a estudiar aacceder a la universidad de JCPaz
Acciones:
T.1 En función a la zona en que vive, tomar el transporte correpondiente
t1.0 Identificar el dia de la semana
Si es no es de Lunes a Viernes
T.1.0.1 Mensaje a los Padres “Hoy no curso”
Fin del Algorirmo
t1.1 Tomar los elementos de estudio
T.2 Transportar a la persona
T2.1 Identificar la parada de Transporte que corresponde
T2.1 Identificar la zona donde vive
T2.2 Identificar el Medio de transporte que va a utilizar
Si medio de transporte no esta disponible
ir a 2.1 E
s
p
t2.2 Tomar el Transporte y aguardar arribo
e
r
a
T2.2.1 Sacar Ticket r
T2.2.2 tomar el transporte x (Tren San Martin) e Mientras
T2.2.3 Sentarse
s
v
T2.2.4 Esperar es Verdadero
e
T2.2.5 Evaluar la parada de arrivo r
Si Estacion es JCPaz d
[Link] Esperar es falso a
Fin si d
e
T2.2.5 Bajar y caminar
r
T.3 Notificar a los padres o
t3.1 l Llamar a mama
3.1.1 Sacar el Telefono
3.1.2 Marcar el numero
Unidad 2- Algoritmos
◦ Enunciado 2:
◦ Diagramar un algoritmo que describa la lógica para, dados los 3 lados de
un triangulo, determinar el tipo del mismo.
◦ A saber…3 lados iguales… es equilatero. 2 lados iguales es isosceles. 3
Lados desiguales es Escaleno
Acciones:
T.1 Ingresar las dimensiones del triángulo
t1.0 ingresar dimensión lado A
t1.1 ingresar dimensión lado b
t1.1 ingresar dimension lado c
T.2 verificar tipo de triángulo
T2.1 verificar dimensiones
Si Lado A = Labo B y = Lado C
Determino que es Equilatero
Si (Lado A = Labo B) o (Lado C = A ) o (Lado B = C)
Determino que es Isoceles
Si (Lado A <> Labo B AND <> Lado C)
Determino que es Isosceles
T.3 Notificar resultado
t3.1 Mostrar el resultado en una pantalla
!!!Terminamos.!!!
Quedaron dudas ?