shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Novato/Dúvidas] Iniciante em shell script, calculadoras...


From: fampower
Subject: Re: [Novato/Dúvidas] Iniciante em shell script, calculadoras...
Date: Fri, 29 Apr 2011 14:33:23 -0000
User-agent: eGroups-EW/0.82

Bom dia, Julio.

Primeiro lugar é uma honra receber dicas de uma referencia em codigo aberto.

Vou estudar com calmar os comandos que passou e em breve posto aqui as 
novidades. Segue como prometido a outra versão da Calculadora Simples com uso 
de FUNCÕES.  Já tenho também uma outra com uso do GetOpts que ficou legal tbem. 

Lembrando que estou iniciando e que estou trabalhando conceitos separados e 
aplicando na calculadora e depois misturando tudo..rsrs OK

Valeu Julio e abs a todos.... 




#!/bin/bash
#
#calculadora002.sh - Realiza calculo simples -
#
######################################
#Autor: Francisco A. de Moraes       #
#Mail: address@hidden   #
#Area: DCPS - Monitoracao - Logica.  #
######################################
#
#
#
#----------------------------------------------------
#Licenca Livre - Normas GPL
#----------------------------------------------------
#
#
#----------------------------------------------------
#Descricao: O programa realiza calculo simples. (adicao, multiplicacao, 
subtracao e divisao)
#
#
#----------------------------------------------------
#Historico de Desenvolvimento:
#----------------------------------------------------
#-v1.0 - 06/04/2011 - Francisco A. de Moraes
#-Desafio Calculadora/Operadores 
#Variavel / Estrutura Logica / Pesquisa INTERNET - www.google.com.br
#
#-v1.1 - 07/04/2011 - Francisco A. de Moraes
#-Uso de Select
#
#-v1.2 - 08/04/2011 - Francisco A. de Moraes
#-Uso IF/then/else 
#-Correcao do erro divisao por zero 
#
#-v1.3 - 11/04/2011 - Francisco A. de Moraes
#-Uso de FUNCAO 
#-Uso de FUNCAO - OPERADORES 
#####################################################
################DECLARANDO FUNCAO####################
#####################################################
clear

valor1 (){ echo -n "Escreva o Primeiro Valor: "
}

valor2 (){ echo -n "Escreva o Segundo Valor: "
}

f_soma () { echo "$num1+$num2 = $[num1+num2]"
}

f_sub () { echo "$num1-$num2 = $[num1-num2]"
}
        

f_mult () { echo "$num1*$num2 = $[num1*num2]"
}

f_div () { echo "$num1/$num2 = $[num1/num2]"
}


echo " ######################### CALCULO SIMPLES ############################# "
echo "O que deseja (1)soma (2)subtrair (3)multiplicar (4)dividir (5)sair"
echo " ####################################################################### "
select opcaox in soma sub mult div sair; do
echo ""



clear



#############################################################
####################INICIO DO PROGRAMA#######################
#############################################################

case "$opcaox" in
        'soma')
        valor1
        read num1
        valor2
        read num2
        f_soma
        ;;


        'sub')                                  #Declarando select subtrair
        valor1                                  #Uso da Funcao valor1
        read num1                               #recebe dados em memoria



        valor2                                  #Uso da Funcao valor2
        read num2                               #recebe dados em memoria
        f_sub                                   #Uso da funcao subtracao
        ;;                                      #fim caso subtrair


        'mult')
        valor1
        read num1
        valor2
        read num2
        f_mult
        ;;


        'div')
        valor1
        read num1
        valor2
        read num2
                if [ $num2 -eq "0" ]            #Se valor igual a 0 - corrigir 
divisao por Zero
                then                            #Entao
                echo "impossivel dividir por zero"
                else                            #Senao
                f_div
                fi                              #Fim do if ou se
        ;;

        'sair')
        break
        ;;


        *)
        echo "opcao invalida"
        ;;

        esac
done;

--- Em address@hidden, "Julio C. Neves" <julio.neves@...> escreveu
>
> Fala Chico,
> uma sugestão para vc implementar a versão 2.0
> 
> ###########################
> Elem=$(yad --form --image gnome-calculator --text "Bem vindo a Calculadora -
> <big><b>by CHICO</b></big>" --field "Primeiro Número:" --field "Segundo
> Número:" --field "Operação:CB" 0 0 'Soma!Subtração!Multiplicação!Divisão')
> || exit 1
> ###########################
> IFS='|' read Num1 Num2 Opcao <<< "$Elem"
> ###########################
> 
> Usei as separações com jogo da velha, só para dizer que são somente duas
> linhas de código, já que o e-mail vai quebrar tudo.
> 
> Nesse ponto vc já terá as variáveis Num1 Num2 Opcao com seus valores. Isso
> significa que vc poderia trocar todo o código até o ninho de if's (que eu
> trocaria por um case) por essas 2 linhas somente.
> 
> Alguém da lista me mandou um e-mail em pvt me falando do YAD. Testei o sw e
> achei simplesmente revolucionário. Aconselho a todos o instalarem pois é um
> fork do zenity com inúmeras facilidades a mais como o diálogo --form que
> usei.
> 
> Falando em --form, poderíamos até esnobar usando SpinButtons para capturar
> os números. Basta trocar a primeira linha por:
> 
> Elem=$(yad --form --image gnome-calculator --text "Bem vindo a Calculadora -
> <big><b>by CHICO</b></big>" --field "Primeiro Número:NUM" --field "Segundo
> Número:NUM" --field "Operação:CB" '0!0..100!1'
> '0!0..100!1''Soma!Subtração!Multiplicação!Divisão') || exit 1
> 
> Se vcs instalarem, vão se surpreender inclusive com a qualidade da
> apresentação. Já mandei um artigo para o Cantinho do Shell das dicas-l mas
> não sei se foi publicado. se não foi, em breve o será.
> 
> Estou com mais um livro pronto e, entre outros temas, abordo o YAD, sobre o
> qual escrevi mais de 70 páginas A4 de forma a explorar todos os seus
> recursos.
> 
> OBS:
> 1 - O YAD já está com essa bola toda e ainda está na versão 0.10.1. Imagine
> o que vem por aí.
> 2 - O autor do sw é um ucraniano, Victor Ananjevsky, que já convidei a dar
> uma palestra na LatinoWare 2011.
> 
> Cordialmente,
> 
> Julio Neves
> 
> *Quer programar bem em Shell?*
> 
> *Use este endereço de e-mail, o Skype ou ☎ (21)8112-9988 ☎*
> My profiles: [image: Twitter] <http://twitter.com/juliobash>
> Contact me: [image: Skype/] julioneves1
> 
> 
> Em 28 de abril de 2011 15:07, fampower <powerfam@...> escreveu:
> 
> >
> >
> > Enilton, Boa tarde.
> >
> > Por esses dias fiz 2 calculadoras uma mais simples ou outra mais completa
> > no sentindo de uso de comandos.
> >
> > Enviando a CALCULADORA SIMPLES AGORA, e no outra mensagem vou te enviar,
> > com o tratamento da divisão de por ZERO e o uso de funçao.
> >
> > Lembrando se Copiar e COLAR devido os comentários em um editor VI, VIM,ou
> > bloco de notas que seja já fica mais limpo o codigo.
> >
> > #!/bin/bash
> > #
> > #calculadora001.sh - Calculadora Simples -
> > #
> > ######################################
> > #Autor: Francisco A. de Moraes #
> > ######################################
> > #
> > #
> > #
> > #----------------------------------------------------
> > #Licenca Livre - Normas GPL
> > #----------------------------------------------------
> > #
> > #
> > #----------------------------------------------------
> > #Descricao: O programa realiza calculo simples. (adicao, multiplicacao,
> > subtracao e divisao)
> > #----------------------------------------------------
> > #
> > #
> > #----------------------------------------------------
> > #Historico de Desenvolvimento
> > #-v1.0 - 07/04/2011 - Francisco A. de Moraes
> > # - Tratando Parametros para receber valores e operadores
> > #-v1.1 - 08/04/2011 - Francisco A. de Moraes
> > #-Corrigindo parametro e trabalhando com o IF
> > #----------------------------------------------------
> > #
> > clear
> > echo ""
> > echo "----------------------------------------------------------"
> > echo " Bem vindo a Calculadora - by CHICO "
> > echo ""
> > echo ""
> > echo ""
> > echo "----------------------------------------------------------"
> > echo
> > "##############################################################################################"
> > echo ""
> > echo " Versao 1.1a - GPL - "
> > echo ""
> > echo ""
> > echo
> > "###############################################################################################"
> > sleep 2
> >
> > echo ""
> > echo "Digite o primeiro valor: "
> > read NUM1
> > echo "Digite o segundo valor: "
> > read NUM2
> >
> > clear
> >
> > echo ""
> > echo "----------------------------------------------------------"
> > echo " Bem vindo a Calculadora - by CHICO "
> > echo "----------------------------------------------------------"
> >
> > echo "
> > 1 - SOMAR
> > 2 - SUBTRAIR
> > 3 - MULTIPLICAR
> > 4 - DIVIDIR
> > "
> >
> > echo ""
> > read OPCAO
> >
> > if [ "$OPCAO" = '1' ]
> > then
> > RESU=$((NUM1+NUM2))
> > echo "$RESU"
> >
> > elif [ "$OPCAO" = '2' ]
> > then
> > RESU=$((NUM1-NUM2))
> > echo "$RESU"
> >
> > elif [ "$OPCAO" = '3' ]
> > then
> > RESU=$((NUM1*NUM2))
> > echo "$RESU"
> >
> > elif [ "$OPCAO" = '4' ]
> > then
> > RESU=$((NUM1/NUM2))
> > echo "$RESU"
> > fi
> >
> > echo "Finalizado, deseja utilizar novamente.? [s/n]"
> > read OPCAO1
> >
> > if [ "$OPCAO1" = 's' ]
> > then
> > ./calculadora001
> > else
> > exit
> > fi
> >
> > --- Em address@hidden, "enilton1sh" <binbash.sh@>
> > escreveu
> >
> > >
> > > Hmm então terei que mudar todas as minhas calculadoras tirando a função
> > do bash e passar para o bc. rsrs
> > >
> > > Obrigado por responder. o/
> > >
> > > --- Em address@hidden, Tiago Peczenyj <tiago.peczenyj@>
> > escreveu
> > > >
> > > > Com bash suporta apenas aritmetica de inteiros. Se quiser algo alem use
> > o bc
> > > > ou o dc, inclusive eles tem boas features (como o bc que suporta
> > numeros
> > > > incrivelmente grantes).
> > > >
> > > >
> > > > 2011/3/9 enilton1sh <binbash.sh@>
> > > >
> > > > >
> > > > >
> > > > > Oi pessoal, Me chamo Enilton e sou novato na programação shell script
> > e no
> > > > > momento só sei fazer calculadoras. @_@
> > > > >
> > > > > Antes de tudo estava pesquisando no google calculadoras em shell
> > script e
> > > > > achei duas interessante no site "viva o linux", mais aqui irei falar
> > somente
> > > > > sobre uma, já que procuro nas duas a mesma resposta para o meu
> > "problema".
> > > > > obs: Nas minhas calc eu uso os parâmetros "case $opcao in ... esac",
> > "$((
> > > > > ))", para realizar as funções.
> > > > >
> > > > > Calculadora-para-eletrodomesticos : Lucas Villela Canôas
> > > > > Bom aqui ele usa um método diferente do meu usando a calculadora bc,
> > o
> > > > > ponto que quero
> > > > > chegar é que assim desse modo ele aceita "." e ",".
> > > > >
> > > > > echo "scale=3; $ptnc/1000" | bc`
> > > > >
> > > > > exemplo: echo "scale=3; 8000/1000" | bc`
> > > > > > 8,000
> > > > >
> > > > > uso: echo $((8000/1000))
> > > > > >8
> > > > >
> > > > > Tem como eu utilizar a opção "scale" junto com '$(())'?
> > > > > Logo abaixo irei postar minhas calculadoras.
> > > > > Obs.: Um script foi usado para "laçar" as calculadoras atráves da
> > escolha
> > > > > por opção, executando-as.
> > > > > Eu poderia ter criado todos em um só script, seria muito fácil e sem
> > graça
> > > > > e com pouco aprendizado.
> > > > >
> > > > > Google Doc's
> > > > > Estudo.sh: http://va.mu/Ag2
> > > > > soma.sh: http://va.mu/Ag3
> > > > > subtrair.sh: http://va.mu/Ag6
> > > > > multiplicar.sh: http://va.mu/Ag7
> > > > > dividir.sh: http://va.mu/Ag8
> > > > > expo.sh: http://va.mu/Ag9
> > > > > mult_soma.sh: http://va.mu/AhA
> > > > > %.sh: http://va.mu/AhB
> > > > >
> > > > > Não reparem em algum erro de digitação!
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Tiago B. Peczenyj
> > > > Linux User #405772
> > > >
> > > > http://pacman.blog.br
> > > >
> > > >
> > > > [As partes desta mensagem que não continham texto foram removidas]
> > > >
> > >
> >
> >  
> >
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]