Convertendo escalas termométricas

Publicado por Sandro Marcell 19/07/2007

[ Hits: 7.180 ]

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

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

Compactando / descompactando arquivos (Melhorado)

Simples relógio digital

Simples visualizador de arquivos texto

Gerando senhas aleatórias


  

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