Anuncios

Bienvenidos sean a este post, hoy hablaremos sobre tres conceptos basicos para cualquier lenguaje como son las variables, bloques y literales, vamos a comenzar con el mas simple que son los literales.

Anuncios
Anuncios

Los literales son las expresiones fijas que no pueden ser modificadas, por ejemplo en el ejemplo del post de estructura basica nuestro literal es el mensaje Hola, Mundo! que esta entre comillas, como este no esta sujeto a nada no puedes modificar ese valor bajo ninguna circunstancia por eso se llaman literales.

Antes de pasar a hablar de las variables hablemos sobre los bloques, en este caso se llama a bloques a las llaves que encierran una informacion, veamos su sintaxis:

{
... instrucciones ...
}

Esto es su sintaxis pero en general no lo ven de forma aislada sino como parte de algo, por ejemplo los bloques son el cuerpo de las clases, de los metodos, de un bucle for, de un condicional if, etc, si observan en los codigos siempre habra aunque sea un bloque donde sera una llave que abre y otra que cierra.

Anuncios

Despues de haber hablado sobre dos temas bien simples pasemos a hablar de las variables, estas son aquellas que si podemos modificar, a diferencia de los literales, porque como su nombre lo indica pueden variar, en general se establece a una variable como un lugar para reservar un espacio de memoria para almacenar informacion, la sintaxis de declaracion es bien simple:

TipoDato NombreVariable;
Anuncios

Este es su formato mas basico, que es el tipo de dato y el nombre de la variable, el tipo de dato puede ser int, string, double, etc, donde va a depender de que tipo podemos almacenar, por ejemplo int o double esta pensado para almacenar numeros, el primero de tipo entero (sin comas), el segundo doble (con comas), en cambio string permite almacenar texto, luego le asignaremos un nombre, los nombres pueden contener letras y numeros e inclusive el guion bajo o mas conocido como undercore (_) pero los nombres no pueden empezar con numeros, tampoco pueden ser solo numeros ni contener caracteres especiales como #, *, $, ñ. ó, etc., por ultimo tampoco pueden usarse las palabras reservadas del lenguaje, usualmente en nuestro lenguaje este error no ocurre pero si en los de habla anglosajona.

Anuncios

Si bien esta es la forma mas basica de declarar una variable otra forma puede ser de la siguiente manera:

TipoDato NombreVariable = Valor;

Como pueden ver es similar a la anterior pero la diferencia es que va a tener un valor asignado, esto lo vimos en el post anterior, y en el caso anterior no tiene ninguno, veamos el siguiente ejemplo para entenderlo:

variable.cs

using System;

public class Program
{
	static int Main()
	{
		string nombre;
		int edad;
		DateTime fecha;
		nombre = "Tinchicus";
		edad = 33;
		fecha = DateTime.Now;
		Console.WriteLine("Hola, " + nombre);
		Console.WriteLine("tu edad es de " + edad);
		Console.WriteLine("y la hora actual es " + fecha);
		return 0;
	}
}
Anuncios

En este caso tenemos un programa simple donde en el cuerpo del Main declaramos tres variables:

  • la primera de tipo string se encarga de almacenar texto (para este caso el nombre)
  • el segundo caso tenemos una variable de tipo entera sera para almacenar numeros
  • el ultimo es de tipo DateTime donde la usaremos para almacenar horas y fechas
Anuncios

En este caso primero declaramos las variables, luego volvemos a usarlas pero en esta ocasion para definirlas, es decir que les asignamos un valor, podemos hacer literales como en el caso de nombre y edad, aunque esto se podria modificar luego, y fecha que almacenara el valor devuelto por el metodo DateTime.Now, por ultimo tendremos tres lineas para mostrar nuestros datos, veamos la salida:

C:\Users\tinchicus\Documents\Visual Studio 2019>variable.exe
Hola, Tinchicus
tu edad es de 33
y la hora actual es 10/03/2020 02:13:00 a.m.

C:\Users\tinchicus\Documents\Visual Studio 2019>
Anuncios

Como pueden observar el programa funciono correctamente y no obtuvimos ningun error, una variacion de este codigo puede ser:

using System;

public class Program
{
	static int Main()
	{
		string nombre = "Tinchicus";
		int edad = 33;
		DateTime fecha = DateTime.Now;
		Console.WriteLine("Hola, " + nombre);
		Console.WriteLine("tu edad es de " + edad);
		Console.WriteLine("y la hora actual es " + fecha);
		return 0;
	}
}
Anuncios

Si bien este codigo es similar al anterior salvo en el caso de que le asignamos un valor en el momento de la declaracion, ambos casos son validos pero es una mejor practica la primera forma con respecto a la segunda simplemente por un tema de al momento de depurarlo, ya hablaremos mas adelante sobre esto, o tener que buscar por un error es mas practico ver por un lado la declaracion y por otro lado la definicion, pero la segunda opcion si bien reduce nuestro codigo con menos lineas tambien nos dificulta sobre lo antes mencionado, en el siguiente video podemos ver su funcionamiento

Anuncios
Anuncios

Un ultimo tema sobre las variables, estas pueden ser locales o globales.

Las variables globales son aquellas que pueden ser alcanzadas por todos los metodos de una clase, en cambio las locales son aquellas que solamente tienen un alcance dentro del bloque del metodo pero no pueden ser usadas por el resto de la clase, por ejemplo en el codigo anterior tenemos las tres variables (nombre, edad, fecha) que son locales porque al estar definidas dentro del bloque de Main solamente estaran en memoria cuando se este utilizando dicho bloque, una vez que termine y Main salga de memoria estas variables tambien desaparecen.

Anuncios

En cambio si tuvieramos alguna funcion mas esta tampoco podria acceder a dichas variables porque no estan dentro de su alcance, veamos del ejemplo anterior como podriamos definir esas tres variables como globales:

using System;

public class Program
{
	static string nombre;
	static int edad;
	static DateTime fecha;
	
	static int Main()
	{
		nombre = "Tinchicus";
		edad = 33;
		fecha = DateTime.Now;
		Hola();
		Console.WriteLine("tu edad es de " + edad);
		Console.WriteLine("y la hora actual es " + fecha);
		return 0;
	}

	static void Hola()
	{
		Console.Write("Hola, " + nombre + ", co' te va?");
	}
}
Anuncios

En este caso tomamos las tres variables y las pusimos por fuera de Main y a su vez agregamos una nueva funcion llamada Hola, en todos los casos tuvimos que agregar la palabra static porque Main es de este tipo y por ende todos las funciones y variables por fuera de el que quieran interactuar deben ser del mismo tipo, mas adelante explicaremos con mas detalle porque pero por ahora cuando una funcion posee static los demas elementos deben ser static tambien salvo los internos del bloque, volviendo al codigo nuestra funcion Hola tiene un mensaje en la consola donde nos dice el valor de nombre y un mensaje harto complejo 😁.

Anuncios

Nuestro siguiente paso fue reemplazar la linea donde decia nuestro nombre en Main por la llamada a la nueva funcion, si lo probamos veremos el siguiente resultado

C:\Users\tinchicus\Documents\Visual Studio 2019>variable
Hola, Tinchicus, co' te va?
tu edad es 33
 y la hora actual es 11/03/2020 09:31:57 a.m.

C:\Users\tinchicus\Documents\Visual Studio 2019>
Anuncios
Anuncios

Observen como no solamente nos trajo el nuevo mensaje sino ademas pudo utilizar a nombre sin necesidad de que se lo pasemos, si nosotros no hubieramos hecho esta modificacion no se habria podido llegar a la variable y esto habria ocasionados dos posibles salidas:

  • en el mejor de los casos no trae la informacion
  • en el otro nos detiene el programa por un error

Tengan esto en cuenta a la hora de definir sus variables pero entonces cual es la ventaja de las locales contra las globales? En realidad tiene varias, la primera y mas evidente es que se liberan rapido y por ende liberan memoria, en cambio las globales siempre estaran hasta que se termine la clase o el programa, las locales son mas rapidas de acceder porque estan dentro del metodo que esta trabajando y nosotros podemos pasar los valores de las variables entre los metodos y clases pero eso lo veremos mas adelante con otros ejemplos.

Anuncios

Antes de finalizar vamos a hablar sobre las constantes, una constante es un valor que como en la vida real no puede ser modificado, es decir que una vez que nosotros definimos que una variable va a pasar a ser constante esta no podra ser modificada en ninguna parte del programa, en caso de hacerlo creara un error y saldra del programa, su sintaxis es simple:

const tipoDato nombreVariable = valor;
Anuncios

En los casos de las constantes siempre llevan como primer modificador la palabra const, despues ira el tipo de dato, puede ser un string, double, float, int, etc, el tipo de dato se ajustara a nuestras necesidades, despues tendremos el nombre de la variable que sera constante y por ultimo si o si debemos asignarle el valor que va a usar, no permite definirlo despues porque no podra ser modificado, para entender mejor su concepto veamos el siguiente ejemplo:

constante.cs

using System;

public class Program
{
	static int Main()
	{
		float radio;
		const float pi = 3.141592f;
		Console.Write("Ingresa el valor del radio: ");
		radio = float.Parse(Console.ReadLine());
		Console.Write(pi * (radio * radio));
		return 0;
	}
}
Anuncios

Con este simple codigo calcularemos el area de una circunferencia, observen como definimos a pi como constante, si se preguntan por la f esta es la forma que se le indica al lenguaje que es un float y no un double, luego le pediremos que ingresen un valor, lo almacenamos en radio y despues mostramos el resultado de multiplicar pi por radio al cuadrado ¯\_(ツ)_/¯

Nota: recuerden que ReadLine solo usa string y el float.Parse se usa para convertirlo en float.
Anuncios

Si lo compilamos y probamos el resultado sera el siguiente:

C:\Users\tinchicus\Documents\Visual Studio 2019>constante.exe
Ingresa el valor del radio: 20
1256,637
C:\Users\tinchicus\Documents\Visual Studio 2019>

Vamos a hacer una prueba, modifiquemos la siguiente linea:

radio = float.Parse(Console.ReadLine());

Por esta otra linea:

pi = float.Parse(Console.ReadLine());

Si lo volvemos a compilar, nos devolvera el siguiente error:

C:\Users\tinchicus\Documents\Visual Studio 2019>csc constante.cs
Microsoft (R) Visual C# Compiler version 4.8.3761.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.

This compiler is provided as part of the Microsoft (R) .NET Framework, but only
supports language versions up to C# 5, which is no longer the latest version. Fo
r compilers that support newer versions of the C# programming language, see http
://go.microsoft.com/fwlink/?LinkID=533240

constante.cs(10,3): error CS0131: La parte izquierda de una asignación debe ser
        una variable, una propiedad o un indizador

C:\Users\tinchicus\Documents\Visual Studio 2019>
Anuncios

En este caso el mismo compilador se da cuenta que estamos intentando modificar el valor de una constante por ende nos notifica que modifiquemos la parte izquierda de la asignacion por un elemento que si podamos modificar, por ejemplo la variable.

Anuncios

En resumen, hoy hemos visto que son los literales, que son los bloques, donde se usan, que son las variables, como se declaran, como se pueden definir, dos ejemplos con distintas sintaxis pero que producen el mismo resultado, de que forma pueden trabajar, cuales son los limites de cada uno, y un ejemplo de practica, tambien hemos visto que es una constante y como trabaja, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00