Todo el track de Julia te exigirá que trates tu solución como pequeñas bibliotecas, es decir, necesitas definir funciones, tipos, etc., que luego se ejecutarán contra una suite de pruebas. Por esa razón, presentaremos las funciones con nombre como el primerísimo concepto.
Julia es un lenguaje de programación dinámico y de tipado fuerte. El estilo de programación es principalmente funcional, aunque con más flexibilidad que en lenguajes como Haskell.
No es necesario declarar una variable de antemano. Solo asigna un valor a un nombre adecuado:
julia> myvar = 42 # an integer
42
julia> name = "Maria" # strings are surrounded by double-quotes ""
"Maria"
Si un valor debe estar disponible en todo el programa, pero no se espera que cambie, lo mejor es marcarlo como una constante.
Anteponer la palabra clave const a una asignación permite que el compilador genere código más eficiente que el que es posible para una variable.
Las constantes también te ayudan a protegerte de errores al programar.
Si por accidente intentas cambiar el valor de const, obtendrás una advertencia:
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
Ten en cuenta que un const solo se puede declarar fuera de cualquier función.
Por lo general, esto va cerca del inicio del archivo *.jl, antes de las definiciones de funciones.
Son los mismos que en muchos otros lenguajes:
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)
Hay dos maneras comunes de definir una función con nombre en Julia:
Usar la palabra clave function
function muladd(x, y, z)
x * y + z
end
Sangrar con 4 espacios es lo convencional para que el código sea más legible, pero el compilador lo ignora.
La palabra clave end es esencial.
Ten en cuenta que podríamos haber escrito return x * y + z.
Sin embargo, las funciones de Julia siempre devuelven la última expresión evaluada, así que la palabra clave return es opcional.
Muchos programadores prefieren incluirla para dejar más clara su intención.
Usar la «forma de asignación»
muladd(x, y, z) = x * y + z
Se usa con más frecuencia para crear funciones concisas de una sola expresión.
En la forma de asignación, la palabra clave return nunca se usa.
Las dos formas son equivalentes y se usan exactamente de la misma manera, así que elige la que te resulte más legible.
Para invocar una función, se especifica su nombre y se pasan argumentos para cada uno de los parámetros de la función:
# 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 en muchos lenguajes, Julia requiere que los nombres (de variables, funciones y muchas otras cosas) empiecen con una letra, seguida de cualquier combinación de letras, dígitos y guiones bajos.
Por convención, los nombres de variables, constantes y funciones van en minúsculas, con los guiones bajos reducidos a un mínimo razonable.
En este ejercicio vas a escribir algo de código para ayudarte a cocinar una lasaña espectacular con tu libro de cocina favorito.
Tienes cuatro tareas, todas relacionadas con el tiempo dedicado a cocinar la lasaña.
Define la constante expected_bake_time que indica cuántos minutos debe hornearse la lasaña en el horno.
Según el libro de cocina, la lasaña necesita estar en el horno un total de 60 minutos.
julia> expected_bake_time
60
Define la función preparation_time que toma como argumento el número de capas que le agregaste a la lasaña y devuelve cuántos minutos dedicaste a prepararla, suponiendo que preparar cada capa te toma 2 minutos.
julia> preparation_time(4)
8
Define la función remaining_time que toma como parámetro los minutos que la lasaña lleva en el horno y devuelve cuántos minutos le quedan aún en el horno.
julia> remaining_time(50)
10
Define la función total_working_time que toma dos argumentos: el primer argumento es el número de capas que le agregaste a la lasaña, y el segundo argumento es el número de minutos que la lasaña ha estado en el horno.
La función debe devolver cuántos minutos en total has dedicado a cocinar la lasaña, que es la suma del tiempo de preparación en minutos y del tiempo en minutos que la lasaña ha pasado en el horno hasta el momento.
julia> total_working_time(3, 20)
26
Regístrate en Exercism para aprender y dominar Julia con 35 conceptos128 ejercicios y mentoría humana real, todo gratis.