Encontrar notas por palavras-chave é um projeto prático em C++ para quem já conhece os fundamentos da linguagem. Você transformará algumas palavras lembradas em uma ferramenta de busca local reutilizável que encontra todas as notas correspondentes em várias pastas e mostra onde essas palavras realmente aparecem.
O curso combina dois laboratórios guiados com um desafio independente. Primeiro, você relacionará palavras a identidades de documentos em um índice. Depois combinará palavras de consulta para encontrar todos os documentos que as contenham. Por fim, aplicará as mesmas regras a outra coleção de notas. Cada laboratório fornece suas próprias notas e código inicial, sem depender de arquivos do ambiente anterior.
O que você aprenderá
Ao concluir o curso, você poderá:
- identificar documentos pelo caminho relativo, mantendo separados os arquivos com o mesmo nome em pastas diferentes;
- criar com
mapesetum índice de palavras para conjuntos de documentos, sem duplicar documentos por palavras repetidas; - aplicar uma regra de palavras inteiras baseada em letras ASCII, sem distinguir maiúsculas e minúsculas ASCII;
- combinar conjuntos candidatos com AND para retornar todos os documentos que contenham todas as palavras da consulta;
- mostrar caminhos reais, números de linha e linhas originais correspondentes, sem duplicar resultados de linha;
- reconstruir o índice das notas de prática atuais ao executar novamente o programa, preservando os originais de referência.
Para quem é este curso
Este curso é indicado para estudantes de C++ que querem usar contêineres padrão e leitura de arquivos para criar um programa de busca útil com regras claras e verificáveis.
Pré-requisitos: Navegação básica no terminal e familiaridade com strings, funções, vector, fluxos de arquivos e exceções básicas de C++. Os laboratórios guiados apresentam as operações necessárias de map e set, identidades por caminho relativo e interseção de conjuntos.
Ambiente de aprendizagem: A LabEx fornece um ambiente Linux preparado no navegador, com compilador C++17, código inicial, coleções de notas e Terminal. O código de apoio para carregar arquivos, separar palavras e formatar a saída está preparado. Os comandos e as mensagens do programa ficam em inglês; os nomes e textos das notas mantêm o conteúdo fornecido.
Perguntas frequentes
Todas as palavras precisam estar na mesma linha?
Não. AND se aplica ao documento inteiro. Palavras diferentes podem aparecer em linhas diferentes. O resultado mostra uma vez cada linha original que contenha qualquer palavra da consulta, para você localizar a evidência.
Essa busca entende todos os idiomas?
A regra se limita a sequências de letras ASCII, convertendo maiúsculas ASCII em minúsculas; os outros bytes separam palavras. cat e catalog são palavras diferentes. Os nomes de arquivos Unicode e as linhas originais são preservados, mas o projeto não oferece segmentação multilíngue geral.
Como as notas alteradas entram no índice?
Cada execução relê os arquivos atuais e cria um índice novo em memória. Execute novamente o programa após editar, adicionar ou excluir uma nota de prática permitida. Os originais de referência permanecem intactos; não há índice persistente nem serviço de atualização em segundo plano.

