Algoritmos em Shell Script

Abordando de forma conceitual e prática, a construção de algoritmos através de Shell Script.

[ Hits: 48.774 ]

Por: Wagner Souza em 20/06/2014 | Blog: https://medium.com/@souzaw


Primeiros algoritmos



Para a construção de algoritmos, é muito importante a organização do código. Para este artigo, será seguido um padrão para a criação dos algoritmos, como mostrado abaixo:

#!/bim/bash
#Autor:
#Data:

A primeira linha especifica o interpretador, que é indicado pelos caracteres #!, termo conhecido como shebang. O caractere #, significa que a linha é um comentário e não deverá ser interpretada pelo shell.

Para iniciarmos o primeiro script, abra o terminal e, de acordo com a sua preferência, escolha um editor de textos para começar:

nano alg.001.sh

Dentro do editor de texto, vamos escrever nosso primeiro algoritmo. Este algoritmo terá a função de receber dois números do usuário e efetuar uma soma.

Algoritmo 001:

#!/bin/bash
#Autor: k666
#Data: 13/07/2013
#Algoritmo que recebe dois números pelo usuário e realiza a soma destes


echo "Digite o primeiro número: "
read num1
echo "Digite o segundo número: "
read num2

soma=$((num1+num2))

echo "Total: $soma"

Salve o arquivo e, em seguida, lhe atribua a permissão de execução:

sudo chmod +x alg001.sh
$ ./alg001.sh


As variáveis foram declaradas junto ao código e foram utilizadas três. O comando echo é usado para imprimir informações na tela. O read, lê o conteúdo da variável.

Abaixo, serão apresentados mais exemplos de algoritmos. Proceda da mesma forma como mostrado anteriormente, sempre criando um novo arquivo de texto e após seu término, salve-o e lhe dê permissão de execução.

Algoritmo 002:

#!/bin/bash
#Autor: k666
#Data: 13/07/2013
#Algoritmo que calcula o desconto e total do valor de uma compra


echo "Valor do produto:  "
read valp
echo "Quantidade de produtos: "
read qtd
echo "Informe o valor do desconto: "
read desc

#Cálculo do total inicial das compras
tcompra=$((valp*qtd))

#Cálculo para saber o desconto
tdesc=$((tcompra*desc/100))

#O valor final das compras será o valor total menos os descontos
total=$((tcompra-tdesc))

echo "Total das Compras: $total"

Para este exemplo foram usadas seis variáveis, separados os cálculos para ficar mais fácil o aprendizado e evitar erros no resultado final.

A grande dificuldade que muitos enfrentam em aprender lógica de programação, é oriundo de uma base fraca na matemática. Nos dois exemplos utilizados, foram postos elementos da matemática para resolução de problemas do cotidiano.

Algoritmo 003:

#!/bin/bash
#Autor: k666
#Data: 13/07/2013
#Algoritmo que recebe três notas fornecidas pelo usuário e calcula a média final

#Os valores das duas variáveis abaixo estão entre crases
#O comando date, sleep e clear fazem parte do sistema GNU/Linux
#O comando date retorna a data e hora atual do sistema. Aqui foi utilizado o comando
#date para retornar separadamente o dia (%d), mês (%m), ano (%Y) e hora (%T - time)


data=`date +%d/%m/%Y`
hora=`date +%T`

echo "Data atual: $data"
echo "Hora atual: $hora"

#$USER é uma variável pré-definida do sistema que exibe o usuário atual logado no sistema
echo "Bem-vindo usuário $USER"
#Realiza uma pausa de 3 segundos, ou mais você é que define,
#antes de executar o próximo comando

sleep 3
#Comando que serve para limpar a tela
clear

echo "Informe o nome do aluno: "
read nome
echo "Digite a primeira nota  "
read nota1
echo "Digite a segunda nota  "
read nota2
echo "Digite a terceira nota  "
read nota3

media=$(((nota1+nota2+nota3)/3))

echo "A média final do aluno $nome é: $media"

Neste último algoritmo, dei uma incrementada com comandos do sistema GNU/Linux. Essa é uma das grandes vantagens de trabalhar com Shell Script.

Fiz o comentário direto no código, isso é importante, pois, com o decorrer do tempo, você termina esquecendo a funcionalidade de um código, principalmente quando este passa a ter muitas linhas.

À medida que os algoritmos forem aumentando de complexidade, apresentarei outros comandos do GNU/Linux junto com explicações.

Algoritmo 004:

#!/bin/bash
#Autor: k666
#Data: 13/07/2013
#Algoritmo que inverte o valor das variáveis
#Este valor deve ser informado pelo usuário


echo "Digite um valor qualquer:  "
read var1
echo "Digite um outro valor qualquer: "
read var2

echo "Valores atuais das variáveis: "
echo "var1 = $var1 | var2 = $var2 "


#Será criada mais uma variável que armazenará um dos valores
#para realizar a troca


aux="$var2"
var2="$var1"
var1="$aux"

#O echo sem nenhuma informação serve para pular uma linha
echo

echo "Valores invertidos das variáveis: "
echo "var1 = $var1 | var2 = $var2 "

Algoritmo 005:

#!/bin/bash
#Autor: k666
#Data: 20/07/2013
#Algoritmo converte em graus Celsius e apresenta-a convertida
#em graus Fahrenheit. A fórmula de conversão é: F=(9*C+160) / 5,
#sendo F a temperatura em Fahrenheit e C a temperatura em Celsius.



echo "Informe a temperatura em graus Celsius:  "
read cel

fah=$((9*$cel+160))

echo "Temperatura em Fahrenheit: $fah"

Página anterior     Próxima página

Páginas do artigo
   1. Introdução / O Shell Script
   2. Variáveis / Operadores
   3. Primeiros algoritmos
   4. Estrutura de seleção
   5. Estrutura de repetição
   6. Funções
   7. Vetor (array)
Outros artigos deste autor

Teste de Intrusão com Metasploit

Montando Servidor de Internet com Ubuntu Server

Exploração de Falhas em Servidores FTP

Shell Script nosso de cada dia - Episódio 3

Atualização das provas LPIC-1, 304 e Essentials

Leitura recomendada

Shell Script para WEB

Backup automático em Shell Script

Introdução ao Fortran (parte 1)

Bitwise - Escovando os bits

Programação com Shell Script

  
Comentários
[1] Comentário enviado por di4s em 20/06/2014 - 00:36h

muito bom, parabéns

[2] Comentário enviado por jwolff em 20/06/2014 - 09:22h

obrigado por compartilhar seu conhecimento

[3] Comentário enviado por wagnerfs em 20/06/2014 - 09:38h

Obrigado pessoal pelo incentivo. Acompanhem também os exercícios práticos para LPI que semanalmente posto aqui no VOL. Em breve estarei disponibilizando novos artigos.

[4] Comentário enviado por removido em 20/06/2014 - 12:01h

Ótimo artigo!

Estou estudando Lógica de Programação e ajudou a estudar as variáveis/operadores de forma mais ampla.
VLW!

[5] Comentário enviado por danniel-lara em 20/06/2014 - 14:28h

Meus Parabéns
Muito bom o seu Artigo

[6] Comentário enviado por andregyn em 21/06/2014 - 10:26h

Muito bom!!
Parabéns pelo artigo.

[7] Comentário enviado por xerxeslins em 21/06/2014 - 10:55h

Curti. já botei nos favoritos.

[8] Comentário enviado por removido em 21/06/2014 - 15:19h

Muito bom,espalhando conhecimento!Quando eu pegar mais as manhas do linux e unix também pretendo postar umas dicas aqui.Estou estudando C e shellScript também,foi de grande ajuda.

[9] Comentário enviado por xjc em 22/06/2014 - 00:43h

Show de bola, inovou e jogou duro, parabéns

[10] Comentário enviado por removido em 24/06/2014 - 10:43h

Muito bom seu artigo! Estou iniciando em shellscript e foi de grande proveito este artigo. Escreve muito bem e a bibliografia que utilizou também é muito boa.
Poderia me dizer onde se encontra estes exercícios para a LPI?
Um grande abraço!

[11] Comentário enviado por wagnerfs em 24/06/2014 - 10:50h

Obrigado malkoonqnu. Segue o link do primeiro exercício http://www.vivaolinux.com.br/dica/Exercicio-Pratico-LPIC-01. Abaixo deste, tem o link do segundo. Toda semana estou postando novos exercícios.

[12] Comentário enviado por andregyn em 09/07/2014 - 20:26h

A variável para conversão de Celsius para Fahrenheit ficaria assim: fah=$((9*$cel/5+32))
Belo artigo.

[13] Comentário enviado por raphaellima em 24/09/2014 - 12:03h

Muito bom velho.

[14] Comentário enviado por cleciosc em 30/09/2014 - 20:48h

Excelente artigo.

Ps.: Após apresentada a formula ( F=(9*C+160) / 5 ), o calculo efetuado no script está incorreto, fah=$((9*$cel+160)). Faltou a divisão por 5, ou seja, estaria apresentando um cálculo errado no meu script.

Só foi uma observação principalmente para aqueles que estão acostumados com as teclas CTRL+C e CTRL+V.







Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts