From 5f2f0b6e51d7c2da5fad5e958048e475e904d95c Mon Sep 17 00:00:00 2001 From: "danila.shirkov" Date: Tue, 29 Aug 2023 13:13:47 +0400 Subject: [PATCH 01/10] add spanish translation --- description.es.yml | 20 +++ .../10-hello-world/description.es.yml | 63 +++++++ modules/10-basics/20-tags/description.es.yml | 26 +++ .../10-basics/30-comments/description.es.yml | 50 ++++++ .../40-instructions/description.es.yml | 53 ++++++ .../10-basics/45-testing/description.es.yml | 48 ++++++ .../50-syntax-errors/description.es.yml | 34 ++++ modules/10-basics/description.es.yml | 6 + .../20-basic/description.es.yml | 50 ++++++ .../25-operator/description.es.yml | 62 +++++++ .../27-commutativity/description.es.yml | 19 +++ .../30-composition/description.es.yml | 32 ++++ .../40-priority/description.es.yml | 39 +++++ .../45-linting/description.es.yml | 52 ++++++ modules/20-arithmetics/description.es.yml | 5 + .../25-strings/10-quotes/description.es.yml | 110 ++++++++++++ .../15-escape-characters/description.es.yml | 64 +++++++ .../description.es.yml | 61 +++++++ .../25-strings/30-encoding/description.es.yml | 70 ++++++++ modules/25-strings/description.es.yml | 5 + .../description.es.yml | 60 +++++++ .../description.es.yml | 26 +++ .../55-type-conversion/description.es.yml | 38 +++++ modules/27-data-types/description.es.yml | 5 + .../10-definition/description.es.yml | 47 ++++++ .../30-variables/12-change/description.es.yml | 33 ++++ .../13-variables-naming/description.es.yml | 32 ++++ .../30-variables/14-errors/description.es.yml | 30 ++++ .../15-expressions/description.es.yml | 87 ++++++++++ .../18-concatenation/description.es.yml | 62 +++++++ .../19-naming-style/description.es.yml | 33 ++++ .../20-magic-numbers/description.es.yml | 70 ++++++++ .../23-constants/description.es.yml | 47 ++++++ .../24-magic-constants/description.es.yml | 28 ++++ .../25-interpolation/description.es.yml | 50 ++++++ .../30-symbols/description.es.yml | 66 ++++++++ .../35-heredoc/description.es.yml | 36 ++++ modules/30-variables/description.es.yml | 5 + .../100-call/description.es.yml | 79 +++++++++ .../120-function-signature/description.es.yml | 87 ++++++++++ .../description.es.yml | 42 +++++ .../description.es.yml | 74 +++++++++ .../180-variadic-arguments/description.es.yml | 29 ++++ .../270-deterministic/description.es.yml | 69 ++++++++ .../900-stdlib/description.es.yml | 33 ++++ .../35-calling-functions/description.es.yml | 5 + .../100-define/description.es.yml | 85 ++++++++++ .../200-return/description.es.yml | 156 ++++++++++++++++++ .../300-parameters/description.es.yml | 108 ++++++++++++ .../340-default-parameters/description.es.yml | 100 +++++++++++ .../description.es.yml | 54 ++++++ .../40-define-functions/description.es.yml | 5 + .../45-logic/10-bool-type/description.es.yml | 71 ++++++++ .../45-logic/15-predicates/description.es.yml | 45 +++++ .../description.es.yml | 67 ++++++++ .../25-logical-operators/description.es.yml | 92 +++++++++++ .../28-logical-negation/description.es.yml | 59 +++++++ .../29-logical-operators-2/description.es.yml | 49 ++++++ .../70-logic-weak-typing/description.es.yml | 75 +++++++++ modules/45-logic/description.es.yml | 5 + .../48-conditionals/30-if/description.es.yml | 46 ++++++ .../40-if-else/description.es.yml | 75 +++++++++ .../50-else-if/description.es.yml | 95 +++++++++++ .../60-ternary-operator/description.es.yml | 101 ++++++++++++ .../65-switch/description.es.yml | 134 +++++++++++++++ .../75-elvis/description.es.yml | 78 +++++++++ modules/48-conditionals/description.es.yml | 5 + modules/50-loops/10-while/description.es.yml | 144 ++++++++++++++++ .../20-aggregation-numbers/description.es.yml | 113 +++++++++++++ .../23-aggregation-strings/description.es.yml | 60 +++++++ .../description.es.yml | 58 +++++++ .../description.es.yml | 60 +++++++ .../28-build-strings/description.es.yml | 67 ++++++++ .../50-loops/29-edge-cases/description.es.yml | 111 +++++++++++++ .../30-syntax-sugar/description.es.yml | 29 ++++ .../50-loops/50-mutators/description.es.yml | 85 ++++++++++ .../55-return-from-loop/description.es.yml | 66 ++++++++ modules/50-loops/70-for/description.es.yml | 61 +++++++ modules/50-loops/description.es.yml | 5 + .../10-unicode/description.es.yml | 92 +++++++++++ .../30-locales/description.es.yml | 47 ++++++ .../40-startwith/description.es.yml | 51 ++++++ .../60-deep-into-strings/description.es.yml | 5 + .../70-dates/10-timestamp/description.es.yml | 43 +++++ modules/70-dates/20-date/description.es.yml | 49 ++++++ modules/70-dates/30-mktime/description.es.yml | 38 +++++ .../70-dates/40-timezone/description.es.yml | 23 +++ modules/70-dates/description.es.yml | 5 + 88 files changed, 4759 insertions(+) create mode 100644 description.es.yml create mode 100644 modules/10-basics/10-hello-world/description.es.yml create mode 100644 modules/10-basics/20-tags/description.es.yml create mode 100644 modules/10-basics/30-comments/description.es.yml create mode 100644 modules/10-basics/40-instructions/description.es.yml create mode 100644 modules/10-basics/45-testing/description.es.yml create mode 100644 modules/10-basics/50-syntax-errors/description.es.yml create mode 100644 modules/10-basics/description.es.yml create mode 100644 modules/20-arithmetics/20-basic/description.es.yml create mode 100644 modules/20-arithmetics/25-operator/description.es.yml create mode 100644 modules/20-arithmetics/27-commutativity/description.es.yml create mode 100644 modules/20-arithmetics/30-composition/description.es.yml create mode 100644 modules/20-arithmetics/40-priority/description.es.yml create mode 100644 modules/20-arithmetics/45-linting/description.es.yml create mode 100644 modules/20-arithmetics/description.es.yml create mode 100644 modules/25-strings/10-quotes/description.es.yml create mode 100644 modules/25-strings/15-escape-characters/description.es.yml create mode 100644 modules/25-strings/20-strings-concatenation/description.es.yml create mode 100644 modules/25-strings/30-encoding/description.es.yml create mode 100644 modules/25-strings/description.es.yml create mode 100644 modules/27-data-types/40-primitive-data-types/description.es.yml create mode 100644 modules/27-data-types/50-data-types-weak-typing/description.es.yml create mode 100644 modules/27-data-types/55-type-conversion/description.es.yml create mode 100644 modules/27-data-types/description.es.yml create mode 100644 modules/30-variables/10-definition/description.es.yml create mode 100644 modules/30-variables/12-change/description.es.yml create mode 100644 modules/30-variables/13-variables-naming/description.es.yml create mode 100644 modules/30-variables/14-errors/description.es.yml create mode 100644 modules/30-variables/15-expressions/description.es.yml create mode 100644 modules/30-variables/18-concatenation/description.es.yml create mode 100644 modules/30-variables/19-naming-style/description.es.yml create mode 100644 modules/30-variables/20-magic-numbers/description.es.yml create mode 100644 modules/30-variables/23-constants/description.es.yml create mode 100644 modules/30-variables/24-magic-constants/description.es.yml create mode 100644 modules/30-variables/25-interpolation/description.es.yml create mode 100644 modules/30-variables/30-symbols/description.es.yml create mode 100644 modules/30-variables/35-heredoc/description.es.yml create mode 100644 modules/30-variables/description.es.yml create mode 100644 modules/35-calling-functions/100-call/description.es.yml create mode 100644 modules/35-calling-functions/120-function-signature/description.es.yml create mode 100644 modules/35-calling-functions/135-calling-functions-default-arguments/description.es.yml create mode 100644 modules/35-calling-functions/150-calling-functions-expression/description.es.yml create mode 100644 modules/35-calling-functions/180-variadic-arguments/description.es.yml create mode 100644 modules/35-calling-functions/270-deterministic/description.es.yml create mode 100644 modules/35-calling-functions/900-stdlib/description.es.yml create mode 100644 modules/35-calling-functions/description.es.yml create mode 100644 modules/40-define-functions/100-define/description.es.yml create mode 100644 modules/40-define-functions/200-return/description.es.yml create mode 100644 modules/40-define-functions/300-parameters/description.es.yml create mode 100644 modules/40-define-functions/340-default-parameters/description.es.yml create mode 100644 modules/40-define-functions/500-reading-documentation/description.es.yml create mode 100644 modules/40-define-functions/description.es.yml create mode 100644 modules/45-logic/10-bool-type/description.es.yml create mode 100644 modules/45-logic/15-predicates/description.es.yml create mode 100644 modules/45-logic/20-logic-combine-expressions/description.es.yml create mode 100644 modules/45-logic/25-logical-operators/description.es.yml create mode 100644 modules/45-logic/28-logical-negation/description.es.yml create mode 100644 modules/45-logic/29-logical-operators-2/description.es.yml create mode 100644 modules/45-logic/70-logic-weak-typing/description.es.yml create mode 100644 modules/45-logic/description.es.yml create mode 100644 modules/48-conditionals/30-if/description.es.yml create mode 100644 modules/48-conditionals/40-if-else/description.es.yml create mode 100644 modules/48-conditionals/50-else-if/description.es.yml create mode 100644 modules/48-conditionals/60-ternary-operator/description.es.yml create mode 100644 modules/48-conditionals/65-switch/description.es.yml create mode 100644 modules/48-conditionals/75-elvis/description.es.yml create mode 100644 modules/48-conditionals/description.es.yml create mode 100644 modules/50-loops/10-while/description.es.yml create mode 100644 modules/50-loops/20-aggregation-numbers/description.es.yml create mode 100644 modules/50-loops/23-aggregation-strings/description.es.yml create mode 100644 modules/50-loops/25-iteration-over-string/description.es.yml create mode 100644 modules/50-loops/26-conditions-inside-loops/description.es.yml create mode 100644 modules/50-loops/28-build-strings/description.es.yml create mode 100644 modules/50-loops/29-edge-cases/description.es.yml create mode 100644 modules/50-loops/30-syntax-sugar/description.es.yml create mode 100644 modules/50-loops/50-mutators/description.es.yml create mode 100644 modules/50-loops/55-return-from-loop/description.es.yml create mode 100644 modules/50-loops/70-for/description.es.yml create mode 100644 modules/50-loops/description.es.yml create mode 100644 modules/60-deep-into-strings/10-unicode/description.es.yml create mode 100644 modules/60-deep-into-strings/30-locales/description.es.yml create mode 100644 modules/60-deep-into-strings/40-startwith/description.es.yml create mode 100644 modules/60-deep-into-strings/description.es.yml create mode 100644 modules/70-dates/10-timestamp/description.es.yml create mode 100644 modules/70-dates/20-date/description.es.yml create mode 100644 modules/70-dates/30-mktime/description.es.yml create mode 100644 modules/70-dates/40-timezone/description.es.yml create mode 100644 modules/70-dates/description.es.yml diff --git a/description.es.yml b/description.es.yml new file mode 100644 index 00000000..e2b46fad --- /dev/null +++ b/description.es.yml @@ -0,0 +1,20 @@ +--- + +title: | + Aprende PHP en línea en 25 horas +header: | + Aprende PHP en línea en 25 horas +description: | + Aprender programación es un proceso difícil y prolongado. Aprender la sintaxis del lenguaje es la parte más fácil y corta del camino, pero es imposible comenzar sin ella. Este curso se centra en los fundamentos de la programación en PHP. Prepara el terreno para escribir programas significativos. +seo_description: | + Domina nuevas habilidades con PHP: aprendizaje en línea gratuito | 72 lecciones básicas de programación con muchas prácticas | Mejora tus conocimientos y tu carrera con el curso en línea gratuito de PHP + +keywords: + - php + - curso en línea + - curso gratuito + - programación + - code basics + - curso en línea + - curso gratuito + - programación \ No newline at end of file diff --git a/modules/10-basics/10-hello-world/description.es.yml b/modules/10-basics/10-hello-world/description.es.yml new file mode 100644 index 00000000..66a8c709 --- /dev/null +++ b/modules/10-basics/10-hello-world/description.es.yml @@ -0,0 +1,63 @@ +--- + +name: ¡Hola, Mundo! +theory: | + En esta lección vamos a escribir nuestro primer programa. Aprenderemos qué comandos se necesitan y qué etiquetas se deben utilizar para que el programa que ejecuta el código lo interprete correctamente. También aprenderemos por qué son necesarios los comentarios en el código. + + ## Cómo escribir un programa simple + + Hay dos formas de escribir un programa y mostrar el resultado en la pantalla: + + * Usando el comando `echo` + * Usando la función `print_r()` + + Veamos cada una en detalle. + + ### Escribir un programa usando `echo` + + Vamos a escribir un programa que muestre "¡Hola, Mundo!" en la pantalla: + + ```php + ¡Hola, Mundo! + ``` + + https://replit.com/@hexlet/php-basics-hello-world-echo + + La salida en la pantalla se realiza utilizando el comando especial `echo`. Después de él, se especifica la cadena a mostrar entre comillas simples. Al final, es importante colocar un punto y coma. + + Para mayor comodidad, mostraremos el resultado de la ejecución del código de esta manera: `=> RESULTADO`. + + ### Escribir un programa usando `print_r()` + + Otra forma de mostrar una cadena en la pantalla es utilizando la función `print_r()`: + + ```php + ¡Hola, Mundo! + ``` + + https://replit.com/@hexlet/php-basics-hello-world-printr + + En este caso, la cadena se especifica entre paréntesis justo después del nombre de la función. Al final, también es necesario colocar un punto y coma. + + En situaciones simples, no hay diferencia entre estas dos construcciones. Puedes usar cualquier método. Sin embargo, cuando necesitas mostrar en la pantalla algo más que números o cadenas, por ejemplo, matrices, `echo` no podrá hacerlo, pero `print_r()` sí. + +instructions: | + Escribe en el editor el código del ejercicio carácter por carácter y luego haz clic en "Verificar". + + ```php + `. Esta es una característica de este lenguaje de programación. + + `` es la etiqueta de cierre. PHP permite no especificar la parte de cierre `?>`. Y la guía de estilo de código PSR-12 prohíbe su especificación. + +instructions: | + Escriba el código del ejemplo y coloque la etiqueta ` Madre de Dragones. ¡Dracarys! + ``` + + Al ejecutar este código, se mostrarán en pantalla dos frases consecutivas: `Madre de Dragones. ¡Dracarys!`. + + Las instrucciones se pueden escribir una tras otra sin saltar de línea: + + ```php + Madre de Dragones. ¡Dracarys! + ``` + + El resultado en pantalla será el mismo. Sin embargo, este código es difícil de leer, por lo que las instrucciones se colocan una debajo de la otra. + +instructions: | + Muestra en pantalla consecutivamente tres nombres: _Robert_, _Stannis_, _Renly_. El resultado en pantalla debe ser: + +
+  RobertStannisRenly
+  
+ + Utiliza una llamada `print_r()` para cada nombre. + +tips: + - | + [Un poco sobre los intérpretes](https://es.wikipedia.org/wiki/Int%C3%A9rprete) + +definitions: + - name: Intérprete + description: | + un programa que ejecuta código en PHP. + - name: Instrucción + description: | + un comando para la computadora escrito en un lenguaje de programación. El código en PHP es un conjunto de instrucciones separadas (generalmente) por el símbolo `;`. \ No newline at end of file diff --git a/modules/10-basics/45-testing/description.es.yml b/modules/10-basics/45-testing/description.es.yml new file mode 100644 index 00000000..e2e6c907 --- /dev/null +++ b/modules/10-basics/45-testing/description.es.yml @@ -0,0 +1,48 @@ +--- + +name: Cómo verificamos tus soluciones +theory: | + + Nuestro sitio web verifica automáticamente tus soluciones. ¿Cómo funciona? + + En el caso más simple, el sistema simplemente ejecuta el código y verifica lo que se muestra en la pantalla. Luego lo compara con lo que "esperábamos" según la tarea. + + En las lecciones más avanzadas, escribirás funciones, que son mini programas que toman información del mundo exterior y realizan operaciones. La verificación de tus soluciones en estos casos es un poco más complicada: el sistema ejecuta tu solución y le pasa cierta información. El sistema también sabe qué respuesta debería dar la función correcta con esos datos de entrada. + + Por ejemplo, si tu tarea es escribir una función que sume dos números, el sistema de verificación le pasará diferentes combinaciones de números y comparará la respuesta de tu función con las sumas reales. Si las respuestas coinciden en todos los casos, se considera que la solución es correcta. + + Este enfoque se llama pruebas y se utiliza en el desarrollo diario real. Por lo general, el programador primero escribe una prueba, que es un programa de verificación, y luego escribe el programa que quería escribir. Durante el proceso, se ejecutan las pruebas constantemente y se verifica si se está acercando a la solución. + + Es por eso que nuestro sitio web muestra "Pruebas superadas" cuando resuelves correctamente una tarea. + + Aquí tienes un ejemplo sencillo: imprimir la cadena `Hello, World!`. Supongamos que cometiste un pequeño error y la función muestra otro valor en la pantalla. El sistema responderá algo así: + +
+    -'Hello, World!'
+    +'ello, World!'
+
+    ¡FALLOS!
+    Pruebas: 1, Afirmaciones: 1, Fallos: 1.
+  
+ + En la pantalla aparece una pista. El signo `+` indica lo que imprimió tu código. El signo `-` indica lo que se esperaba. Al comparar estos dos valores, puedes ver el error. En el ejemplo anterior, se puede ver que falta la letra _H_ en la salida. + + Además de nuestras pruebas, es muy útil experimentar con el código. Para ello, puedes utilizar el servicio [repl.it](https://repl.it/languages/php). Sería ideal si ejecutas todo el código presente en las lecciones por tu cuenta. + + --- + + A veces, durante la resolución de una tarea, puede parecer que has hecho todo correctamente, pero el sistema no acepta la solución. Este comportamiento es prácticamente inexistente. Las pruebas no funcionales simplemente no pueden llegar al sitio web, se ejecutan automáticamente después de cada cambio. En la gran mayoría de estos casos (y todos nuestros proyectos en conjunto han realizado millones de verificaciones a lo largo de muchos años), el error se encuentra en el código de la solución. Puede ser muy sutil, como haber ingresado accidentalmente una letra rusa en lugar de una letra en inglés, haber utilizado minúsculas en lugar de mayúsculas o haber olvidado imprimir una coma. Otros casos son más complicados. Es posible que tu solución funcione para un conjunto de datos de entrada, pero no funcione para otro. Por lo tanto, siempre lee atentamente la descripción de la tarea y la salida de las pruebas. Casi seguro que habrá una indicación del error. + + Sin embargo, si estás seguro de que hay un error o has encontrado alguna imprecisión, siempre puedes señalarlo. Al final de cada teoría hay un enlace al contenido de la lección en GitHub (¡este proyecto es completamente abierto!). Al ir allí, puedes escribir un issue, ver el contenido de las pruebas (donde se muestra cómo se llama tu código) e incluso enviar un pull request. Si esto aún te resulta confuso, únete a nuestra comunidad en [Telegram Hexlet](https://t.me/hexletcommunity/12), allí en el canal de Voluntarios siempre estaremos dispuestos a ayudar. + +instructions: | + Imprime en la pantalla `9780262531962`. + +definitions: + - name: Pruebas + description: | + código especial que verifica la corrección de los programas, comparando el resultado correcto con el resultado real. + +tips: + - | + [TDD](https://es.wikipedia.org/wiki/Desarrollo_guiado_por_pruebas) \ No newline at end of file diff --git a/modules/10-basics/50-syntax-errors/description.es.yml b/modules/10-basics/50-syntax-errors/description.es.yml new file mode 100644 index 00000000..8768fc19 --- /dev/null +++ b/modules/10-basics/50-syntax-errors/description.es.yml @@ -0,0 +1,34 @@ +--- + +name: Errores sintácticos +theory: | + + Si un programa escrito en PHP tiene errores de sintaxis, el intérprete mostrará un mensaje correspondiente en la pantalla, junto con la indicación del archivo y la línea donde, según su opinión, se produjo el error. Un _error de sintaxis_ ocurre cuando el código se ha escrito con violación de las reglas gramaticales. En los lenguajes humanos, la gramática es importante, pero generalmente se puede entender y leer el texto con errores. En la programación, todo es estricto. Cualquier violación mínima y el programa ni siquiera se ejecutará. Un ejemplo puede ser un punto y coma olvidado, paréntesis mal colocados y otros detalles. + + Aquí hay un ejemplo de código con un error de sintaxis: + + ```php + 7 + ``` + + Además de la suma, están disponibles las siguientes operaciones: + + * `*` — multiplicación + * `/` — división + * `-` — resta + * `%` — [resto de la división](https://es.wikipedia.org/wiki/Resto_(matem%C3%A1tica)) + * `**` — potenciación + + Estos símbolos de operación se llaman operadores. + +instructions: | + Muestra en pantalla el resultado de dividir el número `81` entre `9`. + +tips: + - | + Siempre deja espacios entre los operadores aritméticos y los números (operandos) - esto es una buena práctica de programación. Por lo tanto, en nuestros ejemplos es `print_r(3 + 4)`, no `print_r(3+4)`. + - | + La división por cero resulta en un error `Division by zero`. Para evitarlo, debes conocer las estructuras condicionales (las aprenderás en las próximas lecciones). + - | + Si en el editor hay una línea que dice `// BEGIN` y `// END`, el código debe escribirse entre esas líneas. \ No newline at end of file diff --git a/modules/20-arithmetics/25-operator/description.es.yml b/modules/20-arithmetics/25-operator/description.es.yml new file mode 100644 index 00000000..63cd4b55 --- /dev/null +++ b/modules/20-arithmetics/25-operator/description.es.yml @@ -0,0 +1,62 @@ +--- + +name: Operadores +theory: | + Un **operador** es un símbolo de operación, como `+`. Los operadores suelen estar representados por uno o varios caracteres, a veces por una palabra. Por lo general, corresponden a operaciones matemáticas. + + Los operadores realizan operaciones en valores específicos, llamados **operandos**. + + Veamos un ejemplo: + + ```php + -3 + ``` + + En el ejemplo anterior, se aplica una operación unaria al número `3`. El operador `-` antes del tres le indica al intérprete que tome el número `3` y encuentre su opuesto, es decir, `-3`. Esto puede ser confuso, ya que `-3` es tanto un número como un operador con un operando. Pero en los lenguajes de programación, esta es la estructura: + + ```php + 1 + ``` + + Lo mismo ocurre con el signo más: + + ```php + 3 + print_r(1 + +3); // => 4 + ``` + +instructions: | + Escribe un programa que calcule la diferencia entre los números `6` y `-81` y muestre la respuesta en la pantalla. + +tips: + - | + [Operadores en PHP](https://www.php.net/manual/es/language.operators.php) + +definitions: + - name: "Operación aritmética" + description: "suma, resta, multiplicación y división." + - name: "Operación unaria" + description: "operación con un solo operando. Por ejemplo, `-3` es una operación unaria para obtener el número opuesto al número tres." + - name: "Operación binaria" + description: "operación con dos operandos. Por ejemplo, `3 + 9`." \ No newline at end of file diff --git a/modules/20-arithmetics/27-commutativity/description.es.yml b/modules/20-arithmetics/27-commutativity/description.es.yml new file mode 100644 index 00000000..1f1110e6 --- /dev/null +++ b/modules/20-arithmetics/27-commutativity/description.es.yml @@ -0,0 +1,19 @@ +--- + +name: Operación conmutativa +theory: | + En programación se utiliza la ley básica de la aritmética: el orden de los sumandos no afecta a la suma. Esto se conoce como la **ley conmutativa**. Si intercambiamos los operandos en una operación binaria y obtenemos el mismo resultado, esa operación es conmutativa. Por lo tanto, la suma es una operación conmutativa: `3 + 2 = 2 + 3`. + + La resta no es una operación conmutativa: `2 - 3 ≠ 3 - 2`. En programación, esta ley también se aplica. La mayoría de las operaciones con las que nos encontramos en la vida real no son conmutativas. Por lo tanto, siempre debemos prestar atención al orden en el que trabajamos. + +instructions: | + Escriba un programa que calcule y muestre en pantalla de forma secuencial los valores de las siguientes expresiones matemáticas: "3 elevado a la 5" y "-8 dividido por -4". + + Tenga en cuenta que los resultados se mostrarán "pegados" en una sola línea sin espacios. Aprenderemos a solucionar este problema en futuras lecciones. + +tips: [] + +definitions: + - name: Conmutatividad + description: | + propiedad de una operación en la que el cambio de orden de los operandos no afecta al resultado. Por ejemplo, la suma es una operación conmutativa: el orden de los sumandos no afecta a la suma. \ No newline at end of file diff --git a/modules/20-arithmetics/30-composition/description.es.yml b/modules/20-arithmetics/30-composition/description.es.yml new file mode 100644 index 00000000..de76a6e5 --- /dev/null +++ b/modules/20-arithmetics/30-composition/description.es.yml @@ -0,0 +1,32 @@ +--- + +name: Composición de operaciones +theory: | + Veamos un ejemplo de composición de operaciones: + + ```php + 400 + ``` + + Las operaciones se pueden combinar entre sí. Esto permite calcular expresiones compuestas más complejas. Esta propiedad de las operaciones se llama **composición**. + + La composición de operaciones aritméticas en programación es similar a la composición en el programa escolar. Se aplica a todas las operaciones, no solo a las aritméticas. + + Para comprender cómo se realizan los cálculos dentro del intérprete, veamos el ejemplo: `2 * 4 * 5 * 10`. + + 1. Primero se calcula `2 * 4` y se obtiene la expresión `8 * 5 * 10` + 2. Luego se calcula `8 * 5`. Al final, tenemos `40 * 10` + 3. Por último, se realiza la última multiplicación y se obtiene el resultado `400` + +instructions: | + Implementa un programa que calcule y muestre en pantalla el valor de la expresión: + + ``` + 8 / 2 + 5 - -3 / 2 + ``` + + No calcules nada por tu cuenta, tu programa debe realizar todos los cálculos por sí mismo. + +tips: [] \ No newline at end of file diff --git a/modules/20-arithmetics/40-priority/description.es.yml b/modules/20-arithmetics/40-priority/description.es.yml new file mode 100644 index 00000000..01fd2589 --- /dev/null +++ b/modules/20-arithmetics/40-priority/description.es.yml @@ -0,0 +1,39 @@ +--- + +name: Prioridad de las operaciones +theory: | + En matemáticas escolares, existe el concepto de "prioridad de la operación". La prioridad determina en qué secuencia deben realizarse las operaciones. + + Supongamos que queremos calcular la siguiente expresión: `2 + 2 * 2`: + + ```php + 6 + ``` + + El intérprete realiza los cálculos aritméticos en el orden correcto: primero la multiplicación y la división, luego la suma y la resta, y la potenciación tiene una prioridad más alta que todas las demás operaciones aritméticas: `2 ** 3 * 2` se calculará como `16`. + + A veces, los cálculos deben realizarse en un orden diferente. En este caso, se utilizan paréntesis para establecer la prioridad, por ejemplo: `(2 + 2) * 2`. Los paréntesis se pueden colocar alrededor de cualquier operación y se pueden anidar tantas veces como sea necesario. Aquí hay algunos ejemplos: + + ```php + 9 + print_r(7 * 3 + (4 / 2) - (8 + (2 - 1))); // => 14 + ``` + + En este caso, es importante cerrar los paréntesis en el orden correcto. Esto a menudo es la causa de errores no solo para principiantes, sino también para programadores experimentados. Para mayor comodidad, se pueden colocar los paréntesis de apertura y cierre de inmediato, y luego escribir la parte interna. + + La mayoría de los editores de código hacen esto automáticamente. Por ejemplo, colocamos un paréntesis de apertura y automáticamente se coloca el de cierre. Esto también se aplica a otros caracteres emparejados, como comillas. Hablaremos de ellos en futuras lecciones. + + A veces, una expresión puede ser difícil de entender visualmente. En ese caso, se pueden colocar paréntesis sin afectar la prioridad. El código se escribe para las personas, y las máquinas solo lo ejecutarán. Para las máquinas, el código es correcto o incorrecto. No hay código "más" o "menos" comprensible para ellas. La colocación explícita de prioridades facilita la lectura del código para otros desarrolladores. + +instructions: | + Dada la expresión `70 * 3 + 4 / 8 + 2`. + + Coloca los paréntesis de manera que ambas sumas (`3 + 4`) y (`8 + 2`) se calculen primero. Imprime el resultado en pantalla. + +tips: + - | + [Prioridad de los operadores](https://www.php.net/manual/es/language.operators.precedence.php) \ No newline at end of file diff --git a/modules/20-arithmetics/45-linting/description.es.yml b/modules/20-arithmetics/45-linting/description.es.yml new file mode 100644 index 00000000..827b213e --- /dev/null +++ b/modules/20-arithmetics/45-linting/description.es.yml @@ -0,0 +1,52 @@ +--- + +name: Linter +theory: | + En esta lección aprenderemos qué son los estándares de codificación. Facilitan el desarrollo y hacen que el código sea más comprensible. Vamos a analizar en detalle dos recomendaciones principales para PHP que contienen reglas de codificación. + + ## Estándares de codificación en PHP + + El código debe estar formateado de manera que sea comprensible y fácil de mantener. Para ello existen conjuntos de reglas especiales llamados **estándares**. Estos describen varios aspectos de la escritura de código. + + En PHP, los estándares más comunes son los **PSR** - PHP Standards Recommendations o Recomendaciones de Estándares PHP de [PHP-FIG](https://www.php-fig.org/psr/). Son un conjunto de reglas que facilitan el desarrollo y resuelven problemas específicos. + + Actualmente existen varias recomendaciones aprobadas, cada una de ellas se identifica con un número: PSR-1, PSR-2, PSR-3 y [otros](https://en.wikipedia.org/wiki/PHP_Standard_Recommendation). Conocerás todas estas recomendaciones durante el aprendizaje y el trabajo. En esta lección, vamos a analizar en detalle las siguientes: + + * PSR-1. [Basic Coding Standard](https://www.php-fig.org/psr/psr-1/) - estándar básico de codificación. Es un conjunto de reglas que definen cómo formatear el código: cómo escribir etiquetas PHP, cómo nombrar clases, métodos y constantes de clases. También aborda cuestiones de codificación, autoloading, namespaces y separación de responsabilidades entre archivos. + * PSR-12. [Extended Coding Style](https://www.php-fig.org/psr/psr-12/) - estándar de estilo de codificación extendido, reemplaza y amplía el obsoleto PSR-2. Este estándar requiere el cumplimiento de las reglas de PSR-1. También agrega muchas nuevas reglas: sangrías, archivos, líneas, palabras clave, clases, estructuras de control, ámbitos y otros elementos. + + ## Linters en PHP + + En cualquier lenguaje de programación existen herramientas especiales llamadas **linters**. Verifican el código en busca de cumplimiento de los estándares. El linter ampliamente utilizado en PHP es [PHP_CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer). + + Supongamos que tenemos un archivo con el siguiente código PHP: + + ```php + + ``` + + Al verificar el archivo, el linter encontrará los siguientes errores: + + * `Spaces must be used to indent lines; tabs are not allowed` - PSR-12 recomienda usar una sangría de cuatro espacios, pero en el ejemplo se utiliza una tabulación. + * `A closing tag is not permitted at the end of a PHP file` - el estándar requiere omitir la etiqueta de cierre `?>`. + * `Space before opening parenthesis of function call prohibited` - al llamar a una función, no debe haber espacios entre el nombre de la función y los paréntesis. Sin embargo, en el código verificado hay un espacio después del nombre `print_r`. + + Vamos a corregir el código: eliminaremos la etiqueta de cierre, las sangrías y el espacio después del nombre de la función: + + ```php + 10.5 + ``` + + Esta versión ya cumple con las reglas y el linter no mostrará ningún mensaje de error. + +instructions: | + Muestra en pantalla el resultado de la siguiente operación: "la diferencia entre el cuadrado de cinco y el producto de tres y siete". Escribe el código de manera que cada operador esté separado de los operandos por espacios. + +tips: [] \ No newline at end of file diff --git a/modules/20-arithmetics/description.es.yml b/modules/20-arithmetics/description.es.yml new file mode 100644 index 00000000..ae14999e --- /dev/null +++ b/modules/20-arithmetics/description.es.yml @@ -0,0 +1,5 @@ +--- + +name: Aritmética +description: + Los programas modernos se crean para servir a los negocios, ayudar en la vida diaria y entretener. Pero en el corazón de su funcionamiento siguen estando los cálculos. El tema más simple y básico en la programación es la aritmética. En este módulo traduciremos las operaciones aritméticas a lenguaje de programación, hablaremos sobre la prioridad de las operaciones. Explicaremos qué es un linter y por qué puede "quejarse". \ No newline at end of file diff --git a/modules/25-strings/10-quotes/description.es.yml b/modules/25-strings/10-quotes/description.es.yml new file mode 100644 index 00000000..617938cb --- /dev/null +++ b/modules/25-strings/10-quotes/description.es.yml @@ -0,0 +1,110 @@ +--- + +name: Comillas +theory: | + En esta lección vamos a hablar sobre las cadenas de texto y por qué necesitamos comillas simples y dobles. También aprenderemos sobre las secuencias de escape y la concatenación. + + ## ¿Qué es una cadena de texto? + + Cualquier carácter individual entre comillas es una **cadena de texto**. Por ejemplo: + + ```php + 'Hola' + 'Adiós' + 'G' + ' ' + '' + ``` + + Una cadena de texto vacía `''` también es una cadena de texto. Es decir, consideramos como cadena de texto todo lo que está dentro de las comillas, incluso si es un espacio, un solo carácter o la ausencia total de caracteres. + + Anteriormente, en las lecciones, hemos escrito cadenas de texto entre comillas simples, pero también se pueden usar comillas dobles: + + ```php + La madre del dragón dijo "No" + ``` + + Tuvimos que agregar `\` para las comillas dobles, pero no para el apóstrofe, porque la cadena misma se creó con comillas dobles. Si la cadena se hubiera creado con comillas simples, entonces se necesitaría un carácter de escape antes del apóstrofe, pero no antes de las comillas dobles. + + ```php + La muerte es \tan terriblemente final + ``` + + También puede ser necesario imprimir la barra invertida en sí: + + ```php + \ + ``` + + Esto también se puede hacer escapando la barra invertida. + +instructions: | + Escribe un programa que muestre en la pantalla: + + ``` + "La palabra favorita de Khal Drogo es "athjahakar"" + ``` + + El programa debe mostrar exactamente esta frase en la pantalla. Presta atención a las comillas al principio y al final de la frase: + +
+  "La palabra favorita de Khal Drogo es "athjahakar""
+  
+ +tips: [] diff --git a/modules/25-strings/15-escape-characters/description.es.yml b/modules/25-strings/15-escape-characters/description.es.yml new file mode 100644 index 00000000..526012c5 --- /dev/null +++ b/modules/25-strings/15-escape-characters/description.es.yml @@ -0,0 +1,64 @@ +--- + +name: Secuencias de escape +theory: | + A veces necesitamos colocar varias líneas una tras otra. Para hacer esto, debemos decirle al intérprete "presiona Enter" - hacer un salto de línea después del signo de interrogación. Esto se puede hacer con el carácter de salto de línea - `\n`: + + ```php + 8 + ``` + + Este programa mostrará `8` en la pantalla, que es el resultado de la operación binaria `+` con los operandos `5` y `3`. + + También podemos "sumar" dos cadenas. Este programa mostrará `Dragonstone`, que es el resultado de la operación binaria `.` con los operandos 'Dragon' y 'stone': + + ```php + Dragonstone + ``` + + La concatenación de cadenas siempre ocurre en el mismo orden en el que se escriben los operandos. El operando izquierdo se convierte en la parte izquierda de la cadena, y el operando derecho en la parte derecha. Aquí hay algunos ejemplos más: + + ```php + Kingswood + print_r('Kings' . 'road'); // => Kingsroad + print_r("King's" . 'Landing'); // => King'sLanding + ``` + + Las cadenas se pueden concatenar incluso si están escritas con diferentes tipos de comillas. + + Un espacio en blanco es un carácter igual que los demás, por lo que la cantidad de espacios en blanco que se coloque en una cadena será la misma en la cadena resultante: + + ```php + King's Landing + + // Colocamos un espacio en blanco en la parte derecha + print_r("King's" . ' Landing'); // => King's Landing + ``` + +instructions: | + Muestra en pantalla + + ``` + Winter came for the House of Frey. + ``` + + utilizando la concatenación de palabras. + +definitions: + - name: Concatenación + description: | + operación que une dos cadenas. Por ejemplo, `print_r("King's " . ' Landing');` \ No newline at end of file diff --git a/modules/25-strings/30-encoding/description.es.yml b/modules/25-strings/30-encoding/description.es.yml new file mode 100644 index 00000000..78a46338 --- /dev/null +++ b/modules/25-strings/30-encoding/description.es.yml @@ -0,0 +1,70 @@ +--- + +name: Codificación +theory: | + + En el nivel más profundo, una computadora opera exclusivamente con los dígitos `0` y `1`. Esto se conoce como [código binario](https://es.wikipedia.org/wiki/C%C3%B3digo_binario), y los unos y ceros se llaman bits, abreviatura de "binary digit" (dígito binario). + + Los números que estamos acostumbrados a utilizar en el sistema decimal se codifican utilizando números binarios: + + - 0 ← 0 + - 1 ← 1 + - 2 ← 10 + - 3 ← 11 + - 4 ← 100 + - 5 ← 101 + + Pero, ¿qué pasa con el texto? En realidad, la computadora no sabe nada acerca de letras, signos de puntuación y otros caracteres de texto. Todos estos caracteres también se codifican con números. + + Podemos tomar el alfabeto inglés y asignar un número a cada letra, comenzando desde uno en orden: + + - a ← 1 + - b ← 2 + - c ← 3 + - d ← 4 + - ... + - z ← 26 + + Esto es lo que se conoce como **codificación**. + + Luego, podemos enseñarle a la computadora a entender esta tabla y convertir texto en números y viceversa: + + - `hello` → `8` `5` `12` `12` `15` + - `7` `15` `15` `4` → `good` + + Estas tablas, en las que se relacionan letras y números, se llaman codificaciones. Además de las letras del alfabeto, las codificaciones también incluyen signos de puntuación y otros caracteres útiles. Seguramente has encontrado codificaciones como [ASCII](https://es.wikipedia.org/wiki/ASCII) o [UTF-8](https://es.wikipedia.org/wiki/UTF-8). + + Las diferentes codificaciones contienen diferentes conjuntos de caracteres. Inicialmente, tablas pequeñas como ASCII eran suficientes para la mayoría de las tareas. Sin embargo, solo incluye letras latinas, algunos caracteres simples como `%` y `?`, y caracteres de control especiales como el salto de línea. + + Con la expansión de las computadoras, diferentes países necesitaron tablas más amplias. Esto incluye letras cirílicas, caracteres de idiomas orientales, escritura árabe, caracteres matemáticos y tipográficos adicionales, e incluso emojis. + + Hoy en día, en la mayoría de los casos se utiliza una de las variantes de [Unicode](https://es.wikipedia.org/wiki/Unicode) - *utf-8*. Incluye caracteres de casi todos los idiomas escritos del mundo. Gracias a esto, un correo electrónico escrito en chino en China se puede abrir y ver sin problemas en una computadora en Finlandia (si la entenderá o no, es otra pregunta). + + Los programadores se encuentran regularmente con la codificación de texto y las codificaciones en su vida. El soporte de Unicode en diferentes lenguajes de programación se implementa a diferentes niveles. Además, las codificaciones deben especificarse explícitamente al trabajar con bases de datos y archivos. + + +instructions: | + + En PHP, puedes "solicitar" y mostrar en pantalla cualquier carácter de la codificación ASCII. Por ejemplo: + + ```php + 8 + ``` + + `'7'` es una cadena, no un número, pero el intérprete de PHP devuelve `8`, como si estuviéramos sumando dos números. Cuando PHP encuentra una incompatibilidad de tipos, intenta convertir la información por sí mismo. En este caso, convirtió la cadena `'7'` en el número `7` y luego sumó `1` y `7`. + + No todos los lenguajes hacen esto. PHP es un lenguaje con **tipado débil**. Conoce la existencia de diferentes tipos, pero no los trata de manera estricta. Intenta convertir la información cuando parece razonable. + + En los lenguajes con **tipado fuerte**, no se puede sumar un número y una cadena. + + PHP fue creado para Internet, y en Internet toda la información es una cadena. Incluso cuando ingresamos un número de teléfono o una fecha de nacimiento en un sitio web, esa información llega al servidor como una cadena, no como un número. Por eso, los autores del lenguaje decidieron que convertir automáticamente los tipos es correcto y conveniente. + + Esta conversión automática e implícita de tipos es realmente conveniente. Pero en la práctica, esta característica del lenguaje crea muchos errores y problemas difíciles de encontrar. El código puede funcionar a veces y otras veces no. Esto depende de si la conversión automática tuvo "suerte" en un caso particular. El programador no se dará cuenta de esto de inmediato. + + En futuras tareas nos encontraremos con este comportamiento más de una vez. A menudo surgirá la pregunta "¿por qué mi código no funciona como espero?". + +instructions: | + Muestra en pantalla el resultado de la expresión: `7 - (-8 - -2)`. Intenta hacer que el número 7 sea una cadena en lugar de un número. Experimenta también con otros números. + +tips: [] \ No newline at end of file diff --git a/modules/27-data-types/55-type-conversion/description.es.yml b/modules/27-data-types/55-type-conversion/description.es.yml new file mode 100644 index 00000000..8ebdb1a3 --- /dev/null +++ b/modules/27-data-types/55-type-conversion/description.es.yml @@ -0,0 +1,38 @@ +--- + +name: Conversión explícita de tipos +theory: | + La conversión de tipos es una operación común en el desarrollo web. Para realizarla, se puede confiar en la tipificación débil. Sin embargo, en muchas situaciones es mejor realizar la conversión de forma explícita utilizando una sintaxis especial. Este código es más comprensible y predecible. + + Ejemplo de conversión explícita de tipos: + + ```php + 'Esto es 5' + ``` + + La conversión explícita de tipos funciona de la siguiente manera: se especifica el tipo deseado antes del valor entre paréntesis. Como resultado, el valor a la derecha se convierte en un valor de otro tipo, especificado a la izquierda entre paréntesis. Hasta ahora, solo estamos familiarizados con dos tipos, pero la conversión funciona para cualquier tipo. + + En situaciones más complejas, al utilizar funciones que veremos más adelante, se encuentran conversiones múltiples: `(string) (5 + ((int) '4'))`. El orden de evaluación de esta expresión es el siguiente: + + ```php + ¡Padre! + // => ¡Padre! + ``` + + En la línea `$greeting = '¡Padre!'`, el valor `'¡Padre!'` se asigna a la variable con el nombre `$greeting`. En PHP, los nombres de las variables comienzan con el símbolo *$*. Como resultado, la variable apunta a los datos que se han almacenado en ella. + + Una vez que se ha creado la variable, podemos comenzar a usarla. + + ## Uso de una variable + + La variable se inserta en los lugares donde solíamos tener nuestra palabra. Durante la ejecución, el intérprete llega a la línea `print_r($greeting);` y reemplaza la variable por su contenido, y luego ejecuta el código. + + Para el nombre de la variable, se puede utilizar cualquier conjunto de caracteres válidos, que incluyen letras del alfabeto inglés, números y el carácter `_`. Sin embargo, no se puede colocar un número al principio. Los nombres de las variables en PHP distinguen entre mayúsculas y minúsculas, es decir, `hello` y `heLLo` son dos nombres diferentes, lo que significa que son dos variables diferentes. La distinción entre mayúsculas y minúsculas es importante en PHP, así que no olvides tenerlo en cuenta. + + No hay límite en la cantidad de variables que se pueden crear. Los programas grandes contienen decenas o incluso cientos de miles de nombres de variables. Para facilitar el análisis del programa, es conveniente crear las variables lo más cerca posible del lugar donde se utilizan. + +instructions: | + Crea una variable con el nombre `$motto` y el contenido `¡Lo que está muerto no puede morir!`. Imprime el contenido de la variable. + +tips: [] + +definitions: + - name: Variable + description: una forma de almacenar información y darle un nombre para su uso posterior en el código. \ No newline at end of file diff --git a/modules/30-variables/12-change/description.es.yml b/modules/30-variables/12-change/description.es.yml new file mode 100644 index 00000000..2d02b52d --- /dev/null +++ b/modules/30-variables/12-change/description.es.yml @@ -0,0 +1,33 @@ +--- + +name: Cambio de variable +theory: | + Con el tiempo, los valores de las variables pueden cambiar dentro de un programa: + + ```php + ¡Padre! + + $greeting = '¡Madre!'; + print_r($greeting); // => ¡Madre! + ``` + + El nombre se mantiene igual, pero los datos internos cambian. Las variables en PHP no requieren una declaración especial. En su lugar, la variable se declara cuando se utiliza por primera vez en el programa. + + Nunca se puede estar seguro de lo que está almacenado dentro de una variable. Para estar tranquilo, es necesario analizar el código que se encuentra antes de la variable. Esto es lo que hacen los desarrolladores durante la depuración, cuando intentan entender por qué el programa no funciona o no funciona como se esperaba. + + Las variables no cambian con frecuencia. Por lo general, se utilizan para almacenar información. + +instructions: | + En el ejercicio se define una variable que contiene una cadena de texto. Reasigne el valor de esta variable y asígnele una cadena de texto en la que los caracteres de la cadena original estén en orden inverso. + +tips: + - | + Si hay una línea `// BEGIN` y `// END` en el editor, el código debe escribirse entre estas líneas. + +definitions: + - name: Variable + description: una forma de almacenar información y darle un nombre para su uso posterior en el código. \ No newline at end of file diff --git a/modules/30-variables/13-variables-naming/description.es.yml b/modules/30-variables/13-variables-naming/description.es.yml new file mode 100644 index 00000000..66b97cfb --- /dev/null +++ b/modules/30-variables/13-variables-naming/description.es.yml @@ -0,0 +1,32 @@ +--- + +name: Elección del nombre de la variable +theory: | + En esta lección hablaremos sobre la nomenclatura. Comenzaremos estudiando un ejemplo. Veamos el siguiente programa: + + ```php + + Targaryen y Dragón + + +tips: [] + +definitions: [] \ No newline at end of file diff --git a/modules/30-variables/15-expressions/description.es.yml b/modules/30-variables/15-expressions/description.es.yml new file mode 100644 index 00000000..7a9ad754 --- /dev/null +++ b/modules/30-variables/15-expressions/description.es.yml @@ -0,0 +1,87 @@ +--- + +name: Expresiones en definiciones +theory: | + Las variables son útiles no solo para almacenar y reutilizar información. También son necesarias para simplificar cálculos complejos. En esta lección aprenderemos a hacerlo. + + ## Usando una expresión + + Supongamos que necesitamos convertir euros a yuanes a través de dólares. Estas conversiones a través de una moneda intermedia son comunes en los bancos al realizar compras en el extranjero. + + Primero, convertiremos 50 euros a dólares. Supongamos que un euro equivale a 1.25 dólares: + + ```php + "Kingsroad" + + // Concatenamos una cadena de texto y una variable que contiene una cadena de texto + $primera = "Kings"; + $que = $primera . "road"; + print_r($que); // => "Kingsroad" + + // Concatenamos dos variables que contienen cadenas de texto + $ultima = 'road'; + $que = $primera . $ultima; + print_r($que); // => "Kingsroad" + ``` + +instructions: | + Escribe un programa que tome la cantidad inicial de euros de la variable `$cantidadEuros`, convierta los euros a dólares y muestre el valor en pantalla. Luego, el programa debe convertir el valor obtenido a yuanes y mostrar el resultado en una nueva línea. + + Ejemplo de salida para 100 euros: + + ``` + 125 + 863.75 + ``` + +tips: + - | + Para hacer un salto de línea, puedes usar `\n` entre la impresión de los dólares y los yuanes. \ No newline at end of file diff --git a/modules/30-variables/18-concatenation/description.es.yml b/modules/30-variables/18-concatenation/description.es.yml new file mode 100644 index 00000000..37bd0127 --- /dev/null +++ b/modules/30-variables/18-concatenation/description.es.yml @@ -0,0 +1,62 @@ +--- + +name: Variables and Concatenation +theory: | + + To reinforce the previous topic, let's try using variables with concatenation. Syntaxically, nothing changes: we know how to concatenate (join) two strings: + + ```php + "Kingsroad" + ``` + + ... and therefore we can concatenate a string and a variable that contains a string: + + ```php + "Kingsroad" + ``` + + ... and even concatenate two variables that contain strings: + + ```php + "Kingsroad" + ``` + +instructions: | + + Websites constantly send emails to their users. A typical task is to automatically send a personalized email, where the username will be in the subject. If the user's name is stored somewhere in the website's database as a string, the task of generating the subject comes down to concatenation: for example, you need to join the string `Hello` with the string that contains the name. + + Write a program that will generate the subject and body of the email, using the provided variables, and display the resulting strings on the screen. + + For the subject, use the variables `$firstName` and `$greeting`, followed by a comma and an exclamation mark. Display this on the screen in the correct order. + + For the body of the email, use the variables `$info` and `$intro`, with the second sentence on a new line. + + The result on the screen should look like this: + +
+  Hello, Joffrey!
+  Here is important information about your account security.
+  We couldn't verify your mother's maiden name.
+  
+ + Complete the task using only two `print_r()`. + +tips: + - | + Think about which string and in what order you need to concatenate the variables to get such a two-line output for the body of the email. + - | + Remember that you can create a string that contains only the control sequence `\n`. \ No newline at end of file diff --git a/modules/30-variables/19-naming-style/description.es.yml b/modules/30-variables/19-naming-style/description.es.yml new file mode 100644 index 00000000..be2c126f --- /dev/null +++ b/modules/30-variables/19-naming-style/description.es.yml @@ -0,0 +1,33 @@ +--- + +name: Nomenclatura de variables +theory: | + Algunos nombres son bastante simples, como `$greeting`. Pero a menudo no es tan obvio. Muchas veces los nombres son compuestos, es decir, incluyen varias palabras. Por ejemplo, "nombre de usuario". En diferentes lenguajes se utilizan diferentes estilos de codificación, por lo que el nombre de la variable será diferente. + + En la nomenclatura de variables se pueden distinguir cuatro enfoques principales, que a veces se combinan entre sí. Todos estos enfoques se aplican cuando el nombre de la variable consta de varias palabras: + + * kebab-case: las partes compuestas de la variable se separan con guiones (`my-super-var`) + * snake_case: se utiliza un guion bajo para separar (`my_super_var`) + * CamelCase: cada palabra en la variable se escribe con mayúscula inicial (`MySuperVar`) + * lowerCamelCase: cada palabra en la variable se escribe con mayúscula inicial, excepto la primera (`mySuperVar`) + + En PHP se utiliza CamelCase y su variante lowerCamelCase, donde la primera letra de la primera palabra es minúscula. Es precisamente lowerCamelCase el que se utiliza para las variables. Esto significa que los nombres se unen entre sí, y todas las palabras excepto la primera se escriben con mayúscula inicial: `$userName`. Con tres palabras se vería así: `$mySuperVariable`. + + Otra regla generalmente aceptada es no utilizar transliteraciones para los nombres, solo inglés. Si tienes dificultades con el inglés, utiliza un traductor. Con el tiempo, al investigar en el código de otras personas, adquirirás una comprensión adecuada de la nomenclatura. + + Los nombres no solo deben transmitir significado, sino también cumplir con las reglas sintácticas que generalmente no se verifican en el nivel del lenguaje, pero son necesarias durante el desarrollo. El proceso de escribir programas en el mundo moderno es un trabajo en equipo, y para una mejor interacción en el equipo, el código se escribe en un estilo uniforme, como si fuera realizado por una sola persona. + + Cada lenguaje tiene sus propias reglas. Recientemente, en PHP se ha establecido un [estándar de codificación](https://www.php-fig.org/psr/psr-1/) ampliamente aceptado, al que todos aspiran de una forma u otra. Estos estándares describen muchos aspectos. Recomendamos que desde el principio te acostumbres a consultar el estándar y escribir código de acuerdo con él. + + Afortunadamente, hoy en día no es necesario recordar todas las reglas del estándar, porque existen programas especiales que verifican automáticamente el código y señalan las violaciones. Estos programas se llaman **linter**, y comenzarás a usarlos un poco más adelante, cuando tengas un poco más de experiencia. + +instructions: | + Crea dos variables con los nombres "primer número" y "segundo número" en inglés, utilizando lowerCamelCase. Asigna el número `1.10` a la primera variable y `-100` a la segunda. Imprime en pantalla el producto de los números almacenados en las variables resultantes. + + El código funcionará con cualquier nombre, y nuestro sistema siempre verifica solo el resultado en pantalla, por lo que la ejecución de esta tarea es responsabilidad tuya. + +tips: [] + +definitions: + - name: Estándar de codificación + description: conjunto de reglas sintácticas y estilísticas para escribir código. diff --git a/modules/30-variables/20-magic-numbers/description.es.yml b/modules/30-variables/20-magic-numbers/description.es.yml new file mode 100644 index 00000000..8a26fe6a --- /dev/null +++ b/modules/30-variables/20-magic-numbers/description.es.yml @@ -0,0 +1,70 @@ +--- + +name: Números mágicos +theory: | + + Recordemos una de las lecciones anteriores: + + ```php + + Rey Balon el 6to tiene 102 habitaciones. + + + Los nombres de las variables deben transmitir el significado de los números, pero al mismo tiempo deben ser lo suficientemente cortos y concisos para una lectura cómoda. + + Recuerda: el código funcionará con cualquier nombre, y nuestro sistema siempre verifica solo el resultado en pantalla, por lo que completar esta tarea es tu responsabilidad. + +tips: [] \ No newline at end of file diff --git a/modules/30-variables/23-constants/description.es.yml b/modules/30-variables/23-constants/description.es.yml new file mode 100644 index 00000000..1b9e36fd --- /dev/null +++ b/modules/30-variables/23-constants/description.es.yml @@ -0,0 +1,47 @@ +--- + +name: Constantes +theory: | + Los desarrolladores a menudo trabajan con datos que nunca cambian. Por ejemplo, el número π, que siempre es igual a `3.14` y no puede cambiar. + + En PHP, se utilizan constantes para acceder a este tipo de datos: + + ```php + 3.14 + ``` + + La creación de una constante es diferente a la creación de una variable. Comienza con la palabra clave `const` seguida del nombre de la constante. No se necesita el signo de dólar. Luego se le asigna el valor deseado. + + Las constantes suelen nombrarse en mayúsculas con `_` como separador. Una constante también se puede utilizar en cualquier expresión. La única restricción es que no se puede modificar. + + PHP tiene muchas constantes integradas que se pueden utilizar en cualquier parte del programa. Aquí hay algunas de ellas: + + * `PHP_VERSION` — versión actual de PHP + * `PHP_MAXPATHLEN` — longitud máxima permitida para el nombre de archivo + * `PHP_INT_MAX` — valor máximo posible para números enteros (integer) + + Además de las constantes normales en PHP, existe un grupo separado llamado **constantes mágicas**. Sus diferencias son las siguientes: + + * No se pueden definir constantes mágicas por uno mismo, solo se pueden utilizar las existentes + * Las constantes mágicas comienzan y terminan con los caracteres `__` (dos guiones bajos) + * La magia radica en que estas constantes tienen el mismo valor solo dentro de una parte específica del programa + + El último punto significa que existen constantes que no son muy constantes, pero sus cambios están regulados y no suelen causar problemas en la práctica. Algunas de estas constantes son: + + * `__LINE__` — contiene el número de línea actual del archivo en el que se utiliza + * `__FILE__` — ruta al archivo actual + * `__DIR__` — ruta al directorio en el que se encuentra el archivo actual + +instructions: | + Crea la constante `DRAGONS_BORN_COUNT` y asígnale el valor 3, que es la cantidad de dragones nacidos de Daenerys. + +tips: + - | + [Lista de constantes integradas en PHP](https://php.net/manual/es/reserved.constants.php) + +definitions: + - name: Constante + description: una forma de almacenar información y darle un nombre para su uso posterior en el código; las constantes no se pueden modificar, a diferencia de las variables. \ No newline at end of file diff --git a/modules/30-variables/24-magic-constants/description.es.yml b/modules/30-variables/24-magic-constants/description.es.yml new file mode 100644 index 00000000..3a9ba813 --- /dev/null +++ b/modules/30-variables/24-magic-constants/description.es.yml @@ -0,0 +1,28 @@ +--- + +name: Constantes mágicas +theory: | + + Además de las constantes normales, en PHP existe un grupo separado llamado **constantes mágicas**. Sus diferencias son las siguientes: + + * No se pueden definir constantes mágicas por uno mismo, solo se pueden utilizar las existentes. + * Las constantes mágicas comienzan y terminan con los caracteres `__` (dos guiones bajos). + * La magia radica en que estas constantes tienen el mismo valor solo dentro de una parte específica del programa. + + El último punto puede parecer extraño. ¿Cómo pueden ser constantes si su valor cambia? Para ser honestos, no son muy constantes, pero sus cambios están claramente regulados y en la práctica no causan problemas. Algunos ejemplos de estas constantes son: + + * `__LINE__` - contiene la línea actual del archivo en el que se utiliza + * `__FILE__` - la ruta al archivo actual + * `__DIR__` - la ruta al directorio en el que se encuentra el archivo actual + +instructions: | + + Muestra en pantalla la ruta al directorio actual utilizando una constante mágica. + +tips: + - | + [Constantes mágicas](https://php.net/manual/es/language.constants.predefined.php) + +definitions: + - name: Constante mágica + description: una constante especial disponible en PHP; tiene diferentes valores en diferentes contextos. \ No newline at end of file diff --git a/modules/30-variables/25-interpolation/description.es.yml b/modules/30-variables/25-interpolation/description.es.yml new file mode 100644 index 00000000..5e24b1d3 --- /dev/null +++ b/modules/30-variables/25-interpolation/description.es.yml @@ -0,0 +1,50 @@ +--- + +name: Interpolación +theory: | + Imaginemos que necesitamos crear un encabezado de correo electrónico a partir de dos variables y signos de puntuación. Podemos resolver esta tarea de la siguiente manera: + + ```php + 'Hola, Joffrey!' + ``` + + Este es un caso simple, pero incluso aquí se requiere un esfuerzo para ver qué cadena se obtendrá al final. Hay que prestar atención a las comillas y los espacios, y a primera vista es difícil entender qué y dónde comienza y termina. + + Existe otra forma más conveniente: la **interpolación**. Así es como se ve: + + ```php + $firstName = 'Joffrey'; + $greeting = 'Hola'; + + // Ten en cuenta que los delimitadores de la cadena son comillas dobles + // La interpolación no funciona con comillas simples + print_r("{$greeting}, {$firstName}!"); // => Hola, Joffrey! + ``` + + https://replit.com/@hexlet/php-basics-interpolation + + En este ejemplo, creamos una sola cadena e insertamos las variables en el orden deseado utilizando llaves (`{}`). Creamos una plantilla donde se insertan los valores necesarios. + + Ahora no tenemos que preocuparnos por las cadenas separadas para los signos de puntuación y los espacios. Estos caracteres están escritos en la cadena de la plantilla. + + En una sola cadena se pueden hacer tantos bloques con llaves como se desee. La interpolación solo funciona con cadenas entre comillas dobles. + + En casi todos los lenguajes, la interpolación es preferible a la concatenación para unir cadenas. La cadena resultante está concatenada y dentro de ella se pueden ver claramente los espacios y otros caracteres. + +instructions: | + Imprime en pantalla la cadena `¿Quieres comer, ?`, donde en lugar de `` se debe utilizar la variable `$stark`. La salida debe ser la siguiente: + +
+  ¿Quieres comer, Arya?
+  
+ +tips: [] + +definitions: + - name: Interpolación + description: método de concatenación de cadenas mediante la inserción de valores de variables en una cadena de plantilla utilizando llaves. Por ejemplo, `\"¡Hola, {$name}!\"`. \ No newline at end of file diff --git a/modules/30-variables/30-symbols/description.es.yml b/modules/30-variables/30-symbols/description.es.yml new file mode 100644 index 00000000..d1533e10 --- /dev/null +++ b/modules/30-variables/30-symbols/description.es.yml @@ -0,0 +1,66 @@ +--- + +name: Extracción de caracteres de una cadena +theory: | + En esta lección aprenderemos a obtener un carácter específico de una cadena. Por ejemplo, si un sitio web conoce el nombre y apellido del usuario, y en algún momento se requiere mostrar esta información en el formato `A. Ivanov`. En este caso, debemos tomar el primer carácter del nombre: + + ```php + A + ``` + + Los corchetes con un número son un operador especial para extraer una cadena. Este número se llama **índice** y representa la posición del carácter dentro de la cadena. + + Los índices comienzan desde cero en casi todos los lenguajes de programación. Para obtener el primer carácter, debemos especificar el índice `0`. El índice del último elemento es igual a la longitud de la cadena menos uno: + + ```php + r + + // Pregunta de autoevaluación. ¿Qué imprimirá este código? + $magic = '\nyou'; + print_r($magic[1]); // => ? + ``` + + También es posible utilizar índices negativos. En este caso, se accede a los caracteres desde el final de la cadena. `-1` es el índice del último carácter, `-2` es el índice del penúltimo carácter, y así sucesivamente. A diferencia de la indexación directa, el conteo inverso comienza desde `-1`: + + ```php + r + ``` + + El índice puede ser no solo un número específico, sino también el valor de una variable. Aquí hay un ejemplo que dará el mismo resultado, mostrando el carácter `A` en la pantalla: + + ```php + A + ``` + + Aquí, el índice dentro de los corchetes no está escrito como un número, sino como una variable. + +instructions: | + Se te han dado tres variables con los apellidos de diferentes personas. Crea y muestra en pantalla una palabra con los caracteres en el siguiente orden: + + 1. El tercer carácter de la primera cadena. + 2. El segundo carácter de la segunda cadena. + 3. El cuarto carácter de la tercera cadena. + 4. El quinto carácter de la segunda cadena. + 5. El tercer carácter de la segunda cadena. + + Intenta utilizar interpolación: dentro de las llaves, puedes colocar no solo variables enteras, sino también caracteres individuales utilizando corchetes. + +tips: [] \ No newline at end of file diff --git a/modules/30-variables/35-heredoc/description.es.yml b/modules/30-variables/35-heredoc/description.es.yml new file mode 100644 index 00000000..8472f446 --- /dev/null +++ b/modules/30-variables/35-heredoc/description.es.yml @@ -0,0 +1,36 @@ +--- + +name: Heredoc +theory: | + En PHP, se pueden definir cadenas de texto utilizando la sintaxis especial de heredoc. Después del operador `<<<`, se debe especificar un identificador con un nombre arbitrario, seguido de un salto de línea y la cadena de texto en sí. Al final, se agrega el mismo identificador que cierra la inserción. Este método es conveniente para definir cadenas de texto largas que contienen saltos de línea y comillas de diferentes tipos: + + ```php + Ejemplo de cadena de texto + // => que abarca varias líneas, + // => utilizando la sintaxis de heredoc. + // => Aquí no es necesario escapar ni las comillas simples ' ni las comillas dobles ". + ``` + + Antes del identificador de cierre, en nuestro caso 'EOT', no deben haber espacios en blanco, de lo contrario, PHP mostrará un error de sintaxis. + +instructions: | + + Asigne el siguiente texto a la variable `$str` utilizando la sintaxis de heredoc. + + Lannister, Targaryen, Baratheon, Stark, Tyrell... todos son solo radios en una rueda. + Uno está en la cima, luego otro está en la cima, y así sucesivamente, aplastando a los que están en el suelo. + +definitions: [] + +tips: + - | + [Heredoc](https://www.php.net/manual/es/language.types.string.php#language.types.string.syntax.heredoc) \ No newline at end of file diff --git a/modules/30-variables/description.es.yml b/modules/30-variables/description.es.yml new file mode 100644 index 00000000..e5838441 --- /dev/null +++ b/modules/30-variables/description.es.yml @@ -0,0 +1,5 @@ +--- + +name: Variables in PHP language +description: + Information can be placed in special "containers" - variables. This allows you to reuse existing data and avoid duplicating it in different parts of the code. In this module, we will cover how to modify variables and name them so that reading your code is understandable to any developer. You will understand that coming up with a variable name is not that simple! We will also explain how to use variables to simplify complex calculations. \ No newline at end of file diff --git a/modules/35-calling-functions/100-call/description.es.yml b/modules/35-calling-functions/100-call/description.es.yml new file mode 100644 index 00000000..5d195150 --- /dev/null +++ b/modules/35-calling-functions/100-call/description.es.yml @@ -0,0 +1,79 @@ +--- + +name: Funciones y su llamado +theory: | + La suma, la concatenación y otras operaciones que hemos visto son capacidades básicas de los lenguajes de programación. Pero con las cadenas de texto se pueden realizar operaciones más complejas. Se pueden invertir, cambiar el caso de las letras, eliminar caracteres innecesarios. + + A un nivel más alto, existe la lógica aplicada a una aplicación específica. Los programas pueden realizar transacciones monetarias, calcular impuestos, generar informes. La cantidad de operaciones similares es infinita y depende de cada programa en particular. Y todas ellas deben estar expresadas en código. Para eso, las funciones nos ayudan, y en esta lección aprenderemos sobre ellas. + + ## Tipos de funciones + + Para expresar cualquier operación arbitraria en programación, existen las **funciones**. Pueden ser funciones incorporadas o agregadas por el programador. Ya estamos familiarizados con una función incorporada: `print_r()`. + + Las **funciones** son una de las construcciones clave en programación, sin ellas no se puede hacer prácticamente nada. Primero aprenderemos a utilizar las funciones ya creadas y luego aprenderemos a crear las nuestras propias. + + ## Cómo trabajar con funciones incorporadas + + Comenzaremos con funciones sencillas para trabajar con cadenas de texto. A continuación, se muestra un ejemplo de llamado a la función `strrev()`, que invierte una cadena de texto: + + ```php + '!aloH' + ``` + + Hemos creado la variable `$resultado` y le hemos indicado al intérprete que guarde en ella el resultado que devuelve el llamado a la función `strrev()`. En este sentido, las funciones son similares a las operaciones, siempre devuelven un resultado. + + La expresión `strrev('¡Hola!')` significa que se está llamando a la función con el nombre `strrev`, a la cual se le ha pasado el argumento o parámetro `'¡Hola!'`. + + Las funciones necesitan argumentos para funcionar, al igual que los operadores necesitan operandos. La función `strrev()` invierte la cadena de texto que se le pasa como argumento. + + El llamado a una función siempre se indica con paréntesis `()`. Estos van justo después del nombre de la función. Entre los paréntesis puede haber cualquier cantidad de argumentos, o incluso ninguno. La cantidad depende de la función que se esté utilizando. Por ejemplo, la función `pow()` recibe dos argumentos y eleva el número pasado como primer parámetro a la potencia indicada como segundo parámetro: + + ```php + 8 + + // En PHP moderno, hay un operador especial para elevar a una potencia + $resultado = 2 ** 3; // 8 + ``` + + Ahora veamos un ejemplo de una función que no recibe argumentos. La función `rand()` genera y devuelve un número aleatorio: + + ```php + 2 + ``` + + Todo esto es válido para cualquier función, por ejemplo, las funciones de cadenas de texto: + + ```php + Nombre de usuario: Toto + ``` + +instructions: | + Muestra en pantalla la primera y la última letra de la oración que se encuentra en la variable `texto`, en el siguiente formato: + +
+  Primera: N
+  Última: t
+  
+ + Intenta crear solo una variable en la que se almacene el texto necesario antes de imprimirlo en pantalla. En esta lección, estamos practicando cómo construir una expresión compuesta. + +# tips: [] \ No newline at end of file diff --git a/modules/35-calling-functions/180-variadic-arguments/description.es.yml b/modules/35-calling-functions/180-variadic-arguments/description.es.yml new file mode 100644 index 00000000..99382850 --- /dev/null +++ b/modules/35-calling-functions/180-variadic-arguments/description.es.yml @@ -0,0 +1,29 @@ +--- + +name: Funciones con número variable de parámetros +theory: | + En esta lección vamos a analizar una característica de algunas funciones. Pueden aceptar un número variable de parámetros. Pero no estamos hablando de valores por defecto. Veamos este ejemplo: + + ```php + '¡Hola, Hexlet!' + ``` + + A diferencia de los datos normales, las funciones realizan acciones, por lo que sus nombres casi siempre deben ser verbos: "construir algo", "dibujar algo", "abrir algo". + + Todo lo que se describe debajo del nombre de la función con sangría se llama cuerpo de la función. Dentro del cuerpo se puede describir cualquier código. Se puede decir que es un pequeño programa independiente, un conjunto de instrucciones arbitrarias. + + El cuerpo se ejecuta cuando se inicia la función. Y cada llamada a la función inicia el cuerpo independientemente de otras llamadas. + + El cuerpo de la función puede estar vacío: + + ```php + "Winter is coming" + ``` + + En los ejercicios en los que se requiere implementar una función, no es necesario llamarla. Esto lo hacen las pruebas automatizadas que verifican el funcionamiento de la función. El ejemplo de llamada se muestra arriba solo para que entiendas cómo se usará la función. + +tips: + - | + [Naming in Programming](https://ru.hexlet.io/blog/posts/naming-in-programming) \ No newline at end of file diff --git a/modules/40-define-functions/200-return/description.es.yml b/modules/40-define-functions/200-return/description.es.yml new file mode 100644 index 00000000..a0619150 --- /dev/null +++ b/modules/40-define-functions/200-return/description.es.yml @@ -0,0 +1,156 @@ +--- + +name: Return Values +theory: | + Functions that we defined in previous lessons ended their work by printing some data on the screen: + + ```php + NULL + ``` + + Let's modify the `greeting()` function so that it starts returning data instead of printing it. To do this, we need to use the return statement instead of printing on the screen: + + ```php + 'Hello, Hexlet!' + // And even perform some actions on the result + print_r(strtoupper($message)); // => 'HELLO, HEXLET!' + ``` + + Any code after `return` is not executed: + + ```php + ? + ``` + +instructions: | + + Implement the `sayHurrayThreeTimes()` function, which returns the string 'hurray! hurray! hurray!'. + + ```php + $hurray = sayHurrayThreeTimes(); + print_r($hurray); // => 'hurray! hurray! hurray!' + + You don't need to call your function, just define it. + +tips: [] diff --git a/modules/40-define-functions/300-parameters/description.es.yml b/modules/40-define-functions/300-parameters/description.es.yml new file mode 100644 index 00000000..4c7ff16b --- /dev/null +++ b/modules/40-define-functions/300-parameters/description.es.yml @@ -0,0 +1,108 @@ +--- + +name: Parámetros de funciones +theory: | + Las funciones no solo pueden devolver valores, sino también recibirlos como parámetros. Ya nos hemos encontrado con parámetros de funciones: + + ```php + '¡fun...' + ``` + + Puedes implementar esta función de diferentes maneras, solo te daremos una pista. Para resolverlo de esta manera, necesitarás extraer una subcadena de la cadena pasada como primer parámetro a la función `truncate()`. Para hacer esto, utiliza la función [substr()](https://www.php.net/manual/es/function.substr.php). Piensa, en función de la tarea, desde qué índice y con qué longitud debes extraer la subcadena. + + ```php + "nothing" + myPrint("Hexlet"); // => "Hexlet" + ``` + + Puede haber cualquier cantidad de parámetros con valores predeterminados: + + ```php + 4` o `3 < 1`. También existen en programación. Por ejemplo, cuando ingresamos a un sitio web, se comparan el nombre de usuario y la contraseña ingresados con los que están en la base de datos. Si coinciden, se nos permite ingresar, es decir, se autentica. En esta lección, veremos las operaciones de comparación. + + Los lenguajes de programación han adaptado todas las operaciones de comparación matemáticas sin cambios, excepto los operadores de igualdad y desigualdad. En matemáticas, se utiliza el signo igual `=`, pero en programación esto ocurre raramente. + + En muchos lenguajes, el símbolo `=` se utiliza para asignar valores a variables. Por lo tanto, en Python se compara con `==`. + + Lista de operaciones de comparación: + + * `<` — menor que + * `<=` — menor o igual que + * `>` — mayor que + * `>=` — mayor o igual que + * `==` — igual que + * `!=` — no igual que + + + Estas operaciones se aplican no solo a números. Por ejemplo, con el operador de igualdad se pueden comparar cadenas de texto: `password == text` es una comparación de identidad de cadenas de texto que están almacenadas en diferentes variables. + + ## Tipo lógico + + Una operación lógica como `5 > 4` o `password == text` es una expresión. Su resultado es un valor especial `True` (verdadero) o `False` (falso). Este es un nuevo tipo de dato para nosotros, el tipo `bool`: + + ```php + 4; + print_r($resultado); // => true + print_r('uno' !== 'uno'); // => false + ``` + + Solo contiene estos dos valores. Junto con las cadenas de texto (string) y los números enteros y racionales, el tipo booleano (bool) es uno de los tipos de datos primitivos en PHP. + + ## Predicados + + Intentemos escribir una función simple que tome la edad de un niño como entrada y determine si es un bebé. Los bebés se consideran aquellos menores de un año. + + Cualquier operación es una expresión, por lo que en una sola línea de la función escribimos "devolver el valor que resulte de la comparación `edad < 1`". Dependiendo del argumento que se reciba, la comparación será verdadera (`True`) o falsa (`False`), y `return` devolverá ese resultado: + + ```php + bool(false) + var_dump(esBebe(0.5)); // => bool(true) + + ``` + +instructions: | + Escriba una función `esJubilado()`, que tome la edad como único argumento y verifique si esa edad es de jubilación. Se considera una edad de jubilación a partir de los 60 años. + + Ejemplos de llamadas: + + ```php + "Calcular el residuo de la división del número `$number` por 2 y verificar si el residuo es igual a cero; luego devolver el resultado de la comparación de igualdad"* + + --- + + *Recordemos cómo extraer caracteres de una cadena utilizando corchetes:* + + ```php + = x <= 20`, donde `x` es la longitud de una contraseña específica. Pero en PHP, este truco no funciona. + + Tendremos que hacer dos expresiones lógicas separadas y combinarlas con el operador especial "Y": + + ```php + = 8 && $longitud <= 20) && tieneCaracteresEspeciales($contraseña); + } + + esContraseñaCorrecta('qwerty'); // false + esContraseñaCorrecta('qwerty1234'); // true + esContraseñaCorrecta('zxcvbnmasdfghjkqwertyui'); // false + ``` + + El operador `&&` significa "Y" - en lógica matemática esto se llama **conjunción**. La expresión completa se considera verdadera solo si cada operando es verdadero, es decir, cada una de las expresiones compuestas. En otras palabras, `&&` significa "y esto, y aquello". La prioridad de este operador es menor que la de los operadores de comparación, por lo que la expresión funciona correctamente sin paréntesis. + + Además de `&&`, se utiliza frecuentemente el operador `||` - "O" (**disyunción**). Significa "o esto, o aquello, o ambos". Los operadores se pueden combinar en cualquier cantidad y en cualquier secuencia, pero cuando se encuentran `&&` y `||` al mismo tiempo, es mejor establecer la prioridad con paréntesis. + + El área de las matemáticas que estudia los operadores lógicos se llama álgebra booleana. A continuación, verás las **tablas de verdad** - a partir de ellas se puede determinar el resultado al aplicar los operadores: + + ### Y `&&` + + | A | B | A `&&` B | + | ----- | ----- | -------- | + | TRUE | TRUE | **TRUE** | + | TRUE | FALSE | FALSE | + | FALSE | TRUE | FALSE | + | FALSE | FALSE | FALSE | + + ### O `||` + + | A | B | A `‖` B | + | ----- | ----- | -------- | + | TRUE | TRUE | **TRUE** | + | TRUE | FALSE | **TRUE** | + | FALSE | TRUE | **TRUE** | + | FALSE | FALSE | FALSE | + +instructions: | + + Implementa la función `esAñoBisiesto()`, que determina si un año es bisiesto o no. Un año es bisiesto si es divisible (es decir, no tiene residuo) por 400 o si es divisible por 4 y no es divisible por 100. Como puedes ver, toda la lógica necesaria ya está incluida en la definición, solo falta convertirla en código: + + ```php + 1 + print_r(false); // => (se muestra una cadena vacía en la pantalla) + print_r(0 || 1); // => 1 + ``` + + El operador **OR** solo funciona con el tipo *bool*, pero se le dan los números `1` y `0`: + + 1. `0` se convierte en `false` y `1` se convierte en `true` + 2. El resultado de `false || true` es `true` + 3. Ahora `print_r()` recibe `true`, pero solo funciona con cadenas + 4. `true` se convierte en `1` + 5. Y se muestra `1` en la pantalla + + Aquí es importante destacar la diferencia entre los operadores `===` y `==`. La diferencia radica en la conversión de tipos. + + La cadena vacía y `false` son valores diferentes, por lo que el operador `===` dice "¡Falso! ¡No son iguales!". + + Pero el operador `==` convierte los tipos. Desde su punto de vista, la cadena vacía y `false` son iguales. Esta conversión es implícita, por lo que se recomienda evitar los operadores `==` y `!=` siempre que sea posible: + + ```php + false + var_dump('' == false); // => true + ``` + + Recordemos la operación de negación. Con una doble negación `!!`, el valor final es igual al valor inicial: + + ```php + false + var_dump(!!$respuesta); // => true + ``` + + Aquí también se producen conversiones de tipo adicionales. Por lo tanto, el resultado de una doble negación siempre será de tipo _bool_. Se utiliza este truco para cambiar el tipo de datos. + + En diferentes lenguajes de programación, hay diferentes reglas de conversión. Algunos lenguajes no realizan conversiones de tipos por sí mismos. + +instructions: | + + Escribe una función `isFalsy()` que verifique si el valor pasado se interpreta como falso en PHP. Para realizar esta verificación, deberás comparar `false` con el valor pasado utilizando `==`. + + ```php + 10) { ... }`" \ No newline at end of file diff --git a/modules/48-conditionals/40-if-else/description.es.yml b/modules/48-conditionals/40-if-else/description.es.yml new file mode 100644 index 00000000..cdee8a5e --- /dev/null +++ b/modules/48-conditionals/40-if-else/description.es.yml @@ -0,0 +1,75 @@ +--- +name: else +theory: | + Intentemos cambiar la función del ejemplo anterior para que no solo devuelva el tipo de oración, sino toda la frase *La oración es normal* o *La oración es una pregunta*: + + ```php + = 0) { + return $number; + } + + return -$number; + } + + abs(10); // 10 + abs(-10); // 10 + ``` + + ¿Se puede escribir de forma más concisa? Algo como `return RESPUESTA DEPENDIENDO DE LA CONDICIÓN`. Para esto, la expresión a la derecha de `return` debe ser una expresión. Pero hay un problema: `if` es una instrucción, no una expresión. + + En PHP existe una construcción que tiene un efecto similar a la construcción *if-else*, pero es una expresión. Se llama **operador ternario**, y es lo que vamos a estudiar en esta lección. + + El **operador ternario** es el único operador de su tipo que requiere tres operandos: + + ```php + = 0 ? $number : -$number; + } + ``` + + El patrón general se ve así: + + ```php + ? : ` + ``` + + ![Operador ternario](assets/ternary-operator.png) + + Vamos a reescribir la función `getTypeOfSentence()` de la misma manera. Veamos cómo era antes: + + ```php + = 0 ? $number : -$number`. \ No newline at end of file diff --git a/modules/48-conditionals/65-switch/description.es.yml b/modules/48-conditionals/65-switch/description.es.yml new file mode 100644 index 00000000..8f8d3811 --- /dev/null +++ b/modules/48-conditionals/65-switch/description.es.yml @@ -0,0 +1,134 @@ +--- + +name: Construcción Switch +theory: | + Muchos lenguajes, además de la construcción condicional *if*, incluyen el **switch**. En esta lección, nos familiarizaremos con él. + + Es una versión especializada del *if*, creada para algunas situaciones particulares. Por ejemplo, tiene sentido usarlo cuando hay una cadena de *if else* con comprobaciones de igualdad. Por ejemplo: + + ```php + 1 + // => 2 + // => 3 + ``` + + No es posible implementar esta función con los conocimientos que ya hemos adquirido, ya que no conocemos de antemano la cantidad de impresiones en pantalla. Pero con los ciclos, esto no es un problema: + + ```php + 1 + // => 2 + // => 3 + // => ¡terminado! + ``` + + https://replit.com/@hexlet/php-basics-while + + En el código de la función se utiliza el ciclo `while`. Está compuesto por tres elementos: + + * La palabra clave `while` - a pesar de su similitud con la llamada a funciones, no es una llamada a función. + * El predicado: una condición que se especifica entre paréntesis después de `while` y se evalúa en cada iteración. + * El cuerpo del ciclo: un bloque de código entre llaves. + + Esta construcción se lee de la siguiente manera: "haz lo que se especifica en el cuerpo del ciclo mientras la condición `$i <= $lastNumber` sea verdadera". + + Veamos cómo funciona este código para la llamada `printNumbers(3)`: + + ```php + + 4 + 3 + 2 + 1 + ¡terminado! + 'A' + // => 'r' + // => 'y' + // => 'a' + ``` + + https://replit.com/@hexlet/php-basics-loops-using-printnamebysymbol + + Lo más importante en este código es establecer la condición correcta en el `while`. Esto se puede hacer de dos formas: + + * `$i < strlen($nombre)` + * `$i <= strlen($nombre) - 1` + + Ambas formas conducen al mismo resultado. + +instructions: | + + Implementa la función `imprimirPalabraInvertidaPorSimbolo()`, que imprime la palabra pasada como argumento carácter por carácter, como se muestra en el ejemplo de la teoría, pero en orden inverso. + + ```php + 't' + // => 'e' + // => 'l' + // => 'x' + // => 'e' + // => 'H' + ``` + +tips: [] \ No newline at end of file diff --git a/modules/50-loops/26-conditions-inside-loops/description.es.yml b/modules/50-loops/26-conditions-inside-loops/description.es.yml new file mode 100644 index 00000000..4ef20482 --- /dev/null +++ b/modules/50-loops/26-conditions-inside-loops/description.es.yml @@ -0,0 +1,60 @@ +--- + +name: Condiciones dentro del cuerpo del bucle +theory: | + + El cuerpo del bucle, al igual que el cuerpo de una función, es el lugar donde se ejecutan las instrucciones. Esto significa que podemos utilizar todo lo aprendido anteriormente dentro de él, por ejemplo, estructuras condicionales. + + Imagina una función que cuenta cuántas veces aparece una letra en una oración. Aquí tienes un ejemplo de cómo funciona: + + ```php + 6 + echo $x; // => 6 + + echo $x++; // => 6 + echo $x; // => 7 + ``` + + Discutamos qué sucede paso a paso en el código: + + 1. Imprimimos `++$x` - esto es un incremento prefijo, por lo que primero el valor de la variable se incrementa en 1, luego se devuelve el resultado y se imprime en la pantalla. + 2. El valor ha cambiado, por lo que `echo $x` imprime 6. + 3. Ahora imprimimos `$x++` - esto es un incremento posfijo, por lo que primero se devuelve y se imprime el valor, y luego la variable se incrementa en 1. + 4. El valor ha cambiado, por lo que `echo $x` imprime 7. + + El incremento y el decremento pueden complicar significativamente el código. Es especialmente difícil cuando insertamos el incremento dentro de otras operaciones: `$x = $i++ - 7 + --$h`. + + Es imposible entender un código así, por lo que es mejor no utilizar tales construcciones. Por ejemplo, en el lenguaje JavaScript, cuando se verifica el código, el linter comienza a quejarse de inmediato cuando ve el uso de incremento y decremento. + + Recomendamos utilizar estas construcciones de la siguiente manera: + + * Dentro de una expresión, nunca mezcle funciones sin efectos secundarios con funciones con efectos secundarios (lo mismo se aplica a las operaciones). + * Utilice el incremento y el decremento solo donde no haya diferencia entre la forma prefija y la forma posfija: por separado de todo, en su propia línea de código. + +instructions: | + El incremento y el decremento no son operaciones muy importantes en PHP y siempre se pueden evitar. La tarea de esta lección no está directamente relacionada con este tema, pero puede utilizar el incremento y el decremento para acostumbrarse a ellos. De lo contrario, este ejercicio es otro entrenamiento para trabajar con bucles, cadenas y condiciones. + + Escriba una función `makeItFunny()` que tome una cadena como entrada y devuelva una copia de la cadena en la que cada elemento n-ésimo esté en mayúsculas. n se especifica como entrada a la función. + + Para determinar cada elemento n-ésimo, se necesita el resto de la división `%`. Piense en cómo se puede utilizar. + + ```php + El ciclo con el índice `$i` se repite mientras se cumpla la condición `$i < strlen($str)`, y después de cada paso, `$i` se incrementa en 1. + + Veamos qué se encuentra entre paréntesis: + + 1. Valor inicial del contador: este código se ejecuta exactamente una vez antes de la primera iteración. + 2. Predicado (condición de repetición del ciclo): se ejecuta en cada iteración, al igual que en el `while`. + 3. Descripción del cambio del contador: este código se ejecuta al final de cada iteración. + + Por lo demás, el funcionamiento es exactamente igual al del ciclo `while`. + +instructions: | + + Implementa la función `sumOfSeries()`, que calcula la suma de una [serie de números enteros](https://ru.wikipedia.org/wiki/Числовой_ряд). La serie se define por dos números: el número inicial y el número final. + + La función recibe dos argumentos numéricos y devuelve la suma de la serie. Por ejemplo, para los argumentos `4` y `7`, la suma será `4 + 5 + 6 + 7 = 22`. + + ```php + Øèðîêàÿ ýëåêòðèôèêàöèÿ þæíûõ ãóáåðíèé äàñò ìîùíûé òîë÷îê ïîäú¸ìó ñåëüñêîãî õîçÿéñòâà + + Estos caracteres aparecen porque el mismo código en diferentes codificaciones corresponde a caracteres completamente diferentes, excepto los primeros 128. Por lo tanto, el texto que utiliza letras en inglés siempre se lee correctamente, pero en otros casos, depende de la suerte. La situación se complicaba aún más porque incluso dentro de un solo alfabeto se creaban múltiples codificaciones diferentes, como Windows-1252, KOI8-R, CP 866, ISO 8859-5. + + En ese momento, en los lenguajes de programación, todas las funciones para trabajar con cadenas de texto se creaban asumiendo que un carácter era igual a un byte. Al menos, esta propiedad era común a todas las codificaciones. + + Las diferentes codificaciones se convirtieron en la causa de problemas constantes en la interacción entre personas y programas. Esta problemática se agravó especialmente con el desarrollo de Internet. Esta situación no podía continuar indefinidamente, y finalmente se creó el estándar **Unicode**. + + Actualmente, Unicode contiene más de 100,000 caracteres y abarca todos los idiomas existentes, incluso los muertos. El estándar Unicode no es una codificación y no dice nada sobre cómo se deben almacenar los caracteres en la memoria, solo establece la relación entre un carácter y un número. + + La forma específica de codificar Unicode se determina mediante las codificaciones correspondientes, entre las que se encuentran UTF-8, UTF-16 y algunas otras. En estas codificaciones, un solo byte ya no es suficiente para almacenar un carácter, se necesitan más bytes. UTF-8 se comporta de manera más inteligente: utiliza un byte para los caracteres del alfabeto inglés y algunos otros, y dos bytes para otros alfabetos. + + Después de muchos años de popularización de Unicode, ocurrió un milagro y ahora la gran mayoría del software utiliza UTF-8. Este proceso fue doloroso y tuvo diferentes efectos en los lenguajes de programación. Por ejemplo, en PHP, las funciones estándar no admiten codificaciones multibyte: + + ```php + 13 + ``` + + https://replit.com/@hexlet/php-basics-strings-deeper-strlen + + Los lenguajes se dividieron en dos campos. Algunos lenguajes incorporaron soporte para codificaciones multibyte en las funciones existentes, por lo que el cambio a UTF-8 no afectó el proceso de programación. Entre estos lenguajes se encuentran Java, Ruby, JavaScript. + + Sin embargo, PHP siguió su propio camino. Para trabajar con codificaciones multibyte, se agregó una [extensión separada para trabajar con cadenas multibyte](https://php.net/manual/es/book.mbstring.php) al lenguaje. En su mayoría, esta extensión agrega muchas funciones para trabajar con cadenas, con la única diferencia de que cada función tiene el prefijo `mb_` (_multibyte_): + + ```php + 7 + ``` + + https://replit.com/@hexlet/php-strings-deeper-mbstrlen + + Sin embargo, no existe una alternativa adecuada para obtener un carácter específico en una cadena por su índice. Esta tarea se debe realizar utilizando la función `mb_substr()`: + + ```php + 1.234 + setlocale(LC_NUMERIC, 'ru_RU'); + print_r(1.234); // => 1,234 + ``` + + Intentemos pasar `0` como segundo argumento en lugar de una localización: `setlocale(LC_ALL, 0)`. En este caso, la función devolverá la localización actual establecida para la categoría. + +instructions: | + Muestra en pantalla la localización actual para la categoría `LC_CTYPE`. + +tips: [] + +definitions: [] \ No newline at end of file diff --git a/modules/60-deep-into-strings/40-startwith/description.es.yml b/modules/60-deep-into-strings/40-startwith/description.es.yml new file mode 100644 index 00000000..364f7cf9 --- /dev/null +++ b/modules/60-deep-into-strings/40-startwith/description.es.yml @@ -0,0 +1,51 @@ +--- + +name: Búsqueda de posición inicial +theory: | + A menudo, al trabajar con cadenas de texto, es necesario determinar si una cadena es una **subcadena** de otra. La mayoría de los lenguajes de programación tienen una función incorporada diseñada específicamente para esta tarea. + + En PHP, esta función solo está disponible a partir de la versión 8. Antes de eso, se simulaba utilizando la función [mb_strpos()](https://php.net/manual/ru/function.mb-strpos.php). Esta función busca la posición de la primera aparición de una cadena dentro de otra. Por ahora, utilizaremos `mb_strpos()`: + + ```php + 00:00:00 UTC 1 de enero de 1970 (jueves) + + El tiempo desde este momento se llama "época de Unix" (_Unix Epoch_). El tiempo Unix se representa como un número entero que aumenta con cada segundo transcurrido, sin necesidad de cálculos para determinar el año, mes, día, hora o minuto. + + Una fecha específica en formato Unix Time se llama **timestamp** - sello de tiempo. Por ejemplo, para obtener el _timestamp_ actual en PHP, se utiliza la función `time()`: + + ```php + Date: Tue, 29 Aug 2023 13:27:04 -0500 Subject: [PATCH 02/10] =?UTF-8?q?=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=20issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Document is not in spanish: c:\Users\danil\Work\exercises-php\modules\30-variables\description.es.yml --- modules/30-variables/description.es.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/30-variables/description.es.yml b/modules/30-variables/description.es.yml index e5838441..316f3032 100644 --- a/modules/30-variables/description.es.yml +++ b/modules/30-variables/description.es.yml @@ -1,5 +1,5 @@ --- -name: Variables in PHP language +name: Variables en PHP description: - Information can be placed in special "containers" - variables. This allows you to reuse existing data and avoid duplicating it in different parts of the code. In this module, we will cover how to modify variables and name them so that reading your code is understandable to any developer. You will understand that coming up with a variable name is not that simple! We will also explain how to use variables to simplify complex calculations. \ No newline at end of file + La información puede ser almacenada en "contenedores" especiales llamados variables. Esto te permite reutilizar datos existentes y evitar duplicarlos en diferentes partes del código. En este módulo, exploraremos cómo modificar variables y nombrarlas de manera que sean comprensibles para cualquier desarrollador. Te darás cuenta de que inventar un nombre para una variable no es tan sencillo. Además, te explicaremos cómo usar variables para simplificar cálculos complejos. From cbdacd0b6186de7b444a8c0a9d216c92b560f6d7 Mon Sep 17 00:00:00 2001 From: yana-fesenko <142812556+yana-fesenko@users.noreply.github.com> Date: Tue, 29 Aug 2023 13:30:36 -0500 Subject: [PATCH 03/10] =?UTF-8?q?=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=20issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Document is not in spanish: c:\Users\danil\Work\exercises-php\modules\30-variables\18-concatenation\description.es.yml --- .../18-concatenation/description.es.yml | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/modules/30-variables/18-concatenation/description.es.yml b/modules/30-variables/18-concatenation/description.es.yml index 37bd0127..8d25372c 100644 --- a/modules/30-variables/18-concatenation/description.es.yml +++ b/modules/30-variables/18-concatenation/description.es.yml @@ -1,62 +1,62 @@ --- -name: Variables and Concatenation +name: Variables y Concatenación theory: | - To reinforce the previous topic, let's try using variables with concatenation. Syntaxically, nothing changes: we know how to concatenate (join) two strings: + Para reforzar el tema anterior, intentemos usar variables con concatenación. Sintácticamente, nada cambia: sabemos cómo concatenar (unir) dos cadenas: ```php "Kingsroad" + $que = "Camino" . "de Reyes"; + print_r($que); // => "CaminodeReyes" ``` - ... and therefore we can concatenate a string and a variable that contains a string: + ... y por lo tanto, podemos concatenar una cadena y una variable que contiene una cadena: ```php "Kingsroad" + print_r($que); // => "CaminodeReyes" ``` - ... and even concatenate two variables that contain strings: + ... e incluso concatenar dos variables que contienen cadenas: ```php "Kingsroad" + $que = $primero . $ultimo; + print_r($que); // => "CaminodeReyes" ``` instructions: | - Websites constantly send emails to their users. A typical task is to automatically send a personalized email, where the username will be in the subject. If the user's name is stored somewhere in the website's database as a string, the task of generating the subject comes down to concatenation: for example, you need to join the string `Hello` with the string that contains the name. + Los sitios web constantemente envían correos electrónicos a sus usuarios. Una tarea típica es enviar automáticamente un correo electrónico personalizado, donde el nombre de usuario estará en el asunto. Si el nombre del usuario se encuentra en algún lugar de la base de datos del sitio web como una cadena, la tarea de generar el asunto se reduce a la concatenación: por ejemplo, necesitas unir la cadena `Hola` con la cadena que contiene el nombre. - Write a program that will generate the subject and body of the email, using the provided variables, and display the resulting strings on the screen. + Escribe un programa que genere el asunto y el cuerpo del correo electrónico, utilizando las variables proporcionadas, y muestre las cadenas resultantes en la pantalla. - For the subject, use the variables `$firstName` and `$greeting`, followed by a comma and an exclamation mark. Display this on the screen in the correct order. + Para el asunto, utiliza las variables `$nombre` y `$saludo`, seguido de una coma y un signo de exclamación. Muestra esto en la pantalla en el orden correcto. - For the body of the email, use the variables `$info` and `$intro`, with the second sentence on a new line. + Para el cuerpo del correo electrónico, utiliza las variables `$informacion` e `$introduccion`, con la segunda oración en una nueva línea. - The result on the screen should look like this: + El resultado en la pantalla debería lucir así:
-  Hello, Joffrey!
-  Here is important information about your account security.
-  We couldn't verify your mother's maiden name.
+  ¡Hola, Joffrey!
+  Aquí tienes información importante sobre la seguridad de tu cuenta.
+  No pudimos verificar el nombre de soltera de tu madre.
   
- Complete the task using only two `print_r()`. + Completa la tarea utilizando solamente dos `print_r()`. tips: - | - Think about which string and in what order you need to concatenate the variables to get such a two-line output for the body of the email. + Piensa en qué cadena y en qué orden debes concatenar las variables para obtener una salida de dos líneas para el cuerpo del correo electrónico. - | - Remember that you can create a string that contains only the control sequence `\n`. \ No newline at end of file + Recuerda que puedes crear una cadena que contenga solo la secuencia de control `\n`. From f8bf471061a7dde34aca41eaa370b0ca04fb7b4b Mon Sep 17 00:00:00 2001 From: yana-fesenko <142812556+yana-fesenko@users.noreply.github.com> Date: Tue, 29 Aug 2023 13:41:14 -0500 Subject: [PATCH 04/10] =?UTF-8?q?=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=20issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Document is not in spanish: c:\Users\danil\Work\exercises-php\modules\40-define-functions\200-return\description.es.yml --- .../200-return/description.es.yml | 124 +++++++++--------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/modules/40-define-functions/200-return/description.es.yml b/modules/40-define-functions/200-return/description.es.yml index a0619150..2df77fe2 100644 --- a/modules/40-define-functions/200-return/description.es.yml +++ b/modules/40-define-functions/200-return/description.es.yml @@ -1,156 +1,156 @@ --- -name: Return Values +name: Retorno de Valores theory: | - Functions that we defined in previous lessons ended their work by printing some data on the screen: + Las funciones que definimos en lecciones anteriores terminaban su ejecución imprimiendo algún dato en la pantalla: ```php NULL + $mensaje = saludo(); + // Para ver "null", necesitamos usar la función var_dump() + var_dump($mensaje); // => NULL ``` - Let's modify the `greeting()` function so that it starts returning data instead of printing it. To do this, we need to use the return statement instead of printing on the screen: + Modificaremos la función `saludo()` para que comience a retornar datos en lugar de imprimirlos. Para hacerlo, necesitamos usar la instrucción de retorno en lugar de imprimir en pantalla: ```php 'Hello, Hexlet!' - // And even perform some actions on the result - print_r(strtoupper($message)); // => 'HELLO, HEXLET!' + // Ahora podemos usar el resultado de la función + $mensaje = saludo(); + print_r($mensaje); // => '¡Hola, Hexlet!' + // También podemos realizar acciones con el resultado + print_r(strtoupper($mensaje)); // => '¡HOLA, HEXLET!' ``` - Any code after `return` is not executed: + Cualquier código después de `return` no se ejecuta: ```php ? + // Uso + ejecutar(); // => ? ``` instructions: | - Implement the `sayHurrayThreeTimes()` function, which returns the string 'hurray! hurray! hurray!'. + Implementa una función llamada `decirHurrayTresVeces()` que retorne la cadena '¡hurray! ¡hurray! ¡hurray!'. ```php - $hurray = sayHurrayThreeTimes(); - print_r($hurray); // => 'hurray! hurray! hurray!' + $hurray = decirHurrayTresVeces(); + print_r($hurray); // => '¡hurray! ¡hurray! ¡hurray!' - You don't need to call your function, just define it. + No es necesario llamar a tu función, solo definirla. tips: [] From 50bf814bc83c7ecbb16c19855f10a922298db423 Mon Sep 17 00:00:00 2001 From: yana-fesenko <142812556+yana-fesenko@users.noreply.github.com> Date: Tue, 29 Aug 2023 13:43:46 -0500 Subject: [PATCH 05/10] =?UTF-8?q?=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=20issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Keys are different in folder: c:\Users\danil\Work\exercises-php\modules\50-loops\10-while --- modules/50-loops/10-while/description.es.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/modules/50-loops/10-while/description.es.yml b/modules/50-loops/10-while/description.es.yml index 43eb1a56..1bedd2d9 100644 --- a/modules/50-loops/10-while/description.es.yml +++ b/modules/50-loops/10-while/description.es.yml @@ -141,4 +141,13 @@ instructions: | 2 1 ¡terminado! - Date: Tue, 29 Aug 2023 13:58:58 -0500 Subject: [PATCH 06/10] =?UTF-8?q?=D1=87=D0=B0=D1=81=D1=82=D0=B8=D1=87?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=20issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cyrillic symbols in: c:\Users\danil\Work\exercises-php\modules\60-deep-into-strings\10-unicode\description.es.yml --- modules/60-deep-into-strings/10-unicode/description.es.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/60-deep-into-strings/10-unicode/description.es.yml b/modules/60-deep-into-strings/10-unicode/description.es.yml index 6bbec495..77a6b4a2 100644 --- a/modules/60-deep-into-strings/10-unicode/description.es.yml +++ b/modules/60-deep-into-strings/10-unicode/description.es.yml @@ -46,7 +46,7 @@ theory: | ```php 13 + echo strlen('Hello!'); // => 6 ``` https://replit.com/@hexlet/php-basics-strings-deeper-strlen @@ -58,7 +58,7 @@ theory: | ```php 7 + echo mb_strlen('Hello'); // => 6 ``` https://replit.com/@hexlet/php-strings-deeper-mbstrlen @@ -89,4 +89,4 @@ tips: - | [¿Qué son las codificaciones?](https://guides.hexlet.io/es/encoding/) -definitions: [] \ No newline at end of file +definitions: [] From 9ad0e4ca84d5aaf19ef32916e2c061a4451e0eba Mon Sep 17 00:00:00 2001 From: "danila.shirkov" Date: Wed, 30 Aug 2023 11:39:09 +0400 Subject: [PATCH 07/10] add text length file --- exercises-php_text_length.csv | 360 ++++++++++++++++++++++++++++++++++ 1 file changed, 360 insertions(+) create mode 100644 exercises-php_text_length.csv diff --git a/exercises-php_text_length.csv b/exercises-php_text_length.csv new file mode 100644 index 00000000..bcabb954 --- /dev/null +++ b/exercises-php_text_length.csv @@ -0,0 +1,360 @@ +c:\Users\danil\Work\exercises-php\description.en.yml,description.en.yml,en,673 +c:\Users\danil\Work\exercises-php\description.es.yml,description.es.yml,es,757 +c:\Users\danil\Work\exercises-php\description.ru.yml,description.ru.yml,ru,707 +c:\Users\danil\Work\exercises-php\drafts\description.en.yml,description.en.yml,en,707 +c:\Users\danil\Work\exercises-php\drafts\10-basics\description.en.yml,description.en.yml,en,458 +c:\Users\danil\Work\exercises-php\drafts\10-basics\10-hello-world\description.en.yml,description.en.yml,en,1724 +c:\Users\danil\Work\exercises-php\drafts\10-basics\20-tags\description.en.yml,description.en.yml,en,859 +c:\Users\danil\Work\exercises-php\drafts\10-basics\30-comments\description.en.yml,description.en.yml,en,1482 +c:\Users\danil\Work\exercises-php\drafts\10-basics\40-instructions\description.en.yml,description.en.yml,en,1684 +c:\Users\danil\Work\exercises-php\drafts\10-basics\45-testing\description.en.yml,description.en.yml,en,3590 +c:\Users\danil\Work\exercises-php\drafts\10-basics\50-syntax-errors\description.en.yml,description.en.yml,en,1806 +c:\Users\danil\Work\exercises-php\drafts\10-date-and-time\10-current-date\description.en.yml,description.en.yml,en,0 +c:\Users\danil\Work\exercises-php\drafts\10-date-and-time\20-timestamp\description.en.yml,description.en.yml,en,0 +c:\Users\danil\Work\exercises-php\drafts\10-date-and-time\30-timezones\description.en.yml,description.en.yml,en,0 +c:\Users\danil\Work\exercises-php\drafts\10-date-and-time\40-compare-dates\description.en.yml,description.en.yml,en,0 +c:\Users\danil\Work\exercises-php\drafts\10-date-and-time\50-calendar\description.en.yml,description.en.yml,en,0 +c:\Users\danil\Work\exercises-php\drafts\10-date-and-time\60-format\description.en.yml,description.en.yml,en,0 +c:\Users\danil\Work\exercises-php\drafts\10-date-and-time\70-locale\description.en.yml,description.en.yml,en,0 +c:\Users\danil\Work\exercises-php\drafts\10-date-and-time\80-time\description.en.yml,description.en.yml,en,0 +c:\Users\danil\Work\exercises-php\drafts\20-arithmetics\description.en.yml,description.en.yml,en,417 +c:\Users\danil\Work\exercises-php\drafts\20-arithmetics\20-basic\description.en.yml,description.en.yml,en,2687 +c:\Users\danil\Work\exercises-php\drafts\20-arithmetics\25-operator\description.en.yml,description.en.yml,en,2205 +c:\Users\danil\Work\exercises-php\drafts\20-arithmetics\27-commutativity\description.en.yml,description.en.yml,en,1283 +c:\Users\danil\Work\exercises-php\drafts\20-arithmetics\30-composition\description.en.yml,description.en.yml,en,1415 +c:\Users\danil\Work\exercises-php\drafts\20-arithmetics\40-priority\description.en.yml,description.en.yml,en,2383 +c:\Users\danil\Work\exercises-php\drafts\20-arithmetics\45-linting\description.en.yml,description.en.yml,en,3375 +c:\Users\danil\Work\exercises-php\drafts\25-strings\description.en.yml,description.en.yml,en,350 +c:\Users\danil\Work\exercises-php\drafts\25-strings\10-quotes\description.en.yml,description.en.yml,en,3507 +c:\Users\danil\Work\exercises-php\drafts\25-strings\15-escape-characters\description.en.yml,description.en.yml,en,5437 +c:\Users\danil\Work\exercises-php\drafts\25-strings\20-strings-concatenation\description.en.yml,description.en.yml,en,2191 +c:\Users\danil\Work\exercises-php\drafts\25-strings\30-encoding\description.en.yml,description.en.yml,en,3166 +c:\Users\danil\Work\exercises-php\drafts\27-data-types\description.en.yml,description.en.yml,en,333 +c:\Users\danil\Work\exercises-php\drafts\27-data-types\40-primitive-data-types\description.en.yml,description.en.yml,en,2808 +c:\Users\danil\Work\exercises-php\drafts\27-data-types\50-data-types-weak-typing\description.en.yml,description.en.yml,en,1955 +c:\Users\danil\Work\exercises-php\drafts\27-data-types\55-type-conversion\description.en.yml,description.en.yml,en,1705 +c:\Users\danil\Work\exercises-php\drafts\30-variables\description.en.yml,description.en.yml,en,480 +c:\Users\danil\Work\exercises-php\drafts\30-variables\10-definition\description.en.yml,description.en.yml,en,2540 +c:\Users\danil\Work\exercises-php\drafts\30-variables\12-change\description.en.yml,description.en.yml,en,1521 +c:\Users\danil\Work\exercises-php\drafts\30-variables\13-variables-naming\description.en.yml,description.en.yml,en,1752 +c:\Users\danil\Work\exercises-php\drafts\30-variables\14-errors\description.en.yml,description.en.yml,en,1160 +c:\Users\danil\Work\exercises-php\drafts\30-variables\15-expressions\description.en.yml,description.en.yml,en,3498 +c:\Users\danil\Work\exercises-php\drafts\30-variables\18-concatenation\description.en.yml,description.en.yml,en,1952 +c:\Users\danil\Work\exercises-php\drafts\30-variables\19-naming-style\description.en.yml,description.en.yml,en,3151 +c:\Users\danil\Work\exercises-php\drafts\30-variables\20-magic-numbers\description.en.yml,description.en.yml,en,2731 +c:\Users\danil\Work\exercises-php\drafts\30-variables\23-constants\description.en.yml,description.en.yml,en,1461 +c:\Users\danil\Work\exercises-php\drafts\30-variables\24-magic-constants\description.en.yml,description.en.yml,en,1241 +c:\Users\danil\Work\exercises-php\drafts\30-variables\25-interpolation\description.en.yml,description.en.yml,en,1851 +c:\Users\danil\Work\exercises-php\drafts\30-variables\30-symbols\description.en.yml,description.en.yml,en,2030 +c:\Users\danil\Work\exercises-php\drafts\30-variables\35-heredoc\description.en.yml,description.en.yml,en,1382 +c:\Users\danil\Work\exercises-php\drafts\35-calling-functions\description.en.yml,description.en.yml,en,507 +c:\Users\danil\Work\exercises-php\drafts\35-calling-functions\100-call\description.en.yml,description.en.yml,en,3759 +c:\Users\danil\Work\exercises-php\drafts\35-calling-functions\120-function-signature\description.en.yml,description.en.yml,en,2824 +c:\Users\danil\Work\exercises-php\drafts\35-calling-functions\135-calling-functions-default-arguments\description.en.yml,description.en.yml,en,1168 +c:\Users\danil\Work\exercises-php\drafts\35-calling-functions\150-calling-functions-expression\description.en.yml,description.en.yml,en,2401 +c:\Users\danil\Work\exercises-php\drafts\35-calling-functions\180-variadic-arguments\description.en.yml,description.en.yml,en,1228 +c:\Users\danil\Work\exercises-php\drafts\35-calling-functions\270-deterministic\description.en.yml,description.en.yml,en,1876 +c:\Users\danil\Work\exercises-php\drafts\35-calling-functions\900-stdlib\description.en.yml,description.en.yml,en,2441 +c:\Users\danil\Work\exercises-php\drafts\40-define-functions\description.en.yml,description.en.yml,en,532 +c:\Users\danil\Work\exercises-php\drafts\40-define-functions\100-define\description.en.yml,description.en.yml,en,2882 +c:\Users\danil\Work\exercises-php\drafts\40-define-functions\200-return\description.en.yml,description.en.yml,en,4033 +c:\Users\danil\Work\exercises-php\drafts\40-define-functions\300-parameters\description.en.yml,description.en.yml,en,3879 +c:\Users\danil\Work\exercises-php\drafts\40-define-functions\340-default-parameters\description.en.yml,description.en.yml,en,2686 +c:\Users\danil\Work\exercises-php\drafts\40-define-functions\500-reading-documentation\description.en.yml,description.en.yml,en,2735 +c:\Users\danil\Work\exercises-php\drafts\45-logic\description.en.yml,description.en.yml,en,394 +c:\Users\danil\Work\exercises-php\drafts\45-logic\10-bool-type\description.en.yml,description.en.yml,en,3145 +c:\Users\danil\Work\exercises-php\drafts\45-logic\15-predicates\description.en.yml,description.en.yml,en,1512 +c:\Users\danil\Work\exercises-php\drafts\45-logic\20-logic-combine-expressions\description.en.yml,description.en.yml,en,3180 +c:\Users\danil\Work\exercises-php\drafts\45-logic\25-logical-operators\description.en.yml,description.en.yml,en,4730 +c:\Users\danil\Work\exercises-php\drafts\45-logic\28-logical-negation\description.en.yml,description.en.yml,en,1968 +c:\Users\danil\Work\exercises-php\drafts\45-logic\29-logical-operators-2\description.en.yml,description.en.yml,en,1532 +c:\Users\danil\Work\exercises-php\drafts\45-logic\70-logic-weak-typing\description.en.yml,description.en.yml,en,3115 +c:\Users\danil\Work\exercises-php\drafts\48-conditionals\description.en.yml,description.en.yml,en,420 +c:\Users\danil\Work\exercises-php\drafts\48-conditionals\30-if\description.en.yml,description.en.yml,en,2207 +c:\Users\danil\Work\exercises-php\drafts\48-conditionals\40-if-else\description.en.yml,description.en.yml,en,2138 +c:\Users\danil\Work\exercises-php\drafts\48-conditionals\50-else-if\description.en.yml,description.en.yml,en,2647 +c:\Users\danil\Work\exercises-php\drafts\48-conditionals\60-ternary-operator\description.en.yml,description.en.yml,en,2198 +c:\Users\danil\Work\exercises-php\drafts\48-conditionals\65-switch\description.en.yml,description.en.yml,en,4232 +c:\Users\danil\Work\exercises-php\drafts\48-conditionals\75-elvis\description.en.yml,description.en.yml,en,2222 +c:\Users\danil\Work\exercises-php\drafts\50-loops\description.en.yml,description.en.yml,en,541 +c:\Users\danil\Work\exercises-php\drafts\50-loops\10-while\description.en.yml,description.en.yml,en,5825 +c:\Users\danil\Work\exercises-php\drafts\50-loops\20-aggregation-numbers\description.en.yml,description.en.yml,en,4785 +c:\Users\danil\Work\exercises-php\drafts\50-loops\23-aggregation-strings\description.en.yml,description.en.yml,en,1344 +c:\Users\danil\Work\exercises-php\drafts\50-loops\25-iteration-over-string\description.en.yml,description.en.yml,en,1284 +c:\Users\danil\Work\exercises-php\drafts\50-loops\26-conditions-inside-loops\description.en.yml,description.en.yml,en,1722 +c:\Users\danil\Work\exercises-php\drafts\50-loops\28-build-strings\description.en.yml,description.en.yml,en,2064 +c:\Users\danil\Work\exercises-php\drafts\50-loops\29-edge-cases\description.en.yml,description.en.yml,en,3294 +c:\Users\danil\Work\exercises-php\drafts\50-loops\30-syntax-sugar\description.en.yml,description.en.yml,en,1060 +c:\Users\danil\Work\exercises-php\drafts\50-loops\50-mutators\description.en.yml,description.en.yml,en,3156 +c:\Users\danil\Work\exercises-php\drafts\50-loops\55-return-from-loop\description.en.yml,description.en.yml,en,2244 +c:\Users\danil\Work\exercises-php\drafts\50-loops\70-for\description.en.yml,description.en.yml,en,1577 +c:\Users\danil\Work\exercises-php\drafts\60-deep-into-strings\description.en.yml,description.en.yml,en,156 +c:\Users\danil\Work\exercises-php\drafts\60-deep-into-strings\10-unicode\description.en.yml,description.en.yml,en,4993 +c:\Users\danil\Work\exercises-php\drafts\60-deep-into-strings\30-locales\description.en.yml,description.en.yml,en,2742 +c:\Users\danil\Work\exercises-php\drafts\60-deep-into-strings\40-startwith\description.en.yml,description.en.yml,en,1392 +c:\Users\danil\Work\exercises-php\drafts\70-dates\description.en.yml,description.en.yml,en,153 +c:\Users\danil\Work\exercises-php\drafts\70-dates\10-timestamp\description.en.yml,description.en.yml,en,1605 +c:\Users\danil\Work\exercises-php\drafts\70-dates\20-date\description.en.yml,description.en.yml,en,1348 +c:\Users\danil\Work\exercises-php\drafts\70-dates\30-mktime\description.en.yml,description.en.yml,en,735 +c:\Users\danil\Work\exercises-php\drafts\70-dates\40-timezone\description.en.yml,description.en.yml,en,1292 +c:\Users\danil\Work\exercises-php\modules\10-basics\description.en.yml,description.en.yml,en,485 +c:\Users\danil\Work\exercises-php\modules\10-basics\description.es.yml,description.es.yml,es,546 +c:\Users\danil\Work\exercises-php\modules\10-basics\description.ru.yml,description.ru.yml,ru,458 +c:\Users\danil\Work\exercises-php\modules\10-basics\10-hello-world\description.en.yml,description.en.yml,en,1628 +c:\Users\danil\Work\exercises-php\modules\10-basics\10-hello-world\description.es.yml,description.es.yml,es,2420 +c:\Users\danil\Work\exercises-php\modules\10-basics\10-hello-world\description.ru.yml,description.ru.yml,ru,2103 +c:\Users\danil\Work\exercises-php\modules\10-basics\20-tags\description.en.yml,description.en.yml,en,837 +c:\Users\danil\Work\exercises-php\modules\10-basics\20-tags\description.es.yml,description.es.yml,es,928 +c:\Users\danil\Work\exercises-php\modules\10-basics\20-tags\description.ru.yml,description.ru.yml,ru,848 +c:\Users\danil\Work\exercises-php\modules\10-basics\30-comments\description.en.yml,description.en.yml,en,1380 +c:\Users\danil\Work\exercises-php\modules\10-basics\30-comments\description.es.yml,description.es.yml,es,1421 +c:\Users\danil\Work\exercises-php\modules\10-basics\30-comments\description.ru.yml,description.ru.yml,ru,1373 +c:\Users\danil\Work\exercises-php\modules\10-basics\40-instructions\description.en.yml,description.en.yml,en,1639 +c:\Users\danil\Work\exercises-php\modules\10-basics\40-instructions\description.es.yml,description.es.yml,es,1580 +c:\Users\danil\Work\exercises-php\modules\10-basics\40-instructions\description.ru.yml,description.ru.yml,ru,1536 +c:\Users\danil\Work\exercises-php\modules\10-basics\45-testing\description.en.yml,description.en.yml,en,3807 +c:\Users\danil\Work\exercises-php\modules\10-basics\45-testing\description.es.yml,description.es.yml,es,4045 +c:\Users\danil\Work\exercises-php\modules\10-basics\45-testing\description.ru.yml,description.ru.yml,ru,3632 +c:\Users\danil\Work\exercises-php\modules\10-basics\50-syntax-errors\description.en.yml,description.en.yml,en,1855 +c:\Users\danil\Work\exercises-php\modules\10-basics\50-syntax-errors\description.es.yml,description.es.yml,es,2008 +c:\Users\danil\Work\exercises-php\modules\10-basics\50-syntax-errors\description.ru.yml,description.ru.yml,ru,1806 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\description.en.yml,description.en.yml,en,429 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\description.es.yml,description.es.yml,es,457 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\description.ru.yml,description.ru.yml,ru,417 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\20-basic\description.en.yml,description.en.yml,en,2770 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\20-basic\description.es.yml,description.es.yml,es,2279 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\20-basic\description.ru.yml,description.ru.yml,ru,2063 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\25-operator\description.en.yml,description.en.yml,en,2280 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\25-operator\description.es.yml,description.es.yml,es,2209 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\25-operator\description.ru.yml,description.ru.yml,ru,2071 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\27-commutativity\description.en.yml,description.en.yml,en,1343 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\27-commutativity\description.es.yml,description.es.yml,es,1257 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\27-commutativity\description.ru.yml,description.ru.yml,ru,1206 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\30-composition\description.en.yml,description.en.yml,en,1406 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\30-composition\description.es.yml,description.es.yml,es,1075 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\30-composition\description.ru.yml,description.ru.yml,ru,1011 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\40-priority\description.en.yml,description.en.yml,en,2412 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\40-priority\description.es.yml,description.es.yml,es,2279 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\40-priority\description.ru.yml,description.ru.yml,ru,1983 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\45-linting\description.en.yml,description.en.yml,en,3214 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\45-linting\description.es.yml,description.es.yml,es,3432 +c:\Users\danil\Work\exercises-php\modules\20-arithmetics\45-linting\description.ru.yml,description.ru.yml,ru,3161 +c:\Users\danil\Work\exercises-php\modules\25-strings\description.en.yml,description.en.yml,en,362 +c:\Users\danil\Work\exercises-php\modules\25-strings\description.es.yml,description.es.yml,es,409 +c:\Users\danil\Work\exercises-php\modules\25-strings\description.ru.yml,description.ru.yml,ru,350 +c:\Users\danil\Work\exercises-php\modules\25-strings\10-quotes\description.en.yml,description.en.yml,en,3515 +c:\Users\danil\Work\exercises-php\modules\25-strings\10-quotes\description.es.yml,description.es.yml,es,3853 +c:\Users\danil\Work\exercises-php\modules\25-strings\10-quotes\description.ru.yml,description.ru.yml,ru,3395 +c:\Users\danil\Work\exercises-php\modules\25-strings\15-escape-characters\description.en.yml,description.en.yml,en,5300 +c:\Users\danil\Work\exercises-php\modules\25-strings\15-escape-characters\description.es.yml,description.es.yml,es,3390 +c:\Users\danil\Work\exercises-php\modules\25-strings\15-escape-characters\description.ru.yml,description.ru.yml,ru,3238 +c:\Users\danil\Work\exercises-php\modules\25-strings\20-strings-concatenation\description.en.yml,description.en.yml,en,2261 +c:\Users\danil\Work\exercises-php\modules\25-strings\20-strings-concatenation\description.es.yml,description.es.yml,es,1972 +c:\Users\danil\Work\exercises-php\modules\25-strings\20-strings-concatenation\description.ru.yml,description.ru.yml,ru,1791 +c:\Users\danil\Work\exercises-php\modules\25-strings\30-encoding\description.en.yml,description.en.yml,en,2984 +c:\Users\danil\Work\exercises-php\modules\25-strings\30-encoding\description.es.yml,description.es.yml,es,3447 +c:\Users\danil\Work\exercises-php\modules\25-strings\30-encoding\description.ru.yml,description.ru.yml,ru,3166 +c:\Users\danil\Work\exercises-php\modules\27-data-types\description.en.yml,description.en.yml,en,327 +c:\Users\danil\Work\exercises-php\modules\27-data-types\description.es.yml,description.es.yml,es,364 +c:\Users\danil\Work\exercises-php\modules\27-data-types\description.ru.yml,description.ru.yml,ru,333 +c:\Users\danil\Work\exercises-php\modules\27-data-types\40-primitive-data-types\description.en.yml,description.en.yml,en,2148 +c:\Users\danil\Work\exercises-php\modules\27-data-types\40-primitive-data-types\description.es.yml,description.es.yml,es,2909 +c:\Users\danil\Work\exercises-php\modules\27-data-types\40-primitive-data-types\description.ru.yml,description.ru.yml,ru,2688 +c:\Users\danil\Work\exercises-php\modules\27-data-types\50-data-types-weak-typing\description.en.yml,description.en.yml,en,1837 +c:\Users\danil\Work\exercises-php\modules\27-data-types\50-data-types-weak-typing\description.es.yml,description.es.yml,es,1891 +c:\Users\danil\Work\exercises-php\modules\27-data-types\50-data-types-weak-typing\description.ru.yml,description.ru.yml,ru,1741 +c:\Users\danil\Work\exercises-php\modules\27-data-types\55-type-conversion\description.en.yml,description.en.yml,en,1706 +c:\Users\danil\Work\exercises-php\modules\27-data-types\55-type-conversion\description.es.yml,description.es.yml,es,1634 +c:\Users\danil\Work\exercises-php\modules\27-data-types\55-type-conversion\description.ru.yml,description.ru.yml,ru,1432 +c:\Users\danil\Work\exercises-php\modules\30-variables\description.en.yml,description.en.yml,en,228 +c:\Users\danil\Work\exercises-php\modules\30-variables\description.es.yml,description.es.yml,es,488 +c:\Users\danil\Work\exercises-php\modules\30-variables\description.ru.yml,description.ru.yml,ru,480 +c:\Users\danil\Work\exercises-php\modules\30-variables\10-definition\description.en.yml,description.en.yml,en,2553 +c:\Users\danil\Work\exercises-php\modules\30-variables\10-definition\description.es.yml,description.es.yml,es,2492 +c:\Users\danil\Work\exercises-php\modules\30-variables\10-definition\description.ru.yml,description.ru.yml,ru,2145 +c:\Users\danil\Work\exercises-php\modules\30-variables\12-change\description.en.yml,description.en.yml,en,1408 +c:\Users\danil\Work\exercises-php\modules\30-variables\12-change\description.es.yml,description.es.yml,es,1400 +c:\Users\danil\Work\exercises-php\modules\30-variables\12-change\description.ru.yml,description.ru.yml,ru,1273 +c:\Users\danil\Work\exercises-php\modules\30-variables\13-variables-naming\description.en.yml,description.en.yml,en,1800 +c:\Users\danil\Work\exercises-php\modules\30-variables\13-variables-naming\description.es.yml,description.es.yml,es,1981 +c:\Users\danil\Work\exercises-php\modules\30-variables\13-variables-naming\description.ru.yml,description.ru.yml,ru,1864 +c:\Users\danil\Work\exercises-php\modules\30-variables\14-errors\description.en.yml,description.en.yml,en,1177 +c:\Users\danil\Work\exercises-php\modules\30-variables\14-errors\description.es.yml,description.es.yml,es,1165 +c:\Users\danil\Work\exercises-php\modules\30-variables\14-errors\description.ru.yml,description.ru.yml,ru,1102 +c:\Users\danil\Work\exercises-php\modules\30-variables\15-expressions\description.en.yml,description.en.yml,en,3576 +c:\Users\danil\Work\exercises-php\modules\30-variables\15-expressions\description.es.yml,description.es.yml,es,3263 +c:\Users\danil\Work\exercises-php\modules\30-variables\15-expressions\description.ru.yml,description.ru.yml,ru,3046 +c:\Users\danil\Work\exercises-php\modules\30-variables\18-concatenation\description.en.yml,description.en.yml,en,1923 +c:\Users\danil\Work\exercises-php\modules\30-variables\18-concatenation\description.es.yml,description.es.yml,es,1974 +c:\Users\danil\Work\exercises-php\modules\30-variables\18-concatenation\description.ru.yml,description.ru.yml,ru,1952 +c:\Users\danil\Work\exercises-php\modules\30-variables\19-naming-style\description.en.yml,description.en.yml,en,2716 +c:\Users\danil\Work\exercises-php\modules\30-variables\19-naming-style\description.es.yml,description.es.yml,es,3277 +c:\Users\danil\Work\exercises-php\modules\30-variables\19-naming-style\description.ru.yml,description.ru.yml,ru,2978 +c:\Users\danil\Work\exercises-php\modules\30-variables\20-magic-numbers\description.en.yml,description.en.yml,en,2650 +c:\Users\danil\Work\exercises-php\modules\30-variables\20-magic-numbers\description.es.yml,description.es.yml,es,3088 +c:\Users\danil\Work\exercises-php\modules\30-variables\20-magic-numbers\description.ru.yml,description.ru.yml,ru,2731 +c:\Users\danil\Work\exercises-php\modules\30-variables\23-constants\description.en.yml,description.en.yml,en,1372 +c:\Users\danil\Work\exercises-php\modules\30-variables\23-constants\description.es.yml,description.es.yml,es,2279 +c:\Users\danil\Work\exercises-php\modules\30-variables\23-constants\description.ru.yml,description.ru.yml,ru,2174 +c:\Users\danil\Work\exercises-php\modules\30-variables\24-magic-constants\description.en.yml,description.en.yml,en,1162 +c:\Users\danil\Work\exercises-php\modules\30-variables\24-magic-constants\description.es.yml,description.es.yml,es,1264 +c:\Users\danil\Work\exercises-php\modules\30-variables\24-magic-constants\description.ru.yml,description.ru.yml,ru,1241 +c:\Users\danil\Work\exercises-php\modules\30-variables\25-interpolation\description.en.yml,description.en.yml,en,1846 +c:\Users\danil\Work\exercises-php\modules\30-variables\25-interpolation\description.es.yml,description.es.yml,es,2115 +c:\Users\danil\Work\exercises-php\modules\30-variables\25-interpolation\description.ru.yml,description.ru.yml,ru,1936 +c:\Users\danil\Work\exercises-php\modules\30-variables\30-symbols\description.en.yml,description.en.yml,en,2156 +c:\Users\danil\Work\exercises-php\modules\30-variables\30-symbols\description.es.yml,description.es.yml,es,2394 +c:\Users\danil\Work\exercises-php\modules\30-variables\30-symbols\description.ru.yml,description.ru.yml,ru,2053 +c:\Users\danil\Work\exercises-php\modules\30-variables\35-heredoc\description.en.yml,description.en.yml,en,1283 +c:\Users\danil\Work\exercises-php\modules\30-variables\35-heredoc\description.es.yml,description.es.yml,es,1464 +c:\Users\danil\Work\exercises-php\modules\30-variables\35-heredoc\description.ru.yml,description.ru.yml,ru,1347 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\description.en.yml,description.en.yml,en,575 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\description.es.yml,description.es.yml,es,590 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\description.ru.yml,description.ru.yml,ru,507 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\100-call\description.en.yml,description.en.yml,en,3844 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\100-call\description.es.yml,description.es.yml,es,3871 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\100-call\description.ru.yml,description.ru.yml,ru,3365 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\120-function-signature\description.en.yml,description.en.yml,en,2810 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\120-function-signature\description.es.yml,description.es.yml,es,3970 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\120-function-signature\description.ru.yml,description.ru.yml,ru,3652 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\135-calling-functions-default-arguments\description.en.yml,description.en.yml,en,1260 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\135-calling-functions-default-arguments\description.es.yml,description.es.yml,es,1277 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\135-calling-functions-default-arguments\description.ru.yml,description.ru.yml,ru,1168 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\150-calling-functions-expression\description.en.yml,description.en.yml,en,2306 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\150-calling-functions-expression\description.es.yml,description.es.yml,es,2196 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\150-calling-functions-expression\description.ru.yml,description.ru.yml,ru,1997 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\180-variadic-arguments\description.en.yml,description.en.yml,en,1144 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\180-variadic-arguments\description.es.yml,description.es.yml,es,1092 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\180-variadic-arguments\description.ru.yml,description.ru.yml,ru,1047 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\270-deterministic\description.en.yml,description.en.yml,en,1583 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\270-deterministic\description.es.yml,description.es.yml,es,4238 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\270-deterministic\description.ru.yml,description.ru.yml,ru,3869 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\900-stdlib\description.en.yml,description.en.yml,en,2438 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\900-stdlib\description.es.yml,description.es.yml,es,2520 +c:\Users\danil\Work\exercises-php\modules\35-calling-functions\900-stdlib\description.ru.yml,description.ru.yml,ru,2180 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\description.en.yml,description.en.yml,en,567 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\description.es.yml,description.es.yml,es,580 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\description.ru.yml,description.ru.yml,ru,532 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\100-define\description.en.yml,description.en.yml,en,2711 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\100-define\description.es.yml,description.es.yml,es,3097 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\100-define\description.ru.yml,description.ru.yml,ru,3144 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\200-return\description.en.yml,description.en.yml,en,3954 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\200-return\description.es.yml,description.es.yml,es,4486 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\200-return\description.ru.yml,description.ru.yml,ru,4417 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\300-parameters\description.en.yml,description.en.yml,en,4005 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\300-parameters\description.es.yml,description.es.yml,es,4069 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\300-parameters\description.ru.yml,description.ru.yml,ru,3824 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\340-default-parameters\description.en.yml,description.en.yml,en,2607 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\340-default-parameters\description.es.yml,description.es.yml,es,2855 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\340-default-parameters\description.ru.yml,description.ru.yml,ru,2738 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\500-reading-documentation\description.en.yml,description.en.yml,en,2394 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\500-reading-documentation\description.es.yml,description.es.yml,es,3060 +c:\Users\danil\Work\exercises-php\modules\40-define-functions\500-reading-documentation\description.ru.yml,description.ru.yml,ru,2734 +c:\Users\danil\Work\exercises-php\modules\45-logic\description.en.yml,description.en.yml,en,402 +c:\Users\danil\Work\exercises-php\modules\45-logic\description.es.yml,description.es.yml,es,434 +c:\Users\danil\Work\exercises-php\modules\45-logic\description.ru.yml,description.ru.yml,ru,394 +c:\Users\danil\Work\exercises-php\modules\45-logic\10-bool-type\description.en.yml,description.en.yml,en,3007 +c:\Users\danil\Work\exercises-php\modules\45-logic\10-bool-type\description.es.yml,description.es.yml,es,2866 +c:\Users\danil\Work\exercises-php\modules\45-logic\10-bool-type\description.ru.yml,description.ru.yml,ru,2652 +c:\Users\danil\Work\exercises-php\modules\45-logic\15-predicates\description.en.yml,description.en.yml,en,1506 +c:\Users\danil\Work\exercises-php\modules\45-logic\15-predicates\description.es.yml,description.es.yml,es,1113 +c:\Users\danil\Work\exercises-php\modules\45-logic\15-predicates\description.ru.yml,description.ru.yml,ru,1058 +c:\Users\danil\Work\exercises-php\modules\45-logic\20-logic-combine-expressions\description.en.yml,description.en.yml,en,3417 +c:\Users\danil\Work\exercises-php\modules\45-logic\20-logic-combine-expressions\description.es.yml,description.es.yml,es,2236 +c:\Users\danil\Work\exercises-php\modules\45-logic\20-logic-combine-expressions\description.ru.yml,description.ru.yml,ru,1949 +c:\Users\danil\Work\exercises-php\modules\45-logic\25-logical-operators\description.en.yml,description.en.yml,en,4897 +c:\Users\danil\Work\exercises-php\modules\45-logic\25-logical-operators\description.es.yml,description.es.yml,es,3562 +c:\Users\danil\Work\exercises-php\modules\45-logic\25-logical-operators\description.ru.yml,description.ru.yml,ru,3258 +c:\Users\danil\Work\exercises-php\modules\45-logic\28-logical-negation\description.en.yml,description.en.yml,en,1993 +c:\Users\danil\Work\exercises-php\modules\45-logic\28-logical-negation\description.es.yml,description.es.yml,es,1891 +c:\Users\danil\Work\exercises-php\modules\45-logic\28-logical-negation\description.ru.yml,description.ru.yml,ru,1827 +c:\Users\danil\Work\exercises-php\modules\45-logic\29-logical-operators-2\description.en.yml,description.en.yml,en,1689 +c:\Users\danil\Work\exercises-php\modules\45-logic\29-logical-operators-2\description.es.yml,description.es.yml,es,1720 +c:\Users\danil\Work\exercises-php\modules\45-logic\29-logical-operators-2\description.ru.yml,description.ru.yml,ru,1532 +c:\Users\danil\Work\exercises-php\modules\45-logic\70-logic-weak-typing\description.en.yml,description.en.yml,en,3151 +c:\Users\danil\Work\exercises-php\modules\45-logic\70-logic-weak-typing\description.es.yml,description.es.yml,es,2667 +c:\Users\danil\Work\exercises-php\modules\45-logic\70-logic-weak-typing\description.ru.yml,description.ru.yml,ru,2553 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\description.en.yml,description.en.yml,en,451 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\description.es.yml,description.es.yml,es,475 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\description.ru.yml,description.ru.yml,ru,420 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\30-if\description.en.yml,description.en.yml,en,2299 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\30-if\description.es.yml,description.es.yml,es,1796 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\30-if\description.ru.yml,description.ru.yml,ru,1622 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\40-if-else\description.en.yml,description.en.yml,en,2212 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\40-if-else\description.es.yml,description.es.yml,es,2302 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\40-if-else\description.ru.yml,description.ru.yml,ru,2119 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\50-else-if\description.en.yml,description.en.yml,en,2604 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\50-else-if\description.es.yml,description.es.yml,es,2911 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\50-else-if\description.ru.yml,description.ru.yml,ru,2619 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\60-ternary-operator\description.en.yml,description.en.yml,en,2237 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\60-ternary-operator\description.es.yml,description.es.yml,es,2486 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\60-ternary-operator\description.ru.yml,description.ru.yml,ru,2402 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\65-switch\description.en.yml,description.en.yml,en,4310 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\65-switch\description.es.yml,description.es.yml,es,4743 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\65-switch\description.ru.yml,description.ru.yml,ru,4376 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\75-elvis\description.en.yml,description.en.yml,en,2311 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\75-elvis\description.es.yml,description.es.yml,es,2451 +c:\Users\danil\Work\exercises-php\modules\48-conditionals\75-elvis\description.ru.yml,description.ru.yml,ru,2275 +c:\Users\danil\Work\exercises-php\modules\50-loops\description.en.yml,description.en.yml,en,537 +c:\Users\danil\Work\exercises-php\modules\50-loops\description.es.yml,description.es.yml,es,599 +c:\Users\danil\Work\exercises-php\modules\50-loops\description.ru.yml,description.ru.yml,ru,541 +c:\Users\danil\Work\exercises-php\modules\50-loops\10-while\description.en.yml,description.en.yml,en,5775 +c:\Users\danil\Work\exercises-php\modules\50-loops\10-while\description.es.yml,description.es.yml,es,5974 +c:\Users\danil\Work\exercises-php\modules\50-loops\10-while\description.ru.yml,description.ru.yml,ru,5684 +c:\Users\danil\Work\exercises-php\modules\50-loops\20-aggregation-numbers\description.en.yml,description.en.yml,en,4906 +c:\Users\danil\Work\exercises-php\modules\50-loops\20-aggregation-numbers\description.es.yml,description.es.yml,es,5171 +c:\Users\danil\Work\exercises-php\modules\50-loops\20-aggregation-numbers\description.ru.yml,description.ru.yml,ru,4794 +c:\Users\danil\Work\exercises-php\modules\50-loops\23-aggregation-strings\description.en.yml,description.en.yml,en,1355 +c:\Users\danil\Work\exercises-php\modules\50-loops\23-aggregation-strings\description.es.yml,description.es.yml,es,1409 +c:\Users\danil\Work\exercises-php\modules\50-loops\23-aggregation-strings\description.ru.yml,description.ru.yml,ru,1340 +c:\Users\danil\Work\exercises-php\modules\50-loops\25-iteration-over-string\description.en.yml,description.en.yml,en,1263 +c:\Users\danil\Work\exercises-php\modules\50-loops\25-iteration-over-string\description.es.yml,description.es.yml,es,1505 +c:\Users\danil\Work\exercises-php\modules\50-loops\25-iteration-over-string\description.ru.yml,description.ru.yml,ru,1287 +c:\Users\danil\Work\exercises-php\modules\50-loops\26-conditions-inside-loops\description.en.yml,description.en.yml,en,1715 +c:\Users\danil\Work\exercises-php\modules\50-loops\26-conditions-inside-loops\description.es.yml,description.es.yml,es,1954 +c:\Users\danil\Work\exercises-php\modules\50-loops\26-conditions-inside-loops\description.ru.yml,description.ru.yml,ru,1722 +c:\Users\danil\Work\exercises-php\modules\50-loops\28-build-strings\description.en.yml,description.en.yml,en,2058 +c:\Users\danil\Work\exercises-php\modules\50-loops\28-build-strings\description.es.yml,description.es.yml,es,2099 +c:\Users\danil\Work\exercises-php\modules\50-loops\28-build-strings\description.ru.yml,description.ru.yml,ru,2049 +c:\Users\danil\Work\exercises-php\modules\50-loops\29-edge-cases\description.en.yml,description.en.yml,en,3455 +c:\Users\danil\Work\exercises-php\modules\50-loops\29-edge-cases\description.es.yml,description.es.yml,es,4228 +c:\Users\danil\Work\exercises-php\modules\50-loops\29-edge-cases\description.ru.yml,description.ru.yml,ru,3941 +c:\Users\danil\Work\exercises-php\modules\50-loops\30-syntax-sugar\description.en.yml,description.en.yml,en,1083 +c:\Users\danil\Work\exercises-php\modules\50-loops\30-syntax-sugar\description.es.yml,description.es.yml,es,1153 +c:\Users\danil\Work\exercises-php\modules\50-loops\30-syntax-sugar\description.ru.yml,description.ru.yml,ru,1060 +c:\Users\danil\Work\exercises-php\modules\50-loops\50-mutators\description.en.yml,description.en.yml,en,3122 +c:\Users\danil\Work\exercises-php\modules\50-loops\50-mutators\description.es.yml,description.es.yml,es,3503 +c:\Users\danil\Work\exercises-php\modules\50-loops\50-mutators\description.ru.yml,description.ru.yml,ru,3177 +c:\Users\danil\Work\exercises-php\modules\50-loops\55-return-from-loop\description.en.yml,description.en.yml,en,2336 +c:\Users\danil\Work\exercises-php\modules\50-loops\55-return-from-loop\description.es.yml,description.es.yml,es,2432 +c:\Users\danil\Work\exercises-php\modules\50-loops\55-return-from-loop\description.ru.yml,description.ru.yml,ru,2244 +c:\Users\danil\Work\exercises-php\modules\50-loops\70-for\description.en.yml,description.en.yml,en,1727 +c:\Users\danil\Work\exercises-php\modules\50-loops\70-for\description.es.yml,description.es.yml,es,1893 +c:\Users\danil\Work\exercises-php\modules\50-loops\70-for\description.ru.yml,description.ru.yml,ru,1682 +c:\Users\danil\Work\exercises-php\modules\60-deep-into-strings\description.en.yml,description.en.yml,en,156 +c:\Users\danil\Work\exercises-php\modules\60-deep-into-strings\description.es.yml,description.es.yml,es,175 +c:\Users\danil\Work\exercises-php\modules\60-deep-into-strings\description.ru.yml,description.ru.yml,ru,156 +c:\Users\danil\Work\exercises-php\modules\60-deep-into-strings\10-unicode\description.en.yml,description.en.yml,en,4891 +c:\Users\danil\Work\exercises-php\modules\60-deep-into-strings\10-unicode\description.es.yml,description.es.yml,es,5756 +c:\Users\danil\Work\exercises-php\modules\60-deep-into-strings\10-unicode\description.ru.yml,description.ru.yml,ru,5081 +c:\Users\danil\Work\exercises-php\modules\60-deep-into-strings\30-locales\description.en.yml,description.en.yml,en,2862 +c:\Users\danil\Work\exercises-php\modules\60-deep-into-strings\30-locales\description.es.yml,description.es.yml,es,3197 +c:\Users\danil\Work\exercises-php\modules\60-deep-into-strings\30-locales\description.ru.yml,description.ru.yml,ru,2740 +c:\Users\danil\Work\exercises-php\modules\60-deep-into-strings\40-startwith\description.en.yml,description.en.yml,en,1458 +c:\Users\danil\Work\exercises-php\modules\60-deep-into-strings\40-startwith\description.es.yml,description.es.yml,es,1623 +c:\Users\danil\Work\exercises-php\modules\60-deep-into-strings\40-startwith\description.ru.yml,description.ru.yml,ru,1468 +c:\Users\danil\Work\exercises-php\modules\70-dates\description.en.yml,description.en.yml,en,164 +c:\Users\danil\Work\exercises-php\modules\70-dates\description.es.yml,description.es.yml,es,187 +c:\Users\danil\Work\exercises-php\modules\70-dates\description.ru.yml,description.ru.yml,ru,153 +c:\Users\danil\Work\exercises-php\modules\70-dates\10-timestamp\description.en.yml,description.en.yml,en,1574 +c:\Users\danil\Work\exercises-php\modules\70-dates\10-timestamp\description.es.yml,description.es.yml,es,1825 +c:\Users\danil\Work\exercises-php\modules\70-dates\10-timestamp\description.ru.yml,description.ru.yml,ru,1700 +c:\Users\danil\Work\exercises-php\modules\70-dates\20-date\description.en.yml,description.en.yml,en,1407 +c:\Users\danil\Work\exercises-php\modules\70-dates\20-date\description.es.yml,description.es.yml,es,1468 +c:\Users\danil\Work\exercises-php\modules\70-dates\20-date\description.ru.yml,description.ru.yml,ru,1327 +c:\Users\danil\Work\exercises-php\modules\70-dates\30-mktime\description.en.yml,description.en.yml,en,760 +c:\Users\danil\Work\exercises-php\modules\70-dates\30-mktime\description.es.yml,description.es.yml,es,819 +c:\Users\danil\Work\exercises-php\modules\70-dates\30-mktime\description.ru.yml,description.ru.yml,ru,738 +c:\Users\danil\Work\exercises-php\modules\70-dates\40-timezone\description.en.yml,description.en.yml,en,1301 +c:\Users\danil\Work\exercises-php\modules\70-dates\40-timezone\description.es.yml,description.es.yml,es,1341 +c:\Users\danil\Work\exercises-php\modules\70-dates\40-timezone\description.ru.yml,description.ru.yml,ru,1334 From 9e206665303a93c9e0bdbc89e8fb423b8618ebec Mon Sep 17 00:00:00 2001 From: yana-fesenko <142812556+yana-fesenko@users.noreply.github.com> Date: Wed, 30 Aug 2023 09:18:47 -0500 Subject: [PATCH 08/10] Update description.es.yml --- modules/60-deep-into-strings/10-unicode/description.es.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/60-deep-into-strings/10-unicode/description.es.yml b/modules/60-deep-into-strings/10-unicode/description.es.yml index 77a6b4a2..6e49b219 100644 --- a/modules/60-deep-into-strings/10-unicode/description.es.yml +++ b/modules/60-deep-into-strings/10-unicode/description.es.yml @@ -58,7 +58,7 @@ theory: | ```php 6 + echo mb_strlen('Hello!'); // => 6 ``` https://replit.com/@hexlet/php-strings-deeper-mbstrlen From 33687a79d3995302b30178fdd356669a2ee4467d Mon Sep 17 00:00:00 2001 From: "danila.shirkov" Date: Tue, 5 Sep 2023 21:46:47 +0300 Subject: [PATCH 09/10] add link file --- exercises-php_all_link.txt | 253 +++++++++++++++++++++++++++++++++++++ 1 file changed, 253 insertions(+) create mode 100644 exercises-php_all_link.txt diff --git a/exercises-php_all_link.txt b/exercises-php_all_link.txt new file mode 100644 index 00000000..e78e5192 --- /dev/null +++ b/exercises-php_all_link.txt @@ -0,0 +1,253 @@ +File modules\10-basics\10-hello-world\description.es.yml: +Line 27: https://replit.com/@hexlet/php-basics-hello-world-echo + +File modules\10-basics\10-hello-world\description.es.yml: +Line 44: https://replit.com/@hexlet/php-basics-hello-world-printr + +File modules\10-basics\10-hello-world\description.es.yml: +Line 63: https://es.hexlet.io/blog/posts/mi-persona-me-entiende-la-historia-de-la-frase-hola-mundo-y-sus-analogos) + +File modules\10-basics\20-tags\description.es.yml: +Line 21: https://www.php-fig.org/psr/psr-1/)" + +File modules\10-basics\20-tags\description.es.yml: +Line 22: https://www.php-fig.org/psr/psr-12/)" + +File modules\10-basics\40-instructions\description.es.yml: +Line 45: https://es.wikipedia.org/wiki/Int%C3%A9rprete) + +File modules\10-basics\45-testing\description.es.yml: +Line 30: https://repl.it/languages/php). + +File modules\10-basics\45-testing\description.es.yml: +Line 36: https://t.me/hexletcommunity/12), + +File modules\10-basics\45-testing\description.es.yml: +Line 48: https://es.wikipedia.org/wiki/Desarrollo_guiado_por_pruebas) + +File modules\20-arithmetics\20-basic\description.es.yml: +Line 36: https://es.wikipedia.org/wiki/Resto_(matem%C3%A1tica)) + +File modules\20-arithmetics\25-operator\description.es.yml: +Line 54: https://www.php.net/manual/es/language.operators.php) + +File modules\20-arithmetics\40-priority\description.es.yml: +Line 39: https://www.php.net/manual/es/language.operators.precedence.php) + +File modules\20-arithmetics\45-linting\description.es.yml: +Line 11: https://www.php-fig.org/psr/). + +File modules\20-arithmetics\45-linting\description.es.yml: +Line 13: https://en.wikipedia.org/wiki/PHP_Standard_Recommendation). + +File modules\20-arithmetics\45-linting\description.es.yml: +Line 15: https://www.php-fig.org/psr/psr-1/) + +File modules\20-arithmetics\45-linting\description.es.yml: +Line 16: https://www.php-fig.org/psr/psr-12/) + +File modules\20-arithmetics\45-linting\description.es.yml: +Line 20: https://github.com/squizlabs/PHP_CodeSniffer). + +File modules\25-strings\15-escape-characters\description.es.yml: +Line 13: https://replit.com/@hexlet/php-basics-strings-newline + +File modules\25-strings\15-escape-characters\description.es.yml: +Line 62: https://repl.it/languages/php](https://repl.it/languages/php) + +File modules\25-strings\15-escape-characters\description.es.yml: +Line 64: https://es.wikipedia.org/wiki/Salto_de_l%C3%ADnea#Historia) + +File modules\25-strings\30-encoding\description.es.yml: +Line 6: https://es.wikipedia.org/wiki/C%C3%B3digo_binario), + +File modules\25-strings\30-encoding\description.es.yml: +Line 35: https://es.wikipedia.org/wiki/ASCII) +Line 35: https://es.wikipedia.org/wiki/UTF-8). + +File modules\25-strings\30-encoding\description.es.yml: +Line 41: https://es.wikipedia.org/wiki/Unicode) + +File modules\25-strings\30-encoding\description.es.yml: +Line 58: https://www.ascii-code.com). + +File modules\27-data-types\40-primitive-data-types\description.es.yml: +Line 49: https://es.wikipedia.org/wiki/Literal_(inform%C3%A1tica)) + +File modules\27-data-types\40-primitive-data-types\description.es.yml: +Line 51: https://es.wikipedia.org/wiki/N%C3%BAmero_decimal) + +File modules\30-variables\13-variables-naming\description.es.yml: +Line 28: https://ru.hexlet.io/blog/posts/naming-in-programming) + +File modules\30-variables\13-variables-naming\description.es.yml: +Line 30: https://ru.hexlet.io/blog/posts/naming-errors-1) + +File modules\30-variables\19-naming-style\description.es.yml: +Line 20: https://www.php-fig.org/psr/psr-1/) + +File modules\30-variables\23-constants\description.es.yml: +Line 43: https://php.net/manual/es/reserved.constants.php) + +File modules\30-variables\24-magic-constants\description.es.yml: +Line 24: https://php.net/manual/es/language.constants.predefined.php) + +File modules\30-variables\25-interpolation\description.es.yml: +Line 29: https://replit.com/@hexlet/php-basics-interpolation + +File modules\30-variables\35-heredoc\description.es.yml: +Line 36: https://www.php.net/manual/es/language.types.string.php#language.types.string.syntax.heredoc) + +File modules\35-calling-functions\120-function-signature\description.es.yml: +Line 27: https://www.php.net/manual/es/function.abs.php). + +File modules\35-calling-functions\120-function-signature\description.es.yml: +Line 79: https://php.net/manual/es/function.ucfirst.php](https://php.net/manual/es/function.ucfirst.php). + +File modules\35-calling-functions\270-deterministic\description.es.yml: +Line 64: https://es.wikipedia.org/wiki/Funci%C3%B3n_pura#Determinismo_de_la_funci%C3%B3n) + +File modules\35-calling-functions\900-stdlib\description.es.yml: +Line 29: https://www.php.net/manual/es/ref.strings.php) + +File modules\40-define-functions\100-define\description.es.yml: +Line 85: https://ru.hexlet.io/blog/posts/naming-in-programming) + +File modules\40-define-functions\300-parameters\description.es.yml: +Line 98: https://www.php.net/manual/es/function.substr.php). + +File modules\40-define-functions\340-default-parameters\description.es.yml: +Line 93: https://www.php.net/manual/es/function.str-repeat.php), + +File modules\40-define-functions\500-reading-documentation\description.es.yml: +Line 50: https://php.net/manual/es/) + +File modules\40-define-functions\500-reading-documentation\description.es.yml: +Line 52: https://php.net/manual/es/funcref.php) + +File modules\40-define-functions\500-reading-documentation\description.es.yml: +Line 54: https://www.php.net/manual/es/function.floor.php) + +File modules\45-logic\15-predicates\description.es.yml: +Line 41: https://ru.hexlet.io/blog/posts/naming-in-programming) + +File modules\45-logic\25-logical-operators\description.es.yml: +Line 84: https://es.wikipedia.org/wiki/%C3%81lgebra_booleana) + +File modules\45-logic\25-logical-operators\description.es.yml: +Line 86: https://es.wikipedia.org/wiki/Conjunci%C3%B3n) + +File modules\45-logic\25-logical-operators\description.es.yml: +Line 88: https://es.wikipedia.org/wiki/Disyunci%C3%B3n) + +File modules\45-logic\28-logical-negation\description.es.yml: +Line 59: https://es.wikipedia.org/wiki/Leyes_de_De_Morgan) + +File modules\45-logic\70-logic-weak-typing\description.es.yml: +Line 75: https://php.net/manual/es/language.types.boolean.php) + +File modules\48-conditionals\40-if-else\description.es.yml: +Line 51: https://` + +File modules\48-conditionals\40-if-else\description.es.yml: +Line 53: http://DIRECCIÓN`, +Line 53: https://DIRECCIÓN`. + +File modules\48-conditionals\40-if-else\description.es.yml: +Line 57: http://`. + +File modules\48-conditionals\40-if-else\description.es.yml: +Line 58: https://php.net/manual/es/function.strpos.php) +Line 58: http://` + +File modules\48-conditionals\40-if-else\description.es.yml: +Line 60: https://`. + +File modules\48-conditionals\40-if-else\description.es.yml: +Line 67: https://google.com' + +File modules\48-conditionals\40-if-else\description.es.yml: +Line 68: http://ai.fi'); +Line 68: https://ai.fi' + +File modules\48-conditionals\65-switch\description.es.yml: +Line 132: https://www.php.net/manual/es/control-structures.switch.php) + +File modules\48-conditionals\75-elvis\description.es.yml: +Line 55: https://i.imgur.com/eoLgBHN.png) + +File modules\48-conditionals\75-elvis\description.es.yml: +Line 78: https://php.net/manual/es/language.operators.comparison.php#language.operators.comparison.ternary) + +File modules\50-loops\10-while\description.es.yml: +Line 51: https://replit.com/@hexlet/php-basics-while + +File modules\50-loops\25-iteration-over-string\description.es.yml: +Line 31: https://replit.com/@hexlet/php-basics-loops-using-printnamebysymbol + +File modules\50-loops\28-build-strings\description.es.yml: +Line 46: https://replit.com/@hexlet/php-basics-loops-using-reverse + +File modules\50-loops\28-build-strings\description.es.yml: +Line 63: https://replit.com/@hexlet/php-basics-edge-cases-mysubstr + +File modules\50-loops\29-edge-cases\description.es.yml: +Line 36: https://replit.com/@hexlet/php-basics-edge-cases-mysubstr + +File modules\50-loops\55-return-from-loop\description.es.yml: +Line 66: https://es.wikipedia.org/wiki/Números_primos)" + +File modules\50-loops\70-for\description.es.yml: +Line 25: https://replit.com/@hexlet/php-basics-for-reversestring + +File modules\50-loops\70-for\description.es.yml: +Line 41: https://ru.wikipedia.org/wiki/Числовой_ряд). + +File modules\60-deep-into-strings\10-unicode\description.es.yml: +Line 9: https://es.wikipedia.org/wiki/ASCII) + +File modules\60-deep-into-strings\10-unicode\description.es.yml: +Line 30: https://es.wikipedia.org/wiki/Garabatos): + +File modules\60-deep-into-strings\10-unicode\description.es.yml: +Line 52: https://replit.com/@hexlet/php-basics-strings-deeper-strlen + +File modules\60-deep-into-strings\10-unicode\description.es.yml: +Line 56: https://php.net/manual/es/book.mbstring.php) + +File modules\60-deep-into-strings\10-unicode\description.es.yml: +Line 64: https://replit.com/@hexlet/php-strings-deeper-mbstrlen + +File modules\60-deep-into-strings\10-unicode\description.es.yml: +Line 75: https://replit.com/@hexlet/php-basics-strings-deeper-mbsubstr + +File modules\60-deep-into-strings\10-unicode\description.es.yml: +Line 90: https://guides.hexlet.io/es/encoding/) + +File modules\60-deep-into-strings\30-locales\description.es.yml: +Line 7: https://es.wikipedia.org/wiki/Sistema_imperial_de_medidas). + +File modules\60-deep-into-strings\30-locales\description.es.yml: +Line 15: https://secure.php.net/manual/es/function.setlocale.php) + +File modules\60-deep-into-strings\40-startwith\description.es.yml: +Line 7: https://php.net/manual/ru/function.mb-strpos.php). + +File modules\70-dates\10-timestamp\description.es.yml: +Line 38: https://php.net/manual/es/function.floor.php) + +File modules\70-dates\20-date\description.es.yml: +Line 5: https://php.net/manual/ru/function.date.php). + +File modules\70-dates\20-date\description.es.yml: +Line 7: https://php.net/manual/ru/function.sprintf.php): + +File modules\70-dates\20-date\description.es.yml: +Line 47: https://www.php.net/manual/ru/datetime.format.php) + +File modules\70-dates\30-mktime\description.es.yml: +Line 5: https://php.net/manual/ru/function.mktime.php) + +File modules\70-dates\40-timezone\description.es.yml: +Line 21: https://php.net/manual/es/timezones.php) + From 0b10f9d1e9a6cf5356fc98686758e534f6fae2b3 Mon Sep 17 00:00:00 2001 From: "danila.shirkov" Date: Wed, 6 Sep 2023 13:20:18 +0300 Subject: [PATCH 10/10] fixed final newline bug --- description.es.yml | 2 +- modules/10-basics/10-hello-world/description.es.yml | 2 +- modules/10-basics/20-tags/description.es.yml | 2 +- modules/10-basics/30-comments/description.es.yml | 2 +- modules/10-basics/40-instructions/description.es.yml | 2 +- modules/10-basics/45-testing/description.es.yml | 2 +- modules/10-basics/50-syntax-errors/description.es.yml | 2 +- modules/10-basics/description.es.yml | 2 +- modules/20-arithmetics/20-basic/description.es.yml | 2 +- modules/20-arithmetics/25-operator/description.es.yml | 2 +- modules/20-arithmetics/27-commutativity/description.es.yml | 2 +- modules/20-arithmetics/30-composition/description.es.yml | 2 +- modules/20-arithmetics/40-priority/description.es.yml | 2 +- modules/20-arithmetics/45-linting/description.es.yml | 2 +- modules/20-arithmetics/description.es.yml | 2 +- modules/25-strings/15-escape-characters/description.es.yml | 2 +- modules/25-strings/20-strings-concatenation/description.es.yml | 2 +- modules/25-strings/30-encoding/description.es.yml | 2 +- modules/25-strings/description.es.yml | 2 +- .../27-data-types/40-primitive-data-types/description.es.yml | 2 +- .../27-data-types/50-data-types-weak-typing/description.es.yml | 2 +- modules/27-data-types/55-type-conversion/description.es.yml | 2 +- modules/27-data-types/description.es.yml | 2 +- modules/30-variables/10-definition/description.es.yml | 2 +- modules/30-variables/12-change/description.es.yml | 2 +- modules/30-variables/13-variables-naming/description.es.yml | 2 +- modules/30-variables/14-errors/description.es.yml | 2 +- modules/30-variables/15-expressions/description.es.yml | 2 +- modules/30-variables/20-magic-numbers/description.es.yml | 2 +- modules/30-variables/23-constants/description.es.yml | 2 +- modules/30-variables/24-magic-constants/description.es.yml | 2 +- modules/30-variables/25-interpolation/description.es.yml | 2 +- modules/30-variables/30-symbols/description.es.yml | 2 +- modules/30-variables/35-heredoc/description.es.yml | 2 +- modules/35-calling-functions/100-call/description.es.yml | 2 +- .../120-function-signature/description.es.yml | 2 +- .../135-calling-functions-default-arguments/description.es.yml | 2 +- .../150-calling-functions-expression/description.es.yml | 2 +- .../180-variadic-arguments/description.es.yml | 2 +- .../35-calling-functions/270-deterministic/description.es.yml | 2 +- modules/35-calling-functions/900-stdlib/description.es.yml | 2 +- modules/35-calling-functions/description.es.yml | 2 +- modules/40-define-functions/100-define/description.es.yml | 2 +- modules/40-define-functions/300-parameters/description.es.yml | 2 +- .../340-default-parameters/description.es.yml | 2 +- .../500-reading-documentation/description.es.yml | 2 +- modules/40-define-functions/description.es.yml | 2 +- modules/45-logic/10-bool-type/description.es.yml | 2 +- modules/45-logic/15-predicates/description.es.yml | 2 +- .../45-logic/20-logic-combine-expressions/description.es.yml | 2 +- modules/45-logic/25-logical-operators/description.es.yml | 2 +- modules/45-logic/28-logical-negation/description.es.yml | 2 +- modules/45-logic/29-logical-operators-2/description.es.yml | 2 +- modules/45-logic/70-logic-weak-typing/description.es.yml | 2 +- modules/45-logic/description.es.yml | 2 +- modules/48-conditionals/30-if/description.es.yml | 2 +- modules/48-conditionals/40-if-else/description.es.yml | 2 +- modules/48-conditionals/60-ternary-operator/description.es.yml | 2 +- modules/48-conditionals/65-switch/description.es.yml | 2 +- modules/48-conditionals/75-elvis/description.es.yml | 2 +- modules/48-conditionals/description.es.yml | 2 +- modules/50-loops/20-aggregation-numbers/description.es.yml | 2 +- modules/50-loops/23-aggregation-strings/description.es.yml | 2 +- modules/50-loops/25-iteration-over-string/description.es.yml | 2 +- modules/50-loops/30-syntax-sugar/description.es.yml | 2 +- modules/50-loops/70-for/description.es.yml | 2 +- modules/50-loops/description.es.yml | 2 +- modules/60-deep-into-strings/30-locales/description.es.yml | 2 +- modules/60-deep-into-strings/40-startwith/description.es.yml | 2 +- modules/60-deep-into-strings/description.es.yml | 2 +- modules/70-dates/10-timestamp/description.es.yml | 2 +- modules/70-dates/20-date/description.es.yml | 2 +- modules/70-dates/30-mktime/description.es.yml | 2 +- modules/70-dates/40-timezone/description.es.yml | 2 +- modules/70-dates/description.es.yml | 2 +- 75 files changed, 75 insertions(+), 75 deletions(-) diff --git a/description.es.yml b/description.es.yml index e2b46fad..33592332 100644 --- a/description.es.yml +++ b/description.es.yml @@ -17,4 +17,4 @@ keywords: - code basics - curso en línea - curso gratuito - - programación \ No newline at end of file + - programación diff --git a/modules/10-basics/10-hello-world/description.es.yml b/modules/10-basics/10-hello-world/description.es.yml index 66a8c709..6662595c 100644 --- a/modules/10-basics/10-hello-world/description.es.yml +++ b/modules/10-basics/10-hello-world/description.es.yml @@ -60,4 +60,4 @@ instructions: | tips: - | - [Un poco sobre '¡Hola, Mundo!'](https://es.hexlet.io/blog/posts/mi-persona-me-entiende-la-historia-de-la-frase-hola-mundo-y-sus-analogos) \ No newline at end of file + [Un poco sobre '¡Hola, Mundo!'](https://es.hexlet.io/blog/posts/mi-persona-me-entiende-la-historia-de-la-frase-hola-mundo-y-sus-analogos) diff --git a/modules/10-basics/20-tags/description.es.yml b/modules/10-basics/20-tags/description.es.yml index 91040caa..24857682 100644 --- a/modules/10-basics/20-tags/description.es.yml +++ b/modules/10-basics/20-tags/description.es.yml @@ -23,4 +23,4 @@ tips: definitions: - name: Intérprete - description: "programa que ejecuta el código escrito en un lenguaje de programación." \ No newline at end of file + description: "programa que ejecuta el código escrito en un lenguaje de programación." diff --git a/modules/10-basics/30-comments/description.es.yml b/modules/10-basics/30-comments/description.es.yml index 9d214917..d28f0746 100644 --- a/modules/10-basics/30-comments/description.es.yml +++ b/modules/10-basics/30-comments/description.es.yml @@ -47,4 +47,4 @@ definitions: * comentario de varias líneas * comentario de varias líneas */ - ``` \ No newline at end of file + ``` diff --git a/modules/10-basics/40-instructions/description.es.yml b/modules/10-basics/40-instructions/description.es.yml index 8ba63d15..67eb23b7 100644 --- a/modules/10-basics/40-instructions/description.es.yml +++ b/modules/10-basics/40-instructions/description.es.yml @@ -50,4 +50,4 @@ definitions: un programa que ejecuta código en PHP. - name: Instrucción description: | - un comando para la computadora escrito en un lenguaje de programación. El código en PHP es un conjunto de instrucciones separadas (generalmente) por el símbolo `;`. \ No newline at end of file + un comando para la computadora escrito en un lenguaje de programación. El código en PHP es un conjunto de instrucciones separadas (generalmente) por el símbolo `;`. diff --git a/modules/10-basics/45-testing/description.es.yml b/modules/10-basics/45-testing/description.es.yml index e2e6c907..b5dd661a 100644 --- a/modules/10-basics/45-testing/description.es.yml +++ b/modules/10-basics/45-testing/description.es.yml @@ -45,4 +45,4 @@ definitions: tips: - | - [TDD](https://es.wikipedia.org/wiki/Desarrollo_guiado_por_pruebas) \ No newline at end of file + [TDD](https://es.wikipedia.org/wiki/Desarrollo_guiado_por_pruebas) diff --git a/modules/10-basics/50-syntax-errors/description.es.yml b/modules/10-basics/50-syntax-errors/description.es.yml index 8768fc19..417756de 100644 --- a/modules/10-basics/50-syntax-errors/description.es.yml +++ b/modules/10-basics/50-syntax-errors/description.es.yml @@ -31,4 +31,4 @@ definitions: - name: "Error de sintaxis" description: "violación de las reglas gramaticales de un lenguaje de programación." - name: "Parse error (error de análisis)" - description: "tipo de errores en PHP que ocurren cuando hay errores de sintaxis en el código." \ No newline at end of file + description: "tipo de errores en PHP que ocurren cuando hay errores de sintaxis en el código." diff --git a/modules/10-basics/description.es.yml b/modules/10-basics/description.es.yml index 7cafe6c3..bd97e79e 100644 --- a/modules/10-basics/description.es.yml +++ b/modules/10-basics/description.es.yml @@ -3,4 +3,4 @@ name: Fundamentos de PHP description: PHP es uno de los lenguajes de programación más populares del mundo. Más del 80% de los sitios web en Internet están escritos en este lenguaje. - Aprenderemos PHP desde cero, desde los conceptos básicos. El primer módulo es una base para escribir programas significativos. En él, aprenderemos cómo escribir nuestro primer código en PHP. Explicaremos qué son los comentarios y para qué sirven. Usando ejemplos de verificación de sus soluciones, veremos qué es la prueba y cómo leer la salida de las pruebas. \ No newline at end of file + Aprenderemos PHP desde cero, desde los conceptos básicos. El primer módulo es una base para escribir programas significativos. En él, aprenderemos cómo escribir nuestro primer código en PHP. Explicaremos qué son los comentarios y para qué sirven. Usando ejemplos de verificación de sus soluciones, veremos qué es la prueba y cómo leer la salida de las pruebas. diff --git a/modules/20-arithmetics/20-basic/description.es.yml b/modules/20-arithmetics/20-basic/description.es.yml index c68aa460..a8ff1154 100644 --- a/modules/20-arithmetics/20-basic/description.es.yml +++ b/modules/20-arithmetics/20-basic/description.es.yml @@ -47,4 +47,4 @@ tips: - | La división por cero resulta en un error `Division by zero`. Para evitarlo, debes conocer las estructuras condicionales (las aprenderás en las próximas lecciones). - | - Si en el editor hay una línea que dice `// BEGIN` y `// END`, el código debe escribirse entre esas líneas. \ No newline at end of file + Si en el editor hay una línea que dice `// BEGIN` y `// END`, el código debe escribirse entre esas líneas. diff --git a/modules/20-arithmetics/25-operator/description.es.yml b/modules/20-arithmetics/25-operator/description.es.yml index 63cd4b55..2340ea10 100644 --- a/modules/20-arithmetics/25-operator/description.es.yml +++ b/modules/20-arithmetics/25-operator/description.es.yml @@ -59,4 +59,4 @@ definitions: - name: "Operación unaria" description: "operación con un solo operando. Por ejemplo, `-3` es una operación unaria para obtener el número opuesto al número tres." - name: "Operación binaria" - description: "operación con dos operandos. Por ejemplo, `3 + 9`." \ No newline at end of file + description: "operación con dos operandos. Por ejemplo, `3 + 9`." diff --git a/modules/20-arithmetics/27-commutativity/description.es.yml b/modules/20-arithmetics/27-commutativity/description.es.yml index 1f1110e6..dbf83966 100644 --- a/modules/20-arithmetics/27-commutativity/description.es.yml +++ b/modules/20-arithmetics/27-commutativity/description.es.yml @@ -16,4 +16,4 @@ tips: [] definitions: - name: Conmutatividad description: | - propiedad de una operación en la que el cambio de orden de los operandos no afecta al resultado. Por ejemplo, la suma es una operación conmutativa: el orden de los sumandos no afecta a la suma. \ No newline at end of file + propiedad de una operación en la que el cambio de orden de los operandos no afecta al resultado. Por ejemplo, la suma es una operación conmutativa: el orden de los sumandos no afecta a la suma. diff --git a/modules/20-arithmetics/30-composition/description.es.yml b/modules/20-arithmetics/30-composition/description.es.yml index de76a6e5..b95baf78 100644 --- a/modules/20-arithmetics/30-composition/description.es.yml +++ b/modules/20-arithmetics/30-composition/description.es.yml @@ -29,4 +29,4 @@ instructions: | No calcules nada por tu cuenta, tu programa debe realizar todos los cálculos por sí mismo. -tips: [] \ No newline at end of file +tips: [] diff --git a/modules/20-arithmetics/40-priority/description.es.yml b/modules/20-arithmetics/40-priority/description.es.yml index 01fd2589..7389cac9 100644 --- a/modules/20-arithmetics/40-priority/description.es.yml +++ b/modules/20-arithmetics/40-priority/description.es.yml @@ -36,4 +36,4 @@ instructions: | tips: - | - [Prioridad de los operadores](https://www.php.net/manual/es/language.operators.precedence.php) \ No newline at end of file + [Prioridad de los operadores](https://www.php.net/manual/es/language.operators.precedence.php) diff --git a/modules/20-arithmetics/45-linting/description.es.yml b/modules/20-arithmetics/45-linting/description.es.yml index 827b213e..c5171e2d 100644 --- a/modules/20-arithmetics/45-linting/description.es.yml +++ b/modules/20-arithmetics/45-linting/description.es.yml @@ -49,4 +49,4 @@ theory: | instructions: | Muestra en pantalla el resultado de la siguiente operación: "la diferencia entre el cuadrado de cinco y el producto de tres y siete". Escribe el código de manera que cada operador esté separado de los operandos por espacios. -tips: [] \ No newline at end of file +tips: [] diff --git a/modules/20-arithmetics/description.es.yml b/modules/20-arithmetics/description.es.yml index ae14999e..a0407349 100644 --- a/modules/20-arithmetics/description.es.yml +++ b/modules/20-arithmetics/description.es.yml @@ -2,4 +2,4 @@ name: Aritmética description: - Los programas modernos se crean para servir a los negocios, ayudar en la vida diaria y entretener. Pero en el corazón de su funcionamiento siguen estando los cálculos. El tema más simple y básico en la programación es la aritmética. En este módulo traduciremos las operaciones aritméticas a lenguaje de programación, hablaremos sobre la prioridad de las operaciones. Explicaremos qué es un linter y por qué puede "quejarse". \ No newline at end of file + Los programas modernos se crean para servir a los negocios, ayudar en la vida diaria y entretener. Pero en el corazón de su funcionamiento siguen estando los cálculos. El tema más simple y básico en la programación es la aritmética. En este módulo traduciremos las operaciones aritméticas a lenguaje de programación, hablaremos sobre la prioridad de las operaciones. Explicaremos qué es un linter y por qué puede "quejarse". diff --git a/modules/25-strings/15-escape-characters/description.es.yml b/modules/25-strings/15-escape-characters/description.es.yml index 526012c5..ed8c17bc 100644 --- a/modules/25-strings/15-escape-characters/description.es.yml +++ b/modules/25-strings/15-escape-characters/description.es.yml @@ -61,4 +61,4 @@ tips: - | Asegúrate de experimentar con la impresión de diferentes cadenas en el sitio [https://repl.it/languages/php](https://repl.it/languages/php) - | - [Historia del salto de línea](https://es.wikipedia.org/wiki/Salto_de_l%C3%ADnea#Historia) \ No newline at end of file + [Historia del salto de línea](https://es.wikipedia.org/wiki/Salto_de_l%C3%ADnea#Historia) diff --git a/modules/25-strings/20-strings-concatenation/description.es.yml b/modules/25-strings/20-strings-concatenation/description.es.yml index cf7055d6..54d7ada0 100644 --- a/modules/25-strings/20-strings-concatenation/description.es.yml +++ b/modules/25-strings/20-strings-concatenation/description.es.yml @@ -58,4 +58,4 @@ instructions: | definitions: - name: Concatenación description: | - operación que une dos cadenas. Por ejemplo, `print_r("King's " . ' Landing');` \ No newline at end of file + operación que une dos cadenas. Por ejemplo, `print_r("King's " . ' Landing');` diff --git a/modules/25-strings/30-encoding/description.es.yml b/modules/25-strings/30-encoding/description.es.yml index 78a46338..217288b3 100644 --- a/modules/25-strings/30-encoding/description.es.yml +++ b/modules/25-strings/30-encoding/description.es.yml @@ -67,4 +67,4 @@ tips: [] definitions: - name: Codificación - description: "conjunto de caracteres codificados con números para representar texto en formato electrónico." \ No newline at end of file + description: "conjunto de caracteres codificados con números para representar texto en formato electrónico." diff --git a/modules/25-strings/description.es.yml b/modules/25-strings/description.es.yml index 293d94fe..38cf543e 100644 --- a/modules/25-strings/description.es.yml +++ b/modules/25-strings/description.es.yml @@ -2,4 +2,4 @@ name: Cadenas description: - En programación, el texto se llama "cadenas" y este tema no es tan simple como puede parecer. ¿Cómo imprimir una frase que contiene tanto comillas simples como comillas dobles? ¿Cómo lidiar con el texto en general, ya que la computadora no sabe nada sobre letras? Este módulo se dedica a diferentes aspectos de la escritura de texto, desde comillas y escapado hasta codificación. \ No newline at end of file + En programación, el texto se llama "cadenas" y este tema no es tan simple como puede parecer. ¿Cómo imprimir una frase que contiene tanto comillas simples como comillas dobles? ¿Cómo lidiar con el texto en general, ya que la computadora no sabe nada sobre letras? Este módulo se dedica a diferentes aspectos de la escritura de texto, desde comillas y escapado hasta codificación. diff --git a/modules/27-data-types/40-primitive-data-types/description.es.yml b/modules/27-data-types/40-primitive-data-types/description.es.yml index 39c3edc8..aa0f7a5a 100644 --- a/modules/27-data-types/40-primitive-data-types/description.es.yml +++ b/modules/27-data-types/40-primitive-data-types/description.es.yml @@ -57,4 +57,4 @@ definitions: description: "tipos simples incorporados en el propio lenguaje de programación." - name: "Cadena de texto (string)" description: | - tipo de dato que describe un conjunto de caracteres (es decir, texto); por ejemplo, `'texto'` o `"texto"`. \ No newline at end of file + tipo de dato que describe un conjunto de caracteres (es decir, texto); por ejemplo, `'texto'` o `"texto"`. diff --git a/modules/27-data-types/50-data-types-weak-typing/description.es.yml b/modules/27-data-types/50-data-types-weak-typing/description.es.yml index 92f23328..fd2882fe 100644 --- a/modules/27-data-types/50-data-types-weak-typing/description.es.yml +++ b/modules/27-data-types/50-data-types-weak-typing/description.es.yml @@ -23,4 +23,4 @@ theory: | instructions: | Muestra en pantalla el resultado de la expresión: `7 - (-8 - -2)`. Intenta hacer que el número 7 sea una cadena en lugar de un número. Experimenta también con otros números. -tips: [] \ No newline at end of file +tips: [] diff --git a/modules/27-data-types/55-type-conversion/description.es.yml b/modules/27-data-types/55-type-conversion/description.es.yml index 8ebdb1a3..db9960d3 100644 --- a/modules/27-data-types/55-type-conversion/description.es.yml +++ b/modules/27-data-types/55-type-conversion/description.es.yml @@ -35,4 +35,4 @@ instructions: | definitions: [] -tips: [] \ No newline at end of file +tips: [] diff --git a/modules/27-data-types/description.es.yml b/modules/27-data-types/description.es.yml index 1be3a8cb..6b7eac3a 100644 --- a/modules/27-data-types/description.es.yml +++ b/modules/27-data-types/description.es.yml @@ -2,4 +2,4 @@ name: Tipos de datos en PHP description: - PHP es un lenguaje con tipado débil y tipos de datos primitivos inmutables. ¿Qué sucede si intentamos multiplicar un número por una cadena? ¿Cómo PHP entiende qué tipo de dato tiene delante? ¿Y qué hace PHP cuando encuentra una incompatibilidad de tipos? Encontrarás las respuestas a estas preguntas en el módulo actual. \ No newline at end of file + PHP es un lenguaje con tipado débil y tipos de datos primitivos inmutables. ¿Qué sucede si intentamos multiplicar un número por una cadena? ¿Cómo PHP entiende qué tipo de dato tiene delante? ¿Y qué hace PHP cuando encuentra una incompatibilidad de tipos? Encontrarás las respuestas a estas preguntas en el módulo actual. diff --git a/modules/30-variables/10-definition/description.es.yml b/modules/30-variables/10-definition/description.es.yml index 5a364c78..1693b5dc 100644 --- a/modules/30-variables/10-definition/description.es.yml +++ b/modules/30-variables/10-definition/description.es.yml @@ -44,4 +44,4 @@ tips: [] definitions: - name: Variable - description: una forma de almacenar información y darle un nombre para su uso posterior en el código. \ No newline at end of file + description: una forma de almacenar información y darle un nombre para su uso posterior en el código. diff --git a/modules/30-variables/12-change/description.es.yml b/modules/30-variables/12-change/description.es.yml index 2d02b52d..167258ec 100644 --- a/modules/30-variables/12-change/description.es.yml +++ b/modules/30-variables/12-change/description.es.yml @@ -30,4 +30,4 @@ tips: definitions: - name: Variable - description: una forma de almacenar información y darle un nombre para su uso posterior en el código. \ No newline at end of file + description: una forma de almacenar información y darle un nombre para su uso posterior en el código. diff --git a/modules/30-variables/13-variables-naming/description.es.yml b/modules/30-variables/13-variables-naming/description.es.yml index 66b97cfb..85f26ee6 100644 --- a/modules/30-variables/13-variables-naming/description.es.yml +++ b/modules/30-variables/13-variables-naming/description.es.yml @@ -29,4 +29,4 @@ tips: - | [Errores en la nomenclatura de variables](https://ru.hexlet.io/blog/posts/naming-errors-1) -definitions: [] \ No newline at end of file +definitions: [] diff --git a/modules/30-variables/14-errors/description.es.yml b/modules/30-variables/14-errors/description.es.yml index de72cfe8..f6f9dbac 100644 --- a/modules/30-variables/14-errors/description.es.yml +++ b/modules/30-variables/14-errors/description.es.yml @@ -27,4 +27,4 @@ instructions: | tips: [] -definitions: [] \ No newline at end of file +definitions: [] diff --git a/modules/30-variables/15-expressions/description.es.yml b/modules/30-variables/15-expressions/description.es.yml index 7a9ad754..f46091e0 100644 --- a/modules/30-variables/15-expressions/description.es.yml +++ b/modules/30-variables/15-expressions/description.es.yml @@ -84,4 +84,4 @@ instructions: | tips: - | - Para hacer un salto de línea, puedes usar `\n` entre la impresión de los dólares y los yuanes. \ No newline at end of file + Para hacer un salto de línea, puedes usar `\n` entre la impresión de los dólares y los yuanes. diff --git a/modules/30-variables/20-magic-numbers/description.es.yml b/modules/30-variables/20-magic-numbers/description.es.yml index 8a26fe6a..d6b5d225 100644 --- a/modules/30-variables/20-magic-numbers/description.es.yml +++ b/modules/30-variables/20-magic-numbers/description.es.yml @@ -67,4 +67,4 @@ instructions: | Recuerda: el código funcionará con cualquier nombre, y nuestro sistema siempre verifica solo el resultado en pantalla, por lo que completar esta tarea es tu responsabilidad. -tips: [] \ No newline at end of file +tips: [] diff --git a/modules/30-variables/23-constants/description.es.yml b/modules/30-variables/23-constants/description.es.yml index 1b9e36fd..2317059e 100644 --- a/modules/30-variables/23-constants/description.es.yml +++ b/modules/30-variables/23-constants/description.es.yml @@ -44,4 +44,4 @@ tips: definitions: - name: Constante - description: una forma de almacenar información y darle un nombre para su uso posterior en el código; las constantes no se pueden modificar, a diferencia de las variables. \ No newline at end of file + description: una forma de almacenar información y darle un nombre para su uso posterior en el código; las constantes no se pueden modificar, a diferencia de las variables. diff --git a/modules/30-variables/24-magic-constants/description.es.yml b/modules/30-variables/24-magic-constants/description.es.yml index 3a9ba813..e11a3ca9 100644 --- a/modules/30-variables/24-magic-constants/description.es.yml +++ b/modules/30-variables/24-magic-constants/description.es.yml @@ -25,4 +25,4 @@ tips: definitions: - name: Constante mágica - description: una constante especial disponible en PHP; tiene diferentes valores en diferentes contextos. \ No newline at end of file + description: una constante especial disponible en PHP; tiene diferentes valores en diferentes contextos. diff --git a/modules/30-variables/25-interpolation/description.es.yml b/modules/30-variables/25-interpolation/description.es.yml index 5e24b1d3..c1ce157f 100644 --- a/modules/30-variables/25-interpolation/description.es.yml +++ b/modules/30-variables/25-interpolation/description.es.yml @@ -47,4 +47,4 @@ tips: [] definitions: - name: Interpolación - description: método de concatenación de cadenas mediante la inserción de valores de variables en una cadena de plantilla utilizando llaves. Por ejemplo, `\"¡Hola, {$name}!\"`. \ No newline at end of file + description: método de concatenación de cadenas mediante la inserción de valores de variables en una cadena de plantilla utilizando llaves. Por ejemplo, `\"¡Hola, {$name}!\"`. diff --git a/modules/30-variables/30-symbols/description.es.yml b/modules/30-variables/30-symbols/description.es.yml index d1533e10..7577db00 100644 --- a/modules/30-variables/30-symbols/description.es.yml +++ b/modules/30-variables/30-symbols/description.es.yml @@ -63,4 +63,4 @@ instructions: | Intenta utilizar interpolación: dentro de las llaves, puedes colocar no solo variables enteras, sino también caracteres individuales utilizando corchetes. -tips: [] \ No newline at end of file +tips: [] diff --git a/modules/30-variables/35-heredoc/description.es.yml b/modules/30-variables/35-heredoc/description.es.yml index 8472f446..a0e56c4a 100644 --- a/modules/30-variables/35-heredoc/description.es.yml +++ b/modules/30-variables/35-heredoc/description.es.yml @@ -33,4 +33,4 @@ definitions: [] tips: - | - [Heredoc](https://www.php.net/manual/es/language.types.string.php#language.types.string.syntax.heredoc) \ No newline at end of file + [Heredoc](https://www.php.net/manual/es/language.types.string.php#language.types.string.syntax.heredoc) diff --git a/modules/35-calling-functions/100-call/description.es.yml b/modules/35-calling-functions/100-call/description.es.yml index 5d195150..7755d77a 100644 --- a/modules/35-calling-functions/100-call/description.es.yml +++ b/modules/35-calling-functions/100-call/description.es.yml @@ -76,4 +76,4 @@ definitions: - name: Función description: "operación capaz de recibir datos y devolver un resultado; se llama a una función de esta manera: `foo()`." - name: Argumento - description: "información que una función recibe cuando se llama a ella. Por ejemplo, `foo(42)` es pasar el argumento `42` a la función `foo()`." \ No newline at end of file + description: "información que una función recibe cuando se llama a ella. Por ejemplo, `foo(42)` es pasar el argumento `42` a la función `foo()`." diff --git a/modules/35-calling-functions/120-function-signature/description.es.yml b/modules/35-calling-functions/120-function-signature/description.es.yml index b98e768e..4755f47b 100644 --- a/modules/35-calling-functions/120-function-signature/description.es.yml +++ b/modules/35-calling-functions/120-function-signature/description.es.yml @@ -84,4 +84,4 @@ tips: [] definitions: - name: Firma de la función - description: descripción formal de los tipos de argumentos y el tipo de valor devuelto por una función. \ No newline at end of file + description: descripción formal de los tipos de argumentos y el tipo de valor devuelto por una función. diff --git a/modules/35-calling-functions/135-calling-functions-default-arguments/description.es.yml b/modules/35-calling-functions/135-calling-functions-default-arguments/description.es.yml index 1591a65c..8cb83f3f 100644 --- a/modules/35-calling-functions/135-calling-functions-default-arguments/description.es.yml +++ b/modules/35-calling-functions/135-calling-functions-default-arguments/description.es.yml @@ -39,4 +39,4 @@ tips: [] definitions: - name: Argumento por defecto - description: Argumento opcional de una función. \ No newline at end of file + description: Argumento opcional de una función. diff --git a/modules/35-calling-functions/150-calling-functions-expression/description.es.yml b/modules/35-calling-functions/150-calling-functions-expression/description.es.yml index 8dafa5ac..88e60caf 100644 --- a/modules/35-calling-functions/150-calling-functions-expression/description.es.yml +++ b/modules/35-calling-functions/150-calling-functions-expression/description.es.yml @@ -71,4 +71,4 @@ instructions: | Intenta crear solo una variable en la que se almacene el texto necesario antes de imprimirlo en pantalla. En esta lección, estamos practicando cómo construir una expresión compuesta. -# tips: [] \ No newline at end of file +# tips: [] diff --git a/modules/35-calling-functions/180-variadic-arguments/description.es.yml b/modules/35-calling-functions/180-variadic-arguments/description.es.yml index 99382850..68226631 100644 --- a/modules/35-calling-functions/180-variadic-arguments/description.es.yml +++ b/modules/35-calling-functions/180-variadic-arguments/description.es.yml @@ -26,4 +26,4 @@ tips: [] # definitions: # - name: Argumento por defecto -# description: argumento opcional de una función. \ No newline at end of file +# description: argumento opcional de una función. diff --git a/modules/35-calling-functions/270-deterministic/description.es.yml b/modules/35-calling-functions/270-deterministic/description.es.yml index f7b62eef..1270ac95 100644 --- a/modules/35-calling-functions/270-deterministic/description.es.yml +++ b/modules/35-calling-functions/270-deterministic/description.es.yml @@ -66,4 +66,4 @@ tips: # definitions: # - name: Determinismo de una función # description: | -# para una entrada dada, siempre produce la misma salida. \ No newline at end of file +# para una entrada dada, siempre produce la misma salida. diff --git a/modules/35-calling-functions/900-stdlib/description.es.yml b/modules/35-calling-functions/900-stdlib/description.es.yml index b931ae60..3bc400e1 100644 --- a/modules/35-calling-functions/900-stdlib/description.es.yml +++ b/modules/35-calling-functions/900-stdlib/description.es.yml @@ -30,4 +30,4 @@ tips: definitions: - name: Biblioteca estándar - description: conjunto de funciones útiles que se incluyen en el lenguaje de programación. \ No newline at end of file + description: conjunto de funciones útiles que se incluyen en el lenguaje de programación. diff --git a/modules/35-calling-functions/description.es.yml b/modules/35-calling-functions/description.es.yml index 484073de..acdc5d66 100644 --- a/modules/35-calling-functions/description.es.yml +++ b/modules/35-calling-functions/description.es.yml @@ -2,4 +2,4 @@ name: Llamada a funciones description: - Para expresar cualquier operación arbitraria en programación, existe el concepto de "función". Las funciones son los bloques de construcción con los que los programadores construyen sistemas. En este módulo aprenderemos a utilizar las funciones ya creadas. Observaremos la firma de la función en la documentación y entenderemos cómo utilizarla. Nos familiarizaremos con las bibliotecas estándar que contienen miles de funciones. No es posible aprender todas las funciones, pero cada programador debe saber dónde buscar la documentación sobre ellas. \ No newline at end of file + Para expresar cualquier operación arbitraria en programación, existe el concepto de "función". Las funciones son los bloques de construcción con los que los programadores construyen sistemas. En este módulo aprenderemos a utilizar las funciones ya creadas. Observaremos la firma de la función en la documentación y entenderemos cómo utilizarla. Nos familiarizaremos con las bibliotecas estándar que contienen miles de funciones. No es posible aprender todas las funciones, pero cada programador debe saber dónde buscar la documentación sobre ellas. diff --git a/modules/40-define-functions/100-define/description.es.yml b/modules/40-define-functions/100-define/description.es.yml index 08467272..2fb92faa 100644 --- a/modules/40-define-functions/100-define/description.es.yml +++ b/modules/40-define-functions/100-define/description.es.yml @@ -82,4 +82,4 @@ instructions: | tips: - | - [Naming in Programming](https://ru.hexlet.io/blog/posts/naming-in-programming) \ No newline at end of file + [Naming in Programming](https://ru.hexlet.io/blog/posts/naming-in-programming) diff --git a/modules/40-define-functions/300-parameters/description.es.yml b/modules/40-define-functions/300-parameters/description.es.yml index 4c7ff16b..cc140a8a 100644 --- a/modules/40-define-functions/300-parameters/description.es.yml +++ b/modules/40-define-functions/300-parameters/description.es.yml @@ -105,4 +105,4 @@ instructions: | substr($word, 0, $length); // 'bie' ``` - Desde el punto de vista del sistema de evaluación, no importa qué método utilices para implementar la función `truncate()` internamente, lo importante es que cumpla con la tarea planteada. \ No newline at end of file + Desde el punto de vista del sistema de evaluación, no importa qué método utilices para implementar la función `truncate()` internamente, lo importante es que cumpla con la tarea planteada. diff --git a/modules/40-define-functions/340-default-parameters/description.es.yml b/modules/40-define-functions/340-default-parameters/description.es.yml index fd29762a..d954cfda 100644 --- a/modules/40-define-functions/340-default-parameters/description.es.yml +++ b/modules/40-define-functions/340-default-parameters/description.es.yml @@ -97,4 +97,4 @@ instructions: | str_repeat('+', 5); // "+++++" str_repeat('o', 3); // "ooo" - ``` \ No newline at end of file + ``` diff --git a/modules/40-define-functions/500-reading-documentation/description.es.yml b/modules/40-define-functions/500-reading-documentation/description.es.yml index 0502dc2f..efabd3db 100644 --- a/modules/40-define-functions/500-reading-documentation/description.es.yml +++ b/modules/40-define-functions/500-reading-documentation/description.es.yml @@ -51,4 +51,4 @@ tips: - | [Manual de funciones](https://php.net/manual/es/funcref.php) - | - [Función floor()](https://www.php.net/manual/es/function.floor.php) \ No newline at end of file + [Función floor()](https://www.php.net/manual/es/function.floor.php) diff --git a/modules/40-define-functions/description.es.yml b/modules/40-define-functions/description.es.yml index 42f8a519..3d8a0b74 100644 --- a/modules/40-define-functions/description.es.yml +++ b/modules/40-define-functions/description.es.yml @@ -2,4 +2,4 @@ name: Definición de funciones description: - La definición de funciones propias simplifica en gran medida la escritura y el mantenimiento de programas. Por ejemplo, la capacidad de definir funciones permite combinar operaciones complejas en una sola función, ocultando toda la complejidad detrás de una función simple. Al aprender a escribir funciones, darás el primer paso hacia la creación de programas realmente útiles. Y nosotros te ayudaremos en este proceso. En este módulo crearás tu primera función y aprenderás a darle nombres claros (así como a variables y constantes). \ No newline at end of file + La definición de funciones propias simplifica en gran medida la escritura y el mantenimiento de programas. Por ejemplo, la capacidad de definir funciones permite combinar operaciones complejas en una sola función, ocultando toda la complejidad detrás de una función simple. Al aprender a escribir funciones, darás el primer paso hacia la creación de programas realmente útiles. Y nosotros te ayudaremos en este proceso. En este módulo crearás tu primera función y aprenderás a darle nombres claros (así como a variables y constantes). diff --git a/modules/45-logic/10-bool-type/description.es.yml b/modules/45-logic/10-bool-type/description.es.yml index 03c0084b..a680cc64 100644 --- a/modules/45-logic/10-bool-type/description.es.yml +++ b/modules/45-logic/10-bool-type/description.es.yml @@ -68,4 +68,4 @@ instructions: | definitions: - name: "Tipo lógico (bool)" - description: "un tipo de dato con dos posibles valores: true (verdadero) y false (falso)." \ No newline at end of file + description: "un tipo de dato con dos posibles valores: true (verdadero) y false (falso)." diff --git a/modules/45-logic/15-predicates/description.es.yml b/modules/45-logic/15-predicates/description.es.yml index 6263f849..6303ae33 100644 --- a/modules/45-logic/15-predicates/description.es.yml +++ b/modules/45-logic/15-predicates/description.es.yml @@ -42,4 +42,4 @@ tips: definitions: - name: Predicado - description: una expresión que responde a una pregunta "sí" o "no" utilizando el tipo bool. \ No newline at end of file + description: una expresión que responde a una pregunta "sí" o "no" utilizando el tipo bool. diff --git a/modules/45-logic/20-logic-combine-expressions/description.es.yml b/modules/45-logic/20-logic-combine-expressions/description.es.yml index 244620f9..a52a20c4 100644 --- a/modules/45-logic/20-logic-combine-expressions/description.es.yml +++ b/modules/45-logic/20-logic-combine-expressions/description.es.yml @@ -64,4 +64,4 @@ instructions: | isInternationalPhone('89602223423'); // false isInternationalPhone('+79602223423'); // true - ``` \ No newline at end of file + ``` diff --git a/modules/45-logic/25-logical-operators/description.es.yml b/modules/45-logic/25-logical-operators/description.es.yml index a2067214..54c81ee4 100644 --- a/modules/45-logic/25-logical-operators/description.es.yml +++ b/modules/45-logic/25-logical-operators/description.es.yml @@ -89,4 +89,4 @@ tips: definitions: - name: "Operadores lógicos" - description: "operadores 'Y' (&&), 'O' (||) que permiten crear condiciones lógicas compuestas." \ No newline at end of file + description: "operadores 'Y' (&&), 'O' (||) que permiten crear condiciones lógicas compuestas." diff --git a/modules/45-logic/28-logical-negation/description.es.yml b/modules/45-logic/28-logical-negation/description.es.yml index 63ebfce3..7cce71bb 100644 --- a/modules/45-logic/28-logical-negation/description.es.yml +++ b/modules/45-logic/28-logical-negation/description.es.yml @@ -56,4 +56,4 @@ instructions: | tips: - | - [Leyes de De Morgan](https://es.wikipedia.org/wiki/Leyes_de_De_Morgan) \ No newline at end of file + [Leyes de De Morgan](https://es.wikipedia.org/wiki/Leyes_de_De_Morgan) diff --git a/modules/45-logic/29-logical-operators-2/description.es.yml b/modules/45-logic/29-logical-operators-2/description.es.yml index d054478f..6801ddef 100644 --- a/modules/45-logic/29-logical-operators-2/description.es.yml +++ b/modules/45-logic/29-logical-operators-2/description.es.yml @@ -46,4 +46,4 @@ instructions: | esSoldadoNeutral('yellow', 'black'); // true esSoldadoNeutral('red', 'black'); // false esSoldadoNeutral('red', 'red'); // false - ``` \ No newline at end of file + ``` diff --git a/modules/45-logic/70-logic-weak-typing/description.es.yml b/modules/45-logic/70-logic-weak-typing/description.es.yml index ddef4501..db83d7ad 100644 --- a/modules/45-logic/70-logic-weak-typing/description.es.yml +++ b/modules/45-logic/70-logic-weak-typing/description.es.yml @@ -72,4 +72,4 @@ instructions: | tips: - | - [Booleanos](https://php.net/manual/es/language.types.boolean.php) \ No newline at end of file + [Booleanos](https://php.net/manual/es/language.types.boolean.php) diff --git a/modules/45-logic/description.es.yml b/modules/45-logic/description.es.yml index d355a4ac..e05db95c 100644 --- a/modules/45-logic/description.es.yml +++ b/modules/45-logic/description.es.yml @@ -2,4 +2,4 @@ name: Lógica description: | - Las expresiones lógicas permiten responder preguntas que surgen durante la ejecución del programa. ¿Está autenticado el usuario? ¿Se ha pagado la suscripción? ¿Es un año bisiesto? En este módulo, aprenderemos sobre las funciones predicado, que plantean una pregunta y responden si es verdadera o falsa. Practicaremos la escritura de estas funciones y avanzaremos hacia expresiones lógicas más complejas. \ No newline at end of file + Las expresiones lógicas permiten responder preguntas que surgen durante la ejecución del programa. ¿Está autenticado el usuario? ¿Se ha pagado la suscripción? ¿Es un año bisiesto? En este módulo, aprenderemos sobre las funciones predicado, que plantean una pregunta y responden si es verdadera o falsa. Practicaremos la escritura de estas funciones y avanzaremos hacia expresiones lógicas más complejas. diff --git a/modules/48-conditionals/30-if/description.es.yml b/modules/48-conditionals/30-if/description.es.yml index 880dde1f..6e51173c 100644 --- a/modules/48-conditionals/30-if/description.es.yml +++ b/modules/48-conditionals/30-if/description.es.yml @@ -43,4 +43,4 @@ tips: [] definitions: - name: "Estructura condicional" - description: "forma de establecer una condición para ejecutar código. Por ejemplo, `if ($x > 10) { ... }`" \ No newline at end of file + description: "forma de establecer una condición para ejecutar código. Por ejemplo, `if ($x > 10) { ... }`" diff --git a/modules/48-conditionals/40-if-else/description.es.yml b/modules/48-conditionals/40-if-else/description.es.yml index cdee8a5e..c5d31e6c 100644 --- a/modules/48-conditionals/40-if-else/description.es.yml +++ b/modules/48-conditionals/40-if-else/description.es.yml @@ -72,4 +72,4 @@ tips: [] definitions: - name: "else" - description: "a way to specify a code block that will be executed if the condition in `if` is not satisfied" \ No newline at end of file + description: "a way to specify a code block that will be executed if the condition in `if` is not satisfied" diff --git a/modules/48-conditionals/60-ternary-operator/description.es.yml b/modules/48-conditionals/60-ternary-operator/description.es.yml index 04ef5e31..34706171 100644 --- a/modules/48-conditionals/60-ternary-operator/description.es.yml +++ b/modules/48-conditionals/60-ternary-operator/description.es.yml @@ -98,4 +98,4 @@ tips: [] definitions: - name: Operador ternario description: | - una forma de convertir una instrucción condicional simple en una expresión, por ejemplo, `$number >= 0 ? $number : -$number`. \ No newline at end of file + una forma de convertir una instrucción condicional simple en una expresión, por ejemplo, `$number >= 0 ? $number : -$number`. diff --git a/modules/48-conditionals/65-switch/description.es.yml b/modules/48-conditionals/65-switch/description.es.yml index 8f8d3811..ca31ec81 100644 --- a/modules/48-conditionals/65-switch/description.es.yml +++ b/modules/48-conditionals/65-switch/description.es.yml @@ -131,4 +131,4 @@ tips: - | [switch](https://www.php.net/manual/es/control-structures.switch.php) -definitions: [] \ No newline at end of file +definitions: [] diff --git a/modules/48-conditionals/75-elvis/description.es.yml b/modules/48-conditionals/75-elvis/description.es.yml index 82cb646e..3fbe3582 100644 --- a/modules/48-conditionals/75-elvis/description.es.yml +++ b/modules/48-conditionals/75-elvis/description.es.yml @@ -75,4 +75,4 @@ definitions: tips: - | - [elvis](https://php.net/manual/es/language.operators.comparison.php#language.operators.comparison.ternary) \ No newline at end of file + [elvis](https://php.net/manual/es/language.operators.comparison.php#language.operators.comparison.ternary) diff --git a/modules/48-conditionals/description.es.yml b/modules/48-conditionals/description.es.yml index f1151d1d..fd4af2d9 100644 --- a/modules/48-conditionals/description.es.yml +++ b/modules/48-conditionals/description.es.yml @@ -2,4 +2,4 @@ name: Estructuras condicionales description: | - La tarea de una función predicado es obtener una respuesta a una pregunta, pero generalmente esto no es suficiente y es necesario realizar una acción específica dependiendo de la respuesta. If y Switch son estructuras en PHP que permiten al programador elegir el comportamiento necesario del programa según diferentes condiciones: omitir algunas instrucciones y ejecutar otras. Las estudiaremos en la práctica en este módulo. \ No newline at end of file + La tarea de una función predicado es obtener una respuesta a una pregunta, pero generalmente esto no es suficiente y es necesario realizar una acción específica dependiendo de la respuesta. If y Switch son estructuras en PHP que permiten al programador elegir el comportamiento necesario del programa según diferentes condiciones: omitir algunas instrucciones y ejecutar otras. Las estudiaremos en la práctica en este módulo. diff --git a/modules/50-loops/20-aggregation-numbers/description.es.yml b/modules/50-loops/20-aggregation-numbers/description.es.yml index 6d9298e5..839afd92 100644 --- a/modules/50-loops/20-aggregation-numbers/description.es.yml +++ b/modules/50-loops/20-aggregation-numbers/description.es.yml @@ -110,4 +110,4 @@ instructions: | multiplyNumbersFromRange(6, 6); // 6 ``` -tips: [] \ No newline at end of file +tips: [] diff --git a/modules/50-loops/23-aggregation-strings/description.es.yml b/modules/50-loops/23-aggregation-strings/description.es.yml index a2b7b486..73aed1a5 100644 --- a/modules/50-loops/23-aggregation-strings/description.es.yml +++ b/modules/50-loops/23-aggregation-strings/description.es.yml @@ -57,4 +57,4 @@ instructions: | joinNumbersFromRange(5, 10); // '5678910' ``` -tips: [] \ No newline at end of file +tips: [] diff --git a/modules/50-loops/25-iteration-over-string/description.es.yml b/modules/50-loops/25-iteration-over-string/description.es.yml index c81b8ed6..90afb9b8 100644 --- a/modules/50-loops/25-iteration-over-string/description.es.yml +++ b/modules/50-loops/25-iteration-over-string/description.es.yml @@ -55,4 +55,4 @@ instructions: | // => 'H' ``` -tips: [] \ No newline at end of file +tips: [] diff --git a/modules/50-loops/30-syntax-sugar/description.es.yml b/modules/50-loops/30-syntax-sugar/description.es.yml index dd597c9d..a77159cd 100644 --- a/modules/50-loops/30-syntax-sugar/description.es.yml +++ b/modules/50-loops/30-syntax-sugar/description.es.yml @@ -26,4 +26,4 @@ instructions: | filterString($str, 'I'); // 'f look back am lost' filterString($str, 'o'); // 'If I lk back I am lst' ``` -tips: [] \ No newline at end of file +tips: [] diff --git a/modules/50-loops/70-for/description.es.yml b/modules/50-loops/70-for/description.es.yml index ea7879f6..724b5b05 100644 --- a/modules/50-loops/70-for/description.es.yml +++ b/modules/50-loops/70-for/description.es.yml @@ -58,4 +58,4 @@ instructions: | sumOfSeries(1, 1); // 1 ``` -tips: [] \ No newline at end of file +tips: [] diff --git a/modules/50-loops/description.es.yml b/modules/50-loops/description.es.yml index 710c0833..27bc88cb 100644 --- a/modules/50-loops/description.es.yml +++ b/modules/50-loops/description.es.yml @@ -2,4 +2,4 @@ name: Ciclos description: - Cualquier código puede repetirse decenas, miles, millones de veces. En combinación con otras herramientas conocidas como variables y condiciones, esto abre muchas posibilidades para construir programas y sistemas complejos. Veamos un ejemplo sencillo. Necesitas encontrar una frase específica en un libro de texto de 500 páginas. Recuerdas la frase, pero no recuerdas el número de página. La forma más sencilla (y lenta) de hacerlo es revisar las páginas secuencialmente hasta encontrar la que necesitas. Para realizar estas acciones repetitivas, se utilizan los ciclos. \ No newline at end of file + Cualquier código puede repetirse decenas, miles, millones de veces. En combinación con otras herramientas conocidas como variables y condiciones, esto abre muchas posibilidades para construir programas y sistemas complejos. Veamos un ejemplo sencillo. Necesitas encontrar una frase específica en un libro de texto de 500 páginas. Recuerdas la frase, pero no recuerdas el número de página. La forma más sencilla (y lenta) de hacerlo es revisar las páginas secuencialmente hasta encontrar la que necesitas. Para realizar estas acciones repetitivas, se utilizan los ciclos. diff --git a/modules/60-deep-into-strings/30-locales/description.es.yml b/modules/60-deep-into-strings/30-locales/description.es.yml index 99bf88e3..080cedec 100644 --- a/modules/60-deep-into-strings/30-locales/description.es.yml +++ b/modules/60-deep-into-strings/30-locales/description.es.yml @@ -44,4 +44,4 @@ instructions: | tips: [] -definitions: [] \ No newline at end of file +definitions: [] diff --git a/modules/60-deep-into-strings/40-startwith/description.es.yml b/modules/60-deep-into-strings/40-startwith/description.es.yml index 364f7cf9..a57d73c9 100644 --- a/modules/60-deep-into-strings/40-startwith/description.es.yml +++ b/modules/60-deep-into-strings/40-startwith/description.es.yml @@ -48,4 +48,4 @@ instructions: | tips: [] -definitions: [] \ No newline at end of file +definitions: [] diff --git a/modules/60-deep-into-strings/description.es.yml b/modules/60-deep-into-strings/description.es.yml index 77d2ac7a..eb7c2744 100644 --- a/modules/60-deep-into-strings/description.es.yml +++ b/modules/60-deep-into-strings/description.es.yml @@ -2,4 +2,4 @@ name: Sumergiéndose en las cadenas description: | - Codificación moderna de cadenas y su manipulación en PHP utilizando funciones para codificaciones multibyte. Localización. \ No newline at end of file + Codificación moderna de cadenas y su manipulación en PHP utilizando funciones para codificaciones multibyte. Localización. diff --git a/modules/70-dates/10-timestamp/description.es.yml b/modules/70-dates/10-timestamp/description.es.yml index 69d304d9..31192b3f 100644 --- a/modules/70-dates/10-timestamp/description.es.yml +++ b/modules/70-dates/10-timestamp/description.es.yml @@ -40,4 +40,4 @@ instructions: | tips: [] -definitions: [] \ No newline at end of file +definitions: [] diff --git a/modules/70-dates/20-date/description.es.yml b/modules/70-dates/20-date/description.es.yml index f7a0c76a..ee6e6857 100644 --- a/modules/70-dates/20-date/description.es.yml +++ b/modules/70-dates/20-date/description.es.yml @@ -46,4 +46,4 @@ tips: - | [Ejemplos de formatos de fecha](https://www.php.net/manual/ru/datetime.format.php) -definitions: [] \ No newline at end of file +definitions: [] diff --git a/modules/70-dates/30-mktime/description.es.yml b/modules/70-dates/30-mktime/description.es.yml index b5311237..9771811c 100644 --- a/modules/70-dates/30-mktime/description.es.yml +++ b/modules/70-dates/30-mktime/description.es.yml @@ -35,4 +35,4 @@ instructions: | tips: [] -definitions: [] \ No newline at end of file +definitions: [] diff --git a/modules/70-dates/40-timezone/description.es.yml b/modules/70-dates/40-timezone/description.es.yml index cc58f68f..72e6688a 100644 --- a/modules/70-dates/40-timezone/description.es.yml +++ b/modules/70-dates/40-timezone/description.es.yml @@ -20,4 +20,4 @@ tips: - | [Lista de zonas horarias admitidas en PHP](https://php.net/manual/es/timezones.php) -definitions: [] \ No newline at end of file +definitions: [] diff --git a/modules/70-dates/description.es.yml b/modules/70-dates/description.es.yml index 2c437705..cfd6fe77 100644 --- a/modules/70-dates/description.es.yml +++ b/modules/70-dates/description.es.yml @@ -2,4 +2,4 @@ name: Fecha y Hora description: | - El concepto de tiempo en las computadoras. Temporizadores de hardware y de sistema. Funciones para trabajar con fechas y horas en PHP. Zonas horarias. \ No newline at end of file + El concepto de tiempo en las computadoras. Temporizadores de hardware y de sistema. Funciones para trabajar con fechas y horas en PHP. Zonas horarias.