Sei sulla pagina 1di 10

VARIABLES

Uso y definicin de variables. Click to edit Master subtitle style

11/15/12

Terminologa
El trmino variable se refiere, en programacin, al uso de identificadores que varian segn el avance del cdigo fuente. Es decir, una variable puede ser declarada al inicio con un un valor determinado y conforme el cdigo avance sta puede o no cambiar su valor. Por ejemplo, en lenguaje C:
void variables(){ short x=3; printf(El valor de X es %d,x); x=4; printf(Ahora el valor de X es %d,x); x=x+2 printf(El valor de X es %d,x); }

11/15/12

Sintaxis
En Racket set! se utiliza para mutar variables. Por ejemplo, si una variable tiene un valor establecido y se requiere asignar otro valor a la misma variable, no basta con asignar el valor haciendo referencia al nombre de la variable, pues, se dara el caso siguiente: Si x=5 y procedemos a asignar por nombre x=3, se llega a la situacin que: 5=3 Esto no tiene sentido, por lo cual se asigna por medio de direccin de memoria. A continuacin se muestra un ejemplo de este caso.

11/15/12

Sintaxis
En lenguaje C, podemos obtener las direcciones de memoria de una variable:
#include <stdio.h> #include <stdlib.h> int main() { int Dato = 0; int * refDato; refDato = &Dato; printf("La direccion de memoria es %p\n", refDato); Dato = 10; printf("El contenido de la variable es %d\n", Dato); printf ("La direccion de memoria es %p\n", refDato); Dato=15; printf("El contenido de la variable es %d\n", Dato); printf("La direccion de memoria es %p\n", refDato); return 0; }

11/15/12

Interpretacin de Variables
Si tomamos como ejemplo nuestro lenguaje aritmetico y haciendo uso de la definicin de box: [setC (var val) (type-case Result (interp val env sto) [v*s (v-val s-val) En este caso, se hace uso de la funcin set! con la cual asignamos nuevos valores a las variables que estemos manejando en nuestro lenguaje aritmtico. Por ejemplo, para la suma de dos sumas, tendramos 2 variables que iran cambiando segn el proceso del cdigo.

11/15/12

Interpretacin de Variables
Si ahora aplicamos la interpretacin de variables al cdigo que venimos manejando: (define-type ExprC [numC (n : number)] [varC (s : symbol)] [appC (fun : ExprC) (arg : ExprC)] [plusC (l : ExprC) (r : ExprC)] [multC (l : ExprC) (r : ExprC)] [lamC (arg : symbol) (body : ExprC)] [setC (var : symbol) (arg : ExprC)] [seqC (b1 : ExprC) (b2 : ExprC)]) Podemos notar que idC se ha reemplazado por varC, ya que ahora es una variable. Adems se extiende el lenguaje a la funcin setC y seqC.

11/15/12

Interpretacin de Variables
Al utiliza variables del mismo tipo, en mutacin no es necesario cambiar o agregar nuevos valores: (define-type Value [numV (n : number)] [closV (arg : symbol) (body : ExprC) (env : Env)])

11/15/12

Parmetros
El uso de funciones que reciben parmetros es muy til al momento de hacer diseos funcionales y que pueda ser escalables, por ejemplo, nuestro lenguaje aritmtico. La aplicacin de los parmetros va estrechamente relacionado con el uso de variables. Al hacer uso de parmetros se est haciendo referencia por nombre a una variable que puede ser local o global. Si es una variable global, entonces se hace la asignacin por direccin de memoria y si es local, se hace la asignacin por referencia tomando solamente el nombre de la variable local.

11/15/12

Operaciones con Lenguajes


La capacidad para mantener estados de un lenguaje de programacin tiene varios beneficios como: *Modularidad *Estructura de datos dinmicos *Alojamiento de memoria Cuando hablamos de modularidad en un lenguaje de programacin, nos referimos a la capacidad de generar procedimientos que consumen y devuelven valores entre si, de esta manera el cdigo se puede hacer mucho mas robusto y escalable. En java, la modularidad es una propiedad del lenguaje a diferencia del lenguaje C, en el cual se debe hacer ciertas operaciones para volverlo modular.

11/15/12

Operaciones con Lenguajes


Respecto a las estructuras de datos dinmicos, nos podemos referir a recursividad o a creacin de variables que sean del tamao de memoria necesitado por la funcin en cuestion. Cuando se habla de alojamiento de memoria, en Racket podemos hacer la peticin expresa de memoria con new-loc que es similar en lenguaje C con malloc.

11/15/12

Potrebbero piacerti anche