M04A05 – Busca Sequencial em Vetor – pq a expressão (não achei)

Home Fóruns Programação Básica M04A05 – Busca Sequencial em Vetor – pq a expressão (não achei)

Visualizando 3 respostas da discussão
  • Autor
    Posts
    • #84843

      Por que se digitou a expressão na linha 20 ” se (nao achei) ” para poder informar que não achou a chave no vetor? Não consegui entender o motivo de ter invertido a variável “lógico achei” de falso para verdadeiro.

    • #84856
      IcaroFilho
      Moderador

      Bom dia Marcelino,

      A condição se só executa o primeiro bloco quase a condição passada é verdadeira. Tendo isso em mente, ocorrerá 2 coisas.

      Ele declara a varável achei como falso no inicio do código, logo ela so tem seu valor alterado quando se encontra o valor da chave dentro do vetor.
      Sendo assim,
      Caso não exista chave:
      O valor será mantido e como o valor de achei é falso, esta condição não seria entendida e o bloco não executado… então é preciso inverter o valor negando ele. ( sempre que negamos um valor, invertemos ele ).

      O mesmo acontece se o valor for encontrado.
      Ele esta recebendo verdadeiro e será exibido. Para não ser exibido ele inverte o sinal ( ao se negar um booleano verdadeiro, obtemos um valor falso ).

      Existem outras maneiras de se fazer. O professor apenas trouxe uma técnica de negação que é muito praticada no ambiente real de programação.

      Espero ter ajudado.
      Caso continue com a duvida, basta responder a baixo que tentarei explicar de uma outra maneira ou outra pessoa tbm pode responder…
      Bons estudos !

    • #115029
      TATIANE ROCHA
      Participante

      Olá, tive uma dúvida no exemplo abaixo. No caso, na linha onde se encontra o se(não achei) não entendi muito bem, pois como o valor logico indicado na variavel é falso. Colocando o “não” antes ele não ficaria verdadeiro? Poderia me ajudar com essa dúvida? Acho que entendi alguma coisa errada.

      programa
      {
      inclua biblioteca Util–> u

      funcao inicio()
      {
      inteiro num [8]= {2, 5, 7, 3, 2, 9, 4, 2}
      inteiro chave
      logico achei= falso

      escreva(“Qual é a chave? “)
      leia(chave)

      para(inteiro pos=0; pos<u.numero_elementos(num); pos++) {
      se (num[pos]== chave) {
      escreva(“\nAchei a chave na posição “, pos)
      achei= verdadeiro
      }
      }
      se (nao achei) {
      escreva(“infelizmente a chave “, chave, ” não se encontra no vetor\n”)
      }
      }
      }

    • #115071
      Tutora Jessica
      Moderador

      Ola Tatiane, trouxe a sua dúvida para uma igual ja existente no fórum.

Visualizando 3 respostas da discussão
  • Você deve fazer login para responder a este tópico.