// lección 2

Variables, tipos y números

var, const, los tipos básicos, interpolación y conversiones.

Hay cuatro tipos básicos:

TipoEjemploDetalle
entero42Enteros de 64 bits
decimal1.52Números con decimales
cadena"hola"Texto
boolverdadero, falsoVerdadero o falso
const dias_por_semana entero = 7

fn inicio()
	var nombre = "Ana"        // el tipo se deduce: cadena
	var puntos entero = 0     // o se escribe explícitamente
	puntos = puntos + 10
	imprimir("${nombre} tiene ${puntos} puntos")
  • ${...} dentro de una cadena inserta un valor.
  • Un entero se convierte solo a decimal cuando hace falta (7.0 / 2 da 3.5), pero 7 / 2 es 3: la división entre enteros descarta los decimales. % solo existe para enteros.
  • "42".a_entero() devuelve un opcional (.Ninguno si no es un número); se combina con o para dar un valor por defecto: "abc".a_entero() o -1.
  • precio.formato(2) escribe un número con dos decimales.

Programa completo

02_variables.cometa
// Variables, tipos básicos y operaciones.

// Una constante no puede cambiar.
const dias_por_semana entero = 7

fn inicio()
	// Cometa deduce el tipo a partir del valor.
	var nombre = "Ana"       // cadena
	var edad = 12            // entero
	var altura = 1.52        // decimal
	var le_gusta_leer = verdadero  // bool

	// También puedes escribir el tipo.
	var puntos entero = 0

	// Una variable se puede reasignar.
	puntos = puntos + 10
	puntos = puntos * 2

	// ${...} inserta un valor dentro de una cadena.
	imprimir("${nombre} tiene ${edad} años y mide ${altura} m")
	imprimir("¿Le gusta leer? ${le_gusta_leer}")
	imprimir("Puntos: ${puntos}")
	imprimir("Una semana tiene ${dias_por_semana} días")

	// Las cadenas también se pueden unir con +.
	imprimir("Hola, " + nombre + "!")

	// Operaciones con números.
	imprimir(7 + 3)    // 10
	imprimir(7 - 3)    // 4
	imprimir(7 * 3)    // 21
	imprimir(7 / 2)    // 3: la división entre enteros descarta los decimales
	imprimir(7 % 2)    // 1: el resto de la división
	imprimir(7.0 / 2)  // 3.5: con un decimal el resultado es decimal

	// Convertir entre texto y números.
	// a_entero y a_decimal devuelven .Ninguno si el texto no es un número, así que
	// se usan con "o" para dar un valor por defecto.
	var entrada = "42"
	var numero = entrada.a_entero() o 0
	imprimir(numero + 1)              // 43
	imprimir("abc".a_entero() o -1)   // -1
	imprimir("Puntos: " + cadena(numero))
	// formato escribe un número con la cantidad de decimales que quieras.
	var precio = 3.14159
	imprimir(precio.formato(2))       // 3.14