!
! Programa que verifica se um elemento pertence ou não a um conjunto
!
program procura_elemento_conjunto
    implicit none
    integer :: conjunto(20), n, i, elemento
    logical pertence

    
    write(*, *) "Programa que verifica se um elemento pertence ou não a um conjunto lido"
    write(*, *) 
    write(*, *) "Quantos Elementos tem o Conjunto a ser lido?(maximo 20)" 
    read (*, *) n
    write(*, *) "Digite os elementos do conjunto"
    read (*, *) (conjunto(i), i = 1, n, 1)
    write(*, *)
    write(*, *) "Conjunto Lido"
    write(*, *) (conjunto(i), i = 1, n, 1)
    write(*, *)
    write(*, *) "Informe um elemento a ser procurado no conjunto:"
    read (*, *) elemento
    write(*, *)
    
    if (pertence(elemento, conjunto, n)) then
        write(*, *) "O elemento pertence ao conjunto"
    else
        write(*, *) "O elemento nao pertence ao conjunto"
    end if
    
    stop
end program procura_elemento_conjunto


function pertence(elemento, conj, tamanho)
    implicit none
    integer :: tamanho, conj(tamanho), indice, elemento
    logical :: pertence

    do indice = 1, tamanho, 1
        if (conj(indice) == elemento) then
            pertence = .true.
            return !sai do laço e retorna
        end if
    end do
    
    pertence = .false. !se não retornou antes, retorna agora e o elemento não pertence ao conjunto
    return
end function pertence