Convertendo escalas termométricas

Publicado por Sandro Marcell 19/07/2007

[ Hits: 7.287 ]

Homepage: http://sanmarcell.wordpress.com

Download escala.tcl




Estava um dia sem nada pra fazer, aí resolvi escrever este simples script que converte escalas termométricas (Celsius, Fahrenheit e Kelvin).

Não tem muita utilidade, mas dá pra brincar...

Falou!!!

  



Esconder código-fonte

#!/usr/bin/tcl
#
# Convertendo escalas termométricas.
#
# Sandro Marcell (sandro_marcell@yahoo.com.br)
#
# Boa Vista - Roraima, 30/06/2007.

# Utilizando o script:
proc Uso {argv0} {
puts stderr "\nUso: [file tail $argv0] -c|f|k \[número\]
Onde:
-c Converte Celsius para Fahrenheit e Kelvin
-f Converte Fahrenheit para Celsius e Kelvin
-k Converte Kelvin para Celsius e Fahrenheit\n"
}

# Função que testa parâmetros:
proc Testa_prm {argv} {
   if {[llength $argv] == 0 || [llength $argv] > 1} {
   puts stderr "\n\a-> Strings com espaços não são válidas!\n"
   exit
   }
}

# Informando erro:
variable ERRO "\n\a-> Erro de entrada/saída.\n"

# Checando parâmetros:
if {$argc == 0} {
   Uso $argv0
   exit
}

# Capturando opção:
set OPC [lvarpop argv 0]

# Testando opção capturada:
switch -- $OPC {
   -c {
      # Chamando a função que testa parâmetros:
      Testa_prm $argv
      # Se não houver erros, iniciam-se os cálculos:
      if {[catch {set CF [expr $argv*9/5+32]}] != 1} {
            set CK [expr $argv*5/5+273]
         # Mostrando resultando:
         puts stdout "\n$argv\C° equivale(em) a\
         $CF\F° na escala Fahrenheit e\
         $CK\K° na escala Kelvin.\n"
         exit
      } else {
         # Se os cálculos falharem, está mensagem é mostrada:
         puts stderr $ERRO
         exit
      }
   }
   -f {
      Testa_prm $argv
      if {[catch {set FC [expr ($argv-32)/9*5]}] != 1} {
               set FK [expr ($argv-32)/9*5+273]
            puts stdout "\n$argv\F° equivale(em) a\
            $FC\C° na escala Celsius e\
            $FK\K° na escala Kelvin.\n"
            exit
         } else {
            puts stderr $ERRO
            exit
         }
      }
   -k {
      Testa_prm $argv
      if {[catch {set KC [expr ($argv-273)/5*5]}] != 1} {
            set KF [expr ($argv-273)/5*9+32]
         puts stdout "\n$argv\K° equivale(em) a\
         $KC\C° na escala Celsius e\
         $KF\F° na escala Fahrenheit.\n"
         exit
      } else {
         puts stderr $ERRO
         exit
      }
   }
   default {
      Uso $argv0
      exit
   }
}
# Fim

Scripts recomendados

Simples relógio digital

Criando uma simples lixeira para o usuário [Melhorado]

Simples visualizador de arquivos texto

Gerando senhas aleatórias

Compactando / descompactando arquivos (Melhorado)


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts