PR1022804 2022 2 AULA02

De MediaWiki do Campus São José
Ir para: navegação, pesquisa

Operadores Lógicos e Relacionais e Estrutura de Decisão

OBJETIVOS
O aluno deverá saber utilizar comandos e expressões em pseudocódigo e fluxogramas usando:
  • Operadores Relacionais e Lógicos;
  • Comandos de Decisão; e
  • Comandos de decisão com aninhamento.


METODOLOGIA
A aula será expositiva e dialogada, utilizando apresentação de texto base na Internet, onde serão mostrados exemplos testados programas no microcomputador do laboratório de informática.


Expressões

Como foi falado na aula anterior, expressões são sentenças que relacionam variáveis e constantes através de operadores matemáticos e que RESULTAM em um valor.

EXEMPLO
MEDIA = (NUM1 + NUM2) / 2

Nesse caso, a variável MEDIA vai receber o resultado da soma de NUM1 com NUM2, cujo resultado será dividido por 2 (média simples de dois números).

Agora, depois de ter estudado sobre os operadores aritméticos e o operador de atribuição, vamos aumentar o poder das expressões através dos operadores relacionais e lógicos.

Operadores relacionais

Os operadores relacionais permitem realizar comparação entre dois operandos. Os operadores são os seguintes:


Operador Significado
> maior que
>= maior ou igual que
< menor que
<= menor ou igual que
== igual a
!= diferente de


Note que com operadores lógicos podemos construir expressões tais como indicado no exemplo abaixo:

EXEMPLO
O algoritmo abaixo lê dois número inteiros para dentro das variáveis A e B e atribue à variável X o resultado da comparação do primeiro com o segundo.
Observe que a variável X é do tipo booleano (falso ou verdadeiro).


ALGORITMO exemplo
VARIÁVEIS:
   A: inteiro
   B: inteiro
   X: booleana
INÍCIO
   LER A
   LER B
   X = A>B
   MOSTRAR "A condição A>B é ", X
FIM
EXERCÍCIO
Fazer um fluxograma para o algoritmo acima.

Operadores lógicos

É possível construir expressões ainda mais completas usando os operadores lógicos, apresentados abaixo:


Operador Significado
&& AND (E)
|| OR (OU)
! NOT (NÃO)


Uma expressão lógica tem como resultado da sua avaliação um valor VERDADEIRO ou FALSO. Para manter a coerência com a linguagem C qualquer expressão que resultar em 0 será considerada FALSA e se resultar em algo diferente de 0 será considerada verdadeira.

EXEMPLO
Considere uma variação do exercício anterior onde se compara 3 números inteiros: o primeiro com o segundo e o primeiro com o terceiro.
ALGORITMO exemplo
VARIÁVEIS:
   A: inteiro
   B: inteiro
   C: inteiro
   X: booleana
INÍCIO
   LER A
   LER B
   LER C
   X = (A>B) E (A < C)
   MOSTRAR "A expressão A>B E A<C é ", X
FIM


EXERCÍCIO
Para cada uma das expressões abaixo determine se a expressão é Verdadeira ou Falsa.


Expressões com operadores relacionais e lógicos
Expressão A B C D Valor
(A>B) E (C>D) 10 8 20 15
(A>B) E (C>D) 10 12 15 -1
(A<=B) OU (C>10) 5 5 3 -2
A<=B OU ((C==D) E (D<A)) 3 10 -4 4
(A==B) OU (C==D) 3 1 4 4
((A==B) E (B<30)) OU (C>=D) 5 -5 10 5

Controle do fluxo de execução: Estruturas de Decisão

Você deve ter observado que instruções simples (retângulo) possuem uma entrada e uma saída indicando que o fluxo de saída está claramente determinado.

Em algumas situações é necessário realizar algum teste sobre uma expressão e neste caso a execução é condicional. O teste da expressão pode resultar em VERDADEIRO e neste caso uma sequência de ações é realizada. Se o resultado for FALSO, uma outra sequência é realizada.

Seja o problema:

Problema do controle de acesso

PROBLEMA: Controlar o acesso a uma porta usando uma senha pré-configurada no sistema.

DADO DE ENTRADA: SENHA (variável alfanumérica)

DADO DE SAÌDA: porta aberta (simulado com msg "PORTA ABERTA") ou mensagem de "SENHA NAO CONFERE"

VARIÁVEIS: SENHA (tiipo alfanumérica)

Algoritmo usando fluxograma

FluxogramaControleAcessoI.jpg

Algoritmo usando pseudo-código

ALGORITMO ControleAcesso
VARIÁVEIS
   SENHA: alfanumérica
INICIO
   LER SENHA 
   SE SENHA=="alfa" ENTÃO
          "Abrir a porta"
   SENÃO
          "Senha não confere"
   FIMSE
   IR PARA INICIO
FIM

Aninhamento de estruturas de decisão

Note que é possível aninhar estruturas de decisão. Seja o exemplo abaixo que lê três lados de um possível triângulo e imprime se NÃO é um triângulo, ou, caso seja, imprime se é EQUILÁTERO, ISÓSCELES ou ESCALENO.

ALGORITMO triangulo
VARIAVEIS
  lado1,lado2,lado3: real
INICIO
  Ler lado1
  Ler lado2
  Ler lado3
  SE lado1>(lado2+lado3) OU lado2>(lado1+lado3) OU lado3>(lado1+lado2) ENTÃO
      MOSTRAR "não é triângulo"
  SENÃO
      SE lado1==lado2 E lado1==lado3 ENTÃO
         MOSTRAR "equilatero"
      SENAO
         SE lado1==lado2 OU lado1==lado3 OU lado2==lado3 ENTÃO
             MOSTRAR "isósceles"
         SENÃO
             MOSTRAR "escaleno"
         FIMSE
      FIMSE
  FIMSE
FIM

Exercícios

1. Elaborar um fluxograma para o o problema de controle de acesso prevendo um procedimento para modificar a senha de acesso. Neste caso a senha deverá ser armazenada em uma variável.Para tanto, assuma a existência de uma senha de administrador fixa (por exemplo, "ADMIN"). Se a senha do administrador for fornecida, mostrar uma mensagem de ENTRE COM A NOVA SENHA de senha.

Solução [1]

Prg1-ControleAcessoEx1.jpg

2. Inserir a noção de UserID. Para abrir a porta o usuário entra com o UserId e com a senha. De fábrica o UserId é "alfa" e a senha "alfa". O UserId do admin é "admin" e a senha "beta".

3. Inserir a noção de bloqueio do usuário. Se o usuário comum tentar 3 vezes e errar ele é bloqueado. A mudança de UserId deve desbloquear o usuário.

4. Implementar em pseudocódigo um algoritmo que lé dois números reais e imprime uma mensagem dizendo que se a média entre estes dois números for maior que 5 é aprovado senão reprovado.

Solução [4]
ALGORITMO MEDIA PARA APROVAÇÃO
VAR a,b : REAIS
    media : REAL
INICIO
   LER a
   LER b
   media=(a+b)/2
   SE (media > 5) ENTÃO 
      MOSTRAR "Aprovado"
   SENÃO
      MOSTRAR "Reprovado"
   FIM SE
FIM

Referências

[1] https://www.ime.usp.br/~jose/codeblocks/codeblocksintro.html



Icone voltar.png Icone menu.png Icone prox.png