Pesquisa de site

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:

  1. Entenda o Linux Shell e o Basic Shell Scripting – Parte I
  2. 5 Shell Scripts para Aprender Programação Shell – Parte II
  3. 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.