Todo el itinerario de Julia te exigirá que trates tu solución como si fuera una pequeña biblioteca; es decir, tendrás que definir funciones, tipos, etc., que después se ejecutarán contra una suite de pruebas. Por ese motivo, empezaremos presentando las funciones con nombre como 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 hace falta declarar una variable de antemano. Basta con asignar 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 tiene que estar disponible en todo el programa, pero no se espera que cambie, lo mejor es marcarlo como constante.
Anteponer la palabra clave const a una asignación permite al compilador generar un código más eficiente que el que es posible con una variable.
Las constantes también te ayudan a protegerte de errores al programar.
Si intentas cambiar por accidente 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 una const solo se puede declarar fuera de cualquier función.
Normalmente irá cerca del principio del fichero *.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 formas habituales de definir una función con nombre en Julia:
Usando la palabra clave function
function muladd(x, y, z)
x * y + z
end
Sangrar con 4 espacios es lo convencional por legibilidad, pero el compilador lo ignora.
La palabra clave end es esencial.
Fíjate en 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.
Usando la «forma de asignación»
muladd(x, y, z) = x * y + z
Se usa sobre todo para crear funciones concisas de una sola expresión.
En la forma de asignación nunca se usa la palabra clave return.
Las dos formas son equivalentes y se usan exactamente igual, así que elige la que te resulte más legible.
Para llamar a una función, se especifica su nombre y se pasan argumentos para cada uno de sus parámetros:
# 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 muchos lenguajes, Julia exige que los nombres (de variables, funciones y muchas otras cosas) empiecen por una letra, seguida de cualquier combinación de letras, dígitos y guiones bajos.
Por convención, los nombres de variables, constantes y funciones se escriben en minúsculas, y los guiones bajos se mantienen en un mínimo razonable.
En este ejercicio vas a escribir código para ayudarte a cocinar una lasaña espectacular con tu libro de cocina favorito.
Tienes cuatro tareas, todas relacionadas con el tiempo que se tarda en cocinar la lasaña.
Define la constante expected_bake_time, que devuelve cuántos minutos debe hornearse la lasaña en el horno.
Según el libro de cocina, la lasaña debe 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 has añadido a la lasaña y devuelve cuántos minutos has dedicado a prepararla, suponiendo que cada capa te lleva 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 ya en el horno y devuelve cuántos minutos le quedan todavía por estar 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 has añadido a la lasaña y el segundo argumento es el número de minutos que la lasaña lleva en el horno.
La función debe devolver cuántos minutos en total has trabajado cocinando la lasaña, es decir, la suma del tiempo de preparación en minutos y el tiempo en minutos que la lasaña lleva en el horno en ese 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.