https://youtu.be/2DHWCQPevPo?si=iYWMHhd7ilXXRTGM
utilizando bash como programa para realizar ejercicios básico que mezclan la lógica y matemáticas fundamentales, voy a poner las soluciones a las que he llegado. Hay muchas maneras de resolver el mismo ejercicio con sintaxis diferentes, esta es la manera que me parece más simple para conseguir comenzar a entender la programación.
El siguiente ejercicio calcula el valor absoluto de un número entero introducido por teclado.
#!/bin/bash
echo "Introduce un número entero: "
read num
if [ $num>=0 ]; then
absoluto=$((num < 0 ? -num : num))
fi
echo "el valor absoluto de $num es $absoluto."
al valor absoluto le asigno la función que hará lo que le indico entre parentesis, cuando el valor "$num" sea mayor que cero (esto es un número entero) la interrogación indica que no se usarán decimales.
literalmente le dice desde el valor introducido "$num" en negativo hasta 0 y de 0 al valor de num asignaselo a "absoluto".
Estamos creando una función que en principio no existe en bash. la estamos creando dentro del programa para poder usarla.
De esta forma nos calcula el valor absoluto de un número sea negativo o positivo, eso si, debe de ser entero.
asi se veria el output si se ejecutara desde una terminal.
./absoluto.sh
Intriduzca un número:
9
El valor absoluto de 9 es 9.
./absoluto.sh
Intriduzca un número:
-5
El valor absoluto de -5 es 5.
Ejercicio de ordenar con bash, en el que se nos pide ordenar tres números introducidos por teclado por el usuario.
Primero deberíamos de definir los valores que el usuario introducirá, los llamaremos numero1, numero2 y numero3. pero en nombre es irrelevante en este paso los podríamos llamar a,b y c
#!/bin/bash
echo "Dime un numero"
read numero1
echo "Dime otro numero"
read numero2
echo "Dime el ultimo numero"
read numero3
después, seguimos con el una condición if.
Si el $numero1 es mayor que el $numero2 y $numero1 es mayor que $numero 3 entonces el mayor será el valor que el usuario haya introducido como valor en $numero1.
if [ $numero1 -ge $numero2 ] && [ $numero1 -ge $numero3 ]; then
mayor=$numero1
nos quedaría que el $numero2 sería el medio y $numero3 el menor o al revés podría ser el $numero3 el medio el $numero2 el menor.
if [ $numero2 -ge $numero3 ]; then
medio=$numero2
menor=$numero3
else
medio=$numero3
menor=$numero2
fi
Abririmos una segunda condicion con elif, si el $numero2 es mayor que $numero 1 y mayor que $numero 3, entonces $numero2 es el mayor.
elif [ $numero2 -ge $numero1 ] && [ $numero2 -ge $numero3 ]; then
mayor=$numero2
Quedando la posibilidad de que $numero1 sea el medio y $numero3 el menor o que $numero3 sea el medio y que $numero1 sea el menor.
if [ $numero1 -ge $numero3]; then
medio=$numero1
menor=$numero3
else
medio=$numero3
menor=$numero1
fi
Pasariamos a la última condición con un else, si no se han cumplido las dos condiciones anteriores, significa que $numero3 es el mayor.
else
mayor=$numero3
entonces $numero 2 podría ser el medio y $numero1 el menor o $numero 1 el medio y $numero2 el menor.
if [ $numero1 -ge $numero2 ]; then
medio=$numero1
menor=$numero2
else
medio=$numero2
menor=$numero1
fi
fi
Fin del programa y le decimos que nos imprima por pantalla $mayor, $medio y $menor
echo "Los numero ordenados de mayor menor son: $mayor, $medio, $menor."
#!/bin/bash
echo "Dime un numero"
read numero1
echo "Dime otro numero"
read numero2
echo "Dime el ultimo numero"
read numero3
if [ $numero1 -ge $numero2 ] && [ $numero1 -ge $numero3 ]; then
mayor=$numero1
if [ $numero2 -ge $numero3 ]; then
medio=$numero2
menor=$numero3
else
medio=$numero3
menor=$numero2
fi
elif [ $numero2 -ge $numero1 ] && [ $numero2 -ge $numero3 ]; then
mayor=$numero2
if [ $numero1 -ge $numero3]; then
medio=$numero1
menor=$numero3
else
medio=$numero3
menor=$numero1
fi
else
mayor=$numero3
if [ $numero1 -ge $numero2 ]; then
medio=$numero1
menor=$numero2
else
medio=$numero2
menor=$numero1
fi
fi
echo "Los numero ordenados de mayor menor son: $mayor, $medio, $menor."