Feliz Dia da Pessoa Programadora!

elixir_utfpr

Elixir UTFPR (por Adolfo Neto)

Posted on September 13, 2021

Feliz Dia da Pessoa Programadora!

Alt Text

Hoje é o Dia da Pessoa Programadora. Por que? Por ser o ducentésimo quinquagésimo sexto (256º) dia do ano. E claro que o primeiro dia do ano é o dia 1!

Por que 256? 256 é 2 elevado à oitava potência. Computadores trabalham com números binários. Logo, faz sentido que o Dia da Pessoa Programadora seja o dia do ano em que temos a maior quantidade de zeros num número binário no formato 1 e vários zeros: 100000000. Para completar, em hexadecimal, 256 é 100.

Fiz um pequeno programa em Elixir para comemorar. Veja abaixo:

defmodule ProgrammersDay do
  def show_message_if_today_is_programmers_day() do
    show_message_if_today_is_programmers_day(is_it_today?())
  end

  defp show_message_if_today_is_programmers_day(true) do
    IO.puts("Happy Programmers' Day!")
  end

  defp show_message_if_today_is_programmers_day(_) do
    IO.puts("Today is not Programmers' Day!")
  end

  defp is_it_today?() do
    Date.day_of_year(Date.utc_today()) == 256
  end
end

ProgrammersDay.show_message_if_today_is_programmers_day()
Enter fullscreen mode Exit fullscreen mode

Basta salvar o código acima num arquivo chamado programmersday.exs e depois, no terminal, chamar.

> elixir programmersday.exs
Happy Programmers' Day!
Enter fullscreen mode Exit fullscreen mode

Se o dia em que você estiver executando o código for o Dia da Pessoa Programadora, o programa irá escrever na tela, como acima Happy Programmers' Day!, ou seja, Feliz Dia da Pessoa Programadora. Se não for, o programa vai escrever que não é dia da pessoa programadora.

O que há de interessante no programa acima?

  • Date.utc_today/0 é uma função (daquelas que não é função matemática) e que retorna o dia de hoje. Exercício: execute Date.utc_today() no iex e poste nos comentários o que ela retorna.
  • Date.day_of_year/1 retorna o índice (começando em 1 e indo no máximo até 366, em caso de último dia de ano bissexto) de uma data no seu ano. Por exemplo, Date.day_of_year/1 aplicado a ~D[1050-03-12] (que representa 12 de março do ano 1050 retorna que 12/03/1050 foi o 75º dia de 1050:
iex> Date.day_of_year(~D[1050-03-12])
71
Enter fullscreen mode Exit fullscreen mode

Como ano passado foi ano bissexto, temos que:

iex> Date.day_of_year(~D[2020-12-31])
366
Enter fullscreen mode Exit fullscreen mode

O restante não tem muita novidade, certo? Temos duas funções chamadas show_message_if_today_is_programmers_day: show_message_if_today_is_programmers_day/0 e show_message_if_today_is_programmers_day/1. A primeira é pública e a segunda é privada.

Você consegue escrever uma versão mais interessante deste programa? Ou uma versão diferente, usando processos? Poste nos comentários!

💖 💪 🙅 🚩
elixir_utfpr
Elixir UTFPR (por Adolfo Neto)

Posted on September 13, 2021

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related