Mudanças entre as edições de "AULA 2 - Programação 1 - Graduação"

De MediaWiki do Campus São José
Ir para: navegação, pesquisa
(Criou página com '===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 *Comando...')
 
(Limpou toda a página)
 
Linha 1: Linha 1:
===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:
 
 
{| border="1" cellpadding="2"
 
!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.
 
 
 
<code>
 
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:
 
 
{| border="1" cellpadding="2"
 
!Operador
 
!Significado
 
|-
 
|&&
 
|AND (E)
 
|-
 
|<nowiki>||</nowiki>
 
|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.
 
 
<code>
 
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.
 
 
 
 
{| align=center border=1
 
|+ 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"
 
 
<center>{{#ev:youtube|VAX4jLlNo-Q#!}} </center>
 
 
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=====
 
 
[[imagem:FluxogramaControleAcessoI.jpg|450px]]
 
 
=====Algoritmo usando Pseudo-código=====
 
 
<code>
 
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.
 
 
<code>
 
ALGORITMO trangulo
 
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
 
</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.
 
 
[[imagem:Prg1-ControleAcessoEx1.jpg|450px]]
 
 
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.
 

Edição atual tal como às 17h04min de 10 de fevereiro de 2015