Compare commits
No commits in common. "5f2912f76a7e813942d32b480b9bb86f3c402529" and "7768e3c2067ff16ac6beb0f5890c75447b5afc99" have entirely different histories.
5f2912f76a
...
7768e3c206
@ -16,7 +16,7 @@ export default defineConfig({
|
|||||||
markdown: {
|
markdown: {
|
||||||
shikiConfig: {
|
shikiConfig: {
|
||||||
themes: {
|
themes: {
|
||||||
light: "light-plus",
|
light: "catppuccin-latte",
|
||||||
dark: "dark-plus"
|
dark: "dark-plus"
|
||||||
},
|
},
|
||||||
transformers: [
|
transformers: [
|
||||||
|
BIN
public/img/blog/es/tutorial/009-zig.jpg
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
public/img/blog/es/tutorial/010-zig.jpg
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
public/img/blog/es/tutorial/011-zig.jpg
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
public/img/blog/es/tutorial/012-zig.jpg
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
public/img/blog/es/tutorial/013-zig.jpg
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
public/img/blog/es/tutorial/014-zig.jpg
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
public/img/blog/es/tutorial/015-zig.jpg
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
public/img/blog/es/tutorial/016-zig.jpg
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
public/img/blog/es/tutorial/017-zig.jpg
Normal file
After Width: | Height: | Size: 5.2 KiB |
BIN
public/img/blog/es/tutorial/018-zig.jpg
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
public/img/blog/es/tutorial/019-zig.jpg
Normal file
After Width: | Height: | Size: 8.6 KiB |
BIN
public/img/blog/es/tutorial/020-zig.jpg
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
public/img/blog/es/tutorial/021-zig.jpg
Normal file
After Width: | Height: | Size: 8.8 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 3.1 KiB |
@ -13,148 +13,159 @@ image:
|
|||||||
|
|
||||||
En el artículo anterior escribimos nuestro primer programa:
|
En el artículo anterior escribimos nuestro primer programa:
|
||||||
Hola mundo. En este artículos vamos a modificar el mensaje
|
Hola mundo. En este artículos vamos a modificar el mensaje
|
||||||
y aprender un primer concepto llamado Strings.
|
y aprender el primer concepto: Strings
|
||||||
|
|
||||||
Como siempre, vamos a trabajar en el archivo `src/main.zig`
|
|
||||||
del proyecto que creamos anteriormente.
|
|
||||||
|
|
||||||
## Hola mundo modificado
|
|
||||||
|
|
||||||
En el programa que escribimos hay un monton de palabras,
|
|
||||||
y seguramente no las entiendas. Ahora mismo, lo que vamos a
|
|
||||||
hacer es modificar el texto que aparece.
|
|
||||||
|
|
||||||
Primero, observemos el código:
|
|
||||||
|
|
||||||
![Codigo](/img/blog/es/tutorial/1x/014.jpg)
|
|
||||||
|
|
||||||
Lo que nos importa ahora mismo es la frase `Hola mundo`.
|
|
||||||
Hay algunas particularidades:
|
|
||||||
|
|
||||||
- La frase tiene un color rojizo, mientras que
|
|
||||||
otras palabras tienen otros colores
|
|
||||||
- La frase inicia con una comilla doble `"`,
|
|
||||||
y acaba con otra.
|
|
||||||
- Hay dos caracteres: `\` y `n` que no aparecen
|
|
||||||
al ejecutar el programa.
|
|
||||||
|
|
||||||
Toda la frase es algo llamado un string. Un string
|
|
||||||
es una secuencia de letras (caracteres) que unidas
|
|
||||||
forman un texto.
|
|
||||||
|
|
||||||
Los strings se utilizan para representar texto.
|
|
||||||
Ahora lo vas a modificar.
|
|
||||||
|
|
||||||
En el código, reemplaza `Hola` por `Adios`, y
|
|
||||||
ejecuta el programa. Veras que ahora el mensaje
|
|
||||||
que sale es `Adios mundo!`
|
|
||||||
|
|
||||||
```zig
|
|
||||||
const std = @import("std");
|
|
||||||
|
|
||||||
pub fn main() !void {
|
|
||||||
std.debug.print("Adios mundo!\n", .{}); // [!code focus]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
![Codigo](/img/blog/es/tutorial/1x/015.jpg)
|
|
||||||
|
|
||||||
|
|
||||||
|
## Modificando "Hola mundo"
|
||||||
|
|
||||||
## Strings
|
Entra a la página web
|
||||||
|
[https://zig.fly.dev/p/xNluereqmgW](https://zig.fly.dev/p/xNluereqmgW),
|
||||||
|
donde se encuentra el programa "Hola mundo". Esta vez vamos a modificar
|
||||||
|
el mensaje.
|
||||||
|
|
||||||
Los strings tienen algunas reglas:
|
El resto de las palabras son magia negra. Te habras dado cuenta que
|
||||||
|
hay palabras en español: Hola y mundo.
|
||||||
|
|
||||||
Para que sea fácil diferenciarlos, los strings
|
![Zig online](/img/blog/es/tutorial/009-zig.jpg)
|
||||||
automáticamente se marcan de color rojizo.
|
|
||||||
|
|
||||||
Un string siempre inicia con una comilla doble `"`,
|
Hay varias cosas que notar:
|
||||||
y termina con otra. Las comillas marcan el inicio
|
|
||||||
y fin del string.
|
|
||||||
|
|
||||||
Si colocas una comilla dentro de un string, lo que
|
- Estan pintadas de color amarillo
|
||||||
pasará es que el string terminará antes. Eso lo podrás
|
- Tienen comillas dobles `"` al inicio y al final
|
||||||
ver por el color:
|
|
||||||
|
|
||||||
![Codigo](/img/blog/es/tutorial/1x/016.jpg)
|
Dentro de estas comillas `"` podemos escribir el texto que querramos.
|
||||||
|
|
||||||
En la imagen superior puedes notar que `Juan` está
|
Por ejemplo, si reemplazas `Hola` por `Adios` y ejecutas el programa,
|
||||||
de color azúl, no rojo.
|
se imprimirá `Adios mundo!`
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/010-zig.jpg)
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/011-zig.jpg)
|
||||||
|
|
||||||
|
Y también, si reemplazas `mundo` por otra palabra, se imprimirá
|
||||||
|
lo que escribiste.
|
||||||
|
|
||||||
|
Tambien puedes agregar otro texto en ambos lados. Por ejemplo:
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/012-zig.jpg)
|
||||||
|
|
||||||
|
|
||||||
Dentro de un string puede ir (casi) cualquier texto,
|
## Strings / cadenas de caracteres
|
||||||
con tal que esté dentro de la misma linea. Si
|
|
||||||
la linea termina antes que el string, tendrás un error.
|
|
||||||
|
|
||||||
![Codigo](/img/blog/es/tutorial/1x/017.jpg)
|
Los strings (cadenas de caracteres en inglés) son la forma
|
||||||
|
en la que almacenamos texto.
|
||||||
|
|
||||||
Si quieres un texto con una linea nueva se utiliza
|
Un string empieza con una comilla doble `"`, el contenido
|
||||||
una combinación especial de caracteres: `\n`.
|
del string, y termina con una comilla doble `"`.
|
||||||
Estos 2 caracteres cuando estan juntos se traducen
|
|
||||||
a una nueva linea:
|
|
||||||
|
|
||||||
|
Unos ejemplos de strings son: `"hola"`, `"adios"`,
|
||||||
|
`"multiples palabras"`, `"123456"`.
|
||||||
|
|
||||||
```zig
|
En el programa de arriba hay 2 strings:
|
||||||
const std = @import("std");
|
|
||||||
|
|
||||||
pub fn main() !void {
|
![Zig online](/img/blog/es/tutorial/013-zig.jpg)
|
||||||
std.debug.print("En la calle hay\nuna moto y un auto", .{}); // [!code focus]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
![Codigo](/img/blog/es/tutorial/1x/018.jpg)
|
Estos strings son lo que se muestra en pantalla al
|
||||||
|
ejecutar el programa.
|
||||||
|
|
||||||
|
Los strings tienen algunas características:
|
||||||
|
|
||||||
|
- En el código, los strings tienen otro color para que
|
||||||
|
sea más fácil identificarlos.
|
||||||
|
- No puede haber comillas dentro de un string.
|
||||||
|
|
||||||
|
El string termina cuando aparece la primera comilla.
|
||||||
|
Por ejemplo:
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/014-zig.jpg)
|
||||||
|
|
||||||
|
Aquí el string termina despues del `Hola `, la palabra
|
||||||
|
`familia` no es parte del string. Puedes ver que el
|
||||||
|
color amarillo del string termina en la segunda comilla,
|
||||||
|
y la palabra familia está de color blanco.
|
||||||
|
|
||||||
|
- No puede haber nuevas lineas en un string. Esto es un error:
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/015-zig.jpg)
|
||||||
|
|
||||||
|
Sin embargo, hay ocasiones donde queremos tener varias lineas
|
||||||
|
en un string. Para esto se utilizan 2 caracteres especiales:
|
||||||
|
`\n`. Estos nos permiten "señalar" que ahí va una linea nueva.
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/016-zig.jpg)
|
||||||
|
|
||||||
|
Estos caracteres especiales se conocen como "caracteres de escape".
|
||||||
|
Hay varios de ellos, pero no los veremos por ahora.
|
||||||
|
|
||||||
Esto último es llamado un "caracter de escape". Hay varios
|
|
||||||
de ellos, pero los veremos más adelante.
|
|
||||||
|
|
||||||
## Impresión
|
## Impresión
|
||||||
|
|
||||||
Imprimir es que nuestro programa muestre un texto en pantalla.
|
Imprimir es mostrar información a través de la pantalla. Esta
|
||||||
Todas las veces que hemos ejecutado nuestro programa, y
|
información puede ser palabras, letras, números, símbolos, etc.
|
||||||
aparecío un texto, hemos estado imprimiendo.
|
|
||||||
|
|
||||||
Zig tiene una instrucción para imprimir texto: `std.debug.print`, que hemos estado utilizando.
|
Para imprimir en Zig se escribe lo siguiente:
|
||||||
|
|
||||||
Esta instrucción tiene 3 partes:
|
![Zig online](/img/blog/es/tutorial/017-zig.jpg)
|
||||||
|
|
||||||
- 1: La instrucción en sí
|
`std.debug.print` es una invocación que imprime lo que tenga
|
||||||
- 2: El texto (string) a imprimir
|
dentro. Para poner algo dentro, se utilizan parentesis `()`.
|
||||||
- 3: Un dato adicional misterioso
|
|
||||||
|
|
||||||
![Codigo](/img/blog/es/tutorial/1x/019.jpg)
|
Dentro de los paréntesis va el string que queremos imprimir
|
||||||
|
y una secuencia misteriosa, así: `("Tu mensaje", .{})`.
|
||||||
|
|
||||||
Dentro del string (2) podemos poner lo que querramos.
|
Y finalmente, muy importante, todas las invocaciones
|
||||||
Pero el resto tiene que estar igual, los parentesis,
|
terminan con un punto y coma `;`. Si la invocación
|
||||||
comas, llaves y punto y coma.
|
no termina con su punto y coma tendrás un error misterioso.
|
||||||
|
|
||||||
Adicionalmente, todas las instrucciones terminan
|
Por ejemplo, para imprimir un nuevo texto `Me gusta Zig`
|
||||||
con un punto y coma `;`. Este señala que la instrucción
|
se escribiriá el código así:
|
||||||
terminó, y esta lista para ejecutarse.
|
|
||||||
|
|
||||||
En nuestro programa podemos tener varias intrucciones,
|
`std.debug.print("Me gusta Zig", .{});`
|
||||||
cada una imprimiendo algo nuevo:
|
|
||||||
|
|
||||||
```zig
|
Podemos tener varias invocaciones a la vez, y ejecutarlas en
|
||||||
const std = @import("std");
|
siempre que la invocación esté bien escrita.
|
||||||
|
|
||||||
pub fn main() !void {
|
![Zig online](/img/blog/es/tutorial/018-zig.jpg)
|
||||||
std.debug.print("Hola\n", .{}); // [!code focus:3]
|
|
||||||
std.debug.print("Soy fernando\n", .{});
|
|
||||||
std.debug.print("Adios\n", .{});
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
![Codigo](/img/blog/es/tutorial/1x/020.jpg)
|
Y al ejecutar el programa se imprimiran los mensajes en orden.
|
||||||
|
|
||||||
Cada instrucción se coloca en una linea nueva.
|
![Zig online](/img/blog/es/tutorial/019-zig.jpg)
|
||||||
|
|
||||||
|
|
||||||
## Siguiente
|
## Nuevas lineas
|
||||||
|
|
||||||
En el siguiente artículo continuaremos trabajando
|
Notarás que el mensaje se imprimió junto: `Mi primera impresiónMe gusta Zig`.
|
||||||
con impresiones, y aprenderemos qué es ese dato
|
|
||||||
adicional misterioso.
|
Este es un buen momento para presentar un concepto muy importante:
|
||||||
|
la computadora hace lo que le pides, no lo que quieres.
|
||||||
|
|
||||||
|
El código que ejecutamos no le pide a la computadora que imprima
|
||||||
|
una nueva linea `\n`. Así que la computadora no la imprime.
|
||||||
|
|
||||||
|
Para tener una nueva linea hay que incluirla en los strings, y con
|
||||||
|
eso al ejecutar estará cada linea separada:
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/020-zig.jpg)
|
||||||
|
|
||||||
|
![Zig online](/img/blog/es/tutorial/021-zig.jpg)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Glosario
|
||||||
|
|
||||||
|
No es necesario que memorices o entiendas estas palabras.
|
||||||
|
|
||||||
|
- String: "cadena de caracteres"
|
||||||
|
- `const`: abreviatura de "constante", que no cambia
|
||||||
|
- `std`: abreviatura de "estandar"
|
||||||
|
- `import`: "importar"
|
||||||
|
- `pub`: abreviatura de "público", que es accesible
|
||||||
|
- `fn`: abreviatura de "función". en este artículo les llamé
|
||||||
|
invocaciones
|
||||||
|
- `void`: "vacio"
|
||||||
|
- `main`: "principal"
|
||||||
|
- `debug`: el debugging es un proceso mediante el cual
|
||||||
|
se eliminan errores (tambien conocidos como "bugs")
|
||||||
|
- `print`: "imprimir"
|
||||||
|
|
||||||
|
|
||||||
|
@ -189,41 +189,4 @@ agruparlas con paréntesis.
|
|||||||
|
|
||||||
## Números racionales (float)
|
## 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"](https://es.wikipedia.org/wiki/Coma_flotante).
|
|
||||||
|
|
||||||
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}`.
|
|
||||||
|
|
||||||
```zig
|
|
||||||
const std = @import("std");
|
|
||||||
|
|
||||||
pub fn main() !void {
|
|
||||||
const ratio_de_cambio = 1.1005; // [!code focus:2]
|
|
||||||
std.debug.print("El ratio es {d}", .{ratio_de_cambio});
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
También puedes utilizar las operaciones matemáticas con
|
|
||||||
los `float`.
|
|
||||||
|
|
||||||
```zig
|
|
||||||
const std = @import("std");
|
|
||||||
|
|
||||||
pub fn main() !void {
|
|
||||||
const r1 = 4.5 + 3.2; // [!code focus:5]
|
|
||||||
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});
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|