Cero a Zig 09: Comentarios y Números

Published: 2024-08-17

Imágen del meme 'Matemáticas hijo'
¡Matemáticas hijo!

En este artículo vemos 3 conceptos: Comentarios, números y operaciones matemáticas.

Comentarios

Hasta el momento lo único que hemos escrito es código. Pero existen multitud de ocasiones donde queremos escribir apuntes, recordatorios, explicaciones, etc. Para esto sirven los comentarios.

Un comentario es un texto que es ignorado por Zig. Dentro de un comentario podemos escribir cualquier cosa, sin importar las reglas de Zig.

Los comentarios inician con doble slash //, y terminan cuando acaba la linea.

const std = @import("std");

// Este es un comentario
pub fn main() !void {
    // Este también es un comentario
    std.debug.print("Hola", .{});
}

Una vez que iniciamos un comentario con doble slash, la única forma de terminarlo es con una linea nueva.

Si quieres un comentario que abarque varias lineas, cada linea debe iniciar con doble slash:

const std = @import("std");

pub fn main() !void {
    // Este es un comentario
    // que ocupa 3 lineas
    // de texto :D
    std.debug.print("Hola", .{});
}

También puedes escribir un comentario al final de una linea con código, pero no es recomendable.

const std = @import("std");

pub fn main() !void {  // Este es un comentario al final
    std.debug.print("Hola", .{}); // Este también
}

A partir de ahora, utilizaré comentarios en el código para explicar mejor los conceptos.

Strings vs comentarios

Los comentarios no pueden ir dentro de un string:

const std = @import("std");

pub fn main() !void {
    const nombre = "Juan // no es comentario"
    std.debug.print("Hola {s}", .{nombre});
}
Hola Juan

Números

Hay un concepto importante que aprenderemos en un próximo artículo llamado “Tipos de datos”. Pero por ahora, hablaremos solo de una parte pequeña: números.

No necesito explicarte qué son los números. Lo que sí necesito es explicar cómo se utilizan en Zig, y como se diferencian de los strings.

Primero, vamos a imprimir un número. El código es el siguiente:

const std = @import("std");

pub fn main() !void {
    std.debug.print("{d}", .{322}); 
}

Nota que el número no tiene comillas. Es 322, no "322".

Al ejecutarlo en el terminal con zig build run obtenemos:

Codigo

Nota en la línea 4 qué formato estamos utilizando: {d}. Este formato permite imprimir números.

También podemos utilizar números en variables:

const std = @import("std");

pub fn main() !void {
    const edad = 32; 
    // Imprime: `Tengo 32 años`
    std.debug.print("Tengo {d} años", .{edad});
}

También podemos utilizar números negativos: -20;

Números, no strings

Quiero recalcar este punto. Estamos escribiendo 123, no "123". No utilizamos comillas.

Esto es importante porque estos dos son cosas diferentes. Una cosa es un número, y otra cosa es un texto (string).

123 es un número. Podemos realizar operaciones matemáticas con él. "123" no es un número, es un string. Solo que resulta que los caracteres son el 1, 2 y 3. Pero no podemos hacer matemática con un string.

Este es un punto de confusión común cuando se aprende a programar.

Números enteros, técnicamente (int)

Técnicamente, hay muchos tipos de números. Lo que estamos utilizando hasta ahora son números enteros, que en ingles se llaman “integer numbers”.

Ya que en programación todo es inglés y abreviaciones, en vez de decir “integer numbers”, se les conoce como “int”.

A partir de ahora también diré int cuando me refiera a los números enteros.

Matemáticas

Ahora que sabemos cómo crear números (int), podemos hacer operaciones con ellos.

Zig ofrece las operaciones que conoces: suma +, resta -, multiplicación * y división /.

const std = @import("std");

pub fn main() !void {
    const r1 = 9 + 3;   // 12
    const r2 = 9 - 3;   // 6
    const r1 = 9 * 3;   // 27
    const r1 = 9 / 3;   // 3

    // imprime: `12 6 27 3`
    std.debug.print("{d} {d} {d} {d}", .{r1, r2, r3, r4});
}

También puedes hacer varias operaciones a la vez, y agruparlas con paréntesis.

    const resultado = 80 + 20 / (5 - 3);

Y puedes utilizar variables:

const std = @import("std");

pub fn main() !void {
    const largo = 150; 
    const ancho = 70;
    const area = largo * ancho; 

    // Imprime `El área es 10500m2`
    std.debug.print("El área es {d}m2", .{area});
}

Números racionales (float)

Hemos visto números enteros, pero también podemos utilizar números reales. Estos se llaman float y vienen del ingles “floating point number”.

La mayor diferencia es que los float permiten usar decimales, mientras que los int no.

Para imprimir un float tambien se usa el formato {d}.

const std = @import("std");

pub fn main() !void {
    const ratio_de_cambio = 1.1005; 
    std.debug.print("El ratio es {d}", .{ratio_de_cambio});
}

También puedes utilizar las operaciones matemáticas con los float.

const std = @import("std");

pub fn main() !void {
    const r1 = 4.5 + 3.2; 
    const r2 = 3.3 - 1.1;
    const r3 = -55 * 0.2;
    const r4 = 33.33 / 3.3;
    std.debug.print("{d} {d} {d} {d}", .{r1, r2, r3, r4});
}

Ejercicios

Resuelve estos ejercicios en tu editor de texto VSCode. Al ejecutar debe salir en el terminal el mismo resultado que el del enunciado.

1: Tenemos un cubo con 2cm de ancho, 4cm de largo y 10cm de alto. Crea variables para cada uno, calcula el volumen del cubo, y imprímelo para que quede así:

El volumen del cubo es 80cm3

2: Un círculo tiene un radio de 73cm. Calcula su área tomando como valor de pi=3.141592, e imprime el siguiente mensaje:

El área del círculo es 16741.543768cm2