Compare commits
No commits in common. "8e8cb10d3bdc95d78168f5c9d814edb532899536" and "1ba7cce42f409668c1910dbfcbe0026927d0ebb8" have entirely different histories.
8e8cb10d3b
...
1ba7cce42f
@ -84,13 +84,4 @@ pre.astro-code>code .line::before {
|
||||
font-weight: var(--shiki-dark-font-weight) !important;
|
||||
text-decoration: var(--shiki-dark-text-decoration) !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* isso */
|
||||
#isso-thread textarea {
|
||||
color: black;
|
||||
}
|
||||
|
||||
#isso-thread input {
|
||||
color: black;
|
||||
}
|
||||
}
|
BIN
public/img/blog/es/tutorial/1x/004.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 7.4 KiB |
Before Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 7.4 KiB |
@ -6,7 +6,7 @@ lang = lang ?? "en";
|
||||
---
|
||||
|
||||
<!doctype html>
|
||||
<html lang={lang}>
|
||||
<html lang={lang ?? "en"}>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
@ -68,22 +68,8 @@ lang = lang ?? "en";
|
||||
<slot />
|
||||
</div>
|
||||
|
||||
<div class="pt-4 border-t border-c-on-bg">
|
||||
<h3>Comments/Comentarios</h3>
|
||||
<section id="isso-thread"
|
||||
|
||||
>
|
||||
<noscript>Javascript needs to be activated to view comments.</noscript>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<div class="min-h-40"></div>
|
||||
</div>
|
||||
</NavigationLayout>
|
||||
|
||||
<script data-isso="https://comments.araozu.dev/"
|
||||
data-isso-lang={lang}
|
||||
src="https://comments.araozu.dev/js/embed.min.js"
|
||||
></script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,9 +0,0 @@
|
||||
---
|
||||
import BlogLayout from "./BlogLayout.astro";
|
||||
|
||||
let { frontmatter } = Astro.props;
|
||||
---
|
||||
|
||||
<BlogLayout lang="es" frontmatter={frontmatter}>
|
||||
<slot />
|
||||
</BlogLayout>
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
layout: ../../../layouts/BlogLayoutEs.astro
|
||||
layout: ../../../layouts/BlogLayout.astro
|
||||
title: "¿Con qué lenguaje de programación se crean los lenguajes de programación?"
|
||||
description: |
|
||||
Vista superior de cómo funciona un lenguaje de programación
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
layout: ../../../layouts/BlogLayoutEs.astro
|
||||
layout: ../../../layouts/BlogLayout.astro
|
||||
title: "01: Programación desde cero absoluto con Zig"
|
||||
description: |
|
||||
Aprendé a programar desde completamente cero, utilizando el lenguaje
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
layout: ../../../layouts/BlogLayoutEs.astro
|
||||
layout: ../../../layouts/BlogLayout.astro
|
||||
title: "02: Programación desde cero absoluto con Zig: Fundamentos"
|
||||
description: |
|
||||
Fundamentos de la computación, programas, componentes
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
layout: ../../../layouts/BlogLayoutEs.astro
|
||||
layout: ../../../layouts/BlogLayout.astro
|
||||
title: "03: Programación desde cero: Hola mundo"
|
||||
description: |
|
||||
Escribí el tradicional programa "Hola mundo" por tí mismo!
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
layout: ../../../layouts/BlogLayoutEs.astro
|
||||
layout: ../../../layouts/BlogLayout.astro
|
||||
title: "04: Programación desde cero: Modificando el hola mundo"
|
||||
description: |
|
||||
Impresión, strings/cadenas y stdout.
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
layout: ../../../layouts/BlogLayoutEs.astro
|
||||
layout: ../../../layouts/BlogLayout.astro
|
||||
title: "05: Cero a Zig: Instalando VSCode y Zig"
|
||||
description: |
|
||||
Instalamos Zig y VSCode en nuestro computador
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
layout: ../../../layouts/BlogLayoutEs.astro
|
||||
layout: ../../../layouts/BlogLayout.astro
|
||||
title: "06: Cero a Zig: Terminal y Proyecto Zig"
|
||||
description: |
|
||||
Veremos el terminal y cómo crear/ejecutar un proyecto de Zig
|
||||
|
@ -1,8 +1,8 @@
|
||||
---
|
||||
layout: ../../../layouts/BlogLayoutEs.astro
|
||||
title: "07: Cero a Zig - Impresión con formatos"
|
||||
layout: ../../../layouts/BlogLayout.astro
|
||||
title: "07: Cero a Zig - Variables"
|
||||
description: |
|
||||
Imprimiendo información adicional.
|
||||
Introducción a las variables
|
||||
pubDate: "2024-08-10"
|
||||
tags: ["tech", "lenguajes", "intro", "tutorial", "zig", "VSCode"]
|
||||
image:
|
||||
@ -11,76 +11,169 @@ image:
|
||||
caption: ""
|
||||
---
|
||||
|
||||
En este artículo aprenderemos más acerca de la impresión,
|
||||
especialmente un aspecto importante para futúros artículos:
|
||||
formatos.
|
||||
Ahora veremos un concepto fundamental: Variables.
|
||||
|
||||
## Formato de impresión
|
||||
Todo el código lo escribiremos en el proyecto que creamos
|
||||
en el artículo anterior.
|
||||
|
||||
El código para imprimir texto tiene dos partes:
|
||||
|
||||
## Motivación
|
||||
|
||||
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í:
|
||||
|
||||
```zig
|
||||
// --- 1 --- -2-
|
||||
std.debug.print("formato", .{});
|
||||
```
|
||||
|
||||
- 1: un formato (string)
|
||||
- 2: datos adicionales
|
||||
|
||||
Hasta ahora utilizamos el primer string (1) para imprimir
|
||||
nuestro texto. Pero en (1) podemos poner unas secuencias
|
||||
especiales, que permiten colocar información adicional.
|
||||
Esta información adicional se coloca en (2).
|
||||
|
||||
Por ejemplo, podemos colocar `{s}` para imprimir un
|
||||
texto adicional:
|
||||
|
||||
![Codigo](/img/blog/es/tutorial/1x/011.png)
|
||||
|
||||
En este caso, `{s}` será reemplazado por `Hola`, e
|
||||
imprimirá `Hola`.
|
||||
|
||||
Otro ejemplo:
|
||||
|
||||
![Codigo](/img/blog/es/tutorial/1x/012.jpg)
|
||||
|
||||
Aquí también, `{s}` será reemplazado por `Sara`.
|
||||
Al ejecutar obtendremos `Mi nombre es Sara, y el tuyo?`
|
||||
|
||||
Podemos colocar más de un formato:
|
||||
|
||||
![Codigo](/img/blog/es/tutorial/1x/013.jpg)
|
||||
|
||||
En este caso la información adicional se reemplaza en orden,
|
||||
e imprime `Soy Raul y ella es Rosa`.
|
||||
|
||||
Cuando se colocan datos adicionales, se separan con comas:
|
||||
|
||||
```zig
|
||||
.{"Raul", "Rosa"}
|
||||
// |
|
||||
```
|
||||
|
||||
En el siguiente artículo veremos un concepto
|
||||
llamado variables. Por ahora, solo necesitas
|
||||
saber que se pueden utilizar.
|
||||
|
||||
```zig
|
||||
const std = @import("zig");
|
||||
const std = @import("std");
|
||||
|
||||
pub fn main() !void {
|
||||
const nombre = "Juan";
|
||||
const apellido = "Perez";
|
||||
std.debug.print("{s} {s}", .{nombre, apellido});
|
||||
// Imprime: `Juan Perez`
|
||||
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:
|
||||
|
||||
## Otros formatos
|
||||
![Codigo](/img/blog/es/tutorial/1x/001.jpg)
|
||||
|
||||
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.
|
||||
|
||||
```zig
|
||||
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"});
|
||||
}
|
||||
```
|
||||
|
||||
![Codigo](/img/blog/es/tutorial/1x/002.jpg)
|
||||
|
||||
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.
|
||||
|
||||
|
||||
## Variables
|
||||
|
||||
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:
|
||||
|
||||
```zig
|
||||
const std = @import("std");
|
||||
|
||||
pub fn main() !void {
|
||||
const nombre = "Juan";
|
||||
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`
|
||||
|
||||
![Codigo](/img/blog/es/tutorial/1x/003.jpg)
|
||||
|
||||
Podemos utilizar la variable las veces que queramos.
|
||||
Si imprimimos 10 veces se vería así:
|
||||
|
||||
```zig
|
||||
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.
|
||||
|
||||
![Codigo](/img/blog/es/tutorial/1x/004.jpg)
|
||||
|
||||
Ahora, si queremos cambiar `Juan` por `Maria`,
|
||||
solo tenemos que hacerlo en un lugar:
|
||||
|
||||
```zig
|
||||
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});
|
||||
}
|
||||
```
|
||||
![Codigo](/img/blog/es/tutorial/1x/005.jpg)
|
||||
|
||||
|
||||
## Creando una variable
|
||||
|
||||
Para crear una variable se escribe:
|
||||
|
||||
- `const`
|
||||
- El nombre de la variable
|
||||
- `=`
|
||||
- El valor de la variable
|
||||
- `;`
|
||||
|
||||
El nombre de la variable solo puede tener letras,
|
||||
números y guiones bajos. No puede tener espacios.
|
||||
|
||||
Puedes crear varias variables, cada una en una
|
||||
línea. Por ejemplo:
|
||||
|
||||
```zig
|
||||
const nombre = "Pedro";
|
||||
const edad = "32";
|
||||
const helado_favorito = "Vainilla";
|
||||
```
|
||||
|
||||
Hemos visto el formato `{s}`, pero existen muchos más,
|
||||
que aprenderemos a medida que los necesitemos.
|
||||
|
||||
|
||||
|
||||
|
@ -1,224 +0,0 @@
|
||||
---
|
||||
layout: ../../../layouts/BlogLayoutEs.astro
|
||||
title: "08: Cero a Zig - Variables"
|
||||
description: |
|
||||
Introducción a las variables
|
||||
pubDate: "2024-08-11"
|
||||
tags: ["tech", "lenguajes", "intro", "tutorial", "zig", "VSCode"]
|
||||
image:
|
||||
url: ""
|
||||
alt: ""
|
||||
caption: ""
|
||||
---
|
||||
|
||||
Ahora veremos un concepto fundamental: Variables.
|
||||
|
||||
Todo el código lo escribiremos en el proyecto que creamos
|
||||
en el artículo anterior.
|
||||
|
||||
|
||||
## Motivación
|
||||
|
||||
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í:
|
||||
|
||||
```zig
|
||||
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:
|
||||
|
||||
![Codigo](/img/blog/es/tutorial/1x/001.jpg)
|
||||
|
||||
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.
|
||||
|
||||
```zig
|
||||
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"});
|
||||
}
|
||||
```
|
||||
|
||||
![Codigo](/img/blog/es/tutorial/1x/002.jpg)
|
||||
|
||||
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.
|
||||
|
||||
|
||||
## Variables
|
||||
|
||||
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:
|
||||
|
||||
```zig
|
||||
const std = @import("std");
|
||||
|
||||
pub fn main() !void {
|
||||
const nombre = "Juan";
|
||||
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`
|
||||
|
||||
![Codigo](/img/blog/es/tutorial/1x/003.jpg)
|
||||
|
||||
Podemos utilizar la variable las veces que queramos.
|
||||
Si imprimimos 10 veces se vería así:
|
||||
|
||||
```zig
|
||||
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.
|
||||
|
||||
![Codigo](/img/blog/es/tutorial/1x/004.jpg)
|
||||
|
||||
Ahora, si queremos cambiar `Juan` por `Maria`,
|
||||
solo tenemos que hacerlo en un lugar:
|
||||
|
||||
```zig
|
||||
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});
|
||||
}
|
||||
```
|
||||
![Codigo](/img/blog/es/tutorial/1x/005.jpg)
|
||||
|
||||
|
||||
## Creando una variable
|
||||
|
||||
Para crear una variable se escribe:
|
||||
|
||||
- `const`
|
||||
- El nombre de la variable
|
||||
- `=`
|
||||
- El valor de la variable
|
||||
- `;`
|
||||
|
||||
El nombre de la variable solo puede tener letras,
|
||||
números y guiones bajos. No puede tener espacios.
|
||||
|
||||
Puedes crear varias variables, cada una en una
|
||||
línea. Por ejemplo:
|
||||
|
||||
```zig
|
||||
const nombre = "Pedro";
|
||||
const edad = "32";
|
||||
const helado_favorito = "Vainilla";
|
||||
```
|
||||
|
||||
## Error de duplicado
|
||||
|
||||
Otro dato importante es que solo se puede crear
|
||||
una variable con un nombre una vez. Por ejemplo:
|
||||
|
||||
![Codigo](/img/blog/es/tutorial/1x/006.jpg)
|
||||
|
||||
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:
|
||||
|
||||
![Codigo](/img/blog/es/tutorial/1x/007.jpg)
|
||||
|
||||
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.
|
||||
|
||||
|
||||
## Error con variables no utilizadas
|
||||
|
||||
Si creas variables, y no las utilizas despues,
|
||||
tendrás este error:
|
||||
|
||||
![Codigo](/img/blog/es/tutorial/1x/008.jpg)
|
||||
|
||||
`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.
|
||||
|
||||
|
||||
## Próximamente
|
||||
|
||||
En el siguiente artículo aprenderemos los conceptos:
|
||||
comentarios, números y operaciones matemáticas.
|
||||
|
||||
|
||||
|
@ -1,187 +0,0 @@
|
||||
---
|
||||
layout: ../../../layouts/BlogLayoutEs.astro
|
||||
title: "09: Cero a Zig - Comentarios y Números"
|
||||
description: |
|
||||
Comentarios, números y operaciones matemáticas
|
||||
pubDate: "2024-08-17"
|
||||
tags: ["tech", "lenguajes", "intro", "tutorial", "zig", "VSCode"]
|
||||
image:
|
||||
url: "/img/blog/es/tutorial/1x/009-matematicas.jpg"
|
||||
alt: "Imágen del meme 'Matemáticas hijo'"
|
||||
caption: "¡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.
|
||||
|
||||
|
||||
```zig
|
||||
// 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:
|
||||
|
||||
```zig
|
||||
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 en
|
||||
medio de una linea con código, pero no
|
||||
es recomendable.
|
||||
|
||||
```zig
|
||||
pub fn main() !void { // Este es un comentario
|
||||
std.debug.print("Hola", .{}); // Este también
|
||||
}
|
||||
```
|
||||
|
||||
A partir de ahora, utilizaré comentarios en el código
|
||||
para explicar mejor los conceptos.
|
||||
|
||||
|
||||
## 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:
|
||||
|
||||
```zig
|
||||
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](/img/blog/es/tutorial/1x/010.jpg)
|
||||
|
||||
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:
|
||||
|
||||
```zig
|
||||
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 soporta las operaciones que conoces: suma `+`,
|
||||
resta `-`, multiplicación `*` y división `/`.
|
||||
|
||||
```zig
|
||||
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.
|
||||
|
||||
```zig
|
||||
const resultado = 80 + 20 / (5 - 3);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## Números racionales (float)
|
||||
|
||||
|