Você está na página 1de 1

No início da apresentação, foi relembrado alguns conceitos que foram falados na

apresentação anterior. Como átomos, números, variáveis, objetos estruturados, predicados,


fatos, consultas e regras. Com isso, foi relembrado esses conceitos.

Posteriormente, foi apresentado a ideia de predicados, falando sobre operadores


lógicos, aritméticos e relacionais. Na parte dos operadores lógicos entendemos que temos
and, or e not
Nos aritméticos, as nossas funções matemáticas como, por exemplo, multiplicar e
somar e nos relacionais >= e <=.
Somado ao que foi falado anteriormente, foi mostrado exemplos de conjunções e
disjunções. Foi dado exemplo relações pai e mãe, usando esses conceitos.
Depois foi falado sobre listas e como fazemos para percorrer ela. Assim como
utilizamos o método tail. Posteriormente foi falado sobre recursividade e recursividade em
listas, vimos que a recursividade com a técnica de "tail" envolve a chamada recursiva
ocorrendo no final da função, onde o resultado dessa chamada recursiva é imediatamente
retornado, sem realizar mais nenhuma operação. Na prática, em linguagens de
programação que suportam otimização de chamada de cauda, como algumas
implementações de, Haskell como no nosso Trabalho, entre outras, a recursão de cauda
pode evitar o estouro de pilha, já que a otimização de cauda é capaz de substituir a
chamada recursiva pelo equivalente a um loop, economizando espaço na pilha de
chamadas.
Dentro do prolog, foi falado sobre backtracking, cujo o qual eu não sabia o que era,
que é um processo pelo qual todas as alternativas de soluções para uma cada consulta são
testadas. Ademais, foi falado também sobre o corte, que funciona como se fosse uma
condição parada para o backtracking. Dentro desse contexto ainda, foi nos apresentado o
conceito de falha ou fail, que é um comando sem argumento que quando empregado, se
comporta como uma fórmula que nunca é satisfeita.
Em resumo, a apresentação proporcionou uma visão ampla sobre os conceitos
fundamentais do Prolog, desde predicados e operadores lógicos até recursividade e
estratégias de solução de problemas como o backtracking e o corte. Esses conceitos são
essenciais para entender e programar de maneira eficiente nessa linguagem de
programação lógica.

Você também pode gostar