From 8c7cd171689d7a102d31767b11f7fb58771357f4 Mon Sep 17 00:00:00 2001 From: jprtenorio00 Date: Sat, 2 Mar 2024 18:09:04 -0300 Subject: [PATCH] Ajustes Finais - Parte 4 --- ...ica\303\247\303\243o do C\303\263digo.pdf" | Bin 0 -> 67405 bytes src/data_sctructures.py | 17 +--------------- src/gui.py | 19 +++--------------- src/main.py | 11 ---------- 4 files changed, 4 insertions(+), 43 deletions(-) create mode 100644 "docs/24.1 - Projeto 1 - Explica\303\247\303\243o do C\303\263digo.pdf" diff --git "a/docs/24.1 - Projeto 1 - Explica\303\247\303\243o do C\303\263digo.pdf" "b/docs/24.1 - Projeto 1 - Explica\303\247\303\243o do C\303\263digo.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..e7b2b0bd200a6810e1830a83b3f10e18332bf61d GIT binary patch literal 67405 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

M>D8 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

h{qK02Gr-lAGQ%qZ(of9#_Kwa7)!6zZ=TdORE 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 literal 0 HcmV?d00001 diff --git a/src/data_sctructures.py b/src/data_sctructures.py index 970d28d..2bea477 100644 --- a/src/data_sctructures.py +++ b/src/data_sctructures.py @@ -1,33 +1,27 @@ class Tupla: - """Representa uma tupla, contendo a chave de busca e os dados associados.""" def __init__(self, chave, dados): self.chave = chave self.dados = dados class Pagina: - """Representa uma página, que armazena um conjunto limitado de tuplas.""" def __init__(self, tamanho_max): self.tamanho_max = tamanho_max self.tuplas = [] def adicionar_tupla(self, tupla): - """Adiciona uma tupla à página se houver espaço disponível.""" if len(self.tuplas) < self.tamanho_max: self.tuplas.append(tupla) return True return False class Bucket: - """Representa um bucket no índice hash, que pode armazenar múltiplas tuplas.""" def __init__(self): self.entradas = [] def adicionar_entrada(self, tupla): - """Adiciona uma tupla ao bucket.""" self.entradas.append(tupla) class Tabela: - """Representa a tabela completa, contendo páginas de tuplas e buckets para o índice hash.""" def __init__(self, tamanho_pagina): self.tamanho_pagina = tamanho_pagina self.paginas = [] @@ -35,23 +29,19 @@ def __init__(self, tamanho_pagina): self.num_buckets = 0 def adicionar_tupla(self, tupla): - """Adiciona uma tupla à tabela, em uma nova página se necessário.""" if not self.paginas or not self.paginas[-1].adicionar_tupla(tupla): nova_pagina = Pagina(self.tamanho_pagina) nova_pagina.adicionar_tupla(tupla) self.paginas.append(nova_pagina) def inicializar_buckets(self, num_buckets): - """Inicializa os buckets com base em um número especificado.""" self.num_buckets = num_buckets self.buckets = [Bucket() for _ in range(num_buckets)] def funcao_hash(self, chave): - """Calcula o índice do bucket para uma dada chave usando uma função hash simples.""" return hash(chave) % self.num_buckets def construir_indice(self): - """Constrói o índice hash mapeando cada tupla para um bucket com base na chave.""" self.inicializar_buckets(self.calcular_num_buckets()) for pagina in self.paginas: for tupla in pagina.tuplas: @@ -59,30 +49,25 @@ def construir_indice(self): self.buckets[indice_bucket].adicionar_entrada(tupla) def buscar(self, chave): - """Busca tuplas correspondentes à chave fornecida e retorna suas referências de página.""" indice_bucket = self.funcao_hash(chave) bucket = self.buckets[indice_bucket] return [(tupla, self.encontrar_pagina_ref(tupla)) for tupla in bucket.entradas if tupla.chave == chave] def table_scan(self, limite): - """Realiza um table scan limitado, retornando as primeiras 'limite' tuplas.""" return [tupla for pagina in self.paginas for tupla in pagina.tuplas][:limite] def calcular_estatisticas(self): - """Calcula estatísticas sobre o índice, como total de entradas e taxa de colisões.""" total_entradas = sum(len(bucket.entradas) for bucket in self.buckets) colisoes = sum(len(bucket.entradas) - 1 for bucket in self.buckets if len(bucket.entradas) > 1) taxa_colisoes = colisoes / total_entradas if total_entradas > 0 else 0 return {'total_entradas': total_entradas, 'total_colisoes': colisoes, 'taxa_colisoes': taxa_colisoes} def calcular_num_buckets(self): - """Calcula o número ideal de buckets com base no número total de tuplas e um fator de carga.""" NR = sum(len(pagina.tuplas) for pagina in self.paginas) - FR = 10 # Fator de carga desejado (número de tuplas por bucket) + FR = 10 return max(NR // FR, 1) def encontrar_pagina_ref(self, tupla): - """Encontra a referência da página para uma dada tupla.""" for i, pagina in enumerate(self.paginas): if tupla in pagina.tuplas: return i diff --git a/src/gui.py b/src/gui.py index 6ad5c38..64f7998 100644 --- a/src/gui.py +++ b/src/gui.py @@ -5,15 +5,13 @@ class HashIndexGUI: def __init__(self, root): self.root = root - self.tabela = Tabela(tamanho_pagina=100) # Valor padrão, pode ser alterado pelo usuário + self.tabela = Tabela(tamanho_pagina=100) self.setup_gui() def setup_gui(self): - """Configura os elementos da interface gráfica e os dispõe na janela.""" self.root.title("Índice Hash Estático") self.root.geometry("1024x768") - # Configuração dos widgets e layout aqui self.setup_load_frame() self.setup_page_size_frame() self.setup_search_frame() @@ -21,7 +19,6 @@ def setup_gui(self): self.setup_stats_display() def setup_load_frame(self): - """Configura o frame para carregar dados.""" load_frame = tk.Frame(self.root) load_frame.pack(pady=10) @@ -32,7 +29,6 @@ def setup_load_frame(self): self.load_status.pack(side=tk.LEFT, padx=10) def setup_page_size_frame(self): - """Configura o frame para definir o tamanho da página.""" page_size_frame = tk.Frame(self.root) page_size_frame.pack(pady=10) @@ -45,7 +41,6 @@ def setup_page_size_frame(self): set_page_size_button.pack(side=tk.LEFT, padx=10) def setup_search_frame(self): - """Configura o frame para buscar tuplas.""" search_frame = tk.Frame(self.root) search_frame.pack(pady=10) @@ -59,7 +54,6 @@ def setup_search_frame(self): self.search_result.pack(pady=10) def setup_table_scan_frame(self): - """Configura o frame para o Table Scan.""" table_scan_frame = tk.Frame(self.root) table_scan_frame.pack(pady=10) @@ -73,7 +67,6 @@ def setup_table_scan_frame(self): self.table_scan_text.pack(pady=10) def setup_stats_display(self): - """Configura a exibição de estatísticas.""" stats_label = tk.Label(self.root, text="Estatísticas:") stats_label.pack(pady=10) @@ -84,7 +77,6 @@ def setup_stats_display(self): stats_button.pack(pady=10) def load_data(self): - """Carrega dados de um arquivo selecionado pelo usuário.""" filename = filedialog.askopenfilename(filetypes=(("Text files", "*.txt"), ("All files", "*.*"))) if filename: try: @@ -100,7 +92,6 @@ def load_data(self): messagebox.showerror("Erro ao Carregar", f"Ocorreu um erro ao carregar o arquivo: {e}") def set_page_size(self): - """Define o tamanho da página com base na entrada do usuário.""" try: valor = self.page_size_var.get() messagebox.showinfo("Tamanho da Página", f"Tamanho da página definido como {valor}.") @@ -108,7 +99,6 @@ def set_page_size(self): messagebox.showerror("Erro", "Por favor, insira um número inteiro válido.") def search(self): - """Realiza a busca por uma chave e atualiza a GUI com os resultados encontrados.""" query = self.search_entry.get() resultados = self.tabela.buscar(query) @@ -123,27 +113,24 @@ def search(self): self.search_result.config(text="Nenhum resultado encontrado.") def table_scan(self): - """Realiza um table scan baseado no limite especificado pelo usuário e atualiza a GUI com os resultados.""" try: limit = int(self.table_scan_entry.get()) resultados = self.tabela.table_scan(limit) - self.table_scan_text.delete('1.0', tk.END) # Limpa o texto anterior + self.table_scan_text.delete('1.0', tk.END) for tupla in resultados: self.table_scan_text.insert(tk.END, f"Chave: '{tupla.chave}'\n") except ValueError: messagebox.showerror("Erro", "Por favor, insira um número inteiro válido para o limite.") def show_statistics(self): - """Calcula estatísticas do índice hash e atualiza a GUI com essas informações.""" estatisticas = self.tabela.calcular_estatisticas() - self.stats_text.delete('1.0', tk.END) # Limpa o texto anterior + self.stats_text.delete('1.0', tk.END) self.stats_text.insert(tk.END, f"Total de Entradas: {estatisticas['total_entradas']}\n") self.stats_text.insert(tk.END, f"Total de Colisões: {estatisticas['total_colisoes']}\n") self.stats_text.insert(tk.END, f"Taxa de Colisões: {estatisticas['taxa_colisoes'] * 100:.2f}%\n") - def setup_gui(root): HashIndexGUI(root) diff --git a/src/main.py b/src/main.py index f36a07b..2642d94 100644 --- a/src/main.py +++ b/src/main.py @@ -2,20 +2,9 @@ from gui import setup_gui def main(): - """ - Função principal que inicializa a janela principal do Tkinter e configura a interface gráfica do usuário (GUI). - """ - # Cria a janela principal root = tk.Tk() - - # Configura a GUI dentro da janela principal setup_gui(root) - - # Inicia o loop principal da interface gráfica - # Isso mantém a janela aberta e responsiva aos eventos do usuário root.mainloop() if __name__ == "__main__": - # Garante que este script só execute a função main quando executado diretamente, - # e não quando importado como um módulo. main() \ No newline at end of file