es blog: Add exercises
This commit is contained in:
parent
ccc50fbb7f
commit
6f8a8f260d
@ -257,5 +257,23 @@ pero intenta resolverlos por ti mismo antes.
|
|||||||
</Fragment>
|
</Fragment>
|
||||||
</Exercise>
|
</Exercise>
|
||||||
|
|
||||||
|
<Exercise>
|
||||||
|
6: Escribe un programa que imprima el siguiente texto
|
||||||
|
(fíjate en las lineas en blanco):
|
||||||
|
|
||||||
|
<Sh code={"linea 1\n\nlinea2\n\n\nlinea3"} />
|
||||||
|
|
||||||
|
<Fragment slot="solution">
|
||||||
|
```zig
|
||||||
|
const std = @import("std");
|
||||||
|
|
||||||
|
pub fn main() !void {
|
||||||
|
std.debug.print("linea 1\n\n", .{}); // [!code focus:3]
|
||||||
|
std.debug.print("linea 2\n\n\n", .{});
|
||||||
|
std.debug.print("linea 3", .{});
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</Fragment>
|
||||||
|
</Exercise>
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,6 +10,8 @@ image:
|
|||||||
alt: ""
|
alt: ""
|
||||||
caption: ""
|
caption: ""
|
||||||
---
|
---
|
||||||
|
import Exercise from "../../../components/Blog/Exercise.astro"
|
||||||
|
import Sh from "../../../components/Blog/Sh.astro"
|
||||||
|
|
||||||
En este artículo aprenderemos más acerca de la impresión,
|
En este artículo aprenderemos más acerca de la impresión,
|
||||||
especialmente un aspecto importante para futúros artículos:
|
especialmente un aspecto importante para futúros artículos:
|
||||||
@ -83,4 +85,27 @@ Hemos visto el formato `{s}`, pero existen muchos más,
|
|||||||
que aprenderemos a medida que los necesitemos.
|
que aprenderemos a medida que los necesitemos.
|
||||||
|
|
||||||
|
|
||||||
|
## Ejercicios
|
||||||
|
|
||||||
|
Resuelve estos ejercicios en tu editor de texto VSCode.
|
||||||
|
Al ejecutar debe salir en el terminal el mismo resultado
|
||||||
|
que el del enunciado.
|
||||||
|
|
||||||
|
Si estas atascado en un problema puedes mostrar la solución,
|
||||||
|
pero intenta resolverlos por ti mismo antes.
|
||||||
|
|
||||||
|
<Exercise>
|
||||||
|
1: Utiliza el formato `{s}` para imprimir:
|
||||||
|
|
||||||
|
<Sh code={"Hola mundo"} />
|
||||||
|
|
||||||
|
<Fragment slot="solution">
|
||||||
|
```zig
|
||||||
|
const std = @import("std");
|
||||||
|
|
||||||
|
pub fn main() !void {
|
||||||
|
std.debug.print("Hola {s}", .{"mundo"}); // [!code focus]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</Fragment>
|
||||||
|
</Exercise>
|
@ -10,6 +10,8 @@ image:
|
|||||||
alt: ""
|
alt: ""
|
||||||
caption: ""
|
caption: ""
|
||||||
---
|
---
|
||||||
|
import Exercise from "../../../components/Blog/Exercise.astro"
|
||||||
|
import Sh from "../../../components/Blog/Sh.astro"
|
||||||
|
|
||||||
Ahora veremos un concepto fundamental: Variables.
|
Ahora veremos un concepto fundamental: Variables.
|
||||||
|
|
||||||
@ -162,8 +164,6 @@ Para crear una variable se escribe:
|
|||||||
- El valor 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
|
Puedes crear varias variables, cada una en una
|
||||||
línea. Por ejemplo:
|
línea. Por ejemplo:
|
||||||
@ -174,6 +174,37 @@ const edad = "32";
|
|||||||
const helado_favorito = "Vainilla";
|
const helado_favorito = "Vainilla";
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Nombre de la variable
|
||||||
|
|
||||||
|
Los nombres de las variables siguen algunas reglas:
|
||||||
|
|
||||||
|
- El nombre inicia con letra minúscula o guión bajo `_`
|
||||||
|
- El nombre despues puede tener letras minúsculas, mayúsculas,
|
||||||
|
números o guiones bajos `_`.
|
||||||
|
- No pueden haber espacios, guiones `-` u otros.
|
||||||
|
|
||||||
|
Por ejemplo, los siguientes nombres son válidos:
|
||||||
|
|
||||||
|
```zig
|
||||||
|
_nombre
|
||||||
|
apellido
|
||||||
|
nombres_y_apellidos
|
||||||
|
numeroDeVentas
|
||||||
|
ratio_fiscal_2
|
||||||
|
```
|
||||||
|
|
||||||
|
Los siguientes nombres son inválidos:
|
||||||
|
|
||||||
|
```zig
|
||||||
|
Nombre // inicia con N mayuscula
|
||||||
|
3_gatos // inicia con un número
|
||||||
|
nombres y apellidos // tiene espacios
|
||||||
|
apelido-paterno // tiene un guión
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Error de duplicado
|
## Error de duplicado
|
||||||
|
|
||||||
Otro dato importante es que solo se puede crear
|
Otro dato importante es que solo se puede crear
|
||||||
@ -221,4 +252,143 @@ En el siguiente artículo aprenderemos los conceptos:
|
|||||||
comentarios, números y operaciones matemáticas.
|
comentarios, números y operaciones matemáticas.
|
||||||
|
|
||||||
|
|
||||||
|
## Ejercicios
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
<Exercise>
|
||||||
|
1: Crea una variable `nombre` con valor `"John"`,
|
||||||
|
y una variable `apellido` con valor `"Doe"`.
|
||||||
|
Imprime ambas utilizando formatos.
|
||||||
|
|
||||||
|
<Sh code={"John Doe"} />
|
||||||
|
|
||||||
|
<Fragment slot="solution">
|
||||||
|
```zig
|
||||||
|
const std = @import("std");
|
||||||
|
|
||||||
|
pub fn main() !void {
|
||||||
|
const nombre = "John"; // [!code focus:4]
|
||||||
|
const apellido = "Doe";
|
||||||
|
|
||||||
|
std.debug.print("{s} {s}\n", .{nombre, apellido});
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</Fragment>
|
||||||
|
</Exercise>
|
||||||
|
|
||||||
|
<Exercise>
|
||||||
|
2: Necesito un programa que imprima el siguiente mensaje:
|
||||||
|
|
||||||
|
<Sh code={"Bienvenido a ACME inc\n\nTu postulación a ACME inc ha sido aceptada.\nEn breve recibirás un correo con el código de conducta de ACME inc"} />
|
||||||
|
|
||||||
|
Mi empresa aún no tiene un nombre fijo, así que necesito
|
||||||
|
poder cambiar `ACME inc` fácilmente después.
|
||||||
|
|
||||||
|
<Fragment slot="solution">
|
||||||
|
```zig
|
||||||
|
const std = @import("std");
|
||||||
|
|
||||||
|
pub fn main() !void {
|
||||||
|
const empresa = "ACME inc"; // [!code focus:5]
|
||||||
|
|
||||||
|
std.debug.print("Bienvenido a {s}\n\n", .{empresa});
|
||||||
|
std.debug.print("Tu postulación a {s} ha sido aceptada.\n", .{empresa});
|
||||||
|
std.debug.print("En breve recibirás un correo con el código de conducta de {s}\n", .{empresa});
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</Fragment>
|
||||||
|
</Exercise>
|
||||||
|
|
||||||
|
<Exercise>
|
||||||
|
3: También necesito un programa que imprima una lista de invitados:
|
||||||
|
|
||||||
|
<Sh code={"Lista de invitados:\n\n"
|
||||||
|
+ "Área A de ACME inc: Rosa\n"
|
||||||
|
+ "Área A de ACME inc: María\n"
|
||||||
|
+ "Área A de ACME inc: Andrea\n"
|
||||||
|
+ "Área B de ACME inc: Rodrigo\n"
|
||||||
|
+ "Área B de ACME inc: Pedro\n"
|
||||||
|
+ "Área C de ACME inc: Raul\n"
|
||||||
|
+ "Área C de ACME inc: Ana\n"
|
||||||
|
} />
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
<Fragment slot="solution">
|
||||||
|
```zig
|
||||||
|
const std = @import("std");
|
||||||
|
|
||||||
|
pub fn main() !void {
|
||||||
|
const empresa = "ACME inc"; // [!code focus:13]
|
||||||
|
const area_1 = "Área A";
|
||||||
|
const area_2 = "Área B";
|
||||||
|
const area_3 = "Área C";
|
||||||
|
|
||||||
|
std.debug.print("Lista de invitados:\n\n", .{});
|
||||||
|
std.debug.print("{} de {}: Rosa\n", .{area_1, empresa});
|
||||||
|
std.debug.print("{} de {}: María\n", .{area_1, empresa});
|
||||||
|
std.debug.print("{} de {}: Andrea\n", .{area_1, empresa});
|
||||||
|
std.debug.print("{} de {}: Rodrigo\n", .{area_2, empresa});
|
||||||
|
std.debug.print("{} de {}: Pedro\n", .{area_2, empresa});
|
||||||
|
std.debug.print("{} de {}: Raul\n", .{area_3, empresa});
|
||||||
|
std.debug.print("{} de {}: Ana\n", .{area_3, empresa});
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</Fragment>
|
||||||
|
</Exercise>
|
||||||
|
|
||||||
|
<Exercise>
|
||||||
|
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í:
|
||||||
|
|
||||||
|
<Sh code={"Lista de invitados:\n\n"
|
||||||
|
+ "Administración de AXM SAC: Rosa\n"
|
||||||
|
+ "Administración de AXM SAC: María\n"
|
||||||
|
+ "Administración de AXM SAC: Andrea\n"
|
||||||
|
+ "Tesorería de AXM SAC: Rodrigo\n"
|
||||||
|
+ "Tesorería de AXM SAC: Pedro\n"
|
||||||
|
+ "Ventas de AXM SAC: Raul\n"
|
||||||
|
+ "Ventas de AXM SAC: Ana\n"
|
||||||
|
} />
|
||||||
|
|
||||||
|
<Fragment slot="solution">
|
||||||
|
```zig
|
||||||
|
const std = @import("std");
|
||||||
|
|
||||||
|
pub fn main() !void {
|
||||||
|
const empresa = "AXM SAC"; // [!code focus:13]
|
||||||
|
const area_1 = "Administración";
|
||||||
|
const area_2 = "Tesorería";
|
||||||
|
const area_3 = "Ventas";
|
||||||
|
|
||||||
|
std.debug.print("Lista de invitados:\n\n", .{});
|
||||||
|
std.debug.print("{} de {}: Rosa\n", .{area_1, empresa});
|
||||||
|
std.debug.print("{} de {}: María\n", .{area_1, empresa});
|
||||||
|
std.debug.print("{} de {}: Andrea\n", .{area_1, empresa});
|
||||||
|
std.debug.print("{} de {}: Rodrigo\n", .{area_2, empresa});
|
||||||
|
std.debug.print("{} de {}: Pedro\n", .{area_2, empresa});
|
||||||
|
std.debug.print("{} de {}: Raul\n", .{area_3, empresa});
|
||||||
|
std.debug.print("{} de {}: Ana\n", .{area_3, empresa});
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</Fragment>
|
||||||
|
</Exercise>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -10,6 +10,8 @@ image:
|
|||||||
alt: "Imágen del meme 'Matemáticas hijo'"
|
alt: "Imágen del meme 'Matemáticas hijo'"
|
||||||
caption: "¡Matemáticas hijo!"
|
caption: "¡Matemáticas hijo!"
|
||||||
---
|
---
|
||||||
|
import Exercise from "../../../components/Blog/Exercise.astro"
|
||||||
|
import Sh from "../../../components/Blog/Sh.astro"
|
||||||
|
|
||||||
En este artículo vemos 3 conceptos: Comentarios, números
|
En este artículo vemos 3 conceptos: Comentarios, números
|
||||||
y operaciones matemáticas.
|
y operaciones matemáticas.
|
||||||
@ -72,6 +74,23 @@ A partir de ahora, utilizaré comentarios en el código
|
|||||||
para explicar mejor los conceptos.
|
para explicar mejor los conceptos.
|
||||||
|
|
||||||
|
|
||||||
|
### Strings vs comentarios
|
||||||
|
|
||||||
|
Los comentarios no pueden ir dentro de un string:
|
||||||
|
|
||||||
|
```zig
|
||||||
|
const std = @import("std");
|
||||||
|
|
||||||
|
pub fn main() !void {
|
||||||
|
const nombre = "Juan // no es comentario"
|
||||||
|
std.debug.print("Hola {s}", .{nombre});
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
<Sh code="Hola Juan" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Números
|
## Números
|
||||||
|
|
||||||
Hay un concepto importante que aprenderemos en un
|
Hay un concepto importante que aprenderemos en un
|
||||||
@ -184,6 +203,21 @@ agruparlas con paréntesis.
|
|||||||
const resultado = 80 + 20 / (5 - 3);
|
const resultado = 80 + 20 / (5 - 3);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Y puedes utilizar variables:
|
||||||
|
|
||||||
|
```zig
|
||||||
|
const std = @import("std");
|
||||||
|
|
||||||
|
pub fn main() !void {
|
||||||
|
const largo = 150; // [!code focus:6]
|
||||||
|
const ancho = 70;
|
||||||
|
const area = largo * ancho; // [!code highlight]
|
||||||
|
|
||||||
|
// Imprime `El área es 10500m2`
|
||||||
|
std.debug.print("El área es {d}m2", .{area});
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user