From 8e8cb10d3bdc95d78168f5c9d814edb532899536 Mon Sep 17 00:00:00 2001 From: Araozu Date: Mon, 19 Aug 2024 17:16:08 -0500 Subject: [PATCH] Add Isso comments to /blog/* --- public/blog.css | 11 +- public/img/blog/es/tutorial/1x/004.png | Bin 2582 -> 0 bytes .../blog/es/tutorial/1x/009-matematicas.jpg | Bin 0 -> 34213 bytes public/img/blog/es/tutorial/1x/010.jpg | Bin 0 -> 1763 bytes public/img/blog/es/tutorial/1x/011.png | Bin 0 -> 7536 bytes public/img/blog/es/tutorial/1x/012.jpg | Bin 0 -> 6414 bytes public/img/blog/es/tutorial/1x/013.jpg | Bin 0 -> 7563 bytes src/layouts/BlogLayout.astro | 16 +- src/layouts/BlogLayoutEs.astro | 9 + src/pages/blog/es/lenguajes-01.md | 2 +- src/pages/blog/es/programacion-01.md | 2 +- src/pages/blog/es/programacion-02.md | 2 +- src/pages/blog/es/programacion-03.md | 2 +- src/pages/blog/es/programacion-04.md | 2 +- src/pages/blog/es/programacion-05.md | 2 +- src/pages/blog/es/programacion-06.md | 2 +- src/pages/blog/es/programacion-07.md | 240 ++++-------------- src/pages/blog/es/programacion-08.md | 224 ++++++++++++++++ src/pages/blog/es/programacion-09.md | 187 ++++++++++++++ 19 files changed, 503 insertions(+), 198 deletions(-) delete mode 100644 public/img/blog/es/tutorial/1x/004.png create mode 100644 public/img/blog/es/tutorial/1x/009-matematicas.jpg create mode 100644 public/img/blog/es/tutorial/1x/010.jpg create mode 100644 public/img/blog/es/tutorial/1x/011.png create mode 100644 public/img/blog/es/tutorial/1x/012.jpg create mode 100644 public/img/blog/es/tutorial/1x/013.jpg create mode 100644 src/layouts/BlogLayoutEs.astro create mode 100644 src/pages/blog/es/programacion-08.md create mode 100644 src/pages/blog/es/programacion-09.md diff --git a/public/blog.css b/public/blog.css index 7e38667..612bb93 100644 --- a/public/blog.css +++ b/public/blog.css @@ -84,4 +84,13 @@ pre.astro-code>code .line::before { font-weight: var(--shiki-dark-font-weight) !important; text-decoration: var(--shiki-dark-text-decoration) !important; } -} \ No newline at end of file +} + +/* isso */ +#isso-thread textarea { + color: black; +} + +#isso-thread input { + color: black; +} diff --git a/public/img/blog/es/tutorial/1x/004.png b/public/img/blog/es/tutorial/1x/004.png deleted file mode 100644 index 91009b1259b6aa6984c24bfac0386e294b100014..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2582 zcmeHJ`9B-j7S}~pZDV_iR%e2G8p|Nj+NvtH62w}2A4-)p6-#WxsA+8vV_zy#P0-uwsehkMVx=kxu3&b{Y*KKI;YTWd3+Gcsp* zczA>?%prDMo6Q~Lr;l@I93F_BY*;#{=!(u_=dOc%O zM2u3_0cXeXAdN#LAc6u%YjRtIbe&rKsfW`M2rnXfx|4gNjppe2Ix>>Y-7VTK((jvs60+bc>~6Q! znGq!Gng7&#Z>Mj(CuG?$jy>PNw|4YPEN4-SAaS_9zoK+O;iW-0YNjVX{!M>GnbeJx zd6K0534v^26!rs)QJLt~+SM=ZOx$k*EonKBP!&igq%AYX^Js7B;eiWm< z9W4uiK!!r2pG9}Y^IJBCmfTetWrR0x_NS-!(5B4$?p&SUaawt?n``-x=rmp0uy{X` zVnH7pZ?12&%iql{t-&t&choM7MR$&+V?+3u=(9BTL>3lo41-Yv37w)0v_5*!`4UE{2oUU+2!RH5hFncyRym(;y?LRCm;Tj^yS zym&T1i1uFYF772_<+SemM@6eSj7M&=fdS8_gKu3&2<}qqg?nGwn!1MJNEdbLUJ{9= z^7EjP+ZO_$;dl@@44O=+z4(Dj8ypXy~6>L`Z+O<{mA%6U{5N)s3^VkD8^?|ql{in+_bfs4jnNtmw=8|bvT>h zkzUOOi&&{qP5Yw8c^gG2wW{N7n+_PRwip})kfY%D`)jNAm@2zdb#4*PKN1gM>~`mT z*=2P^@6iTwWSjz2oOY2108kfVvi8uk@M(r%xDW(+WTyIV_#D$~S?98)sK@AqBTK3z zP-CY~zX%(#7}s($?{)w)M6j=9X-l!j^SM&i{%rkL^W5^fuWnRW_{za2Gg2O{Ehrlf zeVn_k2*@JpMy`23a!aaHMNiV|;r@O|4CIoSAkL95@I1h7Wiy(BG_7!=X}3Ti%F~Vb zVL`9tMg|w}O5F3o^ z#zf`i^V*^oAIw>v??7+H8sFbv>3k?aFo9$Z?MzOXT4itw2C7$EJaSW}h1ay@jrnvt zjg<&#ht+M^YH!mD>_#!+w*J|=MvTl=5DKpItvn#x*cg0_vka^Crurw$XhI({b7_clG&9@PMr6v^OyE9tT`OR=OrJKdDTPWR~%W8K=U0+OxR@yu5^45l&QCtH{1=-$s3hl*@G!IW-YxB3kQr zk^Q02JsDTKB%l}U5ENzU~V*6V}Jp*syAFc>WOL;l2f`TN#_Y!6HQ?vO_W#md{0s(2(KFdB=q%G~Yk zDEuYf7BJaeH}O4b$gvdXO@6S3+P0c!wklX2qGt*wQksSbMl{=&B=Xm6vD&duN{OXq zhIe;QOxEq7{Zy_XpOq1bvCgQ5;ZgUWE_|=bDgaL1Fm&T>TiPlzPN-=fP@~tFswI2V zUT3$LZxkfmoQbc`oMDvIWoGswE&|1h_7_NC1JTA9>+htCx&*sGQVqjI%?f~)&6+Vx zBBxk~-h}#E1@M%9GM!rqR4`DN!*nYz)2Sooo-6U2*0w3U2&k-alYdy;4#;S(tKO=2 z99wdyfW(t?l9F=8L@iv(%k-AwJ`I9_#S8dL+l`GfL-PCSrYfRy)%HYkmA^C17kR|k zym<_*vQ_XgZ#hIwKiK51aP&I}L@UM(DBfU%a=86#?oNR z@14rX09d99Z|K#on0qQz{OwCqDBtI8Z6RY7$1%6 zpE_WFY`E3&r%fvt^CuFwaQ*a^1i6-_IoO zp?^nDss7a&xl#Xrz2Bt#GO7Pdz5hz@m-1Q()8mfeH|N_<)0r~dj~J+GhX4Qo diff --git a/public/img/blog/es/tutorial/1x/009-matematicas.jpg b/public/img/blog/es/tutorial/1x/009-matematicas.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c34d7dc4905173ce27a3e70aee3795d1cbc5ba11 GIT binary patch literal 34213 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 z zbD=K!LZ_tBP%`NcfNGm}Yy2)j&fIq6vbR|weFmMjTV`_|EiEKaJutL zJN*0Oj(t$DV<7hQ{ZcdPWtuf5(9BwD_YC4Caolo8vJt~b+;Ed?2Z(-hgq#DCvm}t^ z8t6DAAH-0`?)kzXAm;K-zGK@gEDHmdc@R6SAtN@Y;?1~+Ru8G(#RII1^mb$OT^vIu`a^=LAVln=w0(Ln! z1myC$awr5Hq`91&qcEMvmCKU=eF6!|<#v0nT$_)w!Zel6bB1t8T)AKRliWTs!=6`0 zPS)~%Zv6LLxl}qNIt<6S_i_DKF~=vB%aOyfq<5+#iOJ=1Kaxou`y1 zy5-4n1S?#9N;>7rM1mllhm>ZMmvXss(u;>oO$=n`y5-3sogztcfhh@u>;zT96!#tFteGEWP@~Zv{f$C6H3T4WE?kQrWk;}C_}-H}mo7vYBhUT)P&A*L mmCKX}4>VoJJ=ZQ!vBOZe@UC2dNRa#p&HPSWxj@(IfB)Gd#et## literal 0 HcmV?d00001 diff --git a/public/img/blog/es/tutorial/1x/010.jpg b/public/img/blog/es/tutorial/1x/010.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e764e8ec23978b1a2f53ccd1c8ea1c5276376e54 GIT binary patch literal 1763 zcmbW!c~H`67zgm*Pe8yUL&bpbhD0M1Qam!t12xIat32{5@f=zuC2vf%qx8=eF?00vfphF zfFKA2t{y--0@wlwSy{L&3;~D3kw}D`f~ul|yu1QdSw%@z9jB?Gj>F@%2!?uEI%Hiu zo@A;|Hli3C8*A#B?=YiU8g4VDt~~-Gkw^u31&pF1hN_L%rvB%Vwg4yuKnAiPpbj8| z0wE|++6HI>00>)cyH@zm0c9Xim@FKDl#^dw5UmGfKnO$z3W33((ADka)q4Pnf+=fL ztYuYPgWx*Rs?;=I8A8{lwiWI6WS+3?5IY?yr?vru#Su5@k@O9WO=zZO<`%YgbbANK z-A?Wvp8F4YdHWm=W`=}@g-0BXiRB!Ni%&RyA|vx;RyLQPUmz$fIwLGDzgSUu>2lST z>bjftqFc8c8k_FjZ)@-9?CS36>mL{#8h-jr{Oa}CoAKW!Ca0#~FMRm8`04Y~m*q7V z2tfW|{gD05g<5sVK%o#Qe9Z;Q99sHkai1NN6o3@AXr)z5>VfSthmgquwD@rNCK54-%M>pOCC zULHL@)7QjEW-tPjvb-+Y`TCIAzM5mt8@+=0*s(&j%?3un%xR^Fp-K~Z@8=UH7IoDX zjV#u6@;oDQd#fc2U&X1bd4tPsk^&n$H#%JQ8zr6cC`NtCD!N1&SjNAX0@GDrH;1Qw zlK*unrgC7*>+Q;#HCtNwZe~yc(PN#9Zp}Nd%NOPcS45=Vq2|TU7)p25-6A7~Fr^*k z8Ta)qY0KH9#)+~?13|2sMaaeYmn+uIb^i2RM=_S)b)>^L1#jqx!A{83Z>rr~>3`wLl0ugPW!z~Mmk$rauY?yq4siPHI$~EtPKk)u3j&l%COU@R z@DqwPxMRK}%hORc*2G6`QFb8T9&w=t;76HT%85cN`~x15X*2Q+wPU(2IF-}+_1hFB zN_&P~m=*p$FXGs+KEWKp{ZqraN6f&?L *}bv+E)9WfcKNjH(vY1Wb;{0J-#{y< z)~UgN6e1Q#fqm~5%zfjCO^w{=XbJf`>U(*7zaP#VXNqAGP?Pjy8ra$6#HYJb3p7aZm~j@BbE3B1!d2i#WeHn$DfM{`!t+o>OXB zZ0VX!;1QdWcYq5uC049E3sDl6Ymv4WI@KBzi5;cNV&`9cx7=FF9L_Gid2Psp;YX~al23e1+d;z8W@W~ELJ>)LC<*2)tYZLe?6)w{Ou>ZQh; zTP>#96b1Dd3>~iEjq@sa&m_4FO1It&oyG+W+B3$y0_ZV3`sTI~0TX&XQ3FxEn7F&7 zyE))o?~axm!g!?;T%thyY%2HUHE6f~rgLoxg%_i%Uv$T_TOMdnT7XZLBCh%+J?Y-S z9nZYi=|Xv=>Lv_H(?I71ZY9ADvf`~S1V+VGeQcc7Jb2g0+gl0*Rm_qXMt5Nn?7WCPtWX@^BIMsrl zX;oJ`@J~U9^eiVLeH@{Lx>+4BH&5M_VQ7lLhYJknwJq1P{dSfrWKJ6N5Jg;iU~>$M zsRd3NkxsRV3yc^t$)~#cE+*xX2(0NCR?Z!g=hRjHGkz|ZSDK#QmM^l&Ygq@QaY;b= z_Y{lKXL>NaTeRrBeIyl*cDX1fl4Ll$Xeu-{R?8tI@iL)D+nJtb_4#vqLMrvpk4fb> zR=7LgYTlkpHJ$a}OQp?@obTn+O%G+LE)^J8T`mh$42w(elUGle6H92e8-c6*=$0MM zRtFwDWE8van;!f&lPVO_U6^vCFGgD4Wbi$091beO&@q!e9gMfPD<{L literal 0 HcmV?d00001 diff --git a/public/img/blog/es/tutorial/1x/011.png b/public/img/blog/es/tutorial/1x/011.png new file mode 100644 index 0000000000000000000000000000000000000000..18011fd03f09c0595ff3c667ff904980d89a8424 GIT binary patch literal 7536 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 Ks!qZr^nU=?GS`d% literal 0 HcmV?d00001 diff --git a/public/img/blog/es/tutorial/1x/012.jpg b/public/img/blog/es/tutorial/1x/012.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a66224db5f8d7ba0c261a1a87eddca72ced0f5c2 GIT binary patch literal 6414 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 V(VgpU&Y>K~bKPS6uOhqp`X5Q8vcCWT literal 0 HcmV?d00001 diff --git a/public/img/blog/es/tutorial/1x/013.jpg b/public/img/blog/es/tutorial/1x/013.jpg new file mode 100644 index 0000000000000000000000000000000000000000..471b68f5a9eaf40c78613be410124aed2d20c48a GIT binary patch literal 7563 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 - + @@ -68,8 +68,22 @@ lang = lang ?? "en"; +
+

Comments/Comentarios

+
+ +
+
+
+ + diff --git a/src/layouts/BlogLayoutEs.astro b/src/layouts/BlogLayoutEs.astro new file mode 100644 index 0000000..1669028 --- /dev/null +++ b/src/layouts/BlogLayoutEs.astro @@ -0,0 +1,9 @@ +--- +import BlogLayout from "./BlogLayout.astro"; + +let { frontmatter } = Astro.props; +--- + + + + \ No newline at end of file diff --git a/src/pages/blog/es/lenguajes-01.md b/src/pages/blog/es/lenguajes-01.md index 3669917..5762ea3 100644 --- a/src/pages/blog/es/lenguajes-01.md +++ b/src/pages/blog/es/lenguajes-01.md @@ -1,5 +1,5 @@ --- -layout: ../../../layouts/BlogLayout.astro +layout: ../../../layouts/BlogLayoutEs.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 diff --git a/src/pages/blog/es/programacion-01.md b/src/pages/blog/es/programacion-01.md index 248e8cc..b39573d 100644 --- a/src/pages/blog/es/programacion-01.md +++ b/src/pages/blog/es/programacion-01.md @@ -1,5 +1,5 @@ --- -layout: ../../../layouts/BlogLayout.astro +layout: ../../../layouts/BlogLayoutEs.astro title: "01: Programación desde cero absoluto con Zig" description: | Aprendé a programar desde completamente cero, utilizando el lenguaje diff --git a/src/pages/blog/es/programacion-02.md b/src/pages/blog/es/programacion-02.md index 4922c51..6dee32e 100644 --- a/src/pages/blog/es/programacion-02.md +++ b/src/pages/blog/es/programacion-02.md @@ -1,5 +1,5 @@ --- -layout: ../../../layouts/BlogLayout.astro +layout: ../../../layouts/BlogLayoutEs.astro title: "02: Programación desde cero absoluto con Zig: Fundamentos" description: | Fundamentos de la computación, programas, componentes diff --git a/src/pages/blog/es/programacion-03.md b/src/pages/blog/es/programacion-03.md index b58ec94..a341aa3 100644 --- a/src/pages/blog/es/programacion-03.md +++ b/src/pages/blog/es/programacion-03.md @@ -1,5 +1,5 @@ --- -layout: ../../../layouts/BlogLayout.astro +layout: ../../../layouts/BlogLayoutEs.astro title: "03: Programación desde cero: Hola mundo" description: | Escribí el tradicional programa "Hola mundo" por tí mismo! diff --git a/src/pages/blog/es/programacion-04.md b/src/pages/blog/es/programacion-04.md index f8d3327..f426918 100644 --- a/src/pages/blog/es/programacion-04.md +++ b/src/pages/blog/es/programacion-04.md @@ -1,5 +1,5 @@ --- -layout: ../../../layouts/BlogLayout.astro +layout: ../../../layouts/BlogLayoutEs.astro title: "04: Programación desde cero: Modificando el hola mundo" description: | Impresión, strings/cadenas y stdout. diff --git a/src/pages/blog/es/programacion-05.md b/src/pages/blog/es/programacion-05.md index 2ad5258..f895a1a 100644 --- a/src/pages/blog/es/programacion-05.md +++ b/src/pages/blog/es/programacion-05.md @@ -1,5 +1,5 @@ --- -layout: ../../../layouts/BlogLayout.astro +layout: ../../../layouts/BlogLayoutEs.astro title: "05: Cero a Zig: Instalando VSCode y Zig" description: | Instalamos Zig y VSCode en nuestro computador diff --git a/src/pages/blog/es/programacion-06.md b/src/pages/blog/es/programacion-06.md index 29a0fb5..70ab310 100644 --- a/src/pages/blog/es/programacion-06.md +++ b/src/pages/blog/es/programacion-06.md @@ -1,5 +1,5 @@ --- -layout: ../../../layouts/BlogLayout.astro +layout: ../../../layouts/BlogLayoutEs.astro title: "06: Cero a Zig: Terminal y Proyecto Zig" description: | Veremos el terminal y cómo crear/ejecutar un proyecto de Zig diff --git a/src/pages/blog/es/programacion-07.md b/src/pages/blog/es/programacion-07.md index e238aec..c9f71ba 100644 --- a/src/pages/blog/es/programacion-07.md +++ b/src/pages/blog/es/programacion-07.md @@ -1,8 +1,8 @@ --- -layout: ../../../layouts/BlogLayout.astro -title: "07: Cero a Zig - Variables" +layout: ../../../layouts/BlogLayoutEs.astro +title: "07: Cero a Zig - Impresión con formatos" description: | - Introducción a las variables + Imprimiendo información adicional. pubDate: "2024-08-10" tags: ["tech", "lenguajes", "intro", "tutorial", "zig", "VSCode"] image: @@ -11,214 +11,76 @@ image: caption: "" --- -Ahora veremos un concepto fundamental: Variables. +En este artículo aprenderemos más acerca de la impresión, +especialmente un aspecto importante para futúros artículos: +formatos. -Todo el código lo escribiremos en el proyecto que creamos -en el artículo anterior. +## Formato de impresión - -## 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í: +El código para imprimir texto tiene dos partes: ```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"}); -} +// --- 1 --- -2- +std.debug.print("formato", .{}); ``` -Y al ejecutarlo se muestra: +- 1: un formato (string) +- 2: datos adicionales -![Codigo](/img/blog/es/tutorial/1x/001.jpg) +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). -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. +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 -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"}); -} + .{"Raul", "Rosa"} + // | ``` -![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: +En el siguiente artículo veremos un concepto +llamado variables. Por ahora, solo necesitas +saber que se pueden utilizar. ```zig -const std = @import("std"); +const std = @import("zig"); pub fn main() !void { const nombre = "Juan"; - std.debug.print("Hola {s}\n", .{nombre}); + const apellido = "Perez"; + std.debug.print("{s} {s}", .{nombre, apellido}); + // Imprime: `Juan Perez` } ``` -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}`. +## Otros formatos -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. +Hemos visto el formato `{s}`, pero existen muchos más, +que aprenderemos a medida que los necesitemos. diff --git a/src/pages/blog/es/programacion-08.md b/src/pages/blog/es/programacion-08.md new file mode 100644 index 0000000..5b3a855 --- /dev/null +++ b/src/pages/blog/es/programacion-08.md @@ -0,0 +1,224 @@ +--- +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. + + + diff --git a/src/pages/blog/es/programacion-09.md b/src/pages/blog/es/programacion-09.md new file mode 100644 index 0000000..fa6ff46 --- /dev/null +++ b/src/pages/blog/es/programacion-09.md @@ -0,0 +1,187 @@ +--- +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) + +