Fala jovens garotos.., e garotas é claro. ‘:) Vamos dar continuidade a postagem que comecei a duas postagens atrás que foi sobre tomada de decisão. Bom, não será bem uma continuação, pois na oportunidade falamos sobre a função IF, agora, falaremos de uma função que tem a mesma semelhança de tomada de decisão. Imagine uma função que por meio da entrada de numero inteiro o programa ira fazer um comando e tomar um rumo. A função CASE funciona exatamente assim. Ai você vai pensar: “Brother.., a função IF não faz a mesma coisa” e eu lhe respondo jovens.. “Não.., não faz.”
Olha só jovem.. Que.. Quee... trampoo de fazer tudo isso. O programa funciona perfeitamente claro.. Mas olha o quanto confuso ele fica. É begin .. depois end; ai vem else .. depois outro begin já abrindo outro IF dentro depois abrindo Begin de novo.. e assim vai indo.. conforme o código acima.
Entendeu a sacada. Se qualquer outro numero diferente de 1, 2 ou 3 entrar nesse exemplo de IF ele irá fazer a operação de divisão. Claro q da para corrigir isso. Com laços de repetição que fazem o programa voltar caso o usuário não digite nenhuma das opções desejadas, mas isso é assunto para outra postagem mais breve ;) .
Em termos a função IF toma uma decisão e escolhe o seu rumo conforme a sua resposta, o programa continua de duas formas, ou segue o caminho de forma verdadeira ou segue de forma falsa. Claro que existem formas de encadear uma função IF com a outra. Fazendo assim um numero de funções if’s para chegar a um determinado ponto do programa, no qual, o seu resultado é obtido.
A função case não funciona exatamente assim. Ela nos traz a facilidade de montar e até mesmo organizar a sua linguagem de programação. (Claro jovem, tudo isto dependendo da ocasião). A função CASE não realiza nenhum teste lógico por parâmetros igual IF e sim realiza testes por comandos. Si ela achar uma entrada de um comando igual ao que esta declarado dentro da função ela vai fazer com que apenas essa parte do programa seja executada, logo em seguida vai continuar com a o programa que esta fora da função CASE. O legal é que com ela podemos fazer o programa tomar um rumo simples ou mesmo um rumo mais complexo,isso irá depender da sua necessidade e de como vai usá-la. Dizem que uma imagem vale mais do que mil palavras..
Esse é um exemplo de fluxograma para a função CASE. Existem outros exemplos de fluxo, mas como nosso foco aqui é mão na massa na programação, vamos explicar melhor abaixo como a função funciona na sintaxe. Tentarei ser o mais breve possível, porém ela precisa de mais atenção que a função IF, então acomodasse na sua poltrona com o notebook, na sua cadeira com em frente ao seu pc ou no travesseiro que você jogou no chão gelado porque sua mãe ta lavando o tapete da sala para ler no seu tablet e venha programar. (y)’
Analisem a situação:
- Vamos montar um programinha que faça diversos cálculos a partir de dois números que você entrar. Digamos que é algo como uma calculadora. Você terá que apresentar um cardápio contendo operações de soma, subtração, multiplicação e divisão.
Com a função IF que é a que conhecemos até agora, ele ficaria assim:
Program calculadora ;
var
a,b,res:real; // declaração da variável dos dois números
op:integer; // declaração da variável da operação
Begin // inicio do programa
writeln ('Digite o primeiro numero');
readln(a);
writeln('Digite o segundo numero');
readln(b);
clrscr; //comando para apagar as informações acima
writeln('Digite o numero correspondente a operações abaixo. O que você quer fazer?');
writeln(' ');
writeln('1-Você quer somar'); // aqui esta o cardápio
writeln('2-Você quer subtrair');
writeln('3-Você quer multiplicar');
writeln('4-Você quer dividir'); // terminando aqui o cardápio
readln(op); // entrada da variável da operação
res:=0; //resultado entra como valor zerado antes do processamento
{Daqui para baixo começa o processamento para a operação para que o usuário escolher.
É justamente ai jovem que começa toda a MER@#$#! na maioria das vezes. Olha a confusão a seguir}
if (op=1) then // decisão para operação de soma
begin // inicio da decisão de soma
res:=a+b;
end //fim da decisão de soma
else // se não for soma
begin //inicio da decisão se não for soma
if (op=2) then // inicio da decisão de subtração
begin //inicio da decisão de subtração
res:=a-b;
end //fim da decisão de subtração
else // se não for subtração
begin //inicio da decisão se não for subtração
if (op=3) then // inicio da decisão de multiplicação
begin //inicio da decisão de multiplicação
res:=a*b;
end //fim da decisão de multiplicação
else //se não for multiplicação pela logica de if só pode ser divisão então ...
begin //inicio da decisão de divisão
res:=a/b;
end; //fim da decisão de divisão
end; // fim da decisão de subtração
end; // fim da decisão de soma
{Fim do processamento da operação escolhida}
writeln('O resultado da operação é ',res:5:2); // mostrando o resultado final.
End.
|
Olha só jovem.. Que.. Quee... trampoo de fazer tudo isso. O programa funciona perfeitamente claro.. Mas olha o quanto confuso ele fica. É begin .. depois end; ai vem else .. depois outro begin já abrindo outro IF dentro depois abrindo Begin de novo.. e assim vai indo.. conforme o código acima.
Percebe.. Por mais bom que você seja e por mais que isso funcione , uma hora você vai acabar se enrolado.. fechando um end antes da hora, enfim.
Olha só como que fica mais simples se usarmos a função CASE:
Program calculadora ;
var
a,b,res:real;// declaração da variável dos dois números
op:integer;// declaração da variável da operação
Begin
writeln ('Digite o primeiro numero');
readln(a);
writeln('Digite o segundo numero');
readln(b);
clrscr; //comando para apagar as informações acima
writeln('Digite o numero correspondente a operações abaixo. O que voc quer fazer?');
writeln(' ');
writeln('1-VocÊ quer somar');
writeln('2-Você quer subtrair');
writeln('3-VocÊ quer multiplicar');
writeln('4-Você quer dividir');
readln(op);// entrada da variável da operação
res:=0; //resultado entra como valor zerado antes do processamento
{Notem a facilidade abaixo jovem}
Case op of // CASO op (operação) for // INICIO do CASE
1:begin {inicio caso o usuário digitar 1}
res:=a+b;
end; {fim caso o usuário digitar 1}
2:begin {inicio caso o usuário digitar 2}
res:=a-b;
end; {fim caso o usuário digitar 2}
3:begin {inicio caso o usuário digitar 3}
res:=a*b;
end; {fim caso o usuário digitar 3}
4:begin {inicio caso o usuário digitar 4}
res:=a/b;
end; {fim caso o usuário digitar 4}
end; // FIM do CASE {é extremamente importante de fechar o CASE nesse caso não precisamos colocar begin}
writeln('O resultado da operação escolhida é ',res:5:2); // mostrar o resultado
End.
|
Putz.. Sensacional hein. Funciona da mesma forma que o IF, mas notem como fica mais simples montar o programa.., entender a lógica..
Não existe um limite para o numero de coisas que deseja fazer com a função.. nesse meu exemplo usei apenas 4, mas poderia ser usada 5, 10, 20 .. depende da sua necessidade... e da sua paciência é claro. Kkkk
É importante ressaltar que a função só funciona com a entrada de um numero inteiro para a condição. Pois só assim o programa vai identificar a qual rumo ele deve tomar. Caso nenhuma das operações for escolhida o programa não ira executar nenhum dos cases e vai continuar com o programa normalmente. Nesse exemplo de Case que coloquei se colocar um numero diferente de 1, 2, 3 e 4 o programa irá mostrar um resultado zerado no final.. pois, declarei que res (resultado) recebe zero antes de processar o programa. Agora se no na função IF voc fizer isso nesse exemplo que coloquei advinha o que ele irá fazer..
Siiiiiiim jovem. Ele vai dividir. Justamente por conta dessa simples parte:
if (op=3) then // inicio da decisão de multiplicação
begin //inicio da decisão de multiplicação
res:=a*b;
end //fim da decisão de multiplicação
else //se não for multiplicação pela lógica de if só pode ser divisão então ...
begin //inicio da decisão de divisão
res:=a/b;
end; //fim da decisão de divisão
|
Entendeu a sacada. Se qualquer outro numero diferente de 1, 2 ou 3 entrar nesse exemplo de IF ele irá fazer a operação de divisão. Claro q da para corrigir isso. Com laços de repetição que fazem o programa voltar caso o usuário não digite nenhuma das opções desejadas, mas isso é assunto para outra postagem mais breve ;) .
Bom galera, espero que tenham gostado da leitura. Tentei explicar ao máximo como que funciona a função CASE é quais as suas diferenças entre IF. Gostou seja um de nossos membros e curtam a nossa fanpage do Facebook. Lá você pode ver quando postamos algo de novo aqui no blog e temos alguns desafios legais para resolver. Tudo isso jovem ajuda na divulgação e na valorização do nosso trabalho. Certo.. Da uma brincada com os programas acima, façam o download do CASE e o download de IF. Ok, Valew, até mais!
Nenhum comentário:
Postar um comentário
Os comentários feitos no Compiler são moderados. Antes de escrever, observe as regras e seja criterioso ao expressar sua opinião. Não serão publicados comentários nas seguintes situações:
1. Sem o remetente identificado com nome (Não serão aceitos anônimos).
2. Que não tenham relação clara com o conteúdo noticiado (Principalmente o First).
3. Que tenham teor calunioso, difamatório, injurioso, racista, de incitação à violência ou a qualquer ilegalidade.
4. Que tenham conteúdo que possa ser interpretado como de caráter preconceituoso ou discriminatório a pessoa ou grupo de pessoas.
5. Que contenham linguagem grosseira, obscena e/ou pornográfica.
6. Que transpareçam cunho comercial ou ainda que sejam pertencentes a correntes de qualquer espécie.
7. Que tenham característica de prática de spam.
O Compiler.Pas não se responsabiliza pelos comentários dos internautas e se reserva o direito de, a qualquer tempo, e a seu exclusivo critério, retirar qualquer comentário que possa ser considerado contrário às regras definidas acima