Aspetti matematici della programmazione della shell Linux - Parte IV
In questo post parlerò delle Scripte dal punto di vista matematico e numero. Anche se ho pubblicato uno script più complesso (Simple Calculator) nel post precedente, ma da parte dell'utente era difficile da capire e quindi ho pensato di farvi imparare l'altro lato utile dell'apprendimento in piccoli pacchetti.
Prima di questo articolo, sono stati pubblicati tre articoli della Shell Scripting Series e sono:
- Comprendere la shell Linux e lo scripting di base della shell - Parte I
- 5 script di shell per imparare a programmare la shell – Parte II
- Navigando nel mondo di Linux BASH Scripting – Parte III
Iniziamo il processo di apprendimento ulteriore con alcuni nuovi entusiasmanti script, iniziando con gli script di matematica:
Copione 1: aggiunte
Crea un file "Addition.sh" e chmod 755 nello script come descritto nel post precedente ed eseguilo.
#!/bin/bash
echo “Enter the First Number: ”
read a
echo “Enter the Second Number: ”
read b
x=$(expr "$a" + "$b")
echo $a + $b = $x
Uscita del campione
[root@tecmint ~]# vi Additions.sh
[root@tecmint ~]# chmod 755 Additions.sh
[root@tecmint ~]# ./Additions.sh
“Enter the First Number: ”
12
“Enter the Second Number: ”
13
12 + 13 = 25
Scarica Addizioni.sh
Script 2: Sottrazione
#!/bin/bash
echo “Enter the First Number: ”
read a
echo “Enter the Second Number: ”
read b
x=$(($a - $b))
echo $a - $b = $x
Nota: qui abbiamo sostituito expr e abbiamo lasciato che il calcolo matematico venisse eseguito nella shell.
Uscita del campione
[root@tecmint ~]# vi Substraction.sh
[root@tecmint ~]# chmod 755 Substraction.sh
[root@tecmint ~]# ./Substraction.sh
“Enter the First Number: ”
13
“Enter the Second Number: ”
20
13 - 20 = -7
Scarica Substraction.sh
Copione 3: Moltiplicazione
Finora ti divertirai moltissimo, imparando gli script in un modo così semplice, quindi il prossimo in ordine cronologico è la Moltiplicazione.
#!/bin/bash
echo “Enter the First Number: ”
read a
echo “Enter the Second Number: ”
read b
echo "$a * $b = $(expr $a \* $b)"
Nota: sì! Qui non abbiamo inserito il valore della moltiplicazione in una variabile ma lo abbiamo eseguito direttamente nell'istruzione di output.
Uscita del campione
[root@tecmint ~]# vi Multiplication.sh
[root@tecmint ~]# chmod 755 Multiplication.sh
[root@tecmint ~]# ./Multiplication.sh
“Enter the First Number: ”
11
“Enter the Second Number: ”
11
11 * 11 = 121
Scarica Multiplication.sh
Copione 4: Divisione
Giusto! Poi c'è Division, e anche in questo caso si tratta di uno script molto semplice. Controllalo tu stesso.
#!/bin/bash
echo “Enter the First Number: ”
read a
echo “Enter the Second Number: ”
read b
echo "$a / $b = $(expr $a / $b)"
Uscita del campione
[root@tecmint ~]# vi Division.sh
[root@tecmint ~]# chmod 755 Division.sh
[root@tecmint ~]# ./Division.sh
“Enter the First Number: ”
12
“Enter the Second Number: ”
3
12 / 3 = 4
Scarica Division.sh
Copione 5: tabella
Bene! Cosa succede dopo queste operazioni matematiche di base. Scriviamo uno script che stampi una tabella con qualsiasi numero.
#!/bin/bash
echo “Enter The Number upto which you want to Print Table: ”
read n
i=1
while [ $i -ne 10 ]
do
i=$(expr $i + 1)
table=$(expr $i \* $n)
echo $table
done
Uscita del campione
[root@tecmint ~]# vi Table.sh
[root@tecmint ~]# chmod 755 Table.sh
[root@tecmint ~]# ./Table.sh
“Enter The Number upto which you want to Print Table: ”
29
58
87
116
145
174
203
232
261
290
Scarica Table.sh
Copione 6: PariDispari
Da bambini abbiamo sempre fatto dei calcoli per sapere se il numero era pari o dispari. Non sarebbe una buona idea implementarlo nello script.
#!/bin/bash
echo "Enter The Number"
read n
num=$(expr $n % 2)
if [ $num -eq 0 ]
then
echo "is a Even Number"
else
echo "is a Odd Number"
fi
Uscita del campione
[root@tecmint ~]# vi EvenOdd.sh
[root@tecmint ~]# chmod 755 EvenOdd.sh
[root@tecmint ~]# ./EvenOdd.sh
Enter The Number
12
is a Even Number
[root@tecmint ~]# ./EvenOdd.sh
Enter The Number
11
is a Odd Number
Scarica EvenOdd.sh
Copione 7: Fattoriale
Il prossimo è trovare il Fattoriale.
#!/bin/bash
echo "Enter The Number"
read a
fact=1
while [ $a -ne 0 ]
do
fact=$(expr $fact \* $a)
a=$(expr $a - 1)
done
echo $fact
Uscita del campione
[root@tecmint ~]# vi Factorial.sh
[root@tecmint ~]# chmod 755 Factorial.sh
[root@tecmint ~]# ./Factorial.sh
Enter The Number
12
479001600
Ora puoi rilassarti con la sensazione che calcolare 12*11*10*9*7*7*6*5*4*3*2*1 sarebbe più difficile di un semplice script come quello prodotto sopra . Pensa alla situazione in cui hai bisogno di trovare 99! o qualcosa del genere. Sicuro! Questo script sarà molto utile in quella situazione.
Scarica Factorial.sh
Copione 8: Armstrong
Numero Armstrong! Ohhh Hai dimenticato cos'è un numero Armstrong. Ebbene un numero Armstrong di tre cifre è un numero intero tale che la somma dei cubi delle sue cifre è uguale al numero stesso. Ad esempio, 371 è un numero Armstrong poiché 3**3 + 7**3 + 1**3=371.
#!/bin/bash
echo "Enter A Number"
read n
arm=0
temp=$n
while [ $n -ne 0 ]
do
r=$(expr $n % 10)
arm=$(expr $arm + $r \* $r \* $r)
n=$(expr $n / 10)
done
echo $arm
if [ $arm -eq $temp ]
then
echo "Armstrong"
else
echo "Not Armstrong"
fi
Uscita del campione
[root@tecmint ~]# vi Armstrong.sh
[root@tecmint ~]# chmod 755 Armstrong.sh
[root@tecmint ~]# ./Armstrong.sh
Enter A Number
371
371
Armstrong
[root@tecmint ~]# ./Armstrong.sh
Enter A Number
123
36
Not Armstrong
Scarica Armstrong.sh
Copione 9: Primo
L'ultimo script serve a distinguere se un numero è primo o meno.
#!/bin/bash
echo “Enter Any Number”
read n
i=1
c=1
while [ $i -le $n ]
do
i=$(expr $i + 1)
r=$(expr $n % $i)
if [ $r -eq 0 ]
then
c=$(expr $c + 1)
fi
done
if [ $c -eq 2 ]
then
echo “Prime”
else
echo “Not Prime”
fi
Uscita del campione
[root@tecmint ~]# vi Prime.sh
[root@tecmint ~]# chmod 755 Prime.sh
[root@tecmint ~]# ./Prime.sh
“Enter Any Number”
12
“Not Prime”
Scarica Prime.sh
È tutto per ora. Nel nostro prossimo articolo tratteremo altri programmi matematici nel linguaggio di programmazione Shell Scripting. Non dimenticare di menzionare le tue opinioni sull'articolo nella sezione Commenti. Metti mi piace, condividici e aiutaci a diffondere. Vieni a visitare linux-console.net per Notizie e articoli relativi a FOSS. Fino ad allora, restate sintonizzati.