Mudanças entre as edições de "Sumário de operadores de controle de fluxo em ANSI C"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 1: Linha 1:
 
   
 
   
Operadores de controle de fluxo em ANSI C: Ramificação e repetição. Ramificação está decidindo que ações tomar de acordo com certas condições e repetição está tratando de quantas vezes realizar determinada ação.
+
Comandos de controle de fluxo em ANSI C: Ramificação e repetição. Ramificação está decidindo que ações tomar de acordo com certas condições e repetição está tratando de quantas vezes realizar determinada ação.
  
 
=Ramificação=
 
=Ramificação=
Um ramo é chamado (executado) apenas se o programa escolher percorrê-lo através de testes lógicos. Desta forma é possível executar determinadas ações ou outras de acordo com condições que podem variar no tempo.
+
Um ramo é chamado (executado) apenas se o programa escolher percorrê-lo através de testes lógicos. Desta forma é possível executar determinadas instruções ou outras de acordo com condições que podem variar no tempo.
  
 
==operador if==
 
==operador if==
É a mais simples forma de ramificação. A expressão entre parênteses será testada, se for verdadeira um comando ou um bloco de comandos será executado. Se for falso este comando ou bloco será ignorado e o programa segue seu curso sem portanto executar certo trecho de código. Um teste é tido como verdadeiro se seu resultado é um valor diferente de zero. Abaixo dois exemplos, o primeiro executando um comando simples e outro um bloco (comandos compostos)
+
É a mais simples forma de ramificação. A expressão entre parênteses será testada, se for verdadeira uma instrução ou um bloco de instruções será executado. Se for falso esta instrução ou bloco será ignorada e o programa segue seu curso sem portanto executar certo trecho de código. Um teste é tido como verdadeiro se seu resultado é um valor diferente de zero. Abaixo dois exemplos, o primeiro executando um comando simples e outro um bloco (instrução composta)
  
 
  //comando simples
 
  //comando simples
 
  if (expressão_de_teste_logico)
 
  if (expressão_de_teste_logico)
   comando;
+
   instrução;
  
 
  if (expressão_de_teste_logico)
 
  if (expressão_de_teste_logico)
 
  {
 
  {
     comando1;
+
     instrução1;
     comando2;
+
     instrução2;
     comandoN;
+
     instruçãoN;
 
  }
 
  }
  
==operador if em estrutura if...else==
+
==comando if em estrutura if...else==
 
Pode-se também determinar o que se deve fazer se o teste for falso. Neste caso em uma execução apenas um trecho será executado, não há possibilidade de ambos serem executados na mesma execução.
 
Pode-se também determinar o que se deve fazer se o teste for falso. Neste caso em uma execução apenas um trecho será executado, não há possibilidade de ambos serem executados na mesma execução.
  
 
  if (expressão_de_teste_logico)
 
  if (expressão_de_teste_logico)
 
  {
 
  {
     comando1;
+
     instrução1;
     comando2;
+
     instrução2;
     comandoN;
+
     instruçãoN;
 
  }
 
  }
 
  else
 
  else
 
  {
 
  {
     comando1_2;
+
     instrução1_2;
     comando2_2;
+
     instrução2_2;
     comandoN_2;
+
     instruçãoN_2;
 
  }
 
  }
  
==Operador if em cascata==
+
==Operador em if aninhado (em cascata)==
 
Pode-se ainda configurar operadores if em cascata, desta forma pode-se testar diferentes condições lógicas. Apenas um trecho de código será executado em um ciclo de execução.
 
Pode-se ainda configurar operadores if em cascata, desta forma pode-se testar diferentes condições lógicas. Apenas um trecho de código será executado em um ciclo de execução.
  
 
  if (expressão_de_teste_logico)
 
  if (expressão_de_teste_logico)
 
  {
 
  {
     comando1;
+
     instrução1;
     comando2;
+
     instrução2;
     comandoN;
+
     instruçãoN;
 
  }
 
  }
 
  else if(expressão_de_teste_logico)
 
  else if(expressão_de_teste_logico)
 
  {
 
  {
     comando1_2;
+
     instrução1_2;
     comando2_2;
+
     instrução2_2;
     comandoN_2;
+
     instruçãoN_2;
 
  }
 
  }
 
  else
 
  else
 
  {
 
  {
     comando1_3;
+
     instrução1_3;
     comando2_3;
+
     instrução2_3;
     comandoN_3;
+
     instruçãoN_3;
 
  }
 
  }
  
==Operador ? ==
+
==Operador ? :==
  
Se assemelha ao if...else. Primeiro se declara o teste lógico (fazendo a função do conteúdo entre parênteses do if), depois do ? o comando para se verdadeiro (equivale ao comando simples após o if) e após : o comando se falso (equivale ao comando simples do else).
+
Se assemelha ao "if...else". Primeiro se declara o teste lógico (fazendo a função do conteúdo entre parênteses do if), depois do "?" a instrução para caso verdadeiro (equivale ao comando simples após o if) e após ":" o comando se falso (equivale a instrução simples do else).
  
  //Formato da estrutura "? "  
+
  //Formato da estrutura "? :"  
  //se o teste lógico der verdadeiro o comando1 será executado,  
+
  //se o teste lógico der verdadeiro o instrução1 será executado,  
  //caso contrário será executado o comando2
+
  //caso contrário será executado o instrução2
  expressão_teste_lógico ? comando1 : comando2
+
  expressão_teste_lógico ? instrução1 : instrução2
 +
 
 +
==Operador switch==
 +
 
 +
Se assemelha ao if aninhado podendo tratar diversos casos, porém testa apenas uma variável de números inteiros. Tem a vantagem de ser mais eficiente e fácil de ler. É necessário ter ao menos um caso declarado. O operador default é opcional.
 +
 
 +
switch (expressão_de_teste_logico)
 +
{
 +
    case constante1:  
 +
      instrução1;
 +
      break;
 +
    case constante2:
 +
      instrução2;
 +
      break;
 +
    case constante1:
 +
      instrução3;
 +
      break;
 +
    default :
 +
      instrução4;
 +
      break;
 +
}
 +
 
 +
==Palavras-chave==
 +
===break===
 +
A palavra-chave break faz com que a execução do switch pare naquela linha. Caso se deseje que o programa continue executando as instruções em um switch basta omitir o break. Pela estrutura, portanto, serão executadas todas as instruções a partir do caso verdadeiro até que seja encontrado um break ou se chegue ao fim do switch.
 +
===continue===
 +
A palavra-chave continue faz com que a corrente execução seja interrompida e se retorne ao teste lógico do laço. Se parece com o break mas ao invés de sair do laço, a execução continua testando. Serve para "pular" a execução do laço.

Edição das 17h38min de 4 de maio de 2016

Comandos de controle de fluxo em ANSI C: Ramificação e repetição. Ramificação está decidindo que ações tomar de acordo com certas condições e repetição está tratando de quantas vezes realizar determinada ação.

Ramificação

Um ramo é chamado (executado) apenas se o programa escolher percorrê-lo através de testes lógicos. Desta forma é possível executar determinadas instruções ou outras de acordo com condições que podem variar no tempo.

operador if

É a mais simples forma de ramificação. A expressão entre parênteses será testada, se for verdadeira uma instrução ou um bloco de instruções será executado. Se for falso esta instrução ou bloco será ignorada e o programa segue seu curso sem portanto executar certo trecho de código. Um teste é tido como verdadeiro se seu resultado é um valor diferente de zero. Abaixo dois exemplos, o primeiro executando um comando simples e outro um bloco (instrução composta)

//comando simples
if (expressão_de_teste_logico)
  instrução;
if (expressão_de_teste_logico)
{
   instrução1;
   instrução2;
   instruçãoN;
}

comando if em estrutura if...else

Pode-se também determinar o que se deve fazer se o teste for falso. Neste caso em uma execução apenas um trecho será executado, não há possibilidade de ambos serem executados na mesma execução.

if (expressão_de_teste_logico)
{
   instrução1;
   instrução2;
   instruçãoN;
}
else
{
   instrução1_2;
   instrução2_2;
   instruçãoN_2;
}

Operador em if aninhado (em cascata)

Pode-se ainda configurar operadores if em cascata, desta forma pode-se testar diferentes condições lógicas. Apenas um trecho de código será executado em um ciclo de execução.

if (expressão_de_teste_logico)
{
   instrução1;
   instrução2;
   instruçãoN;
}
else if(expressão_de_teste_logico)
{
   instrução1_2;
   instrução2_2;
   instruçãoN_2;
}
else
{
   instrução1_3;
   instrução2_3;
   instruçãoN_3;
}

Operador ? :

Se assemelha ao "if...else". Primeiro se declara o teste lógico (fazendo a função do conteúdo entre parênteses do if), depois do "?" a instrução para caso verdadeiro (equivale ao comando simples após o if) e após ":" o comando se falso (equivale a instrução simples do else).

//Formato da estrutura "? :" 
//se o teste lógico der verdadeiro o instrução1 será executado, 
//caso contrário será executado o instrução2
expressão_teste_lógico ? instrução1 : instrução2

Operador switch

Se assemelha ao if aninhado podendo tratar diversos casos, porém testa apenas uma variável de números inteiros. Tem a vantagem de ser mais eficiente e fácil de ler. É necessário ter ao menos um caso declarado. O operador default é opcional.

switch (expressão_de_teste_logico)
{
   case constante1: 
     instrução1;
     break;
   case constante2: 
     instrução2;
     break;
   case constante1: 
     instrução3;
     break;
   default : 
     instrução4;
     break;
}

Palavras-chave

break

A palavra-chave break faz com que a execução do switch pare naquela linha. Caso se deseje que o programa continue executando as instruções em um switch basta omitir o break. Pela estrutura, portanto, serão executadas todas as instruções a partir do caso verdadeiro até que seja encontrado um break ou se chegue ao fim do switch.

continue

A palavra-chave continue faz com que a corrente execução seja interrompida e se retorne ao teste lógico do laço. Se parece com o break mas ao invés de sair do laço, a execução continua testando. Serve para "pular" a execução do laço.