programación: algoritmos
TRANSCRIPT
Programación 1: Algoritmos
Docentes de Programación
Editado por Angel Vázquez-Patiñ[email protected]
Departamento de Ciencias de la Computación
Universidad de Cuenca
15 de septiembre de 2016
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 1 / 35
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) Capítulo 2 15 de septiembre de 2016 2 / 35
Objetivos
Introducir los conceptos más importantes relacionados conalgoritmos
Desarrollar algoritmos representados por pseudocódigo ydiagramas de �ujo
Realizar el seguimiento de un algoritmo y validar su resultado
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 3 / 35
Algoritmo
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 4 / 35
Algoritmo
De�nición
Especi�cación rigurosa de la secuencia de pasos (instrucciones) arealizar 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) Capítulo 2 15 de septiembre de 2016 5 / 35
Algoritmo
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 6 / 35
Algoritmo - Ejemplo
Pasos que se deben seguir para cambiar la llanta de un vehículoconsiderando que tiene sólo 2 tuercas
Entrada: Llanta de repuesto, gata, llave de tuercas
Salida: Llanta cambiada
Proceso:
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 7 / 35
Algoritmo - Ejemplo
Inicio1 Ubicar la gata debajo del carro2 Accionar la gata3 Colocar la llave de tuerca sobre la tuerca 14 Girar hasta a�ojarla y retirar5 Colocarla la llave de tuerca sobre la tuerca 26 Girar hasta a�ojarla y retirar7 Retirar la llanta defectuosa8 Tomar la llanta de repuesto y ubicarla en el lugar9 Tomar la tuerca 1 y colocarla10 Tomar la llave de tuercas y ajustarla11 Tomar la tuerca 2 y colocarla12 Tomar la llave de tuercas y ajustarla13 Bajar y sacar la gata
FinA. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 8 / 35
Algoritmo - Ejemplo
Desarrollar los pasos que se deben seguir para resolver los siguientesalgoritmos:
Algoritmo para calcular la pendiente de una rectam = y2−y1
x2−x1Algoritmo para resolver la fórmula de la ecuación de segundogrado x = −b±
√b2−4ac2a
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 9 / 35
Algoritmo - Ejemplo Pendiente de un Recta
m = y2−y1x2−x1Entrada: x1, y1, x2, y2Salida: m
Proceso:
Inicio1 Leer la coordenada x12 Leer la coordenada y13 Leer la coordenada x24 Leer la coordenada y25 Calcular y = y2 − y16 Calcular x = x2 − x17 Dividir y/x8 Mostrar el resultado de dividir y/x
FinA. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 10 / 35
Características de un Algoritmo
Entrada: de�nir lo que necesita el algoritmo como datos deentrada
Salida: de�nir el resultado deseado
Finito: el algoritmo termina en un número �nito de pasos
Correcto: realiza lo que se supone que se debe hacer. Lasolución es correcta
Efectividad: cada instrucción se completa en tiempo �nito
General: debe ser lo su�cientemente general como paracontemplar todos los casos de entrada
El programador debe preguntarse
Mi solución cumple con estas características?
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 11 / 35
Concepto de Variable
Variable
Es una estructura de dato que puede cambiar su valor según lasituación deseada.
Nombre de Variable
Se puede usar números y letras pero siempre comienza con unaletra
Se puede utilizar mayúsculas y minúsculas, por convención seusan 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 detildes.
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 12 / 35
Representación de una Variable
De�nición de la variable llamada indice con un valor numérico de 5
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 13 / 35
Representación de una Variable
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 14 / 35
Algoritmo - Ejemplo Pendiente de un Recta - con
Variables
m = y2−y1x2−x1Entrada: x1, y1, x2, y2Salida: mProceso:
Inicio1 Leer la coordenada x1=⇒ Leer x1 = valor entero2 Leer la coordenada y1=⇒ Leer y1 = valor entero3 Leer la coordenada x2=⇒ Leer x2 = valor entero4 Leer la coordenada y2=⇒ Leer y2 = valor entero5 Calcular y = y2 − y1=⇒y = y2− y16 Calcular x = x2 − x1=⇒x = x2− x17 Dividir el resultado de y/x=⇒m = y/x8 Mostrar el resultado de dividir y/x=⇒ Mostrar m
FinA. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 15 / 35
Representación de una Variable - Ejemplo
Pendiente de un Recta - con Variables
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 16 / 35
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 untrapecio
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 17 / 35
Tipos de Datos que Almacenan las Variables
Tipo de Dato
Un tipo de dato es una restricción impuesta para lainterpretación/manipulación/representación de datos.
Al de�nir un tipo de dato lo que se está indicando es la clase devalores que pueden tomar sus elementos e implícitamente lasoperaciones que se pueden realizar sobre ellos.
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 18 / 35
Tipos de Datos
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 19 / 35
Tipos de Datos: Numéricos
Conjunto de los valores numéricos que pueden representarse endos 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 estetipo pueden ser : 5,4,−2,3, 7,34353, .........
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 20 / 35
Tipos de Datos: Lógico
Llamado también booleano, es un dato que puede tomar un valor deentre dos posibles:
verdadero (true)
falso (false)
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 21 / 35
Tipos de Datos: Carácter
Este conjunto de elementos está establecido y normalizado por unestándar llamado ASCII (American Standard Code for InformationInterchange), el cual establece cuáles son los elementos y el orden deprecedencia entre los mismos. Los elementos son las letras, númerosy símbolos especiales disponibles en el teclado de la computadora yalgunos 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) Capítulo 2 15 de septiembre de 2016 22 / 35
Representación de un Algoritmo
Un algoritmo se puede representar mediante diagramas de �ujo opseudocódigo.
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 23 / 35
Diagrama de Flujo
Descripción grá�ca de un algoritmo.
Están conformados por �guras conectadas por �echas.
Para ejecutar un proceso descrito por un diagrama de �ujo secomienza por el INICIO y se siguen las �echas de �gura a �gura,ejecutándose las acciones indicadas por cada �gura y terminandopor el FIN.
Cada �gura indica una acción especí�ca a ejecutar.
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 24 / 35
Símbolos de los Diagramas de Flujo
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 25 / 35
Diagrama de Flujo de un algoritmo para calcular la
pendiente de una recta
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 26 / 35
Pseudocódigo
El pseudocódigo (falso lenguaje) es una descripción de alto nivelcompacta e informal del principio operativo de un programainformático o algoritmo.
Utiliza convenciones estructurales de un lenguaje deprogramació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 codi�cación del programa
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 27 / 35
Pseudocódigo: estándar a utilizar
PSeint
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 28 / 35
Pseudocódigo del algoritmo para calcular la
pendiente de una recta
Algoritmo pendienteRecta
Leer x1
Leer y1
Leer x2
Leer y2
y <- y2�y1
x <- x2�x1
m <- y/x
Escribir m
FinAlgoritmo
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 29 / 35
Actividades
De�nir el diagrama de �ujo y pseudocódigo para los siguientesproblemas:
Dado el lado de un cuadrado encontrar el perímetro y el área, ymostrar el resultado.
Se lee por el teclado del computador distintas cantidades dearroz, azúcar y fréjol. Calcular el valor total si se conoce que lalibra 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ónque el IVA es del 14%.
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 30 / 35
Pruebas de Escritorio
Herramienta útil para entender qué hace un algoritmo y veri�car sicumple con la especi�cación para la cual fue pensado.
Se puede considerar una ejecución a mano del algoritmo, por lo tantodebe llevar el registro de los valores que va tomando cada una de lasvariables involucradas en el mismo.
Se lo puede realizar por medio de una matriz cuyas columnasrepresentan a todas las variables involucradas en el proceso.
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 31 / 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 lasopciones del algoritmo
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 32 / 35
Prueba de Escritorio
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 33 / 35
Actividades
Lectura obligatoria. De Giusti, A., 2001. Algoritmos, datos yprogramas 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: Programación Secuencial del documento ubicado enhttps://goo.gl/X0UTxi
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 34 / 35
Preguntas
A. Vázquez-Patiño (UCuenca) Capítulo 2 15 de septiembre de 2016 35 / 35