Lógica de programação

Aula 03 - Estruturas de controle: decisão

Igor Conrado Alves de Lima - prof.igor@microcamp.com.br

Desvio condicional simples

Desvio condicional simples

Linguagens de programação normalmente oferecem instruções que servem para tratar o fluxo de programas para diferentes condições.

Em Português Estruturado nós temos:

      se (<condição>) entao
        <instruções para condição verdadeira>
      fimse
      

Desvio condicional simples

A mesma instrução em diagrama de blocos fica assim:

Desvio condicional simples: Exercício

Desenvolva o algoritmo, o respectivo diagrama de blocos e sua codificação em Português Estruturado para resolver o problema de ler dois valores numéricos, efetuar a adição e apresentar o seu resultado caso o valor somado seja maior que 10.

Desvio condicional simples: Resposta

Algoritmo:

  1. Conhecer/receber/ler dois valores incógnitos (estabelecer variáveis A e B);
  2. Efetuar a soma dos valores incógnitos A e B, atribuindo o valor da soma para a variável X;
  3. Apresentar o valor da soma contido na variável X, caso o valor de X seja maior que 10.

Desvio condicional simples: Resposta

Diagrama de blocos:

Desvio condicional simples: Resposta

Português Estruturado:

algoritmo "Soma_numeros"

var
X, A, B: inteiro

inicio
  leia(A)
  leia(B)
  X <- A + B
  se (X>10) entao
    escreva(X)
  fimse
fimalgoritmo

Operadores relacionais

Operadores relacionais

Símbolo Significado
= igual a
<> , != diferente de
> maior que
< menor que
>= maior ou igual a
<= menor ou igual a

Desvio condicional composto

Desvio condicional composto

Esse tipo de instrução nos permite estabelecer um bloco alternativo de intruções caso a condição seja avaliada como falsa.

Em Português Estruturado:

      se (<condição>) entao
        <instruções para condição verdadeira>
      senao
        <instruções para condição falsa>
      fimse
      

Desvio condicional composto

A mesma instrução em diagrama de blocos:

Desvio condicional composto: Exercício

Desenvolva o algoritmo, o respectivo diagrama de blocos e sua codificação em Português Estruturado para resolver o problema de ler dois valores numéricos e efetuar a adição dos mesmos. Caso o valor somado seja maior ou igual a 10, este deve ser apresentado somando-se a ele mais 5. Caso o valor somado não seja maior ou igual a 10, este deve ser apresentado subtraindo-se 7.

Desvio condicional composto: Resposta

Algoritmo:

  1. Conhecer dois valores (variáveis A e B);
  2. Efetuar a soma dos valores A e B e atribuir o valor da soma à X;
  3. Verificar se X é maior ou igual a 10; caso sim, mostre X + 5, senão, mostre X – 7.

Desvio condicional composto: Resposta

Diagrama de blocos:

Desvio condicional composto: Resposta

Português Estruturado:

algoritmo "Soma_Numeros"
var
  X, A, B, R: inteiro
  
inicio
  leia(A, B)
  X <- A + B
  se (X >= 10) entao
    R <- X + 5
  senao
    R <- X - 7
  fimse
  escreva(R)
fimalgoritmo

Desvios condicionais encadeados

Desvios condicionais encadeados

Usamos esse tipo de instrução quando queremos estabelecer verificação de condições sucessivas.

Português Estruturado:

      se (<condição1>) entao
        <instruções para condição1 verdadeira>
      senao
        se (<condição2>) entao
          <instruções para condição2 verdadeira, porém condição1 falsa>
        senao
          <instruções para condição2 falsa>
        fimse
      fimse
      

Desvios condicionais encadeados

Diagrama de blocos:

Desvios condicionais encadeados: Problema

Elaborar um programa que efetue o cálculo do reajuste de salário de um funcionário e o apresente na tela. Considere que o funcionário deverá receber um reajuste de 15% caso seu salário seja menor que 500. Se o salário for maior ou igual a 500, mas menor ou igual a 1000, seu reajuste será de 10%; caso seja inda maior que 1000, o reajuste deverá ser de 5%.

Desvios condicionais encadeados: Problema

Algoritmo:

  1. Definir uma variável para o salário reajustado: NOVO_SALARIO;
  2. Ler um valor para a variável SALARIO;
  3. Verificar se o valor do SALARIO < 500, se sim reajustar em 15%;
  4. Verificar se o valor do SALARIO <= 1000, se sim reajustar em 10%
  5. Verificar se o valor do SALARIO > 1000, se sim reajustar em 5%;
  6. Apresentar o valor reajustado, implicando em NOVO_SALARIO.

Desvios condicionais encadeados: Problema

Diagrama de blocos:

Desvios condicionais encadeados: Problema

Português Estruturado:

algoritmo "Reajusta_Salario"
var
  novo_salario: real
  salario: real
inicio
  leia(salario)
  se (salario < 500) entao
    novo_salario <- salario * 1.15
  senao
    se (salario <= 1000) entao
      novo_salario <- salario * 1.10
    senao
      novo_salario <- salario * 1.05
    fimse
  fimse
  escreva(novo_salario)
fimalgoritmo

Operadores lógicos

Operadores lógicos

Há ocasiões em que é necessário trabalhar com o relacionamento de duas ou mais condições ao mesmo tempo na mesma instrução se...entao, e efetuar deste modo testes múltiplos.

Para estes casos é preciso empregar os operadores lógicos: E, OU, e NÃO.

Operador lógico E

Este operador é utilizado quando dois ou mais relacionamentos lógicos de uma determinada condição precisam ser verdadeiros.

Tabela-verdade:

Operador lógico E

Português Estruturado:

      se (<condição1>) e (<condição2>) entao
        <instruções executadas se condição1 e condição2 são verdadeiras>
      fimse
      

Operador lógico E

Diagrama de blocos:

Operador lógico E

Exemplo:

algoritmo "testa_logica_e"
var
  numero: inteiro
  
inicio
  leia(numero)
  se (numero >= 20) e (numero <=90) entao
    escreva("O numero esta na faixa de 20 a 90")
  senao
    escreva("O numero esta FORA da faixa de 20 a 90")
  fimse
fimalgoritmo

Operador lógico OU

O operador do tipo OU é utilizado quando pelo menos um dos relacionamentos lógicos de uma condição necessita ser verdadeiro.

Tabela-verdade:

Operador lógico OU

Português Estruturado:

      se (<condição1>) ou (<condição2>) entao
        <instruções executadas se condição1 ou condição2 é verdadeira>
      fimse
      

Operador lógico OU

Diagrama de blocos:

Operador lógico OU

Exemplo:

algoritmo "testa_logica_ou"
      
var
SEXO: literal

inicio
  leia(SEXO)
  se (SEXO = "masculino") ou (SEXO = "feminino") entao
    escreva("Seu sexo existe.")
  senao
    escreva("Desconheço seu sexo.")
  fimse
fimalgoritmo

Operador lógico NAO

O operador do tipo NAO é utilizado quando se necessita estabelecer que uma determinada condição deve não ser verdadeira ou deve não ser falsa.

NAO se caracteriza por inverter o estado lógico de uma condição.

Tabela-verdade:

Operador lógico NAO

Português Estruturado:

      se nao(<condição1>) entao
        <instruções executadas se condição1 não for verdadeira>
      fimse
      

Operador lógico NAO

Exemplo:

algoritmo "Testa_Logica_NAO"
var
A, B, C, X: inteiro

inicio
  leia(A, B, X)
  se nao(X>5) entao
    C <- (A + B) * X
  senao
    C <- (A - B) * X
  fimse
  escreva(C)
fimalgoritmo