practico estructura de datos i

17
TEMAS A DESARROLLAR: Algoritmos: implementación y clases. Elementos básicos de Programación Orientada a Eventos. Compilar. Programa. Proyecto. Estructuras de datos. Parametrización. Tipos Abstractos de Datos (TAD). Definición de Variables. Tipos: entera, carácter, string, boolean. Variables locales – Variables Globales.

Upload: nachetopeo

Post on 13-Apr-2016

225 views

Category:

Documents


0 download

DESCRIPTION

Practico estr de datos

TRANSCRIPT

Page 1: Practico Estructura de Datos I

 TEMAS A DESARROLLAR:Algoritmos: implementación y  clases. Elementos básicos de Programación Orientada a Eventos. Compilar. Programa. Proyecto. Estructuras de datos.Parametrización.Tipos Abstractos de Datos (TAD). Definición de Variables. Tipos: entera, carácter, string, boolean. Variables locales – Variables Globales.

Page 2: Practico Estructura de Datos I

ALGORITMOSIMPLEMENTACION Y CLASES:

CLASES:*Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. Son todos aquellos pasos o instrucciones descritos por medio de palabras que sirven para llegar a la obtención de una respuesta o solución de un problema cualquier *Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso. Son aquellos pasos o instrucciones que involucran cálculos numéricos para llegar a un resultado satisfactorio *Algoritmos de razonamiento: -Algoritmos Estáticos: son los que funcionan siempre igual, independientemente del tipo de problema tratado. -Algoritmos Adaptativos: algoritmos con cierta capacidad de aprendizaje. 

Page 3: Practico Estructura de Datos I

*Algoritmos Probabilísticos: son algoritmos que no utilizan valores de verdad booleanos sino continuos. Existen varios tipos de algoritmos probabilísticos dependiendo de su funcionamiento, pudiéndose distinguir: -Algoritmos numéricos: que proporcionan una solución aproximada del problema. -Algoritmos de Montecarlo: que pueden dar la respuesta correcta o respuesta erróneas (con probabilidad baja). -Algoritmos de Las Vegas: que nunca dan una respuesta incorrecta: o bien dan la respuesta correcta o informan del fallo. Algoritmo Cotidiano: es la serie de pasos que realizamos en nuestra vida diaria para realizar las diferentes tareas y actividades comunes, desde los pasos al levantarnos, así como ir de compras, etc. *Algoritmo Voraz: un algoritmo voraz es aquel que, para resolver un determinado problema, sigue una heurística consistente en elegir la opción óptima en cada paso local con la esperanza de llegar a una solución general óptima. *Algoritmo Determinista: es un algoritmo que, en términos informales, es completamente predictivo si se conocen sus entradas. *Algoritmo Heurístico: es un algoritmo que abandona uno o ambos objetivos; por ejemplo, normalmente encuentran buenas soluciones, aunque no hay pruebas de que la solución no pueda ser arbitrariamente errónea en algunos casos; o se ejecuta razonablemente rápido, aunque no existe tampoco prueba de que siempre será así. Las heurísticas generalmente son usadas cuando no existe una solución óptima bajo las restricciones dadas (tiempo, espacio, etc.), o cuando no existe del todo. *Algoritmo de escalada: la idea básica consiste en comenzar con una mala solución a un determinado problema y, repetidamente, aplicar optimizaciones a la misma hasta que esta sea óptima o satisfaga algún otro requisito.

Page 4: Practico Estructura de Datos I

IMPLEMENTACION DE LOS ALGORITMOS:

Los algoritmos no se implementan sólo como programas, algunas veces en una red neuronal biológica (por ejemplo, el cerebro humano implementa la aritmética básica o, incluso, una rata sigue un algoritmo para conseguir comida), también en circuitos eléctricos, en instalaciones industriales o maquinaria pesada. Se puede decir en pocas palabras que nuestra vida es un ejemplo de algoritmo, pues al desarrollar nuestros quehacer diarios desarrollamos una serie de pasos ordenados, así podremos quedar satisfechos con los resultados.

El ingreso de la notación algebraica en el desarrollo de algoritmos logró un gran avance para los programadores ya que fue una forma mas tangible de desarrollar sus programas, por medio de la lógica.

Un algoritmo puede adoptar una de las estructuras siguientes o combinaciones de ellas: lineal o secuencial, alternativa o selectiva y repetitiva o cíclica.

*Un algoritmo secuencial es aquel en el que se necesita que un paso anterior haya concluido para continuar con otro. De esta forma, en este tipo de algoritmos se requiere de datos de la etapa anterior, como una cadena o secuencia de información.

*Un algoritmo selectivo es aquel en el que se establecen condiciones para poder realizar una acción específica, en los lenguajes de programación se implementan las sentencias if o select case para llevar a cabo este tipo de algoritmos.

*Un algoritmo repetitivo o cíclico es aquel en el que el programador establece un rango de repetición para una acción dada, o en el que se determina que una acción se repita de forma cíclica mientras se cumpla alguna condición. En los lenguajes de programación se usan las sentencias while y for  para llevar a cabo este tipo de algoritmos.

El algoritmo más sencillo de todos es el lineal pues es solo la que realiza un determinado proceso y no tiene variaciones ni complicaciones. pues solo realiza una acción y sus pasos son seguidos o secuenciales.

Page 5: Practico Estructura de Datos I

ELEMENTOS BÁSICOS DE PROGRAMACIÓN ORIENTADA A EVENTOS• Clase: Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La

instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ella.• Herencia: Por ejemplo, herencia de la clase C a la clase D, es la facilidad mediante la cual la

clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables públicas declaradas en C. Los componentes registrados como "privados" (private) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. Esto es así para mantener hegemónico el ideal de POO.

• Objeto: Instancia de una clase. Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos), los mismos que consecuentemente reaccionan a eventos. Se corresponden con los objetos reales del mundo que nos rodea, o con objetos internos del sistema (del programa). Es una instancia a una clase.

• Método: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.

• Evento: Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento la reacción que puede desencadenar un objeto; es decir, la acción que genera.

• Atributos: Características que tiene la clase.

Page 6: Practico Estructura de Datos I

• Mensaje: Una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.Propiedad o atributoContenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.Estado internoEs una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.

• Componentes de un objeto: Atributos, identidad, relaciones y métodos.• Identificación de un objeto: Un objeto se representa por medio de una tabla o entidad

que esté compuesta por sus atributos y funciones correspondientes.En comparación con un lenguaje imperativo, una "variable" no es más que un contenedor interno del atributo del objeto o de un estado interno, así como la "función" es un procedimiento interno del método del objeto.

• Identificación de un objeto: Un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes.En comparación con un lenguaje imperativo, una "variable" no es más que un contenedor interno del atributo del objeto o de un estado interno, así como la "función" es un procedimiento interno del método del objeto.

• Estado interno: Es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.

• Componentes de un objeto: Atributos, identidad, relaciones y métodos.• Identificación de un objeto: Un objeto se representa por medio de una tabla o entidad

que esté compuesta por sus atributos y funciones correspondientes.En comparación con un lenguaje imperativo, una "variable" no es más que un contenedor interno del atributo del objeto o de un estado interno, así como la "función" es un procedimiento interno del método del objeto.

Page 7: Practico Estructura de Datos I

COMPILARSe conocer como “compilar” al proceso de

traducción de un código fuente (escrito en un lenguaje de programación de alto nivel) a lenguaje máquina (código objeto) para que pueda ser ejecutado por la computadora. Las computadoras sólo entienden el lenguaje máquina. La aplicación o la herramienta encargada de la traducción se llama compilador.

Page 8: Practico Estructura de Datos I

PROGRAMA Cuando hablamos específicamente de programa en informática,

estamos haciendo referencia a un software. Se trata de aplicaciones y recursos que permiten desarrollar diferentes tareas en una computadora (ordenador), un teléfono u otros equipos tecnológicos.

Para desarrollar un programa informático, se necesita apelar a los lenguajes de programación que posibilitan el control de las máquinas. A través de diversas reglas semánticas y sintácticas, estos lenguajes especifican los datos que transmite el software y que tendrá que operar la computadora.

Además del citado lenguaje, también es fundamental dentro de cualquier programa en informática o programa informático tanto el archivo fuente como el editor de vínculos, el archivo ejecutable, el compilador o el archivo objeto.

Existen diferentes tipos de programas en informática. El software de base, por ejemplo, es aquel que le brinda a la persona el control sobre los elementos físicos de la computadora, que se conocen como hardware. Dentro del software de base puede nombrarse a lossistemas operativos, como Windows o Linux.

Page 9: Practico Estructura de Datos I

PROYECTO El proyecto representa el enunciado de una intervención concreta de la que se espera

tener resultados que contribuyan al logro de los efectos específicos que un programa define. Como tal, expresa el nivel operativo del proceso de planificación, por lo que sus metodologías y técnicas serán de uso habitual para los profesionales de la Intervención social. La definición de proyecto informática no varia de la definición de proyecto dada anteriormente, tan solo varia el campo de aplicación de las técnicas asociadas al proyecto.

Una de las fases más complejas del proyecto es la de definir los objetivos. La persona que encarga el proyecto rara vez conoce claramente los objetivos, tan solo tiene una idea general, quiere informatizar algo o gestionar algo. Este es uno de los problemas con que se encuentra el informática en las primeras fases del proyecto. El no definir los objetivos correctamente es la causa de muchos de los problemas que se presentan durante el cielo de desarrollo del proyecto: 

El cliente puede no quedar satisfecho con el producto final, ya que es posible que no haya definido correctamente lo que quiere.

El cliente puede introducir objetivos o restricciones durante la ejecución del proyecto que afecten de manera sustancial al mismo.

La no concreción o ambigüedad de los objetivos puede provocar que nadie se responsabilice de los fallos, ya que gran parte del proyecto habrá sido dejado al criterio del programador, en vez de ser este únicamente el técnico que permita obtener los objetivos impuestos por el cliente.

 

Page 10: Practico Estructura de Datos I

OBJETIVOS EN LOS PROYECTOS Los objetivos debe fijarlos pues quien encarga el proyecto, y se ha de conseguir que estos

sean claros, definidos, concretos y no ambiguos. Es el conjunto de operaciones limitadas en el tiempo, de las cuales resulta un producto final

(Metas Presupuestarias), que concurre a la expansión de la acción de Gobierno. Representa la creación, ampliación y/o modernización de la producción de los bienes y servicios, implicando la variación sustancial o el cambio de procesos y/o tecnología utilizada por la Entidad. Luego de su culminación, generalmente se integra o da origen a una Actividad.

Aunque los aspectos puramente materiales y técnicos de diseñar son esenciales, es necesario considerar el componente no-técnico que igualmente influye en la viabilidad del proyecto. En realidad, cuando un problema no presenta aspectos como la legalidad, belleza, economía, etc., o bien factores de carácter político, social, ético, el problema no es de ingeniería sino que más bien se está ante un problema de tipo exclusivamente técnico.

OBJETIVOS DEL PROYECTO Existen tres tipos de familias de objetivos informáticos:  1.-De servicio: Este tipo de objetivos son definidos por el cliente, normalmente para

alcanzar a largo plazo (3 meses a dos años) y afectan a la organización operativa y gestión del área usuaria. Pueden ser cualitativos (fiabilidad, calidad, etc.) y cuantitativos (beneficios de gestión, beneficios de funcionamiento, etc.)

2.-De producción: Son definidos por la informática, se han de cumplir a corto plazo y afectan al desarrollo y explotación del proyecto. Normalmente son cuantitativos (coste, plazo, calidad, rendimiento, etc.). En cuanto a los objetivos coste, plazo y calidad, lo más importante es señalar que no se pueden alanzar los tres simultáneamente. Si dos están especificados, es necesario que el tercero pueda variar.

3.-Estratégicos: Son definidos por el DG, su alcance es a largo plazo (de 3 a 5 años) y afectan a todas las áreas de la empresa. Normalmente son cualitativos (cobertura, integración, imagen, migración, etc.).

Page 11: Practico Estructura de Datos I

ESTRUCTURAS DE DATOSEn programación, una estructura de datos es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulación. Un dato elemental es la mínima información que se tiene en un sistema.Una estructura de datos define la organización e interrelación de éstos y un conjunto de operaciones que se pueden realizar sobre ellos. Las operaciones básicas son:-Alta, adicionar un nuevo valor a la estructura.-Baja, borrar un valor de la estructura.-Búsqueda, encontrar un determinado valor en la estructura para realizar una operación con este valor, en forma SECUENCIAL o BINARIO (siempre y cuando los datos estén ordenados)...Otras operaciones que se pueden realizar son:-Ordenamiento, de los elementos pertenecientes a la estructura.-Apareo, dadas dos estructuras originar una nueva ordenada y que contenga a las apareadas.Cada estructura ofrece ventajas y desventajas en relación a la simplicidad y eficiencia para la realización de cada operación. De esta forma, la elección de la estructura de datos apropiada para cada problema depende de factores como la frecuencia y el orden en que se realiza cada operación sobre los datos.

TIPOS DE DATOS ELEMENTALESBinarios-Bit-Byte-Numéricos-Entero-Real-Coma fija-Coma flotante-Alfanuméricos-Carácter-Cadena-Booleanos

CONJUNTOSLos conjuntos son una de las estructuras básicas de las matemáticas, y por tanto de la informática. No se va a entrar en la definición de conjuntos ni en sus propiedades. Se supondrá que el lector conoce algo de teoría de conjuntos. Con lo más básico es suficiente.En realidad las estructuras de datos que se han implementado hasta ahora no son más que elementos diferentes entre sí (en general) en los que se ha definido una relación. Que pueden estar ordenados entre sí. Obviando las propiedades de las estructuras, se ve que forman un conjunto, y su cardinal es el número de elementos que contenga la estructura. En los conjuntos no existen elementos repetidos, y esto se respeta en las implementaciones que se ofrecen a continuación.En este tema  definiremos unas implementaciones que permitan aplicar el álgebra de conjuntos, ya sea unión, intersección, pertenencia entre otras.

Page 12: Practico Estructura de Datos I

PILASUna pila (stack en inglés) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Se aplica en multitud de ocasiones en informática debido a su simplicidad y ordenación implícita en la propia estructura.

COLADefinición:Son aquellas que solo tiene 2 operaciones, Push (Inserción) y Pop (Eliminación). Push solo se puede efectuar por un extremo llamado Frente y Pop por el extremo Llamado Final. Sin Embargo se le pueden aplicar todas las operación al igual que a las listas.

LISTASTipos de Listas EnlazadasListas enlazadas lineales

Page 13: Practico Estructura de Datos I

PARAMETRIZACIONLa Parametrización es la propiedad de un

módulo, o de una construcción sintáctica del lenguaje, para utilizar datos de varios tipos. Es un mecanismo muy útil porque permite aplicar el mismo algoritmo a tipos de datos diferentes; es una facilidad que permite separar los algoritmos de los tipos de datos, aumentando de esta manera la modularidad de los programas y minimizando la duplicación de código.

Page 14: Practico Estructura de Datos I

TIPOS ABSTRACTOS DE DATOS (TAD)*Abstracción de datos:Descripción abstracta o lógica de: • los datos (cómo se organizan)• las operaciones sobre los datos (cómo se modifican o se accede a ellos)TAD =Modelo matemático + OperacionesTipo de datos =Implementación de un TADEjemplo: TAD conjunto: • Colección de objetos de tipo indeterminado sin relación de orden • Operaciones UNIÓN, INTERSECCIÓN y DIFERENCIA *Operaciones:• Internas o externas • Operandos y resultado pueden pertenecer o no al TAD • Al menos un operando o el resultado pertenecen al TAD • Se puede definir número de operaciones que queramos • Cada conjunto de operaciones define un TAD distinto*Implementación de un TAD: • Implica dos cuestiones − representar los datos en memoria de una manera concreta, es decir, definir los tipos de datos necesarios − especificar en lenguaje algorítmico las operaciones sobre los datos (rutinas de acceso y modificación) • No es única: hay muchas posibilidades • Ha de elegirse la implementación que más convenga, teniendo en cuenta qué operaciones son las más frecuentes

Page 15: Practico Estructura de Datos I

DEFINICION DE VARIABLESEn programación, una variable está formada por un espacio en

el sistema de almacenaje (memoria principal de un ordenador) y un nombre simbólico (un identificador) que está asociado a dicho espacio. Ese espacio contiene una cantidad o información conocida o desconocida, es decir un valor. El nombre de la variable es la forma usual de referirse al valor almacenado: esta separación entre nombre y contenido permite que el nombre sea usado independientemente de la información exacta que representa. El concepto de variables en computación puede no corresponder directamente al concepto de variables en matemática. El valor de una variable en computación no es necesariamente parte de una ecuación o fórmula como en matemáticas. En computación una variable puede ser utilizada en un proceso repetitivo: puede asignársele un valor en un sitio, ser luego utilizada en otro, más adelante reasignársele un nuevo valor para más tarde utilizarla de la misma manera. Procedimientos de este tipo son conocidos con el nombre de iteración.

Page 16: Practico Estructura de Datos I

TIPOS DE VARIABLES ENTERA: Una variable entera binaria es aquella que solamente

puede adoptar los valores 0 ó 1. Este tipo de variable se emplea para resolver situaciones del tipo “inclusión” o “exclusión”.

CARÁCTER: Son variables que almacenan caracteres individuales (letra, numero, signo ?, etc...). El carácter que se inicializa debe ir entre apóstrofes o comillas simples 'a'.

STRING: En programación, una cadena de caracteres, palabras, ristra de caracteres o frase (string, en inglés) es una secuencia ordenada (de longitud arbitraria, aunque finita) de elementos que pertenecen a un cierto lenguaje formal o alfabeto análogas a una fórmula o a una oración. En general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos). Si no se ponen restricciones al alfabeto, una cadena podrá estar formada por cualquier combinación finita de los caracteres disponibles (las letras de la 'a' a la 'z' y de la 'A' a la 'Z', los números del '0' al '9', el espacio en blanco ' ', símbolos diversos '!', '@', '%', etcétera).

BOOLEAN: Son variables que tienen solo dos valores posibles , verdadera o falsa ( True or false)

Page 17: Practico Estructura de Datos I

Variables locales – Variables Globales Una variable global es, en informática, una variable accesible en todos

los ámbitos de un programa informático. Los mecanismos de interacción con variables globales se denominan mecanismos de entorno global. El concepto de entorno global contrasta con el de entorno local donde todas las variables son locales sin memoria compartida (y por ello todas las iteraciones pueden restringirse al intercambio de mensajes).El uso de este tipo de variables suele considerarse como una mala práctica, por el riesgo que conlleva esa deslocalización: una variable global puede ser modificada en cualquier parte del programa (a menos que resida en una sección de memoria protegida) y cualquier parte del programa depende de ella. Es por ello que una variable global tiene un potencial ilimitado para crear dependencias, factor éste que aumenta la complejidad. Sin embargo, en algunas ocasiones, las variables globales resultan muy útiles. Por ejemplo, se pueden usar para evitar tener que pasar variables usadas muy frecuentemente de forma continua entre diferentes subrutinas.

Una variable local es, en informática, la variable a la que se le otorga un ámbito local. Tales variables sólo pueden accederse desde la función o bloque de instrucciones en donde se declaran. Las variables locales se contraponen a las variables globales.En la mayoría de lenguajes de programación las variables locales son variables automáticas almacenadas directamente en la pila de llamadas. Esto significa que cuando una función recursiva se llama a sí misma, las variables locales reciben, en cada instancia de la función, espacio para el direccionamiento de memoria separados. De esta forma las variables con este ámbito se pueden declarar, reescribir y leer sin riesgo de efectos secundarios para los procesos fuera del bloque en el que son declarados.