Os operadores de comparação em Julia são semelhantes aos de muitas outras linguagens, embora com algumas opções extra para quem gosta de matemática.
Para a igualdade, os operadores são == (igual) e != ou ≠ (diferente).
txt = "abc"
txt == "abc" # true
txt != "abc" # false
txt ≠ "abc" # false (synonym for !=)
Além disso, temos os vários operadores de maior e menor que.
1 < 3 # true
3 > 3 # false
3 <= 3 # true
3 ≤ 3 # true (synonym for <=)
4 >= 3 # true
4 ≥ 3 # true (synonym for >=)
Como acontece muitas vezes com Julia, um editor adequado torna fácil usar o símbolo matemático.
Escreve \ne, \le ou \ge e a seguir TAB para obteres ≠, ≤ ou ≥.
O exemplo anterior usa apenas números, mas vamos ver noutras partes do programa que vários tipos adicionais têm uma noção de ordem e podem ser comparados com os operadores de maior e menor que.
Os operadores de comparação podem ser encadeados, o que permite uma sintaxe clara e concisa:
n = 3
1 ≤ n ≤ 5 # true (n "between" two limits)
O exemplo anterior é sinónimo de 1 ≤ n && n ≤ 5.
if
Esta é a forma completa de um condicional:
if conditional1
statements...
elseif conditional2
statements...
else
statements...
end
Não é preciso usar parênteses () nem chavetas {}, e a indentação serve «apenas» para melhorar a legibilidade (mas a legibilidade é muito importante!).
Tanto o elseif como o else são opcionais, e pode haver vários blocos elseif.
No entanto, o end é obrigatório.
É possível aninhar condicionais, embora possas querer ajudar a legibilidade com um uso cuidado de parênteses, indentação e comentários.
A forma mais curta de um condicional seria algo assim:
if n < 0
n = 0
end
Como lembrete: só as expressões que são avaliadas como true ou false podem ser usadas como condicionais.
Julia evita deliberadamente qualquer conceito de «truthiness», pelo que valores zero, strings vazias e arrays vazios não são equivalentes a false.
Uma situação simples e comum é escolher um de dois valores com base numa condição.
Julia, como muitas linguagens, tem um operador ternário para tornar isto mais conciso.
A sintaxe é conditional ? value_if_true : value_if_false.
Assim, o exemplo anterior pode ser reescrito:
n = n < 0 ? 0 : n
O compilador não exige parênteses, mas estes podem melhorar a legibilidade.
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 ir de 0 (desligada) a 10 (máxima).
À velocidade mais baixa (1), são produzidos 221 automóveis por hora.
A produção aumenta de forma linear com a velocidade.
Por isso, com a velocidade definida em 4, deve produzir 4 * 221 = 884 automóveis por hora.
No entanto, velocidades mais altas aumentam a probabilidade de se produzirem automóveis com defeito, que depois têm de ser descartados.
Tens três tarefas. Cada uma das funções necessárias recebe como parâmetro um único número inteiro, a velocidade da linha de montagem.
Implementa o método success_rate() para calcular a probabilidade de um item ser criado sem erros para uma determinada velocidade.
A tabela seguinte mostra como a velocidade influencia a taxa de sucesso:
0: taxa de sucesso de 0%.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%.julia> success_rate(10)
0.77
Implementa o método production_rate_per_hour() para calcular a taxa de produção da linha de montagem por hora, tendo em conta a sua taxa de sucesso.
julia> production_rate_per_hour(6)
1193.4
Repara que o valor devolvido é um número de vírgula flutuante.
Implementa o método working_items_per_minute() para calcular quantos automóveis funcionais são produzidos por minuto:
julia> working_items_per_minute(6)
19
Repara que o valor devolvido é um número inteiro: os itens incompletos não são incluídos.
Inscreve-te no Exercism para aprenderes e dominares Julia com 35 conceitos128 exercícios, e mentoria humana real, tudo grátis.