Aprender un nuevo lenguaje de programación puede ser divertido. Siempre que intento aprender uno nuevo, me centro en definir variables, escribir una sentencia y evaluar expresiones. Una vez que tengo una comprensión general de esos conceptos, normalmente puedo averiguar el resto por mi cuenta. La mayoría de los lenguajes de programación tienen algunas similitudes, así que una vez que conoces un lenguaje de programación, aprender el siguiente es cuestión de averiguar los detalles únicos y reconocer las diferencias en él.

Para ayudarme a practicar un nuevo lenguaje de programación, me gusta escribir algunos programas de prueba. Un programa de ejemplo que suelo escribir es un sencillo programa de «adivinar el número», en el que el ordenador elige un número entre el uno y el 100 y me pide que lo adivine. El programa hace un bucle hasta que lo adivino correctamente.

El programa «adivina el número» ejercita varios conceptos de los lenguajes de programación: cómo asignar valores a las variables, cómo escribir sentencias y cómo realizar evaluaciones condicionales y bucles. Es un gran experimento práctico para aprender un nuevo lenguaje de programación.

Adivina el número en Bash

Bash es el shell estándar de la mayoría de los sistemas Linux. Además de proporcionar una rica interfaz de usuario de línea de comandos, Bash también soporta un completo lenguaje de programación en forma de scripts.

Si no estás familiarizado con Bash, te recomiendo estas introducciones:

  • ¿Qué es Bash?
  • Iniciarse en la programación con Bash
  • Iniciarse en el scripting con Bash para sysadmins
  • Cómo escribir funciones en Bash
  • Lee más sobre Bash

Puedes explorar Bash escribiendo una versión del juego «adivina el número». Aquí está mi implementación:

Desglosando el script

La primera línea del script, #!/bin/bash le dice a Linux que ejecute este script usando el shell Bash. Todo script comienza con el par de caracteres #!, que indica que se trata de un script de shell. Lo que sigue inmediatamente a #! es el shell a ejecutar. En este caso, /bin/bash es el shell Bash.

Para asignar un valor a una variable, liste el nombre de la variable seguido del signo =. Por ejemplo, la sentencia guess=0 asigna un valor cero a la variable guess.

También puede pedir al usuario que introduzca un valor utilizando la sentencia read. Si escribe read guess, Bash espera a que el usuario introduzca algún texto y luego almacena ese valor en la variable guess.

Para referenciar el valor de una variable, utilice $ antes del nombre de la variable. Así, habiendo almacenado un valor en la variable guess, puedes recuperarlo usando $guess.

Puedes usar los nombres que quieras para las variables, pero Bash se reserva algunos nombres de variables especiales. Una variable especial es RANDOM, que genera un número aleatorio muy grande cada vez que se hace referencia a ella.

Si quieres realizar una operación al mismo tiempo que almacenas un valor, necesitas encerrar la sentencia entre corchetes especiales. Esto le dice a Bash que ejecute esa sentencia primero, y el = almacena el valor resultante en la variable. Para evaluar una expresión matemática, utilice $(( )) alrededor de su declaración. Los paréntesis dobles indican una expresión aritmética. En mi ejemplo, number=$(( $RANDOM % 100 + 1 )) evalúa la expresión $RANDOM % 100 + 1 y luego almacena el valor en la variable number.

Se aplican los operadores aritméticos estándar como + (más), - (menos), * (multiplicar), / (dividir) y % (módulo).

Eso significa que la sentencia number=$(( $RANDOM % 100 + 1 )) genera un número aleatorio entre uno y 100. El operador modulo (%) devuelve el resto después de dividir dos números. En este caso, Bash divide un número aleatorio entre 100, dejando un resto en el rango de cero a 99. Sumando uno a ese valor, se obtiene un número aleatorio entre uno y 100.

Bash soporta expresiones condicionales y control de flujo como los bucles. En el juego de «adivinar el número», Bash continúa el bucle mientras el valor en guess no sea igual a number. Si el valor adivinado es menor que el número aleatorio, Bash imprime «Demasiado bajo», y si el valor adivinado es mayor que el número, Bash imprime «Demasiado alto».

Cómo funciona

Ahora que has escrito tu script Bash, puedes ejecutarlo para jugar al juego de «adivinar el número». Continúa adivinando hasta que encuentres el número correcto:

Guess a number between 1 and 100
50
Too high
30
Too high
20
Too high
10
Too low
15
Too high
13
Too low
14
That's right!

Cada vez que ejecutes el script, Bash escogerá un número aleatorio diferente.

Este juego de «adivinar el número» es un gran programa introductorio cuando se aprende un nuevo lenguaje de programación porque ejercita varios conceptos comunes de programación de una manera bastante directa. Al implementar este sencillo juego en diferentes lenguajes de programación, puedes demostrar algunos conceptos básicos y comparar detalles en cada lenguaje.

¿Tienes un lenguaje de programación favorito? Cómo escribirías el juego de «adivinar el número» en él? Sigue esta serie de artículos para ver ejemplos de otros lenguajes de programación que podrían interesarte.