PROCESADORES DEL LENGUAJES Ev. Alternativa

Tamaño: px
Comenzar la demostración a partir de la página:

Download "PROCESADORES DEL LENGUAJES Ev. Alternativa"

Transcripción

1 PROCESADORES DEL LENGUAJES Ev. Alternativa NOMBRE: GRUPO: EL LENGUAJE LVECT LVECT es un lenguaje de programación secuencial. El programa LVECT consta de declaraciones de variables y secuencia de asignaciones. Las variables en LVECT pueden ser numéricas o vectores. Las variables numéricas almacenan números naturales. Los vectores se declaran con un rango de índices naturales y almacenan números naturales en sus componentes. Toda variable o componente de vector se considera inicializado a cero tras su declaración. Las expresiones de LVECT son de tipo natural y se definen recursivamente desde números naturales, variables numéricas, componentes de vectores, sumas, restas y multiplicaciones de expresiones y expresiones con paréntesis. A continuación se muestra un programa LVECT. PROGRAMA VARIABLES x,y,v[2..5],w[1..3],z ASIGNACIONES v[2] = 1 x = 1 v[3] = x x = v[2] v[2] = 1 w[x] = x+1 v[w[x+1]+3] = 2*(v[3]+v[2]) w[v[2]] = 3 SE PIDE: Analizador sintáctico para el lenguaje LVECT. Descripciones a entregar: [DISEÑO ABSTRACTO] (2 puntos) Gramática (independiente de tecnología) para describir la sintaxis del programa LVECT. [IMPLEMENTACIÓN] Parser Antlr implementando la gramática propuesta en el diseño abstracto.

2 [DISEÑO ABSTRACTO] programa : PROGRAMA variables asignaciones variables : VARIABLES vars PUNTOYCOMA asignaciones : ASIGNACIONES (asignacion)* vars : variable COMA vars variable variable : IDENT CORCHETEABIERTO NUMERO RANGO NUMERO CORCHETECERRADO IDENT asignacion : var_expresion ASIG expresion PUNTOYCOMA expresion : expresion1 (MAS MENOS POR) expresion expresion1 expresion1 : NUMERO var_expresion PARENTESISABIERTO expresion PARENTESISCERRADO var_expresion : IDENT CORCHETEABIERTO expresion CORCHETECERRADO IDENT [IMPLEMENTACIÓN] class AnasintLVECT extends Parser programa : PROGRAMA variables asignaciones variables : VARIABLES vars PUNTOYCOMA asignaciones : ASIGNACIONES (asignacion)* vars : (variable COMA) => variable COMA vars variable variable : (IDENT CORCHETEABIERTO)=> IDENT CORCHETEABIERTO NUMERO RANGO NUMERO CORCHETECERRADO IDENT asignacion : var_expresion ASIG expresion PUNTOYCOMA expresion : (expresion1 (MAS MENOS POR))=> expresion1 (MAS MENOS POR) expresion expresion1 expresion1 : NUMERO var_expresion

3 PARENTESISABIERTO expresion PARENTESISCERRADO var_expresion : (IDENT CORCHETEABIERTO) => IDENT CORCHETEABIERTO expresion CORCHETECERRADO IDENT

4 PROCESADORES DEL LENGUAJES Ev. Alternativa NOMBRE: GRUPO: EL LENGUAJE LOBJ LOBJ es un lenguaje de programación secuencial orientado a objetos. El programa LOBJ consta de declaraciones de clase, declaraciones de objetos y secuencia de asignaciones. La declaración de clase incluye nombre y conjunto de atributos. El atributo pueden ser entero o de tipo clase. Las expresiones en LOBJ están limitadas a enteros, valores nulos, objetos y selección de atributos. Los atributos se expresan mediante navegaciones al estilo Java. A continuación se muestra un programa LOBJ con errores semánticos. PROGRAMA CLASES A[a:entero,objB:B,b:entero], B[objA:A,a:entero], C[objA:A,objB:B] OBJETOS oa:a, ob:b, oc:c ASIGNACIONES oa.objb = ob oa.objb = oa ob = oa oc.obja.c = 1 oc.obja = oa oc.obja = 1 oc.obja.a = 1 oc.c = ob.b // error (a) asignación oa.objb = oa con diferentes tipos // error (a) asignación ob = oa con diferentes tipos // error (b) oc.obja.c es un atributo inexistente //error (a) asignación oc.obja = 1 con diferentes tipos //error (b) atributo oc.c inexistente //error (b) atributo ob.b inexistente oc.obja.objb.a = 1 SE PIDE: Analizador semántico que detecte errores en cada asignación del programa. Para una asignación dada, el analizador comprobará si hay accesos a atributos inexistentes. Si no hay tales accesos, se comprobará si los tipos en la parte izq y dcha de la asignación son distintos. Los errores deben ser informados por consola al procesar cada asignación y siguiendo el formato mostrado en el programa de ejemplo. Descripciones a entregar: (4 puntos) [DISEÑO ABSTRACTO] Diseño abstracto del analizador semántico. [IMPLEMENTACIÓN] (1) Gramática sin atribuir que reconozca los árboles de sintaxis abstracta generados por el analizador del Anexo. (2) Atribuir la gramática resultante en (1) con la implementación del diseño abstracto.

5 Anexo class Anasint extends Parser options{ buildast = true k=2 tokens{ VARIABLE programa : PROGRAMA^ clases objetos asignaciones clases : CLASES^ decl_clases PUNTOYCOMA! objetos : OBJETOS^ decl_objetos PUNTOYCOMA! asignaciones : ASIGNACIONES^ (asignacion)* decl_clases : (decl_clase COMA) => decl_clase COMA! decl_clases decl_clase decl_objetos : (decl_objeto COMA) => decl_objeto COMA! decl_objetos decl_objeto decl_clase : IDENT^ CORCHETEABIERTO! decl_atributos CORCHETECERRADO! decl_objeto : IDENT^ DOSPUNTOS! IDENT decl_atributos : (decl_atributo COMA) => decl_atributo COMA! decl_atributos decl_atributo decl_atributo : IDENT^ DOSPUNTOS! IDENT asignacion : variable ASIG^ expresion PUNTOYCOMA! expresion : NUMERO NULO variable variable : (IDENT PUNTO) => (IDENT PUNTO!)+ IDENT {#variable = #(#[VARIABLE,"VARIABLE"],##) IDENT {#variable = #(#[VARIABLE,"VARIABLE"],##)

6 [DISEÑO ABSTRACTO] (1) El analizador necesitará almacenar la estructura de cada clase: nombre de clase, nombre de loa atributos y sus tipos. Esta información es necesaria para calcular el tipo de una expresión. memoria clases: [clase1 [atributo1.1 tipo1.1] [atributo 1.2 tipo1.2]... clase2 [atributo2.1 tipo2.1] [atributo 2.2 tipo2.2]...] (2) El analizador necesitará conocer el tipo de cada objeto para poder calcular el tipo de una expresión. memoria objetos: [ob1 clase1,...] (3) El tipo de un objeto se obtiene consultando la memoria objetos. El tipo de un atributo se determina accediendo a la memoria objetos y a la memoria clases. Ejemplo: el tipo de oc.obja.a se determina accediendo sucesivamente a la clase del objeto oc (memoria objetos), a la clase del atributo obja (memoria clases) y finalmente al tipo del atributo a. Toda constante numérica es de tipo entero. El acceso a un atributo inexistente hace indeterminado el tipo de la expresión. (4) Para cada asignación se calculará el tipo de la parte izquierda y el tipo de la expresión a la derecha. Si en el cálculo de dichos tipos, se accede a un atributo inexistente, se informará de error (b) acceso a atributo inexistente. Si no hay error de acceso a atributo inexistente, se comparará los tipos resultantes. Si no son iguales se informará de error (a) partes izq. y dcha. con distintos tipos. [IMPLEMENTACIÓN] Gramática sin atribuir que reconozca los árboles de sintaxis abstracta generados por el analizador del Anexo. class Anasem0LOBJ extends TreeParser options{ importvocab=anasintlobj programa : #(PROGRAMA clases objetos asignaciones) clases : #(CLASES decl_clases)

7 objetos : #(OBJETOS decl_objetos) asignaciones : #(ASIGNACIONES (asignacion)*) decl_clases : (decl_clase)+ decl_objetos : (decl_objeto)+ decl_clase : #(IDENT decl_atributos) decl_objeto : #(IDENT IDENT) decl_atributos : (decl_atributo)+ decl_atributo : #(IDENT IDENT) asignacion : #(ASIG variable expresion) expresion : NUMERO NULO variable variable: #(VARIABLE seq_id) seq_id : (IDENT)+ Atribuir la gramática resultante en (1) con la implementación del diseño abstracto. header{ import java.util.* class AnasemLOBJ extends TreeParser options{ importvocab=anasintlobj { Map<String,Map<String,String>> clases = new HashMap<String,Map<String,String>>() Map<String,String> objetos = new HashMap<String,String>() boolean error_b

8 void chequear_error_a(string t1, String t2, AST variable, AST expresion){ boolean error_a = false if (t1.equals(" indeterminado") t2.equals(" indeterminado")) error_a = false else{ if (t1.equals("entero")) if (!t2.equals("entero")) error_a = true else error_a = false else if (t2.equals(" cualquiera")) error_a = false else error_a =!(t1.equals(t2)) if (error_a) System.out.println("error (a) asignación "+ convertir_variable(variable)+" = "+ convertir_expresion(expresion)+" con diferentes tipos") String calcular_tipo(ast variable){ AST id = variable.getfirstchild() String tipo = objetos.get(id.gettext()) id = id.getnextsibling() while (id!=null &!tipo.equals(" indeterminado")){ if (clases.get(tipo).keyset().contains(id.gettext())) tipo = clases.get(tipo).get(id.gettext()) else{ tipo = " indeterminado" System.out.println("error (b) acceso a atributo "+ convertir_variable(variable)+" inexistente") error_b = true id = id.getnextsibling() return tipo String convertir_variable(ast variable){ String resultado = new String() AST it = variable.getfirstchild() resultado+=it.gettext() it = it.getnextsibling() while (it!=null){ resultado+="."+it.gettext() it = it.getnextsibling() return resultado String convertir_expresion(ast expresion){ String resultado = new String() switch(expresion.gettype()){ case NUMERO: resultado=expresion.gettext() break case NULO: resultado=expresion.gettext()

9 break case VARIABLE: resultado=convertir_variable(expresion) break default: break return resultado programa : #(PROGRAMA clases objetos asignaciones) clases : #(CLASES decl_clases) objetos : #(OBJETOS decl_objetos) asignaciones : #(ASIGNACIONES (asignacion)*) decl_clases : (decl_clase)+ decl_objetos : (decl_objeto)+ decl_clase : #(a:ident decl_atributos[a]) decl_objeto : #(a:ident b:ident) {objetos.put(a.gettext(),b.gettext()) decl_atributos [AST clase] {Map<String,String>atributos = new HashMap<String,String>(): (decl_atributo[atributos])+ {clases.put(clase.gettext(),atributos) decl_atributo [Map<String,String>atributos]: #(a:ident b:ident) {atributos.put(a.gettext(),b.gettext()) asignacion {String t1,t2: {error_b = false #(ASIG v:variable {t1=calcular_tipo(v) t2=e:expresion) { chequear_error_a(t1, t2, v, e) expresion returns [String tipo = new String()]: a:numero {tipo = "entero" b:nulo {tipo = " cualquiera" c:variable {tipo = calcular_tipo(c) variable : #(VARIABLE s:seq_id) seq_id : (IDENT)+

10 PROCESADORES DEL LENGUAJES Ev. Alternativa NOMBRE: GRUPO: EL LENGUAJE LEC2 LEC2 es un lenguaje de programación secuencial. Un programa LEC2 está formado por una declaración de contextos y una secuencia de instrucciones. Los contextos son secciones del programa en las que se declaran e inicializan variables con constantes numéricas (ej. x = 5). Un programa LEC puede tener uno o más contextos. Todo programa LEC tiene un contexto por defecto (ej. DEFECTO 1). Hay dos tipos de instrucciones en LEC2: expresiones aritméticas contextualizadas y selección de contextos por defecto. Las expresiones LEC se construyen con operadores aritméticos, constantes numéricas y variables. Los operadores aritméticos son suma (+), resta (-) y producto (*). Las constantes numéricas son enteros positivos o cero. La variable LEC2 puede referenciar a un contexto (ej. z{2 es una variable del contexto 2) o al contexto por defecto (ej. x). El siguiente ejemplo muestra un programa escrito en el lenguaje LEC2: CONTEXTO 1 x = 5 y = 7 z = 1 CONTEXTO 2 x = 9 z = 3 DEFECTO 1 INSTRUCCIONES (x{2 - y) * z (x{1 + y{1) * z{2 DEFECTO 2 (x - z) * z SE PIDE: Compilador de programas LEC2 a Java. Compilar un programa LEC2 (sin errores) significa generar una clase Java con método main(). El código del método main() debe simular la semántica del programa LEC2. Por tanto, la construcción del compilador implicará diseñar la compilación de los contextos, contexto por defecto e instrucciones de un programa LEC2. Compilar una expresiónlec2 significa generar código Java para la expresión y mostrar el resultado de su evaluación por consola. Por ejemplo, la expresión (x{2 - y) * z en el programa de ejemplo debe evaluarse en Java a la constante 2 (justificación: x{2=9, y=7, z=1). Por ejemplo, la expresión (x - z) * z en el programa de ejemplo debe evaluarse en Java a la constante 18 (justificación: x=9, z=3). Descripciones a entregar: (4 puntos) [DISEÑO ABSTRACTO] Diseño abstracto del compilador indicando para cada elemento de un programa LEC2 qué código Java le corresponde. Muestre el resultado de su compilación para el programa de ejemplo. [IMPLEMENTACIÓN] propuesta en Anexo. Gramática atribuida del analizador incluyendo la implementación del diseño abstracto. Use la gramática

11 Anexo class Compilador extends TreeParser options{ importvocab=anasint programa : #(PROGRAMA contextos defecto instrucciones) contextos : #(CONTEXTOS (contexto)+) contexto : #(CONTEXTO NUMERO asignaciones) asignaciones : (asignacion)+ asignacion : #(ASIG VARIABLE NUMERO) defecto : #(DEFECTO NUMERO) instrucciones : #(INSTRUCCIONES (instruccion)*) instruccion : defecto expresion expresion : #(MAS expresion expresion) #(MENOS expresion expresion) #(POR expresion expresion) #(LLAVEABIERTA VARIABLE NUMERO) VARIABLE NUMERO #(PARENTESISABIERTO expresion)

12 [DISEÑO ABSTRACTO] (1) Programa LEC2 se corresponde con clase Java con main() (2) Contexto LEC2 se corresponde con mapa Java declarado como variable local del método main(). La clave de dicho mapa es el número que identifica el contexto en LEC2 y el valor es otro mapa con clave una cadena de caracteres para identificar las variables del contexto y el valor es de tipo entero para almacenar el valor de tales variables. (3) Cada expresión LEC2 genera una expresión entera Java que será imprimida por consola mediante un código System.out.println. (4) La compilación de instrucciones de selección de contexto por defecto no genera código Java. Se representará por una variable interna del compilador. Muestre el resultado de su compilación para el programa de ejemplo. import java.util.* public class P { public static void main(string[] args) { Map<String, Integer>ctxt1 = new HashMap<String, Integer>() ctxt1.put("x",5) ctxt1.put("y",7) ctxt1.put("z",1) Map<String, Integer>ctxt2 = new HashMap<String, Integer>() ctxt2.put("x",9) ctxt2.put("z",3) System.out.println((ctxt2.get("x")-ctxt1.get("y"))*ctxt1.get("z")) System.out.println((ctxt1.get("x")+ctxt1.get("y"))*ctxt2.get("z")) System.out.println((ctxt2.get("x")-ctxt2.get("z"))*ctxt2.get("z")) [IMPLEMENTACIÓN] header{ import java.util.* import java.io.* class CompiladorLEC2 extends TreeParser options{ importvocab=anasintlec2 { FileWriter f Integer ctxt_defecto void abrir_fichero(string nombre_fichero){ try{ f = new FileWriter(nombre_fichero) catch(ioexception e){system.out.println(e.tostring())

13 void cerrar_fichero(){ try{ f.close() catch(ioexception e){system.out.println(e.tostring()) void escribir_fichero(string s){ try{ f.write(s) catch(ioexception e){system.out.println(e.tostring()) void escribir_espacios(){ try{ for(int i=0i<espaciosi++) f.write(' ') catch(ioexception e){system.out.println(e.tostring()) int espacios = 0 void escribir_importaciones(){ escribir_espacios() String r = new String("import java.util.*\n\n") escribir_fichero(r) void escribir_comienzo_clase(){ escribir_espacios() String r = new String("public class P {\n") escribir_fichero(r) espacios += 3 void escribir_fin(){ espacios -= 3 escribir_espacios() String r = new String("\n") escribir_fichero(r) void escribir_comienzo_main(){ escribir_espacios() String r = new String("public static void main(string[] args) {\n") escribir_fichero(r) espacios += 3 void declarar_contexto(ast n){ escribir_espacios() String r = new String("Map<String, Integer>ctxt"+n.getText()+" = "+ "new HashMap<String, Integer>()\n") escribir_fichero(r) void declarar_variable_en_contexto(ast contexto, AST variable, AST numero){ escribir_espacios() String r = new String("ctxt"+contexto.getText()+".put(\""+

14 variable.gettext()+"\","+numero.gettext()+")\n") escribir_fichero(r) void generar_codigo_expresion(string expresion){ escribir_espacios() String r = new String("System.out.println("+expresion+")\n") escribir_fichero(r) programa [String nombre_fichero]: {abrir_fichero(nombre_fichero) #(PROGRAMA {escribir_importaciones() escribir_comienzo_clase() escribir_comienzo_main() contextos defecto instrucciones) {escribir_fin()escribir_fin()cerrar_fichero() contextos : #(CONTEXTOS (contexto)+) contexto : #(CONTEXTO n:numero {declarar_contexto(n) asignaciones[n]) asignaciones[ast numero]: (asignacion[numero])+ asignacion[ast numero] : #(ASIG v:variable n:numero) {declarar_variable_en_contexto(numero,v,n) defecto : #(DEFECTO n:numero) {ctxt_defecto = new Integer(n.getText()) instrucciones : #(INSTRUCCIONES (instruccion)*) instruccion {String r: defecto r=expresion {generar_codigo_expresion(r) expresion returns [String r = new String()] {String r1,r2: #(MAS r1=expresion r2=expresion){r=r1+"+"+r2 #(MENOS r1=expresion r2=expresion){r=r1+"-"+r2 #(POR r1=expresion r2=expresion){r=r1+"*"+r2 #(LLAVEABIERTA v:variable n:numero) {r="ctxt"+n.gettext()+".get(\""+v.gettext()+"\")" w:variable {r="ctxt"+ctxt_defecto.tostring()+".get(\""+w.gettext()+"\")" m:numero {r=m.gettext() #(PARENTESISABIERTO r1=expresion) {r="("+r1+")"

PROCESADORES DEL LENGUAJES Septiembre 2017

PROCESADORES DEL LENGUAJES Septiembre 2017 PROCESADORES DEL LENGUAJES Septiembre 2017 NOMBRE: GRUPO: LENGUAJE DE PROGRAMACIÓN MP Un programa MP consta de un conjunto de interfaces para declarar procedimientos y un bloque para definir variables

Más detalles

PROCESADORES DEL LENGUAJES Enero 2015

PROCESADORES DEL LENGUAJES Enero 2015 PROCESADORES DEL LENGUAJES Enero 2015 NOMBRE El lenguaje ASSERTION ASSERTION es un lenguaje de programación. Sus programas pueden incluir asertos. Un aserto es una condición lógica construida con las siguientes

Más detalles

TEMA 3: ANÁLISIS SEMÁNTICO

TEMA 3: ANÁLISIS SEMÁNTICO 1 TEMA 3: ANÁLISIS SEMÁNTICO OBJETIVO Dar respuesta a las siguientes preguntas: Qué es el análisis semántico de un lenguaje? Cómo se diseña y construye un analizador semántico? EL PROBLEMA DEL CÁLCULO

Más detalles

PROCESADORES DEL LENGUAJES Enero 2018

PROCESADORES DEL LENGUAJES Enero 2018 PROCESADORES DEL LENGUAJES Enero 2018 NOMBRE: GRUPO: LENGUAJE LR3 El lenguaje de programación LR3 permite expresar programas secuenciales con los siguientes recursos: (a) Declaraciones de variables de

Más detalles

Departamento de Lenguajes y Sistemas Informáticos Procesadores de Lenguajes

Departamento de Lenguajes y Sistemas Informáticos Procesadores de Lenguajes 1 ANÁLISIS SEMÁNTICO OBJETIVO Problemas para consolidar el diseño y construcción de analizadores semánticos. PROBLEMA 1: LA RUPTURA DE CONTROL INALCANZABLE Supongamos un lenguaje de programación secuencial

Más detalles

Procesadores del Lenguaje Práctica 1: Ejemplo sencillo

Procesadores del Lenguaje Práctica 1: Ejemplo sencillo Procesadores del Lenguaje Práctica 1: Ejemplo sencillo ANTLR es una herramienta que integra la generación de analizadores léxicos, sintácticos, árboles de sintaxis abstracta y evaluadores de atributos.

Más detalles

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

VARIABLES AUTOMÁTICAS

VARIABLES AUTOMÁTICAS VARIABLES AUTOMÁTICAS Perl es un lenguaje muy flexible y con unas instrucciones muy potentes y útiles. Uno de los aspectos más destacables en este sentido es el de las expresiones regulares, hay multitud

Más detalles

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4 PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4 En esta práctica trabajaremos con ANTLR a nivel semántico utilizando gramáticas con atributos. ANTLR permite implementar con facilidad los dos modelos

Más detalles

TEMA 2: ANÁLISIS LÉXICO-SINTÁCTICO

TEMA 2: ANÁLISIS LÉXICO-SINTÁCTICO 1 TEMA 2: ANÁLISIS LÉXICO-SINTÁCTICO OBJETIVO Dar respuesta a las siguientes preguntas: Qué es el análisis léxico-sintáctico de un lenguaje? Cómo se diseña y construye un analizador léxico-sintáctico?

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...

Más detalles

Java. Introducción a la Programación Orientada a Objetos

Java. Introducción a la Programación Orientada a Objetos Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora

Más detalles

Estructuras de control selectivas

Estructuras de control selectivas Práctica 3 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 2.0.2 Concepto de sentencia y estructura de control El cuerpo de los métodos

Más detalles

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 1

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 1 PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 1 Esta práctica supone la primera toma de contacto con la herramienta ANTLR (ANother Tool for Language Recognition). ANTLR es una herramienta que integra

Más detalles

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora

Más detalles

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos

Más detalles

Curso Informática Lección 4. Instrucciones de control

Curso Informática Lección 4. Instrucciones de control Fundamentos de Informática Lección 4. Instrucciones de control Curso 2010-2011 Pedro Álvarez y José Ángel Bañares 24/09/2010. Dpto. Informática e Ingeniería de Sistemas. Índice de contenidos Introducción

Más detalles

Introducción a Java. Introducción a Java. Programación I

Introducción a Java. Introducción a Java. Programación I Introducción a Java Introducción a Java Programación I Como Funciona Tipos de Datos TIPO TAMAÑO RANGO byte 8 bits Valores numéricos de 128 a 127 short 16 bits Valores numéricos de 32.768 a 32.767 int 32

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación: Examen de Java Nombre: DNI: Titulación: 1. Sea una aplicación Java donde todas las clases están compiladas y empaquetas en un solo fichero JAR (programa.jar). Qué sería necesario para conseguir ejecutar

Más detalles

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 6

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 6 PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 6 En esta práctica veremos cómo recorrer árboles de sintaxis abstracta con ANTLR. La notación utilizada nos va a resultar familiar ya que comparte muchos

Más detalles

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende

Más detalles

Estructura de datos y Programación

Estructura de datos y Programación Estructura de datos y Programación Tema: Conceptos Básicos- Estructuras de control - Arreglos Ing. Analia Méndez Ing. Raquel Zarco Año: 2012 ELEMENTOS DE UN PROGRAMA EN JAVA El programa Java consta de

Más detalles

Instituto Tecnológico de Celaya

Instituto Tecnológico de Celaya ELEMENTOS BÁSICOS DE C++: DECLARACIÓN DE VARIABLES A través de operaciones aritméticas (suma, resta, etc.) y lógicas (por ejemplo, comparaciones) los programas manipulan datos tales como números y caracteres.

Más detalles

Introducción a Java 10/02/2011. Tokens. Juan Manuel Fernández Peña Curso Rev Tokens. Tokens

Introducción a Java 10/02/2011. Tokens. Juan Manuel Fernández Peña Curso Rev Tokens. Tokens Introducción a Java Juan Manuel Fernández Peña Curso 2005. Rev 2011 Comentarios: //comentario /* comentario fin de comentario */ /** comentario para javadoc fin */ Palabras reservadas: (como ejemplo) abstract,

Más detalles

INTERPRETACIÓN Y COMPILACIÓN

INTERPRETACIÓN Y COMPILACIÓN 1 INTERPRETACIÓN Y COMPILACIÓN OBJETIVO Problemas para consolidar el diseño y construcción de intérpretes y compiladores. PROBLEMA 1: CALCPROG Supongamos un lenguaje llamado CALCPROG para programar secuencias

Más detalles

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa Contenido Estructura de un programa en Java... 2 Tipos de datos básicos... 2 Operadores... 3 Literales... 4 Entrada / Salida... 4 Sentencias condicionales... 5 Funciones... 5 Ejercicios... 6 Variables,

Más detalles

Examen escrito de Programación I

Examen escrito de Programación I Examen escrito de Programación I Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 12 de septiembre de 2011 Disponer sobre la mesa en lugar visible un documento

Más detalles

LABORATORIO 1: ENTORNO DE DESARROLLO

LABORATORIO 1: ENTORNO DE DESARROLLO 1 LABORATORIO 1: ENTORNO DE DESARROLLO OBJETIVO Especificar el entorno de desarrollo para las sesiones de laboratorio. DURACIÓN: 1 sesión. ANTLR Y ECLIPSE ANTLR es una herramienta diseñada para facilitar

Más detalles

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo Tema 4 Control de flujo Programación 2015-2016 Programación - Tema 4: Control de Flujo 1 Tema 4. Control de flujo Introducción. Estructuras condicionales. Estructuras de repetición. Programación - Tema

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java II... 6 Estructuras de control... 7 Estructuras de selección... 8 Sentencia if... 9 Sentencia if - else... 12 Operador condicional...

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación: Examen de Java Nombre: DNI: Titulación: 1. Cómo podemos compilar desde la línea de comandos la clase Java A que utiliza una librería empaquetada bd.jar? 2. Indica si es correcto el siguiente código. Justifica

Más detalles

Práctica 11e. Práctica 11e. José M. Ordax

Práctica 11e. Práctica 11e. José M. Ordax Práctica 11e José M. Ordax chemi@javahispano.org 1 Copyright 2005 José M. Ordax Este documento puede ser distribuido solo bajo los términos y condiciones de la Licencia de Documentación de javahispano

Más detalles

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL Cualquier duda sobre el contenido de este tema se puede enviar al foro TEORIA2. 2.1.- El tipo de datos entero (byte,

Más detalles

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota:

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota: Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota: Justificación: Se pretende con éste contribuir a que el alumno se inicie y conozca el entorno del IDE en la creación de pequeños programas en java Objetivos:

Más detalles

Construcciones del Lenguaje Java

Construcciones del Lenguaje Java Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.

Más detalles

Es ambigua, ya que la división y la multiplicación tienen el mismo grado de precedencia, qué parte de la expresión se realiza primero?

Es ambigua, ya que la división y la multiplicación tienen el mismo grado de precedencia, qué parte de la expresión se realiza primero? Modulo 7. Expresiones y sentencias de control de Flujo En este punto de estudio se considera que tenemos claro los conceptos relacionados con variables y operadores, ahora estudiaremos como con las variables

Más detalles

Datos Elementales y formato de un programa en Java

Datos Elementales y formato de un programa en Java Datos Elementales y formato de un programa en Java PROGRAMACION I Grado en Matematicas Informática Programación I - 2015/2016 Datos, variables y mi primer programa 1 Introducción a la programación o Programa:

Más detalles

Árboles de Sintaxis Abstracta en ANTLR

Árboles de Sintaxis Abstracta en ANTLR Árboles de Sintaxis Abstracta en ANTLR Antlr permite construir árboles de sintaxis abstracta (ASA) mediante anotaciones en la gramática indicando qué tokens deben tratarse como raíces de subárboles, cuáles

Más detalles

Tema 5. Análisis semántico

Tema 5. Análisis semántico Departamento de Tecnologías de la Información Tema 5 Análisis semántico Ciencias de la Computación e Inteligencia Artificial Índice 5.1 Características del análisis semántico 5.2 Gramáticas atribuidas

Más detalles

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN - Introducción - Sintaxis - Semántica básica - Tipos de datos - Expresiones y enunciados - Procedimientos y ambientes - Tipos abstractos de datos y módulos

Más detalles

TEMA 6: ANÁLISIS SEMÁNTICO DE EXPRESIONES E INSTRUCCIONES EN L-0

TEMA 6: ANÁLISIS SEMÁNTICO DE EXPRESIONES E INSTRUCCIONES EN L-0 TEMA 6: ANÁLISIS SEMÁNTICO DE EXPRESIONES E INSTRUCCIONES EN L-0 En este tema vamos a mostrar una estrategia para llevar a cabo, partiendo del ASA obtenido en el tema 4, el resto de comprobaciones semánticas

Más detalles

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 5

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 5 PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 5 En esta práctica estudiaremos los mecanismos que proporciona ANTLR para crear árboles de sintaxis abstracta. Estos aspectos (junto con la notación

Más detalles

Compiladores e Intérpretes

Compiladores e Intérpretes Departamento de Cs. e Ingeniería de la Computación Universidad Nacional del Sur Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2018 1. Introducción Este documento

Más detalles

TEMA 2: PARSERS Y CONSTRUCCIÓN DEL ÁRBOL DE SINTAXIS ABSTRACTA PARA L-0

TEMA 2: PARSERS Y CONSTRUCCIÓN DEL ÁRBOL DE SINTAXIS ABSTRACTA PARA L-0 TEMA 2: PARSERS Y CONSTRUCCIÓN DEL ÁRBOL DE SINTAXIS ABSTRACTA PARA L-0 En este tema se divide en tres secciones: (1) la definición el analizador léxico de L-0, (2) el conjunto de reglas sintácticas de

Más detalles

Tema 2: Análisis léxico

Tema 2: Análisis léxico Tema 2: Análisis léxico Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 2: Análisis léxico 1 / 21 Fundamentos del análisis

Más detalles

Tema 2.- Objetos y mensajes

Tema 2.- Objetos y mensajes Tema 2.- Objetos y mensajes 1. Objetos y mensajes: mecanismo de envío de mensajes...2 2. SMALLTALK: EXPRESIONES...3 2.1. LITERALES: designan objetos constantes...3 2.2. NOMBRES DE VARIABLES: identifican

Más detalles

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente. HERENCIA (2ª parte) Lenguajes de Programación - Orientación a Objetos: Herencia 2ª parte 1 Object En Java todas las clases derivan de otra, aunque no se diga explícitamente. Object: Es el nombre de la

Más detalles

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Práctica 2 Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Más detalles

Bloque II. Elementos del lenguaje de programación Java

Bloque II. Elementos del lenguaje de programación Java Bloque II. Elementos del lenguaje de programación Java 1.Introducción a los lenguajes de programación 2. Estructura de un programa 3. Datos y expresiones simples 4. Instrucciones de control 5. Entrada/salida

Más detalles

Arreglos Unidimensionales En este tipo de arreglo se hace uso de un índice solamente para hacer referencia a una posición particular del arreglo.

Arreglos Unidimensionales En este tipo de arreglo se hace uso de un índice solamente para hacer referencia a una posición particular del arreglo. Arreglos (Arrays) Definición: Un arreglo es un objeto contenedor que consiste de una cantidad fija de posiciones o celdas para almacenar valores del mismo tipo en ellas. Cada posición o celda del arreglo

Más detalles

Tema 2. El lenguaje JAVA

Tema 2. El lenguaje JAVA Tema 2. El lenguaje JAVA Nomenclatura habitual Variables Tipos de variables Tipos primitivos Referencias Arrays Operadores Operadores de Java Precedencia de operadores Sentencias de control Sentencias

Más detalles

Unidad II Tema 3: Tratamiento de arreglos y cadenas en Java

Unidad II Tema 3: Tratamiento de arreglos y cadenas en Java Unidad II Tema 3: Tratamiento de arreglos y cadenas en Java Profesor: Jorge Escalona / Tobías Bolívar Email: escaljorge@gmail.com / tobiasbolivar@gmail.com Web: http://estructuradatos.tripod.com 1 Qué

Más detalles

Parte I: Programación en un lenguaje orientado a objetos

Parte I: Programación en un lenguaje orientado a objetos Parte I: Programación en un lenguaje orientado a objetos 1. Introducción a los lenguajes de programación 2. Datos y expresiones 3. Estructuras algorítmicas 4. Datos compuestos 5. Modularidad 6. Tratamiento

Más detalles

Bloque II. Elementos del lenguaje de programación Java

Bloque II. Elementos del lenguaje de programación Java Bloque II. Elementos del lenguaje de programación Java 1.Introducción a los lenguajes de programación 2. Estructura de un programa 3. Datos y expresiones simples 4. Instrucciones de control 5. Entrada/salida

Más detalles

JAVA 1. Introducción

JAVA 1. Introducción Diseño de Interfaces de Usuario JAVA. Introducción. Características Portabilidad Interpretado (bytecodes) Uso de Máquina Virtual Java (JVM) Orientado a Objetos Jerarquía de clases Extensible (packages)

Más detalles

PROGRAMACIÓN GENÉRICA

PROGRAMACIÓN GENÉRICA PROGRAMACIÓN GENÉRICA Lenguajes de Programación - Orientación a Objetos: Progr. Genérica 1 Programación genérica Objetivo: escribir algoritmos genéricos, independientes de las clases concretas de los datos

Más detalles

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples Desarrollo de aplicaciones en Java Generación de código fuente Compilación Ejecución Elementos de aplicaciones simples EII147-01-02 Introducción a las tecnologías de información Escuela de Ingeniería Industrial

Más detalles

1. (1 punto) Dado el siguiente fragmento de programa:

1. (1 punto) Dado el siguiente fragmento de programa: PROGRAMACIÓN I 7-junio-2004 1. (1 punto) Da el siguiente fragmento de programa: for (int i = 1; i = 0; j = j - 1) System.out.println (i + + j); a. Cuántas veces se

Más detalles

Java para programadores

Java para programadores Java para programadores Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) montenegro@fdi.ucm.es Contenidos Variables. Tipos

Más detalles

Práctica 5. Fecha límite de entrega: viernes, 14 de diciembre

Práctica 5. Fecha límite de entrega: viernes, 14 de diciembre Algoritmos http://www.lfcia.org/alg/ 2007-2008 Ingeniería Informática Ingeniería Técnica de Informática de Gestión Práctica 5 Fecha límite de entrega: viernes, 14 de diciembre Implementación de un Diccionario

Más detalles

Tema 2: Análisis léxico

Tema 2: Análisis léxico Tema 2: Análisis léxico Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 2: Análisis léxico 1 / 22 Fundamentos del análisis

Más detalles

Sintaxis básica, variables y 7pos

Sintaxis básica, variables y 7pos Contenidos Sintaxis básica, variables y 7pos Curso de Programación en Java! Sintaxis básica! Variables y 7pos! Entrada/Salida básica! Operadores y expresiones Jesús Montes Sánchez jmontes@fi.upm.es Marzo

Más detalles

PARTE TEÓRICA - TEST [2,5 PUNTOS]:

PARTE TEÓRICA - TEST [2,5 PUNTOS]: UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA 71901072 PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERÍA INFORMÁTICA / TECNOLOGÍAS DE LA INFORMACIÓN)

Más detalles

Curso de Java Introducción a la Programación II

Curso de Java Introducción a la Programación II Curso de Java Introducción a la Programación II Jaime Fernández Martín Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Tipos Java 2 Decalaración de variables 3 Operadores aritméticos Índice

Más detalles

Introducción general al Lenguaje C (2010/2011)

Introducción general al Lenguaje C (2010/2011) Luis Valencia Cabrera lvalencia@us.es (http://www.cs.us.es/~lvalencia) Ciencias de la Computacion e IA (http://www.cs.us.es/) Introducción general al Lenguaje C (2010/2011) Universidad de Sevilla Índice

Más detalles

5. Sentencias selectivas o condicionales

5. Sentencias selectivas o condicionales 60 A. García-Beltrán y J.M. Arranz 5. Sentencias selectivas o condicionales Objetivos: a) Describir el funcionamiento de las sentencias selectivas o condicionales (if-else y switch) b) Interpretar el resultado

Más detalles

PROCESADORES DEL LENGUAJES Septiembre 2014

PROCESADORES DEL LENGUAJES Septiembre 2014 PROCESADORES DEL LENGUAJES Septiembre 2014 ANÁLISIS SEMÀNTICO Y GENERACIÓN DE CÓDIGO Dado el siguiente parser ANTLR, class Anasint extends Parser buildast=true tokens{ ONTOLOGY ontologia : (declaracion)*

Más detalles

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso.

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso. Elementos básicos de programación en Java Objetivos del tema Conocer la estructura básica de un programa Java. Comprender los conceptos de tipo, valor y variable. Comprender las diferencias entre tipos

Más detalles

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs. Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1

Más detalles

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 1

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 1 PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 1 ANTLR es una herramienta que integra la generación de analizadores léxicos, sintácticos, árboles de sintaxis abstracta y evaluadores de atributos.

Más detalles

Procesamiento de Lenguajes (PL) Curso 2014/2015. Práctica 1: analizador descendente recursivo

Procesamiento de Lenguajes (PL) Curso 2014/2015. Práctica 1: analizador descendente recursivo Procesamiento de Lenguajes (PL) Curso 2014/2015 Práctica 1: analizador descendente recursivo Fecha y método de entrega La práctica debe realizarse de forma individual, como las demás prácticas de la asignatura,

Más detalles

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Tema 7.- Fundamentos de la Programación Orientada a Objetos Tema 7.- Fundamentos de la Programación Orientada a Objetos 7 de enero de 2014 Objetivos Saber definir clases propias. Saber crear objetos de una clase determinada e interactuar con ellos (Problema 1).

Más detalles

Universidad de Managua

Universidad de Managua Universidad de Managua Introducción a la Programación Tema 7 Introducción a la programación en lenguaje C# Objetivos - Describir la estructura básica de un programa en Lenguaje C# - Explicar las estructuras

Más detalles

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE 1 Estructura de Datos 1. Logica de Programación 2. Uso de Algoritmos usando Lenguaje Java 3. Ingreso de datos 4. Sentencias de Control 1.

Más detalles

Tema 5: Traducción dirigida por la sintaxis

Tema 5: Traducción dirigida por la sintaxis Tema 5: Traducción dirigida por la sintaxis Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez Elementos de lenguaje: Identificadores Tipos de datos 2 Tipos de datos primitivos 3 Tipos de datos referenciados Clases Interfaces Arrays

Más detalles

Introducción al lenguaje C

Introducción al lenguaje C Introducción al lenguaje C Programación 2 Profesorado de Informática CeRP del Suroeste, Colonia, Uruguay 15 de marzo de 2016 Programación 2 Introducción al lenguaje C 15 de marzo de 2016 1 / 34 Objetivos

Más detalles

Sintaxis básica, variables y 7pos

Sintaxis básica, variables y 7pos Contenidos Sintaxis básica, variables y 7pos Curso de Programación en Java! Sintaxis básica! Variables y 7pos! Entrada/Salida básica! Operadores y expresiones Jesús Montes Sánchez jmontes@fi.upm.es Estructura

Más detalles

Unidad 3 Programación Orientada a Objetos. Programación JAVA. Cuestiones I:

Unidad 3 Programación Orientada a Objetos. Programación JAVA. Cuestiones I: WEB: http://dis.um.es/~lopezquesada Pag. 1 Unidad 3 Programación Orientada a Objetos. Programación JAVA. Cuestiones I: Alumno: 1. Corregir los errores del siguiente código JAVA. (0.5p): // Obtener el menor

Más detalles

Java ENTRADA ESTÁNDAR

Java ENTRADA ESTÁNDAR Java ENTRADA ESTÁNDAR Tipos de método public (+, ): Indica que el método será visible tanto dentro como fuera de la clase, es decir, es accesible desde todos lados. private (-, ): Indica que el método

Más detalles

Examen escrito de Programación 1

Examen escrito de Programación 1 Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 31 de agosto de 2012 Disponer sobre la mesa en lugar visible un documento de identificación

Más detalles

Clases abstractas e interfaces en Java

Clases abstractas e interfaces en Java Clases abstractas e interfaces en Java Clases abstractas public abstract class Figura { private String _nombre; public Figura (string nombre) { _nombre = nombre; final public boolean mayor_que (Figura

Más detalles

7. Otras sentencias Sentencia break. 84 A. García-Beltrán y J.M. Arranz

7. Otras sentencias Sentencia break. 84 A. García-Beltrán y J.M. Arranz 84 A. García-Beltrán y J.M. Arranz 7. Otras sentencias Objetivos: a) Describir el funcionamiento de las otras sentencias de control (break, continue y try-catch) b) Interpretar el resultado de una secuencia

Más detalles

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

1. Cuántas sentencias hay en la secuencia principal del siguiente programa? 1. Cuántas sentencias hay en la secuencia principal del siguiente programa? public class PruebaSwitch { System.out.print ("Opcion: "); case 3: System.out.println ("miércoles "); A. 1. B. 4. C. Más de 10.

Más detalles

Tema 5: Traducción dirigida por la sintaxis

Tema 5: Traducción dirigida por la sintaxis Tema 5: Traducción dirigida por la sintaxis Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis

Más detalles

1. (1 punto) Dado el siguiente fragmento en Java:

1. (1 punto) Dado el siguiente fragmento en Java: PROGRAMACIÓN I 9-septiembre-2004 1. (1 punto) Dado el siguiente fragmento en Java: class Pares public static void main (String [] argumentos) String numero = argumentos[0]; Completar el programa con las

Más detalles

4. Operadores Operador asignación

4. Operadores Operador asignación Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre

Más detalles

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion UNIDAD IV Analisis Sintactico 4.1 Introduccion Sintaxis significa estructura del orden de las palabras en una frase. La tarea del analisis sintactico es revisar si los símbolos aparecen en el orden correcto

Más detalles

Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy. Febrero 2009

Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy. Febrero 2009 Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy Febrero 2009 Índice Elementos básicos Ejecución de un programa Estructuras de control Ciclos Ejercicios 2 Elementos Básicos

Más detalles

Identidad, igualdad y equivalencia

Identidad, igualdad y equivalencia Identidad, igualdad y equivalencia Introducción a la Programación Orientada a objetos 2018 Clases como tipos Cuando el analista o el diseñador de un sistema orientado a objetos especifica una clase, establece

Más detalles

Examen de prácticas de Programación 1

Examen de prácticas de Programación 1 Examen de prácticas de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 3 de septiembre de 2014 Tiempo para realizar el trabajo de programación propuesto:

Más detalles

Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN

Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN EJERCICIO 1 (1.5 puntos) Diseñe un conjunto de casos de prueba adecuado para comprobar el funcionamiento de un método encargado de calcular la duración de una llamada telefónica. Entradas Hora de inicio

Más detalles

Tema: Análisis Semántico

Tema: Análisis Semántico Compiladores. Guía 7 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Semántico Contenido En esta guía se desarrollará una tabla de símbolos y se asociará al analizador

Más detalles

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez Sintaxis de Java Sintaxis Define las reglas que determinar el uso de palabras clave, operadores y variables para construir y evaluar expresiones.

Más detalles

Repaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)

Repaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE) Repaso Lenguaje C OBJETOS Variables Constantes Variable: objeto del ambiente cuyo contenido puede cambiar. Constante: objeto cuyo contenido no puede cambiar. Variables: - un nombre que la identifica. Deben

Más detalles