// lección 3

Condiciones

si, osi, sino, si como valor y casos sobre valores simples.

si ejecuta un bloque cuando la condición es verdadera; osi encadena otra condición y sino recoge el resto. Los operadores lógicos son &&, || y !.

si temperatura > 30
	imprimir("¡Hace mucho calor!")
osi temperatura > 20
	imprimir("Hace buen tiempo")
sino
	imprimir("Hace frío")

si también produce un valor

En ese caso sino es obligatorio y todas las ramas deben tener el mismo tipo:

var etapa = si edad >= 18 "adulto" sino "joven"

casos con valores simples

Sobre enteros, cadenas y booleanos, casos elige entre valores concretos. Una rama puede tener varios valores y la rama final _ recoge todo lo demás:

casos dia
	6, 7 => imprimir("Fin de semana")
	_ => imprimir("Día laborable")

Programa completo

03_condiciones.cometa
// Tomar decisiones con si, osi y sino.

fn inicio()
	var temperatura = 28

	si temperatura > 30
		imprimir("¡Hace mucho calor!")
	osi temperatura > 20
		imprimir("Hace buen tiempo")
	sino
		imprimir("Hace frío")

	// Comparaciones: ==  !=  <  <=  >  >=
	// Combinaciones: && (y), || (o), ! (no)
	var es_fin_de_semana = verdadero
	var llueve = falso

	si es_fin_de_semana && !llueve
		imprimir("Vamos al parque")

	// si también puede producir un valor. En ese caso necesita sino.
	var edad = 15
	var etapa = si edad >= 18 "adulto" sino "joven"
	imprimir("Etapa: ${etapa}")

	// casos elige entre valores concretos. Una rama puede tener varios valores
	// y la rama final _ recoge todo lo demás.
	var dia = 6
	casos dia
		6, 7 => imprimir("Fin de semana")
		_ => imprimir("Día laborable")

	// Con números enteros, una rama puede ser un rango. El final no se
	// incluye: 60..90 va de 60 a 89.
	var puntos = 75
	casos puntos
		0..60 => imprimir("Suspenso")
		60..90 => imprimir("Aprobado")
		90..101 => imprimir("Sobresaliente")
		_ => imprimir("Puntuación inválida")