Concepto de variable

Anuncio
Concepto de variable
Las variables no son más que posiciones de memoria reservada para almacenar los
valores. Esto significa que cuando se crea una variable se reserva algo de espacio en la
memoria.
Basado en el tipo de datos de una variable, el compilador asigna memoria y decide lo que
se puede almacenar en la memoria reservada. Por lo tanto, mediante la asignación de
diferentes tipos de datos a variables, se puede almacenar números enteros, decimales o
caracteres en estas variables.
Variables (y valores) locales
Las variables en scala se pueden declarar de dos tipos, como mutables o inmutables.
Se pueden ver como "variables" o "constantes". Para esto existen dos keywords: var y val
var nombre : String = "World";
println("Hello, " + nombre + "!");
Al ser una variable (es decir mutable) podemos hacer:
var nombre : String = "World";
nombre = "PACO";
println("Hello, " + nombre + "!");
Por otro lado, si fuera una constante o valor, se escribiría así:
val nombre : String = "World";
println("Hello, " + nombre + "!");
Y en tal caso la linea 'nombre = "PACO"' no compilaría. Ya que los valores no pueden
modificarse (son referencias inmutables)
Variable de Inferencia de tipos:
Al asignar un valor inicial a una variable, el compilador de Scala puede averiguar el tipo de
la variable en función del valor asignado a la misma. Esto se conoce como inferencia de
tipo de variable. Por lo tanto, se podría escribir estas declaraciones de variables como la
siguiente:
Aquí por defecto myVar será de tipo Int y myVal se convertirá en variable de tipo String.
Tipos primitivos proveídos por el lenguaje.
Scala provee algunas funciones básicas, que son primitivas para construir funciones más
complejas.
Un tipo primitivo está predefinido por el lenguaje y se nombra con una palabra clave
reservada. Los valores primitivos no comparten estado con otros valores primitivos
Además, scala tiene los mismos tipos de datos como Java, con el mismo espacio de
memoria y precisión. A continuación se presenta el cuadro con información sobre todos
los tipos de datos disponibles en Scala:
byte: El tipo de dato byte es un entero de 8 bits complemento a dos. Su valor mínimo es 128 y el máximo 127 (inclusive). El tipo de datos byte se puede utilizar para ahorrar
memoria en grandes arrays, donde el ahorro de memoria realmente importa. También se
pueden utilizar en lugar de int donde sus límites ayudan a aclarar el código, el hecho de
que el rango de una variable es limitado puede servir como una forma de documentación.
short: El tipo de dato short es un entero de 16 bits complemento a dos. Su valor mínimo
es -32,768 y el máximo 32,767 (inclusive). Se aplican las mismas directrices que con byte:
puede utilizar short para ahorrar memoria en grandes arrays, en situaciones en las que el
ahorro realmente importa.
int: El tipo de dato int es un entero de 32 bits complemento a dos. Su valor mínimo es 2,147,483,648 y el máximo 2,147,483,647 (inclusive). Generalmente este tipo es la
elección predeterminada para valores enteros a no ser que haya una razón (como las
mencionadas anteriormente) para elegir otro. Este tipo de dato normalmente será lo
suficiente grande para los números que su programa vaya a utilizar pero si necesita un
rango más amplio, utilice long.
long: El tipo de dato long es un entero de 64 bits complemento a dos. Su valor mínimo es 9,223,372,036,854,775,808 y el máximo 9,223,372,036,854,775,807 (inclusive). Utilice
este tipo de dato cuando necesite un rango de valores más amplio que el proporcionado
por int.
float: El tipo de dato float es un dato en coma flotante IEEE 754 de 32 bits y precisión
simple. Al igual que con byte y short, se recomienda usar un float (en vez de un double) si
necesita ahorrar memoria en grandes array de números en coma flotante. Este tipo de
dato nunca debería ser usado para valores precisos como, por ejemplo, divisas.
double: El tipo de dato double es un dato en coma flotante IEEE 754 de 64 bits y precisión
doble. Su rango de valores está fuera del ámbito de este tema, pero se detalla en la
sección 4.2.3 de la Especificación del lenguaje Java. Normalmente este tipo de dato es la
elección predeterminada para valores decimales. Como ya se ha mencionado, este tipo de
dato no se debería utilizar para valores precisos como, por ejemplo, divisas.
boolean: El tipo de dato boolean solamente tiene dos valores posibles: true (verdadero)
y false (falso). Utilice este tipo de datos como conmutadores para la evaluación de
condiciones verdadero/falso. Este tipo de dato representa un bit de información, pero su
«tamaño» es algo que no está definido con precisión.
char: El tipo de dato char es un solo carácter Unicode de 16 bits. Tiene un valor mínimo
de '\u0000' (o «0») y un máximo de '\uffff' (o 65.535 inclusive).
Todos los tipos de datos indicados anteriormente son objetos. No hay tipos primitivos
como en Java. Esto significa que se puede llamar a métodos en un Int, Long, etc.
El prefijo def, se utiliza para crear una función, ésta puede ser una función que reciba o no
parámetros.
Enlaces de tipos a variables. Comprobación de tipos.
¿Es su lenguaje dinámica o estáticamente tipado?
Scala es de tipado estático. Scala está equipado con un sistema de tipos expresivos que
refuerza a que las abstracciones de tipos se usen en forma coherente y segura. El tipado
estático es cuando el chequeo de tipificación se realiza durante el tiempo de compilación,
es decir, permite que los errores de programación sean detectados antes, y que la
ejecución del programa sea más eficiente.
¿Es su lenguaje fuerte o débilmente tipado?
Además Scala es de tipado fuerte, no se permiten violaciones de los tipos de datos, es
decir, dada una variable de un tipo concreto, no se puede usar como si fuera una variable
de otro tipo distinto a menos que se haga una conversión.
Tiempo de vida de las variables.
Como en Scala, todo se declara como un objeto, Se puede definir objeto como: “el
encapsulamiento de un conjunto de operaciones (métodos), que pueden ser invocados
externamente y, de un estado que recuerda el efecto de los servicios".
Un objeto, además de un estado interno, presenta una interfaz para poder interactuar con
el exterior. Es por esto, que se dice que en la programación orientada a objetos "se unen
datos y procesos", y no como en su predecesora, la programación estructurada, en la que
estaban separados en forma de variables y funciones.
Un objeto consta de:
Tiempo de vida: La duración de un objeto en un programa siempre está limitada en el
tiempo. La mayoría de los objetos sólo existen durante una parte de la ejecución del
programa.
Los objetos son creados mediante un mecanismo denominado instanciación, y cuando
dejan de existir se dice que son destruidos.
Estado: Todo objeto posee un estado, definido por sus atributos. Con él se definen las
propiedades del objeto, y el estado en que se encuentra en un momento determinado de
su existencia.
Comportamiento: Todo objeto ha de presentar una interfaz, definida por sus métodos,
para que el resto de objetos que componen los programas puedan interactuar con él. El
equivalente de un objeto en el paradigma estructurado sería una variable. Así mismo la
instanciación de objetos equivaldría a la declaración de variables, y el tiempo de vida de
un objeto al ámbito de una variable.
Como Scala es un lenguaje que utiliza un modelo puro de orientación a objetos, el tiempo
de vida de las variables, es durante el tiempo de ejecución de sus programas, además
como los objetos son creados mediante el mecanismo de instanciación, cuando estos
dejan de existir, éstos son destruidos.
Ámbito de las variables.
1.- En el ámbito principal del intérprete se define el valor de las variables x (10) e y (20),
así como la función prueba.
La ejecución de prueba (3) crea un nuevo ámbito de evaluación, dentro del ámbito
principal, en el que se ejecuta el cuerpo de la función.
3. En el ámbito de evaluación se liga el valor de z (argumento de prueba) con el valor 3
(parámetro con el que se realiza la llamada).
4.- En este nuevo ámbito se ejecuta el cuerpo de la función: se crea la variable local x con
el valor 0 y se evalúa la expresión x+y+z. El valor de x y z están definidos en el propio
ámbito local (0 y 3). El valor de y se obtiene del entorno padre: 20. El resultado es 23.
5.-En primer lugar se realizan las invocaciones a g. Cada una crea un ámbito local en el
que se evalúa la función. Las invocaciones devuelven 13 y 15 respectivamente.
6.-Después se realiza la invocación a f con esos valores 13 y 15. Esta invocación vuelve a
crear un ámbito local en el que se evalúa la expresión x+y+z, devolviendo 33.
Descargar