¿Qué son los tipos de datos primitivos?

Imagina que estás construyendo una casa con bloques de Lego. Los bloques de Lego más básicos, como los ladrillos de 2x4 o las placas lisas, son los bloques de construcción fundamentales. No puedes descomponer un ladrillo de 2x4 en piezas de Lego aún más pequeñas.

En el mundo de la programación, los tipos de datos primitivos son como esos bloques de Lego básicos. Son las piezas fundamentales que utilizamos para representar la información dentro de un programa como numeros, texto, valores booleanos, etc.

Estos no pueden dividirse en partes mas simples, pero si pueden usarse para construir estructuras de datos mas complejas.

Son extremadamente cruciales ya que nos permiten decirle a la computadora que tipo de información vamos a manejar, y la computadora puede hacer un uso mas eficiente de los datos asignandole lugares correctos en la memoria.

Cada lenguaje tiene asociado a cada tipo de dato operaciones especiales que se pueden realizar con el. Por ejemplo en algunos lenguajes podemos sumar dos numeros enteros, lo cual si fueran dos textos no tendria sentido.

Tipos de datos primitivos comunes

Enteros

En programación, al igual que en matemáticas, los números enteros son aquellos que no tienen parte decimal ni fraccionaria. Pueden ser positivos (como 5, 100), negativos (como -3, -25) o cero (0).

edad = 30
cantidad_items = -5
cero = 0
 
print(edad)
print(cantidad_items)
print(cero)

En Python, simplemente asignas un valor entero a una variable. Python automáticamente reconoce que es un número entero.

Operaciones Básicas Comunes con Números:

  1. Suma (+): Se utiliza para agregar dos o más números.
  2. Resta (-): Se utiliza para restar un número de otro.
  3. Multiplicación (*): Se utiliza para multiplicar dos o más números.
  4. División (/): Se utiliza para dividir un número 1 por otro. Es importante tener en cuenta que en algunos lenguajes, la división entre enteros puede dar como resultado un entero (truncando la parte decimal), mientras que en otros puede dar un número de punto flotante.
  5. Módulo (%): También conocido como “resto” o “residuo”. Devuelve el resto de una división entera. Por ejemplo, 7 % 3 es 1 porque 7 dividido por 3 es 2 con un resto de 1.
  6. Exponenciación: Se utiliza para elevar un número a una potencia. La sintaxis varía entre los lenguajes.
numero1 = 10
numero2 = 3
 
suma = numero1 + numero2
resta = numero1 - numero2
multiplicacion = numero1 * numero2
division = numero1 / numero2
modulo = numero1 % numero2
exponenciacion = numero1 ** numero2  # En Python se usa ** para la exponenciación

Numeros de punto flotante

En esencia, un número de punto flotante es una forma de representar números reales (tanto racionales como irracionales) en una computadora. La idea detrás del “punto flotante” es que la posición del punto decimal puede “flotar”, es decir, puede estar en diferentes lugares dependiendo de la magnitud del número.

Piensa en la notación científica que aprendiste en la escuela: un número se representa como un número entre 1 y 10 multiplicado por una potencia de 10 (por ejemplo, 1.23x1031.23 x 10^3). Los números de punto flotante en las computadoras funcionan de manera similar, pero en base 2 (porque las computadoras usan bits, que son 0s y 1s).

pi = 3.14159
print(pi)

Las operaciones sobre numeros flotantes son similares a la de los enteros, pero con numeros con coma.

numero1_float = 10.5
numero2_float = 2.5
 
suma_float = numero1_float + numero2_float
resta_float = numero1_float - numero2_float
multiplicacion_float = numero1_float * numero2_float
division_float = numero1_float / numero2_float
modulo_float = numero1_float % numero2_float
exponenciacion_float = numero1_float ** numero2_float
📝 Consideraciones
  • División : La división entre números de punto flotante generalmente produce otro número de punto flotante en todos estos lenguajes.
  • Módulo : Para el operador módulo con números de punto flotante, algunos lenguajes pueden requerir una función específica. Por ejemplo, en C++ se usa std::fmod y en Go se usa math.Mod. En otros lenguajes, el operador % también funciona con floats.
  • Exponenciación : Al igual que con los enteros, la exponenciación se realiza con ** en Python, JavaScript y Ruby, y con funciones como Math.pow() (Java, C#) y std::pow() (C++) y math.Pow() (Go).
  • Precisión : Recuerda que los cálculos con números de punto flotante pueden tener pequeñas imprecisiones debido a la forma en que se representan internamente en la computadora.

Booleanos

Un booleano (a veces llamado valor booleano o tipo lógico) es un tipo de dato primitivo que representa un valor de verdad. Se utiliza para expresar si una condición es verdadera o falsa. Son fundamentales para la toma de decisiones en los programas, ya que permiten que el código se comporte de manera diferente según ciertas condiciones.

Tiene tan solo dos valores posibles:

Estos valores son usados generalmente se utilizan en estructuras de control como las declaraciones if, else, while y for para determinar qué parte del código se debe ejecutar. Por ejemplo, “Si esta condición es verdadera, entonces haz esto; si no, haz aquello”. Evaluación de condiciones: El resultado de comparar valores (por ejemplo, si un número es mayor que otro) siempre es un booleano (verdadero o falso). Indicadores (flags): Se pueden usar como “interruptores” para recordar si algo ha ocurrido o si una cierta condición se ha activado.

es_verdadero = True
es_falso = False
📝 ¿Que es una tabla de verdad?

Imagina una tabla que muestra todas las posibles combinaciones de valores de entrada para una operación lógica, y el resultado (verdadero o falso) para cada una de esas combinaciones.

Supongamos que tenemos dos entradas booleanas, llamadas A y B, y queremos ver el resultado de la operación A AND B. La tabla de verdad se vería así:

ABA AND B
VerdaderoVerdaderoVerdadero
VerdaderoFalsoFalso
FalsoVerdaderoFalso
FalsoFalsoFalso
  • La primera fila nos dice que si A es verdadero Y B es verdadero, entonces el resultado de A AND B es verdadero.
  • La segunda fila nos dice que si A es verdadero Y B es falso, entonces el resultado de A AND B es falso.
  • Y así sucesivamente para las otras combinaciones.

Operaciones Básicas Comunes con Booleanos:

  1. AND (Y lógico): El resultado es verdadero solo si ambos operandos son verdaderos. En caso contrario, el resultado es falso.
ABA AND B
VerdaderoVerdaderoVerdadero
VerdaderoFalsoFalso
FalsoVerdaderoFalso
FalsoFalsoFalso
  1. OR (O lógico): El resultado es verdadero si al menos uno de los operandos es verdadero. El resultado es falso solo si ambos operandos son falsos.
ABA OR B
VerdaderoVerdaderoVerdadero
VerdaderoFalsoVerdadero
FalsoVerdaderoVerdadero
FalsoFalsoFalso
  1. NOT (Negación lógica): Invierte el valor del operando. Si el operando es verdadero, el resultado es falso, y si el operando es falso, el resultado es verdadero.
ANOT A
VerdaderoFalso
FalsoVerdadero
valor1 = True
valor2 = False
 
and_resultado = valor1 and valor2
or_resultado = valor1 or valor2
not_resultado1 = not valor1
not_resultado2 = not valor2

Caracteres

Imagina que quieres representar una sola letra, un número como un símbolo (por ejemplo, el ‘5’ como carácter, no como el número cinco), un signo de puntuación o incluso un espacio en blanco. El tipo de dato carácter se utiliza para almacenar exactamente eso: un único símbolo de texto.

Un carácter representa una unidad individual de texto. Esto puede ser:

Hoy en día, la mayoría de los lenguajes de programación utilizan un estándar llamado Unicode para representar caracteres. Unicode asigna un número único a cada carácter que existe en casi todos los sistemas de escritura del mundo. Esto permite que las computadoras manejen texto de diferentes idiomas de manera consistente.

En Python, no existe un tipo de dato “carácter” separado como en otros lenguajes. Las cadenas de texto de un solo carácter se consideran simplemente cadenas.

caracter = 'A'

Operaciones Básicas Comunes con Caracteres:

caracter1 = 'a'
caracter2 = 'A'
caracter3 = '5'
caracter4 = ' '
 
# Comparación
print(f"¿'{caracter1}' es igual a '{caracter2}'? {caracter1 == caracter2}")
print(f"¿'{caracter1}' es menor que '{caracter2}'? {caracter1 < caracter2}")
 
# Conversión de caso
print(f"'{caracter1}' en mayúscula: {caracter1.upper()}")
print(f"'{caracter2}' en minúscula: {caracter2.lower()}")
 
# Verificación de tipo
print(f"¿'{caracter3}' es un dígito? {caracter3.isdigit()}")
print(f"¿'{caracter1}' es una letra? {caracter1.isalpha()}")
print(f"¿'{caracter4}' es espacio en blanco? {caracter4.isspace()}")

Cadenas de texto

Ahora imagina que quieres representar una palabra, una frase, un párrafo o incluso un libro entero. Una cadena de texto es una secuencia ordenada de caracteres que se utiliza para almacenar y manipular texto en los programas. Piensa en ella como un collar de cuentas, donde cada cuenta es un carácter.

Una cadena de texto es una secuencia de uno o más caracteres (letras, números, símbolos, espacios en blanco, etc.) que se tratan como una sola unidad de datos. Se utilizan para representar texto que puede ser mostrado en pantalla, leído desde un archivo, enviado a través de la red, etc.

saludo = "Hola, mundo!"

Operaciones Básicas Comunes con Cadenas de Texto:

saludo = "Hola, mundo!"
 
# Concatenación
saludo_completo = saludo + " ¡Bienvenido!"
print(f"Concatenación: {saludo_completo}")
 
# Longitud
longitud = len(saludo)
print(f"Longitud: {longitud}")
 
# Acceso a caracteres (indexación empieza en 0)
primer_caracter = saludo[0]
print(f"Primer carácter: {primer_caracter}")
 
# Búsqueda (devuelve el índice de la primera ocurrencia, -1 si no se encuentra)
indice_mundo = saludo.find("mundo")
print(f"Índice de 'mundo': {indice_mundo}")
 
# Reemplazo
nuevo_saludo = saludo.replace("mundo", "Python")
print(f"Reemplazo: {nuevo_saludo}")
 
# Conversión de caso
mayusculas = saludo.upper()
minusculas = saludo.lower()
print(f"Mayúsculas: {mayusculas}")
print(f"Minúsculas: {minusculas}")
 
# Dividir (por espacio)
palabras = saludo.split(" ")
print(f"Dividir: {palabras}")
 
# Eliminar espacios en blanco (no hay en este ejemplo, pero veamos cómo sería)
con_espacios = "   Hola   "
sin_espacios = con_espacios.strip()
print(f"Eliminar espacios: '{sin_espacios}'")