Toda a trilha de Julia vai exigir que você trate sua solução como pequenas bibliotecas, ou seja, você precisa definir funções, tipos etc. que depois serão executados em uma suíte de testes. Por isso, vamos apresentar as funções nomeadas como o primeiro conceito de todos.
Julia é uma linguagem de programação dinâmica e fortemente tipada. O estilo de programação é principalmente funcional, embora com mais flexibilidade do que em linguagens como Haskell.
Não é preciso declarar uma variável antes. Basta atribuir um valor a um nome adequado:
julia> myvar = 42 # an integer
42
julia> name = "Maria" # strings are surrounded by double-quotes ""
"Maria"
Se um valor precisa estar disponível ao longo de todo o programa, mas não deve mudar, o melhor é marcá-lo como uma constante.
Colocar a palavra-chave const antes de uma atribuição permite que o compilador gere um código mais eficiente do que seria possível para uma variável.
Constantes também ajudam a proteger você de erros na hora de programar.
Tentar mudar o valor de const sem querer vai gerar um aviso:
julia> const answer = 42
42
julia> answer = 24
WARNING: redefinition of constant Main.answer. This may fail, cause incorrect answers, or produce other errors.
24
Repare que uma const só pode ser declarada fora de qualquer função.
Normalmente isso fica perto do topo do arquivo *.jl, antes das definições de funções.
São os mesmos de muitas outras linguagens:
2 + 3 # 5 (addition)
2 - 3 # -1 (subtraction)
2 * 3 # 6 (multiplication)
8 / 2 # 4.0 (division with floating-point result)
8 % 3 # 2 (remainder)
Há duas formas comuns de definir uma função nomeada em Julia:
Usando a palavra-chave function
function muladd(x, y, z)
x * y + z
end
A indentação com 4 espaços é convencional para facilitar a leitura, mas o compilador ignora isso.
A palavra-chave end é essencial.
Repare que poderíamos ter escrito return x * y + z.
No entanto, as funções em Julia sempre retornam a última expressão avaliada, então a palavra-chave return é opcional.
Muitos programadores preferem incluí-la para deixar suas intenções mais explícitas.
Usando a "forma de atribuição"
muladd(x, y, z) = x * y + z
Essa forma é mais usada para criar funções concisas de uma única expressão.
A palavra-chave return nunca é usada na forma de atribuição.
As duas formas são equivalentes e são usadas exatamente da mesma maneira, então escolha a que for mais legível.
Para chamar uma função, você especifica o nome dela e passa argumentos para cada um dos parâmetros da função:
# invoking a function
muladd(10, 5, 1)
# and of course you can invoke a function within the body of another function:
square_plus_one(x) = muladd(x, x, 1)
Como muitas linguagens, Julia exige que os nomes (de variáveis, funções e muitas outras coisas) comecem com uma letra, seguida de qualquer combinação de letras, dígitos e underscores.
Por convenção, nomes de variáveis, constantes e funções são escritos em minúsculas, com o uso de underscores mantido em um mínimo razoável.
Neste exercício, você vai escrever um código para ajudar a preparar uma lasanha incrível usando seu livro de receitas favorito.
Você tem quatro tarefas, todas relacionadas ao tempo gasto no preparo da lasanha.
Defina a constante expected_bake_time, que retorna quantos minutos a lasanha deve ficar assando no forno.
De acordo com o livro de receitas, a lasanha precisa ficar no forno por um total de 60 minutos.
julia> expected_bake_time
60
Defina a função preparation_time, que recebe como argumento o número de camadas que você adicionou à lasanha e retorna quantos minutos você gastou preparando a lasanha, considerando que cada camada leva 2 minutos para preparar.
julia> preparation_time(4)
8
Defina a função remaining_time, que recebe como parâmetro os minutos que a lasanha já passou no forno e retorna quantos minutos a lasanha ainda precisa ficar no forno.
julia> remaining_time(50)
10
Defina a função total_working_time, que recebe dois argumentos: o primeiro argumento é o número de camadas que você adicionou à lasanha, e o segundo argumento é o número de minutos que a lasanha já passou no forno.
A função deve retornar quantos minutos no total você trabalhou no preparo da lasanha, ou seja, a soma do tempo de preparo em minutos com o tempo em minutos que a lasanha já passou no forno até o momento.
julia> total_working_time(3, 20)
26
Crie sua conta no Exercism para aprender e dominar Julia com 35 conceitos128 exercícios e mentoria humana de verdade, tudo de graça.