To you learn a new programming language, it's good to focus on the things most programming languages have in common:
- Variables
- Expressions
- Statements
These concepts are the basis of most programming languages. Because of these similarities, once you know one programming language, you can start figuring another one out by recognizing its differences.
Another good tool for learning a new language is starting with a standard program. This allows you to focus on the language, not the program's logic. We're doing that in this article series using a "guess the number" program, in which the computer picks a number between one and 100 and asks you to guess it. The program loops until you guess the number correctly.
The "guess the number" program exercises several concepts in programming languages:
- Variables
- Input
- Output
- Conditional evaluation
- Loops
It's a great practical experiment to learn a new programming language.
Guess the number in Elixir
The Elixir programming language is a dynamically typed functional language designed for building stable and maintainable applications. It runs on top of the same virtual machine as Erlang and shares many of its strengths—but with slightly easier syntax.
You can explore Elixir by writing a version of the "guess the number" game.
Here is my implementation:
defmodule Guess do
def guess() do
random = Enum.random(1..100)
IO.puts "Guess a number between 1 and 100"
Guess.guess_loop(random)
end
def guess_loop(num) do
data = IO.read(:stdio, :line)
{guess, _rest} = Integer.parse(data)
cond do
guess < num ->
IO.puts "Too low!"
guess_loop(num)
guess > num ->
IO.puts "Too high!"
guess_loop(num)
true ->
IO.puts "That's right!"
end
end
end
Guess.guess()
To assign a value to a variable, list the variable's name followed by the =
sign. For example, the statement random = 0
assigns a zero value to the random
variable.
The script starts by defining a module. In Elixir, only modules can have named functions in them.
The next line defines the function that will serve as the entry point, guess()
, which:
- Calls the
Enum.random()
function to get a random integer - Prints the game prompt
- Calls the function that will serve as the loop
The rest of the game logic is implemented in the guess_loop()
function.
The guess_loop()
function uses tail recursion to loop. There are several ways to do looping in Elixir, but using tail recursion is a common one. The last thing guess_loop()
does is call itself.
The first line in guess_loop()
reads the input from the user. The next line uses parse()
to convert the input to an integer.
The cond
statement is Elixir's version of a multi-branch statement. Unlike if/elif
or if/elsif
in other languages, Elixir does not treat the first nor the last branch in a different way.
This cond
statement has a three-way branch: The guess can be smaller, bigger, or equal to the random number. The first two options output the inequality's direction and then tail-call guess_loop()
, looping back to the beginning. The last option outputs That's right
, and the function finishes.
Sample output
Now that you've written your Elixir program, you can run it to play the "guess the number" game. Every time you run the program, Elixir will pick a different random number, and you can guess until you find the correct number:
$ elixir guess.exs
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!
This "guess the number" game is a great introductory program for learning a new programming language because it exercises several common programming concepts in a pretty straightforward way. By implementing this simple game in different programming languages, you can demonstrate some core concepts of the languages and compare their details.
Do you have a favorite programming language? How would you write the "guess the number" game in it? Follow this article series to see examples of other programming languages that might interest you.
Comments are closed.