Tipos básicos en Mojo
Comenzaremos con la escencia del lenguaje y los distintos tipos primitivos o basico, el tipo de datos INT en Mojo representa números enteros es un tipo fundamental ampliamente utilizado para diversos propósitos, incluidos el conteo y la iteración, la realización de operaciones matemáticas, el almacenamiento de datos numéricos como edades, puntuaciones e identificadores, la definición de longitudes de matrices y otros tamaños fijos, por lo que se le asigna un valor entero, lo que significa que puede contener valores positivos, negativos y cero y el rango depende de la implementación específica del tipo entero vamos a tener en cuenta la mutabilidad o inmutabilidad, esto difiera basicamente en la posibilidad de cambiar el valor original después de la creación, vamos a ello, ejecutemos el Visual Studio y demosle caña.
Entonces, ¿cómo declarar el tipo de datos entero en Mojo?, usaremos la palabra clave var para la variable y luego daremos el nombre de la variable, como por ejemplo edad le pondremos dos puntos y luego, después de los dos puntos, especificaremos el tipo, en este caso, queremos declarar una variable entera y le daremos el valor de 25.
var edad: Int = 25
Entonces, también podemos asignar el valor entero a una variable sin especificar el tipo por ejemplo una variable score y queremos almacenar el valor 100, que es un entero.
var score = 100
En este caso, el compilador no nos dio ningún tipo de advertencia, mmm alguno pensará esto es muy parecido a Swift o javascript no?, pero vamos a seguir veamos ahora cómo utilizar el tipo de datos entero en la expresión matemática declaremos 3 variables una de suma otra de resta y otra de multiplicacion.
var sum = 10+5
var diff = 20-12
var product = 10*3
print(sum)
print(diff)
print(product)
Bien!!!, ya estamos haciendo mas cosicasssss, ¿cómo utilizar el tipo de datos entero en las condociones if else.
if edad > 18:
print("Eres mayor")
else:
print("Chaval eres un adolescente")
Mmmm super fácil no?, vamos tiene nomenclatura similar a Python con el if else no??.
Podemos imprimir la salida que nuestra logica de desarrollo ha establecido con el condicional if, comprobando el valor de la variable edad y esta comprobación nos dice que eres una persona mayor, ya que nuestra condición devuelve el valor verdadero.
Existen diferentes representaciones del tipo de datos entero la representación de memoria de int depende de la implementación específica y del compilador utilizado en la mayoría de los casos en los sistemas operativos de 64 bits o los sistemas operativos basados en x64, la descendencia representa la representación de int de 64 bits, por lo que también tenemos el Int8, que consumirá la memoria de un byte y que es igual a los ocho bits de manera similar, tenemos Int16, Int32 luego tenemos Int64.
Sigamos con el Float el tipo de datos de flujo en Mojo representa números reales con partes fraccionarias es crucial para varias tareas como realizar cálculos con valores decimales, representar datos científicos, manipular medidas y distancias, implementar algoritmos que requieren aritmética de punto flotante por lo tanto, el tipo de datos de punto flotante o Float representa números reales con un punto decimal y la precisión varía según la implementación específica, como hemos visto en el caso de los números enteros, el Float tiene diferentes representaciones como Float16, Float32 y Float64 de manera similar a otros tipos de Mojo, los valores Float no se pueden modificar después de la creación por lo tanto, para declarar una variable de punto flotante, haremos lo siguiente:
var temperature: Float16 = 25.5
var promedio = (10.2+5.1)/ 2.0
if temperature > 30:
print("Hayyyy que calooooo tengo")
else:
print("Hace un buen día tuuuu!!")
Especificaremos el tipo después del nombre de la variable, digamos que queremos almacenar el Float16 y almacenaremos el valor de temperatura de 25,5, como has visto, he utilizado el Float16 en lugar del Float simple, no está permitido utilizar el float simple en Mojo, si uso el float simple y compilo, me dará un error, por lo que no reconocerá el tipo float simple.
Tengo que cambiarlo a Float16, Float32 o Float64, vamos a hacer un simple calculo matematico y luego comprobamos.
Simple no?? ya está ya conoces el Float en Mojo, de todas formas existen alguna lilmitaicones, pero eso lo veremos con el tiempo, a por el siguiente tipo.
Vamos a continuar con el Bool, el tipo de datos bool en Mojo representa dos valores verdadero o falso desempeña un papel crucial en las declaraciones condicionales flags o controles de operaciones lógicas y variables de control, entonces, ¿cómo declarar variables de tipo bool usando var?, por ejemplo al usar var, podemos.
var isLoggedIn: Bool = False
var isAdmin = True
if isLoggedIn:
print("El usuario está dentro logeado correctamente")
else:
print("El usario no está logeado")
if isAdmin:
print("El usuario es Administrador del sistema")
else:
print("Eres el Administradro del sistema TRONNN")
if isLoggedIn & isAdmin:
print("Admin estás logeado correctamente")
else:
print("Admin no estas logado")
Vamos a ello, especificaremos el tipo como bool y almacenaremos el falso dentro de la variable y de manera similar declaramos otra variable.
Wattt ? asi de simple no?, esto ya comienza a tener mas sentido no? la representación de memoria de bool suele ser un solo bit que indica su valor, “0" para falso y “1”para verdadero si domina el tipo de datos bool y sus funcionalidades, puedes controlar eficazmente el flujo de tus programas Mojo e implementar una lógica compleja basada en varias condiciones, vamos a por lo siguiente.
Valores String y Stringiterals, analizaremos tres conceptos importantes de las cadenas de caracteres o String en Mojo el primero es el String.
¿Qué es una String?
Un string es una secuencia de caracteres entre comillas simples o dobles.
¿Cuál podría ser el ejemplo?
"Esto es una cadena de caracteres y se conoce como String"
'test'
'12.5'
"1234"
"True"
'False'
También podemos representar los datos numéricos en forma de string una representación en String de los datos numéricos, o de numeros del tipo Float, incluso valores Booleanos.
Al se variables estos datos pueden mutar es decir que podemos modificarlos directamente después de su creación, vamos a ello no?
Los String también son dinámicos esto significa que podemos crear y manipular cadenas utilizando varias funciones, por lo que las cadenas se utilizan ampliamente para mostrar información, entradas de usuario y almacenar datos textuales.
var nombre: String = "Andres"
nombre = "Felipe"
print(nombre)
var string1 = String()
var string2 = String("Holaaaa Andres")
print(string1)
print(string2)
Entonces, ¿cómo declarar una cadena dentro de mojo? digamos que el nombre de nuestra variable de string es nombre y luego una vez creada le modificamos y posteriormente le imprimimos.
Podemos declarar String vacios o ya se con la funcion String() o directamente le damos el valor “”
var nombre: String = "Andres"
nombre = "Felipe"
nombre = ""
Podemos almacenar o crear una copia del valor de una variable en nueva variable, por ejemplo la var string3 = string2
var string1 = String()
var string2 = String("Holaaaa Andres")
var string3 = string2
print(string1)
print(string2)
print(string3)
Entonces, esta variable string2 y string3 apuntan a la misma ubicación de memoria y almacenarán el mismo valor, chachi no??
var string4 = String(42)
string4 = "14"
print(string4)
La representación de string de un int, por ejemplo digamos que tenemos otra string4 como cuatro almacenamos un valor 42, inmediatamente despues le modificamos con otro valor String de un int, imprimimos la variable, lo mismo ocurre con valores del tipo Float y Boolean.
Comprobemos al longitud de la cadena de caracteres
var saludaMojo = "Hola Mojo Aqui Andrés"
print(saludaMojo.__len__())
Entonces, si queremos concatenar con una nueva cadena, ¿cómo lo hacemos?
var saludaMojo = str("Hola Mojo Aqui Andrés")
print(saludaMojo.__len__())
var nuevosaludaMojo = saludaMojo + str("Uuuuyhea!!! chaval")
print(nuevosaludaMojo)
Usaremos el operador más y poco mas.
Con la palabra reservada str() + str() podemos concatenar mulitples string en Mojo. Ahora, continuaremos y comprenderemos el concepto de StringLiteral un StringLiteral es una secuencia fija de caracteres entre comillas simples o dobles, que está directamente incrustada en tu código.
var stringL1 = str("A very long string which is "
"broken into two literals for legibility.")
var stringL2 = str("""
Multi-line string literals let you
enter long blocks of text, including
newlines.""")
var stringL3 = str(False)
var newSL3 = stringL1 + stringL2 + stringL3
print(newSL3)
Super facil no? es útil para datos de texto pequeños y estáticos.
Y el tercer concepto en el mundo de las cadenas es la referencia de String, una referencia a un literal de cadena que actúa como un alias de los datos de cadena reales, ¿cuáles son las características de esta referencia de cadena?
El primero es compartir memoria, varias referencias de cadena pueden apuntar al mismo literal de cadena, lo que ahorra memoria.
El segundo es un acceso eficiente más rápido que acceder al literal de cadena original si se usa repetidamente.
En el tercero, y el común es el inmutable, por lo que los datos de la cadena referenciada son inmutables, no podemos cambiarlos después de la creación.
var stringR1 = "De nuevo por aqui"
var stringR2 = stringR1
var stringR3 = "Este es otro String"
print(stringR1 == stringR2)
print(stringR1 == stringR3)
Sugamos y aprendamos a usar la segmentación con String en Mojo la segmentación sigue el mismo patrón que usamos en Python en primer lugar, especificaremos el índice inicial y después de los dos puntos, especificaremos el índice final y si queremos realizar pasos, especificaremos el paso al final.
# star:end:step
var stringSL1 = str("MundoMojo")
print(stringSL1[0:5])
Declararemos una nueva variable stringSL1 y eso es “MundoMojo” y quiero extraer la palabra “Mundo” de esta cadena por lo tanto, usaré la función print y dentro de la función print en primer lugar, escribiré el nombre de la cadena y dentro de los corchetes escribiré el índice inicial y el índice final.
Como puedes ver, tenemos 01234, por lo que he especificado de 0 a 5 y excluyendo cuatro, restantes equivalentes a Mojo, hay otra forma similar de realizar la misma operación, podemos usar la tupla, es igual a la porción 0, 5 y cero es el índice inicial y cinco es el índice final.
var stringSL1Tupla = slice(0,5)
print(stringSL1[stringSL1Tupla])
Dentro de la función print podemos escribir el nombre del string que queremos extraer el texto y dentro de los corchetes pasaremos stringSL1Tupla.
Ahora si quiero imprimir cada segunda letra dentro del rango de 0,5
print(stringSL1[0:5:2])
Especificaremos el índice inicial, indice final y los pasos.
Si comprobamos la longitud de la cadena y le pongo el total y que me aplique los pasos de la siguiente manera.
print(stringSL1.__len__())
print(stringSL1[0:9:2])
Podemos ver si con la tupla -> slice(0,9,2) hace los mismo, venga es un reto para vosotros, creo que hemos avanzado bastante por el día de hoy, en el próximo artículo nos meteremos con bucles y listas y funciones, para despues intentar aplicar esto en proyectos reales, muchas gracias por llegar hasta aquí IA’s developers.