teoría nº 4 - unsl · 2016. 7. 27. · todo problema es expresado en forma verbal o escrita a...
TRANSCRIPT
Fund. de la Informática -Int. a la Computación - Int.a la Programación 1
Teoría Nº 4
ü Resolución de Problemas
ü Lenguaje de Problemas
ü Datos
Segundo Cuatrimestre 2016
En la vida no hay cosas que temer, sólo hay cosas que comprender
Marie Curie
2
Una computadora es, esencialmente, una HERRAMIENTA.
Una herramienta sirve para operar la conversión de una materia prima en un producto mediante un dispositivo que desarrolla un proceso; el proceso a su vez, lo determina una persona.
Resolución de problemas
• materia prima
• producto
• dispositivo
• proceso
datos
información
componentes de la computadora
PROBLEMA
PROBLEMA RESUELTO
?
Analogía
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
La pirámide numérica del Señor Mothada Como un juego de preparación para los a lumnos de la c lase de computación del colegio secundario, el señor Mothada diseñó una pirámide numérica para poner a prueba la matemática lógica y mental. Excepto en la fila de la base, cada bloque contiene un número que es la suma de los 2 números de abajo, de manera que F= A+B, y así, sucesivamente. ¿Puedes descubrir los números que faltan?
A= 104 B= C= 91 D= 22 E=
F= G= 132 H= I=
J= K= L= 252
M= 522 N=
O=
Resolución de Problemas
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
La pirámide numérica del Señor Mothada
A= 104 B= C= 91 D= 22 E=
F= G= 132 H= I=
J= K= L= 252
M= 522 N=
O= ¿Solución?
Resolución de Problemas
¿Estrategia?
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
5
• Enunciado Diseñar un método para
lavarse las manos .
Bosquejo de Solución – Abrir la canilla – Poner las manos debajo del agua y refrejar – Tomar el jabón – Enjabonarse – Dejar el jabón – Refrejarse – Enjuagarse – Cerrar la canilla – Tomar la toalla – Secarse – Dejar la toalla
Resolución de Problemas
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
6
Tipos de problemas a resolver:
Según la solución a encontrar
Ej.: Elección de un candidato en un sistema de votación .
Ej.: La resolución de un sistema de ecuaciones.
Nosotros nos concentraremos en problemas de tipo OBJETIVO
Subjetiva
La solución depende de un sistema de valores o criterios subjetivos
planteo vago con soluciones dispares y/o contrapuestas.
Objetiva
La solución depende de hechos objetivos.
planteo contiene condiciones y/o
restricciones que permiten decidir la validez de la solución.
Resolución de Problemas
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
Resolución de Problemas
Método de Polya
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
Resolución de Problemas
Método de Polya
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
Resolución de Problemas
Método de Polya
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
Resolución de Problemas
Método de Polya
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
¿Soluciona el problema?
¿Es la mejor solución?
Resolución de Problemas
Método de Polya
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
Problema Una habitación, con 2 ventanas rectangulares, mide 25m2, cada baldosa mide 0,04m2. ¿Cuántas baldosas se necesitan para cubrir el piso completo de la habitación?
Resolución de Problemas
Método de Polya
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
1. Entender el problema. Escribir EL Objetivo de este Problema y los datos a utilizar, descartando los
datos innecesarios según el objetivo planteado.
Algunas de las preguntas que conviene realizarse en este momento son:
• ¿Se entiende lo que plantea el problema? ¿Podrían expresarlo con sus
propias palabras?
• ¿Se entiende a qué hay que llegar? ¿Cuál es el objetivo?
Resolución de Problemas
Método de Polya
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
Problema Una habitación, con 2 ventanas rectangulares, mide 25m2, cada baldosa mide 0,04m2. ¿Cuántas baldosas se necesitan para cubrir el piso completo de la habitación?
¿Objetivo?
Resolución de Problemas
Método de Polya
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
1. Entender el problema. Escribir EL Objetivo de este Problema y
los datos a utilizar, descartando los datos innecesarios según el objetivo planteado.
Algunas de las preguntas que conviene realizarse en este momento son:
• ¿Se pueden distinguir datos? ¿Hay datos desechables? • ¿Hay datos, que creen que sirven pero no saben cómo utilizarlos?
¿Cuáles?
Resolución de Problemas
Método de Polya
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
Problema Una habitación, con 2 ventanas rectangulares, mide 25m2, cada baldosa mide 0,04m2. ¿Cuántas baldosas se necesitan para cubrir el piso completo de la habitación?
¿Datos relevantes?
¿Datos irrelevantes?
Resolución de Problemas
Método de Polya
1. Entender el problema.
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
2. De2inir un plan.
En este punto es importante pensar en:
¿Es posible dibujar alguna figura o esquema que nos oriente?
¿Qué relación existe entre el objetivo y el estado inicial planteado en el
problema?
¿Qué cálculos se deben realizar? ¿Identifica algún patrón?
En qué orden deberíamos resolver los cálculos para descifrar la incógnita?
Para elaborar el plan a seguir es necesario utilizar alguna estrategia que los oriente a encontrar
ideas útiles a seguir.
Resolución de Problemas
Método de Polya
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
Problema
Una habitación, con 2 ventanas rectangulares, mide 25m2, cada baldosa mide 0,04m2. ¿Cuántas baldosas se necesitan para cubrir el piso completo de la habitación?
Definamos un plan
Resolución de Problemas
Método de Polya
2. De2inir un plan.
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
3. Ejecutar el plan
¿Se han empleado todos los datos?
¿Se ha tenido en cuenta todas las nociones del problema?
¿Se logró el objetivo especificado en la primera etapa?
En este punto deben seguir las ideas y pasos
establecidos en la etapa anterior hasta que se
encuentre la solución o
hasta que se encuentren con otra dificultad, en cuyo
caso será necesario volver a pensar...
Resolución de Problemas
Método de Polya
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
4. Mirar hacia atrás:
En esta etapa es necesario que tengan una visión retrospectiva donde
puedan observar:
¿qué fue lo que se hizo? ¿El razonamiento seguido tuvo en
cuenta todas las restricciones del problema?
¿El resultado obtenido, es correcto? ¿Es posible verificarlo?
¿Es posible extender la solución a un caso más general?
Resolución de Problemas
Método de Polya
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
Problema Una habitación, con 2 ventanas rectangulares, mide 25m2, cada baldosa mide 0,04m2. ¿Cuántas baldosas se necesitan para cubrir el piso completo de la habitación?
¿Es general la solución?
¿Y si la habitación mide 30m2?
Resolución de Problemas
Método de Polya
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
Resolución de Problemas (Repaso)
✓ Problema en forma de enunciado ✓ Reconocimiento de
datos importantes ✓ Eliminación de datos
innecesarios ✓ Determinación del
objetivo
Resolución de Problemas
Método de Polya
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
Resolución del problema: encontrar una secuencia de acciones expresadas en forma de método o receta.
23
Problema
Problema’ Resolución del problema
Expresarlo
Solución Problema
Resolución de Problemas
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
24
Todo problema es expresado en forma verbal o escrita a través de un enunciado.
L a A b s t r a c c i ó n d e u n problema describe los aspectos fundamentales del mismo y descarta detalles irrelevantes
Inconveniente: 4 la cantidad de información suministrada.
Necesidad: 4 obviar los detalles irrelevantes.
Técnica: 4la utilización de una ABSTRACCIÓN. Objetivo: 4Construir la abstracción de un problema de la realidad. 4Construir una simplificación de la misma 4Construir un MODELO.
Definir un plan: Representación Resolución de Problemas
Modelo: Representación de alguna cosa.
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
25
Utilizaremos abstracción en un sentido de “obtener la esencia” al identificar o percibir el problema.
Resolución de Problemas
En el nivel superior de abstracción, se establece una solución en términos amplios, usando el lenguaje del entorno natural.
En los niveles inferiores de abstracción se toma una orientación más procedimental. La terminología orientada al problema se acompaña con una terminología orientada a la implementación, en un esfuerzo para establecer una solución.
Por último, en el nivel más bajo de abstracción, se establece la solución de forma que pueda implementarse directamente.
Definir un plan: Representación
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
26
¿Por qué unas personas ven unas cosas que otros no ven teniendo adelante el mismo escenario?
Resolución de Problemas Comprender el problema: Abstracción
Los procesos de abstracción y aprehensión
están condicionados en buena medida por
nuestras características personales y
capacidades... Pero también por el ejercicio,
esfuerzo y el uso de métodos adecuados.
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
27
Resolver Problemas… ¿Cómo?
Una computadora posee un repertorio muy reducido de instrucciones elementales que es capaz de entender y obedecer. Determinar el proceso de resolución de un problema consiste en establecer la secuencia de dichas instrucciones elementales que llevarán a que la computadora resuelva el problema por nosotros.
La secuencia de instrucciones elementales a ser ejecutadas por una computadora se denomina: Programa
La acción de determinar la secuencia de instrucciones elementales se denomina: Programar
Resolución de Problemas
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
28
No obstante:
Las computadoras son herramientas con una amplia variedad de aplicaciones. Los problemas a resolver son de una amplia gama, mayormente No Triviales.
La mayor dificultad radica en el propio proceso de resolver el problema (determinar un ALGORITMO) más que en escribir un programa en un lenguaje de programación.
Resolución de Problemas
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
29
Todo proceso de resolución de un problema puede representarse como la transición entre dos estados diferentes: un estado Inicial y un estado Final o Deseado.
Como abordar un problema
O lo que es lo mismo, para resolver un problema se debe establecer cual es el conjunto de tareas que se deben realizar para poder llegar al estado final.
ACCIONES
EI
EF
Conjunto de Acciones que llevan de un estado al otro
Resolución de Problemas
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (1er Cuatrimestre 2016)
30
Existen problemas cuya solución puede ser expresada mediante la utilización de un método, receta o fórmula. Ej.: armar un juguete por partes, hacer una torta.
Bosquejar una solución
ALGORITMO
Resolución de Problemas
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
31
Algoritmo
Un algoritmo es una sucesión de instrucciones o pasos precisos que permiten resolver un problema. Características
ü Consiste en una secuencia de etapas con un punto de inicio. ü Debe ser preciso (no ambiguo). ü Debe ser general ü Debe ser finito en tamaño y tiempo.
Lenguaje del problema
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
32
Problemas de Tipo Computacional
Definiciones asociadas: Trabajo: problema a resolver. Enunciado: descripción del trabajo a realizar. Procesador: entidad capaz de realizar un trabajo indicado a través de un algoritmo. Ambiente: conjunto de todos los recursos necesarios para la ejecución de un trabajo. Algoritmo: conjunto de acciones (pasos) que debe realizar la entidad procesadora para llegar al fin perseguido.
Resolución de Problemas
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
33
¿Qué se considera ACCIÓN?
ACCIÓN Es un evento que modifica al ambiente establecido. Restricción Dicha acción debe ser especificada de modo que pueda ser comprendida por el procesador sin mayor información adicional (no ambigua) . Esto se denomina Acción Primitiva.
Resolución de Problemas
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
34
Como abordar un problema
Resolución de Problemas
Actividad: Programar en papel cuadriculado
Primitivas disponibles
UNSL - Fund. de la Informática -Introd. a la Computación -Introd. a la Programación (1er Cuatrimestre 2016)
35
Determinación Existen diferentes técnicas para descomponer un problema en un conjunto de acciones primitivas. Una de ellas es denominada Refinamiento Sucesivo.
Dado un trabajo T, descripto por medio de acciones no primitivas, tal que transforma el ambiente desde el estado inicial E0 en un estado final Ef, se puede encontrar una descomposición t1,t2,...,tn que constituye una secuencia de acciones primitivas que ejecuta el trabajo T.
Donde: para cualquier ti dado
• si es una acción primitiva para el procesador, se finaliza la descomposición. • si no es acción primitiva para el procesador, ésta se debe descomponer en una nueva secuencia ti,1, ti,2, ...,ti,k.
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
36
E0
Ef
T
E1 t1
t2
t3
tn
E2
En-1
t3,1
t3,2
t3,3
Refinamiento Sucesivo
Resolución de Problemas
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
Mediante la Resolución del problema se pretende llegar a
37
Lenguaje del problema
Problema
Solución
Problema’ Se convierte en
Descomposición
Solución Problema
Resolución de Problemas
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
38
Cómo se expresa?
4 diversidad de métodos.
Característica:
4 en un lenguaje comprensible para las personas.
LENGUAJE DEL PROBLEMA
Algoritmo
Lenguaje del problema
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
39
Enunciado: se desea dibujar un farol con pedestal del siguiente tipo. Procesador: una tortuga con la habilidad de moverse y dibujar sobre el plano. Ambiente: una hoja de papel. Acciones primitivas:
4 DERECHA <grados> 4 IZQUIERDA <grados> 4 ADELANTE <número_de_pasos>
Situación Inicial del Ambiente:
Ejemplo:
t papel tortuga
Lenguaje de Problemas
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
40
Donde t1 se puede descomponer en (versión 2):
t1 - Dibujar la base, que es un rectángulo. t2 - Dibujar el poste, que es una línea. t3 - Dibujar el farol, que es un rombo.
t11 - Dibujar el borde superior del rectángulo. t12 - Dibujar el borde derecho del rectángulo. t13 - Dibujar el borde inferior del rectángulo. t14 - Dibujar el borde izquierdo del rectángulo
Algoritmo: Versión 1:
Lenguaje de Problemas
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
41
Donde t11 se puede descomponer en (versión 3): t111 - DERECHA 90 t112 - ADELANTE 40
Donde t12 se puede descomponer en: t121 - DERECHA 90 t122 - ADELANTE 10
Donde t13 se puede descomponer t131 - DERECHA 90 t132 - ADELANTE 40
t11 - Dibujar el borde superior del rectángulo.
Acciones primitivas:
4 DERECHA <grados> 4 IZQUIERDA <grados> 4 ADELANTE <número_de_pasos>
t12 - Dibujar el borde derecho del rectángulo. t13- Dibujar el borde inferior del rectángulo.
Lenguaje de Problemas
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
42
Lenguaje del problema
Ejemplo Nº 1:
Enunciado: sumar los números 124, 59 y 3 usando la calculadora de bolsillo.
Procesador: una persona que entienda la tarea descripta y cuente con los
elementos necesarios para realizarla.
Ambiente: la calculadora de bolsillo.
Acciones primitivas: ( la notación “< >” representa una tecla )
4 Oprimir <C> (limpiar pantalla)
4 Oprimir <dig>
4 Oprimir <+>
4 Oprimir <=> (mostrar el resultado)
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
43
Ejemplo Nº 1: Sumar los números 124, 59 y 3 usando la calculadora de bolsillo.
Versión 2: (versión 1 refinada) t1 - Limpiar visor. t21 - Colocar el número 1. t22 - Colocar el número 2. t23 - Colocar el número 4. t3 - Oprimir tecla de suma. t41 - Colocar el número 5. t42 - Colocar el número 9. t5 - Oprimir tecla de suma. t6 - Colocar el número 3. t7 - Oprimir tecla igual para obtener resultado.
Algoritmo expresado en lenguaje del problema Versión 1: t1 - Limpiar visor. t2 - Colocar el número 124. t3 - Oprimir tecla de suma. t4 - Colocar el número 59. t5 - Oprimir tecla de suma. t6 - Colocar el número 3. t7 - Obtener obtener resultado.
Lenguaje del problema
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
44
Ejemplo Nº 2: Dibujar un farol con pedestal.
t11 - Dibujar el borde superior del rectángulo. t12 - Dibujar el borde derecho del rectángulo. t13 - Dibujar el borde inferior del rectángulo. t14 - Dibujar el borde izquierdo del rectángulo t21 - Posicionar la tortuga en la mitad de la base. t22 - Dibujar el poste.
t31 - Dibujar el borde inf. derecho del rombo. t32 - Dibujar el borde sup. derecho del rombo. t33 - Dibujar el borde sup. izquierdo del rombo. t34 - Dibujar el borde inf. izquierdo del rombo.
Versión 2: (versión 1 refinada)
Versión 1: t1 - Dibujar la base, que es un rectángulo. t2 - Dibujar el poste, que es una línea. t3 - Dibujar el farol, que es un rombo.
Lenguaje del problema
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
45
Versión 3: (versión 2 refinada) t111 - Girar a la derecha 90 grados.
t112 - Avanzar 40 pasos. t121 - Girar a la derecha 90 grados. t122 - Avanzar 10 pasos. t131 - Girar a la derecha 90 grados. t132 - Avanzar 40 pasos. t141 - Girar a la derecha 90 grados. t142 - Avanzar 10 pasos. t211 - Girar a la derecha 90 grados. t212 - Avanzar 20 pasos. t213 - Girar a la izquierda 90 grados. t221 - Avanzar 30 pasos.
t31 - Dibujar el borde inf. derecho del rombo. t32 - Dibujar el borde sup. derecho del rombo. t33 - Dibujar el borde sup. izquierdo del rombo. t34 - Dibujar el borde inf. izquierdo del rombo.
t11 - Dibujar el borde superior del rectángulo. t12 - Dibujar el borde derecho del rectángulo. t13 - Dibujar el borde inferior del rectángulo. t14 - Dibujar el borde izquierdo del rectángulo
t21 - Posicionar la tortuga en la mitad de la base. t22 - Dibujar el poste.
Lenguaje del problema
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
46
t1 - Repetir 2 veces, (t111 - t112 - t121 - t122). t211 - Girar a la derecha 90 grados. t212 - Avanzar 20 pasos. t213 - Girar a la izquierda 90 grados. t22 - Avanzar 30 pasos. t31 - Dibujar el borde inf. derecho del rombo. t32 - Dibujar el borde sup. derecho del rombo. t33 - Dibujar el borde sup. izquierdo del rombo. t34 - Dibujar el borde inf. izquierdo del rombo.
Versión 4:
Lenguaje del problema
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
47
Diseñar un algoritmo que lea tres números enteros positivos y encuentre si uno de ellos es la suma de los otros dos.
Lenguaje del problema
Ejemplo Nº 3:
Solución Versión 1:
t1 – Pensar 3 números enteros positivos. (A, B, C)
t2 – Determinar si uno de esos valores es la suma de los otros dos.
No obstante: No todos los problemas tienen un único algoritmo que lo resuelve.
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
48
Ejemplo Nº 4: Dados cuatro números A,B,C y D determinar cual es el mayor de ellos e informarlo. (Algoritmo expresado en lenguaje del problema) Solución 1: Versión 1:
t1 - Si A es mayor que B, C y D, informar A. t2 - Si B es mayor que A, C y D, informar B. t3 - Si C es mayor que A, B y D, informar C. t4 - Si D es mayor que A, B y C, informar D.
Lenguaje del problema
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
49
Solución 2: Versión 1:
t1 - Determinar el mayor entre A y B. t2 - Determinar el mayor entre el resultado de
(A, B) y C. t3 - Determinar el mayor entre el resultado de ((A, B), C) y D. t4 - Informar el número resultante.
Lenguaje del problema
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
50
Todas las versiones expresan una solución al problema a través de la especificación de acciones con diferente nivel de detalle y en
un lenguaje cercano a la persona.
Solución 3 Versión 1:
t1 - Determinar el mayor entre A y B. t2 - Determinar el mayor entre C y D. t3 - Determinar el mayor entre el resultado de (A, B) y (C, D). t4 - Informar el número resultante.
Lenguaje del problema
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
Definiciones asociadas: Enunciado: descripción del trabajo a realizar. Procesador: Computadora Ambiente: los objetos del universo del problema.
51
Algoritmos Computacionales
Cómo son esos objetos? Cuáles son esos objetos?
Objetos capaces de almacenar datos propios de la computadora
los objetos
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
52
Suponemos que los objetos son contenedores de datos, por ejemplo CAJAS Como puedo pretender trabajar con varios de estos objetos (cajas)
Es necesario, distinguirlos unos de otros, identificarlos unívocamente, o lo que es lo mismo asignarles un Nombre o Identificador.
pepe juan casa estrella Todos ellos van a contener datos propios de una computadora, en principio números o letras.
estrella 123
estrella oso
Datos
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
53
Restricción: Solamente podrán contener información de un solo tipo. estrella estrella 123 oso
estrella estrella 123 oso
CATEGORIZAR LOS OBJETOS
pepe juan
Objetos que almacenan números
casa
estrella
Objetos que almacenan letras o caracteres
Datos
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
54
reales
Datos
numérica
caracteres
lógica
enteros
Objetos que almacenan valores lógicos
pepe juan
Objetos que almacenan enteros casa estrella
Objetos que almacenan letras o caracteres
Objetos que almacenan reales jose luis tomas lucas
Datos
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
55
Debido a que una computadora procesa datos, (datos categorizados en entera, real, carácter o lógica) es altamente probable que ese procesamiento implica que los datos, que se le entregue a la entrada, deban ser modificados para poder entregar un resultado.
La datos almacenados en los objetos (contenedores) puede variar, es decir los objetos van a variar su contenido durante el proceso de resolución de un problema.
VARIABLES DE INFORMACIÓN A los objetos se los denomina:
Datos
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
56
Variables En síntesis
Variable
Atributos Nombre
Tipo de Datos
Funcionalidad
Almacena un dato temporalmente
Es posible cambiar su contenido durante el ciclo de vida de un proceso
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
57
Ejemplo Nº 1: Enunciado: dados dos números enteros positivos, digamos m y n, encontrar el algoritmo que determine la potencia n-ésima de m. Con n > 1. Procesador: computadora. Acciones primitivas:
4 Dar un valor a un objeto. 4 Calcular la suma de dos números. 4 Calcular el producto de dos números. 4 conjunto repetitivo de acciones expresado:
Mientras <condición> Hacer <acciones-primitivas> Repetir.
Variables
Ambiente: ¿Variables?
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
58
Análisis del problema:
• Si se tiene que m representa el valor 4 y n representa el valor 3, entonces se calcula: 43 = 4 x 4 x 4 = 64. • Si se tiene que m representa el valor 2 y n representa el valor 6, entonces se calcula: 26 = 2 x 2 x 2 x 2 x 2 x 2 = 64.
Generalizando
mn = m x m x … x m
Variables
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
(mn-1 x m)
(mn-2 x m)
(mn-3 x m)
(m2 x m) (m x m)
n veces se repite m
• Cuantas veces se realizó la operación? • Cada operación es igual a la anterior?
Si mn = m x m x … x m
mn =
Variables
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
60
8 x 82
8 8 x 81
83 = 8 x 8 x 8
Número a multiplicar (base de la potencia)
Cálculo previo a ser reutilizado
Número de veces que se realizó la multiplicación
Realizar: 83
2
83
3 índice de la potencia
Variables
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
61
Determinación de las variables que contienen información necesaria: 1- objeto conteniendo el entero positivo al cual se le
calcula la potencia (base de la potencia).
2- objeto conteniendo el entero positivo que indica la potencia (exponente de la potencia).
3- objeto que determine cuantas multiplicaciones se deben realizar. 4- objeto que mantenga los cálculos previos para poder
realizar los nuevos cálculos.
Ambiente: 4 variables
Variables
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
Versión 2: t1 - Determinar nombres y tipos de las variables. t2 - Dar valores iniciales a las variables. t31 - Comenzar con el entero 1. t32 - Para todo entero positivo menor que el valor indicado como índice, multiplicar el número dado por el resultado anterior.
62
Algoritmo: (Solución en Lenguaje de Problemas) Versión 1:
t1 - Determinar nombres y tipos de las variables. t2 - Dar valores iniciales a las variables. t3 - Contando desde 1, multiplico el entero por la potencia anterior, tantas veces como lo indica el índice de la potencia.
Variables
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
63
Determinar nombres y tipos a las variables.
Dar valores iniciales a las variables.
C
tomar el número y multiplicarlo por el resultado anterior. .
F
entero < índice pot.
Comenzar con el entero 1.
Tomar un nuevo entero.
V F
Diagrama de Flujo
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
64
1 - Variable con el valor de la base (NUMERO) 2 - Variable con el valor del índice (POTENCIA) 3 - Variable conteniendo el entero que indica las veces que se debe multiplicar (VECES). 4- Variable que que guarda cálculos previos (PREVIO)
Variables
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
65
Bosquejo del algoritmo: t1 - NUMERO, POTENCIA, PREVIO, VECES: entero t21 - dar a NUMERO el valor m (el que se desee) t22 - dar a POTENCIA el valor n (mayor que 1) t23 - dar a PREVIO el valor m t31 - dar a VECES el valor 1 MIENTRAS el valor de VECES sea menor que el valor de POTENCIA HACER
t321- multiplicar el valor de NUMERO por el valor de PREVIO t322 -dar este nuevo resultado al objeto PREVIO t323 -sumar 1 al valor de VECES t324 -dar este nuevo resultado al objeto VECES
REPETIR
Variables
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
66
Ejemplo Nº 2: Enunciado: dado un número entero positivo, encontrar el algoritmo que determine el factorial de dicho número. Procesador: computadora. Acciones primitivas:
4 Dar un valor a una variable. 4 Calcular la suma de dos números. 4 Calcular el producto de dos números. 4 conjunto repetitvo de acciones expresado:
Mientras <condición> Hacer <acciones-primitivas> Repetir. Ambiente: ¿Variables?
Variables
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
67
Análisis del problema:
Si se tiene el nro. 4, se calculará: 1x2x3x4 = 24 = 4! Si se tiene el Nº 5, se calculará: 1x2x3x4x5 =120 = 5! y así siguiendo.
1! = 1 2! = 2 x 1 = 2 x 1! 3! = 3 x 2 x 1 = 3 x 2! .....
n! = n x (n -1) x (n-2) x ... x 1 = n x (n-1)!
Variables
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
68
n! = n x (n -1) x (n-2) x ... x 1 = n x (n-1)! n = 4
3 x 2!
1
2 x 1!
4! = 4 x 3!
Número a multiplicar
Calculo previo a ser reutilizado
Número a calcular el factorial,
Veces que debo multiplicar
Variables
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
69
Determinación de las variables: 1- variables conteniendo el entero positivo al cual se le calcula el factorial y que determina las veces que debo multiplicar. 2- variables que determine que valores se irán multiplicando. 3- variables que mantenga los cálculos previos para poder realizar los nuevos cálculos.
Ambiente: 3 variables
Variables
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
70
Algoritmo: Solución 1: Versión 1: (nivel 1 de descomposición)
t1 - Asignar nombres y tipos a las variables. t2 - Dar valores iniciales a las variables. t3 - Realizar repetidamente el producto de un numero por el factorial de su anterior.
Versión 2: t1 - Asignar nombres y tipos a las variables. t2 - Dar valores iniciales a las variables. t31 - Comenzar con el entero 1. t32 - Para todo entero positivo menor o igual que el valor dado, tomar el entero y multiplicarlo por el resultado anterior.
Ejemplo
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
71
Solución 2: Versión 1:
t1 - Asignar nombres y tipos a las variables. t2 - Dar valores iniciales a las variables. t3 - Comenzando por 1, multiplico desde 1
todos los enteros positivos menores que el número dado como valor inicial.
Ejemplo
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
72
Asignar nombres y tipos a las variables.
Dar valores iniciales a las variables.
C
tomar el entero y multiplicarlo por el resultado anterior. .
F
entero <= valor dado
Comenzar con el entero 1.
Tomar un nuevo entero.
V F
Ejemplo
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
73
Variables: 1 - Variable con el valor dado (NUMERO)
2- Variable que guarda resultados anteriores (FACTORIAL),
3 - Variable que tiene el entero a multiplicar (AGREGO).
Ejemplo - Variables
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
74
Bosquejo del algoritmo: t1 -NUMERO, FACTORIAL, AGREGO: entero t21 - dar a NUMERO el valor n (el que se desee) t22 -dar a FACTORIAL el valor 1 t31 - dar a AGREGO el valor 1 MIENTRAS el valor de AGREGO sea menor o igual que el valor de NUMERO HACER
t321- multiplicar el valor de AGREGO por el valor de FACTORIAL t322 -dar este nuevo resultado al objeto FACTORIAL t323 -sumar 1 al valor de AGREGO t324 -dar este nuevo resultado al objeto AGREGO
REPETIR
Ejemplo - Variables
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
75
Acción ejecutada Estado del ambiente después de ejecutada la acciónNUMERO AGREGO FACTORIAL
t1 indeterminado indeterminado indeterminadot2.1 3 indeterminado indeterminadot2.2 3 indeterminado 1t3.1 3 1 1(1º repetición) 1 ≤ 3 verd.t321 3 1 1 1t322 3 1 1t323 3 1 1 2t324 3 2 1(2º repetición) 2 ≤ 3 verd.t321 3 2 1 2t322 3 2 2t323 3 2 2 3t324 3 3 2(3º repetición) 3 ≤ 3 verd.t321 3 3 2 6t322 3 3 6t323 3 3 6 4t324 3 4 6(4º repetición) 4 ≤ 3 falso
fin de repetición y fin del algoritmo
Ejemplo - Ejecución
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2016)
76
Realizar en pseudocódigo que representa a un algoritmo que calcula para el valor de una temperatura expresada en grados centígrados sus equivalentes en grados Reaumhur, grados Fahrenheit y grados Kelvin. Sabiendo que: • 100º Centígrados=80º Reaumhur=212º Fahrenheit=373º kelvil • 0º Centígrados=0º Reaumhur=32º Fahrenheit=273º kelvi
Ejemplo
UNSL - Fund. de la Informática -Introd.a la Computación -Introd.a la Programación (2do Cuatrimestre 2015)