Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
Cursos / Eletrônica / Projeto de Sistemas Microcontrolados / Aula
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.
O comando break é utilizado para finalizar a execução de um laço (for, while, ou do while) ou de um comando switch.
Exemplo
int cont = 0; // Declara uma variável do tipo int com atribuição de valor.
while(1) //Looping infinito
{
if (cont == 5)
{ break; } // Força a saída do laço while.
cont++;
}
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.
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
#include <stdio.h> //Adiciona a biblioteca padrão de I/O.
void main( ) // Função principal
{
unsigned int cont = 0; /* Declara uma variável do tipo unsigned char (8 bits) com atribuição de valor.*/
for (cont=0; cont< 6; cont++)
{
if (cont == 4)
{ continue; } //Pula para a próxima iteração
printf (“\nteste”);
}
}
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.
Esse comando força o desvio do controle para um determinado ponto dentro da função, identificado pelo rótulo.
Sintaxe
goto rótulo;
…
rótulo: // Um identificador deve vir acompanhado de ‘ : ’
…
Exemplo
int cont; // Declara uma variável do tipo int.
for (cont=0; cont< 6; cont++)
{
if (cont == 4)
{ goto fim; } // Desvia o contador para o rótulo fim.
}
fim:
// 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.
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
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
long operação (int num_opcao, int a, int b) // Função secundária
{
switch (num_opcao)
{
case 1: return (a + b); // Retorna o resultado da soma dos elementos a e b.
case 2: return (a - b); // Retorna o resultado da subtração dos elementos a e b.
case 3: return (a * b); // Retorna o resultado da multiplicação dos elementos.
case 4: return (a / b); // Retorna o resultado da divisão dos elementos a e b.
default: return 0; // Retorna 0.
}
}
void main( ) // Função principal.
{
unsigned char x = 50, y = 10; /* Declara duas variáveis do tipo unsigned char com atribuição de valor.*/
long resultado = 0; // Declara uma variável do tipo long.
// Suponha que as opções são: 1-soma, 2-subtração, 3-multiplicação, 4-divisão.
resultado = operação(1, x, y);
resultado = operação(2, x, y);
resultado = operação(3, x, y);
resultado= operação(4, x, y);
}
Versão 5.3 - Todos os Direitos reservados