Os dois tipos de números mais comuns em Ruby são:
-6, 0, 1, 25, 976 e 500000.-2.4, 0.1, 3.14, 16.984025 e 1024.0.São implementados através das classes Integer e Float.
Estas classes têm métodos que convertem valores de um tipo no outro. Os números Integer são exatos até à unidade inteira, enquanto o Float tem uma precisão fracionária em relação ao número inteiro:
Integer#to_f: Converte num novo número de vírgula flutuanteFloat#ceil: Arredonda para cima até ao número inteiro mais próximoFloat#floor: Arredonda para baixo até ao número inteiro mais próximoFloat#round: Arredonda para o número inteiro mais próximoFloat#to_i: Trunca para o número inteiro mais próximoRuby tem aquilo a que se chamam expressões de controlo de fluxo. Estas são usadas para controlar a forma como o programa é executado e recebem um valor verdadeiro ou falso. Existem operadores que podem ser usados para criar valores verdadeiros ou falsos, conhecidos como operadores de comparação.
Existem duas expressões de controlo principais que determinam que código é executado e que código não é. Ou seja, qual dos ramos será executado.
Essas duas são: if e a expressão unless.
Os operadores de comparação são usados para comparar valores e devolver um valor true ou false.
Os operadores seguintes exigem que os dois valores a comparar sejam do mesmo tipo.
Se os valores não forem do mesmo tipo, o compilador dá um erro.
Aqui está uma lista dos operadores e um exemplo de quando dão um valor true:
| Método | Descrição | Exemplo |
|---|---|---|
| < | menor que | 4 < 5 |
| <= | menor ou igual | 4 <= 4 |
| > | maior que | 3 > 1 |
| >= | maior ou igual | 2 >= 2 |
Os operadores de igualdade e de desigualdade podem ser usados para comparar qualquer tipo de valor, ao contrário dos operadores já mencionados.
O operador == é usado para verificar se dois valores são iguais, o que inclui verificar o tipo do valor.
O != funciona da mesma forma, mas devolve true se os valores não forem iguais e false se forem iguais.
Aqui está uma lista dos operadores de igualdade e de desigualdade e um exemplo de quando dão um valor true:
| Método | Descrição | Exemplo |
|---|---|---|
| == | igual | 4 == 4 |
| != | diferente | 5 != 4 |
if
A condicional if é usada para verificar se uma determinada condição é "verdadeira" ou "falsa".
Se a condição for verdadeira, o código dentro da condicional if é executado.
Uma condicional if termina com a palavra-chave end.
value = 1
if value == 1
"1 is equal to 1"
end
# => "1 is equal to 1"
if value > 2
"1 is greater than 2"
end
# => nil
unless
A condicional unless funciona de forma muito semelhante à condicional if, mas executa o código dentro da condicional unless se a condição for falsa.
value = 1
unless value == 1
"1 is not equal to 1"
end
# => nil
unless value > 2
"1 is not greater than 2"
end
# => "1 is not greater than 2"
else
A cláusula else pode ser usada em conjunto com a condicional if.
A cláusula else é executada se o ramo if não for executado.
value = 1
if value == 1
"1 is equal to 1"
else
"1 is not equal to 1"
end
# => "1 is equal to 1"
if em cascataA cláusula elsif pode ser usada em conjunto com a condicional if.
A cláusula elsif é executada se o ramo if não for executado e a condição da cláusula elsif for verdadeira.
As cláusulas elsif podem ser encadeadas e a primeira condição verdadeira é executada.
Também pode haver uma cláusula else no final da condicional if, que é executada se nenhuma das anteriores tiver sido verdadeira.
value = 1
if value != 1
"1 is not equal to 1"
elsif value > 2
"1 is greater than 2"
else
"1 is not equal to 1 and 1 is not greater than 2"
end
# => "1 is not equal to 1 and 1 is not greater than 2"
Neste exercício vais escrever código para analisar a produção de uma linha de montagem numa fábrica de automóveis.
A velocidade da linha de montagem pode variar entre 0 (desligada) e 10 (máxima).
À sua velocidade mais lenta (1), são produzidos 221 carros por hora.
A produção aumenta linearmente com a velocidade.
Por isso, com a velocidade definida como 4, deve produzir 4 * 221 = 884 carros por hora.
No entanto, velocidades mais elevadas aumentam a probabilidade de se produzirem carros com defeito, que depois têm de ser descartados.
A tabela seguinte mostra como a velocidade influencia a taxa de sucesso:
1 a 4: taxa de sucesso de 100%.5 a 8: taxa de sucesso de 90%.9: taxa de sucesso de 80%.10: taxa de sucesso de 77%.Tens duas tarefas.
Implementa o método AssemblyLine#production_rate_per_hour para calcular a taxa de produção por hora da linha de montagem, tendo em conta a sua taxa de sucesso.
Repara que o valor devolvido é uma instância de Float.
AssemblyLine.new(6).production_rate_per_hour
#=> 1193.4
Implementa o método AssemblyLine#working_items_per_minute para calcular quantos carros completos e funcionais são produzidos por minuto.
Repara que o valor devolvido é uma instância de Integer.
AssemblyLine.new(6).working_items_per_minute
#=> 19
Inscreve-te no Exercism para aprenderes e dominares Ruby com 21 conceitos121 exercícios, e mentoria humana real, tudo grátis.