FACENS – Engenharia da Computação
Lógica Computacional II
Funções de Agregação e
Ordenação
Algoritmos Clássicos de Agregação
• Frequentemente é necessário consolidar
um conjunto de dados, extraindo alguma
informação relevante
• As funções de agregação mais utilizadas
—
—
—
—
—
Contador
Soma, Média
Máximo, Mínimo
Procurar
Mediana, Desvio Padrão e Variância
Função Soma (vetor de inteiros)
numérico soma (numérico v[], numérico n)
i, s: numérico
inicio
s  0
para i  0 até n-1 passo 1 faça
s  s + v[i]
fim para
retorno  s
fim
Função Média (vetor de inteiros)
numérico media (numérico v[], numérico n)
i, s: numérico
inicio
se (n = 0) retorno  0
s  0
para i  0 até n-1 passo 1 faça
s  s + v[i]
fim para
retorno  s / n
fim
Função Máximo (vetor de inteiros)
numérico maximo (numérico v[], numérico n)
i, maximo: numérico
inicio
se (n = 0) retorno  0
maximo  0
para i  1 até n-1 passo 1 faça
se (v[i] > v[maximo])
maximo  i
fim se
fim para
retorno  maximo
fim
Função Mínimo (vetor de inteiros)
numérico minimo (numérico v[], numérico n)
i, minimo: numérico
inicio
se (n = 0) retorno  0
minimo  0
para i  1 até n-1 passo 1 faça
se (v[i] < v[minimo])
minimo  i
fim se
fim para
retorno  minimo
fim
Função Pesquisa (vetor de inteiros)
numérico pesquisa (numérico alvo, numérico v[], numérico n)
i: numérico
inicio
para i  0 até n-1 passo 1 faça
se (v[i] = alvo)
retorno  i
fim se
fim para
retorno  -1
fim
Ordenação
• Diversos métodos, alguns muito eficientes e
outros pouco eficientes
• BOLHA:
— A cada passo, cada elemento é comparado com o
próximo. Se o elemento estiver fora de ordem, a troca é
realizada
— Realizam-se tantos passos quantos necessários até que
não ocorram mais trocas
• SELEÇÃO:
— A cada passo encontra-se o maior elemento dentro do
segmento com os elementos não selecionados
— Troca-se este elemento com o último elemento do
segmento
— Atualiza-se o tamanho do segmento (menos um
elemento)
— Este processo é repetido até que o segmento fique com
apenas um elemento
Método BOLHA (Bubble Sort)
ordena (numérico v[], numérico n)
i, temp: numérico
troca: lógico
inicio
troca = VERDADEIRO
enquanto (troca) faça
troca = FALSO
para i = 0 até n-2 faça
se (v[i] > v[i + 1]) então
temp = v[i]
v[i] = v[i + 1]
v[i + 1] = temp
troca = VERDADEIRO
fim se
fim para
fim enquanto
fim
Método Seleção Direta
ordena (numérico v[], numérico n)
pos_maior, temp: numérico
inicio
para i = n-1 até 1 faça
pos_maior = maximo(v, i+1)
temp = v[i]
v[i] = v[pos_maior]
v[pos_maior] = temp
fim para
fim
Download

Introdução à Engenharia de Computação - Banco