ALGORITMIA Y PROGRAMACIÓN
Carlos Andrés Mera Banguero
[email protected]
Clase No. 1
Introducción Funciones Presentación del Programa Problemas y Soluciones Definición de Algoritmo Introducción al Enfoque de Objetos
Introducción Funciones Presentación del Programa Problemas y Soluciones Definición de Algoritmo Introducción al Enfoque de Objetos
NO NO 3 Horas Semanales
Capacitar al estudiante en la solución de problemas mediante su modelación por el enfoque de objetos, el desarrollo de métodos con algoritmos estructurados y la programación en el computador mediante un lenguaje orientado a objetos.
Los Problemas y Tipos de Soluciones Ejemplificación de Problemas Tipos de Soluciones para Problemas
Problemas El Enfoque de Objetos Objetos, Atributos, Clases y Métodos Relaciones Entre Clases
El Lenguaje de Programación Java Instrucciones Básicas del Lenguaje El API de Java y Clases Avanzadas
Desarrollo de Interfaces Gráficas Componentes Swing Manejo de Eventos del Ratón
I Parcial: 30 % II Parcial: 35 % Laboratorios: 25 % Tareas y Quices: 10 %
, Deitel, HM., Deitel, P. J.. Prentice Hall, 2000 , http://java.sun.com/
¿Qué ¿Quéseseimaginan imaginanque quevamos vamosaaaprender aprendereneneste estecurso? curso? ¿Será ¿Seráque quenos nosvavaaaser serútil útilpara paraalgo? algo? ¿Qué ¿Quéesesun unPrograma? Programa?--¿Qué ¿Quéesesun unAlgoritmo? Algoritmo?
Un Programa “es una lista de instrucciones escritas en algún lenguaje de programación que son ejecutadas por un computador para que la máquina actué de forma determinada”
[Diccionario para usuarios de computadoras]
.
Un Algoritmo “es un procedimiento matemático o lógico para resolver un problema”.
[Diccionario para usuarios de computadoras]
Dicho procedimiento es una secuencia de
pasos que tienen un orden definido para dar solución a un problema.
Idea
Algoritmo
Lenguaje
Programa
¿Qué ¿QuéesesununProblema? Problema? ¿Cómo ¿CómoSolucionamos SolucionamosununProblema? Problema?
Un Problema “es una cuestión que hay que aclarar”.
Para solucionar un problema este se debe identificar como tal, debemos realizar una serie de acciones para encontrarle una solución y describir dicha solución de la forma más clara posible para que otros la entiendan
Básicamente, el objetivo de esta asignatura es presentar al estudiante una serie de problemas que más adelante a prenderá a resolver (darles una solución) a través del lenguaje algorítmico para construir un programa.
¿Cuál ¿Cuáleseselelaporte aportede deeste estecurso cursoenenmimicarrera? carrera?
Cada uno de los problemas que el estudiante resuelva se utiliza para incrementar los conocimientos y las habilidades que le permitirán enfrentar y solucionar otros problemas tanto de su vida cotidiana como de su vida laboral.
Todos los días resolvemos problemas en nuestra vida cotidiana. Como por ejemplo cambiar un bombillo fundido, llegar temprano a una clase cuando estamos retrazados, … En
general,
cuando
resolvemos
este
tipo
de
problemas
nuestro
cerebro,
inconcientemente, realiza 3 actividades que nos permiten llegar a una solución al problema:
Definimos el Problema Establecemos una Estrategia de Solución. Probamos el Funcionamiento de la Estrategia Buscada.
Observemos el siguiente problema a resolver:
Vamos a visitar a una amiga que vive en un conjunto residencial. En este conjunto hay un sistema de citofonía que permite que la puerta principal de ingreso se abra desde los apartamentos, no hay portería y hemos olvidado en que edificio y en que piso vive. ¿Cómo encontramos el apartamento de nuestra amiga?
¿Qué solución plantean ustedes?
La búsqueda de Solución al Azar es la más sencilla y básicamente corresponde a ensayar una solución al azar y probar si esta es correcta. El proceso se realiza hasta que se encuentra una respuesta correcta. La búsqueda de Solución Algorítmica definen una serie de pasos ordenados que nos permitirán llegar a la solución. La búsqueda de Solución Heurística Consiste en aplicar experiencias y conocimientos previos sobre el problema, para encontrar una solución.
Dos profesores pasean charlando de sus respectivas familias. Por cierto – Pregunta uno A a B- “¿que edad tienen tus tres hijas? ”. El colega responde: “el producto de sus edades es 36 y su suma casualmente , es igual al número de tu casa ”. … Tras pensar un rato, A dice: “me falta un dato ”. Así que el colega responde “ …hummm es verdad, se me había olvidado aclararte que la mayor toca el piano ”.
Describa los pasos necesarios para reemplazar un bombillo fundido, que se encuentra en el centro del cielo raso de una habitación. Haga de cuenta que le va a explicar a un niño como hacerlo …
En un estante de una biblioteca se han colocado en forma ordenada los tres tomos de la Divina Comedia, cada uno de los cuales tiene 100 hojas. Una polilla empezó por taladrar la primera hoja del primer tomo y prosiguió horizontalmente en el mismo sentido, terminó su tarea con la última hoja del último tomo. ¿Cuántas hijas taladró la polilla?
I
II
III
No siempre la primera solución en la que se piensa en la correcta o la más acertada. Cuando se plantea un problema es posible que algunas consideraciones necesarias para platear la solución no estén suficientemente claras. Por de las tareas iniciales en la solución de un problema, es añadir delimiten y contextualicen claramente el problema a
ello una
supuestos
que
resolver.
Se debe tener muy claro el problema que se va a resolver y esto tal vez involucre hacer una pequeña investigación relacionada con el problema.
¿Recuerdan ¿Recuerdanque queesesununAlgoritmo? Algoritmo?
Un Algoritmo es una serie finita de instrucciones bien definidas (pasos) para realizar un cálculo o resolver un problema.
[Rosen K.]
Escriba un algoritmo que determine cual es el número más entre dos números enteros:
Paso 1: Tome dos números y llámelos A y B. Paso 2: Compare A y B en tamaño. Paso 3: Si A es mayor que B, devuelva A y pare. Paso 4: Sino Devuelva B y pare.
Cuando definimos un algoritmo en lenguaje natural (español, inglés, alemán, etc.), decimos que hemos definido el algoritmo en pseudocódigo . Así pues, el pseudocódigo es la descripción textual de un algoritmo Por otra parte, cuando se habla de implementación , se hace alusión al proceso de escribir un algoritmo en un lenguaje de computador particular (programa).
Observe la implementación del algoritmo numeroMayor que permite determinar el mayor de dos números:
int numeroMayor (int a, int b) { //si a>b retorna como numero mayor a, y para la ejecución del algoritmo if ( a > b)
return a; else
return b; }
Existen varias propiedades de nuestro interés que comparten los algoritmos: un algoritmo toma como punto de partida un conjunto de valores bien definido que son considerados las entradas del algoritmo.
el algoritmo arroja un valor bien definido, que tiene relación con la entrada, y que corresponde a la solución del problema .
cada paso del algoritmo debe estar definido claramente y sin ambigüedad . el algoritmo debe producir la salida correcta (veraz) para todas las posibles entradas
el algoritmo debe producir la salida esperada después de un número finito de pasos para cualquier conjunto de entrada. debe ser posible realizar cada paso del algoritmo de manera exacta y en un lapso finito (acotado) de tiempo. el algoritmo debe ser aplicable a todos los problemas que satisfagan las restricciones de su entrada y no a subconjuntos específicos de valores únicamente. Será mejor aún en cuanto menos se restrinja su entrada. Escriba los algoritmos para las operaciones de suma y división de dos número. Analice si los algoritmos cumplen las propiedades.
Paso 1: Tome dos números y llámelos A y B. Paso 2: Sume A y B, y al resultado llámelo C. Paso 3: Devuelva C y termine.
Paso 1: Tome dos números y llámelos A y B. Paso 2: Si B es igual a cero entonces escriba: “Error: División por Cero” Paso 3: Sino, A divídalo entre B, y al resultado llámelo C. Paso 4: Devuelva C y termine.
Captura de los datos de entrada.
realización de cálculos y control de errores o posibles situaciones anormales o inesperadas que generen conflicto
despliegue o devolución de resultados.
¿Qué ¿Quéserá seráeso esodel delEnfoque Enfoquede deObjetos? Objetos? ¿Qué ¿Quéesesun unObjeto? Objeto?
El enfoque de objetos es un paradigma para el desarrollo de programas y sistemas que se usa en la actualidad.
Este paradigma toma como base el hecho de que nuestro alrededor está formado por objetos de diversa índole, unos son animados, otros inanimados y también los artificiales.
De manera un poco formal el concepto de OBJETO se refiere a todo aquello que podemos observar y/o comprender de nuestro entorno.. Un Marcador, un Televisor, un Carro, un Perro, …
Además, todo objeto tiene un estado u atributos y un comportamiento . los atributos de un perro son su nombre, raza, edad, color, … y su comportamiento es comer, correr, saltar, ladrar, …
Son unas piezas que por un lado tienen partes circulares y del otro tienen orificios donde encajan perfectamente otras piezas.
Las piezas de los legos se pueden ir uniendo para formar objetos más grandes: casas, castillos, autos y hasta robots.
Entonces, de esa misma manera es como funciona la Programación Orientada a Objetos: unir elementos pequeños para construir otros más grandes.
¿Qué tiene que ver todo esto con la programación? TODO … los programas que vamos a construir estarán formados por muchos componentes (objetos) independientes y diferentes. Cada uno con una función específica en el programa y que puede comunicarse con todos los demás de manera predefinida.
¿Qué ¿Quéesesun unObjeto? Objeto?
la palabra objeto se refiere a todo aquello que podemos observar y/o comprender de nuestro entorno. una mesa, un radio, un televisor, una cuenta bancaria, …
Todo objeto tiene un conjunto de características y un comportamiento.
Atributos del Televisor: marca, color, Tamaño, No de Inventario, Comportamiento del Televisor: encender, apagar, proyectar, …
Determine Determinecuáles cuálesson sonlos losobjetos objetosque quehay hayen enelelsalón salónyyespecifique especifique cuáles cuálesestán estánrepetidos repetidos……
Ventilador Gris
Si, se puede agrupar en el conjunto Ventilador
Ventilador Blanco
Si, se puede agrupar en el conjunto Ventilador
Pupitre No 001235
Si, Se puede agrupar en el conjunto Pupitre
Pupitre No 001236
Si, Se puede agrupar en el conjunto Pupitre
Tablero
No
Mesa
No
Video Bean
No
CPU
No
Ratón
No
Pupitres
001234
001235
Mesas
Mesa No 1
Mesa No 2
En el cuadro anterior se identificaron y agruparon los objetos que presentan características similares en conjuntos que los representan. La figura anterior muestra tal agrupamiento.
En el enfoque de objetos la agrupación de aquellos objetos que tienen características similares se le denomina CLASE.
Así una CLASE puede ser vista como una plantilla genérica para un conjunto de objetos con características similares. A continuación se muestran las clases de objetos que hay en el salón: Pupitre, Video Bean, Tablero, Escritorio.
Pupitre, Video Bean, Tablero, Escritorio son clases
En los Ejemplos pasados he hablado de las características del objeto. Enumeremos las características de algunas de las clases de objetos del salón:
numeroDeSerie color material
numeroDeSerie alto ancho largo color material
numeroDeSerie color marca referencia
A cada característica que mencionamos de los objetos se les conoce en el enfoque de objetos como
Atributos
ya que son los sustantivos que
permiten diferenciar un objeto de otro. Cada objeto del mundo real tiene un valor para los atributos establecidos en la clase:
001234 gris plastico
Se conoce como Métodos de una clase a las funciones que determinan el comportamiento de un objeto o una clase. Será a través de los métodos que los objetos se podrán comunicar entre sí en un programa.
Pensemos en un auto. ¿Cuáles son los atributos de la clase Auto? ¿Cuál es el comportamiento de un auto? ó ¿Cuáles son las operaciones que puede realizar un auto?
Entonces de acuerdo a lo que ustedes establecieron como comportamiento de un auto tenemos: Nombre marca modelo color numeroDePuertas encender(); acelerar(); frenar(); girar();
Atributos
Métodos
Mediante la Abstracción la mente humana crea un modelo de la realidad en forma de objetos. Por ello debemos llegar a un acuerdo de cómo representarlos y como diferenciarlos de las clases de objetos. Así, de ahora en adelante usaremos la siguiente notación:
Nombre Atributos
Métodos