Title: LENGUAJE DE DISEO DE ALGORITMOS
1Resolución de Problemas y AlgoritmosSonia Rueda
Departamento de Ciencias e IngenierÃa de la
Computación UNIVERSIDAD NACIONAL DEL SUR 2009
2Planes de Estudios
IngenierÃa en Sistemas de Computación
3Planes de Estudios
Licenciatura en Ciencias de la Computación
4Planes de Estudios
IngenierÃa en Sistemas de Computación
Licenciatura en Ciencias de la Computación
Matemática y FÃsica
TeorÃa de Cs. De la Comp.
Programación
- Resolución de Problemas y Algoritmos
- Introducción a la Programación Orientada a
Objetos - Estructuras de Datos
- TecnologÃa de Programación
Aplicaciones
Sistemas
IngenierÃa de Software
5Objetivos de las Materias de Programación
- Aprender Contenidos Conceptuales
- Desarrollar Competencias
- ABSTRACCIÓN
6Objetivos de RPA
- Diseñar algoritmos para resolver problemas de
pequeña escala - Implementar los algoritmos en un lenguaje de
programación procedural.
Contenidos de RPA
- Conceptos básicos de computación
- Principios y técnicas de la programación
estructurada, el diseño top-down y el
refinamiento paso a paso. - Lenguaje de programación Pascal
7Problemas
Un problema es una situación que plantea una
discrepancia entre un estado inicial y un estado
final o meta. Un problema implica un desafÃo y
requiere de cierto grado de creatividad. Puede
pensarse como un proceso de búsqueda. Si un
detective tiene que hallar el responsable de un
crimen seguramente va a tener pautas a seguir y
estrategias para aplicar, sin embargo no existe
un método infalible que le permita hallar la
solución. Para resolver quién cometió el crimen
puede intentar resolver otros problemas
relacionados como cuándo, cómo, dónde. Cada una
de las respuestas irá restringiendo la búsqueda
de la solución.
8Problemas
La directora de una escuela desea organizar la
fiesta para los 98 egresados de Polimodal. El
evento se realizará en el gimnasio el primer
sábado de diciembre, el valor de la tarjeta no
deberá superar los 80 y se espera la asistencia
de unos 300 familiares y 30 docentes.
Existen un gran número de soluciones posibles.
Algunas propuestas pueden constituir una
solución para algunas personas y no ser válidas
para otras. La especificación es imprecisa, no
establece restricciones rigurosas que permitan
reconocer si una propuesta es una solución es
válida. Nos interesan los problemas para los
cuales es posible decidir si se ha hallado la
solución de manera objetiva.
9Problemas
En la figura, ABCE es un rectángulo de 80 cm de
perÃmetro. La longitud del lado CE es cuatro
veces la de BC. El triángulo CDE es isósceles y
tiene 86 cm de perÃmetro, Cuál es el perÃmetro
de la figura ABCDE?
La especificación es precisa. La solución es
única y objetiva. El procedimiento puede variar,
probablemente comience con un cambio de notación
10Problemas
En la figura, ABCE es un rectángulo de 80 cm de
perÃmetro. La longitud del lado CE es cuatro
veces la de BC. El triángulo CDE es isósceles y
tiene 86 cm de perÃmetro, Cuál es el perÃmetro
de la figura ABCDE?
El perÃmetro del rectángulo es EA AB BC EC
80 cm Si llamamos x a BC la expresión es
entonces x 4 x x 4 x 80 cm x 8 cm EC
40 cm. Y el perÃmetro del CDE es 86 cm. ED
DC 46 cm. El perÃmetro es ED DC CB AB
EA 46 8 40 8
11Problemas
En un campamento, los chicos tienen dos baldes,
uno de 4 litros de capacidad y otro de 9. Tienen
que lograr recoger en el balde más grande,
exactamente 5 litros de agua del rÃo. Cómo
pueden hacerlo?
En este problema el enunciado especifica el
estado inicial, la capacidad de los baldes es de
4 y 9 litros, y también el estado final, se desea
disponer de exactamente 5 litros de agua en el
balde más grande. Hallar la solución implica
encontrar una secuencia de pasos en los cuales se
cargue y se descargue agua entre los baldes o
entre un balde especÃfico y el rÃo, hasta
obtener 5 litros. Es un problema? Es posible
objetivamente decidir si una secuencia es una
solución? Hay varias soluciones posibles?
12Problemas
En un campamento, los chicos tienen dos baldes,
uno de 4 litros de capacidad y otro de 9. Tienen
que lograr recoger en el balde más grande,
exactamente 5 litros de agua del rÃo. Cómo
pueden hacerlo?
Llenar el balde de 9 l.
Llenar el balde de 4 l.
Llenar B4
Llenar B9
13Problemas
En un campamento, los chicos tienen dos baldes,
uno de 4 litros de capacidad y otro de 9. Tienen
que lograr recoger en el balde más grande,
exactamente 5 litros de agua del rÃo. Cómo
pueden hacerlo?
Acciones
Llenar B9
14Problemas
En un campamento, los chicos tienen dos baldes,
uno de 4 litros de capacidad y otro de 9. Tienen
que lograr recoger en el balde más grande,
exactamente 5 litros de agua del rÃo. Cómo
pueden hacerlo?
Acciones
Transvasar de B9 a B4
15Problemas
En un campamento, los chicos tienen dos baldes,
uno de 4 litros de capacidad y otro de 9. Tienen
que lograr recoger en el balde más grande,
exactamente 5 litros de agua del rÃo. Cómo
pueden hacerlo?
Acciones
Vaciar B9
16Problemas
En un campamento, los chicos tienen dos baldes,
uno de 4 litros de capacidad y otro de 9. Tienen
que lograr recoger en el balde más grande,
exactamente 5 litros de agua del rÃo. Cómo
pueden hacerlo?
Llenar B9
17Problemas
En un campamento, los chicos tienen dos baldes,
uno de 4 litros de capacidad y otro de 9. Tienen
que lograr recoger en el balde más grande,
exactamente 5 litros de agua del rÃo. Cómo
pueden hacerlo?
Transvasar B9 a B4
18Problemas
En un campamento, los chicos tienen dos baldes,
uno de 4 litros de capacidad y otro de 9. Tienen
que lograr recoger en el balde más grande,
exactamente 1 litros de agua del rÃo. Cómo
pueden hacerlo?
19Problemas
Llenar B9 Transvasar B9 a B4 Vaciar B4 Transvasar
B9 a B4
Traza
Algoritmo
20Problemas
En un campamento, los chicos tienen dos baldes,
uno de 4 litros de capacidad y otro de 9. Tienen
que lograr recoger en el balde más grande,
exactamente 7 litros de agua del rÃo. Cómo
pueden hacerlo?
21Problemas
Llenar B4 Transvasar B4 a B9 Llenar B4 Transvasar
B4 a B9 Llenar B4 Transvasar B4 a B9 Vaciar
B9 Transvasar B4 a B9 Llenar B4 Transvasar B4 a
B9
4 0 0 4 4 4 0 8 4 8 3 9 3 0 0
3 4 3 0 7
22Problemas
Dos equipos de una planta industrial están
conectados a sensores que efectúan controles
regularmente. En el primer equipo, el control se
realiza cada 50 minutos y en el otro, cada 30. Si
el último se realizó en ambos equipos a las
1830, Cuándo volverá a realizarse en forma
simultánea en los dos?
En este problema el enunciado especifica con
precisión el estado inicial, el último control
simultáneo se realizó 1830 y describe las
caracterÃsticas del estado final sin
especificarlas explÃcitamente. Hallar la
solución implica calcular el horario del próximo
control simultáneo partiendo del estado inicial y
sabiendo la frecuencia con que actúa cada sensor.
Existe una única solución pero varias maneras de
llegar a ella.
23Resolución de Problemas
Los equipos de una planta industrial están
conectados a sensores que efectúan controles
regularmente. Dados dos equipos en particular y
sabiendo que en uno de ellos el control se
realiza cada N minutos y en otro cada M minutos.
Describa cómo calcular a qué hora se realizará el
próximo control en forma simultánea sabiendo que
la última vez que sucedió la hora era H.
El enunciado es muy similar al anterior, pero
especifica ahora una clase de problemas. La
solución no es hallar un horario especÃfico, sino
un procedimiento, un algoritmo para resolver una
clase de problemas.
24Algoritmos
- Diseñar algoritmos para resolver problemas de
pequeña escala
Un algoritmo es una secuencia de instrucciones
que permite resolver un problema. Es una
definición general, no está especÃficamente
ligada a la programación. En una secuencia de
instrucciones existe una única instrucción
inicial y dada una instrucción en particual es
posible determinar con precisión, cuál es la que
le sigue. De acuerdo a esta definición una
receta es un algoritmo, una partitura musical o
las instrucciones para armar una bicicleta
también lo son.
25Algoritmos
- Algoritmo Recargar Celular con tarjeta
- Raspá suavemente para descubrir el código de
seguridad de tu tarjeta. - Marcá 123SND
- Si el sistema no contesta repetir la llamada
- Si contesta, cuando el sistema solicite la opción
de recarga, ingresala. - Ingresá el código y recibirás el nuevo saldo.
26Algoritmos
Algunas instrucciones hacen referencia a otras
instrucciones, las llamamos instrucciones de
control Si el sistema no contesta repetir la
llamada Algunas instrucciones pueden resultar
ambiguas Raspá suavemente para descubrir el
código de seguridad de tu tarjeta. Raspá
suavemente sobre la banda negra para descubrir el
código de seguridad de tu tarjeta.
27Algoritmos
- Receta Mousse de Chocolate
- 200 gramos de manteca150 gramos de chocolate8
huevos separando las yemas de las claras8
cucharadas de azúcar - Derretir la manteca y fuera del fuego agregar el
chocolate, mezclar bien. - Batir las yemas con el azúcar y cuando estén
blancas agregar la mezcla de manteca y chocolate. - Batir las claras a punto nieve e incorporarlas a
la preparación anterior en forma suave. - Colocar en un bol y llevar a la heladera.
28Algoritmos
Un algoritmo (como la receta) tiene un autor y un
ejecutor. Las instrucciones que pueden ser
comprendida y ejecutadas directamente son
acciones primitivas. Cuando una instrucción no es
una acción primitiva, para que el ejecutor pueda
interpretarla debe disponer de un algoritmo que
le indique qué hacer. El autor tiene que
conocer el repertorio de acciones primitivas del
ejecutor para poder cuando alcanzó una solución
ejecutable.
29Algoritmos
- Receta Punto Nieve
- claras de huevo según receta
- 3 cucharadas de azúcar por cada clara
- 1 pizca de sal
- Colocar todas las claras en un recipiente muy
limpio y seco. - Agregar una pizca de sal
- Batir enérgicamente agregando el azúcar
lentamente hasta que al levantar el batidor la
mezcla quede adherida a él y no caiga sobre el
recipiente.
Una instrucción es comprensible si podemos
realizarla directamente (es una acción primitiva)
o existe un algoritmo que nos indica qué hacer.
30Algoritmos
Consideremos el problema de enseñarle a un niño a
buscar palabras en el diccionario. La tarea de
enseñar a un grupo se complica cuando los alumnos
tienen diferentes repertorios de acciones
primitivas. Qué es lo mÃnimo que tiene que saber
un niño para que le podamos explicar cómo buscar
una palabra en el diccionario?
31Algoritmos
Algoritmo Buscar en el diccionario la definición
de receta. Abrir el diccionario y considerar la
primera palabra definida Leer la palabra Si la
palabra leÃda es receta Leer la definición y
Terminar Sino, si hay más palabras
Avanzar a la siguiente palabra definida y
repetir desde la segunda instrucción Sino
Terminar
Debemos saber si abrir el diccionario, leer una
palabra, comparar dos palabras, etc. son acciones
primitivas. Hay dos formas de Terminar, en una
la búsqueda es exitosa, en la otra no. Podemos
mejorar la solución.
32Algoritmos
Algoritmo Buscar en el diccionario la definición
de receta. Abrir el diccionario y considerar la
primera palabra definida Leer la palabra Si la
palabra leÃda es receta Leer la definición y
Terminar Sino, si la palabra leÃda es mayor que
receta Terminar Sino, si
hay más palabras Avanzar a la
siguiente palabra definida y repetir
desde la segunda instrucción
Sino Terminar
Podemos generalizar este algoritmo
33Algoritmos
Algoritmo Buscar en el diccionario la definición
de una palabra P. Abrir el diccionario y
considerar la primera palabra definida Leer la
palabra Si la palabra leÃda es igual a la palabra
P Leer la definición y Terminar Sino, si la
palabra leÃda es mayor que la palabra P
Terminar Sino, si hay más palabras
Avanzar a la siguiente palabra
definida y repetir desde la segunda
instrucción Sino
Terminar
34Algoritmos
P es una variable, en la definición del algoritmo
denota a cualquier palabra. Cuando el algoritmo
sea ejecutado P se refiere a una palabra
especÃfica. La introducción de esta variable
permite que el algoritmo resuelva una clase de
problemas. Podemos hallar un algoritmo más
eficiente para resolver esta clase de problemas.
Cuando la maestra enseña a buscar una palabra en
el diccionario usa un ejemplo especÃfico, pero su
intención es que aprendan a hacerlo para
cualquier palabra.
35Algoritmos
Algoritmo Buscar en el diccionario la definición
de una palabra P. Abrir el diccionario
adecuadamente y considerar una palabra definida
en particular Leer la palabra considerada Si la
palabra considerada es igual a la palabra P
Leer la definición y Terminar Sino, si la
palabra leÃda es mayor que la palabra P
Descartar esa palabra y todas las que le
siguen Sino Descartar
esa palabra y todas las anteriores Si
quedan palabras Buscar en el resto del
diccionario Sino Terminar
36Algoritmos
Qué significa Abrir el diccionario
adecuadamente? Para saber si hemos resuelto un
problema o no tenemos que conocer el repertorio
de acciones primitivas.
La solución al problema de los baldes es también
un algoritmo. Las acciones primitivas son Llenar,
Transvasar, Vaciar. Cada solución propuesta
consideraba baldes de 4 y 9 litros y un objetivo
especÃfico, obtener 5, 1 o 7 litros en el balde
mayor. Encontrar un único algoritmo general serÃa
muy complejo
37Algoritmos
- Dadas las siguientes acciones primitivas
- Llenar con agua de la canilla una botellita
- Trasvasar el agua de una botellita a un bidón
- Escribir un algoritmo que permita llenar un bidón
de 3 litros usando botellitas de medio litro.
38Algoritmos
Llenar botellita Transvasar botellita al
bidón Llenar botellita Transvasar botellita al
bidón Llenar botellita Transvasar botellita al
bidón Llenar botellita Transvasar botellita al
bidón Llenar botellita Transvasar botellita al
bidón Llenar botellita Transvasar botellita al
bidón
39Algoritmos
- Dadas las siguientes acciones primitivas
- Llenar con agua de la canilla una botellita
- Trasvasar el agua de una botellita a un bidón
- Y una instrucción de control
- Repetir n veces una secuencia de acciones
- Escribir un algoritmo que permita llenar un bidón
de 3 litros usando botellitas de medio litro.
La instrucción repetitiva permite abreviar el
algoritmo.
40Algoritmos
Repetir 6 veces Llenar botellita
Transvasar botellita al bidón
41Algoritmos
- Dadas las siguientes acciones primitivas
- Llenar con agua de la canilla una botellita
- Trasvasar el agua de una botellita a un bidón
- Y una instrucción de control
- Repetir n veces una secuencia de acciones
- Escribir un algoritmo que permita llenar un bidón
de M litros usando botellitas de medio litro.
La solución es una generalización del algoritmo
diseñado para el problema anterior.
42Algoritmos
Repetir M2 veces Llenar botellita
Transvasar botellita al bidón
43Algoritmos
- Nos interesan los algoritmos
- construidos a partir de instrucciones
comprensibles, esto es, son acciones primitivas o
podemos definir un algoritmo que indica qué
hacer. - resuelven una clase de problemas
- A medida que avancemos en las materias de
programación veremos que cuando existen varios
algoritmos alternativos nos interesará elegir uno
que tenga ciertas propiedades, como por ejemplo
legibilidad y eficiencia.
44Algoritmos
Un algoritmo es una secuencia de instrucciones
que describen cómo resolver una clase de
problemas. Las instrucciones deben ser
comprensibles para quien ejecuta el algoritmo.
Es una definición algo más estricta. Para decidir
si una secuencia de instrucciones es un algoritmo
consideramos que las instrucciones sean
comprensibles para el que lo ejecuta y que pueda
aplicarse en diferentes circunstancias.
45Lenguaje de Programación
- Diseñar algoritmos para resolver problemas de
pequeña escala - Implementar los algoritmos en un lenguaje de
programación procedural.
Implementar un algoritmo significa traducirlo a
un lenguaje de programación.
46Lenguaje de Programación
Un lenguaje de programación es una notación
formal que puede ser interpretada y ejecutada por
una computadora. En un lenguaje de programación
procedural el orden en el cual se ejecutan las
instrucciones lo determina el programador. Un
programa procedural es un algoritmo escrito en un
lenguaje de programación procedural. En esta
materia sólo implementaremos programas
procedurales, de modo que cuando digamos
programa, estaremos diciendo implÃcitamente
programa procedural.
47Sobre las presentaciones en clase
- El objetivo de estas presentaciones es
simplemente agilizar la clase y permitir al
alumno concentrarse en el tema y no tener que
estar pendiente de copiar del pizarrón - Aunque las presentaciones pueden imprimirse en
general los efectos visuales son importantes para
entender el tratamiento del tema abordado. - No reemplazan a la clase. Son sólo una guÃa
dentro del desarrollo de la clase.
48Información adicional Inglés
- Tanto la IngenierÃa como en la Licenciatura
requieren tener aprobado el examen de suficiencia
de idioma inglés para poder cursar alguna materia
de tercer año. - Los alumnos interesados en hacer el curso de
lectura comprensiva de inglés deben anotarse en
la CARRERA IDIOMAS y luego en el nivel que les
corresponda en los puestos de autogestión antes
de que termine la inscripción en las materias. - Otros detalles consultar en el departamento de
Humanidades.