Download - Resolucion de problemas Cap 2
Universidad de La Punta Tecnicatura Desarrollador de Software
Curso de Ingreso 2012
Resolución de Problemas
Modulo I
Clase II
Resolución de Problemas
Unidad 1
Temas a tratar Elementos que componen un algoritmo:
Secuencia de Acciones,
Selección,
Repetición
Iteración.
Importancia de la indentación en las estructuras de
control.
Conclusiones.
Ejercitación.
Elementos que componen un
algoritmo
Secuencia de Acciones
Una secuencia de acciones es un algoritmo, o una parte de un algoritmo, formado por una serie de instrucciones que se ejecutan una a continuación de otra.
Acción 1
Acción 2
Acción 3
Elementos que componen un
algoritmo
Ejemplo: un algoritmo que permita a un robot subir 4
escalones
LevantaPieIzquierdo
SubirUnEscalón.
LevantaPieDerecho
SubirUnEscalón..
LevantaPieIzquierdo
SubirUnEscalón.
LevantaPieDerecho
SubirUnEscalón.
Elementos que componen un
algoritmo
Ejemplo: un algoritmo para hacer un Sandwich
de Jamón y queso Precondición: Tener pan, jamón, queso
Cortar el pan
Tomar una rodaja de pan
Poner jamón
Poner queso
Tapar con otra rodaja de pan
Si quisiera agregar la instrucción “poner mayonesa”, en que lugar del algoritmo iría?
¿Se modificarían las precondiciones del mismo, cómo?
Elementos que componen un
algoritmo
Se denomina flujo de control a través de un algoritmo al orden en el cual deben ejecutarse pasos individuales.
Hasta ahora se ha trabajado con flujo de control lineal, o sea, la ejecución secuencial de pasos, desde el primero hasta el ultimo.
Las estructuras de control son construcciones algorítmicas que alteran directamente el flujo de control lineal del algoritmo.
Con ellas es posible seleccionar un determinado sentido de acción de entre un par de alternativas específicas o repetir automáticamente un grupo de instrucciones.
Elementos que componen un
algoritmo - Selección
Selección
La escritura de soluciones a través de una
secuencia de ordenes requiere conocer a priori
las diferentes alternativas que se presentaran en
la resolución del problema.
Lamentablemente, es imposible contar con esta
información antes de comenzar la ejecución de
la secuencia de acciones.
Elementos que componen un
algoritmo - Selección
Selección
A través de la selección
se incorpora, a la
especificación del
algoritmo, la capacidad
de decisión de esta
forma será posible
seleccionar una de dos
alternativas de acción
posibles durante la
ejecución del algoritmo.
Evaluar
condición
2. Acciones si la
condición es falsa
1. Acciones si la
condición es verdadera
VerdaderoFalso
Elementos que componen un
algoritmo - Selección
Por lo tanto, el algoritmo debe considerar las dos alternativas, es decir, que hacer en cada uno de los casos. La selección se notará de la siguiente forma:si (condición)
acción o acciones a realizar si la condición es verdadera (1)
sino
acción acciones a realizar si la condición es falsa (2)
Observe la introducción de las palabras si y sino, cada vez que necesitemos indicar una selección, colocaremos si, en el caso que haya alguna acción a realizar si la condición es falsa, la introduciremos con la palabra sino
Condición es una expresión que al ser evaluada puede tomar solamente uno de dos valores posibles: verdadero o falso.
El esquema anterior representa que en caso de que la condición a evaluar resulte verdadera se ejecutaran las acciones de (1) y NO se ejecutaran las de (2).
En caso contrario, es decir si la condición resulta ser falsa, solo se ejecutaran las acciones de (2).
Piense algunas condiciones, le damos un ejemplo mas: ¿Es viernes?
Elementos que componen un
algoritmo - Selección
Veamos un ejemplo:
Su amigo le ha pedido que le compre $1 de caramelos en el kiosco. De ser posible, prefiere que sean de menta pero si no hay, le da igual que sean de cualquier otro tipo. Escriba un algoritmo que represente esta situación. Lo primero que vamos a preguntarnos es: ¿podemos hacerlo solo
usando una secuencia? La respuesta es NO
Ahora debemos determinar como armaremos la selección y nos preguntamos ¿Cual es la condición? Una posible condición es: ¿Hay caramelos de menta?
Dependiendo de la respuesta compraremos de estos o de cualquier otra clase
En los dos casos debemos pagar, por lo tanto esta instrucción irá después se la selección
Elementos que componen un
algoritmo - Selección
Veamos como quedaría el ejemplo:
Ir al kiosco
si (hay caramelos de menta)
Llevar caramelos de menta (1)
sino
Llevar de cualquier otro tipo (2)
Pagar 1 peso
Hay caramelos
De
menta
(2) Llevar cualquier
Otro tipo de caramelos
(1) Llevar caramelos
de menta
VerdaderoFalso
Pagar 1 pesoNote que esta instrucción se encuentra a
la altura de si y sino, esto está indicando
que se ejecuta, independientemente que
se cumpla o no la condición
Elementos que componen un
algoritmo - Selección
En algunos casos puede no haber una acción específica a realizar si la condición es falsa.
si (condición)
Acción o acciones a realizar en caso de que la condición sea verdadera.
Note que en este caso como no hay acciones a realizar si la condición es falsa, no es necesario usar sino
Condición
1. Acciones si la
condición es verdadera
Verdadero
Falso
Elementos que componen un
algoritmo - Selección
Seguimos con el ejemplo
Su amigo se ha puesto un poco mas exigente y ahora le ha pedido que le compre $1 de caramelos de menta en el kiosco. Si no consigue caramelos de menta, no debe comprar nada.
Veamos como modificar el algoritmo para que represente esta situación, nos planteamos:
¿La condición es la misma? Si, “Hay caramelos de menta”
En caso que sea verdadera debe comprar
En el ejemplo anterior pagaba independientemente de que se cumpliera o no la condición, en este caso solo debe pagar si la condición es verdadera, esto nos indica que pagar va a estar dentro de las instrucciones que se hacen si la condición es verdadera
Si la condición “hay caramelos de menta“ resulta ser falsa, no se realizará ninguna acción.
Elementos que componen un
algoritmo - Selección
Seguimos con el ejemplo
Su amigo se ha puesto un poco mas exigente y ahora le ha pedido que le compre $1 de caramelos de menta en
el kiosco. Si no consigue caramelos de menta,
no debe comprar nada.
Veamos un algoritmo que represente esta situación.
Ir al kiosco
si (hay caramelos de menta)
Llevar caramelos de menta
Pagar 1 peso
Hay caramelos
De menta
Comprar caramelos
Verdadero
Falso
Pagar 1 peso
Note que esta instrucción se encuentra a
la altura de llevar caramelos de menta,
esto está indicando que se ejecuta solo si
la condición es verdadera.
Elementos que componen un
algoritmo - Repetición
Repetición
La repetición es la estructura de control que permite al algoritmo ejecutar un conjunto de instrucciones un numero de veces fijo y conocido de antemano.
La notación a utilizar es la siguiente:
repetir N
Acción o acciones a realizar
Esta instrucción ejecutará las acciones tantas veces como sea el numero N, podemos verlo como que incluye un contador de las veces que se hace algo
VerdaderoSe hizo n
veces
Falso
Bloque de acciones
a ejecutar
Elementos que componen un
algoritmo - Repetición
Veamos un ejemploEscriba un algoritmo que permita poner 4 litros de agua en un balde utilizando un recipiente de 1 litro.
Pensemos el algoritmo: Se observa que hay dos pasos básicos:
Llenar el recipiente con agua
Vaciarlo en el balde.
Para completar los cuatro litros es necesario repetir estas dos operaciones 4 veces.
Una primera solución seria mediante una secuencia de instrucciones
Elementos que componen un
algoritmo - Repetición
Una versión usando secuencia sería:Precondición: hay una canilla cerca, hay recipiente, hay balde
Tomar el recipiente
Colocar el balde cerca
Llenar el recipiente de agua.
Vaciar el recipiente en el balde.
Llenar el recipiente de agua.
Vaciar el recipiente en el balde.
Llenar el recipiente de agua.
Vaciar el recipiente en el balde.
Llenar el recipiente de agua.
Vaciar el recipiente en el balde.
Dejar el vaso
Elementos que componen un
algoritmo - Repetición
Que pasa si en lugar de contar con un recipiente de 1
litro contamos con vaso de 50 cc.
Los pasos siguen siendo: llenar el vaso con agua y
vaciarlo en el balde. Para completar los cuatro litros es
necesario repetir estas dos operaciones ochenta veces.
Escribir una secuencia seria bastante tedioso.
Pensemos el algoritmo:
De las acciones anteriores las que se repiten son: Llenar el
vaso de agua y Vaciar el vaso en el balde.
La cantidad de veces que se repiten en este ejemplo es 80
Las instrucciones: Tomar el recipiente, Colocar el balde cerca,
dejar el recipiente no deben repetirse
Elementos que componen un
algoritmo - Repetición
Una versión usando repetición sería:Precondición: hay una canilla cerca, hay recipiente, hay
balde
Tomar el recipiente
Colocar el balde cerca
Repetir 80
Llenar el recipiente de agua.
Vaciar el recipiente en el balde.
Dejar el vaso
Si volvemos al ejemplo en el que el recipiente es de 1 litro, ¿Que
debemos cambiar en el algoritmo anterior?
Elementos que componen un
algoritmo - Iteración
Iteración
Existen situaciones en las que se desconoce el numero de veces que debe repetirse un conjunto de acciones.
La iteración es una estructura de control que permite al algoritmo ejecutar en forma repetitiva un conjunto de acciones utilizando una condición para indicar su finalización.
El esquema iterativo es de la forma:mientras (condición)
Acción o acciones a realizar en caso de que la condición sea verdadera.
Elementos que componen un
algoritmo - Iteración
Las acciones contenidas en la iteración serán ejecutadas mientras la condición sea verdadera.
Es importante notar que, la primera vez, antes de ejecutar alguna de las acciones de la iteración, lo primero que se realiza es la evaluación de la condición. Solo luego de comprobar que es verdadera se procede a ejecutar el conjunto de acciones pertenecientes al mientras.
Si inicialmente la condición resultara falsa, el contenido del mientras no se ejecutara ni siquiera una sola vez.
Es importante que las acciones realizadas en el interior de la iteración modifiquen el valor de verdad de la condición a fin de garantizar que la iteración terminara en algún momento.
Elementos que componen un
algoritmo - Iteración
Ejemplo: Escriba un algoritmo que permita llenar una zanja con arena utilizando una pala.
Pensemos el algoritmo
Suponiendo que nos encontramos parados frente a la zanja y que poseemos pala y arena suficiente (precondiciones)
No sabemos cuantas paladas llenarán la zanja, esto dependerá del tamaño de la zanja y también del tamaño de la pala, entonces no podemos usar la instrucción repetir, debemos usar una iteración.
Para saber cual es la condición podemos preguntarnos: ¿Cuando se termina la iteración? La respuesta en este caso sería cuando se llene la zanja, como la iteración se ejecuta mientras la condición es verdadera, la condición puede ser:
La zanja no este llena
Tomar la pala y dejarla al terminar no van dentro de la iteración
Elementos que componen un
algoritmo - Iteración
Ejemplo: Escriba un algoritmo que permita
llenar una zanja con arena utilizando una
pala.
Tomar la pala.
Ubicarse frente a la zanja.
Tomar la pala
mientras (la zanja no este llena)
Agregar una palada de arena.
Dejar la pala. Note que esta instrucción se encuentra
mas adentro que el resto de las
instrucciones, esto nos indica que es lo
que se repite
Elementos que componen un
algoritmo - Iteración
Ejemplo: Escriba un algoritmo que permita vaciar el contenido de todos los recipientes que hay en una mesa.
Analicemos la solución
mientras hallan recipientes
Tomar 1 recipiente
vaciarlo
dejarlo en el mismo lugar
¿La condición es correcta?, ¿Este algoritmo asegura que lograremos el
objetivo?, si su respuesta es negativa, reescriba el algoritmo.
Elementos que componen un
algoritmo
Importancia de la indentación en las estructuras de control
Las instrucciones que pertenecen a una estructura de control deben tener una sangría mayor que la utilizada para escribir el comienzo de la estructura. De esta forma, podrá identificarse donde termina el conjunto de instrucciones involucradas. A esta sangría se la denomina indentación.
Este concepto se aplica a la tres estructuras de control vistas previamente: selección, repetición e iteración.
Ejemplo
Supongamos que usted está con un grupo de 10 amigos
preparando unos sandwichs, pero ahora tienen varios
fiambres (jamón, salame, lomito), todos los sandwitchs
llevan queso, en ese caso distintas personas pueden
elegir hacer el sandwich combinando de distinta manera
estos ingredientes, pero usted de antemano no sabe cual
será la elección de cada uno, nos preguntamos:
¿Es posible realizar un algoritmo en estas condiciones,
tenemos que hacer una secuencia para cada uno de sus
amigos?
Ejemplo Observemos que tenemos 10 amigos, podemos realizar
una repetición, y luego para cada uno preguntaremos como quiere en sandwitch…Cortar el pan
Repetir 10Tomar una rodaja de pan
Si quiere jamón
Poner jamón
Sino
si quiere salame
Poner salame
sino (si quiere lomito)
Poner lomito
Poner queso
Tapar con otra rodaja de pan
Modifique el algoritmo para que aquellos amigos que quieran agregar
mayonesa puedan hacerlo
Observe que
dentro
de la repetición
hay selección y
dentro de la
selección
hay nuevamente
una selección
Conclusiones
El uso de algoritmos permite expresar, de una forma clara, la manera en que un problema debe ser resuelto. Los elementos que lo componen son característicos de la resolución de problemas con computadora.
Para hacer cualquier algoritmo combinamos secuencia, selección, iteración y repetición, estas sentencias pueden combinarse de acuerdo a lo que necesitemos realizar.
La ejercitación es la única herramienta para poder comprender y descubrir la verdadera potencialidad de las estructuras de control. Resulta fundamental alcanzar un total entendimiento del funcionamiento de estas estructuras para poder lograr expresar soluciones mas complejas que los ejemplos aquí planteados.
Debe resolver la totalidad de los ejercicios del practico 1 del cuadernillo de practicas.