Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Estructuras de datos y algoritmos




Enviado por Pablo Turmero



    Monografias.com

    Presentación
    Previas

    Curso de Principios de Programación
    Curso de Matemática Discreta y Lógica 1.

    Monografias.com

    Objetivo

    Avanzar en el aprendizaje de la programación :

    Recursión
    Estructuras Dinámicas (punteros)
    Tipos Abstractos de Datos
    Módulos
    Técnicas de ensayo de programas

    Monografias.com

    Temario
    Tipos abstractos de datos.
    Diseño de programas, módulos de programa.
    Implementación de módulos en lenguaje C/C++.
    Algoritmos de búsqueda y ordenación.
    Introducción al análisis de algoritmos:
    eficiencia en tiempo de ejecución y espacio de almacenamiento.
    Concepto de recurrencia.
    Implementación de tipos de datos recurrentes: concepto y manipulación de punteros. (ej: Implementación de listas).

    Monografias.com

    Temario
    Implementación de funciones recurrentes.

    Diseño de programas mediante abstracción de datos. Refinamiento de funciones y datos.

    Abstracciones de datos básicas:
    Estructuras lineales (listas, pilas, colas, dobles-colas).
    Árboles (árboles binarios de búsqueda, árboles generales, estructuras arborescentes).

    Monografias.com

    Bibliografía
    Estructuras de datos y algoritmos
    Wirth, N. Algoritmos y Estructuras de Datos. Prentice-Hall. 1987.
    Weiss, M. A. Estructuras de Datos y Algoritmos. Addison-Wesley Iberoamericana. 1995.
    Aho, A. V., J. E. Hopcroft y J. D. Ullman. Estructuras de Datos y Algoritmos. Addison-Wesley Iberoamericana. 1988.
    Lenguaje de programación C/C++
    Kernighan, B. W. y D. M. Ritchie. El lenguaje de programación C. Prentice-Hall. 1991.
    Deitel, H. M. y P. J. Deitel. Cómo programar en C/C++. Prentice-Hall. 1998.

    Monografias.com

    Metodología
    16 Créditos
    4 hs. Clase Teórica
    5 hs. Clase Práctica
    7 hs. Dedicación domiciliaria
    Prácticos
    Laboratorio
    Pruebas
    Parciales
    Trabajo de Laboratorio

    Monografias.com

    Estrategia

    Clarificar el concepto "programa de computadora"
    Lenguaje de programación (C/C++)
    Tipos de Datos (int,float,char)
    Registros
    Uniones
    Estructuras Dinámicas(Punteros)
    Módulos
    Compilación separada

    Monografias.com

    Estrategia

    Estudiar cómo construir programas que resuelvan problemas dados.

    Metodología de Programación
    Recurrencia
    Listas y Árboles
    Tipos Abstractos de Datos
    Ensayo de Programas

    Monografias.com

    Autómatas Maquinas de estado

    Los lógicos (matemáticos) en la década del '30 buscaron "modelos universales" de programas.

    En cada momento, la máquina está en un cierto estado El conjunto de estados se especifica precisamente

    Hay un conjunto de acciones (transiciones) que son las formas de operar la máquina. Las transiciones cambian el estado de la máquina Ejemplos:
    Cisterna Componentes:
    tanque (conteniendo cierta cantidad de agua)
    llave de paso (abierta/cerrada) (ver analogía con variables Pascal)
    Estados:
    combinaciones de los estados del par de componentes (tanque, llave de paso)
    Acciones:
    tirar la cisterna

    Monografias.com

    Autómatas Maquinas de estado
    Otro ejemplo:
    Calcular el máximo de dos números Componentes: int x, y, max;

    Transición: if (x >= y) max = x; else max = y ;
    Efecto
    dado un estado inicial, la transición cambia ese estado de tal modo que en el estado final la variable max contiene el máximo de x e y
    Efecto del programa
    consiste en el cambio de estado

    Monografias.com

    Maquinas de estado programables
    Los ejemplos vistos son programas individuales ¿ Cómo sería una máquina programable capaz de ejecutar CUALQUIER PROGRAMA ?  
    Noción universal de Programa (Programa para la máquina universal)  
    Idea:
    Programa + indicador de hasta dónde se ha ejecutado
    Esto forma parte del estado (están almacenados en la máquina)  

    Monografias.com

    Maquinas de estado programables
    Esquema:
    Componentes:
    Memoria
    Lista de casillas identificadas
    Cada casilla puede contener un símbolo, de una lista dada.
    Las casillas se usan para almacenar:
    instrucciones
    datos
    Punto de control – “program counter" Señala al lugar de memoria donde se encuentra la siguiente instrucción a ejecutar

    Monografias.com

    Maquinas de estado programables
    Instrucciones:
    hay un conjunto de instrucciones precisamente especificado
    En general, cada instrucción modifica el estado de la máquina

    Máquina de Turing
    1936 – Modelo de "procedimiento computable" ¿ Es decidible mecánicamente si un enunciado matemático es verdadero o
    falso ?

    Monografias.com

    Maquinas de estado programables
    Computadora Electrónica
    Realización del modelo de Turing (~1945)
    Las celdas pueden contener sólo 0 ó 1 (Bits)
    Instrucciones y datos codificados en secuencias de bits (código binario)
    ¡ La noción abstracta de PROGRAMA antecedió a las computadoras electrónicas! (Más aún: constituyó la base de su diseño)
    Resultados inesperados de investigaciones altamente teóricas

    Monografias.com

    Maquinas de estado programables
    Lenguajes de Programación de Computadoras
    Lenguaje de Máquina
    Las instrucciones son secuencias de bits:
    1100111011…1 que se interpretan.

    El conjunto de instrucciones y el formato esta dado por la arquitectura de la maquina (add, mov,…).
    Ejemplo:
    -1100 (significa sumar)
    -111011…1 (operandos)

    Monografias.com

    Programa de Computadora

    Programas
    Difícil de definir, podríamos decir que:
    instrucciones que la CPU de una computadora puede entender y ejecutar.
    Conjunto de pasos para resolver un problema dado.
    Buscamos
    acordar una noción (más) objetiva de programa
    Acordar reglas para escribir programas
    notación, sintaxis
    significado, semántica
     

    Monografias.com

    Abstracción

    Metodologías de Programación
    Partición
    Refinamiento

    Sinónimo de problema: ESPECIFICACION. El problema especifica qué debe satisfacer el programa buscado, el conjunto de programas aceptables
    Partición Descomponer la especificación inicial en subproblemas Verificar que la estructura obtenida resuelve el problema, asumiendo que los componentes están resueltos correctamente.
    Refinamiento Proceder de la misma forma con los componentes Aún no implementados

    Monografias.com

    Abstracción
    Queremos los programas de computadora para resolver problemas
    En el enunciado de los problemas se manejan conceptos "abstractos" Ej: número entero, matriz de reales, cliente
    Construir programas para resolver problemas dados involucra representar conceptos abstractos en términos del lenguaje de programación
    Complejidad de la Programación
    inherente a los problemas
    proceso de construcción de los programas

    Monografias.com

    Abstracción
    El proceso sigue refinando conceptos "abstractos" hasta alcanzar el nivel del lenguaje de máquina. Ciertas clases de estos refinamientos pueden realizarse Automáticamente. Entonces es posible definir lenguajes de programación más abstractos Lenguajes de alto nivel (de abstracción) donde son primitivos ciertos conceptos abstractos. Hay un programa (compilador) que produce representaciones de esos conceptos.

    Monografias.com

    Paradigmas de Programación
    Lenguajes de Programación
    Existen docenas de lenguajes de programación, y se sigue creando nuevos.
    Cada uno tiene sus propias preferencias en cuanto al estilo de programación

    Monografias.com

    Paradigmas de Programación
    Cualidades de un Lenguaje
    Expresividad (que el numero máximo de problemas se puedan expresar con este lenguaje)
    Facilidad del aprendizaje
    Portabilidad (que pueda compilar en maquinas de bajo costo, en diferentes SO)
    Cualidad de la implementación
    Factores económicos
    Tipo y cantidad de paradigmas que soporta.

    Monografias.com

    Paradigmas de Programación
    Programación Imperativa
    Es el paradigma que surgió mas naturalmente al desarrollo de las computadoras : las maquinas están físicamente construidas para ejecutar series de instrucciones maquinas Se concibieron abstracciones de esas instrucciones o combinaciones de ellas para dar lugar a lenguajes de mas alto nivel. La idea central es el estado del programa que va cambiando por las operaciones que se ejecutan.

    Monografias.com

    Paradigmas de Programación
    Programación Procedural
    Para cumplir una tarea dada, descomponemos todo en sub-tareas de calculo que se cumplen sucesivamente para alcanzar la meta (procedimientos, funciones).

    Mas modularidad, permite mejor re-utilización del código.

    Ejemplo: C, Basic…

    Monografias.com

    Paradigmas de Programación
    Programación Funcional

    En la programación funcional, como lo indica su nombre, la entidad básica es la función. Se intenta evitar referencias a variables.

    Ejemplos de Lenguajes : Lisp, Haskell, …

    Utilizado en IA.

    Monografias.com

    Paradigmas de Programación
    Programación Lógica
    En este paradigma, se consideran principalmente predicados y reglas lógicas que alimentan una base de conocimientos. Ejecutar un programa, en este caso, es evaluar o un predicado o dar valores para que un predicado es verdadero.

    Monografias.com

    Paradigmas de Programación
    Programación Orientada a Objetos
    La Programación Orientada a Objetos (POO , OOP) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento

    Monografias.com

    Lenguajes de Programación
    En lenguaje de programación se puede clasificar también según la forma de ejecución de los programas escritos en el.

    Interpretado

    Compilado

    Monografias.com

    Lenguajes de Programación
    En un lenguaje interpretado, el código es convertido en instrucciones ejecutables por el microprocesador al momento mismo de la ejecución. Necesita un programa interprete. La CPU ejecuta las instrucciones del interprete.
    Ejemplos : Python, JavaScript, prolog, Java,…

    En un lenguaje compilado, el código es traducido en
    instrucciones ejecutables una vez por todas.
    Ejemplos : C( pero existen también versiones interpretadas),Pascal, Modula-2,….

    Monografias.com

    Compilación
    Compilador
    Programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es código máquina, pero también puede ser simplemente texto. Este proceso de traducción se conoce como compilación.

    Monografias.com

    Compilación

    Permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje máquina).

    El programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.

    Monografias.com

    Compilación
    Principio de compilación separada:
    A menudo, los programas usan componentes que son construidos en forma totalmente independiente Ej: funciones de biblioteca
    Si cambiamos la implementación de una función de biblioteca, no queremos tener que recompilar todos los programas que usan esa función
    El programa y (ciertos) componentes auxiliares son compilables separadamente

    Monografias.com

    Compilación

    Monografias.com

    Compilación en C/C++
    -El preprocesador, trabaja con el código fuente y lo preprocesa.(Está fase esta presente en el lenguaje C/C++ y no en todos los lenguajes)
    -El compilador transforma el código fuente y genera código ensamblador (Assembly).
    -El ensamblador convierte el código assembler en lenguaje de maquina obteniendo un archivo objeto (.o)
    -El linker combina varios archivos objeto para generar el ejecutable.

    Monografias.com

    Referencias
    http://www.fing.edu.uy/inco/cursos/prog2

    http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos

    http://es.wikipedia.org/wiki/Compilador

    www.cimat.mx/~jbhayet

    Wirth, N. Algoritmos y Estructuras de Datos. Prentice-Hall. 1987.

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter