Sei sulla pagina 1di 5

http://www.xuletas.es/ficha/lenguajes-de-programacion-sintaxis-semantica-y-jerarquia http://labsys.frc.utn.edu.ar/ppr-2009/Unidad%20I%20%20POO%20Avanzada/Apunte/Unidad%20I%20-%20POO%20Avanzada.pdf http://www.alegsa.com.ar/Dic/variable.

php

Anlisis Semntico La fase de anlisis semntico revisa el programa fuente para tratar de encontrar errores semnticos y rene la informacin sobre los tipos para la fase posterior de generacin de cdigo. En ella se utiliza la estructura jerrquica determinada por la fase de anlisis sintctico para identificador los operadores y operandos de expresiones y proposiciones. Clasificacion Dinamica: Aspectos que solo pueden ser conocidos en tiempos de ejecucion. Estatica: Aspectos que solo pueden ser controlados en tiempo de compilacion. Verificacion de Tipos: el compilador verifica si cada operador tiene operandos permitidos por la especificacion del lenguaje fuente

SINTAXIS Un programa en cualquier lenguaje se puede concebir como un string de caracteres escogidos de algn conjunto o alfabeto de caracteres. Las reglas que determinan si un string es un programa vlido o no, constituyen la sintaxis de un lenguaje. Posteriormente, se estudiarn ciertas notaciones denominadas expresiones regulares y gramticas libres de contexto, muy usadas no slo para especificar las sintaxis de los lenguajes de programacin sino tambin para contribuir en la construccin de sus compiladores. SEMANTICA Las reglas que determina el significado de los programas constituyen la semntica de los lenguajes de programacin. Es ms difcil de especificar que la sintaxis. Los siguientes son algunos enfoques para especificar la semntica de los lenguajes: Semntica Interpretativa (u Operacional) Un lenguaje de mquina tiene su semntica definida por el computador. Un programa en lenguaje de mquina "significa" exactamente lo que el computador hace cuando el programa "corre" o se ejecuta. Sin embargo, con un lenguaje de alto nivel no se puede dejar que el computador defina la semntica del lenguaje, puesto que no es posible "correr programas y ver" hasta que se tenga un compilador. No se puede tener un compilador y saber qu es correcto hasta haber definido lo que los programas significan. Este enfoque interpretativo para definir la semntica de los lenguajes de programacin consiste en postular una mquina abstracta y proveer reglas para la ejecucin de programas sobre esta mquina abstracta. As, estas reglas definen el significado de los programas. Usualmente, la mquina abstracta se caracteriza por un estado consistente de todos los objetos datos, sus valores, y los programas con sus contadores de programa. Las reglas semnticas especifican cmo el estado es transformado por las diversas construcciones de los lenguajes de programacin. Traduccin La traduccin de un lenguaje assembly a lenguaje de mquina (que es directa y comprensible), forma una especificacin semntica muy usada para un lenguaje assembly. El compilador para un lenguaje de alto nivel sobre una mquina especfica llega a ser la definicin semntica del lenguaje. Definicin Axiomtica Se pueden definir reglas que relacionan los datos antes y despus de la ejecucin de cada programa. Estas reglas se pueden usar para proveer teoremas acerca de la relacin E/S de un programa. Este enfoque tiene la ventaja que puede usarse para definir semnticas para un aparte ms que para todos los aspectos de un lenguaje. Definicin Extensible En este enfoque se definen ciertas operaciones primitivas y el significado del lenguaje en trminos de estas primitivas. Ejemplo LISP. Semntica Matemtica o Denotacional Los objetos matemticos corresponden a programas que son definidos, y reglas abstractas para traducir programas a estos objetos abstractos

LA ESTRUCTURA JERARQUICA DE LOS LENGUAJES DE PROGRAMACIN Un lenguaje de programacin es una notacin para especificar una secuencia de operaciones a realizar sobre objetos datos. Estos se pueden agrupar en una jerarqua de rbol, cuyas unidades son comunes y familiares a la mayora de los lenguajes. ------ figura 1------En el tope de la jerarqua est el programa propiamente tal, que es la unidad de ejecucin bsica. Luego viene una entidad que puede ser compilada, y que se compone de sentencias y expresiones. 1.1 LENGUAJES DE ALTO NIVEL Un lenguaje de programacin es un medio para comunicar algoritmos al computador. Existen cientos de lenguajes de programacin los cuales difieren en el grado de clausura a un lenguaje natural o matemtico por una parte, y al lenguaje de mquina por otra. Tambin difieren en el tipo de problema para el cual funcionan mejor. Algunos aspectos de los lenguajes de alto nivel que los hacen preferibles a los lenguajes de mquina o assembly son: Facilidad de Entender. Un programa en lenguaje de alto nivel es: fcil de leer y de escribir la notacin ms natural de describir algoritmos Un buen lenguaje de programacin debera proveer aspectos para el diseo modular contemplando operadores, estructura de datos, flujo de control. Naturalidad. Facilidad de poder expresar un algoritmo en el lenguaje (sentencias estructuradas, estructura natura del algoritmo) Portabilidad. Posibilidad de ejecutar programas en una variedad de mquinas Eficiencia de Uso. Considerar aspectos del lenguaje como de los programas. Compilacin eficiente. Existen aspectos que hacen ms legibles los programas en lenguajes de alto nivel: Estructuras de Datos Reglas de Alcance que permitan modificaciones en partes de un programa sin afectar otras partes del mismo Flujo de Control que identifique claramente las estructuras de ciclo de un programa Subprogramas que permitan diseo modular. Un compilador tambin puede ayudar a producir programas confiables. Por ejemplo, un compilador puede chequear si los tipos de operandos son compatibles; puede advertir al usuario si hay posibilidad de usar una variable antes de ser definida, o si una referencia a un arreglo puede estar fuera de los lmites.

1.1 ELEMENTOS SINTCTICOS DE UN LENGUAJE DE PROGRAMACIN Conjunto de Caracteres Es la primera etapa en el diseo de la sintaxis de un lenguaje Casi todos tienen el mismo conjunto de letras y dgitos La diferencia est en los caracteres especiales Incide en la determinacin del tipo de equipo para la E/S Identificadores Sintaxis bsica: string de letra y/o dgito comenzando con letra Se introducen caracteres especiales que facilitan la lectura Operadores La mayora de los lenguajes tiene un conjunto estndar de operadores: aritmticos relacionales lgicos Palabras Claves y Reservadas Palabra clave: identificador usado como parte fija de la sintaxis de una sentencia Palabra reservada: palabra clave que no puede ser usada como identificador El anlisis sintctico se facilita usando palabras reservadas Generalmente una sentencia comienza con palabras claves designando el tipo de sentencia. Comentarios y Palabras Opcionales

La mayora de los lenguajes permite incluir comentarios en los programas Los comentarios no son considerados durante la compilacin. Espacios en Blanco Vara su inclusin entre un lenguaje y otro Delimitadores Es un elemento sintctico para marcar el comienzo y/o el fin de una unidad sintctica Ejemplo BEGIN .... END Las caractersticas son: realza la lectura simplifica el anlisis sintctico elimina ambigedades delimita explcitamente frontera o cota de una construccin sintctica. Formato Libre y Fijo Una sintaxis es libre si las sentencias del programa se pueden escribir en cualquier parte de una lnea sin observar la posicin o salto de lnea. Ejemplo Pascal Una sintaxis es fija si utiliza la posicin en la lnea para proporcionar informacin. Ejemplo estrictamente fija, mquina; parcialmente fija, Fortran Expresiones Son unidades sintcticas bsicas con las cuales se construyen sentencias. Hay distintas formas para escribir una expresin: infija, prefija, postfija (inorden, preorden, postorden). Sentencias Son las componentes sintcticas ms importantes de los lenguajes de programacin. Algunos tienen formato bsico de sentencia. Existen diferentes sintaxis para cada tipo diferente de sentencia. En general existen sentencias simples y estructuradas. Estructura de Programa y Subprograma La organizacin sintctica de un programa y la definicin de subprograma es variada. Definicin variada de subprograma - cada definicin de subprograma es tratada como una unidad sintctica separada - Las principales estructuras de los programas son: bloques, subprogramas - El bloque se ejecuta cuando la secuencia de ejecucin llega. El procedimiento es llamado explcitamente. En Fortran cada subprograma es compilado separadamente y los programas son "linkeados" en tiempo de carga. En APL los subprogramas son compilados separadamente y son "linkeados" slo cuando uno llama a otro durante la ejecucin. Definicin de subprogramas anidados Un ejemplo se da en ALGOL que muestra la estructura de programas anidados en que la definicin del subprograma aparece como declaracin en el programa principal. A su vez, el mismo subprograma puede contener otra definicin anidada. Descripcin separada de datos y sentencias ejecutables Un representante es el COBOL. Las declaraciones de datos y sentencias ejecutables para los subprogramas (prrafos), se encuentran en la DATA DIVISION y en la PROCEDURE DIVISION, respectivamente. La ENVIRONMENT DIVISION consiste de las declaraciones de operacin y ambiente externo, equipo, archivos, memoria, etc... Todos los datos son globales a los subprogramas. Una ventaja es que cambios en la estructura de datos se hacen sin tocar los subprogramas. Definicin de subprogramas no separados No hay diferencia sintctica entre las sentencias del programa y las del subprograma. Un ejemplo SNOBOL: independiente del nmero de subprogramas que contenga el programa, es una lista de sentencias. El punto donde un subprograma comienza y termina no se distingue. Los programadores introducen una separacin artificial insertando comentarios. Otro ejemplo BASIC. C++ V_La clase representa la abstraccion de la realidad que se desea representar V_Un objeto en poo es equivalente a una variable en programacion procedural F_En la poo la expresion obj.valor representa la base del encapsulamiento F_En la poo los metodos de una clase deben ser privados. V_Una clase es una plantilla para crear datos. Herencia: propiedad que permite la reutilizacion de codigo, una clase puede heredar de otra clase todos o parte de sus atributos y metodos. implica definir una clase derivada utilizando elementos de otras clases

preexistentes clase abstracta es aquella clase que no cuenta con un objeto definido Polimorfismo: es cuando a un mismo mensaje dos clases se comportan de forma distinta. Constructor: metodo de la clase su objetivo es, pedir recursos al sistema para contruir el objeto, generar y dar valores iniciales a los atributos de un objeto al instanciar la clase, metodo con el mismo nombre de la clase, no posee valor de retorno, se invoca al crear el objeto,puede sobrecargarse, si en la clase no se define, el compilador poporciona un constructor por defecto. Sobrecarga: Realizar varias operaciones sobre un mismo metodo. metodos que tienen el mismo nombre pero que se diferencian por el numero y o tipo de los argumentos Control de accesibilidad: private: los elementos solo pueden ser accesados por funciones mienbros de la clase; Public: pueden ser accesadas por funciones usuarias de la clase. Const por defecto:ejemplo(){ejemplo=1;} Const por paso de parametros: ejemplo(int a){ejemplo=a} Const por copia: ejemplo(const & x){ejemplo=x.ejemplo} JAVA V_Java es un lenguaje de poo multiplataforma F_En el lenguaje java existe la herencia multiple(en c++ si) F_Las estructuras basicas de c++ y java son absolutamente diferentes. F_Las modificaciones en un string quedan en el mismo string.(nuevo string) F_Toda clase cuenta con el metodo main(solo las aplicaciones) Destructor:Java no posee destructores, porque tiene recoleccion de basuras. java gestiona automaticamente la liberacion de memoria mediante el garbage collector, no define destructores de objeto.En Java no hay destructores como en C++. El sistema se ocupa automticamente de liberar memoria de los objetos que ya han perdido la referencia, esto es, objetos que ya no tienen ningn nombre que permita acceder a ellos, por ejemplo por haber llegado al final del bloque en el que haban sido definidos, porque a la referencia se le ha asignado el valor null o porque a la referencia se le ha asignado la direccin de otro objeto. A esta caracterstica se le llama recogida de basura (garbage collection). Clase Abstracta: Una clase abstracta (abstract) es una clase de la que no se pueden crear objetos. Su utilidad es permitir que otras clases deriven de ella, proporcionndoles un marco o modelo que deben seguir y algunos mtodos de utilidad general. Las clases abstractas se declaran anteponindoles la palabra abstract, como por ejemplo public abstract class Geometria { ... } Static: permite declarar miembros de una clase, es decir, el comportamiento de un metodo no depende de su instancia y un atributo no depende de ninguna instancia. Diferencias entre c++ y java: Java es interpretado y c++ compilado; java es portable independiente de la maquina, c++ depende de la maquina; en java el compilador genera un bytecod para ser interpretado pro la maquina virtual, c++ se genera un codigo de maquina para una plataforma especifica. Ejemplo herencia: la herencia consiste en definir una nueva clase describiendo unicamente las caracteristicas que la diferencian de alguna clase previamente definida ej. persona-> empleado-SocioEstudiante. Proceso de diseo y ejecucion del codigo java: PROGRAMA: se crea en un editor para luego almacenarlo en el DD; COMPILADOR: genera codigo byte; CARGADOR DE CLASES: toma el codigo byte y lo ubica en la memoria; VERIFICADOR: revisa si el codigo esta bien escrito y si es que no viola las reglas de seguridad de java; INTERPRETE: lee el codigo byte y lo traduce a un codigo conocido por la maquina.

variable En programacin, una variable es un espacio de memoria reservado para almacenar un valor que corresponde a un tipo de dato soportado por el lenguaje de programacin. Una variable es representada y usada a travs de una etiqueta (un nombre) que le asigna un programador o que ya viene predefinida. Por ejemplo, en la variable de nombre "num", se almacena el nmero 8 (de tipo entero). De forma genrica, para utilizarla y sumarle un uno se debera programar: num = num + 1. Una variable puede ser del tipo boleano, entero, decimal de coma flotante, caracter, cadena de

texto, arreglo, matriz, tipo definido por el usuario, etc. Estos son tipos de datos. Una variable, por lo general, como su nombre lo indica, puede variar su valor durante la ejecucin del programa. Dependiendo del lenguaje de programacin usado, tambin puede cambiar el tipo de dato que almacena.

Potrebbero piacerti anche