Semántica Denotacional

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Semántica Denotacional"

Transcripción

1 Semántica Denotacional Idea: El significado de un programa es la función denotada por el programa Componentes del metalenguaje para la definición semántica denotacional de un L.P.: Dominios sintácticos sintaxis abstracta del L.S. Dominios semánticos significado de constructores Funciones semánticas relación entre los dominios F : Sin Se sintácticos y semánticos Las funciones semánticas se definen mediante ecuaciones semánticas Dominios Un dominio es un conjunto (de valores) que incluye además dos valores especiales: (indefinido) y (error) Representación por enumeración: T = {true, false}º = {true, false,, } Operaciones sobre dominios Dominio producto: Dominio suma: P = D1 D2... Dn p = <d1,d2,...,dn> p i = di S = D1 + D Dn (i-ésima componente) di Di (di in S) S (inyección) s S (s Di) Di (proyección) FLP 2009/10 - Marisa Navarro 50 FLP 2009/10 - Marisa Navarro 51 Dominio función: F = D1 D2 λp.e (lambda-expresión) Prioridad operaciones:, +, D1 D2 D3 + D4 D5 (D1 D2) (D3 + (D4 D5)) Asociatividad a derechas de D1 D2 D3 D1 (D2 D3) Dominio lista: D* = {nil} + D + D 2 + D hd: D* D (cabeza) hd(nil) = tl: D* D* (resto) tl(nil) = append: D* D D* append(l,d) = l^<d> prefix: D D* D* prefix(d,l) = <d>^l SINTAXIS ABSTRACTA del Lenguaje Sujeto Se representa por medio de dominios sintácticos Ejs: Ψ : Prog Σ : Stmt Κ : Comp metavariable (letra griega mayúscula) dom.sintáctico (3 o más letras) Las definiciones de los dominios sintácticos vienen dadas por reglas de producción abstractas Ej: Sentencia while, definiciones equivalentes: Σ : Comp Stmt Σ = Κ Σ Σ ::= while Κ do Σ end FLP 2009/10 - Marisa Navarro 52 FLP 2009/10 - Marisa Navarro 53

2 SIGNIFICADO del Lenguaje Sujeto Se representa el significado de los constructores mediante dominios semánticos Ejs: N = {..., -1, 0, 1,...}º dominio de los números enteros S = Var N Cf = S Fi Fi metavariable (letra griega minúscula) ν : N = {..., -1, 0, 1,...}º dominio de los estados (de memoria) dominio de las configuraciones dom.semántico (1 ó 2 letras) σ : S γ : Cf FUNCIONES SEMANTICAS Son elementos de algún dominio función de la forma Sin Se (y se representan con una letra mayúscula) Ej: S : Stmt (Cf Cf ) indica que el significado de una sentencia es una función de cambio de configuración La definición de una función semántica se hace por medio de ecuaciones semánticas Ej : S [ Ξ := Ε ] = expresión de tipo Cf Cf func.sem. argumento (en sint.abstracta) < Ξ,Ε> o también S [ Ξ := Ε ] (γ) = expresión de tipo Cf FLP 2009/10 - Marisa Navarro 54 FLP 2009/10 - Marisa Navarro 55 Otras notaciones: Semántica Denotacional de Pam (tabla 4.3) f [a / b] indica la función f1 definida: f1 (b) = a f1 (x) = f (x), Si f : D D entonces f n para x b indica f... f (composición n veces) En las ecuaciones semánticas, se usan expresiones condicionales de la forma: ( c e1, e2 ) para indicar: si c es cierto entonces e1 sino e2 Dominios sintácticos Ψ : Prog Σ : Stmt Ξ : Var Λ : Vars Ε : Exp Κ : Comp Ρ : Rel Θ : Opr Ν : Num : Dig programas sentencias variables listas de 1 ó más variables expresiones comparaciones relaciones operadores constantes enteras dígitos decimales FLP 2009/10 - Marisa Navarro 56 FLP 2009/10 - Marisa Navarro 57

3 Reglas de producción abstractas (ver tabla 4.3) Se ha suprimido la serie de sentencias, ahora se tiene permitiendo Ψ ::= Σ Σ ::= Σ 1 ; Σ 2... Similarmente, para las listas de variables: Λ ::= Ξ Λ 1, Λ 2 No hay definición para Ξ porque la estructura interna de las variables no es relevante semánticamente. Dominios semánticos Hay dos dominios primitivos para los números enteros ν : N = {..., -1, 0, 1,...}º los valores de verdad τ : T = {true, false}º y tres dominios definidos para los estados (de memoria) σ : S = Var N los ficheros φ : Fi = N* las configuraciones γ : Cf = S Fi Fi Dada una configuración γ = <σ, φ 1, φ 2 > recordar que γ 1 = σ γ 2 = φ 1 γ 3= φ 2 FLP 2009/10 - Marisa Navarro 58 FLP 2009/10 - Marisa Navarro 59 Funciones semánticas y ecuaciones semánticas (1) M : Prog (Fi Fi ) El significado de un programa M [Ψ ] es alguna función que aplica ficheros (de entrada) en ficheros (de salida) La definición de M [Ψ ] viene dada por la ecuación semántica M [Ψ ] ( φ i ) = ( S [Ψ] (γ i ) ) 3 γ i = < λξ., φ i, nil > es la configuración inicial respecto al fichero de entrada φ i, con memoria (inicial) λξ. y fichero de salida nil Ejemplo: El significado del programa es la función read x,y ; write y M [read x,y ; write y] : Fi Fi definida M [read x,y ; write y] φ i = ( S [read x,y ; write y] (< λξ., φ i, nil > ) ) 3 Si φ i = < 2,7,1> M [read x,y ; write y] φ i = <7> y en general : M [read x,y ; write y] : Fi Fi φ i <hd(tl(φ i ))> FLP 2009/10 - Marisa Navarro 60 FLP 2009/10 - Marisa Navarro 61

4 (2) S : Stmt (Cf Cf ) El significado de una sentencia S [Σ] es una función de cambio de configuración La definición de S [Σ] viene dada por un conjunto de ecuaciones semánticas (una por cada clase distinta de Σ): Secuencia de sentencias: S [ Σ 1 ; Σ 2 ] = S [Σ 2 ] S [Σ 1 ] Ejemplo: S [read x,y ; write y] = S [write y] S [read x,y] Sentencias de lectura y escritura de listas de variables: S [ read Λ 1, Λ 2 ] = S [read Λ 1 ; read Λ 2 ] S [ write Λ 1, Λ 2 ] = S [write Λ 1 ; write Λ 2 ] Ejemplo: S [read x,y] = S [read x ; read y] = S [read y] S [read x] Sentencia de lectura de una variable: S [ read Ξ ] <σ, φ 1, φ 2 > = Ejemplo: error si φ 1 = nil <σ[hd(φ 1 ) / Ξ], tl(φ 1 ), φ 2 > e.o.c S [read x] (<σ 0, < 2,7,1>, nil>) = <σ 0 [ 2 / x], <7,1>, nil> FLP 2009/10 - Marisa Navarro 62 FLP 2009/10 - Marisa Navarro 63 Sentencia de escritura de una variable: S [ write Ξ ] <σ, φ 1, φ 2 > = Ejemplo: Dados error si σ [ Ξ ] = <σ, φ 1, append(φ 2, σ [ Ξ ] )> e.o.c σ 0 = λξ. σ 1 = σ 0 [ 2 / x] σ 2 = σ 1 [7 / y] = ( σ 0 [ 2 / x] ) [7 / y] S [write y] (<σ 2, <1>, nil>) = <σ 2, <1>, <7>> Sentencia de asignación: S [ Ξ := Ε ] <σ, φ 1, φ 2 > = <σ[val / Ξ ], φ 1, φ 2 > con val = E [Ε] (σ) Bucle definido: S [to Ε do Σ end] <σ, φ 1, φ 2 > = con ν = E [Ε] (σ) <σ, φ 1, φ 2 > si ν <1 ( S [Σ] ) ν <σ, φ 1, φ 2 > e.o.c Ambas usan la función semántica E : Exp (S N) E [Ε] (σ) denota el valor (entero) de Ε en el estado σ FLP 2009/10 - Marisa Navarro 64 FLP 2009/10 - Marisa Navarro 65

5 En las sentencias condicionales y el bucle indefinido se usa la función semántica C : Comp (S T) C [Κ] (σ) denota el valor (de verdad) de Κ en el estado σ Sentencias condicionales: S [if Κ then Σ fi] γ = ( C [Κ] (γ 1) S [Σ] γ, γ ) S [if Κ then Σ 1 else Σ 2 fi] γ = ( C [Κ] (γ 1) S [Σ 1 ] γ, S [Σ 2 ] γ ) Bucle indefinido: S [while Κ do Σ end] γ = ( C [Κ] (γ 1) (S [while Κ do Σ end ] S [Σ] ) γ, γ ) (3) C : Comp (S T) El significado de una comparación C [Κ] es una función que aplica estados en valores de verdad Como una comparación es de la forma Κ ::= Ε 1 Ρ Ε 2, C [Κ] se define en términos de E dependiendo de Ρ C [Ε 1 = Ε 2 ] σ = ( E [Ε 1 ] σ = E [Ε 2 ] σ true, false ) C [Ε 1 >= Ε 2 ] σ = ( E [Ε 1 ] σ E [Ε 2 ] σ true, false ) C [Ε 1 <> Ε 2 ] σ = ( E [Ε 1 ] σ E [Ε 2 ] σ true, false ) sintaxis (abstracta) operación en N = {..., -1, 0, 1,...}º FLP 2009/10 - Marisa Navarro 66 FLP 2009/10 - Marisa Navarro 67 (4) E : Exp (S N) El significado de una expresión E [Ε] es una función que aplica estados en valores enteros Como una expresión es de la forma Ε ::= Ε 1 Θ Ε 2 Ξ Ν E [Ε] se define para cada caso de Ε 1 Θ Ε 2 dependiendo de Θ, para el caso Ξ y para los casos de constantes enteras Ν Destacan dos posibles errores semánticos: E [Ε 1 / Ε 2 ] σ = ( E [Ε 2 ] σ = 0 error, E [Ε 1 ] σ E [Ε 2 ] σ ) E [Ξ ] σ = ( σ [Ξ] = error, σ [Ξ] ) Ejercicio Dar el significado (denotacional) del siguiente programa Pam: Ψ = read k; while k>0 do k:= k-1 end; write k Solución: Debe darse qué función concreta denota este programa M [Ψ ] : Fi Fi Φ?? FLP 2009/10 - Marisa Navarro 68 FLP 2009/10 - Marisa Navarro 69

6 Semántica Denotacional de Eva (tabla 4.4) Reglas de producción abstractas (ver tabla 4.4) Dominios sintácticos Ψ : Prog Β : Blo : Dec Ι : Ide Τ : Type Σ : Stmt Ε : Exp Ξ : Str Λ : Let programas bloques declaraciones identificadores tipos de datos sentencias expresiones strings literales letras Se han suprimido como dominios sintácticos explícitos la secuencia de declaraciones, permitiendo ::= y la secuencia de sentencias, permitiendo: Σ ::= Σ 1 ; Σ 2... Las listas de parámetros (resp. de argumentos) se especifican con una herramienta notacional elíptica : proc Ι (Τ 1 Ι 1,..., Τ n Ι n ) = Σ call Ι (Ε 1,..., Ε n ) (n 1) (n 1) FLP 2009/10 - Marisa Navarro 70 FLP 2009/10 - Marisa Navarro 71 Dominios semánticos Dominios semánticos necesarios para Eva (1) Debido a la existencia de bloques (definiciones locales) debemos distinguir entre entorno y (estado de) memoria: Ide(ntificador) ρ L(ugar) σ V(alor) Ι ρ [Ι] σ( ρ [Ι] ) ρ [Ι] = lugar de memoria asociado a Ι en el entorno ρ σ(α) = valor contenido en el lugar α del estado de memoria σ Se necesita dar dos pasos (mediante ρ y σ) para alcanzar el valor asociado a un identificador Ι de tipo char ó string. Los estados (de memoria) σ : S = L V los lugares (de memoria) α : L = {1,2,3,...}º los valores (de memoria) los valores carácter los valores string ζ : Z = H* β : V = H + Z + {unallocated}º η : H = {a,b,..., z, space}º unallocated es un valor especial para indicar un lugar sin asignar: Si para todo entorno ρ y todo identificador Ι se tiene que ρ [Ι] α entonces σ (α) = unallocated FLP 2009/10 - Marisa Navarro 72 FLP 2009/10 - Marisa Navarro 73

7 Debido a la existencia de procedimientos, debemos asociar a un identificador Ι de tipo proc un valor de procedimiento π: P Estos valores no serán almacenables (en memoria) sino entidades asociadas a los identificadores por medio del entorno (como ocurre con los lugares). Ide(ntificador) ρ I P(rocedimiento) ρ [Ι] Esto implica definir el dominio U de los entornos así: U = Ide D (en lugar de U = Ide L) siendo D = L + P el dominio de los valores denotables Dominios semánticos necesarios para Eva (2) Los entornos ρ : U = Ide D los valores denotables δ : D = L + P las configuraciones γ : Cf = S Z Z y los valores de procedimiento π : P = L* (Cf Cf ) lista de lugares que se asociarán cambio de configuración a los parámetros formales que producirá el cuerpo del (en la llamada al procedimiento) procedimiento FLP 2009/10 - Marisa Navarro 74 FLP 2009/10 - Marisa Navarro 75 Funciones semánticas y ecuaciones semánticas (1) M : Prog ( Z Z ) El significado de un programa M [Ψ ] es alguna función que aplica ficheros (de entrada) en ficheros (de salida) La definición de M [Ψ ] viene dada por la ecuación semántica M [Ψ ] (ζ i ) = ( S [Ψ] (ρ ini ) (γ i ) ) 3 γ i = < λα. unallocated, ζ i, nil > es la configuración inicial respecto al fichero de entrada ζ i y siendo el entorno inicial ρ ini = λι. El significado de una sentencia S [Σ] y el de una expresión E [Ε] son como en Pam, salvo que en Eva se definen relativas a un entorno U (2) S : Stmt ( U ( Cf Cf )) (3) E : Exp ( U ( S V )) S [Σ] ρ : Cf Cf significado de Σ en el entorno ρ S [Σ] ρ γ = configuración obtenida al ejecutar Σ en el entorno ρ y sobre la configuración γ E [Ε] ρ σ = valor obtenido al evaluar Ε en el entorno ρ y sobre la memoria σ FLP 2009/10 - Marisa Navarro 76 FLP 2009/10 - Marisa Navarro 77

8 La definición de S [Σ] vendrá dada por un conjunto de ecuaciones semánticas (una por cada clase distinta de Σ) El significado de un bloque ( begin Σ end ) es el significado del cuerpo del bloque ( Σ ), pero relativo a un entorno y a una memoria modificados por las declaraciones ( ) del bloque. S [begin Σ end] ρ <σ, ζ 1, ζ 2 > = S [ Σ ] ρ <σ, ζ 1, ζ 2 > ρ y σ se obtienen al modificar ρ y σ según <ρ, σ > = D [ ] ρ <ρ, σ>? Necesidad de la función semántica D para el significado de Supongamos la función semántica D de la forma: (4*) D : Dec ( U S U S ) El significado de una declaración D [ ] sería una función de modificación de pares (entorno, memoria) Las ecuaciones semánticas correspondientes serían: D [char Ι] <ρ,σ> = < ρ [α in D / Ι ], σ [ / α] > α es un lugar nuevo : σ (α) = unallocated D [string Ι] <ρ,σ> = < ρ [α in D / Ι ], σ [nil / α] > α es un lugar nuevo : σ (α) = unallocated FLP 2009/10 - Marisa Navarro 78 FLP 2009/10 - Marisa Navarro 79 D [ 1 2 ] = D [ 2 ] D [ 1 ] es decir: D [ 1 2 ] <ρ, σ> = D [ 2 ] ( D [ 1 ] <ρ, σ> ) D [proc Ι = Σ] <ρ, σ> = < ρ [π in D / Ι ], σ > al procedimiento (sin parámetros) de nombre Ι se le asigna en el nuevo entorno el valor π : L* (Cf Cf ) tal que π (nil) denota el cambio de configuración de Σ (cuerpo de Ι) relativo a qué entorno? a) π (nil) = S [Σ] ρ entorno antes de I b) π (nil) = S [Σ] ρ [π in D / Ι] entorno con I Problema: Ni en a) π (nil) = S [Σ] ρ ni en b) π (nil) = S [Σ] ρ[π in D / Ι] se tiene en cuenta que en el cuerpo Σ se puede hacer referencia a variables declaradas tras proc Ι = Σ (en la misma ) Necesidad de cambiar la función semántica D para el significado de (4) D : Dec U ( U S U S ) El significado de una declaración D [ ] es una función de modificación de pares (entorno, memoria) relativa al entorno correspondiente a la secuencia entera de declaraciones que contiene a FLP 2009/10 - Marisa Navarro 80 FLP 2009/10 - Marisa Navarro 81

9 Por eso, en el significado de los bloques se necesita poner: Por último, para los procedimientos con parámetros: S [begin Σ end] ρ <σ, ζ 1, ζ 2 > = S [ Σ ] ρ <σ, ζ 1, ζ 2 > < ρ, σ > = D [ ] ρ <ρ, σ> y las ecuaciones semánticas para D son ahora las siguientes: D [char Ι] ρ <ρ,σ> = < ρ [α in D / Ι ], σ [ / α] > D [string Ι] ρ <ρ,σ> = < ρ [α in D / Ι ], σ [nil / α] > en ambos casos con σ (α) = unallocated D [ 1 2 ] ρ = D [ 2 ] ρ D [ 1 ] ρ D [proc Ι = Σ] ρ <ρ,σ> = < ρ [π in D / Ι ], σ > siendo π (nil) = S [Σ] ρ FLP 2009/10 - Marisa Navarro 82 D [proc Ι (Τ 1 Ι 1,...,Τ n Ι n ) = Σ] ρ <ρ,σ> = < ρ [π in D / Ι ], σ > siendo π (<α 1,..., α n >) = S [Σ] ( ρ [α 1 in D / Ι 1,..., α n in D / Ι n ] ) Esto es, el valor π toma una lista de lugares (que se conocerán en el momento de cada llamada) y produce la función π (<α 1,...,α n >) : Cf Cf denotada por el cuerpo del procedimiento relativo al entorno: ρ [α 1 in D / Ι 1,..., α n in D / Ι n ] que es el entorno ρ actualizado con la asignación de dichos lugares a los parámetros formales. FLP 2009/10 - Marisa Navarro 83 Ejemplo begin end Consideramos el programa Ψ siguiente: proc p (char x) = Σ 3 1 string a begin char a 2 char b end Σ 4 Σ 5 Σ 1 call p (b) Σ 2 Σ 6 FLP 2009/10 - Marisa Navarro 84 Ejemplo (cont) Sean ρ 0 = λι. y σ 0 = λα.unallocated S [Ψ] ρ 0 <σ 0, ζ 1, ζ 2 > = S [begin 1 Σ 1 end] ρ 0 <σ 0, ζ 1, ζ 2 > = S [Σ 1 ] ρ 1 <σ 1, ζ 1, ζ 2 > <ρ 1, σ 1 > = D [ 1 ] ρ 1 <ρ 0, σ 0 > = D [string a] ρ 1 ( D [proc p (char x) = Σ 3 ] ρ 1 <ρ 0, σ 0 > ) = D [string a] ρ 1 <ρ 0 [π/p], σ 0 > = siendo π (<α>) = S [Σ 3 ] (ρ 1 [α /x]) = <ρ 0 [π/p, 1/a], σ 0 [nil /1] > ρ 1 σ 1 FLP 2009/10 - Marisa Navarro 85

10 Ejemplo (cont) S [Ψ] ρ 0 <σ 0, ζ 1, ζ 2 > =... = S [Σ 1 ] ρ 1 <σ 1, ζ 1, ζ 2 > = = S [Σ 1 ] ( ρ 0 [π/p, 1/a] ) <σ 0 [nil /1], ζ 1, ζ 2 > = siendo π (<α>) = S [Σ 3 ] (ρ 1 [α /x] ) = S [Σ 3 ] (ρ 0 [π/p, 1/a, α /x]) = S [begin 2 Σ 2 end Σ 4 ] (ρ 0 [π/p, 1/a]) <σ 0 [nil /1], ζ 1, ζ 2 > = = S [Σ 4 ] (ρ 0 [π/p, 1/a]) ( S [begin 2 Σ 2 end] (ρ 0 [π/p, 1/a]) <σ 0 [nil /1], ζ 1, ζ 2 > ) S [Σ 1 Σ 2 ] ρ = S [Σ 2 ] ρ S [Σ 1 ] ρ secuencia de sentencias FLP 2009/10 - Marisa Navarro 86 Ejemplo (cont) S [Ψ] ρ 0 <σ 0, ζ 1, ζ 2 > =... = = S [Σ 4 ] (ρ 0 [π/p, 1/a]) ( S [begin 2 Σ 2 end] (ρ 0 [π/p, 1/a]) <σ 0 [nil /1], ζ 1, ζ 2 > ) = ρ 1 σ 1 = S [Σ 4 ] (ρ 0 [π/p, 1/a]) ( S [Σ 2 ] ρ 2 < σ 2, ζ 1, ζ 2 > ) <ρ, σ 2 2 > = D [ 2 ] ρ 2 <ρ 1, σ 1 > = D [char a char b] ρ 2 <ρ 1, σ 1 > = D [char b] ρ 2 ( D [char a] ρ 2 <ρ 1, σ 1 > ) = D [char b] ρ 2 < ρ 0 [π/p, 2/a], σ 0 [nil /1, / 2] > = = <ρ 0 [π/p, 2/a, 3/b], σ 0 [nil /1, / 2, / 3] > ρ 2 σ 2 FLP 2009/10 - Marisa Navarro 87 Ejemplo (cont) Lo obtenido hasta ahora es: La ecuación semántica correspondiente a la llamada a un procedimiento con parámetros es: S [Ψ] ρ 0 <σ 0, ζ 1, ζ 2 > =... = = S [Σ 4 ] ρ 1 ( S [Σ 2 ] ρ 2 <σ 2, ζ 1, ζ 2 > ) ρ 1 = ρ 0 [π/p, 1/a] ρ 2 = ρ 0 [π/p, 2/a, 3/b] y σ 2 = σ 0 [nil /1, / 2, / 3] Nota: El significado de Σ 2 se define relativo al entorno ρ 2 debido a las declaraciones locales 2, mientras que el significado de Σ 4 se define relativo al entorno ρ 1 porque dichas declaraciones locales pierden su efecto al salir del bloque interno. S [call Ι (Ε 1,...,Ε n )] ρ <σ, ζ 1, ζ 2 > = (ρ [Ι] P) (<α 1,...,α n >) (<σ, ζ 1, ζ 2 >) π α i son lugares nuevos: σ (α i ) = unallocated (i=1...n) y distintos entre sí: α i α j (i j) y σ se obtiene al actualizar σ asignando a cada α i el valor del correspondiente argumento Ε i σ = σ[ E [Ε 1 ] ρ σ /α 1,..., E [Ε n ] ρ σ /α n ] FLP 2009/10 - Marisa Navarro 88 FLP 2009/10 - Marisa Navarro 89

11 Ejemplo (cont) S [Ψ] ρ 0 <σ 0, ζ 1, ζ 2 > = Siguiendo con el ejemplo: = S [Σ 4 ] ρ 1 ( S [Σ 5 call p (b) Σ 6 ] ρ 2 <σ 2, ζ 1, ζ 2 > ) = = S [Σ 4 ] ρ 1 ( S [Σ 6 ] ρ 2 ( S [call p (b)] ρ 2 ( S [Σ 5 ] ρ 2 <σ 2, ζ 1, ζ 2 > ) ) ) suponemos que da = S [Σ 4 ] ρ 1 ( S [Σ 6 ] ρ 2 ( S [call p (b)] ρ 2 <σ 3, ζ 3, ζ 4 > )) = S [Σ 4 ] ρ 1 ( S [Σ 6 ] ρ 2 (π (<4>) <σ 3 [E [b] ρ 2 σ 3 / 4], ζ 3, ζ 4 >)) suponemos nuevo y como π (<α>) = S [Σ 3 ] (ρ 0 [π/p, 1/a, α /x]) = S [Σ 4 ] ρ 1 ( S [Σ 6 ] ρ 2 ( S [Σ 3 ] (ρ 0 [π/p, 1/a 4/x]) <σ 3 [E [b] ρ 2 σ 3 / 4], ζ 3, ζ 4 > )) FLP 2009/10 - Marisa Navarro 90 La ecuación semántica correspondiente a la llamada a un procedimiento sin parámetros es: S [call Ι ] ρ <σ, ζ 1, ζ 2 > = (ρ [Ι] P) (nil) (<σ, ζ 1, ζ 2 >) Las demás ecuaciones semánticas para S son: S [input Ι ] ρ <σ, ζ 1, ζ 2 > = ( ζ 1 = nil error, < σ [hd(ζ 1 ) in V / (ρ [Ι] L)], tl(ζ 1 ), ζ 2 > ) S [output Ε] ρ <σ, ζ 1, ζ 2 > = <σ, ζ 1, append(ζ 2, E [E] ρ σ H)> S [eq Ε 1, Ε 2 : Σ] ρ γ = (E [Ε 1 ] ρ σ = E [Ε 2 ] ρ σ) S [Σ] ρ γ, γ ) (neq) ( ) σ = γ 1 S [cons Ε,Ι] ρ <σ, ζ 1, ζ 2 > = < σ[ prefix(e [E] ρ σ H, σ(ρ [Ι] L) Z) in V / (ρ [Ι] L)], ζ 1, ζ 2 > FLP 2009/10 - Marisa Navarro 91 Finalmente, la función semántica de las expresiones es (3) E : Exp ( U ( S V )) y sus ecuaciones son: E [Ι] ρ σ = ( σ(ρ [Ι] L) = error, σ (ρ [Ι] L) ) E [space] ρ σ = space in V (para el carácter blanco) E [ a ] ρ σ = a in V (para el resto de caracteres) E [ ] ρ σ = nil in V (para el string vacío) E [ Ξa ] ρ σ = append( E [ Ξ ] ρ σ Z, a ) in V E [head Ε] ρ σ = ( s nil hd(s), error ) in V E [tail Ε ] ρ σ = ( s nil tl(s), error ) in V ambas con s = E [Ε] ρ σ Z FLP 2009/10 - Marisa Navarro 92

Elementos léxicos del lenguaje de programación Java

Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices Operadores

Más detalles

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle: PL/SQL (Procedural Language/Structured Query Language) PL/SQL es el lenguaje de programación que proporciona Oracle para extender el SQL estándar con otro tipo de instrucciones y elementos propios de los

Más detalles

ANÁLISIS SEMÁNTICO. Especificación formal: Semántica Operacional, semántica denotacional, semántica Axiomática, Gramáticas con Atributos.

ANÁLISIS SEMÁNTICO. Especificación formal: Semántica Operacional, semántica denotacional, semántica Axiomática, Gramáticas con Atributos. ANÁLISIS SEMÁNTICO El análisis semántico dota de un significado coherente a lo que hemos hecho en el análisis sintáctico. El chequeo semántico se encarga de que los tipos que intervienen en las expresiones

Más detalles

TRADUCTORES, COMPILADORES E INTÉRPRETES. EJERCICIOS TEMA 5, 6, 7 y 8.

TRADUCTORES, COMPILADORES E INTÉRPRETES. EJERCICIOS TEMA 5, 6, 7 y 8. TRADUCTORES, COMPILADORES E INTÉRPRETES. EJERCICIOS TEMA 5, 6, 7 y 8. 1.) (HOLUB). Escribir un traductor que reconozca definiciones de C siguiendo el estilo antiguo, tal como: prueba(uno, dos, tres, cuatro,

Más detalles

Academia técnica de computación A.T.C.

Academia técnica de computación A.T.C. Academia técnica de computación A.T.C. Free Pascal (FPC) El Free Pascal es un compilador Pascal portable, libre y de código abierto, que representa una alternativa a los productos comerciales Turbo Pascal

Más detalles

CONCEPTOS BASICOS DEL LENGUAJE JAVA

CONCEPTOS BASICOS DEL LENGUAJE JAVA CONCEPTOS BASICOS DEL LENGUAJE JAVA NOMENCLATURA GENERAL En Java se distinguen las letras mayúsculas y minúsculas. Las reglas del lenguaje respecto a los nombres de variables son muy amplias y permiten

Más detalles

Programación en Pascal

Programación en Pascal Programación en Pascal Segunda parte de la asignatura. El profesor: Nombre:. Despacho: Edificio de la ETSII 2ª Planta. Correo electrónico: fdoperez@ull.es. Miércoles, Viernes: 3.30 a 5.30. Objetivos: Aprender

Más detalles

Objetivos. Contenidos. Revisar los principales conceptos de la lógica de primer orden

Objetivos. Contenidos. Revisar los principales conceptos de la lógica de primer orden Especificación TEMA 1 formal de problemas Objetivos Revisar los principales conceptos de la lógica de primer orden Entender el concepto de estado de cómputo y cómo se modela con predicados lógicos Familiarizarse

Más detalles

Ejemplos de conversión de reales a enteros

Ejemplos de conversión de reales a enteros Ejemplos de conversión de reales a enteros Con el siguiente programa se pueden apreciar las diferencias entre las cuatro funciones para convertir de reales a enteros: program convertir_real_a_entero print

Más detalles

Tipos de datos. Lección 1. Programación. Curso 2006-2007. J. A. Bañares, Pedro J. Álvarez, S. Velilla

Tipos de datos. Lección 1. Programación. Curso 2006-2007. J. A. Bañares, Pedro J. Álvarez, S. Velilla Lección 1. Programación. Curso 2006-2007 Tipos de datos J. A. Bañares, Pedro J. Álvarez, S. Velilla http://diis.unizar.es/ Departamento de Informática e Ingeniería de Sistemas 2 Tipos de datos, constantes

Más detalles

3 ESTRUCTURAS DE CONTROL REPETITIVAS. BUCLES

3 ESTRUCTURAS DE CONTROL REPETITIVAS. BUCLES 3 ESTRUCTURAS DE CONTROL REPETITIVAS. BUCLES 3.1 Estructuras de repetición Una estructura de repetición, también llamada lazo o bucle, hace posible la ejecución repetida de secciones específicas de código.

Más detalles

UTN FRR Ingeniería en Sistemas de Información Algoritmos y Estructuras de Datos Archivos Directos GUIA DE ESTUDIO: ARCHIVOS DIRECTOS

UTN FRR Ingeniería en Sistemas de Información Algoritmos y Estructuras de Datos Archivos Directos GUIA DE ESTUDIO: ARCHIVOS DIRECTOS GUIA DE ESTUDIO: ARCHIVOS DIRECTOS Introducción: Una característica común de los tipos de datos que hemos visto hasta ahora es que la información que cargamos se mantiene vigente solamente mientras está

Más detalles

Cómo nombrar variables ( 2&

Cómo nombrar variables ( 2& &'()*+,, *)-.&'*/0+!" #$ # http://www.escet.urjc.es/~aiiq/ Introducción a Visual Studio.NET Aprendiendo el IDE de Visual Basic.NET Elementos del lenguaje. Variables y estructuras de datos Introducción

Más detalles

PROGRAMACIÓ DIDÁCTICA: Secuanciación, Temporalización y Unidades Didácticas

PROGRAMACIÓ DIDÁCTICA: Secuanciación, Temporalización y Unidades Didácticas Departamento de Informática PROGRAMACIÓN DIDÁCTICA Curso 11-12 1 CONSEJERÍA DE EDUCACIÓN I.E.S. NERVIÓN Departamento de Informática CICLO FORMATIVO: TÉCNICO SUPERIOR EN DESARROLLO DE APLICACIONES MULTIPLATAFORMA.

Más detalles

Nociones Básicas de Sémantica: Semántica Denotacional

Nociones Básicas de Sémantica: Semántica Denotacional Nociones Básicas de Sémantica: Semántica Denotacional Análisis de Lenguajes de Programación Mauro Jaskelioff 21/08/2015 Acerca de la Semántica Operacional En la semántica operacional el significado de

Más detalles

Aprender a programar con Turbo Pascal. Turbo pascal

Aprender a programar con Turbo Pascal. Turbo pascal Aprender a programar con Turbo Pascal Realizar una aplicación que realice la suma de dos números. Program suma; crt; var numero1:integer; numero2:integer; suma:integer; begin clrscr; writeln ('Escriba

Más detalles

EJERCICIOS DE LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN (CUESTIONES DE EXAMEN) PROGRAMACIÓN FUNCIONAL

EJERCICIOS DE LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN (CUESTIONES DE EXAMEN) PROGRAMACIÓN FUNCIONAL EJERCICIOS DE LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN (CUESTIONES DE EXAMEN) PROGRAMACIÓN FUNCIONAL María Alpuente y María José Ramírez 1 LENGUAJES Y PARADIGMAS: INTRODUCCIÓN 1. Indica cuál de las siguientes

Más detalles

Tipos Abstractos de Datos

Tipos Abstractos de Datos Objetivos Repasar los conceptos de abstracción de datos y (TAD) Diferenciar adecuadamente los conceptos de especificación e implementación de TAD Presentar la especificación algebraica como método formal

Más detalles

U i n d id d a 3. El Element os á bá i s cos de un programa

U i n d id d a 3. El Element os á bá i s cos de un programa Programación Digital U id d 3 El t bá i Unidad 3. Elementos básicos de un programa 1. Concepto de Programa Es un conjunto de instrucciones (órdenes dadas a la computadora), que producirán la ejecución

Más detalles

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores Las variables se utilizan en programación para almacenar temporalmente

Más detalles

6. Estructuras básicas de control 1. Pseudocódigo

6. Estructuras básicas de control 1. Pseudocódigo 6. Estructuras básicas de control 1 Acciones Estructuras de control Secuencia Selección Pseudocódigo simple (si... entonces... ) doble (si... entonces... si no... ) múltiple (según el caso... ) Iteración

Más detalles

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B) APRENDERAPROGRAMAR.COM OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B) Sección: Cursos Categoría: Tutorial básico del programador web: PHP desde cero

Más detalles

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación. Descripción de la semántica de ALFA En esta descripción sólo se mencionarán los aspectos en los que el lenguaje de programación ALFA pueda diferir de otros lenguajes de programación de alto nivel. Se sobreentienden

Más detalles

Programación: QBASIC

Programación: QBASIC 1. QBASIC Programación: QBASIC Guía del alumno Qbasic es una versión moderna del lenguaje BASIC. Se trata de un lenguaje de alto nivel. En un lenguaje de alto nivel las instrucciones tienen un formato

Más detalles

Lenguajes y Compiladores

Lenguajes y Compiladores Información: http://www.cs.famaf.unc.edu.ar/wiki/ Profesores: Héctor Gramaglia, Miguel Pagano, Demetrio Vilela Régimen de regularidad y Promoción Se tomarán 2 parciales Promoción: obteniendo al menos 7

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

1 ELEMENTOS BASICOS DEL LENGUAJE

1 ELEMENTOS BASICOS DEL LENGUAJE 1 ELEMENTOS SICOS DEL LENGUJE Contenido: Variables su declaracion y asignacion Caracteres en java Secuencias de escape y comentarios Tipos de datos Operadores aritméticos, relacionales y lógicos Entrada

Más detalles

Objetivo de aprendizaje del tema

Objetivo de aprendizaje del tema Computación II Tema 3. Identificadores, palabras clave y tipos de datos Objetivo de aprendizaje del tema Al finalizar el tema serás capaz de: Distinguir i entre modificadores d válidos y no válidos. Enumerar

Más detalles

Compiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz

Compiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz Compiladores y Lenguajes de Programación Maria de Guadalupe Cota Ortiz Organizaciones que rigen las normas para estandarización de Lenguajes de Programación IEEE (Instituto de Ingenieros Eléctricos y Electrónicos)

Más detalles

Tema 5 Sentencias de control de flujo. Fundamentos de Informática

Tema 5 Sentencias de control de flujo. Fundamentos de Informática Tema 5 Fundamentos de Informática Sentencias de Control Tipos de sentencias de control: Comprobación lógica para bifurcar el flujo de un programa. Sentencias de control condicional o alternativo Comprobación

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

www.aprendoencasa.com Curso Introducción JAVA Pág.: 1

www.aprendoencasa.com Curso Introducción JAVA Pág.: 1 www.aprendoencasa.com Curso Introducción JAVA Pág.: 1 Introducción Java es un lenguaje basado en la programación orientada a objetos (POO), este tipo de programación va más allá del tipo de programación

Más detalles

FUNDAMENTOS DE INFORMÁTICA

FUNDAMENTOS DE INFORMÁTICA FUNDAMENTOS DE INFORMÁTICA Tema 4 Programación estructurada: Funciones y procedimientos Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo Fundamentos de Informática. Departamento

Más detalles

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ; TEMA 5. CONTROL DE FLUJO DEL PROGRAMA 5.1 Sentencias Una sentencia es una expresión seguida de un punto y coma. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ; El ; es obligatorio

Más detalles

Tema 2. El lenguaje de programación Java (Parte 1)

Tema 2. El lenguaje de programación Java (Parte 1) Programación en Java Tema 2. El lenguaje de programación Java (Parte 1) Luis Rodríguez Baena Facultad de Informática Elementos del lenguaje (I) El juego de caracteres. No utiliza ASCII, sino Unicode de

Más detalles

1 Estructura básica de un programa C++

1 Estructura básica de un programa C++ Elementos básicos de un lenguaje de alto nivel: C++ CONTENIDOS 1. Estructura básica de un programa C++. 2. Tipos de datos simples. 3. Constantes y variables en C++. Declaración. 4. Operadores y expresiones.

Más detalles

ACTIONSCRIPT (AS) Proyectos II. Audiovisuales. Dpto. Escultura. UPV. [sintaxis elemental]

ACTIONSCRIPT (AS) Proyectos II. Audiovisuales. Dpto. Escultura. UPV. [sintaxis elemental] ACTIONSCRIPT (AS) Proyectos II. Audiovisuales. Dpto. Escultura. UPV. [sintaxis elemental] Action script es el lenguaje de programación que lleva incorporado el software de creación multimedia Macromedia

Más detalles

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programación de sitios web Act 4: Lección Evaluativa 1

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programación de sitios web Act 4: Lección Evaluativa 1 Qué es PHP? PHP: HyperText Preprocessor. Es un lenguaje de tipo scripting, que actualmente está siendo utilizado como una de las mejores alternativas para desarrollar aplicaciones en la Web. Un lenguaje

Más detalles

Nota 2. Luis Sierra. Marzo del 2010

Nota 2. Luis Sierra. Marzo del 2010 Nota 2 Luis Sierra Marzo del 2010 Cada mecanismo de definición de conjuntos que hemos comentado sugiere mecanismos para definir funciones y probar propiedades. Recordemos brevemente qué son las funciones

Más detalles

Proyecto Unico Interpretador de SetCalc

Proyecto Unico Interpretador de SetCalc Universidad Simón Bolívar Dpto. de Computación y Tecnología de la Información CI3721 - Traductores e Interpretadores Abril-Julio 2008 Proyecto Unico Interpretador de SetCalc A continuación se describe

Más detalles

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C Directivas del procesador Main() { Declaraciones Definiciones proposiciones }

Más detalles

Estructura de datos (arreglos) Vectores y Matrices

Estructura de datos (arreglos) Vectores y Matrices Apunte del curso PROGRAMACIÓN (FI-UBA,, J. T. P. Ing. Z. CATALDI; A.T.P. Srta. A Pauluzzi, Sr. C Corradino, Sr. F Gómez Estructura de datos (arreglos) Hasta aquí se han visto distintos tipos de estructuras

Más detalles

Curso de Excel Avanzado

Curso de Excel Avanzado Curso de Excel Avanzado J. David Moreno TRABAJANDO CON RANGOS J. David Moreno 1 3 Para programar correctamente en VBA y trabajar con Excel es obligatorio aprender a trabajar con rangos (seleccionar, copiar,

Más detalles

Preliminares. Tipos de variables y Expresiones

Preliminares. Tipos de variables y Expresiones Preliminares. Tipos de variables y Expresiones Felipe Osorio Instituto de Estadística Pontificia Universidad Católica de Valparaíso Marzo 5, 2015 1 / 20 Preliminares Computadoras desarrollan tareas a un

Más detalles

Tutorial Básico de vbscript

Tutorial Básico de vbscript Tutorial Básico de vbscript Bueno, primero aclarar que este tutorial, pretende explicar de manera básica las distintas instrucciones aplicadas en visual basic script (vbs de aquí en más), para que así

Más detalles

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008 INTRODUCCIÓN Estructura de Datos Tipos Abstractos de Datos (TAD S) Para poder obtener un programa que resuelva un problema dado, son necesarios varios pasos : La formulación y especificación del problema

Más detalles

Lenguaje C. Tipos de Datos Simples y Estructuras de Control

Lenguaje C. Tipos de Datos Simples y Estructuras de Control Lenguaje C Tipos de Datos Simples y Estructuras de Control Lenguaje C C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje

Más detalles

Programación en lenguaje C++

Programación en lenguaje C++ Programación en Lenguaje C++ Objetivos Unidad Tema Subtema Objetivos VI 6.1 Metodología de la programación Metodologías Diseños de algoritmos Creación de algoritmos Entender y aplicar los pasos a seguir

Más detalles

UNIDAD 5. ESTRUCTURAS DINÁMICAS Y ESTÁTICAS DE ALMACENAMIENTO DE DATOS.

UNIDAD 5. ESTRUCTURAS DINÁMICAS Y ESTÁTICAS DE ALMACENAMIENTO DE DATOS. UNIDAD 5. ESTRUCTURAS DINÁMICAS Y ESTÁTICAS DE ALMACENAMIENTO DE DATOS. 5.1.- SECUENCIA En este caso, las instrucciones se ejecutan una después de la otra sin omitir ninguna de ellas. La sintaxis para

Más detalles

Estructura de datos Tema 6: Tablas de dispersión (hashing)

Estructura de datos Tema 6: Tablas de dispersión (hashing) Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 6: Tablas de dispersión (hashing) Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Funciones hash

Más detalles

Scripting en el cliente: Javascript. Tecnologías Web

Scripting en el cliente: Javascript. Tecnologías Web Scripting en el cliente: Javascript Tecnologías Web Motivación Por qué usar JavaScript? Permite crear efectos atractivos visualmente Permite crear sitios WEB que se visualicen de la misma manera en distintos

Más detalles

8. Sentencia return y métodos

8. Sentencia return y métodos 92 A. García-Beltrán y J.M. Arranz 8. Sentencia return y métodos Objetivos: a) Describir el funcionamiento de la sentencia return b) Interpretar el resultado de una sentencia return en el código fuente

Más detalles

MISIÓN UNIVERSIDAD DEL ISTMO VICERRECTORIA ACADÉMICA PROGRAMA ANALÍTICO

MISIÓN UNIVERSIDAD DEL ISTMO VICERRECTORIA ACADÉMICA PROGRAMA ANALÍTICO 1. DATOS GENERALES UNIVERSIDAD DEL ISTMO VICERRECTORIA ACADÉMICA PROGRAMA ANALÍTICO CARRERA LICENCIATURA EN ADMINISTRACIÓN DE SISTEMAS ASIGNATURA PROGRAMACION II ABREVIATURA SIS CÓDIGO 0092 PRERREQUISITOS

Más detalles

Reglas. El constructor defrule y otros comandos relacionados

Reglas. El constructor defrule y otros comandos relacionados Reglas El constructor defrule y otros comandos relacionados Reglas Introducción Definición de reglas Ciclo básico de ejecución de reglas Sintaxis del antecedente Propiedades de una regla Comandos Introducción

Más detalles

Estructura general de un programa

Estructura general de un programa Estructura general de un programa INTRODUCCION Un programa puede considerarse como una secuencia de acciones (instrucciones) que manipulan un conjunto de objetos (datos). Contendrá por tanto dos bloques

Más detalles

PASCAL. Repaso de Pascal Introducción a Python. Pascal. Pascal - introducción. Pascal Declaraciones: Variables. Pascal Declaraciones: Tipos 07/04/2015

PASCAL. Repaso de Pascal Introducción a Python. Pascal. Pascal - introducción. Pascal Declaraciones: Variables. Pascal Declaraciones: Tipos 07/04/2015 Repaso de Pascal Introducción a Python Lenguajes de Programación 2015 PASCAL Pascal - introducción Pascal es un Lenguaje basado en el paradigma imperativo clasico Estructura la programación mediante Funciones

Más detalles

Tema 2: La clase string

Tema 2: La clase string : string Programación 2 Curso 2013-2014 Índice 1 Cadenas de caracteres en C 2 Entrada / salida 3 entre vectores de caracteres y string 4 5 Cadenas de caracteres en C En C, las cadenas de caracteres tienen

Más detalles

Estructuras de Datos. Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR

Estructuras de Datos. Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR Estructuras de Datos Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR ...but note that an implementation need not be actualized as code a concrete design is sufficient. Chris Okasaki

Más detalles

Analisis de algoritmos

Analisis de algoritmos Analisis de algoritmos Eficiencia Es la capacidad de disponer de un recurso. En el caso de los algoritmos, la eficiencia se logra haciendo el mejor uso posible de los recursos del sistema. Recursos Qué

Más detalles

Anexo I. Profesorado en Matemática/Profesorado en Computación (Plan 1998) Prácticos: 4 horas semanales Teórico-prácticos:

Anexo I. Profesorado en Matemática/Profesorado en Computación (Plan 1998) Prácticos: 4 horas semanales Teórico-prácticos: 1 Corresponde al Anexo I de la Resolución N 182/05 Anexo I DEPARTAMENTO: Matemática CARRERA/S - PLAN/ES: Profesorado en Matemática/Profesorado en Computación (Plan 1998) CURSO: Primero REGIMEN: Cuatrimestral

Más detalles

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática Fundamentos de la informática 2. Algoritmos, diagramas de flujo y pseudocódigo Contenido Algoritmos Diagramas de flujo

Más detalles

Estructura de Datos: Archivos. Programacion I Mgter. Vallejos, Oscar A.

Estructura de Datos: Archivos. Programacion I Mgter. Vallejos, Oscar A. Archivo: Concepto Para poder acceder a determinada información en cualquier momento, se necesitará que ella esté depositada en soportes físicos los cuales la almacenan en forma permanente. Este es el caso

Más detalles

Estructura de Datos y de la Información. Pilas y expresiones aritméticas

Estructura de Datos y de la Información. Pilas y expresiones aritméticas Estructura de Datos y de la Información Pilas y expresiones aritméticas LIDIA Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España

Más detalles

3.2 Operaciones aritmético-lógicas en Pascal

3.2 Operaciones aritmético-lógicas en Pascal 3.2 Operaciones aritmético-lógicas en Pascal Operadores Los operadores sirven para combinar los términos de las expresiones. En Pascal, se manejan tres grupos de operadores : 1. ARITMÉTICOS 2. RELACIONALES

Más detalles

UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007

UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007 UNIVERSIDAD DE SEVILLA E. T. S. INGENIERÍA INFORMÁTICA LENGUAJES Y SISTEMAS INFORMÁTICOS PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007 Qué es el análisis

Más detalles

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS Especificación algebraica ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS Un tipo abstracto de datos se determina por las operaciones asociadas, incluyendo constantes que se consideran como operaciones sin

Más detalles

Se guardan en archivos con extencion c y los cabezales con extension h

Se guardan en archivos con extencion c y los cabezales con extension h Se guardan en archivos con extencion c y los cabezales con extension h Tipos de Variables: Tipo Tamaño(bytes) Limite inferior Limite superior char 1 -- -- unsigned char 1 0 255 short int 2-32768 +32767

Más detalles

Resolución de Problemas

Resolución de Problemas Resolución de Problemas con algoritmos Colaboratorio de Computación Avanzada (CNCA) 2015 1 / 27 Contenidos 1 Introducción 2 Elementos de algoritmos Elementos Variables Estructuras de Control Condicionales

Más detalles

Examen final de CL 11 de Enero de 2012 Fecha de publicación de notas: 19-1-2012 Fecha de revisión: 20-1-2012

Examen final de CL 11 de Enero de 2012 Fecha de publicación de notas: 19-1-2012 Fecha de revisión: 20-1-2012 Examen final de CL 11 de Enero de 2012 Fecha de publicación de notas: 19-1-2012 Fecha de revisión: 20-1-2012 Sin apuntes. Tiemp: 3h. Nombre y Apellidos: Problema de analisis léxico, sintáctico e intérpretes

Más detalles

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System. CICLO: 01/2010 Universidad Don Bosco Materia: Lenguaje de Programación III Contenido: 1-Lectura de Datos de entrada. 2-Introduccion a JOPTIONPANE. 3-Estructuras de Control. ->LECTURA DE DATOS DE ENTRADA

Más detalles

ALGORITMOS Y ESTRUCTURAS DE DATOS

ALGORITMOS Y ESTRUCTURAS DE DATOS ALGORITMOS Y ESTRUCTURAS DE DATOS APUNTE DE TEORIA AUTORA: Ing. ESTELA M. SORRIBAS ALGORITMOS Y ESTRUCTURAS DE DATOS INTRODUCCIÓN: El desarrollo de la tecnología de la información y de las comunicaciones,

Más detalles

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet 2005-2006. DLSI - Universidad de Alicante 1

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet 2005-2006. DLSI - Universidad de Alicante 1 Departamento de Lenguajes y Sistemas Informáticos JavaScript Programación en Internet Curso 2005-2006 Contenidos Introducción El lenguaje Validación de formularios DLSI - Universidad de Alicante 1 Introducción

Más detalles

Programa Java. El lenguaje de programación Java. Comentarios. Programa Java. Palabras reservadas. Identificadores

Programa Java. El lenguaje de programación Java. Comentarios. Programa Java. Palabras reservadas. Identificadores El lenguaje de programación Java Programa Java Un programa Java está formado por un conjunto de clases que interactúan entre sí La clase es la unidad básica de programación La ejecución depende de la clase

Más detalles

1.00 Clase 3. Tipos de datos en Java

1.00 Clase 3. Tipos de datos en Java 1.00 Clase 3 Tipos de datos básicos en Java, Estructuras de control Tipos de datos en Java 8 tipos de datos primitivos o integrados: - 4 tipos enteros (byte, short, int, long). - 2 tipos de coma flotante

Más detalles

Repaso de las características más importantes de la programación Java y su adaptación a Android

Repaso de las características más importantes de la programación Java y su adaptación a Android Repaso de las características más importantes de la programación Java y su adaptación a Android 1. Entorno de programación en java 2. Variables y tipos de datos 3. Operaciones y operadores 4. Clases y

Más detalles

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos]

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos] Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos] M. en C. Sergio Luis Pérez Pérez UAM CUAJIMALPA, MÉXICO, D. F. Trimestre 14-O Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura

Más detalles

Introducción a la Programación en MATLAB

Introducción a la Programación en MATLAB Introducción a la Programación en MATLAB La programación en MATLAB se realiza básicamente sobre archivos M, o M-Files. Se los denomina de esta forma debido a su extensión.m. Estos archivos son simple archivos

Más detalles

Ficheros. fd = open(nombre, modo)

Ficheros. fd = open(nombre, modo) 1 Ficheros fd = open(nombre, modo) - ruta es una cadena de texto con el nombre del fichero - modo = r para sólo lectura - modo = w para sólo escritura (sobrescribe) - modo = a para añadir texto (append)

Más detalles

Estructura de datos Tema 3: El TAD Lista lineal. Universidad de Valladolid. Departamento de informática. Campus de Segovia

Estructura de datos Tema 3: El TAD Lista lineal. Universidad de Valladolid. Departamento de informática. Campus de Segovia Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 3: El TAD Lista lineal Prof. Montserrat Serrano Montero ÍNDICE El TAD lista lineal Implementación con estructuras

Más detalles

Introducción al lenguaje JAVA

Introducción al lenguaje JAVA Universidad Autónoma de Tlaxcala Introducción al lenguaje JAVA M.C.. José Juan Hernández ndez Mora Segunda Sesión 1. Arreglos 2. Matrices 3. Clases en Java 4. Clases de Usuario en Java 5. Objetos definidos

Más detalles

Programación básica C++

Programación básica C++ Programación en Lenguaje C++ Programación básica C++ 6.3.1 Declaración de variables Introducción 6 Las variables sirven para identificar un determinado valor. Es importante tener en cuenta, que una variable

Más detalles

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES Características ARBOLES - CONCEPTOS Cada elemento del árbol se relaciona con cero o más elementos a quienes llama hijos. Si el árbol no

Más detalles

ESTRUCTURA DE DATOS: ARREGLOS

ESTRUCTURA DE DATOS: ARREGLOS ESTRUCTURA DE DATOS: ARREGLOS 1. Introduccion 2. Arreglos - Concepto - Caracteristicas 3. Arreglos Unidimensionales 4. Arreglos Bidimensionales 5. Ventajas del uso de arreglos 6. Ejemplo 1. Introducción

Más detalles

Tipos primitivos y clases de interés

Tipos primitivos y clases de interés Programación Avanzada para Sistemas de Telecomunicación Tipos primitivos y clases de interés Juan Carlos Cruellas cruellas@ac.upc.es Objetos y clases Tipos primitivos. Clase String y asociadas. Clases

Más detalles

Capítulo 6. Asociaciones y Declaraciones.

Capítulo 6. Asociaciones y Declaraciones. Capítulo 6. Asociaciones y Declaraciones. Lenguajes de Programación Carlos Ureña Almagro Curso 2011-12 Contents 1 Asociaciones, entornos y ámbitos 2 2 Declaraciones y definiciones 6 3 Definiciones de valores,

Más detalles

CAPÍTULO IV BREVE DESCRIPCIÓN DE LA INFRAESTRUCTURA DE CÓMPUTO VISUAL BASIC 6.0 PARA WINDOWS

CAPÍTULO IV BREVE DESCRIPCIÓN DE LA INFRAESTRUCTURA DE CÓMPUTO VISUAL BASIC 6.0 PARA WINDOWS CAPÍTULO IV BREVE DESCRIPCIÓN DE LA INFRAESTRUCTURA DE CÓMPUTO VISUAL BASIC 6.0 PARA WINDOWS 4.1 Antecedentes históricos El lenguaje de programación BASIC (Beginner's All purpose Symbolic Instruction Code)

Más detalles

Manual de turbo pascal

Manual de turbo pascal Universidad Nacional Experimental De Los Llanos Occidentales Ezequiel Zamora UNELLEZ-Barinas Manual de turbo pascal Bachilleres: Martinez Ninibeth C.I:20.867.002 Mora Yaco C.I:17.205.073 Estructura de

Más detalles

Tema 3 Elementos básicos de programación

Tema 3 Elementos básicos de programación Representación de Datos y Aplicaciones Tema 3 Elementos básicos de programación Natividad Martínez Madrid nati@it.uc3m.es Objetivos del tema 3 Conocer la estructura básica de un programa Java Comprender

Más detalles

Programa de Formación Profesional en Curso de programación en JAVA Básico 2015

Programa de Formación Profesional en Curso de programación en JAVA Básico 2015 Programa de Formación Profesional en Curso de programación en JAVA Básico 2015 PRESENTACIÓN Es un curso presencial donde la idea es dar los primeros pasos en el mundo de Programación con el Lenguaje más

Más detalles

2º ITT SISTEMAS ELECTRÓNICOS 2º ITT SISTEMAS DE TELECOMUNICACIÓN 3º INGENIERÍA DE TELECOMUNICACIÓN AUTÓMATAS Y SISTEMAS DE CONTROL

2º ITT SISTEMAS ELECTRÓNICOS 2º ITT SISTEMAS DE TELECOMUNICACIÓN 3º INGENIERÍA DE TELECOMUNICACIÓN AUTÓMATAS Y SISTEMAS DE CONTROL 2º ITT SISTEMAS ELECTRÓNICOS 2º ITT SISTEMAS DE TELECOMUNICACIÓN 3º INGENIERÍA DE TELECOMUNICACIÓN AUTÓMATAS Y SISTEMAS DE CONTROL PRÁCTICA 2: INTRODUCCIÓN A MATLAB. CARACTERÍSTICAS BÁSICAS DE MATLAB Funcionalidades

Más detalles

PROCEDIMIENTOS Y FUNCIONES DE LA PROGRAMACIÓN (VISUAL BASIC)

PROCEDIMIENTOS Y FUNCIONES DE LA PROGRAMACIÓN (VISUAL BASIC) PROCEDIMIENTOS Y FUNCIONES DE LA PROGRAMACIÓN (VISUAL BASIC) REPASO (CLASES Y OBJETOS): Un objeto es una combinación de código y datos que puede tratarse como una unidad. Un objeto puede ser una porción

Más detalles

Algoritmos y Estructuras de Datos II

Algoritmos y Estructuras de Datos II 8 de abril de 2015 Clase de hoy 1 Repaso Tipos concretos versus abstractos Tipos abstractos de datos 2 3 4 TAD Pila Especificación del TAD Pila Repaso Tipos concretos versus abstractos Tipos abstractos

Más detalles

Nombran variables, funciones, clases y objetos

Nombran variables, funciones, clases y objetos 3.El lenguaje Java 3.1 Identificadores - sintaxis - tipos primitivos 3.2 Operadores 3.3 Control de flujo 3.4 Clase Array El lenguaje de programación Java 1 3.1 Identificadores Nombran variables, funciones,

Más detalles

promedio = nint((notas(1) + notas(2) + notas(3) + & notas(4) + notas(5) + notas(6)) / 6.0) print *, 'Su promedio es', promedio

promedio = nint((notas(1) + notas(2) + notas(3) + & notas(4) + notas(5) + notas(6)) / 6.0) print *, 'Su promedio es', promedio Arreglos Un arreglo es un tipo de datos que contiene varios elementos de un mismo tipo. Cada elemento tiene asociado un índice, y puede ser tratado como si fuera una variable. La cantidad de elementos

Más detalles

Introducción. Lógica de proposiciones: introducción. Lógica de proposiciones. P (a) x. Conceptos

Introducción. Lógica de proposiciones: introducción. Lógica de proposiciones. P (a) x. Conceptos Introducción César Ignacio García Osorio Lógica y sistemas axiomáticos 1 La lógica ha sido históricamente uno de los primeros lenguajes utilizados para representar el conocimiento. Además es frecuente

Más detalles

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java.

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java. Práctica 3 mtp metodoloxía e tecnoloxía da programación Objetivos: Duración: Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java. 1 semana 1.- Identificadores Los identificadores

Más detalles

Lenguaje programación limbo

Lenguaje programación limbo José María Cañas Plaza gsyc-profes@gsyc.escet.urjc.es Octubre 2003 Índice 1 Índice Introducción Tipos de datos Estructuras de control Hebras Canales Introducción 2 Introducción similar a C en el flujo

Más detalles

Programación Funcional en Haskell

Programación Funcional en Haskell Programación Funcional en Haskell Paradigmas de Lenguajes de Programación 1 cuatrimestre 2006 1. Expresiones, valores y tipos Un programa en lenguaje funcional consiste en definir expresiones que computan

Más detalles

SOLUCION EXAMEN junio 2006

SOLUCION EXAMEN junio 2006 SOLUCION EXAMEN junio 2006 1. Explique razonadamente si las siguientes afirmaciones son verdaderas o falsas: I) (1 p) En UNIX únicamente se distinguen dos tipos de procesos: los procesos de usuario y los

Más detalles

Fundamentos del Lenguaje de Programación Java

Fundamentos del Lenguaje de Programación Java Fundamentos del Lenguaje de Programación Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx El lenguaje Java Estándares de codificación Comentarios Programas con Java Identificadores Palabras clave

Más detalles