Mudanças entre as edições de "AULA de Introdução a Lógica de Programação - Comandos de Decisão"

De MediaWiki do Campus São José
Ir para: navegação, pesquisa
(Operadores Lógicos)
(Operadores Lógicos)
Linha 122: Linha 122:
 
|-
 
|-
 
| (A>B) E (C>D)
 
| (A>B) E (C>D)
|
+
| 10
|
+
| 12
|
+
| 15
|
+
| 15
 
|
 
|
 
|-
 
|-
 
| (A<=B) OU (C>10)
 
| (A<=B) OU (C>10)
|
+
| 5
|
+
| 5
|
+
| 3
|
+
| 5
 
|
 
|
 
|-
 
|-
 
| A<=B OU ((C==D) E (D<A))  
 
| A<=B OU ((C==D) E (D<A))  
|
+
| 3
|
+
| 10
|
+
| 4
|
+
| 4
 
|
 
|
 
|-
 
|-
 
| (A==B) OU (C==D)
 
| (A==B) OU (C==D)
|
+
| 3
|
+
| 1
|
+
| 4
|
+
| 4
 
|
 
|
 
|-
 
|-
 
| ((A==B) E (B<30)) OU (C>=D)
 
| ((A==B) E (B<30)) OU (C>=D)
|
+
| 5
|
+
| 5
|
+
| 10
|
+
| 5
 
|
 
|
 
|}
 
|}

Edição das 17h32min de 5 de agosto de 2014

Objetivos

O aluno deverá saber utilizar comandos e expressões em pseudo-código e fluxogramas usando:

  • Operadores Relacionais e Lógicos
  • Comandos de Decisão
  • Comandos de decisão com aninhamento

Expressões com operadores relacionais

Na aula anterior estudamos como construir expressões usando operadores aritméticos e o operador de atribuição. Vamos continuar este tópico aumentando o poder das expressões através dos operadores relacionais e lógicos.

Os operadores relacionais permitem realizar comparações 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 (se o operando a esquerda é maior que o da direita)
!= diferente de (se o operando a esquerda é diferente do da direita)

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.


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 </syntaxhighlight>

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 </syntaxhighlight>


EXERCÍCIO

Para cada uma das expressões abaixo determine se a expressão é verdadeira ou falsa.

a)


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 15
(A<=B) OU (C>10) 5 5 3 5
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

Sheldon e o fluxograma da amizade

Vamos observar o fluxograma da amizade do Sheldom da série de TV "Big Bang Theory"

EmbedVideo received the bad id "VAX4jLlNo-Q#!" for the service "youtube".

Observe que a caixa no formato de LOSANGO permite testar uma condição: é uma caixa de decisão.

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 </syntaxhighlight>

Aninhamento de estruturas de decisão

Note que é possível aninhar estruturas de decisão. Seja o exemplo ebaico 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 trangulo VARIAVEIS

 lado1,lado2,lado3: real

INICIO

 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

FIM </syntaxhighlight>

Exercícios

EXERCÍCIO 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.

Prg1-ControleAcessoEx1.jpg

EXERCÍCIO 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".

EXERCÍCIO 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.

EXERCÍCIO 4:

Implementar em pseudocódigo um algoritmo que lé dois números reais e imprime uma mensagem dizendo que a média entre estes dois números é maior que 5.