Programação Orientada à Procedimentos II Programação Orientada à Procedimentos I Processamento Paralelo Lógica de Programação Introdução à Computação Informática Básica

 

 

Informática Básica
Introdução à Computação
Lógica de Programação
Programação Orientada à Procedimentos I
Programação Orientada à Procedimentos II

Processamento Paralelo

Aula 4

Aula 5

Aula 6





4. - Processamento Condicional e Processamento Iterativo

     Com o aumento da complexidade dos programas consequentemente surgem situações onde o programa deve tomar rumos diferentes de acordo com o resultado da avaliação de uma determinada condição. A isto se dá o nome de processamento condicional. Do mesmo modo, poderão surgir situações onde a execução de determinada função, ou conjunto de funções, seja necessária repetidas vezes até que uma determinada condição seja atendida. A isto se dá o nome de processamento iterativo.

4.1. Expressões Condicionais

     A base das estruturas de decisão em C são as expressões condicionais que serão avaliadas. Basicamente são constituídas por comparações entre valores e operações lógicas com os seguintes operadores:

  • Operador de comparação ou igualdade - Utiliza o símbolo "==" (dois sinais de igualdade). Retorna TRUE (verdadeiro) caso o valor dos 2 itens seja o mesmo. Retorna FALSE (falso) caso contrário.
    DICA: Não confundir o operador de comparação "==" (dois sinais de igualdade) com o operador de atribuição "="
    (um sinal de igualdade). O compilador não retornará nenhum erro caso a confusão seja feita pois uma operação de atribuição do tipo (A=B) sempre retorna TRUE como valor de expressão.

  • Operadores relacionais - Utilizam os símbolos ">" , "<" , ">=" e "<=" para indicar comparações relacionais entre valores maiores, menores, maiores e iguais, menores e iguais respectivamente. Retornam como valor de expressão TRUE caso a expressão de comparação do tipo (A>=B) seja verdadeira e FALSE caso contrário.

  • Operadores lógicos - Avaliam uma ou mais expressões simultâneamente e são basicamente 3 operadores:

    • E (AND) - Utiliza os símbolos "&&" (dois e´s comerciais) e retorna TRUE caso todas as expressões sejam verdadeiras e FALSE caso pelo menos uma delas seja falsa.

    • OU (OR) - Utiliza os símbolos "||" (duas barras verticais) e retorna TRUE caso pelo menos uma das expressões seja verdadeira e FALSE caso nenhuma delas o seja.

    • NÃO (NOT) - Utiliza o símbolo "!" (ponto de exclamação) e inverte o resultado de uma expressão lógica, ou conjunto de expressões.


    void main (void)

    {

      int resultado;

      int idade;

     

       ...   ... /* aqui são atribuidos valores para as                   variaveis */

     

      if ( !(resultado == 10) && (idade >= 21) )

          {

         printf("A idade");

         printf(" e' maior ou igual a 21 anos");

         printf(" e o resultado nao e' 10\n");

          }

    }

     

DICA: C interpreta qualquer expressão que seja verdadeira como sendo um valor diferente de zero. Assim sendo, uma expressão to tipo "(variavel <= 21)" retorna para o programa (ou para uma estrutura de decisão) o valor zero caso seja falsa. Este mesmo valor de retorno pode ser atribuído para uma variável como mostrado no exemplo a seguir:

void main (void)

{

  int resultado;

  int idade;

   ...   ...

  resultado = (idade >= 21);

  if (resultado)

      {

     printf("A idade");

     printf(" e' maior ou igual a 21 anos");

      }

}

 

4.2. A Estrutura Condicional IF

     A estrutura IF é das estruturas condicionais oferecidas pela linguagem C. Ela primeiramente avalia se uma condição é verdadeira e, em caso positivo, executa um comando (comando simples) ou um conjunto de comandos (comandos compostos) como mostrado a seguir, onde a variável idade é avaliada e, caso contenha um valor maior ou igual a 21, o conjunto de instruções delimitadas pelas chaves (escopo) é executado.

DICA: Se variáveis forem declaradas dentro de algum escopo de estruturas de decisão ou iterativas, a sua utilização fica restrita somente à este escopo de modo que estas variáveis não são visíveis pelo restante do programa, o que de certa forma melhora o controle sobre as variáveis limitando sua área de ação.

void main (void)

{

  int idade;

   ...   ...

  if (idade >= 21)

      {

     printf("A idade");

     printf(" e' maior ou igual a 21 anos");

      }

}

DICA: Valores de ponto flutuante, como visto anteriormente, não são completamente representados internamente pelo computador. Desta forma, se por exemplo uma variável recebe o valor 0.065 a representação interna do computador pode se tornar 0.06499999. Assim, se variáveis de ponto flutuante forem usadas em estruturas de comparação, cuidados adicionais devem ser tomados para que o computador avalie corretamente a expressão. Uma solução seria trabalhar com operadores < ou > trabalhando sempre com faixas de valores, como mostrado a seguir:

void main (void)

{

  float salario = 0.065 ; /* aqui o valor 0.065 e'   atribuido, mas entretanto a representação interna do valor   pode ser 0.0649999 */

  if (salario == 0.065)

      {

     printf("Essa mensagem pode nao ser exibida");

      }

  if ( (salario - 0.065) <= 0.0001 )

      {

     printf("Esta e' a forma correta");

      }

}