Índice del capítulo. Capítulo 4. Expresiones. Las expresiones. Indice de la sección. Lenguajes de Programación. Introducción. 2.

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

Download "Índice del capítulo. Capítulo 4. Expresiones. Las expresiones. Indice de la sección. Lenguajes de Programación. Introducción. 2."

Transcripción

1 Índice del capítulo Capítulo 4. Expresiones Lenguajes de Programación Capítulo 4. Expresiones 1. Carlos Ureña Almagro 2. Dpt. Lenguajes y Sistemas Informáticos ETSI Informática y de Telecomunicación Universidad de Granada Curso LLamadas a funciones 5. Expresiones condicionales Autor: Carlos Ureña. Fecha creación: October 7, Página: 1/1. Autor: Carlos Ureña. Fecha creación: October 7, Página: 2/1. 6. Indice de la sección Sección 1 Las expresiones Las expresiones son otro de los conceptos básicos que surgen en los primeros lenguajes de programación (p.ej. Fortran) El objetivo principal es poder expresar con facilidad cálculos complejos, con una sintaxis inspirada en las matemáticas. Autor: Carlos Ureña. Fecha creación: October 7, Página: 3/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 4/76.

2 Ejemplo de un cálculo Sin expresiones (usando solo variables y registros) r1 = [velocidad] r2 = [tiempo] r1 *= r2 r2 = [posini] r1 += r2 [posact] = r1 Con expresiones: El concepto de expresión Una expresión es un trozo del texto de un programa que denota un proceso de cálculo que produce como resultado un valor.. El cálculo será llevado a cabo durante la ejecución del programa. El proceso de llevar a cabo este cálculo se denomina evaluar la expresión Una expresión se puede evaluar un número arbitrario de veces durante la ejecución de un programa. Cada vez puede producir un valor distinto como resultado. posact = posini + ( velocidad * tiempo ) ; Autor: Carlos Ureña. Fecha creación: October 7, Página: 5/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 6/76. El concepto de expresión. Tipo. Es deseable que el tipo del valor producido sea el mismo todas las veces que el cálculo se lleve a cabo durante la ejecución del programa (facilita la legibilidad y la fiabilidad). En esos casos, llamamos tipo de la expresión al tipo del valor producido. El concepto de expresión. Tipo. En los lenguajes en consideración (C/C++, Ada, Java, C#, python), toda expresión de un programa tiene un tipo. En algunos lenguajes interpretados (Php, p.ej.), cada evaluación de una expresión puede producir un valor de un tipo distinto. Las expresiones no tienen tipo. Autor: Carlos Ureña. Fecha creación: October 7, Página: 7/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 8/76.

3 Ejemplo de expresiones sin tipo en PHP Java: 1 f l o a t x = ; 2 // e s una e x p r e s i o n de t i p o e n t e r o php: 1 $x =... ; 2 i f ( $x > 0 ) 3 $v = 45 ; 4 e l s e 5 $v = h o l a ; 6 echo $v ; // $v es una e x p r e s i o n de 7 // t i p o e n t e r o o cadena El concepto formal de expresión. Formalmente, una expresión es una aplicación que asigna un valor a cada estado de ejecución posible. Un estado de ejecución es un conjunto finito de variables distintas, cada una con al menos un nombre, un tipo, y un valor del tipo. Autor: Carlos Ureña. Fecha creación: October 7, Página: 9/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 10/76. El concepto de expresión: estados de ejecución Un ejemplo de un estado de ejecución es el siguiente conjunto de dos variables (cada una es una tupla). { ( "x", integer, 1 ), ( "peso", float, 67.8 ) } En principio, los nombres de dos variables de un estado de ejecución no pueden coincidir El concepto formal de expresión. Si e denota una expresión de tipo T y S un estado de ejecución, entonces e(s) es un valor de tipo T que coincide con el resultado de evaluar e en el estado de ejecución S. Normalmente, escribiremos dicho valor usando una función llamada eval, que asigna un valor a cada expresión y estado de ejecución posible: e(s) = eval(e, S) Autor: Carlos Ureña. Fecha creación: October 7, Página: 11/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 12/76.

4 Fallos en la evaluación: No todas las expresiones pueden evaluarse en todos los estados de ejecución posibles. Formalmente: el dominio de cada expresión posible (vista como una aplicación) será un subconjunto de todos los estados de ejecución posibles. Fallos en la evaluación. Ejemplos. Supongamos que 4*x+2 es una expresión de tipo entero. En estas condiciones, el dominio de la expresión son todos los estados de ejecución que contienen al menos una variable de nombre x y de tipo entero. El dominio de la expresión entera 5+8/x será un subconjunto del dominio de 4*x+2, en concreto, solo contendrá estados de ejecución en los cuales la variable de nombre x no contenga el valor 0. Autor: Carlos Ureña. Fecha creación: October 7, Página: 13/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 14/76. Fallos en la evaluación. Decimos que la evaluación de una expresión falla cuando tiene lugar en un estado de ejecución que no pertenece a su dominio. Si la evaluación de e falla en el estado S, entonces escribiremos que: eval(e, S) = error. Aquí, error se considera un valor especial del tipo. Durante una ejecución programa, el valor resultado de la evaluación es indeterminado, y dicha ejecución debería abortar, o bien se debería de producir una excepción. Categorías de expresiones. En el resto de este capítulo examinaremos las distintas categorías de expresiones que pueden aparecer en los lenguajes de programación. No existen diferencias importantes en las categorías de las expresiones, ni en la sintaxis de las mismas, entre los lenguajes Algol, Pascal, C/C++, Ada, Java y C# Autor: Carlos Ureña. Fecha creación: October 7, Página: 15/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 16/76.

5 Indice de la sección tipos primitivos de tipos primitivos Sección tipos primitivos 2.2. de tipos compuestos (agregados) Un literal es una expresión que denota directamente un valor de un tipo El resultado de evaluar un literal es siempre el valor que denota. No depende del estado de ejecución. En cualquier lenguaje, este tipo de expresiones si tiene un tipo. Autor: Carlos Ureña. Fecha creación: October 7, Página: 17/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 18/76. tipos primitivos de tipos primitivos tipos primitivos Tipo lógico En la práctica, la evaluación de un literal no conlleva cálculo alguno. La evaluación de un literal no puede fallar, ya que puede hacerse en cualquier estado de ejecución. Los literales de tipos primitivos son las expresiones más sencillas posibles. En la inmensa mayoría de los lenguajes que incorporan el tipo lógico ( {true, false} ), existen dos literales que denotan los dos valores del tipo: true que denota el valor true false que denota el valor false Autor: Carlos Ureña. Fecha creación: October 7, Página: 19/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 20/76.

6 tipos primitivos Caracteres tipos primitivos Enumerados Normalmente, estos literales se escriben especificando el carácter que denotan entre comillas simples. Por ejemplo, el carácter con código ASCII 48 (el dígito 0), se denota con 0 Todos los lenguajes incorporan la posibilidad de escribir uno de estos literales usando el código ASCII o Unicode del carácter en cuestión. (p.e.j. \60 o \x30 en C/C++, o \060 o \u0030 en Java denotan todos el carácter 0 ). En la definición de un tipo enumerado, el programador proporciona un identificador para cada valor distinto del tipo. Este identificador se considera como un literal del tipo enumerado Autor: Carlos Ureña. Fecha creación: October 7, Página: 21/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 22/76. tipos primitivos Enteros tipos primitivos Enteros. Resolución de ambigüedad en el tipo. Estos literales se escriben normalmente como secuencias de dígitos consecutivos, que coinciden con la expresión en base 10 del valor que denotan Suelen existir mecanismos para expresar los valores en base 8 o en base 16 En Ada, se puede escribir en lugar de (mejora la legibilidad) A los literales formados por secuencias de dígitos se les puede asignar más de un tipo entero, ya que los intervalos de enteros incluidos en cada tipo no son disjuntos. Por ejemplo, la expresión 34 puede ser, en C/C++ de cualquiera de los tipos enteros (char, short, int, long,...) Autor: Carlos Ureña. Fecha creación: October 7, Página: 23/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 24/76.

7 tipos primitivos Enteros. Resolución de ambigüedad en el tipo. de tipos compuestos (agregados) de tipos compuestos (agregados) En algunos lenguajes (C/C++, Java,C#): Se le asocia el tipo que menos bits ocupe (menor rango de valores) y que contenga al valor entero denotado por el literal. Se pueden forzar otras interpretaciones (p.ej., en C/C++ 34L es de tipo long) En otros lenguajes (Ada), se usa el tipo que se espera según el contexto donde aparece la expresión Son expresiones que denotan directamente un valor (de un tipo compuesto o recursivo), y que siempre se evalúan a dicho valor. Básicamente pueden existir agregados de tipo registro y de tipo array, aunque los lenguajes funcionales suelen contemplar de tipos recursivos (listas y árboles). En C/C++ y Java solo se permiten en inicializaciones de variables, en Ada y C# en cualquier lugar Autor: Carlos Ureña. Fecha creación: October 7, Página: 25/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 26/76. de tipos compuestos (agregados) Agregados en inicializaciones en C/C++ 1 main ( ) 2 { 3 i n t c [ 3 ] = { 34, 56, 78 } ; 4 s t r u c t { i n t i, char c } s = { 12, A } ; } de tipos compuestos (agregados) Uso erróneo de agregados en C/C++ Es un ejemplo ausencia de uniformidad en el lenguaje 1 main ( ) 2 { 3 i n t c [ 3 ] ; 4 s t r u c t { i n t i, char c } s ; 5 6 c = { 34, 56, 78 } ; // e r r o r! 7 s = { 12, A } ; // e r r o r! 8 } Autor: Carlos Ureña. Fecha creación: October 7, Página: 27/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 28/76.

8 de tipos compuestos (agregados) Agregados en inicializaciones en Ada 1 procedure Agregados i s de tipos compuestos (agregados) Agregados en inicializaciones en Ada 1 procedure Agregados i s 2 3 type m a t r i z i s Array ( ) of I n t e g e r ; 4 type r e g i s t r o i s record 5 i : I n t e g e r ; 6 c : C h a r a c t e r ; 7 end record ; 8 9 m : m a t r i z := ( 23, 45, 67 ) ; 10 r : r e g i s t r o := ( 12, A ) ; 2 3 type m a t r i z i s... ; 4 type r e g i s t r o i s.... ; 5 m : m a t r i z ; 6 r : r e g i s t r o ; 7 8 begin 9 10 m := ( 23, 45, 67 ) ; begin end Agregados ; r := ( 12, A ) ; end Agregados ; Autor: Carlos Ureña. Fecha creación: October 7, Página: 29/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 30/76. de tipos compuestos (agregados) Agregados con etiquetas de tipos compuestos (agregados) Agregados en Java y C# En Ada, en los agregados se pueden especificar los nombres de los campos o los índices de los elementos 1 procedure Agregados i s begin 4 5 r := ( i => 12, c => A ) ; 6 r := ( c => A, i => 12 ) ; 7 8 m := ( 1 => 23, 3 => 45, 2 => 45 ) ; 9 m := ( 1 => 23, => 45 ) ; end Agregados ; Autor: Carlos Ureña. Fecha creación: October 7, Página: 31/76. En Java y C# no existen agregados de tipo registro o clase, pero sí de tipo Array. Pueden aparecer en cualquier sitio: 1 // d e c l a r a c i o n e s con i n i c i a l i z a c i ó n : 2 i n t [ 5 ] m = { 1, 2, 3, 4, 5 } 3 i n t [ ] m = { 1, 2, 3, 4, 5 } ; 4 i n t [ ] m = new i n t [ ] { 1, 2, 3, 4, 5 } ; 5 6 // en a s i g n a c i o n e s : 7 m = new i n t [ ] { 1, 2, 3, 4, 5 } ; 8 9 // como parámetros : 10 fun ( new i n t [ ] {1,2,3,4,5} ) ; Autor: Carlos Ureña. Fecha creación: October 7, Página: 32/76.

9 Indice de la sección Sección Accesos a elementos de var. compuestas Expresiones de tipo referencia o puntero Accesos a variables Los accesos a variables son, en general, expresiones que dependen expĺıcitamente del estado de ejecución, es decir, de los valores de las variables existentes en el momento de la evaluación. Hay de varios tipos: Accesos simples Accesos a elementos de variables compuestas Combinaciones Autor: Carlos Ureña. Fecha creación: October 7, Página: 33/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 34/76. Accesos simples La forma más simple de acceder a una variable es usar una expresión formada únicamente por el nombre de la variable: Si la variable no existe en el estado de ejecución actual, la evaluación falla. Los lenguajes como Ada, Pascal, C/C++, Java y C# comprueban esto en tiempo de compilación (ya que las var. tienen ámbito estático). Si la variable existe, el resultado de la evaluación es el valor actual de dicha variable. Accesos simples En los lenguajes donde las variables tienen un único tipo, el tipo de la expresión es el tipo de la variable nombrada Si en el lenguaje las variables no tienen asignado un único tipo, la expresión tampoco tiene tipo (poco recomendable, baja legibilidad). Es deseable evitar evaluaciones fallidas en tiempo de ejecución, así que muchos lenguajes comprueban en tiempo de compilación si la variable existe o no. Autor: Carlos Ureña. Fecha creación: October 7, Página: 35/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 36/76.

10 Expresiones de tipos-valor y tipos-referencia En los lenguajes con tipos-referencia y tipos-valor (Java, C#): Si una variable es de un tipo-valor, el nombre de la variable forma una expresión que se evalúa al valor de la variable Si una variable es de un tipo-referencia, el nombre de la variable forma una expresión que se evalúa como la localización de la variable en el heap que referencia (o NULL). Ejemplo de expresiones formadas por un nombre de variable (Java y C#) 1 i n t x = 34, // t i p o v a l o r (34 en e l s t a c k ) 2 y ; 3 4 i n t [ ] a = {1,2,3}, // t i p o r e f e r e n c i a 5 // ({1,2,3} s i t u a d o en e l heap ) 6 b ; 7 8 y = x ; // l a e x p r. x se e v a l ú a a 34 9 b = a ; // l a e x p r. a se e v a l ú a a l a l o c. de {1,2,3} Autor: Carlos Ureña. Fecha creación: October 7, Página: 37/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 38/76. Accesos a elementos de var. compuestas Accesos a elementos de variables compuestas Accesos a elementos de var. compuestas Accesos a elementos de variables compuestas Cuando una variable es de un tipo compuesto (arrays y registros), podemos construir expresiones que se evalúan al valor actual de alguna de las variables que son componentes de dicha variable compuesta. Estas expresiones son semejantes a los accesos a variables simples en cuanto a su semántica. Si el elemento de la estructura tiene un tipo único, la expresión también lo tiene. En este caso las variables son anónimas, así que no podemos usar solamente un nombre. Para construir estas expresiones, debemos de indicar la variable compuesta y el elemento de la misma al que queremos acceder. Estas expresiones se pueden anidar, ya que a veces será necesario acceder a elementos de elementos de estructuras. Autor: Carlos Ureña. Fecha creación: October 7, Página: 39/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 40/76.

11 Accesos a elementos de var. compuestas Accesos a elementos de arrays Accesos a elementos de var. compuestas Accesos a elementos de arrays Sea: v una expresión de tipo A B (se evalúa como una referencia a un array almacenado en memoria, el array tiene índices de tipo A y elementos de tipo B) e una expresión de tipo A, S un estado de ejecución cualquiera Con esto podemos construir la expresión v(e) de tipo B, y se cumple que: eval(v(e), S) = f a (i) En la última igualdad: i = eval(e, S) A f a A B es la aplicación asociada al array a a = eval(v, S) A B, es el array que resulta de evaluar v Se produce fallo si: eval(e, S) / A : no se puede evaluar el índice, o produce un valor que no es del tipo (por ejemplo, está fuera de rango). eval(v, S) / A B : evaluar v no produce una referencia a un array del tipo correcto o falla. Autor: Carlos Ureña. Fecha creación: October 7, Página: 41/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 42/76. Accesos a elementos de var. compuestas Accesos a elementos de arrays en varios lenguajes Accesos a elementos de var. compuestas Accesos a elementos de registros o clases: Sean las siguientes expresiones: a I 1 T e 1 I 1 b (I 1 I 2 ) T e 2 I 2 Entonces las siguientes son expresiones de tipo T Son expresiones similares a los accesos a arrays, solo que en este caso el componente no se selecciona con una expresión, sino con un identificador del componente al que queremos acceder (el nombre del campo) El tipo de la expresión es el tipo del campo accedido. C/C++/Java a[e 1 ] b[e 1 ][e 2 ] Ada a(e 1 ) b(e 1,e 2 ) C# a[e 1 ] b[e 1 ][e 2 ] == b[e 1,e 2 ] Autor: Carlos Ureña. Fecha creación: October 7, Página: 43/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 44/76.

12 Accesos a elementos de var. compuestas Accesos a elementos de registros o clases: Accesos a elementos de var. compuestas Accesos a elementos de registros o clases: Sea: e una expresión de tipo A 1 A 2...A n, en la cual ident i es el identificador o etiqueta del i-ésimo campo (el de tipo Ai) S un estado de ejecución cualquiera En estas condiciones, podemos escribir la expresión: e.ident i que es de tipo A i y se cumple que: En la última igualdad: (A 1 A n ) A i es la aplicación que selecciona el i-ésimo componente de una tupla C i r = eval(e, S) A 1 A n es el registro obtenido como resultado de evaluar e Si eval(e, S) = fallo, entonces eval(e.ident i, S) = fallo eval(e.ident i, S) = C i (r) Autor: Carlos Ureña. Fecha creación: October 7, Página: 45/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 46/76. Accesos a elementos de var. compuestas Combinaciones de accesos a arrays y registros Se pueden combinar los accesos a elementos de arrays o registros que a su vez sean elementos de arrays o registros, a niveles arbitrarios. C++/Java/C#: r[3].a[4][5] a[6].c.d Ada r(3).a(4,5) a(6).c.d En general toda expresión de acceso a una variable de tipo T (de tipo simple o compuesto, elemento de otra variable o no) en lenguajes que incluyan el tipo referencia, puede evaluarse en dos contextos: En contextos donde se espera un valor de tipo T, la evaluación produce el valor de la variable En los contextos donde se espera una referencia a una variable de tipo T, la evaluación produce la identidad de la variable. Autor: Carlos Ureña. Fecha creación: October 7, Página: 47/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 48/76.

13 Puesto que una variable de tipo referencia contiene un valor que es la localización de otra variable, usaremos la primera para acceder a la segunda. Esta operación es la utilidad principal y más frecuente de las referencias, por tanto, los lenguajes incorporan mecanismos para hacer esto fácilmente. Supongamos (en un lenguaje que incluya expĺıcitamente las referencias como tipos) que r es una expresión de tipo ref (T ) (o bien de su subtipo ref(t ) ), entonces consideraremos la expresión: como una expresión de tipo T. Nótese que esta notación no pertenece a ningún lenguaje en concreto [r] Autor: Carlos Ureña. Fecha creación: October 7, Página: 49/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 50/76. Accesos a través de punteros en C/C++: La evaluación de la expresión [r] en un estado S tiene lugar evaluando la expresión r, interpretándola como de tipo referencia: Si produce la referencia nula, hay un fallo Si produce la identidad de una variable v en S de tipo T, el resultado de evaluar la expresión es el valor de v en S (de tipo T ). Si p es una expresión de tipo puntero a T ( T * ), entonces, *p es una expresión de tipo T, (equivalente a [p]), y por tanto: eval( p, S) = eval([p], S) La evaluación de *p puede fallar (si la evaluación de p falla o produce NULL) Se puede producir un valor indeterminado (si el valor de p no es la identidad de una variable de tipo T, aunque esto pasaría desapercibido. Autor: Carlos Ureña. Fecha creación: October 7, Página: 51/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 52/76.

14 en C/C++: en Ada: Si r es una expresión de tipo referencia a T ( T & ), pero aparece en un contexto donde se espera una expresión de tipo T, entonces: eval(r, S) = eval([r], S) En estos casos r se considera como equivalente a [r], y por tanto como una expresión de tipo T. La evaluación de r como referencia puede fallar, pero si no lo hace produce la identidad de una variable de tipo T (nunca produce NULL). Si r es una expresión de tipo referencia a T (access T o access all T ), entonces r.all es una expresión de tipo T, y en este caso: eval(r.all, S) = eval([r], S) La evaluación de r.all puede fallar (si la evaluación de r falla o produce NULL) Autor: Carlos Ureña. Fecha creación: October 7, Página: 53/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 54/76. Accesos con referencias a elementos de variables compuestas en Ada y C/C++ Existen ciertas abreviaturas (y ambigüedades en C/C++) cuando la variable accedida vía una referencia o puntero es componente de otra: C/C++ p[e] == (*p)[e] distinto de *(p[e]) == *p[e] p->id == (*p).id distinto de *(p.id) == *p.id Ada p.all(e) == p(e) p.all.id == p.id Accesos con referencias en Java y C# Si V es un tipo-valor, entonces no es posible acceder mediante referencias a las variables de tipo V (no existen las referencias a V ) Si R es un tipo-referencia, entonces no es posible escribir una expresión que se evalúe al valor de una variable de tipo R (solo se pueden escribir expresiones de tipo referencia). Autor: Carlos Ureña. Fecha creación: October 7, Página: 55/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 56/76.

15 Accesos con referencias en Java y C# Expresiones de tipo referencia o puntero Expresiones de tipo referencia Si e es una expresión de tipo R (un tipo-referencia), entonces: Impĺıcitamente el tipo de la expresión es referencia a R, y por tanto: La evaluación de e produce, bien NULL (la referencia nula o vacía), bien una identidad de una variable de tipo R situada en el heap. En los lenguajes que contemplan expĺıcitamente los tipos referencia, es posible escribir una expresión que al evaluarse produzca como resultado una referencia a una variable. El resultado de evaluar esa expresión es una referencia que podrá ser usada posteriormente para acceder a la variable. Autor: Carlos Ureña. Fecha creación: October 7, Página: 57/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 58/76. Expresiones de tipo referencia o puntero Expresiones de tipo referencia LLamadas a funciones Indice de la sección Sea e una expresión cuya evaluación produzca el valor de una variable v de tipo T. En estas condiciones, las siguientes expresiones son de tipo ref(t ) Sección 4 LLamadas a funciones C/C++ &e == &(e) Ada e access En Java y C# estas expresiones no existen, pues no existe el tipo referencia de forma expĺıcita. Autor: Carlos Ureña. Fecha creación: October 7, Página: 59/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 60/76.

16 LLamadas a funciones LLamadas a funciones Sea ident el nombre un subprograma que devuelve un valor (una función) de tipo T, y acepta una serie de parámetros de tipos T 1, T 2,..., T n Sea e 1, e 2,..., e n una serie de n expresiones, con e i T i En estas condiciones, podemos construir la siguiente expresión de tipo T ident(e 1, e 2,..., e n ) LLamadas a funciones Llamadas a funciones Para evaluar ident(e 1, e 2,..., e n ) es necesario: Evaluar cada uno de las ei (expresiones llamadas parámetros actuales) si alguna evaluación falla, la evaluación de la expresión original falla. Inicializar los parámetros formales con los valores obtenidos al evaluar los parámetros actuales. Ejecutar la función. Si se produce algún fallo al ejecutar la función, la evaluación falla. El resultado de evaluar la expresión es el valor devuelto por la función. En algunos lenguajes, en lugar de un nombre de función se puede usar también una expresión que se evalua a una referencia a un subprograma. Autor: Carlos Ureña. Fecha creación: October 7, Página: 61/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 62/76. Expresiones condicionales Indice de la sección Sección 5 Expresiones condicionales Expresiones condicionales Expresiones condicionales. Sean: b una expresión de tipo lógico e1 y e2 dos expresiones distintas de un mismo tipo T. En estas condiciones podemos escribir la siguiente expresión de tipo T if b then e 1 else e 2 Autor: Carlos Ureña. Fecha creación: October 7, Página: 63/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 64/76.

17 Expresiones condicionales Sea: Entonces: x = eval( if b then e 1 else e 2, S) x = { eval(e1, S) si eval(b, S) = true eval(e 2, S) si eval(b, S) = false Expresiones condicionales Expresiones condicionales en C/C++ En el lenguaje C/C++ si e 1 y e 2 son dos expresiones del un mismo tipo T (T es uno de los tipos enteros, enumerados, caracteres, o flotantes), y b es una expresión entera o lógica, entonces podemos escribir la expresión: La evaluación falla si falla la evaluación las expresiones b, e 1 o e 2 b? e 1 : e 2 Esta expresión tiene tipo T. Si b no de tipo bool sino algún tipo entero, entonces el valor 0 se equipara a false y cualquier otro valor se equipara a true. Autor: Carlos Ureña. Fecha creación: October 7, Página: 65/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 66/76. Indice de la sección Sección 6 : infijos (binarios) Un operador binario infijo op es un símbolo (o un identificador) que denota una aplicación f op (A B) C, y que permite escribir la siguiente expresión de tipo C e 1 op e 2 Donde e 1 y e 2 son dos expresiones, con e 1 A y e 2 B Autor: Carlos Ureña. Fecha creación: October 7, Página: 67/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 68/76.

18 Operadores infijos (binarios) Se cumple que: eval(e 1 op e 2, S) = f op (eval(e 1, S), eval(e 2, S)) La evaluación de esta expresión fallará si falla la evaluación de alguno de los operandos, o la evaluación de la función f op Operadores prefijos (unarios) Un operador unario prefijo op es un símbolo (o un identificador) que denota una aplicación f op A B, y que permite escribir la siguiente expresión de tipo B op e Donde e es una expresión de tipo A. Autor: Carlos Ureña. Fecha creación: October 7, Página: 69/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 70/76. Operadores prefijos (unarios) Se cumple que: eval(op e, S) = f op (eval(e, S)) La evaluación de esta expresión fallará si falla la evaluación del operando, o la evaluación de la función f op Expresiones entre paréntesis En general, si e es una expresión de tipo T, entonces también lo será la expresión (e) Los paréntesis se suelen usar para resolver ambigüedades en las expresiones complejas con varios operadores binarios infijos o unarios prefijos Autor: Carlos Ureña. Fecha creación: October 7, Página: 71/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 72/76.

19 Ambigüedades relaccionadas con operadores e 1 op 1 e 2 op 2 e 3 puede interpretarse de dos formas: (e 1 op 1 e 2 ) op 2 e 3 e 1 op 1 (e 2 op 2 e 3 ) op 1 e 1 op 2 e 3 puede interpretarse de dos formas: (op 1 e 1 ) op 2 e 2 op 1 (e 2 op 2 e 3 ) Prioridad de los operadores Los operadores suelen tener asociado un valor numérico (llamado su prioridad), Esta prioridad sirve también para resolver las ambiguedades citadas en la transparencia anterior Sean op 1 y op 2 dos operadores binarios con op 1 mayor prioridad que op 2. Entonces podemos escribir las expresiones: e 1 op 1 e 2 op 2 e 3 = (e 1 op 1 e 2 ) op 2 e 3 e 1 op 2 e 2 op 1 e 3 = e 1 op 2 (e 2 op1 e 3 ) Si op 1 y op 2 tienen la misma prioridad, entonces (usualmente) se usa asociatividad a izquierdas para resolver la ambigüedad que aparece, es decir: e 1 op 1 e 2 op 2 e 3 = (e 1 op 1 e 2 ) op 2 e 3 Autor: Carlos Ureña. Fecha creación: October 7, Página: 73/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 74/76. Prioridad de operadores Sean op 1 un operador unario y op 2 un operador binario. En estos casos, la prioridad tambien resuelve la ambigüedad que se presenta en la expresión op 1 e 1 op 2 e 2 fin del capítulo. Si op 1 tiene mayor prioridad que op 2, la interpretación es: (op 1 e 1 ) op 2 e 2 Si op 1 tiene menor prioridad que op 2, la interpretación es: op 1 (e 1 op 2 e 2 ) Si las prioridades coinciden, se usa asociatividad a izquierdas, es decir, la interpretación es: (op 1 e 1 ) op 2 e 2 Autor: Carlos Ureña. Fecha creación: October 7, Página: 75/76. Autor: Carlos Ureña. Fecha creación: October 7, Página: 76/76.

Lenguajes de Programación. Capítulo 4. Expresiones.

Lenguajes de Programación. Capítulo 4. Expresiones. Lenguajes de Programación. Capítulo 4. Expresiones. Carlos Ureña Almagro Curso 2011-12 Contents 1 Introducción 2 2 Literales 5 2.1 Literales tipos primitivos......................................... 5

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

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones rcoppo@uns.edu.ar Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario

Más detalles

Expresiones y sentencias

Expresiones y sentencias Expresiones y sentencias Expresión Construcción (combinación de tokens) que se evalúa para devolver un valor. Sentencia Representación de una acción o una secuencia de acciones. En C, todas las sentencias

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

El lenguaje C. 1. Identificadores, constantes y variables

El lenguaje C. 1. Identificadores, constantes y variables Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria

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

Lenguajes de Programación. Capítulo 3. Variables.

Lenguajes de Programación. Capítulo 3. Variables. Lenguajes de Programación. Capítulo 3. Variables. Carlos Ureña Almagro Curso 2011-12 Contents 1 Introducción 2 2 Referencias 5 3 Almacenamiento de valores 7 3.1 Almacenamiento de tipos compuestos.................................

Más detalles

Arreglos y Subrangos

Arreglos y Subrangos Arreglos y Subrangos Programación 1 InCo - FING Contents 1 Tipo subrango 2 1.1 Subrangos de enteros......................... 2 1.2 Subrangos de caracteres....................... 2 1.3 Operaciones con subrangos.....................

Más detalles

Java posee dos grandes categorías de tipos para las variables:

Java posee dos grandes categorías de tipos para las variables: Declaración identificador tipo int i; i entero String s; s referencia a string int a[]; a referencia a arreglo de enteros int[] b; b referencia a arreglo de enteros Java posee dos grandes categorías de

Más detalles

Lenguajes de Programación Capítulo 2. Valores y Tipos

Lenguajes de Programación Capítulo 2. Valores y Tipos Lenguajes de Programación Capítulo 2. Valores y Tipos Carlos Ureña Almagro Curso 2011-12 Contents 1 Introducción 2 2 Tipos Primitivos 6 2.1 Tipo Lógico................................................ 6

Más detalles

DESCRIPCIÓN DEL LENGUAJE DE PROGRAMACIÓN P-0

DESCRIPCIÓN DEL LENGUAJE DE PROGRAMACIÓN P-0 DESCRIPCIÓN DEL LENGUAJE DE PROGRAMACIÓN P-0 Este documento define los elementos de programación del lenguaje P-0, basado en un subconjunto del lenguaje de programación Arduino. 1.- PROGRAMA Un programa

Más detalles

Expresiones y sentencias

Expresiones y sentencias Expresiones y sentencias Expresión Construcción (combinación de tokens) que se evalúa para devolver un valor. Sentencia Representación de una acción o una secuencia de acciones. En Java, todas las sentencias

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

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional CAPÍTULO IV: Programación Funcional 4.1 Introducción a la Programación Funcional 1 Programación Funcional Paradigma diferente a los imperativos, que se aleja de la máquina de von Neumann Basado en funciones

Más detalles

Datos y tipos de datos

Datos y tipos de datos Datos y tipos de datos Dato Representación formal de hechos, conceptos o instrucciones adecuada para su comunicación, interpretación y procesamiento por seres humanos o medios automáticos. Tipo de dato

Más detalles

Arreglos y Subrangos

Arreglos y Subrangos Arreglos y Subrangos Programación 1 InCo - FING Programación 1 Arreglos y Subrangos InCo - FING 1 / 27 Tipos de datos definidos por el programador Programación 1 Arreglos y Subrangos InCo - FING 2 / 27

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

3.3 Conceptos Básicos del Lenguaje Java

3.3 Conceptos Básicos del Lenguaje Java 3.3 Conceptos Básicos del Lenguaje Java Conjunto de Caracteres Java utiliza Unicode, un conjunto de caracteres de 16 bits Java permite leer ASCII de 7-bit o Latin-1, conviertiéndolo a Unicode Son pocos

Más detalles

Tema II: Introducción al Lenguaje Funcional

Tema II: Introducción al Lenguaje Funcional Tema II: Introducción al Lenguaje Funcional Características de Haskell Lenguaje funcional de o. superior fuertemente tipificado. Clasifica los entes de un programa en: objetos (constantes y funciones)

Más detalles

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los

Más detalles

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

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

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

INICIACIÓN A LA PROGRAMACIÓN II

INICIACIÓN A LA PROGRAMACIÓN II INICIACIÓN A LA PROGRAMACIÓN II 1. Caracteres... 2 2. Identificadores... 4 3. Palabras clave o reservadas... 5 4 Variables y constantes. Datos... 6 5 Arrays... 8 6. Comentarios... 9 7. Expresiones... 11

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

Estructura de Datos Unidad 1: Repaso del Lenguaje Java

Estructura de Datos Unidad 1: Repaso del Lenguaje Java Estructura de Datos Unidad 1: Repaso del Lenguaje Java Introducción Java es un lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems a principios de 1991, con el que se van a

Más detalles

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algoritmos y programas. Algoritmos y Estructuras de Datos I Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de

Más detalles

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Apunte Laboratorio ALPI - El lenguaje de programación Pascal Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................

Más detalles

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. Indíce Algoritmo Elementos de un algoritmo: Variables, Constantes, Expresiones Datos: Definición y

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

El operador contenido ( ) permite acceder al contenido de

El operador contenido ( ) permite acceder al contenido de 3. Memoria Dinámica y Punteros Objetivos: Distinguir los conceptos de memoria estática y memoria dinámica Comprender el concepto de puntero como herramienta de programación Conocer cómo se definen y cómo

Más detalles

Tema 4. Operadores y Expresiones

Tema 4. Operadores y Expresiones Tema 4 Operadores y Expresiones Contenidos 1. Conceptos Básicos. 2. Operadores Aritméticos. 3. Operadores de Relación, de Igualdad y Lógicos. 4. Operadores de Incremento y Decremento. 5. Operadores y Expresiones

Más detalles

TEMA 02 TIPOS, OPERADORES Y EXPRESIONES

TEMA 02 TIPOS, OPERADORES Y EXPRESIONES TEMA 02 TIPOS, OPERADORES Y EXPRESIONES 2.1.- Introducción. 2.2.- Datos. 2.3.- Entrada y salida básica. 2.4.- Modificadores. 2.5.- Cadenas de caracteres. 2.6.- Operadores. 2.7.- Precedencia de operadores.

Más detalles

Tema 3. Tipos de datos simples

Tema 3. Tipos de datos simples Tema 3. Tipos de datos simples Contenido del tema: Concepto de tipo. Tipos simples. Operadores. Expresiones. Semántica. Tipos y expresiones en lenguaje C++ Francisco J. Veredas Dpto. Lenguajes y Ciencias

Más detalles

Lenguajes de Programación I

Lenguajes de Programación I Lenguajes de Programación I Tipos de Datos Compuestos Ernesto Hernández-Novich Copyright c 2006-2010 Registros Registros agrupan datos de tipos heterogéneos para almacenarlos y manipularlos

Más detalles

TEMA 3. OPERADORES Y EXPRESIONES.

TEMA 3. OPERADORES Y EXPRESIONES. TEMA 3. OPERADORES Y EXPRESIONES. Los programas de computadoras se apoyan esencialmente en la realización de numerosas operaciones aritméticas y matemáticas de diferente complejidad. Este capítulo muestra

Más detalles

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica Tema 2: Desarrollo de Algoritmos E.E. de Algorítmica Temas a tratar Identificadores Variables Constantes Tipos de Datos Separadores Operadores Aritméticos Unarios Relacionales y Condicionales Nivel de

Más detalles

21/03/2018. Variables y Constantes. Los datos de un programa están representados por variables o constantes y tienen asociado un tipo.

21/03/2018. Variables y Constantes. Los datos de un programa están representados por variables o constantes y tienen asociado un tipo. Variables y Constantes Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Los datos de un programa están representados por variables

Más detalles

Los tipos de datos primitivos

Los tipos de datos primitivos Los tipos de datos primitivos El lenguaje de programación Java es de tipo estático, lo que significa que todas las variables debe ser declarado antes de que puedan ser utilizados visto. Se trata de la

Más detalles

Lenguajes de Programación I

Lenguajes de Programación I Lenguajes de Programación I Tipos de Datos Ernesto Hernández-Novich Copyright c 2006-2010 Tipos de Datos El computador sólo manipula secuencias de bits. Los lenguajes de programación ofrecen

Más detalles

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28 Componentes Básicos InCo InCo Componentes Básicos 1 / 28 Modelo de Computación Vemos al computador como un procesador de datos. +------------+ Entrada ===> Computador ===> Salida +------------+ InCo Componentes

Más detalles

Tema 3. Patrones y Definiciones de Funciones

Tema 3. Patrones y Definiciones de Funciones Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones

Más detalles

Tema 2. Tipos predefinidos

Tema 2. Tipos predefinidos Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 2. Tipos predefinidos 2.1 Tipos simples predefinidos El tipo Bool El tipo Int El tipo Integer

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

Programación Tema 3: Tipos y expresiones simples. Programación DIT-UPM

Programación Tema 3: Tipos y expresiones simples. Programación DIT-UPM Programación Tema 3: Tipos y expresiones simples 1 Contenidos! 1. Tipos primitivos: números enteros, números reales, booleanos, caracteres! 2. Expresiones simples! 3. Arrays! 4. Campos (atributos) 2 Algoritmos

Más detalles

Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado.

Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado. 1.6. EXPRESIONES CONCEPTO: Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado. Los operandos pueden ser constantes, variables, otras expresiones e incluso funciones.

Más detalles

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC. Programación n Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño o Vargas MsC. Variables y expresiones aritméticas Variables Conceptos de Memoria Una variable es un espacio en la memoria

Más detalles

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC. Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC. Variables Conceptos de Memoria Una variable es un espacio en la memoria del PC Cada variable tiene un nombre, un tipo, un tamaño y un valor

Más detalles

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

Prof. María Alejandra Quintero. Informática Año Prof. María Alejandra Quintero Informática Año 2014-2015 Es la acción de escribir programas de computación con el objetivo de resolver un determinado problema. Implica escribir instrucciones para indicarle

Más detalles

Tema 3. Patrones y Definiciones de Funciones

Tema 3. Patrones y Definiciones de Funciones Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones para listas Patrones

Más detalles

Análisis semántico: Comprobación de tipos

Análisis semántico: Comprobación de tipos Análisis semántico: Comprobación de tipos Expresiones de tipos, sistemas de comprobación de tipos, equivalencia, resolución de sobrecargas y unificación. Introducción Objetivo de comprobación estática:

Más detalles

Compiladores: Análisis Semántico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inès Alvarez V.

Compiladores: Análisis Semántico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inès Alvarez V. Compiladores: Análisis Semántico Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inès Alvarez V. Verificaciòn de tipos Se puede hacer en forma Estàtica: en tiempo

Más detalles

Laboratorio de Lenguajes de Programación Introducción al lenguaje ML

Laboratorio de Lenguajes de Programación Introducción al lenguaje ML Laboratorio de Lenguajes de Programación Introducción al lenguaje ML Pedro A. Góngora Luna 1 1. Tipos de datos básicos Para iniciar el intérprete utilizamos el comando sml en el shell de windows o unix:

Más detalles

Fundamentos de Informática 5. Operadores, expresiones (y su aplicación)

Fundamentos de Informática 5. Operadores, expresiones (y su aplicación) Fundamentos de Informática 5. Operadores, expresiones (y su aplicación) Fundamentos de Informática Grado en Ingeniería Química 2 Contenidos Operadores De asignación Aritméticos De incremento Relacionales

Más detalles

Los parámetros: son los campos que se comunican a los métodos de los objetos.

Los parámetros: son los campos que se comunican a los métodos de los objetos. Modulo 6. Variables y Operadores Variables Un objeto almacena los estados en campos, estos campos se conocen en java como variables. Por eso a menudo podemos ver estas dos palabras usadas para referirse

Más detalles

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C Laboratorio de Arquitectura de Redes Punteros en lenguaje C Punteros en lenguaje C Definición Declaración e inicialización de punteros Operadores de punteros: «*» y «&» Operaciones con punteros Operaciones

Más detalles

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. Tema 2. TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. PARTE : VARIABLES, OPERADORES Y CONSTANTES.. INTRODUCCIÓN AL LENGUAJE C 2. PROGRAMAS BÁSICOS EN LENGUAJE C 3. DATOS EN LENGUAJE C

Más detalles

Prefacio 25 Organización de la Unidad Didáctica Cómo utilizar el libro Objetivos docentes... 27

Prefacio 25 Organización de la Unidad Didáctica Cómo utilizar el libro Objetivos docentes... 27 ÍNDICE Prefacio 25 Organización de la Unidad Didáctica.................... 25 Cómo utilizar el libro............................. 26 Objetivos docentes.............................. 27 1 Fundamentos de

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

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

Introducción a Haskell. El lenguaje Haskell

Introducción a Haskell. El lenguaje Haskell Capítulo 2. Introducción a Haskell 9 Introducción a Haskell Un ejemplo de fichero Haskell El lenguaje Haskell Haskell es un lenguaje funcional puro, no estricto y fuertemente tipificado. Puro = transparencia

Más detalles

Curso Informática Lección 3. Tipos de datos, constantes y variables

Curso Informática Lección 3. Tipos de datos, constantes y variables Fundamentos de Informática Lección 3. Tipos de datos, constantes y variables Curso 2010-2011 José Ángel Bañares y Pedro Álvarez 24/09/2010. Dpto. Informática e Ingeniería de Sistemas. Índice de contenidos

Más detalles

Procesadores de lenguaje Tema 5 Comprobación de tipos

Procesadores de lenguaje Tema 5 Comprobación de tipos Procesadores de lenguaje Tema 5 Comprobación de tipos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Sistemas de tipos. Expresiones de tipo. Equivalencia de tipos. Sobrecarga,

Más detalles

Unidad II: Análisis semántico

Unidad II: Análisis semántico Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico

Más detalles

Tutorial Haskell David Julián Guzmán Cárdenas Cristian Alexanther Rojas Cárdenas Luis Ernesto Gil Castellanos

Tutorial Haskell David Julián Guzmán Cárdenas Cristian Alexanther Rojas Cárdenas Luis Ernesto Gil Castellanos Tutorial Haskell David Julián Guzmán Cárdenas Cristian Alexanther Rojas Cárdenas Luis Ernesto Gil Castellanos Agenda 1. 2. 3. 4. 5. 6. Introducción Aspectos básicos del lenguaje Tipos y clases de tipos

Más detalles

Nombres, Ligaduras, Chequeo de Tipos y Alcance. Luis Garreta (Basados en el libro de Robert Sebesta)

Nombres, Ligaduras, Chequeo de Tipos y Alcance. Luis Garreta (Basados en el libro de Robert Sebesta) Nombres, Ligaduras, Chequeo de Tipos y Alcance Luis Garreta lgarreta@unicauca.edu.co (Basados en el libro de Robert Sebesta) 1 Nombres, Ligaduras, Chequeo de Tipos y Alcance Nombres Variables El concepto

Más detalles

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN Métodos Numéricos 2008 - Carlos Zotelo Introducción a Fortran 77 / 90 1. El lenguaje Fortran 77 / 90 2. Tipos de datos básicos 3. Constantes y variables 4. Entrada

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

Una lista de operadores que pueden o no sobrecargarse es la siguiente: Operadores que pueden sobrecargarse

Una lista de operadores que pueden o no sobrecargarse es la siguiente: Operadores que pueden sobrecargarse La sobrecarga de operadores, aunque puede ser una capacidad exótica, la mayoría de personas las usa implícita y regularmente se valen de los operadores sobrecargados. Por ejemplo, el operador de suma (+)

Más detalles

Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas

Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas Análisis semático v1.2 c 2005 José Fortes Gálvez p.1 Análisis?... semántico? La semántica corresponde al significado asociado

Más detalles

Operadores aritméticos. / División operando enteros o reales si operandos son entero resultado es entero. Resto de caso resultado real

Operadores aritméticos. / División operando enteros o reales si operandos son entero resultado es entero. Resto de caso resultado real 7.1 Operadores aritméticos Operadores aritméticos operadores Operación + Suma operandos pueden ser enteros o reales - Resta operandos pueden ser enteros o reales * Multiplicación operando enteros o reales

Más detalles

Programación en Lenguaje C

Programación en Lenguaje C Lenguaje de programación C Programación en Lenguaje C Introducción El Lenguaje de programación C fue implantado por primera vez en los años 70 por Dennis Ritchie para una computadora DEC PDP-11 corriendo

Más detalles

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

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

Introducción a Haskell. Cecilia Manzino

Introducción a Haskell. Cecilia Manzino Paradigmas de programación Un paradigma de programación representa un estilo particular o filosofía para la construcción del software. Los más comunes dan lugar a los siguientes tipos de programación:

Más detalles

Informática PRÀCTICA 3 Curs Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida.

Informática PRÀCTICA 3 Curs Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida. Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida. Objetivos de la práctica: - Mostrar la sintaxis de los diferentes tipos de datos presentes en C/C++.

Más detalles

UNIDAD 2 Descripción de un programa

UNIDAD 2 Descripción de un programa Descripción de un programa Estructura general de un programa. Elementos básicos. Tipos de datos simples: enteros, reales y carácter. Representación de datos en memoria. Operaciones sobre tipos de datos

Más detalles

Expresiones Lógicas y Operadores sobre Bits

Expresiones Lógicas y Operadores sobre Bits Expresiones Lógicas y Operadores sobre Bits Andrés Arcia Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes Programación Digital I 1 Expresión

Más detalles

Lección 2 Introducción al lenguaje C

Lección 2 Introducción al lenguaje C Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)

Más detalles

VARIABLES TIPOS FUNDAMENTALES

VARIABLES TIPOS FUNDAMENTALES VARIABLES Una variable es un espacio reservado en el ordenador para contener valores que pueden cambiar durante la ejecución de un programa. Los tipos determinan cómo se manipulará la información contenida

Más detalles

Programación. Tema 3: Tipos de Datos Primitivos Martes Martes Jueves Capítulo 1 Libro de Java

Programación. Tema 3: Tipos de Datos Primitivos Martes Martes Jueves Capítulo 1 Libro de Java Fundamentos de Programación Tema 3: Tipos de Datos Primitivos Martes 30-09-2008 Martes 7-10-2008 Jueves 9-10-2008 Capítulo 1 Libro de Java Dpto. de Ingeniería de Sistemas Telemáticos http://www.lab.dit.upm.es/~fprg/

Más detalles

Curso de Programación Avanzada en C

Curso de Programación Avanzada en C Curso de Programación Avanzada en C Copyright, 1996 Universidad Sim on Bol ivar 1 Prof. Mariela J. Curiel Contenido del Curso Conceptos BásicosB Estructuras de Control Arreglos Otros tipos de datos derivados

Más detalles

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;) Tags Fundamentos PHP La Sintaxis de PHP se deriva de muchos lenguajes de programación principalmente de C pero Perl también ha tenido mucha influencia en esta sintaxis Con las últimas incorporaciones agregadas,

Más detalles

Tipos primitivos, referencias y expresiones

Tipos primitivos, referencias y expresiones Tipos primitivos, referencias y expresiones LSUB GSYC 9 de febrero de 2016 (cc) 2014 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento

Más detalles

Programación 1 Tema 3. Información, datos, operaciones y expresiones

Programación 1 Tema 3. Información, datos, operaciones y expresiones Programación 1 Tema 3 Información, datos, operaciones y expresiones Índice Datos y tipos de datos Datos primitivos en C++ Expresiones e instrucción de asignación Datos y tipos de datos Problema información

Más detalles

Informática Ingeniería en Electrónica y Automática Industrial

Informática Ingeniería en Electrónica y Automática Industrial Informática Ingeniería en Electrónica y Automática Industrial Punteros en lenguaje C Punteros en lenguaje C Definición Declaración e inicialización de punteros Operadores de punteros: «*» y «&» Operaciones

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

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

Dra. Jessica Andrea Carballido

Dra. Jessica Andrea Carballido Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Problemas, Algoritmos y Programas PROBLEMA Solución ALGORITMO PROGRAMA Problemas,

Más detalles

14/03/2018. Problemas, Algoritmos y Programas. Problemas, Algoritmos y Programas. Programas y Lenguajes. Programas y Lenguajes. Programas y Lenguajes

14/03/2018. Problemas, Algoritmos y Programas. Problemas, Algoritmos y Programas. Programas y Lenguajes. Programas y Lenguajes. Programas y Lenguajes Problemas, Algoritmos y Programas PROBLEMA Solución Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar ALGORITMO Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR PROGRAMA Problemas,

Más detalles

PHP: Lenguaje de programación

PHP: Lenguaje de programación Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054

Más detalles

Tipos de Datos Simples Contenido del Tema

Tipos de Datos Simples Contenido del Tema T E M A 3 Tipos de Datos Simples Contenido del Tema 3.1. Concepto de Tipo 3.1.1. Elementos básicos: atributos y operaciones 3.1.2. Tipos. Concepto y necesidad 3.1.3. Operadores básicos 3.2. Tipos de Datos

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

ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACIÓN

ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACIÓN ESTRUCTURA DE LOS LENGUAES DE PROGRAMACIÓN DEFINICION DE LOS LENGUAES SINTAIS (BNF + EBNF + DIAGRAMAS DE SINTAIS) + SEMÁNTICA OPERACIONAL (APROIMACIÓN UTULIZADA AQUÍ) FORMAL (A TRAVÉS DE MECANÍSMOS RIGUROSOS

Más detalles

Estructura de datos Tema 2: Tipos Abstractos de Datos (TADs)

Estructura de datos Tema 2: Tipos Abstractos de Datos (TADs) Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 2: Tipos Abstractos de Datos (TADs) Prof. Montserrat Serrano Montero ÍNDICE Tipos de datos El tipo abstracto

Más detalles

Introducción a la Programación

Introducción a la Programación Introducción a la Programación Fundamentos de Programación Ingeniería Informática en Sistemas de Información Alicia Troncoso 1 Contenido l Introducción l Mi primer programa l Etapas a seguir en la programación

Más detalles

Laboratorio de Arquitectura de Redes. Operadores y expresiones en lenguaje C

Laboratorio de Arquitectura de Redes. Operadores y expresiones en lenguaje C Laboratorio de Arquitectura de Redes Operadores y expresiones en lenguaje C Operadores y expresiones en lenguaje C Expresiones numéricas y operadores Operadores aritméticos Operadores lógicos y de relación

Más detalles

Introducción a la computación. Primer Cuatrimestre de 2013

Introducción a la computación. Primer Cuatrimestre de 2013 Introducción a la computación Primer Cuatrimestre de 2013 Programa Un programa es una secuencia de instrucciones. Programa Un programa es una secuencia de instrucciones. Ejemplo: 1.- Moje el cabello, 2.-

Más detalles