Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Tema 03: Resolución de problemas computables
Estructuras de datos (Prof. Edgardo A. Franco)
1M. en C. Edgardo Adrián Franco Martínez http://[email protected]@edfrancom edgardoadrianfrancom
Contenido• Recordando la razón de ser de las computadoras• ¿Qué es un programa de computadora?• ¿Qué es un algoritmos computacional?• ¿Qué tipos de instrucciones puede realizar una
computadora?
• Resolución de problemas• ¿Qué es un problema?
• Recomendación para lograr resolver un problema mediante un programa computacional• El camino al éxito• Errores típicos al buscar una solución computable
• Como representar una solución • Una instrucción computable tras otra• Una instrucción u otra según algún criterio• Una instrucción o muchas mientras algo suceda
2
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Debido a su gran velocidad para realizar cálculos,almacenamiento, procesamiento y recuperación deinformación de manera precisa podemos decir que:
“La razón de ser de una computadora es poder resolver problemas capaces de ser modelados y representados en datos coherentes y ordenados (información) procesables para una computadora, apoyándose de su gran velocidad
para tratar la información y su capacidad de seguir una serie de pasos programados con anterioridad”.
3
Recordando la razón de ser de las Computadoras
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
¿Dónde se plasma la solución a un problema a ser resuelto por unacomputadora?
4
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
En un programa de computadora
• Un programa de computadora es una serie de instrucciones a serrealizadas por la computadora para darle una solución a un problemala cuáles han sido descritas por un programador bajo un lenguaje deprogramación.
5
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
¿Qué es un Programa de Computadora?
¿Cuál es la esencia de un programa de computadora?
6
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Uno o varios algoritmos plasmados en el
¿Qué es un algoritmo computacional?
• Es un conjunto ordenado y finito de operacionesinherentes a un cómputo que permite hallar la solución deun problema.
7
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
¿Qué tipos de instrucciones puede realizar una computadora?
8
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
1. Instrucciones en secuencia2. Recibir o mostrar datos (Entrada / Salida) 3. Saltar a otras instrucciones4. Almacenar, editar y eliminar datos en la memoria5. Operar matemáticamente con los datos
¿Qué tipos de instrucciones puede realizar una computadora?
Al pensar en la idea de crear algoritmos a ser ejecutados medianteuna computadora es necesario entender cuales son lasinstrucciones capaces de realizar una computadora, por lo quepodemos decir de manera general que estas son las capacidadesde procesamiento de una computadora:
1. Procesar instrucciones en secuencia (Las instrucciones se colocansecuencialmente en la memoria y se ejecutan en ese orden)
2. Recibir o mostrar datos (Una computadora cuenta dispositivos parala entrada y salida de información capaz de ser colocada en la memoriapara leerlos o tomarlos y mostrarlos)
3. Saltar a otras instrucciones (Continuar una secuencia de instrucciones enotra dirección de memoria no continua)
4. Almacenar, editar o eliminar datos en la memoria (Guardar,editar, mover y eliminar valores en una o más direcciones de memoria)
5. Operar con números almacenados en la memoria (Unacomputadora cuenta con la posibilidad de realizar operaciones numéricas enbase 2 con las variables colocadas en la memoria)
9
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
1. Procesar instrucciones en secuencia (Las instrucciones se colocan
secuencialmente en la memoria y se ejecutan en ese orden)
2. Recibir o mostrar datos (Una computadora cuenta dispositivos para la
entrada y salida de información capaz de ser colocada en la memoria paraleerlos o tomarlos y mostrarlos)
10
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
0X10A Leer base()0X10B Leer altura()0X10C area=base*altura 0X10D perimetro=base*2+altura*20X10E Mostrar area0X10F Mostrar base
Secuencia contigua de instrucciones en la memoria
3. Saltar a otras instrucciones (Continuar una secuencia de
instrucciones en otra dirección de memoria no continua)
11
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
0X10A Leer base()0X10B Leer altura()0X10C area=base*altura 0X10D perimetro=base*2+altura*20X10E Mostrar area0X10F Mostrar base0X110 Salta 0X10A
4. Almacenar, editar o eliminar datos en la memoria (Guardar,
editar, mover y eliminar valores en una o más direcciones de memoria)
5. Operar con números almacenados en la memoria (Una
computadora cuenta con la posibilidad de realizar operaciones numéricas enbase 2 con las variables colocadas en la memoria)
12
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
0X10A Leer base() ~ 0x200 = Entrada0X10B Leer altura() ~ 0x203 = Entrada0X10C area=base*altura ~ 0x206 = 0x200 * 0x2030X10D perimetro=base*2+altura*2 ~ 0x208 = 0x002
~ 0x20A = 0x200 * 0x208~ 0x20B = 0x200 * 0x203~ 0x20C = 0x20A + 0x20B
0X10E Mostrar área ~ Salida = 0x2060X10F Mostrar base ~ Salida = 0x206 0X110 Salta 0X10A
Resolución de problemas• La razón de ser de un programa computacional es modelar
las soluciones a problemas modelados en un contextoinformático (procesamiento de la información) por mediode instrucciones computables, para lograr este objetivo esnecesario crear abstracciones del problema y con base enuna filosofía de programación (paradigma) y un lenguajede programación plasmar una solución a cada abstracciónrealizada.
13
Abstracción: Acto mental en el que conceptualmente se aísla un objeto o una propiedad de un objeto para su análisis y entendimiento.
*La abstracción depende totalmente de los conocimientos del sujeto
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• ¿Qué es un problema?
14
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Un problema es una cuestión discutible que hay que resolver oa la que se busca una explicación, solución o dato.
15
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
¿Qué es un problema?
El camino al éxito• Una de los mayores deseos de toda persona es poder
resolver los problemas a los que se enfrenta ser capaz dedar las soluciones a los problemas siempre serágratificante.
• El éxito se da al realizar buenas abstracciones delproblema y con base en una filosofía clara (forma de ver lavida) se puede plasmar una solución a cada abstracción yllevarla a cabo para determinar si hemos logrado resolver lacuestión planteada.
16
*Y esto no es coaching, pero se parece https://es.wikihow.com/resolver-problemas
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Éxito
Probar
Implementar
Pruebas de escritorio
Propuesta de solución
Casos de prueba
Consideraciones
Entender el problema
17
Basándose en la experienciade personas que han dadosolución a muchosproblemas computables serecomienda
Puede ser necesario caer para llegar aléxito, pero conforme mas experiencia setenga en cada etapa más rápido sedominara la montaña
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Errores típicos al buscar una solución computable
1. No entender completamente el problema: Puede llevarnos a convertirel problema en algo que no es.
2. Tratar de ver el problema exactamente igual que un resueltoanteriormente: A veces problemas resueltos previamente puedenservirnos para dar solución a uno nuevo, pero nunca serán iguales al100% por lo que debe tenerse cuidado en distinguir las diferencias.
3. Buscar una solución 100% perfecta y optima desde el inicio: No seráposible desde la idea inicial ser optimo en la solución, esta seperfecciona conforme se va formalizando su implementación.
4. No probar con nuevas instancias del problema: Tratar de dar solución alos ejemplos sencillos únicamente y no plantear nuevas instancias delproblema puede caer en encontrar una solución parcial al problema.
5. No considerar las posibilidades de la computadora o las limitantes delas tecnologías donde se implementara la solución desde el inicio puedecomplicar mucho la búsqueda o su implementación.
6. No considerar soluciones optimas o paradigmas de solución de autoresrelevantes o tratar de inventar el hilo negro: El desconocimiento dealgoritmos produce trabajar doble en la búsqueda de soluciones a unproblema o llegar a resultados poco eficientes.
18
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Como representar un solución• En esencia considerando las posibilidades y la arquitectura
básica de una computadora podemos decir que unasolución computable a un problema debe considerarintegrar algoritmos con objetivos claramente definidos.Cada uno de ellos pueden ser descritos como un grupo deinstrucciones que pueden llevarse a cabo bajo tresestructuras básicas de flujo en la computadora:
1. Una instrucción computable tras otra
2. Una instrucción u otra según algún criterio
3. Una instrucción o muchas mientras algo suceda
19
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Una instrucción computable tras otra
• La secuencia simple de instrucciones es la estructura deprogramación más natural, pues consiste solamente en lacolocación de las instrucciones en un orden secuencial, lógica ypreciso. Trabajando aisladamente, las instrucciones se ejecutanuna única vez, una después de la otra, sin cambio en el flujo deejecución.
20
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Inicio
Instrucción 1
Instrucción 2
Instrucción 3
. . . . .
Instrucción N Fin
Una instrucción u otra según algún criterio• Las estructuras selectivas son sentencias de programación que
nos permiten elegir entre dos a más opciones o caminos deinstrucciones. La elección se hace mediante la evaluación de uncriterio.
21
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Si (condición) entonces
{
Instrucciones
} Si no
{
Instrucciones
}
• Las estructuras selectivas son sentencias de programación quenos permiten elegir entre dos a más opciones o caminos deinstrucciones. La elección se hace mediante la evaluación de uncriterio.
22
Alg
ori
tmia
y p
rogr
amac
ión
est
ruct
ura
da
Tem
a 0
3:
Res
olu
ció
n d
e p
rob
lem
as c
om
pu
tab
les
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Una instrucción o muchas mientras algo suceda
Mientras (condición) hacer
{
Instrucciones
}