SlideShare una empresa de Scribd logo
1 de 38
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_orie
ntada_a_objetos
 http://es.wikipedia.org/wiki/Compilador
 www.cimat.mx/~jbhayet
 Wirth, N. Algoritmos y Estructuras de Datos. Prentice-
Hall. 1987.
FIN
¿Preguntas?

Más contenido relacionado

La actualidad más candente

Representación del conocimiento
Representación del conocimiento Representación del conocimiento
Representación del conocimiento marianasanchezp
 
Representación del Conocimiento
Representación del ConocimientoRepresentación del Conocimiento
Representación del Conocimientodansua07
 
Representacion del Conocimiento Inteligencia Artificial
Representacion del Conocimiento Inteligencia ArtificialRepresentacion del Conocimiento Inteligencia Artificial
Representacion del Conocimiento Inteligencia Artificialjorgeescalona2387
 
Formas de representacion del conocimiento
Formas de representacion del conocimientoFormas de representacion del conocimiento
Formas de representacion del conocimientoequipoUFTsis2
 
Representacion del conocimiento
Representacion del conocimientoRepresentacion del conocimiento
Representacion del conocimientoAngel Duque
 
Ingenieria del conocimiento y sus aplicaciones
Ingenieria del conocimiento y sus aplicacionesIngenieria del conocimiento y sus aplicaciones
Ingenieria del conocimiento y sus aplicacionesPilar Rmz
 
Conocimiento en Inteligencia Artificial
Conocimiento en Inteligencia ArtificialConocimiento en Inteligencia Artificial
Conocimiento en Inteligencia ArtificialIsaac Rodríguez
 
Inteligencia artificial
Inteligencia artificialInteligencia artificial
Inteligencia artificialAlejita Linda
 
Conocimiento en la Inteligencia Artificial
Conocimiento en la Inteligencia ArtificialConocimiento en la Inteligencia Artificial
Conocimiento en la Inteligencia ArtificialIsaac Rodríguez
 
Representacion del conocimiento inteligencia artificial
Representacion del conocimiento inteligencia artificialRepresentacion del conocimiento inteligencia artificial
Representacion del conocimiento inteligencia artificialwillyparedes4
 
Representación del Conocimiento
Representación del ConocimientoRepresentación del Conocimiento
Representación del ConocimientoAlva_Ruiz
 
Representación del conocimiento.pptx2
Representación del conocimiento.pptx2Representación del conocimiento.pptx2
Representación del conocimiento.pptx2Gina Herrera
 
Repaso inteligencia artificial para primer parcial
Repaso inteligencia artificial para primer parcialRepaso inteligencia artificial para primer parcial
Repaso inteligencia artificial para primer parcialSama Medina Roses
 
El conocimiento en inteligencia artificial
El conocimiento en inteligencia artificialEl conocimiento en inteligencia artificial
El conocimiento en inteligencia artificialEmilio Ardila
 

La actualidad más candente (20)

Representación del conocimiento
Representación del conocimiento Representación del conocimiento
Representación del conocimiento
 
Razonamiento con incertidumbre
Razonamiento con incertidumbreRazonamiento con incertidumbre
Razonamiento con incertidumbre
 
Representación del Conocimiento
Representación del ConocimientoRepresentación del Conocimiento
Representación del Conocimiento
 
Representacion de Conocimiento en I.A
Representacion de Conocimiento en I.ARepresentacion de Conocimiento en I.A
Representacion de Conocimiento en I.A
 
Representacion del Conocimiento Inteligencia Artificial
Representacion del Conocimiento Inteligencia ArtificialRepresentacion del Conocimiento Inteligencia Artificial
Representacion del Conocimiento Inteligencia Artificial
 
Formas de representacion del conocimiento
Formas de representacion del conocimientoFormas de representacion del conocimiento
Formas de representacion del conocimiento
 
Representacion del conocimiento
Representacion del conocimientoRepresentacion del conocimiento
Representacion del conocimiento
 
Ingenieria del conocimiento y sus aplicaciones
Ingenieria del conocimiento y sus aplicacionesIngenieria del conocimiento y sus aplicaciones
Ingenieria del conocimiento y sus aplicaciones
 
Representación de Conocimiento
Representación de ConocimientoRepresentación de Conocimiento
Representación de Conocimiento
 
Conocimiento en Inteligencia Artificial
Conocimiento en Inteligencia ArtificialConocimiento en Inteligencia Artificial
Conocimiento en Inteligencia Artificial
 
Inteligencia artificial
Inteligencia artificialInteligencia artificial
Inteligencia artificial
 
Representación del Conocimiento
Representación del ConocimientoRepresentación del Conocimiento
Representación del Conocimiento
 
Conocimiento en la Inteligencia Artificial
Conocimiento en la Inteligencia ArtificialConocimiento en la Inteligencia Artificial
Conocimiento en la Inteligencia Artificial
 
TRABAJO FINAL
TRABAJO FINALTRABAJO FINAL
TRABAJO FINAL
 
Representacion del conocimiento inteligencia artificial
Representacion del conocimiento inteligencia artificialRepresentacion del conocimiento inteligencia artificial
Representacion del conocimiento inteligencia artificial
 
Representación del Conocimiento
Representación del ConocimientoRepresentación del Conocimiento
Representación del Conocimiento
 
Representación del conocimiento.pptx2
Representación del conocimiento.pptx2Representación del conocimiento.pptx2
Representación del conocimiento.pptx2
 
Repaso inteligencia artificial para primer parcial
Repaso inteligencia artificial para primer parcialRepaso inteligencia artificial para primer parcial
Repaso inteligencia artificial para primer parcial
 
ingenieria del conocimiento
ingenieria del conocimientoingenieria del conocimiento
ingenieria del conocimiento
 
El conocimiento en inteligencia artificial
El conocimiento en inteligencia artificialEl conocimiento en inteligencia artificial
El conocimiento en inteligencia artificial
 

Similar a 1 eda teo

Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionAlgoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionBoris Salleg
 
Programacion
ProgramacionProgramacion
Programacionedison
 
Programacion Orientada Objetos
Programacion Orientada ObjetosProgramacion Orientada Objetos
Programacion Orientada Objetosliliandrade
 
diana estefania huertas villota
diana estefania huertas villotadiana estefania huertas villota
diana estefania huertas villotadiana
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programaciónjograci
 
Principios básicos de la informatica
Principios básicos de la informaticaPrincipios básicos de la informatica
Principios básicos de la informaticaJorge Alberto
 
Lenguajes de programación parte i.4
Lenguajes de programación parte i.4Lenguajes de programación parte i.4
Lenguajes de programación parte i.4Marquina, Santiago
 
Unidad 3
Unidad 3Unidad 3
Unidad 3tf94
 
Leng progr 01
Leng progr 01Leng progr 01
Leng progr 01Luis Paez
 
La programación informática o programación algorítmica, acortada
La programación informática o programación algorítmica, acortadaLa programación informática o programación algorítmica, acortada
La programación informática o programación algorítmica, acortadaAeChm-MgMs-NnNm-OpSe
 
Clase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacionClase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacionjoel210696
 
C:\Documents And Settings\Alumnos\Escritorio\Programaion1
C:\Documents And Settings\Alumnos\Escritorio\Programaion1C:\Documents And Settings\Alumnos\Escritorio\Programaion1
C:\Documents And Settings\Alumnos\Escritorio\Programaion1kfacu
 
FUNDAMENTOS DE PROGRAMACIÓN EN DISEÑO WEB
 FUNDAMENTOS DE PROGRAMACIÓN EN DISEÑO WEB FUNDAMENTOS DE PROGRAMACIÓN EN DISEÑO WEB
FUNDAMENTOS DE PROGRAMACIÓN EN DISEÑO WEBMaria_carvajal
 
LENGUAJE DE PROGRAMACION C++ INTRODUCCION
LENGUAJE DE PROGRAMACION C++ INTRODUCCIONLENGUAJE DE PROGRAMACION C++ INTRODUCCION
LENGUAJE DE PROGRAMACION C++ INTRODUCCIONSol López
 
Clase 1_Unidad II (2).pdf
Clase 1_Unidad II  (2).pdfClase 1_Unidad II  (2).pdf
Clase 1_Unidad II (2).pdfamacias7983
 

Similar a 1 eda teo (20)

Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionAlgoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacion
 
Programacion
ProgramacionProgramacion
Programacion
 
Introduccion a los algoritmos
Introduccion a los algoritmosIntroduccion a los algoritmos
Introduccion a los algoritmos
 
sistema operativo
sistema operativosistema operativo
sistema operativo
 
Programacion Orientada Objetos
Programacion Orientada ObjetosProgramacion Orientada Objetos
Programacion Orientada Objetos
 
diana estefania huertas villota
diana estefania huertas villotadiana estefania huertas villota
diana estefania huertas villota
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 
Principios básicos de la informatica
Principios básicos de la informaticaPrincipios básicos de la informatica
Principios básicos de la informatica
 
Lenguajes de programación parte i.4
Lenguajes de programación parte i.4Lenguajes de programación parte i.4
Lenguajes de programación parte i.4
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Leng progr 01
Leng progr 01Leng progr 01
Leng progr 01
 
La programación informática o programación algorítmica, acortada
La programación informática o programación algorítmica, acortadaLa programación informática o programación algorítmica, acortada
La programación informática o programación algorítmica, acortada
 
Clase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacionClase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacion
 
Apartes De Algoritmos
Apartes De AlgoritmosApartes De Algoritmos
Apartes De Algoritmos
 
C:\Documents And Settings\Alumnos\Escritorio\Programaion1
C:\Documents And Settings\Alumnos\Escritorio\Programaion1C:\Documents And Settings\Alumnos\Escritorio\Programaion1
C:\Documents And Settings\Alumnos\Escritorio\Programaion1
 
Generacionlenguajes
GeneracionlenguajesGeneracionlenguajes
Generacionlenguajes
 
FUNDAMENTOS DE PROGRAMACIÓN EN DISEÑO WEB
 FUNDAMENTOS DE PROGRAMACIÓN EN DISEÑO WEB FUNDAMENTOS DE PROGRAMACIÓN EN DISEÑO WEB
FUNDAMENTOS DE PROGRAMACIÓN EN DISEÑO WEB
 
Correa correa juan_felipe
Correa correa juan_felipeCorrea correa juan_felipe
Correa correa juan_felipe
 
LENGUAJE DE PROGRAMACION C++ INTRODUCCION
LENGUAJE DE PROGRAMACION C++ INTRODUCCIONLENGUAJE DE PROGRAMACION C++ INTRODUCCION
LENGUAJE DE PROGRAMACION C++ INTRODUCCION
 
Clase 1_Unidad II (2).pdf
Clase 1_Unidad II  (2).pdfClase 1_Unidad II  (2).pdf
Clase 1_Unidad II (2).pdf
 

Último

¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...
¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...
¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...CENECOnline
 
Emprende en SPA Segundo día CENEC Mexico
Emprende en SPA Segundo día CENEC MexicoEmprende en SPA Segundo día CENEC Mexico
Emprende en SPA Segundo día CENEC MexicoCENECOnline
 
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjjPPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjjNachisRamos
 
Las redes sociales en el mercado digital
Las redes sociales en el mercado digitalLas redes sociales en el mercado digital
Las redes sociales en el mercado digitalNayaniJulietaRamosRa
 
Unidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucionesUnidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucioneschorantina325
 
Corte de luz 2024 Guayaquil Guayas ecuad
Corte de luz 2024 Guayaquil Guayas ecuadCorte de luz 2024 Guayaquil Guayas ecuad
Corte de luz 2024 Guayaquil Guayas ecuadJonathanHctorSilvaRo
 

Último (6)

¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...
¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...
¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...
 
Emprende en SPA Segundo día CENEC Mexico
Emprende en SPA Segundo día CENEC MexicoEmprende en SPA Segundo día CENEC Mexico
Emprende en SPA Segundo día CENEC Mexico
 
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjjPPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
 
Las redes sociales en el mercado digital
Las redes sociales en el mercado digitalLas redes sociales en el mercado digital
Las redes sociales en el mercado digital
 
Unidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucionesUnidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disoluciones
 
Corte de luz 2024 Guayaquil Guayas ecuad
Corte de luz 2024 Guayaquil Guayas ecuadCorte de luz 2024 Guayaquil Guayas ecuad
Corte de luz 2024 Guayaquil Guayas ecuad
 

1 eda teo

  • 1. Estructuras de Datos y Algoritmos Curso 2009 Tecnólogo Informático
  • 2. Presentación  Docentes:  Teórico: Andrés Pastorini  Práctico y Laboratorio: Marcelo Torterolo
  • 3. Presentación  Segundo curso de Programación de Computadoras  Métodos y lenguajes de programación  Orientado a aplicaciones de tamaño medio
  • 4. Presentación  Previas  Curso de Principios de Programación  Curso de Matemática Discreta y Lógica 1.
  • 5. 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
  • 6. 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).
  • 7. 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).
  • 8. 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.
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. 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  ...
  • 13. 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
  • 14. 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)
  • 15. 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
  • 16. 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 ?
  • 17. 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
  • 18. 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)
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. 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.
  • 23. 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
  • 24. 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.
  • 25. 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.
  • 26. 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...
  • 27. 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.
  • 28. 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.
  • 29. 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
  • 30. 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
  • 31. 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,….
  • 32. 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.
  • 33. 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.
  • 34. 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
  • 36. 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.
  • 37. Referencias  http://www.fing.edu.uy/inco/cursos/prog2  http://es.wikipedia.org/wiki/Programaci%C3%B3n_orie ntada_a_objetos  http://es.wikipedia.org/wiki/Compilador  www.cimat.mx/~jbhayet  Wirth, N. Algoritmos y Estructuras de Datos. Prentice- Hall. 1987.