Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Elgio Schlemer em 07/03/2009    [ 7486 hits ]

Login: elgio, 2671892 pontos

Homepage: http://gravatai.ulbra.tche.br/~elgio   


Descrição

Como calcular raiz quadrada em bash? Algumas linguagens tem o sqrt, mas o bash como poderia ser.

[ Download: raiz.sh ]   [ Enviar nova versão ]

[ Esconder código-fonte ]

#!/bin/bash

# Comentarios: muitas linguagens tem o operador de raiz quadrada ou uma funcao
# implementada que a realiza. Normalmente esta funcao recebe o nome de sqrt
# pyton e pearl tem este operador

# Em linux pode-se usar as calculadoras dc para ter o mesmo efeito:
#
# echo "144 v p"|dc
#
# mas digamos que isto nao tem graca, pois se usou um comando externo, o dc,
# que foi feito em C. Legal mesmo eh o calculo em bash puro
# Para isto teria-se que usar a calculadora interna do bash, invocada por
# $(( ... ))
#
# a funcao matematica que se segue eh muito usada e pode ser refinada. Quanto
# mais passos, mas se aproxima-se do valor
#
# Para usar, chame ./raiz.sh N
# onde N eh o numero da raiz quadrada (podem passar varios valores, como
# ./raiz 144 445 56 67
#

MAX=50  # Numero maximo de iteracoes que se faz.

for N in $*
do      
   I=0
   R=$(( $N / 2))
   while (( $I < $MAX ))
   do
      I=$(( $I + 1))
      ANT=$R
      R=$(( ($N/$R + $R) / 2 ))
      if [ $ANT == $R ]
      then
         break
      fi
   done
   echo Raiz quadrada de $N eh $R
done

# este codigo retorna apenas a parte INTEIRA da raiz quadrada pois a
# calculadora do bash nao trabalha com pontos flutuantes. Para ter
# casas decimais teria que usar o bc ou dc, e ai perderia a graca

Scripts recomendados
   Script Linux recomendado script para criar Maildir
   Script Linux recomendado Cadastro de usuarios para proxy autenticado
   Script Linux recomendado Script para gravar 2 (ou 4) CDs simultaneamente
   Script Linux recomendado POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - RESTAURANDO MBOX VIA SSH
   Script Linux recomendado calculadora

Comentários
[1] Comentário enviado por SMarcell em 09/03/2009 - 09:24h:

Quanto a questão de operações com ponto flutuante, no Ksh e Zsh isso não é problema!

No ksh, operações com ponto flutuante dão um 'pouquinho' mais de trabalho:
$ LC_NUMERIC=C
$ float x=13.2 y=4.6
$ echo $((x + y))
17.8

Já no zsh:
$ echo $((13.2 + 4.6))
17.7999...

Só complementando o post... =)

---Editado---

[2] Comentário enviado por elgio em 09/03/2009 - 09:31h:

Legal!

Então em zsh e ksh tem uma solução possível só com comandos INTERNOS (no bash tem que invocar o bc ou dc, mas se é para invocar o dc, o dc TEM sqrt).

Valeu pelo aprendizado.


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.