Mudanças entre as edições de "PR1022804 2023 2 AULA02"
Linha 124: | Linha 124: | ||
{| class="wikitable" style="background-color:#ffffff;" | {| class="wikitable" style="background-color:#ffffff;" | ||
− | |||
! style="background:#0080FF; color:white;" | Expressão | ! style="background:#0080FF; color:white;" | Expressão | ||
! style="background:#0080FF; color:white;" | A | ! style="background:#0080FF; color:white;" | A |
Edição das 15h30min de 17 de julho de 2023
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ã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 (tipo alfanumérica)
Algoritmo usando fluxograma
Algoritmo usando pseudocó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.
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