Los operadores de comparación en Julia son similares a los de muchos otros lenguajes, aunque con algunas opciones extra para los amantes de las matemáticas.
Para la igualdad, los operadores son == (igual) y != o ≠ (distinto).
txt = "abc"
txt == "abc" # true
txt != "abc" # false
txt ≠ "abc" # false (synonym for !=)
Además, tenemos los distintos operadores de mayor y 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 suele ocurrir con Julia, un editor adecuado facilita el uso del símbolo matemático.
Escribe \ne, \le o \ge y después TAB para obtener ≠, ≤ o ≥.
El ejemplo anterior solo usa números, pero veremos en otras partes del temario que varios tipos adicionales tienen un sentido de orden y se pueden comparar con mayor y menor que.
Los operadores de comparación se pueden encadenar, lo que permite una sintaxis clara y concisa:
n = 3
1 ≤ n ≤ 5 # true (n "between" two limits)
El ejemplo anterior es un sinónimo de 1 ≤ n && n ≤ 5.
if
Esta es la forma completa de un condicional:
if conditional1
statements...
elseif conditional2
statements...
else
statements...
end
No se necesitan paréntesis () ni llaves {}, y la indentación sirve «solo» para mejorar la legibilidad (¡pero la legibilidad es muy importante!).
Tanto elseif como else son opcionales, y puede haber varios bloques elseif.
Sin embargo, el end es obligatorio.
Es posible anidar condicionales, aunque quizá quieras mejorar la legibilidad con un uso reflexivo de paréntesis, indentación y comentarios.
La forma más corta de un condicional sería algo así:
if n < 0
n = 0
end
Como recordatorio: solo las expresiones que se evalúan como true o false pueden usarse como condicionales.
Julia evita deliberadamente cualquier concepto de «truthiness», así que los valores cero, los strings vacíos y los arrays vacíos no son equivalentes a false.
Una situación simple y habitual es elegir uno de dos valores en función de un condicional.
Julia, como muchos lenguajes, tiene un operador ternario para que esto sea más conciso.
La sintaxis es conditional ? value_if_true : value_if_false.
Así que el ejemplo anterior podría reescribirse:
n = n < 0 ? 0 : n
El compilador no exige paréntesis, pero pueden mejorar la legibilidad.
En este ejercicio vas a escribir código para analizar la producción de una cadena de montaje en una fábrica de coches. La velocidad de la cadena de montaje puede ir de 0 (apagada) a 10 (máxima).
A su velocidad más baja (1), se producen 221 coches cada hora. La producción aumenta de forma lineal con la velocidad. Así, con la velocidad ajustada a 4, debería producir 4 * 221 = 884 coches por hora. Sin embargo, las velocidades más altas aumentan la probabilidad de que se produzcan coches defectuosos, que después hay que descartar.
Tienes tres tareas. Cada una de las funciones requeridas recibe un único parámetro entero, la velocidad de la cadena de montaje.
Implementa el método success_rate() para calcular la probabilidad de que una unidad se produzca sin errores para una velocidad dada. La siguiente tabla muestra cómo influye la velocidad en la tasa de éxito:
0: 0 % de tasa de éxito.1 a 4: 100 % de tasa de éxito.5 a 8: 90 % de tasa de éxito.9: 80 % de tasa de éxito.10: 77 % de tasa de éxito.julia> success_rate(10)
0.77
Implementa el método production_rate_per_hour() para calcular la tasa de producción por hora de la cadena de montaje, teniendo en cuenta su tasa de éxito.
julia> production_rate_per_hour(6)
1193.4
Ten en cuenta que el valor devuelto es un número de coma flotante.
Implementa el método working_items_per_minute() para calcular cuántos coches en buen estado se producen por minuto:
julia> working_items_per_minute(6)
19
Ten en cuenta que el valor devuelto es un número entero: las unidades incompletas no se incluyen.
Regístrate en Exercism para aprender y dominar Julia con 35 conceptos128 ejercicios y mentoría humana real, todo gratis.