Feliz Dia da Pessoa Programadora!
Elixir UTFPR (por Adolfo Neto)
Posted on September 13, 2021
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()
Basta salvar o código acima num arquivo chamado programmersday.exs
e depois, no terminal, chamar.
> elixir programmersday.exs
Happy Programmers' Day!
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: executeDate.utc_today()
noiex
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
Como ano passado foi ano bissexto, temos que:
iex> Date.day_of_year(~D[2020-12-31])
366
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!
Posted on September 13, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.