Diferenças entre edições de "As condições switch"
(→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.