Estructuras de Datos y Algoritmos

Slides:



Advertisements
Presentaciones similares
Clasificación de los compiladores
Advertisements

Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta
¿Cómo hacer para que una máquina comprenda el LN?
MÉTODOS Y ELEMENTOS DE PROGRAMACIÓN
Lenguajes de programación
UNIDAD II: ALGORITMOS Y LENGUAJES
Lenguajes de programación
Computación PROGRAMACIÓN.
INSTITUTO TECNOLOGICO DE MINATITLAN
Introducción a la Programación
Técnico en programación de Software
Tipo de Dato Abstracto Tipos de datos:
GENERACIONES DE LENGUAJES DE PROGRAMACIÓN
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Programación 1 Introducción
Introducción a la programación
Pablo Cesar Tapia Catacora
METODOLOGIA DE LA PROGRAMACION
Conceptos Fundamentales
ALGORITMOS Y ESTRUCTURAS DE DATOS
ALGORITMOS, LENGUAJES Y TECNICAS DE PROGRAMACION
TRADUCTOR DE UN PROGRAMA
M.C. Meliza Contreras González
Computadoras analógicas Miden magnitudes físicas que se distribuyen en escala continua como pueden ser la temperatura y la presión. Este tipo de computadoras.
FUNDAMENTOS DE PROGRAMACION
LENGUAJES DE PROGRAMACIÓN
Estructura de Datos y Algoritmos
Inteligencia artificial

Tema 1 Entorno de la programación. Conceptos elementales Algoritmo  Secuencia ordenada de pasos exentos de ambigüedad que conduce a la resolución de.
Tecnólogo en Informática Estructura de Datos y Algoritmos.
Material de apoyo Unidad 4 Estructura de datos
LENGUAJES DE PROGRAMACIÓN
Lenguaje de Programación II
U1. Introducción a la programación
PROGRAMACIÓNPROGRAMACIÓN FCC-BUAP. 1. INTRODUCCIÓN A LA PROGRAMACIÓN.
Programación de Sistemas
Lenguajes de programación. Lenguaje máquina El ordenador sólo sabe hacer un número limitado de tareas (muy pocas) definidas electrónicamente en su procesador.
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
Prof. Gabriel Matonte Programación I Prof. Gabriel Matonte
Tecnólogo en Informática Estructura de Datos y Algoritmos.
INSTITUTO TECNOLOGICO DE MINATITLAN ASIGNATURA: FUNDAMENTOS DE PROGRAMACION DOCENTE: JOSE ANGEL TOLEDO ALVAREZ ALUMNA: ALEJANDRA OSORIO ARVISU SEMESTRE:
¿Qué son Los Lenguajes de Programación?
Lenguajes de Programación
PROGRAMAS INFORMATICOS
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
Términos algoritmo diseñar algoritmo implementar algoritmo
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
Metodología de la programación
“PARADIGMAS Y LENGUAJES DE PROGRAMACION”
TEMA1:Introducción 1 1. Programación 2. Lenguajes de Programación 3. Ordenador.
ESCUELA NORMAL “PROF. DARÍO RODRÍGUEZ CRUZ” Licenciatura en educación preescolar Alumnas: *Mayra * Monserrat * Idalia *Cinthia Curso: las TIC en la educación.
Prof. Flor Narciso Departamento de Computación
Lenguajes de Programación
Lenguaje programación
III. DESARROLLO DE SISTEMAS.. Podemos definir el desarrollo de sistemas informáticos como el proceso mediante el cual el conocimiento humano y el uso.
Tipos de Lenguajes Ensamblador.
Unidad TemáticaI. Conceptos Básicos Horas Prácticas10 Horas Teóricas8 Horas Totales18 Objetivo El alumno determinará las entradas, procesos y salidas.
Es un tipo especial de software que nos permite *Crear *Desarrollar *Programar otras aplicaciones. Haciendo uso de sus conocimientos lógicos y lenguajes.
Compilador Es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa.
Curso: Programación I Grado: 4to. Bachillerato Prof. Gerardo Barrientos.
Programación Java y Desarrollo de Aplicaciones Modulo 1 Arquitectura de ordenadores Tema 3 Programas.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Programación de Sistemas
 Panorama General Fundamentos de Programación M.I. Jaime Alfonso Reyes Cortés.
PARADIGMA Es un marco de referencia que impone reglas sobre cómo se deben hacer las cosas. CONCEPTO DE PARADIGMA DE PROGRAMACION colección de modelos conceptuales.
Fundamentos de Programación Unidad I Conceptos Básicos.
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 3 – Diseño de Programas.
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

Estructuras de Datos y Algoritmos Curso 2009 Tecnólogo Informático

Presentación Docentes: Teórico: Andrés Pastorini Práctico y Laboratorio: Marcelo Torterolo

Presentación Segundo curso de Programación de Computadoras Métodos y lenguajes de programación Orientado a aplicaciones de tamaño medio

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

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

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).

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).

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.

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

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

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

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 ...

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

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)  

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

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 ?

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

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)

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  

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

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

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.

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

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.

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.

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...

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.

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.

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

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

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,….

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.

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.

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

Compilación

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.

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.

FIN ¿Preguntas?