Cursos / Eletrônica / Projeto de Sistemas Microcontrolados / Aula

arrow_back Aula 07 - Fundamentos de Linguagem C – Parte II

Comandos de desvio

A linguagem C dispõe de comandos que permitem o desvio incondicional do programa, ou seja, por meio desses comandos é possível sair de um laço ou de um comando de seleção a qualquer momento, ignorando as expressões condicionais. Os comandos de desvio presentes nos compiladores CCS e C18 são break, continue, goto e return.

 

Comando break

O comando break é utilizado para finalizar a execução de um laço (for, while, ou do while) ou de um comando switch.

Exemplo

AخA
1
int cont = 0;    // Declara uma variável do tipo int com atribuição de valor.
2
while(1)         //Looping infinito
3
{
4
    if (cont == 5)
5
        { break; }       // Força a saída do laço while.      
6
    cont++;
7
}

No trecho de código acima, se observa que o laço while é realizado enquanto o valor da variável cont for diferente de 5, pois, em seu corpo de programa, há um comando if, cuja expressão é verdadeira, quando o valor da variável cont for igual a 5. Então, a instrução break executa a saída do laço.

 

Comando continue

O comando continue é muito semelhante ao comando break. A diferença é que o comando continue força a execução da próxima iteração de um laço (for, while e do while) em vez de forçar a saída do laço. Toda vez que esse comando for utilizado, as instruções abaixo dele são ignoradas e uma nova iteração é iniciada.

Exemplo

11
1
#include <stdio.h> //Adiciona a biblioteca padrão de I/O.
2
void main( ) // Função principal
3
{
4
    unsigned int cont = 0; /* Declara uma variável do tipo unsigned char (8 bits) com atribuição de valor.*/
5
        for (cont=0; cont< 6; cont++)
6
        {
7
            if (cont == 4)
8
                { continue; }     //Pula para a próxima iteração      
9
                printf (“\nteste”);
10
           }
11
}

O laço for envia a string teste pela stream de saída, exceto quando a variável cont for igual a 4 ou maior que 5. No momento em que a variável cont for igual a 4, a condição if será verdadeira e a instrução continue será executada, dessa forma, o controlador salta a função printf( ) e uma nova iteração é iniciada.

 

Comando goto

Esse comando força o desvio do controle para um determinado ponto dentro da função, identificado pelo rótulo.

Sintaxe

4
1
goto rótulo;  
2
    
3
rótulo:                        // Um identificador deve vir acompanhado de ‘ : ’ 
4
    

Exemplo

8
1
int cont;          // Declara uma variável do tipo int.
2
for (cont=0; cont< 6; cont++)   
3
{
4
    if (cont == 4)
5
    { goto fim; } // Desvia o contador para o rótulo fim.      
6
}
7
fim:
8
// Ponto de comandos relacionados ao rótulo fim.

Após a execução do laço for, a variável cont passa a ser incrementada a cada iteração. Ao atingir um valor 4, a condição if passa a ser verdadeira e o comando goto desvia o contador para a posição do rótulo indicado (fim), e o programa continua a ser executado a partir desse ponto.

 

Comando return

Esse comando retorna o valor de uma função. Ele pode ser empregado em qualquer parte da função a qual foi chamada e, sempre que for executado, a função será finalizada e um valor será retornado.

Sintaxe

1
1
return expressão;

Um ponto importante que deve ser observado é que esse comando pode ser empregado com qualquer tipo de função, exceto a void, pois funções desse tipo não retornam valores.

Exemplo

x
1
long operação (int num_opcao, int a, int b) // Função secundária
2
{
3
    switch (num_opcao)
4
    {
5
        case 1: return (a + b); // Retorna o resultado da soma dos elementos a e b.
6
        case 2: return (a - b); // Retorna o resultado da subtração dos elementos a e b.
7
        case 3: return (a * b); // Retorna o resultado da multiplicação dos elementos.
8
        case 4: return (a / b); // Retorna o resultado da divisão dos elementos a e b.
9
        default: return 0; // Retorna 0.
10
    }
11
}
12
13
void main( ) // Função principal.
14
{
15
    unsigned char x = 50, y  = 10; /* Declara duas variáveis do tipo unsigned char com atribuição de valor.*/ 
16
    long resultado = 0; // Declara uma variável do tipo long.
17
    // Suponha que as opções são: 1-soma, 2-subtração, 3-multiplicação, 4-divisão.
18
    resultado = operação(1, x, y);
19
    resultado = operação(2, x, y);
20
    resultado = operação(3, x, y);
21
    resultado= operação(4, x, y);
22
}

Versão 5.3 - Todos os Direitos reservados