Aspecto matemático da programação Linux Shell - Parte IV
Neste post irei discutir os scripts do ponto de vista Matemático e Número. Embora eu tenha postado um script mais complexo (Calculadora Simples) no post anterior, mas por parte do usuário era difícil de entender e por isso pensei em fazer com que vocês aprendessem o outro lado útil do aprendizado em pequenos pacotes.
Antes deste artigo, três artigos da Shell Scripting Series foram publicados e são eles:
- Entenda o Linux Shell e o Basic Shell Scripting – Parte I
- 5 Shell Scripts para Aprender Programação Shell – Parte II
- Navegando pelo mundo dos scripts BASH do Linux – Parte III
Vamos começar o processo de aprendizagem com alguns novos scripts interessantes, começando com scripts de Matemática:
Roteiro 1: Adições
Crie um arquivo “Addition.sh” e chmod 755 para o script conforme descrito na postagem anterior e execute-o.
#!/bin/bash
echo “Enter the First Number: ”
read a
echo “Enter the Second Number: ”
read b
x=$(expr "$a" + "$b")
echo $a + $b = $x
Saída de amostra
[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
Baixar adições.sh
Roteiro 2: Subtração
#!/bin/bash
echo “Enter the First Number: ”
read a
echo “Enter the Second Number: ”
read b
x=$(($a - $b))
echo $a - $b = $x
Nota: Aqui substituímos o expr e deixamos o cálculo matemático ser realizado no shell.
Saída de amostra
[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
Baixe Substração.sh
Roteiro 3: Multiplicação
Até agora você estaria gostando muito de aprender scripts de uma maneira tão fácil, então o próximo em ordem cronológica é Multiplicação.
#!/bin/bash
echo “Enter the First Number: ”
read a
echo “Enter the Second Number: ”
read b
echo "$a * $b = $(expr $a \* $b)"
Nota: Sim! Aqui não colocamos o valor da multiplicação em uma variável, mas a realizamos diretamente na instrução de saída.
Saída de amostra
[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
Baixe Multiplicação.sh
Roteiro 4: Divisão
Certo! O próximo é Division, e novamente é um script muito simples. Verifique você mesmo.
#!/bin/bash
echo “Enter the First Number: ”
read a
echo “Enter the Second Number: ”
read b
echo "$a / $b = $(expr $a / $b)"
Saída de amostra
[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
Baixar Divisão.sh
Roteiro 5: Tabela
Multar! O que acontece depois dessas operações matemáticas básicas. Vamos escrever um script que imprima uma tabela de qualquer número.
#!/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
Saída de amostra
[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
Baixar tabela.sh
Script 6: EvenOdd
Quando crianças, sempre fizemos cálculos para saber se o número é ímpar ou par. Não seria uma boa ideia implementá-lo em 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
Saída de amostra
[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
Baixe EvenOdd.sh
Roteiro 7: Fatorial
O próximo passo é encontrar o Fatorial.
#!/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
Saída de amostra
[root@tecmint ~]# vi Factorial.sh
[root@tecmint ~]# chmod 755 Factorial.sh
[root@tecmint ~]# ./Factorial.sh
Enter The Number
12
479001600
Agora você pode relaxar com a sensação de que calcular 12*11*10*9*7*7*6*5*4*3*2*1 seria mais difícil do que um script simples como o produzido acima . Pense na situação em que você precisa encontrar 99! ou algo parecido. Claro! Este script será muito útil nessa situação.
Baixar Factorial.sh
Roteiro 8: Armstrong
Número Armstrong! Ohhh Você esqueceu o que é um Número de Armstrong. Bem, um número Armstrong de três dígitos é um número inteiro tal que a soma dos cubos de seus dígitos é igual ao próprio número. Por exemplo, 371 é um número de Armstrong, pois 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
Saída de amostra
[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
Baixar Armstrong.sh
Roteiro 9: Prime
O último script serve para distinguir se um número é primo ou não.
#!/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
Saída de amostra
[root@tecmint ~]# vi Prime.sh
[root@tecmint ~]# chmod 755 Prime.sh
[root@tecmint ~]# ./Prime.sh
“Enter Any Number”
12
“Not Prime”
Baixe Prime.sh
É tudo por agora. Em nosso próximo artigo iremos cobrir outros programas matemáticos na linguagem de programação Shell Scripting. Não se esqueça de mencionar sua opinião sobre o artigo na seção de comentários. Curta e compartilhe conosco e nos ajude a divulgar. Visite linux-console.net para notícias e artigos relacionados a FOSS. Até então, fique ligado.