Fundamentos de programación: introducción a los algoritmos.
En esta presentación se explica lo que es un algoritmo y las formas de representar uno. Se explica detalladamente el concepto de variable y cómo realizar una prueba de escritorio de un algoritmo. Como una buena práctica de programación, se incentiva la documentación de un algoritmo.
1. Programación 1: Algoritmos
Docentes de Programación
Editado por Angel Vázquez-Patiño
angel.vazquezp@ucuenca.edu.ec
Departamento de Ciencias de la Computación
Universidad de Cuenca
30 de agosto de 2017
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 1 / 38
2. Overview
1 Objetivos
2 Concepto de Algoritmo
3 Concepto de Variable
4 Representación de un Algoritmo
5 Importancia de Documentar un Algoritmo
6 Pruebas de Escritorio
7 Actividades
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 2 / 38
3. Objetivos
Presentar los conceptos más importantes relacionados con
algoritmos
Desarrollar algoritmos representados por pseudocódigo y
diagramas de ujo
Seguir la ejecución de un algoritmo y validar su resultado
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 3 / 38
4. Solución de problemas y programación
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 4 / 38
7. Algoritmo
Denición
Especicación rigurosa de la secuencia de pasos (instrucciones) a
realizar para alcanzar un resultado deseado en un tiempo nito.
Resumiendo
Secuencia nita de pasos que permiten resolver un problema
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 7 / 38
9. Algoritmo - Ejemplo
Pasos que se deben seguir para cambiar la llanta de un vehículo
considerando que tiene sólo 2 tuercas
Entrada: Llanta de repuesto, gata, llave de tuercas
Salida: Llanta cambiada
Proceso:
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 9 / 38
10. Algoritmo - Ejemplo
Inicio
1 Ubicar la gata debajo del carro
2 Accionar la gata
3 Colocar la llave de tuerca sobre la tuerca 1
4 Girar hasta aojarla y retirar
5 Colocarla la llave de tuerca sobre la tuerca 2
6 Girar hasta aojarla y retirar
7 Retirar la llanta defectuosa
8 Tomar la llanta de repuesto y ubicarla en el lugar
9 Tomar la tuerca 1 y colocarla
10 Tomar la llave de tuercas y ajustarla
11 Tomar la tuerca 2 y colocarla
12 Tomar la llave de tuercas y ajustarla
13 Bajar y sacar la gata
Fin
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 10 / 38
11. Algoritmo - Ejemplo
Desarrollar los pasos que se deben seguir para resolver los siguientes
algoritmos:
Algoritmo para calcular la pendiente de una recta
m = y2−y1
x2−x1
Algoritmo para resolver la fórmula de la ecuación de segundo
grado x = −b±
√
b2−4ac
2a
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 11 / 38
12. Algoritmo - Ejemplo Pendiente de una Recta
m = y2−y1
x2−x1
Entrada: x1, y1, x2, y2
Salida: m
Proceso:
Inicio
1 Leer coordenada x1
2 Leer coordenada y1
3 Leer coordenada x2
4 Leer coordenada y2
5 Calcular y = y2 − y1
6 Calcular x = x2 − x1
7 Dividir y/x
8 Mostrar el resultado de dividir y/x
Fin
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 12 / 38
13. Características de un Algoritmo
Entrada: denir lo que necesita el algoritmo como datos de
entrada
Salida: denir el resultado deseado
Finito: el algoritmo termina en un número nito de pasos
Correcto: realiza lo que se supone que se debe hacer. La
solución es correcta
Efectividad: cada instrucción se completa en tiempo nito
General: debe ser lo sucientemente general como para
contemplar todos los casos de entrada
El programador debe preguntarse
Mi solución cumple con estas características?
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 13 / 38
14. Concepto de Variable
Variable
Es una estructura de dato que puede cambiar su valor según la
situación deseada.
Nombre de Variable
Se puede usar números y letras pero siempre comienza con una
letra.
Se puede utilizar mayúsculas y minúsculas, por convención se
usan minúsculas.
En algunos lenguajes de programación es válido el subguión.
En la mayoría de lenguajes esta totalmente prohibido el uso de
tildes.
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 14 / 38
15. Representación de una Variable
Denición de la variable llamada indice con un valor numérico de 5
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 15 / 38
16. Representación de una Variable
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 16 / 38
17. Algoritmo - Ejemplo Pendiente de una Recta - con
Variables
m = y2−y1
x2−x1
Entrada: x1, y1, x2, y2
Salida: m
Proceso:
Inicio
1 Leer coordenada x1=⇒ Leer x1 = valor entero
2 Leer coordenada y1=⇒ Leer y1 = valor entero
3 Leer coordenada x2=⇒ Leer x2 = valor entero
4 Leer coordenada y2=⇒ Leer y2 = valor entero
5 Calcular y = y2 − y1=⇒y = y2 − y1
6 Calcular x = x2 − x1=⇒x = x2 − x1
7 Dividir el resultado de y/x=⇒m = y/x
8 Mostrar el resultado de dividir y/x=⇒ Mostrar m
Fin
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 17 / 38
18. Representación de una Variable - Ejemplo
Pendiente de una Recta - con Variables
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 18 / 38
19. Variables - Actividades en Clase
Realizar un algoritmo que calcule el área de un círculo
Realizar un algoritmo que calcule el perímetro y área de un
trapecio
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 19 / 38
20. Tipos de Datos que Almacenan las Variables
Tipo de Dato
Un tipo de dato es una restricción impuesta para la
interpretación/manipulación/representación de datos.
Al denir un tipo de dato lo que se está indicando es la clase de
valores que pueden tomar sus elementos e implícitamente las
operaciones que se pueden realizar sobre ellos.
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 20 / 38
21. Tipos de Datos
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 21 / 38
22. Tipos de Datos: Numéricos
Conjunto de los valores numéricos que pueden representarse en
dos formas: enteros y reales
Enteros, los elementos de este tipo pueden ser :
....., −3, −2, −1, 0, 1, 2, 3, .....
Reales, representa números decimales. Los elementos de este
tipo pueden ser : 5,4, −2,3, 7,34353, .........
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 22 / 38
23. Tipos de Datos: Lógico
Llamado también booleano, es un dato que puede tomar un valor de
entre dos posibles:
verdadero (true) / 1
falso (false) / 0
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 23 / 38
24. Tipos de Datos: Carácter
Este conjunto de elementos está establecido y normalizado por un
estándar llamado ASCII (American Standard Code for Information
Interchange), el cual establece cuáles son los elementos y el orden de
precedencia entre los mismos. Los elementos son las letras, números
y símbolos especiales disponibles en el teclado de la computadora y
algunos otros elementos grácos.
ASCII no es el único, pero es el más utilizado internacionalmente.
Letras minúsculas: 'a', 'b', 'c', ............,'y', 'z'
Letras mayúsculas: 'A', 'B', .......'Y', 'Z'
Dígitos: '0','1',..........'8', '9'
Caracteres especiales: '!', '@', .........' %'
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 24 / 38
26. Representación de un Algoritmo
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 26 / 38
27. Diagrama de Flujo
Descripción gráca de un algoritmo.
Está conformado por guras conectadas por echas.
Para ejecutar un proceso descrito por un diagrama de ujo se
comienza por el INICIO y se siguen las echas de gura a gura,
ejecutándose las acciones indicadas por cada gura y terminando
por el FIN.
Cada gura indica una acción especíca a ejecutar.
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 27 / 38
28. Símbolos de los Diagramas de Flujo
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 28 / 38
29. Diagrama de Flujo de un algoritmo para calcular la
pendiente de una recta
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 29 / 38
30. Pseudocódigo
El pseudocódigo (falso lenguaje) es una descripción de alto nivel
compacta e informal del principio operativo de un algoritmo.
Utiliza convenciones estructurales de un lenguaje de
programación real
Diseñado para la lectura humana, no para máquina
Es una forma de representación sencilla de utilizar y de manipular
Facilita el paso del programa al lenguaje de programación
Es independiente del lenguaje de programación a utilizar
Facilita la solución del problema y la codicación del programa
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 30 / 38
31. Pseudocódigo: estándar a utilizar
PSeint
Presentación de PSeInt
https://youtu.be/XGSSw_Mh_fs
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 31 / 38
32. Pseudocódigo del algoritmo para calcular la
pendiente de una recta
Algoritmo pendienteRecta
Leer x1
Leer y1
Leer x2
Leer y2
y - y2y1
x - x2x1
m - y/x
Escribir m
FinAlgoritmo
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 32 / 38
33. Actividades
Denir el diagrama de ujo y pseudocódigo de los algoritmos que
resuelvan los siguientes problemas:
Dado el lado de un cuadrado encontrar el perímetro y el área, y
mostrar el resultado.
Se lee por el teclado del computador distintas cantidades de
arroz, azúcar y fréjol. Calcular el valor total si se conoce que la
libra de arroz tiene un costo de $3, la libra de azúcar un costo de
$4 y la libra de fréjol un costo de $8. Tomar en consideración
que el IVA es del 12 %.
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 33 / 38
34. Pruebas de Escritorio
Herramienta útil para entender qué hace un algoritmo y vericar si
cumple con la especicación para la cual fue pensado.
Se puede considerar una ejecución a mano del algoritmo, por lo tanto
debe llevar el registro de los valores que va tomando cada una de las
variables involucradas en el mismo.
Se lo puede realizar por medio de una matriz cuyas columnas
representan a todas las variables involucradas en el proceso.
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 34 / 38
35. Prueba de Escritorio
Consejos para la prueba de escritorio
Incluir todas las variable en la matriz de prueba
Seguir el ujo del programa estrictamente
Escoger diferentes datos de entrada para validar todas las
opciones del algoritmo
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 35 / 38
37. Actividades
Lectura obligatoria. De Giusti, A., 2001. Algoritmos, datos y
programas con aplicaciones en Pascal, Delphi y Visual Da Vinci,
1st ed. Pearson Educación, Buenos Aires, Argentina.
Subcapítulos 2.1, 2.2, 2.3 y 3.1.
Ejercicios: sección Programación Secuencial del documento
Ejercicios Básicos de Programación ubicado en
https://goo.gl/X0UTxi
A. Vázquez-Patiño (UCuenca) Algoritmos 30 de agosto de 2017 37 / 38