Logo Passei Direto
Buscar

02 David Tobias Nunes - [APA - AB3] - Estrutura de dados (Tecnologia em ADS)

User badge image
Felipe Smitch

em

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

Prévia do material em texto

2
AB3 - ATIVIDADE PRÁTICA DE APRENDIZAGEM
Curso: Tecnologia em Análise e Desenvolvimento de Sistemas
Disciplina: Estrutura de Dados
Atividade: APA – Atividade Prática de Aprendizagem (AB3)
Discente: David Tobias Nunes | RA: 286522
	
Enunciado: 
As estruturas de dados definem a organização, métodos de acesso e opções de processamento para coleções de itens de informação manipulados por determinado programa. Elas ajudam a estruturar, organizar, armazenar e acessar os dados.
Considere o seguinte problema:
Em determinado momento, você percebeu que guardou todos os livros que leu e que ganhou ao longo de sua vida. Com a intenção de organizá-los, criou um programa e inseriu os dados de todos os seus livros.
​​​​​​​Passados alguns anos, você resolveu doar alguns livros e com isso veio a necessidade de atualizar o seu programa, removendo os que foram doados. Para tanto, vai precisar escrever o código para removê-los.
	
Algoritmo
Algoritmo: Sistema de Gerenciamento de Biblioteca
Estrutura de Dados:
1. Definir estrutura Livro com campos: 
· id (inteiro)
· titulo (string)
· autor (string)
· ano (inteiro)
Constantes:
· MAX_LIVROS = 100 (limite máximo de livros)
· ARQUIVO_BIBLIOTECA = "Database_bibliotecaDavid.csv"
Funções Principais:
1. Função configurarAcentuacao():
· Configura o suporte a caracteres em português
· Define codificação de caracteres para entrada e saída
2. Função carregarLivros():
· Objetivo: Carregar livros de um arquivo CSV
· Passos:
a. Abrir arquivo de biblioteca
b. Pular linha de cabeçalho
c. Ler linhas do arquivo
d. Converter dados para estrutura Livro
e. Armazenar livros em vetor
f. Retornar total de livros carregados
3. Função salvarLivros():
· Objetivo: Salvar livros no arquivo CSV
· Passos:
a. Abrir arquivo para escrita
b. Escrever cabeçalho
c. Percorrer vetor de livros
d. Escrever cada livro como linha no arquivo
4. Função cadastrarLivro():
· Objetivo: Adicionar novo livro
· Passos:
a. Verificar limite de livros
b. Gerar novo ID
c. Solicitar dados do livro (título, autor, ano)
d. Adicionar livro ao vetor
e. Salvar livros no arquivo
f. Mostrar mensagem de sucesso
5. Função removerLivroPorId():
· Objetivo: Remover livro específico
· Passos:
a. Procurar livro pelo ID
b. Reordenar vetor removendo livro
c. Atualizar total de livros
d. Salvar alterações no arquivo
6. Função exibirLivros():
· Objetivo: Mostrar lista de livros
· Passos:
a. Verificar se há livros
b. Exibir lista formatada
c. Mostrar detalhes de cada livro
7. Função principal (main()):
· Objetivo: Gerenciar fluxo do programa
· Passos:
a. Configurar ambiente
b. Carregar livros existentes
c. Mostrar menu de opções
d. Processar escolha do usuário: 
· Exibir livros
· Cadastrar livro
· Remover livro
· Sair do programa
Funções Auxiliares:
· limparTela(): Limpar tela do console
· tocarSom(): Reproduzir som de feedback
· pausar(): Aguardar pressionamento de tecla
· limparBuffer(): Limpar buffer de entrada
· gerarNovoId(): Gerar ID único para novo livro
Características Especiais:
· Persistência de dados em arquivo CSV (Planilha)
· Tratamento de cores no console
· Suporte a caracteres em português
· Validações de entrada
· Feedback sonoro
Fluxo Principal:
1. Configurar ambiente
2. Carregar livros existentes
3. Apresentar menu interativo
4. Permitir operações (exibir, cadastrar, remover)
5. Salvar alterações automaticamente
6. Encerrar quando solicitado
	
Pseudocódigo
ALGORITMO GerenciadorBiblioteca
CONSTANTES
 MAX_LIVROS = 100
 ARQUIVO_BIBLIOTECA = "Database_bibliotecaDavid.csv"
TIPO Livro
 id: INTEIRO
 titulo: CARACTERE
 autor: CARACTERE
 ano: INTEIRO
FIM TIPO
VARIÁVEIS GLOBAIS
 livros: VETOR[0..MAX_LIVROS] DE Livro
 totalLivros: INTEIRO
FUNÇÃO configurarAcentuacao()
 CONFIGURAR suporte a caracteres em português
FIM FUNÇÃO
FUNÇÃO carregarLivros(): INTEIRO
 VARIÁVEIS
 arquivo: ARQUIVO
 totalCarregados: INTEIRO = 0
 
 ABRIR arquivo PARA LEITURA
 SE arquivo NÃO EXISTE ENTÃO
 RETORNAR 0
 FIM SE
 PULAR linha de cabeçalho
 ENQUANTO NÃO fim do arquivo E totalCarregados maiorId ENTÃO
 maiorId = livros[i].id
 FIM SE
 FIM PARA
 RETORNAR maiorId + 1
FIM FUNÇÃO
FUNÇÃO cadastrarLivro()
 SE totalLivros >= MAX_LIVROS ENTÃO
 MOSTRAR "Limite máximo de livros atingido"
 RETORNAR FALSO
 FIM SE
 novoLivro.id = gerarNovoId()
 
 SOLICITAR titulo
 SOLICITAR autor
 SOLICITAR ano
 livros[totalLivros] = novoLivro
 totalLivros = totalLivros + 1
 
 salvarLivros()
 MOSTRAR "Livro cadastrado com sucesso"
FIM FUNÇÃO
FUNÇÃO removerLivroPorId(idRemover: INTEIRO)
 PARA i DE 0 ATÉ totalLivros - 1 FAÇA
 SE livros[i].id == idRemover ENTÃO
 PARA j DE i ATÉ totalLivros - 2 FAÇA
 livros[j] = livros[j + 1]
 FIM PARA
 totalLivros = totalLivros - 1
 salvarLivros()
 RETORNAR VERDADEIRO
 FIM SE
 FIM PARA
 RETORNAR FALSO
FIM FUNÇÃO
FUNÇÃO exibirLivros()
 SE totalLivros == 0 ENTÃO
 MOSTRAR "Nenhum livro cadastrado"
 RETORNAR
 FIM SE
 MOSTRAR cabeçalho da tabela
 PARA i DE 0 ATÉ totalLivros - 1 FAÇA
 MOSTRAR detalhes do livro livros[i]
 FIM PARA
FIM FUNÇÃO
FUNÇÃO principal()
 configurarAcentuacao()
 totalLivros = carregarLivros()
 REPITA
 LIMPAR tela
 MOSTRAR menu:
 "1. Exibir Livros"
 "2. Cadastrar Livro"
 "3. Remover Livro"
 "4. Sair"
 
 LER opcao
 ESCOLHA opcao
 CASO 1:
 exibirLivros()
 
 CASO 2:
 cadastrarLivro()
 
 CASO 3:
 SE totalLivros > 0 ENTÃO
 MOSTRAR lista de livros
 SOLICITAR ID para remover
 SE removerLivroPorId(idSolicitado) ENTÃO
 MOSTRAR "Livro removido com sucesso"
 SENÃO
 MOSTRAR "Livro não encontrado"
 FIM SE
 SENÃO
 MOSTRAR "Não há livros para remover"
 FIM SE
 
 CASO 4:
 MOSTRAR "Encerrando programa"
 
 CASO CONTRÁRIO:
 MOSTRAR "Opção inválida"
 FIM ESCOLHA
 ATÉ opcao == 4
FIM ALGORITMO
Linguagem C
#include 
#include 
#include 
#include 
#include 
#include 
/* Definições de cores para terminal Windows usando system color */
#define COR_PADRAO system("color 07")
#define COR_ERRO system("color 0C")
#define COR_SUCESSO system("color 0A")
#define COR_ALERTA system("color 0E")
#define COR_INFO system("color 0B")
#define MAX_LIVROS 100
#define MAX_TITULO 200
#define MAX_AUTOR 200
#define ARQUIVO_BIBLIOTECA "Database_bibliotecaDavid.csv"
/* Estrutura para representar um livro */
typedef struct {
    int id;
    char titulo[MAX_TITULO];
    char autor[MAX_AUTOR];
    int ano;
} Livro;
/* Protótipos de funções */
void configurarAcentuacao(void);
int carregarLivros(Livro livros[]);
void salvarLivros(Livro livros[], int totalLivros);
int removerLivroPorId(Livro livros[], int *totalLivros, int idRemover);
void exibirLivros(Livro livros[], int totalLivros);
int cadastrarLivro(Livro livros[], int *totalLivros);
int gerarNovoId(Livro livros[], int totalLivros);
void limparBuffer(void);void pausar(void);
void limparTela(void);
void tocarSom(int frequencia, int duracao);
void exibirListaSimples(Livro livros[], int totalLivros);
/* Função para limpar a tela */
void limparTela(void) {
    system("cls");
    COR_PADRAO;
}
/* Função para tocar som */
void tocarSom(int frequencia, int duracao) {
    Beep(frequencia, duracao);
}
/* Função para configurar acentuação */
void configurarAcentuacao(void) {
    SetConsoleCP(1252);
    SetConsoleOutputCP(1252);
    setlocale(LC_ALL, "Portuguese");
}
/* Função para pausar o programa */
void pausar(void) {
    printf("\n\nPressione qualquer tecla para continuar...");
    getch();
}
/* Função para limpar buffer de entrada */
void limparBuffer(void) {
    int c;
    while ((c = getchar()) != '\n' && c != EOF);
}
/* Função para exibir lista simples de livros */
void exibirListaSimples(Livro livros[], int totalLivros) {
    int i;
    printf("===============================================================\n");
    printf("| ID  | Titulo                | Autor             | Ano       |\n");
    printf("|-----|----------------------|-------------------|------------|\n");
    
    for (i = 0; i maiorId) {
            maiorId = livros[i].id;
        }
    }
    return maiorId + 1;
}
/* Função para cadastrar um novo livro */
int cadastrarLivro(Livro livros[], int *totalLivros) {
    Livro novoLivro;
    char buffer[MAX_TITULO];
    if (*totalLivros >= MAX_LIVROS) {
        COR_ERRO;
        printf("Limite maximo de livros atingido!\n");
        tocarSom(500, 300);
        pausar();
        return 0;
    }
    limparTela();
    COR_INFO;
    novoLivro.id = gerarNovoId(livros, *totalLivros);
    printf("Digite o titulo do livro: ");
    gets(buffer);
    strncpy(novoLivro.titulo, buffer, MAX_TITULO - 1);
    novoLivro.titulo[MAX_TITULO - 1] = '\0';
    printf("Digite o autor do livro: ");
    gets(buffer);
    strncpy(novoLivro.autor, buffer, MAX_AUTOR - 1);
    novoLivro.autor[MAX_AUTOR - 1] = '\0';
    printf("Digite o ano de publicacao: ");
    scanf("%d", &novoLivro.ano);
    limparBuffer();
    livros[*totalLivros] = novoLivro;
    (*totalLivros)++;
    salvarLivros(livros, *totalLivros);
    COR_SUCESSO;
    printf("\nLivro cadastrado com sucesso! ID: %d\n", novoLivro.id);
    tocarSom(1000, 200);
    pausar();
    return 1;
}
/* Função para carregar livros do arquivo CSV */
int carregarLivros(Livro livros[]) {
    FILE *arquivo;
    int totalLivros = 0;
    char linha[500];
    char *token;
    arquivo = fopen(ARQUIVO_BIBLIOTECA, "r");
    if (arquivo == NULL) {
        COR_ALERTA;
        printf("Sem arquivo de biblioteca existente. Iniciando novo.\n");
        return 0;
    }
    /* Pular a linha de cabeçalho */
    fgets(linha, sizeof(linha), arquivo);
    while (fgets(linha, sizeof(linha), arquivo) && totalLivrostocarSom(700, 500);
                break;
            
            default:
                COR_ERRO;
                printf("Opcao invalida!\n");
                tocarSom(500, 300);
                pausar();
        }
    } while (opcao != 4);
    return 0;
}
Captura de tela
Código fonte versão sem fundo
#include 
#include 
#include 
#include 
#include 
#include 
/* Definições de cores para terminal Windows usando system color */
#define COR_PADRAO system("color 07")
#define COR_ERRO system("color 0C")
#define COR_SUCESSO system("color 0A")
#define COR_ALERTA system("color 0E")
#define COR_INFO system("color 0B")
#define MAX_LIVROS 100
#define MAX_TITULO 200
#define MAX_AUTOR 200
#define ARQUIVO_BIBLIOTECA "Database_bibliotecaDavid.csv"
/* Estrutura para representar um livro */
typedef struct {
 int id;
 char titulo[MAX_TITULO];
 char autor[MAX_AUTOR];
 int ano;
} Livro;
/* Protótipos de funções */
void configurarAcentuacao(void);
int carregarLivros(Livro livros[]);
void salvarLivros(Livro livros[], int totalLivros);
int removerLivroPorId(Livro livros[], int *totalLivros, int idRemover);
void exibirLivros(Livro livros[], int totalLivros);
int cadastrarLivro(Livro livros[], int *totalLivros);
int gerarNovoId(Livro livros[], int totalLivros);
void limparBuffer(void);
void pausar(void);
void limparTela(void);
void tocarSom(int frequencia, int duracao);
void exibirListaSimples(Livro livros[], int totalLivros);
/* Função para limpar a tela */
void limparTela(void) {
 system("cls");
 COR_PADRAO;
}
/* Função para tocar som */
void tocarSom(int frequencia, int duracao) {
 Beep(frequencia, duracao);
}
/* Função para configurar acentuação */
void configurarAcentuacao(void) {
 SetConsoleCP(1252);
 SetConsoleOutputCP(1252);
 setlocale(LC_ALL, "Portuguese");
}
/* Função para pausar o programa */
void pausar(void) {
 printf("\n\nPressione qualquer tecla para continuar...");
 getch();
}
/* Função para limpar buffer de entrada */
void limparBuffer(void) {
 int c;
 while ((c = getchar()) != '\n' && c != EOF);
}
/* Função para exibir lista simples de livros */
void exibirListaSimples(Livro livros[], int totalLivros) {
 int i;
 printf("===============================================================\n");
 printf("| ID | Titulo | Autor | Ano |\n");
 printf("|-----|----------------------|-------------------|------------|\n");
 
 for (i = 0; i maiorId) {
 maiorId = livros[i].id;
 }
 }
 return maiorId + 1;
}
/* Função para cadastrar um novo livro */
int cadastrarLivro(Livro livros[], int *totalLivros) {
 Livro novoLivro;
 char buffer[MAX_TITULO];
 if (*totalLivros >= MAX_LIVROS) {
 COR_ERRO;
 printf("Limite maximo de livros atingido!\n");
 tocarSom(500, 300);
 pausar();
 return 0;
 }
 limparTela();
 COR_INFO;
 novoLivro.id = gerarNovoId(livros, *totalLivros);
 printf("Digite o titulo do livro: ");
 gets(buffer);
 strncpy(novoLivro.titulo, buffer, MAX_TITULO - 1);
 novoLivro.titulo[MAX_TITULO - 1] = '\0';
 printf("Digite o autor do livro: ");
 gets(buffer);
 strncpy(novoLivro.autor, buffer, MAX_AUTOR - 1);
 novoLivro.autor[MAX_AUTOR - 1] = '\0';
 printf("Digite o ano de publicacao: ");
 scanf("%d", &novoLivro.ano);
 limparBuffer();
 livros[*totalLivros] = novoLivro;
 (*totalLivros)++;
 salvarLivros(livros, *totalLivros);
 COR_SUCESSO;
 printf("\nLivro cadastrado com sucesso! ID: %d\n", novoLivro.id);
 tocarSom(1000, 200);
 pausar();
 return 1;
}
/* Função para carregar livros do arquivo CSV */
int carregarLivros(Livro livros[]) {
 FILE *arquivo;
 int totalLivros = 0;
 char linha[500];
 char *token;
 arquivo = fopen(ARQUIVO_BIBLIOTECA, "r");
 if (arquivo == NULL) {
 COR_ALERTA;
 printf("Sem arquivo de biblioteca existente. Iniciando novo.\n");
 return 0;
 }
 /* Pular a linha de cabeçalho */
 fgets(linha, sizeof(linha), arquivo);
 while (fgets(linha, sizeof(linha), arquivo) && totalLivroslimparTela();
 COR_ERRO;
 printf("Nao ha livros cadastrados para remover!\n");
 tocarSom(500, 300);
 pausar();
 break;
 }
 /* Mostra a lista de livros primeiro */
 limparTela();
 COR_INFO;
 printf("=== Lista de Livros Disponiveis para Remocao ===\n\n");
 exibirListaSimples(livros, totalLivros);
 printf("\n");
 /* Pede o ID para remover */
 printf("Digite o ID do livro que deseja remover: ");
 scanf("%d", &idRemover);
 limparBuffer();
 /* Tenta remover o livro */
 if (removerLivroPorId(livros, &totalLivros, idRemover)) {
 COR_SUCESSO;
 printf("Livro removido com sucesso!\n");
 } else {
 COR_ERRO;
 printf("Livro nao encontrado.\n");
 tocarSom(500, 300);
 }
 pausar();
 }
 break;
 
 case 4:
 COR_ALERTA;
 printf("Encerrando o programa...\n");
 tocarSom(700, 500);
 break;
 
 default:
 COR_ERRO;
 printf("Opcao invalida!\n");
 tocarSom(500, 300);
 pausar();
 }
 } while (opcao != 4);
 return 0;
}
image4.png
image5.png
image6.png
image7.png
image8.png
image9.png
image10.png
image11.png
image12.png
image13.png
image14.png
image1.png
image2.png
image3.png
1
 
 
AB3 
-
 
ATIVIDADE PRÁTICA DE APRENDIZAGEM
 
Curso:
 
Tecnologia em Análise e Desenvolvimento de 
Sistemas
 
Disciplina
:
 
Estrutura de Dados
 
Atividade
:
 
APA 
–
 
Atividade 
Prática de Aprendizagem 
(AB3
)
 
Discente:
 
David Tobias Nunes
 
|
 
RA:
 
286522
 
 
 
Enunciado:
 
 
As estruturas de dados
 
definem a organização, métodos de acesso e opções de 
processamento para coleções de itens de informaçã
o manipulados por determinado 
programa.
 
Elas ajudam a estruturar, organizar, armazenar e acessar os dados.
 
Considere o seguinte problema
:
 
Em determinado momento, você percebeu que guardou todos os livros que leu e que 
ganhou ao longo de sua vida. Com a in
tenção de organizá
-
los,
 
criou um programa e 
inseriu os dados de todos os seus livros.
 
Passados alguns anos, você resolveu doar alguns livros e com isso veio a necessidade de 
atualizar o seu programa, removendo os que foram doados. Para tanto, vai 
pr
ecisar
 
escrever o código para removê
-
los.
 
 
 
Algoritmo
 
Algoritmo: Sistema de Gerenciamento de Biblioteca
 
Estrutura de Dados:
 
1.
 
Definir estrutura Livro com campos: 
 
o
 
id (inteiro)
 
o
 
titulo (string)
 
o
 
autor (string)
 
o
 
ano (inteiro)
 
Constantes:
 
·
 
MAX_LIVROS = 100 (limite máximo de livros)
 
·
 
ARQUIVO_BIBLIOTECA = "Database_bibliotecaDavid.csv"
 
Funções Principais:
 
1.
 
Função configurarAcentuacao():
 
o
 
Configura o suporte a caracteres em português
 
o
 
Define codificação de caracteres para entrada e saída
 
1 
 
AB3 - ATIVIDADE PRÁTICA DE APRENDIZAGEM 
Curso: Tecnologia em Análise e Desenvolvimento de Sistemas 
Disciplina: Estrutura de Dados 
Atividade: APA – Atividade Prática de Aprendizagem (AB3) 
Discente: David Tobias Nunes | RA: 286522 
 
Enunciado: 
As estruturas de dados definem a organização, métodos de acesso e opções de 
processamento para coleções de itens de informação manipulados por determinado 
programa. Elas ajudam a estruturar, organizar, armazenar e acessar os dados. 
Considere o seguinte problema: 
Em determinado momento, você percebeu que guardou todos os livros que leu e que 
ganhou ao longo de sua vida. Com a intenção de organizá-los, criou um programa e 
inseriu os dados de todos os seus livros. 
Passados alguns anos, você resolveu doar alguns livros e com isso veio a necessidade de 
atualizar o seu programa, removendo os que foram doados. Para tanto, vai 
precisar escrever o código para removê-los. 
 
Algoritmo 
Algoritmo: Sistema de Gerenciamento de Biblioteca 
Estrutura de Dados: 
1. Definir estrutura Livro com campos: 
o id (inteiro) 
o titulo (string) 
o autor (string) 
o ano (inteiro) 
Constantes: 
 MAX_LIVROS = 100 (limite máximo de livros) 
 ARQUIVO_BIBLIOTECA = "Database_bibliotecaDavid.csv" 
Funções Principais: 
1. Função configurarAcentuacao(): 
o Configura o suporte a caracteres em português 
o Define codificação de caracteres para entrada e saída

Mais conteúdos dessa disciplina