Curso C – Aula 10

Por Guilherme Farias em 13 de março de 2012

Nesta décima aula vamos conhecer mais estruturas de controle de fluxo, esse nome pode não ser familiar, mas vocês já utilizaram alguns comandos dessa estrutura.

Se não houvesse estruturas de controle de fluxo o seu algoritmo seria executado comando por comando de cima pra baixo, é por isso que elas são importantes, pois permitem repetir códigos, pular para outra parte ou até
mesmo fazer comparações.

As estruturas são:

  • if, else if, else (já vimos)
  • for, while, do while (já vimos)
  • switch, goto e break (vamos ver agora!)

OBS: As estruturas que vamos ver nesta aula, podem ser substituídas pelas que vimos anteriormente, o switch e goto podem ser bem uteís em situações especificas, mas não são tão importantes.

Switch

O comando switch é bem parecido com o if, ele basicamente gera as condições, “se for esse, faça isso”, veja o exemplo a seguir.

int questao;
printf ("Qual foi a questao da prova que voce achou mais facil");
scanf ("%i",&questao);
switch (questao){
 
case 1: /* caso for 1, execute o codigo abaixo */
    printf ("\nA questao numero 1 foi de matematica\n");
    break; /* pare de execurar */
 
case 2: /* caso for 2, execute o codigo abaixo */
    printf ("\nA questao numero 2 foi de fisica\n");
    break; /* pare de execurar */
 
case 3:
    printf ("\nA questao numero 3 foi de biologia\n");
    break;
 
case 4:
    printf ("\nA questao numero 4 foi de quimica\n");
    break;
 
case 5:
    printf ("\nA questao numero 5 foi de geografia\n");
    break;
       
default: /* se nao for nenhum deles, execute o codigo abaixo */
    printf ("\nEssa questao nao existe\n");
}

comando switch

Note que o switch é mais especifico que o if, e não aceita expressões do tipo “maior que x”, o switch trabalha apenas com constantes, “caso seja 1, mostre isso”, além disso há o “default”, que será executado caso a variável
não corresponda a nenhuma das constantes.

Outra diferença entre o switch e o if, é que no switch há o comando “break” para cancelar a execução do código.
OBS: o ‘default’ não tem ‘break’ porque depois dele já há o ‘}’ para encerrar a execução.

go to

O goto serve como um marcador, ele vai marcar uma parte do código para pular para ela quando for necessário. O goto não é muito utilizado e nem é muito recomendado, ele pode ser substituindo por outros comandos, mas como ele se trata de uma estrutura de controle de fluxo vamos aprender como ele funciona.

Como declarar:

nome-do marcador:

    goto nome-do-marcador;

Exemplo:

int idade;
COMECO:
printf("Qual sua idade?\n");
printf("Digite um valor de 1 a 100\n");
scanf("%i", &idade);

if(idade > 100 || idade < 1){
    goto COMECO;
}
printf("Voce tem %i anos", idade);

Note que uma das primeiras linhas do nosso programa está marcada com o rotulo "COMECO:", depois o código é executado e o programa pede para o usuário digitar a idade, que tem que ser entre 1 e 100, se a idade digitada não for entre 1 e 100, ele entrará no if que tem o comando "goto COMECO;" o que significa que a execução do código voltará para a linha "COMECO:".
O goto serve apenas para pular para outro parte do código, "vá para".

comando GO TO


Exercício:

1) Faça uma calculadora básica, que recebe dois numero e depois pergunte qual operação o usuário deseja fazer: somar, subtrair, dividir ou multiplicar. O usuário deve escolher e o programa deve ir para a opção escolhida usando o comando GOTO.
2) Faça o mesmo programa da questão anterior, só que desta vez usando o switch.

Veja também:
Aula 01
Aula 02
Aula 03
Aula 04
Aula 05
Aula 06
Aula 07
Aula 08
Aula 09
Aula 10

1 comentário

  • Raphael Telatim disse:

    Ae, maravilha \o/
    Só uma sugestão: você poderia fazer uma aula sobre máscaras?
    Eu perdi essa aula no dia que o professor passou. Se você puder me ajudar com isso eu ficaria muuuuuuito agradecido :D
    No mais, suas aulas continuam sempre melhorando, parabéns e continue assim.

Deixe uma resposta

O seu endereço de email não será publicado

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>