Published: 2024-08-11
Ahora veremos un concepto fundamental: Variables.
Todo el código lo escribiremos en el proyecto que creamos en el artículo anterior.
Vamos a plantear un escenario: Queremos escribir un programa que salude a una persona, le diga cuanto cuesta su orden, y se despida.
Digamos que la persona se llama Juan
. El código es así:
const std = @import("std");
pub fn main() !void {
std.debug.print("Hola {s}\n", .{"Juan"});
std.debug.print("Tu pedido cuesta {s} dolares\n", .{"20"});
std.debug.print("Adios {s}\n", .{"Juan"});
}
Y al ejecutarlo se muestra:
Como el código es sencillo, no hay ningún problema. ¿Pero qué pasaría si tuvieramos que imprimir el nombre 10 veces? Entonces tendríamos que repetirlo 10 veces.
const std = @import("std");
pub fn main() !void {
std.debug.print("Hola {s}\n", .{"Juan"});
std.debug.print("Hola {s}\n", .{"Juan"});
std.debug.print("Hola {s}\n", .{"Juan"});
std.debug.print("Hola {s}\n", .{"Juan"});
std.debug.print("Hola {s}\n", .{"Juan"});
std.debug.print("Hola {s}\n", .{"Juan"});
std.debug.print("Hola {s}\n", .{"Juan"});
std.debug.print("Hola {s}\n", .{"Juan"});
std.debug.print("Hola {s}\n", .{"Juan"});
std.debug.print("Hola {s}\n", .{"Juan"});
}
Un poco tedioso, pero nada imposible.
Ahora vamos a cambiar el programa: el nombre de la
persona será Maria
.
Lo que tenemos que hacer es cambiar Juan
por
Maria
en los 10 lugares, uno por uno.
Esto es bastante común, y existe una solución para no cambiar 10 veces, sino solamente una.
Una variable es como un almacén. Una variable almacena un valor bajo un nombre.
Por ejemplo, podemos decir que nombre = "Juan"
,
y a partir de ese momento cada vez que usemos
nombre
se reemplazará por Juan
.
Por ejemplo:
const std = @import("std");
pub fn main() !void {
const nombre = "Juan"; // [!code focus:2]
std.debug.print("Hola {s}\n", .{nombre});
}
En el código de arriba en la linea 4, hemos creado una
variable nombre
, y le hemos dado como valor "Juan"
.
Despues, en la linea 5 estamos utilizando la variable.
En vez de escribir .{"Juan"}
escribimos .{nombre}
.
Al ejecutar el programa se imprimirá Hola Juan
Podemos utilizar la variable las veces que queramos. Si imprimimos 10 veces se vería así:
const std = @import("std");
pub fn main() !void {
const nombre = "Juan";
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
}
Y al ejecutar se imprime 10 veces.
Ahora, si queremos cambiar Juan
por Maria
,
solo tenemos que hacerlo en un lugar:
const std = @import("std");
pub fn main() !void {
const nombre = "Maria";
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
std.debug.print("Hola {s}\n", .{nombre});
}
Para crear una variable se escribe:
const
=
;
Puedes crear varias variables, cada una en una línea. Por ejemplo:
const nombre = "Pedro";
const edad = "32";
const helado_favorito = "Vainilla";
Los nombres de las variables siguen algunas reglas:
_
_
.-
u otros.Por ejemplo, los siguientes nombres son válidos:
_nombre
apellido
nombres_y_apellidos
numeroDeVentas
ratio_fiscal_2
Los siguientes nombres son inválidos:
Nombre // inicia con N mayuscula
3_gatos // inicia con un número
nombres y apellidos // tiene espacios
apelido-paterno // tiene un guión
Otro dato importante es que solo se puede crear una variable con un nombre una vez. Por ejemplo:
En el código de arriba hay un error. Cuando aparecen lineas punteadas rojas significa que hay un error.
Si colocas tu mouse encima de la palabra subrayada aparecerá un mensaje:
El error es redeclaration of local constant 'nombre'
.
Significa “redeclaración de constante local ‘nombre’”.
Hay algunas palabras raras, pero quiere decir que estas volviendo a crear una variable con un nombre ya ocupado.
Para solucionar el error, cambia el nombre de la variable.
Si creas variables, y no las utilizas despues, tendrás este error:
unused local constant
: “constante local inutilizada”.
Zig no nos permite crear una variable y dejarla olvidada. Si creamos una variable, la tenemos que usar.
Para solucionar el error, imprime la variable, o elimínala, si no la vas a utilizar aún.
En el siguiente artículo aprenderemos los conceptos: comentarios, números y operaciones matemáticas.
Resuelve estos ejercicios en tu editor de texto VSCode. Al ejecutar debe salir en el terminal el mismo resultado que el del enunciado.
Tu respuesta no necesita ser exáctamente la misma a la que está aquí, pero debería funcionar.
1: Crea una variable nombre
con valor "John"
,
y una variable apellido
con valor "Doe"
.
Imprime ambas utilizando formatos.
2: Necesito un programa que imprima el siguiente mensaje:
Mi empresa aún no tiene un nombre fijo, así que necesito
poder cambiar ACME inc
fácilmente después.
3: También necesito un programa que imprima una lista de invitados:
Como puedes ver, aun está el nombre provisional ACME inc
.
Pero también hay nombres provisionales de las áreas de la
empresa: Área A
, Área B
y Área C
. Estos nombres
eventualmente cambiarán, asi que necesito poder cambiarlos
después en un único lugar. Los nombres de las personas
no cambiarán.
4: Mis socios y yo nos pusimos de acuerdo. Necesito el programa
para imprimir la lista de invitados. El nombre final de la
empresa es AXM SAC
, y las 3 áreas son (en orden):
Administración
, Tesorería
y Ventas
.
La lista debe verse así: