Percursos
/
Julia
Julia
/
Exercícios
/
Montagem de automóveis
Montagem de automóveis

Montagem de automóveis

Exercício de aprendizagem

Introdução

Operadores de comparação

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.

Ramificação com 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.

Operador ternário

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.

Instruções

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.

1. Calcular a taxa de sucesso

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

2. Calcular a taxa de produção por hora

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.

3. Calcular o número de itens funcionais produzidos por minuto

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.

Editar via GitHub A ligação abre numa nova janela ou separador
Julia Exercism

Estás pronto para começar Montagem de automóveis?

Inscreve-te no Exercism para aprenderes e dominares Julia com 35 conceitos128 exercícios, e mentoria humana real, tudo grátis.