Fala Codecaster!! Trazemos para você mais um texto aqui na Publicação do Codecasts. Hoje o tema é Ruby. A motivação de trazer este conteúdo é devido ao fato de que recentemente eu tenho buscado estudar um pouco essa linguagem, mais a título de conhecimento. Sendo assim, como um Desenvolvedor Web que lida a mais de 2 anos com JavaScript, preferi traçar paralelos com a linguagem que mais amo, e de quebra solidificar o conhecimento passando ele a diante. Espero que esta série de textos possam te despertar a curiosidade a respeito dessa linguagem.
O que é o Ruby?
Bem, não é o foco deste texto trazer todo o conhecimento de Ruby e sua filosofia. É um texto mais prático. Porém, recomendo alguns conteúdos que podem ser úteis caso você queira aprender do zero a linguagem (como estou fazendo):
- Apostila de Ruby on Rails da Caelum - sim preferi começar por essa apostila, por ter uma pegada mais prática
- A História de Ruby on Rails | Por que deu certo? - vídeo de uma das maiores referências de Ruby noo Brasil, Fábio Akita
- Vale a pena? Ruby on Rails (feat Akita e Lucas Caton) - vídeo do canal do pessoal do DevNaEstrada
- Documentação oficial do Ruby
- Tutorial de Ruby
Executando um código Ruby
Bem, dedico uma seção aqui para deixar uma dica para você. Procure dar preferência, quando possível, a usar docker para execução de algumas coisas. Existem projetos, como o dockerize, em que você não precisa instalar nada na sua máquina para rodar um script, por exemplo. Foi o que eu fiz com o Ruby. Ele não vem instalado no Linux, e não gostaria de instalá-lo. Portanto, fiz uso o Docker. Segue os passos:
# num terminal zsh
docker run --name ruby_exec -v $(pwd):/home --rm -i -t -w=/home ruby:slim ruby <script>
Para facilitar sua vida, você pode criar uma função no ZSH. Eu, por exemplo, criei uma chamada ruby, que ficou assim:
# em seu .zshrc
function ruby() {
docker run --name ruby_exec -v $(pwd):/home --rm -i -t -w=/home ruby:slim ruby $1
}
Dessa forma eu só digito no terminal ruby script.rb
e pronto, ele vai executar o script Ruby para mim.
Criando uma aplicação de terminal para cálculo de IMC
Bem, o objetivo aqui é abordar:
- Saída padrão de dados usando
puts
ouprint
- Entrada padrão de dados usando a função
gets
- Criação de sua própria função usando
def
- Entendendo a estrutura condicional
Antes de mais nada, gostaria de convidá-lo a acessar o repositório meu de estudos com ruby. O código para este texto é o imc.rb.
Saída de dados padrão
Bem, como o texto fala de um programador com background em JavaScript aprendendo Ruby, sabemos que em JavaScript a principal forma de saída é o famoso console.log. Em Ruby, aprendemos que há duas formas principais de mostrar um dado na tela:
- puts: printa e pula uma linha
- print: só printa o dado na tela, sem pular linha
puts "Hello World"
Entrada padrão de dados
Em JavaScript, dependerá de onde estamos executando nosso código. Qual o contexto? Se for Node.js, por exemplo, teremos que capturar a entrada do usuário de uma forma não muito simples. Existem bibliotecas que nos ajudam nisso, prompts é uma delas.
Já com Ruby, podemos fazer um simples gets, atribuindo para uma variável, que conseguimos capturar um input
do usuário.
# uso o print para que o promp para o usuário digitar o nome
# apareça no final da linha
print "Qual o seu nome: "
nome = gets
Criando sua própria função
Para que eu consiga calcular o IMC, eu preciso da altura e peso da pessoa. Quando aprendemos a programar, aprendemos que código repetitivo colocamos em funções. Pois bem, precisamos criar uma função para mostrar um pergunta ao usuário e depois capturar a informação que ele digitar.
Com JavaScript, podemos criar funções de inúmeras formas, com função nominal, função anônima ou arrow functions. Já com Ruby, utilizamos a palavra reservada def
, bem semelhante ao Python:
def get_user_input(msg)
print msg
return gets
end
É importante notar que em Ruby usamos o conceito de método, portanto, ao fazer suas pesquisas, se atente a essa nomenclatura.
Condicionais
Por fim, a última parte da nossa abordagem é a categorização. Sabemos que o IMC possui categorias. Estaremos usando como referência Wikipedia.
Para tanto, a decisão tomada foi criar uma função que retorna uma categoria a partir do IMC. Veja como ela ficou:
def categorize(value)
if (value < 17)
return "Muito abaixo do peso"
end
case value
when 17.1...18.49
return "Abaixo do peso"
when 18.5...24.99
return "Peso normal"
when 25...29.99
return "Acima do peso"
when 30...34.99
return "Obesidade I"
when 35...39.99
return "Obesidade II (severa)"
else
return "Obesidade III (mórbida)"
end
end
Algumas coisas nos chamam a atenção em comparação com JavaScript:
- O não uso de chaves
{}
para delimitar blocos. Isso ocorre pelo uso da identação - O uso da expressão
end
para delimitar, também, o fim de um bloco de código - E o range de dados, para delimitar um valor inicial e um valor final. Lindo demais :)
Conclusões finais
Como dito, o objetivo deste texto é proporcionar uma experiência muito prática e até superficial a respeito da linguagem Ruby em comparação com JavaScript. Espero que possa ser de auxílio em algum nível.
Por fim, não deixe de conferir o código completo no meu repositório.
Até a próxima!
Top comments (0)