Paradigma Lógico e
Funcional
Implementação
   Equipe:

 Deivid Elton
 Diógenes Ricardo
 Geraldo Pires
 Maryvania França
Descrição:
   O programa realiza o
    cadastro, exibição, procura e exclusão
    de turmas de professores.
Cadastrar
 O código da turma;
 O nome do professor;
 A disciplina;
 O valor da hora aula do professor;
 Os alunos da turma
  [almir,amanda,sergio,Fernanda];
Exibir
    Exibe todas as turmas cadastradas
------------------------Turmas------------------------
Cod: 1
Professor: joao
Disciplina: a
Hora aula; 4.55
Salario hora aula: 18.2


Alunos


almir
amanda
sergio
Fernanda
------------------------
Nao ha mais turmas
Procurar por professor
   Exibe todas as turmas cadastradas
    por professor
Exclusão por turma
   Exclui todas as turmas cadastradas
    por código
RECURSÃO
Recursão
 Utiliza-se recursão nas regras exibir e
  lista e tamanho.
/* exibe a lista de alunos*/
exibelista([]).
exibelista([X|L]):-
  write(X),nl,exibelista(L).
tamanho([], 0).
tamanho([_ | R], N) :-tamanho(R, N1),N
  is N1+1.
OPERAÇÕES COM
LISTAS
Operações com Listas
  No adiciona os alunos são inseridos
   através de uma lista.
 Na exibição das turmas há regras que
   utilizam lista:
/* exibe a lista de alunos*/
exibelista([]).
exibelista([X|L]):-
   write(X),nl,exibelista(L)
...
Operações com Listas
...
Na geração do salário hora aula:
tamanho([], 0).
tamanho([_ | R], N) :-tamanho(R, N1),N
   is N1+1.
/* calcula o salario hora aula*/
calculasalario(H,L,S) :- tamanho(L,N),S
   is H * N.
Operações com Listas
 Na geração do salário hora aula:
tamanho([], 0).
tamanho([_ | R], N) :-tamanho(R, N1),N
  is N1+1.

/* calcula o salario hora aula*/
calculasalario(H,L,S) :- tamanho(L,N),S
  is H * N.
BACKTRACKING
Backtracking


   O backtracking é evidenciado na
    busca, ele acha a turma e força-se a
    falhar com o “fail”, para que ele volte e
    percorra toda a base de dados.
Backtracking
   exibir:-
   write('------------------------'),
   write('Turmas'),
   write('------------------------'),nl,
Backtracking
turma(Codigo,Professor,Disciplina,Hora_aula,
  L_Alunos),
            write('Cod: '),write(Codigo),nl,
            write('Professor:
  '),write(Professor),nl,
           write('Disciplina:
  '),write(Disciplina),nl,
            write('Hora aula;
  '),write(Hora_aula),nl,
Backtracking
calculasalario(Hora_aula,L_Alunos,Salario),
  write('Salario hora aula:
  '),write(Salario),nl,nl,
  write('Alunos'),nl,nl,exibelista(L_Alunos),nl,n
  l,

 write('------------------------'), nl,   fail, nl.
ESTRUTURA DE DADOS
Estrutura de dados
 Entrada
        e saída de dados (READ
 e WRITE)
 ◦ Durante todo o programa se utiliza de leitura e exibição de
   dados utilizando read e write.
Estrutura de dados
 Base de dados:
  ◦ É utilizado o conceito de base de dados :

  turma(Codigo,Professor,Disciplina,Hora_au
    la,L_Alunos)
PREDICADOS
EXTRALÓGICOS
PREDICADOS
EXTRALÓGICOS
   Tipos de termo:
    ◦ Verifica-se o código e o valor hora aula:
             write('Digite o codigo: '),
             read(Codigo),
             integer(Codigo),
             write('Digite o professor: '),
             read(Professor),
             write('Digite a disciplina: '),
             read(Disciplina),
PREDICADOS
EXTRALÓGICOS

write('Digite a hora aula: '),
           read(Hora_aula),
           float(Hora_aula),
OPERAÇÕES COM A
BASE DE DADOS
Operações com a Base de
Dados
   Utiliza-se os predicados assertz e
    retract, na (exibição das turmas, na
    busca) e na (exclusão da
    turma), respectivamente.
OBRIGADO!

Paradigma Lógico e Funcional