sistemas de computacion clase 4 sintaxis y semantica

6
LENGUAJES DE PROGRAMACIÓN INTRODUCCION A LOS LENGUAJES DE PROGRAMACION ¿Qué es un lenguaje? Conjunto de símbolos y palabras (vocabulario o léxico) y conjunto de reglas (sintaxis y permiten agrupar los símbolos para formar las frases del lenguaje. ¿De p!ga"a#$%n? Que sirve para especicar algoritmos sobre un ordenador. !n programa se escribe como una secuencia de frases del lenguaje. !n lenguaje de programaci"n viene denido por un léxico# una sintaxis y una semántica L&'ICO Conjunto de símbolos que se pueden usar en un lenguaje. $stos símbolos o elementos básicos del lenguaje# podrán ser de los siguientes% I(en)$*#a(!es+ nombres simb"licos que se darán a ciertos elementos de programaci"n (p nombres de variables# tipos# m"dulos# etc.). C!ns)an)es+ datos que no cambiarán su valor a lo largo del programa. Opea(!es+símbolos que representarán operaciones entre variables y constantes. Ins)u##$!nes+ símbolos especiales que representarán estructuras de procesamiento# y d denici"n de elementos de programaci"n. C!"en)a$!s+ texto que se usará para documentar los programas SINTA'IS $specican la secuencia de símbolos que forman una frase del lenguaje. $stas reglas dic está bien escrita o no. &as reglas sintácticas pueden contener dos tipos de elementos% $lementos 'erminales ( ocabulario) $lementos no 'erminales# que son construcciones intermedias de la gramática. $xisten diversas formas de especicar las reglas# pero *nicamente vamos a ver dos de el N!)a#$%n ,N- .,a#/us0Nau -!"1+ $s de las primeras notaciones que se empe+" a utili+ar especicar lenguajes de programaci"n. ,otaci"n -, % /elemento no terminal0%%1 2enici"n3 4 2enici"n5 4 ... &os elementos terminales# o sea# que pertenecen al vocabulario# se escriben tal cual. & terminales se escriben entre los símbolos /0. D$aga"as s$n)2#)$#!s3 $s una representaci"n gráca de la sintaxis. 'iene la ventaja de s intuitivo. &os elementos terminales se inscriben en una elipse. &os elementos no terminales se ins rectángulo.

Upload: josue-janco

Post on 03-Nov-2015

14 views

Category:

Documents


0 download

DESCRIPTION

Sistemas de ComputacionSintaxis y Semantica

TRANSCRIPT

Microsoft Word - AED.Tema.02.doc

LENGUAJES DE PROGRAMACININTRODUCCION A LOS LENGUAJES DE PROGRAMACIONQu es un lenguaje?Conjunto de smbolos y palabras (vocabulario o lxico) y conjunto de reglas (sintaxis y semntica) que permiten agrupar los smbolos para formar las frases del lenguaje.De programacin?Que sirve para especificar algoritmos sobre un ordenador.Un programa se escribe como una secuencia de frases del lenguaje.Un lenguaje de programacin viene definido por un lxico, una sintaxis y una semnticaLXICOConjunto de smbolos que se pueden usar en un lenguaje.Estos smbolos o elementos bsicos del lenguaje, podrn ser de los siguientes: Identificadores: nombres simblicos que se darn a ciertos elementos de programacin (p.e. nombres de variables, tipos, mdulos, etc.). Constantes: datos que no cambiarn su valor a lo largo del programa. Operadores: smbolos que representarn operaciones entre variables y constantes. Instrucciones: smbolos especiales que representarn estructuras de procesamiento, y de definicin de elementos de programacin. Comentarios: texto que se usar para documentar los programasSINTAXISEspecifican la secuencia de smbolos que forman una frase del lenguaje. Estas reglas dicen si una frase est bien escrita o no.Las reglas sintcticas pueden contener dos tipos de elementos: Elementos Terminales ( Vocabulario) Elementos no Terminales, que son construcciones intermedias de la gramtica.Existen diversas formas de especificar las reglas, pero nicamente vamos a ver dos de ellas:Notacin BNF (Backus-Naur Form): Es de las primeras notaciones que se empez a utilizar para especificar lenguajes de programacin.Notacin BNF:::= Definicin1 | Definicin2 | ...Los elementos terminales, o sea, que pertenecen al vocabulario, se escriben tal cual. Los elementos no terminales se escriben entre los smbolos .

Diagramas sintcticos. Es una representacin grfica de la sintaxis. Tiene la ventaja de ser ms intuitivo.Los elementos terminales se inscriben en una elipse. Los elementos no terminales se inscriben en un rectngulo.

SEMNTICADefine el significado de las construcciones sintcticas del lenguaje y de las expresiones y tipos de datos utilizadas

LENGUAJES DE BAJO NIVEL Y LENGUAJES DE ALTO NIVELLos lenguajes de programacin se pueden clasificar en lenguajes de bajo y alto nivel dependiendo de lo cercanos o lejanos que estn de la arquitectura de la mquina en la que van a funcionar.LENGUAJES DE BAJO NIVEL: Estn basados directamente en la mquina de Von Neumann, por lo que estn a un nivel muy cercano a la mquina. Las instrucciones del lenguaje son las instrucciones del microprocesador del ordenador, que normalmente son demasiado simples. Es exclusivo de cada ordenador. Es difcil y costoso de programar.En lenguajes de bajo nivel distinguimos entre lenguaje mquina y lenguaje ensamblador.Lenguaje mquina: Instrucciones reconocidas por los circuitos del procesador. Se codifican en binario. Los datos se referencian por su posicin de memoria.Lenguaje ensamblador: Codificacin mnemotcnica del lenguaje mquina. Necesita un traductor. Se pueden utilizar etiquetas en vez de posiciones de memoria.

LENGUAJES DE ALTO NIVEL: Estn basados en mquinas abstractas, que facilitan la comprensin por personas. Instrucciones ms flexibles y potentes. Necesita un traductor para convertir el programa a lenguaje mquina, que es el que entiende el ordenador. No depende del procesador, por lo que el mismo programa sirve para diferentes ordenadores. Al tener que traducirlo, es ms lento e ineficiente que el lenguaje de bajo nivel.

CLASIFICACIN DE LOS LENGUAJES DE ALTO NIVELPARADIGMAS DE PROGRAMACIN.Por paradigma de programacin se entiende una filosofa de programar, es decir, los lenguajes que utilizan un mismo paradigma de programacin utilizarn los mismos conceptos bsicos para programar. Se pueden definir cuatro tipos fundamentales:

Imperativos: La unidad de trabajo es la sentencia (accin). Pascal, C.Orientados a Objetos: La unidad de trabajo es el objeto. Agrupa las estructuras de datos con sus algoritmos. Smalltalk.Funcionales: La unidad es la funcin. Consiste en combinar funciones para conseguir funciones ms complejas hasta llegar a la funcin que es el programa. Lisp. Basado en el Clculo Lambda.Lgicos: Se especifican los hechos y las propiedades que especifican el problema. El sistema utiliza esa informacin para encontrar la solucin. Prolog. Basado en la Lgica de Predicados.CLASIFICACIN DE LENGUAJES SEGN LA ADMINISTRACIN DE MEMORIAEstticos: Los requisitos de memoria del programa se pueden calcular antes de ejecutar el programa. No permiten recursividad. Fortran, Cobol.Basados en pila: Se calculan los requisitos de memoria generales del programa antes de ejecutarlo. El resto de la memoria necesaria durante la ejecucin del programa se utiliza en forma de pila. Algol 60.Dinmicos: No se puede saber a priori la cantidad de memoria que utilizar el programa. El programa puede crear y destruir estructuras de datos en cualquier lugar del programa. Prolog, Lisp.C++ es un lenguaje principalmente basado en pila, pero que tambin tiene caractersticas dinmicas.OTRAS CLASIFICACIONESPor la forma en que se pasa a lenguaje mquina. Lenguajes compilados C, Pascal, C++,... Lenguajes interpretados BASICPor el objetivo principal de los programas escritos en el lenguaje. Lenguajes de propsito general C, Delphi... Lenguajes para la enseanza Logo, Pascal, Modula, BASIC... Lenguajes para clculo cientfico Fortran, Matlab, Mathematica, Maple... Lenguajes para gestin Cobol... Lenguajes para la gestin de bases de datos System Query Languages (SQL), Informix... Lenguajes de inteligencia artificial Prolog, Lisp... Programacin multiplataforma e internet Java

RESUMIENDO:(1957) - FORTRAN (FORmula TRANslation): Para clculo cientfico. Se contina utilizando aunque est ya muy superado. (1958) - LISP (LISt Processing): Se utiliza en Inteligencia Artificial. Funcional. Common Lisp en 1984.(1959) COBOL: Aplicaciones de gestin, contabilidad y bases de datos. (1960) - ALGOL 60: Precursor de la programacin estructurada. (1964) BASIC: Muy simple, para principiantes. Actualmente existen versiones muy mejoradas. (1967) Simula: Primer lenguaje que introduce el concepto de clases y objetos. (1972) PASCAL: Programacin estructurada. Est pensado para la enseanza. (1972) C: Similar al Pascal, pero no tan estricto. Muy adecuado la programacin a bajo nivel.(1975) - PROLOG (PROgramacin LOGica) (1980) Smalltalk: Programacin orientada a objetos. (1983) Ada: Programacin concurrente, manejo de excepciones, (1983) - C++: Lenguaje C con orientacin a objetos (1994) - JAVA

TRADUCTORES E INTRPRETESPara que un procesador ejecute un programa escrito en un lenguaje de alto nivel es necesario que lo transforme a su equivalente en lenguaje mquina. Para ello existen dos posibilidades, la interpretacin y la traduccin.INTERPRETACIN:Un intrprete traduce y ejecuta sentencia a sentencia el programa original (programa fuente.)

TRADUCCIN:Traduce el programa original en un programa escrito en lenguaje mquina. Existen dos tipos de traductores: Ensamblador: Cuando el lenguaje fuente es ensamblador. Compilador: Cuando el lenguaje fuente es de alto nivel.COMPARACIN COMPILADORES-INTRPRETES: Un intrprete puede ejecutar un programa directamente, incluso sin estar completo. Un compilador ha de traducirlo completamente antes de ejecutarlo. Un programa interpretado ocupa poca memoria. Un programa compilado es ms rpido. El compilador crea un ejecutable independiente del propio compilador. Un programa interpretado necesita siempre su intrprete. Actualmente casi todos los lenguajes son compilados o una mezcla entre los dos (Prolog, Java.)FASES DEL PROCESO DE COMPILACIN: Anlisis lxico: Identificacin de palabras y smbolos del lenguaje. Anlisis sintctico: Comprobacin de las reglas sintcticas. Anlisis semntico: Comprobacin de las reglas semnticas (variables no declaradas, comprobacin de tipos, ). Interpretacin de las rdenes. Optimizacin: Anlisis del programa para mejorarlo (en velocidad, en espacio de memoria)TIPOS DE ERRORES: Errores de compilacin: Los producidos en la fase de compilacin o interpretacin de un programa, es decir, cuando no se cumplen las reglas sintcticas o semnticas. Errores de ejecucin: Los producidos durante la ejecucin del programa. Estos mensajes de error no son producidos por el compilador, sino por una porcin de cdigo que el compilador aade al programa. Errores lgicos: Cuando el programa no da ningn error pero los resultados no son los esperados. Puede ser porque el algoritmo ha sido incorrectamente implementado o porque el algoritmo estaba mal hecho.