Diferenças entre edições de "As condições switch"

De GNU Octave
Ir para: navegação, pesquisa
(Exercício)
(Solução com IF)
Linha 25: Linha 25:
 
   disp("Nao existe nenhuma base correspondente");
 
   disp("Nao existe nenhuma base correspondente");
 
endif
 
endif
 +
</syntaxhighlight>
 +
 +
==== Solução com SWITCH ====
 +
 +
<syntaxhighlight>
 +
# dada a primeira letra de uma base, apresenta o nome correspondente
 +
# as bases possiveis sao:
 +
# Adenina, Citosina, Guanina e Timina
 +
letra = input("Indique a letra da base [ACGT]?", "s");
 +
letraminuscula = lower(letra);
 +
switch letraminuscula
 +
  case "a"
 +
    disp("Adenina");
 +
  case "c"
 +
    disp("Citosina");
 +
  case "g"
 +
    disp("Guanina");
 +
  case "t"
 +
    disp("Timina");           
 +
  otherwise
 +
    disp("Nao existe nenhuma base correspondente");
 +
endswitch
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Revisão das 11h56min de 13 de novembro de 2013

A estrutura switch ... endswitch é uma alternativa ao if ... else ... endif, mais prática para quando um valor pode assumir diversos valores.

Exercício

Uma sequência de DNA é uma série de letras representando a estrutura primária de uma molécula ou cadeia de DNA. As letras possíveis são A, C, G e T que representam as bases nitrogenadas Adenina, Citosina, Guanina e Timina.

Escreva um programa que, dada uma letra, diga qual a base correspondente. Por exemplo, se for indicada a letra 't', deve responder 'timina'.

Solução com IF

# dada a primeira letra de uma base, apresenta o nome correspondente
# as bases possiveis sao:
# Adenina, Citosina, Guanina e Timina
letra = input("Indique a letra da base [ACGT]?", "s");
if (letra == "a")
  disp("Adenina");
elseif (letra == "c")
  disp("Citosina");
elseif (letra == "g")
  disp("Guanina");
elseif (letra == "t")
  disp("Timina");
else
  disp("Nao existe nenhuma base correspondente");
endif

Solução com SWITCH

# dada a primeira letra de uma base, apresenta o nome correspondente
# as bases possiveis sao:
# Adenina, Citosina, Guanina e Timina
letra = input("Indique a letra da base [ACGT]?", "s");
letraminuscula = lower(letra);
switch letraminuscula
  case "a"
    disp("Adenina");
  case "c"
    disp("Citosina");
  case "g"
    disp("Guanina");
  case "t"
    disp("Timina");             
  otherwise
    disp("Nao existe nenhuma base correspondente");
endswitch

Exercício

Escreva um programa que, dada uma distância em metros, e dada uma unidade, apresenta a distância nessa unidade. Ou seja, data uma distância em metros, o utilizador pode pedir para que a mesma distância seja apresentada noutra unidade.

Por exemplo, considere os seguintes dados e o respetivo resultado:

Dados
distância 560 (m)
unidade km
Total
distância 0,56 (km)
# convertemetros.m
# script octave
# lê uma distância em metros e converte para um múltiplo ou submúltiplo
distancia = input("Qual a distância em metros?\n");
opcao = menu("Indique a unidade pretendida", "Quilómetro","Hectómetro", "Decâmetro" , "Decímetro" , "Centímetro" , "Milímetro");
switch (opcao)
  case 1
    fator = 0.001;
  case 2
    fator = 0.01;
  case 3
    fator = 0.1;
  case 4
    fator = 10;
  case 5
    fator = 100;
  case 6
    fator = 1000;
endswitch
resultado=distancia*fator;
disp(resultado);


Exercício

Escreva um programa que lê um determinado valor em Euros. Depois, permita que o mesmo possa ser convertido para dólares americanos, libras esterlinas, francos suíços ou coroas norueguesas.