Programación estructurada (Lenguajes de programación)

Documentos relacionados
INSTITUTO TECNOLÓGICO DE TIJUANA

INTRODUCCION A LA PROGRAMACIÓN ORIENTADA A OBJETOS

Concepto de compilador Intérprete Fases de un Compilador Herramientas de construcción de Compiladores

Lenguajes y paradigmas de programación

COLEGIO DE ESTUDIOS DE POSGRADO DE LA CIUDAD DE MÉXICO

Lenguajes de programación

Introducción a los compiladores

Lenguajes de programación Última modificación 2008/10

Introducción a la Programación en C

Introducción a la programación

Lenguaje de programación. COMPILADORES Unidad I: Introducción al proceso de compilación

Lenguajes de Programación

Unidad 2. Introducción Lenguajes y Compiladores

Prof. María Alejandra Quintero. Informática Año

2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje.

Un. I. Introducción a la programación de sistemas

Lenguajes de Cuarta Generación

Lenguajes de programación

APLICACIONES MOVILES NATIVAS. Sesión 3: Introducción al paradigma de programación orientada a objetos

Tema 04: Lenguajes de programación y el lenguaje C

Compiladores e intérpretes Introducción

Tema 2 Introducción a la Programación en C.

Unidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas

Diseño de Compiladores I. Estructura General de un Compilador

INICIACIÓN A LA PROGRAMACIÓN 1ª parte

Módulo 1. Introducción a los lenguajes de programación

1. Computadores y programación

Introducción a la programación: Contenido. Introducción

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Introducción al Diseño de Compiladores. Año

Principios de diseño de lenguajes

Lenguajes y Compiladores Introducción. Compiladores 1

CÓMO DESARROLLAR Y PROBAR PROGRAMAS?, COMPRUÉBALO!

Elementos para el estudio de los compiladores

AMBIENTES DE COMPILACION

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

Tema 1. Problemas, algoritmos y programas

Procesadores de lenguaje Tema 1 Introducción a los compiladores

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

INTRODUCCIÓN A COMPILADORES Y LENGUAJES FORMALES FUNDAMENTOS DE COMPILADORES

Tema: Análisis Léxico

Fundamentos de programación

Programación orientada a objetos

Misión Sucre P.N.F. de Informática U.C.: Algoritmia y Programación. Elaborado por: Ing. Víctor Valencia

Algoritmos y Lenguajes de Programación

Capítulo 3 CICLO DE VIDA DE UN PROGRAMA. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Unidad III: Introducción a la Programación

Tema 03: Programación estructurada

16 Análisis sintáctico I

Metodología de Desarrollo de Programas

Cada enfoque tiene sus ventajas y desventajas Cada uno es más apropiado para ciertas cosas

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Programación de Ordenadores

INTRODUCCION A LA PROGRAMACION (C.U.) PROGRAMACION (T.I.G.)

INSTITUCIÓN EDUCATIVA SAN CRISTÓBAL

Introducción a la programación. Cecilia Manzino

Contenidos: Definiciones:

Lenguajes de Programacion

Unidad VIII Generación de código intermedio. M.C. Juan Carlos Olivares Rojas

Evolución del software y su situación actual

Programación orientada a objetos

Generación de Código Intermedio

Planificaciones Algoritmos y Programación I. Docente responsable: CARDOZO MARTIN MIGUEL. 1 de 7

Planificaciones Algoritmos y Programación I. Docente responsable: CARDOZO MARTIN MIGUEL. 1 de 8

Introducción al Lenguaje "C++"

Leer el pedido. Examinar ficha del cliente. Si el cliente es solvente aceptar pedido, en caso contrario rechazar pedido.

Introducción a la programación

Programación para Ingeniería Eléctrica

Nombre de la asignatura: Lenguajes y Autómatas I. Créditos: Aportación al perfil

Informática, computadora, y programación. Fundamentos de programación. El hombre y sus primeros intentos de procesar la información

COMPILADORES E INTERPRETES

Los registros son la memoria principal de la computadora. Existen diversos registros de propósito general y otros de uso exclusivo.

Transcripción:

Programación estructurada (Lenguajes de programación) M. en C. Sergio Luis Pérez Pérez UAM CUAJIMALPA, MÉXICO, D. F. Trimestre 15-I. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 1 / 37

Lenguajes de programación Lenguajes de programación 1 Lenguajes de programación 2 Compilación de programas Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 2 / 37

Breve historia Lenguajes de programación Breve historia 1 Lenguajes de programación Breve historia Niveles de los lenguajes Paradigmas de programación 2 Compilación de programas Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 3 / 37

Breve historia I Lenguajes de programación Breve historia Para que la computadora entienda nuestras instrucciones debe usarse un lenguaje específico conocido como código máquina o lenguaje máquina y sólo consiste en cadenas binarias. Un lenguaje de programación es un lenguaje formal diseñado para poder expresar procesos que pueden ser llevados a cabo por máquinas como las computadoras. Los primeros operadores de computadoras decidieron hacer traductores para reemplazar los 0 y 1 por palabras o abstracción de palabras y letras provenientes del inglés, lo que dio pie a los lenguajes ensambladores. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 4 / 37

Breve historia II Lenguajes de programación Breve historia El lenguaje ensamblador sigue la misma estructura del lenguaje máquina, pero las letras y palabras son más fáciles de recordar y entender que los números. Posteriormente aparecieron diferentes lenguajes de programación, en particular los lenguajes de alto nivel. En 1949, fue propuesto Short Code por John Mauchly, el cual es uno de los primeros lenguajes de programación desarrollados. John Mauchly fue un físico americano que junto con John Eckert diseñaron la ENIAC, la primer computadora de propósito general. También diseñaron la EDVAC, la BINAC y la UNIVAC I, que fue la primer computadora comercializada en USA. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 5 / 37

Breve historia III Lenguajes de programación Breve historia La primera programadora de computadora conocida fue Ada Lovelace, hija de Anabella Milbanke Byron y Lord Byron. Anabella introdujo en las matemáticas a Ada quien, después de conocer a Charles Babbage, tradujo y amplió una descripción de su máquina analítica. El nombre del lenguaje de programación Ada fue escogido como homenaje a esta programadora. En 1953, John Backus sometió una propuesta a sus superiores en IBM para desarrollar Fortran junto con un equipo de varios programadores. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 6 / 37

Breve historia IV Lenguajes de programación Breve historia El primer manual para Fortran apareció en 1956 y el primer compilador fue entregado hasta 1957. En 1960, se creó COBOL, otro de los primeros lenguajes de programación. En 1960, fue desarrollado APL (A Programming Language) por Kenneth E. Iverson cuya novedad fue el uso de arreglos multidimensionales. Entre 1958 y 1973, fueron desarrolladas diferentes versiones del lenguaje ALGOL (ALGOrithmic Language) por un grupo de científicos norteamericanos y europeos. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 7 / 37

Breve historia V Lenguajes de programación Breve historia ALGOL es de los primeros lenguajes en manejar la programación estructurada. En los 60s, fue desarrollado Simula por los noruegos Ole-Johan Dahl y Kristen Nygaard el cual es el primer lenguaje de programación desarrollado para soportar la programación orientada a objetos. En los 70s, fue desarrollado Smalltalk por Alan Key de Xerox, el cual es conocido como el primer lenguaje puro para programación orientada a objetos. De 1969 a 1973, fue desarrollado C por Dennis Ritchie de los AT&T labs, el cual era un lenguaje orientado principalmente a la programación de sistemas. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 8 / 37

Breve historia VI Lenguajes de programación Breve historia En 1972, fue desarrollado Prolog por Alain Colmerauer, el cual fue el primer lenguaje de programación lógica. En 1979, fue desarrollado C++ por Bjarne Stroustrup que es un lenguaje orientado a objetos y a la programación de sistemas. C++ ha pasado por diferentes revisiones y estándares introduciendo nuevas funcionalidades: C++98, C++03, C++07, C++11, C++14 y próximamente C++17. De 1991 a 1995, fue desarrollado Java por James Gosling, Mike Sheridan y Patrick Naughton de Sun Microsystems, el cual es un lenguaje orientado a objetos diseñado con un estilo similar a C++. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 9 / 37

Breve historia VII Lenguajes de programación Breve historia Las principales versiones de Java son: JDK 1.0 (1996), JDK 1.1 (1997), J2SE 1.2 (1998), J2SE 1.3 (2000), J2SE 1.4 (2002), J2SE 5.0 (2004), Java SE 6 (2006), Java SE 7 (2011), Java SE 8 (2014). JDK significa Java Development Kit y es una implementación de alguna plataforma como Java SE, Java EE or Java ME. J2SE significa J2SE Java 2 Platform, Standard Edition que es una plataforma para desarrollo rápido y seguro de aplicaciones, así cómo de aplicaciones portables. Java SE significa Java Platform, Standard Edition es una colección de plataformas de desarrollo para Java. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 10 / 37

Breve historia VIII Lenguajes de programación Breve historia En 1999, Anders Hejlsberg y su equipo comenzaron el desarrollo de C#. Las diferentes versiones de C# van de la 1.0 de 2002 a la 5.0 de 2013. Existen decenas de lenguajes de programación y una lista bastante amplia la puede encontrar en: http://en.wikipedia.org/wiki/list of programming languages. Todo lenguaje de programación se compone de un conjunto de símbolos (palabras reservadas, operadores, constantes), reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 11 / 37

Lenguajes de programación Niveles de los lenguajes Niveles de los lenguajes 1 Lenguajes de programación Breve historia Niveles de los lenguajes Paradigmas de programación 2 Compilación de programas Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 12 / 37

Lenguajes de programación Niveles de los lenguajes Niveles de los lenguajes I Por su forma de abstracción existen cuatro niveles de programación: 1 Lenguajes de máquina. 2 Lenguajes ensambladores. 3 Lenguajes de alto nivel. 4 Lenguajes declarativos. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 13 / 37

Lenguajes de programación Niveles de los lenguajes Niveles de los lenguajes II Lenguaje máquina Fue el primer lenguaje utilizado en la programación de computadoras. Es la capa más interna en los niveles de lenguaje en la computación. El lenguaje de máquina es el único que entiende la computadora. Este lenguaje se expresa a través del alfabeto binario. El lenguaje de máquina es dependiente de la arquitectura de la computadora. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 14 / 37

Lenguajes de programación Niveles de los lenguajes Niveles de los lenguajes III Lenguaje ensamblador El lenguaje ensamblador es una representación simbólica del lenguaje de máquina asociado. Cada computadora tiene un lenguaje ensamblador propio. El lenguaje ensamblador mnemónicos para representar cada instrucción del lenguaje de máquina asociado. Un programa ensamblador crea código objeto traduciendo instrucciones mnemónicas de lenguaje ensamblador en códigos de operación, y resolviendo los nombres simbólicos para las localizaciones de memoria y otras entidades. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 15 / 37

Lenguajes de programación Niveles de los lenguajes Niveles de los lenguajes IV Lenguaje de alto nivel Son lenguajes independientes de la computadora. Un programa escrito en lenguaje de alto nivel puede ser ejecutado en cualquier computadora, siempre que ésta disponga del traductor o compilador del lenguaje en cuestión. Los programas pueden ser escritos y comprendidos de una forma más sencilla. Se caracterizan por proporcionar librerías de uso frecuente (entrada/salida, funciones matemáticas, manejo de cadenas, etc.). Ejemplos son: Ada, Fortran, C, C++, C# y Java. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 16 / 37

Lenguajes de programación Niveles de los lenguajes Niveles de los lenguajes V Lenguaje declarativo Son aquellos lenguajes en los que se indica a la computadora qué es lo que se desea obtener o qué es lo que se está buscando. Son lenguajes de órdenes, donde se expresa lo que hay que hacer en lugar de cómo hacerlo. En la programación declarativa las sentencias que se utilizan lo que hacen es describir el problema. Existen diversos tipos de lenguajes declarativos: Los lenguajes lógicos, como Prolog. Los lenguajes algebraicos, como SQL. Los lenguajes funcionales, como Haskell. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 17 / 37

Lenguajes de programación Paradigmas de programación Paradigmas de programación 1 Lenguajes de programación Breve historia Niveles de los lenguajes Paradigmas de programación 2 Compilación de programas Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 18 / 37

Lenguajes de programación Paradigmas de programación I Paradigmas de programación Un paradigma de programación es una propuesta tecnológica adoptada por una comunidad de programadores cuyo núcleo central es incuestionable en cuanto a que únicamente trata de resolver uno o varios problemas claramente delimitados. La resolución de estos problemas debe suponer un avance significativo en al menos un parámetro que afecte a la ingeniería de software. El paradigma de programación más utilizado es el orientado a objetos. Un paradigma de programación representa un enfoque particular o filosofía para diseñar soluciones. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 19 / 37

Lenguajes de programación Paradigmas de programación II Paradigmas de programación Los paradigmas más comunes son: Imperativo. Funcional. Lógico. Declarativo. Orientado a objetos. Programación multiparadigma. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 20 / 37

Lenguajes de programación Paradigmas de programación Paradigmas de programación III Imperativo Es un paradigma que describe la programación en términos del estado del programa y sentencias que cambian dicho estado. Los programas imperativos se componen de un conjunto de instrucciones que le indican a la máquina cómo realizar una tarea. La implementación de hardware suele ser imperativa. Esto se debe a que el hardware de las computadoras implementa el paradigma de las Máquinas de Turing. Fortran fue el primer gran lenguaje de programación imperativo. Ejemplos: BASIC, C/C++, C#, Java, Pascal, Perl, PHP, Python. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 21 / 37

Lenguajes de programación Paradigmas de programación Paradigmas de programación IV Funcional Es un paradigma de programación declarativa basado en la utilización de funciones aritméticas que no maneja datos mutables o de estado. Enfatiza la aplicación de funciones, en contraste con el estilo de programación imperativa, que enfatiza los cambios de estado. La programación funcional tiene sus raíces en el cálculo lambda, el cual es un sistema formal desarrollado en los años 1930 para investigar la definición de función y la recursión. Los lenguajes puramente funcionales han sido enfatizados en el ambiente académico más que en el desarrollo de software. Ejemplos: Scheme, Objective Caml, Haskell, Mathematica y SQL. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 22 / 37

Lenguajes de programación Paradigmas de programación Paradigmas de programación V Lógico Es un tipo de programación declarativa. La programación lógica gira en torno al concepto de predicado, o relación entre elementos. Se basa en la teoría lógica de primer orden e incorpora algunos comportamientos de orden superior como la lógica difusa. La lógica de primer orden es un sistema formal diseñado para estudiar la inferencia en los lenguajes de primer orden. Son lenguajes formales con cuantificadores, predicados y funciones cuyos argumentos son ctes. o variables de individuo. Ejemplos: Prolog. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 23 / 37

Lenguajes de programación Paradigmas de programación Paradigmas de programación VI Declarativo Es un paradigma de programación basado en el desarrollo de programas especificando un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y detallan su sol. La solución es obtenida mediante mecanismos internos de control, sin especificar exactamente cómo encontrarla. No existen asignaciones destructivas. Existen varios tipos de lenguajes declarativos: Los lenguajes lógicos. Los lenguajes algebraicos. Los lenguajes funcionales. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 24 / 37

Lenguajes de programación Paradigmas de programación Paradigmas de programación VII Orientado a objetos Es un paradigma que usa objetos en sus interacciones para diseñar aplicaciones y programas informáticos. Se basa en técnicas como herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. Los objetos son entidades que tienen un determinado estado, comportamiento (método) e identidad. El estado se compone de datos o atributos que lo definen. El comportamiento está definido por los métodos o mensajes a los que sabe responder dicho objeto, es decir, las operaciones que se pueden realizar con él. La identidad es una propiedad de un objeto que lo diferencia. Ejemplos: Ada, C++, C#, Java, PHP, Python, Ruby, Smalltalk. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 25 / 37

Lenguajes de programación Paradigmas de programación Paradigmas de programación VIII Multiparadigma Un lenguaje de programación multiparadigma es el que soporta más de un paradigma de programación. Según Bjarne Stroustrup, un lenguaje multiparadigma permite crear programas usando más de un estilo de programación. El objetivo es permitir a los programadores utilizar el mejor paradigma para cada trabajo. Un ejemplo es es Oz, desarrollado en el laboratorio de programación de sistemas en la Universidad de Saarland en Alemania por Gert Smolka y sus estudiantes en 1990. Oz contiene una forma simple y bien hecha de la mayoría de los conceptos de los principales paradigmas de programación. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 26 / 37

Compilación de programas Compilación de programas 1 Lenguajes de programación 2 Compilación de programas Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 27 / 37

Compilación de programas Compilación de programas I Antes de poder ejecutar un programa escrito en algún lenguaje de programación, primero debe traducirse a un formato en el que la computadora pueda ejecutarlo. Los sistemas de software que se encargan de dicha traducción son los compiladores. Un compilador es un programa procesador de lenguaje que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación. El compilador genera un programa equivalente que la máquina será capaz de interpretar. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 28 / 37

Compilación de programas Compilación de programas II Un compilador generalmente traduce el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior. Un intérprete es otro tipo de procesador de lenguaje que en vez de producir un nuevo programa lo ejecuta aparentemente al instante. Generalmente el programa producido por el compilador es mucho más rápido que el ejecutado por un intérprete. Sin embargo, el intérprete puede ofrecer mejores diagnósticos de error pues ejecuta instrucción por instrucción. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 29 / 37

Compilación de programas Compilación de programas III La estructura de un compilador se divide en dos grandes etapas, una de análisis y una de síntesis. El análisis divide el programa fuente en componentes y define una estructura gramatical sobre ellas. La síntesis construye el programa destino a partir de la representación intermedia y de una tabla de símbolos. El proceso de compilación opera a través de una secuencia de fases. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 30 / 37

Compilación de programas Compilación de programas IV Proceso de compilación 1 Analizador léxico. 2 Analizador sintáctico. 3 Analizador semántico. 4 Generador de código intermedio. 5 Optimizador de código independiente de la máquina. 6 Generador de código. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 31 / 37

Compilación de programas Compilación de programas V Analizador léxico Se lee el flujo de caracteres del programa y se agrupan en secuencias significativas conocidas como lexemas. El lexema es una parte de una palabra que constituye la unidad mínima y que es la raíz de esta misma con un significado léxico. Para cada lexema el analizador produce como salida un token de la forma: Por ejemplo la instrucción: <nombre-token, valor-atributo> a = b + c 10 genera tres identificadores de variable, tres de operadores y uno de constante. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 32 / 37

Compilación de programas Compilación de programas VI Analizador sintáctico Utiliza los tokens generados por el analizador léxico para crear una representación intermedia en forma de árbol que describa la estructura gramatical del flujo de los tokens. A esto se le conoce como árbol sintáctico. En este árbol cada nodo intermedio suele ser una operación y los hijos de los nodos son los argumentos de la operación. En dicho árbol la altura de cada nodo representa la precedencia de dicha operación dentro de una instrucción. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 33 / 37

Compilación de programas Compilación de programas VII Analizador semántico En esta fase se utiliza el árbol sintáctico y la información en la tabla de símbolos para comprobar la consistencia semántica del programa con la definición del lenguaje. También se lleva a cabo la comprobación de tipos de las variables. La especificación del lenguaje puede permitir ciertas conversiones de tipo conocidas como coerciones. Por ejemplo, una suma entre un entero y un flotante. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 34 / 37

Compilación de programas Compilación de programas VIII Generador de código intermedio El compilador puede convertir el programa fuente a código destino a través de una o varias representaciones intermedias. La representación intermedia suele ser similar al código máquina con la salvedad de que: debe ser fácil de producir y fácil de traducir a la máquina destino. Existe una forma intermedia llamada código de tres direcciones que genera instrucciones similares a lenguaje ensamblador es decir con tres operandos por dirección. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 35 / 37

Compilación de programas Compilación de programas IX Optimizador de código independiente de la máquina En esta fase se trata de mejorar el código intermedio. Mejor puede significar más rápido aunque igual pueden lograrse otros objetivos como un código más corto. Muchos compiladores invierten gran cantidad de tiempo en esta fase. Aquellos compiladores que gastan gran parte del tiempo en esta labor se conocen como compiladores optimizadores. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 36 / 37

Compilación de programas Compilación de programas X Generador de código Este se encarga de recibir el código intermedio y traducirlo al lenguaje destino. Si el lenguaje destino es el máquina entonces se seleccionan registros o localidades de memoria para cada variable que utiliza el programa. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada 37 / 37