PR1022804 2020 1 AULA02
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
- 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.
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 | 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 |
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
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.
[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 a média entre estes dois números é maior que 5.
Referências
[1] https://www.ime.usp.br/~jose/codeblocks/codeblocksintro.html