Casa do Código - Livros e Tecnologia

  • Programação
  • Lógica
  • Java
  • .NET
  • PHP
  • Games
  • OO
  • Funcional
  • Python
  • Outros
  • Todos
  • Mobile
  • iOS
  • Android
  • Multiplataforma
  • Outros
  • Todos
  • Front-end
  • HTML e CSS
  • JavaScript
  • Outros
  • Todos
  • Infraestrutura
  • Web
  • Dados
  • Outros
  • Todos
  • Business
  • Startups
  • Marketing Digital
  • Gestão
  • Agile
  • Outros
  • Todos
  • Design & UX
  • Você tem 0 itens na sacola 0 Abrir navegação por categorias e busca Ir para ao topo da página

    Use o código e tenha 10% de desconto!

    Estruturas de Dados Domine as práticas essenciais em C, Java, C#, Python e JavaScript

    Thiago Leite e Carvalho
    Livro de Estruturas de Dados

    *Você terá acesso às futuras atualizações do livro.

    Sobre o livro

    É muito comum iniciantes no mundo da computação terem dificuldades no entendimento dos conceitos sobre estruturas de dados. Geralmente, isso é decorrente de um maior nível de abstração exigido para compreender o funcionamento de tais estruturas, nível que nem sempre se está preparado para assimilar e compreender. Outro fator recorrente é que mesmo pessoas com certo "nível avançado" na computação também têm dificuldade de utilizar as estruturas de dados existentes de forma efetiva e satisfatória, sendo isso um efeito colateral também relativo à dificuldade de assimilação e compreensão.

    Somada a essas "questões pessoais", ainda temos a dificuldade de encontrar livros dedicados em apresentar e explicar tais estruturas de forma minuciosa e focada, assim como todos os conceitos que também fazem parte do universo das estruturas de dados. Tudo isso termina por dificultar a aplicação adequada das estruturas de dados no desenvolvimento de software. Por fim, se for acrescido a estes problemas o fato de que cada linguagem tem suas próprias implementações de tais estruturas, temos um grande problema que pode ocasionar graves erros no processo de codificação.

    É com base nesses fatos que este livro tem como principal intuito expor, da forma mais didática e simplificada possível, todos os conceitos pertences às estruturas de dados. Para atingir este objetivo, o livro é dividido em duas partes:

    * Parte 1 - Dentro da Matrix: Nesta primeira parte, as "entranhas" das estruturas de dados serão expostas para conseguirmos compreender seus funcionamentos e aplicabilidades.

    * Parte 2 - O mundo real: Após os fundamentos terem sido expostos, é apresentado como as principais linguagens do mercado (Java, C#, Python e JavaScript) implementam tais estruturas. Nessa parte, toda a API destas linguagens são exploradas para facilitar o uso das estruturas de dados.

    É válido ressaltar que, para facilitar o alcance destes objetivos, este livro foca exclusivamente nas estruturas de dados. Ou seja, um conceito recorrentemente exposto de forma conjunta como busca e ordenação não estará presente neste livro. Todavia, ele pode ser encontrado em literaturas específicas de algoritmos e complexidade de algoritmos. Outra observação relevante ao modo como este livro é organizado é o fato de que, na Parte 1, as explicações sobre as teorias das estruturas de dados são mais detalhadas; por outro lado, na Parte 2, que foca nas linguagens, apenas focamos na definição e no uso de tais estruturas. Assim, temos a possibilidade de explorar algumas nuanças de cada linguagem para tais estruturas.

    Por fim, os códigos de exemplos e exercícios da Parte 1 deste livro são feitos na linguagem C usando a ferramenta Eclipse IDE for C/C++ Developers. Tal escolha vem do fato de que, com esta linguagem, conseguimos apresentar de forma mais minuciosa como a implementação das estruturas ocorrem em suas entranhas.

    Este livro não é um "curso de C", então é de se esperar que o leitor já tenha um conhecimento prévio desta linguagem, pois muitos dos detalhes do uso dela não são explicados. Todavia, alguns dos conceitos presentes em C e que são relevantes para o livro são explicados de forma mais detalhada em alguns apêndices. Caso necessário, leia-os.

    Também é válido frisar que, quando as estruturas de dados nas linguagens Java, C#, Python e JavaScript forem expostas, elas serão integralmente apresentadas nestas linguagens, através de códigos nativos de tais linguagens ou implementadas "à mão", caso necessário. Os códigos nestas linguagens foram criados de forma a facilitar ao máximo o entendimento deles. Talvez, com o passar do tempo, note-se que eles podem ser melhorados — e sugiro isso como exercício. Todos os códigos (completos e relevantes) aqui expostos estarão no meu perfil do GitHub (em https://github.com/thiagoleiteecarvalho), nos repositórios que iniciam com "ed".

    Espero que a leitura seja agradável e enriquecedora. Com a ajuda da Casa do Código, trabalhei de forma árdua para explicar, da forma mais amigável e instigante, os conceitos das estruturas de dados. Este livro é a realização de um projeto que visa fornecer bases sólidas para o uso e entendimento delas. Agradeço a escolha deste livro.

    Prefácio

    As estruturas de dados são fundamentais para qualquer pessoa desenvolvedora, pois são a base para a construção de algoritmos eficientes e sistemas computacionais robustos. Elas permitem a programadores e programadoras armazenarem e manipularem dados de forma organizada e otimizada, o que resulta em programas mais rápidos e eficientes. Além disso, as estruturas de dados são essenciais para a solução de problemas complexos em diversas áreas, como na inteligência artificial, onde pode ser usada em Machine Learning; no processamento de imagens, para a detecção de padrões; na análise de dados, para avaliações quantitativas e analíticas; na Engenharia de Software, para a construção de soluções que visam à automatização de atividades e processos, entre diversas outras. Ou seja, qualquer que seja o curso (Engenharia da Computação, Análise e Desenvolvimento de Sistemas ou Ciência da Computação), as Estruturas de Dados são uma teoria essencial para a formação de profissionais. Portanto, um entendimento eficaz das estruturas de dados é crucial para que os profissionais da área de computação desenvolvam habilidades sólidas e estejam preparados para enfrentar os desafios cada vez mais complexos na área da Tecnologia da Informação.

    Conheço o Thiago desde 2001 e venho acompanhando o seu caminhar desde a época da universidade, quando ele foi meu aluno nas disciplinas de Estruturas de Dados e Pesquisa Operacional. Atualmente somos colegas de trabalho: em 2012, comecei a trabalhar na mesma empresa que ele. Thiago sempre se destacou no desenvolvimento na linguagem C e em Java com Orientação a Objetos e, por isso, já foi convidado a ministrar em empresas e universidades diversos cursos, como Java, Hibernate, Spring, entre outros. Também já trabalhou com a plataforma .Net por 4 anos.

    Com o início da carreira de professor universitário, juntamente com os anos de experiência em desenvolvimento, ele percebeu a dificuldade de seus alunos e alunas – e até mesmo de profissionais com experiência em programação – de realmente compreenderem e aplicarem os conceitos práticos de Estruturas de Dados. Essas pessoas cometiam falhas na escolha das estruturas de dados mais adequadas e eficientes para a resolução de problemas específicos. Ele também percebeu que existia uma lacuna de textos didáticos, focados em explicar detalhadamente as estruturas de dados clássicas e também em abordá-las nas principais linguagens que o mercado utiliza. Por tudo isso, ele resolveu escrever este livro.

    Thiago teve o cuidado de selecionar as principais e mais utilizadas estruturas de dados e apresentar, de forma clara e objetiva, os principais conceitos de cada uma delas. Além de vários exemplos (códigos) explicados de forma minuciosa, são apresentadas também implementações em várias linguagens de programação. A linguagem C é a mais utilizada no decorrer do livro, mas também são exploradas as linguagens Java, C#, Python e JavaScript. A organização dos conceitos de forma fluida e gradativa facilita o aprendizado e desmistifica a complexidade atribuída a esse assunto.

    Um grande diferencial deste livro é que ele aborda as estruturas de dados (ED) de forma simples, concisa e com exemplos do nosso dia a dia, mostrando que elas são mais naturais do que imaginamos. O livro inicia com conceitos básicos e inerentes a Estruturas de Dados e Computação, passando pelas EDs mais básicas e seguindo até as mais avançadas. Nessa trilha, sempre são fornecidos textos e códigos comentados com o intuito de facilitar a absorção do conteúdo. Para finalizar, vários exercícios são apresentados para complementar o aprendizado e todos eles estão resolvidos e disponíveis para leitores e leitoras.

    Tenho certeza de que, ao terminar a leitura deste livro, você será uma pessoa desenvolvedora diferenciada e mais preparada para usar as estruturas de dados da melhor forma possível. Embarque com Thiago nesta desafiadora e engrandecedora caminhada de como organizar os dados e ter melhor desempenho nos seus algoritmos. Boa leitura!

    — Maikol Magalhães Rodrigues

    Sumário

    • Parte 1: Dentro da Matrix
    • 1 Introdução
    • 2 Conceitos básicos
      • 2.1 O que é dado?
      • 2.2 O que é estrutura?
      • 2.3 O que são estruturas de dados?
      • 2.4 O que é informação?
      • 2.5 O que é TD e TAD?
      • 2.6 O que é um ponteiro?
      • 2.7 Memória
      • 2.8 Resumo
    • 3 Vetor e Matriz
      • 3.1 Fundamentos
      • 3.2 Vetores
      • 3.3 Matrizes
      • 3.4 Exercícios
    • 4 Pilha
      • 4.1 Fundamentos
      • 4.2 Operações
      • 4.3 Implementação
      • 4.4 Exemplos de uso
      • 4.5 Exercícios
    • 5 Fila
      • 5.1 Fundamentos
      • 5.2 Operações
      • 5.3 Tipos de fila
      • 5.4 Implementação
      • 5.5 Exemplos de uso
      • 5.6 Exercícios
    • 6 Lista
      • 6.1 Fundamentos
      • 6.2 Operações
      • 6.3 Tipos de listas
      • 6.4 Implementação
      • 6.5 Exemplos de uso
      • 6.6 Exercícios
    • 7 Vetor/Matriz vs. Pilha vs. Fila vs. Lista
    • 8 Árvore
      • 8.1 Fundamentos
      • 8.2 Operações
      • 8.3 Tipos de árvores
      • 8.4 Ordenação
      • 8.5 Implementação
      • 8.6 Exemplos de uso
      • 8.7 Exercícios
    • 9 Grafo
      • 9.1 Fundamentos
      • 9.2 Operações
      • 9.3 Tipos de grafos
      • 9.4 Representações
      • 9.5 Problemas clássicos
      • 9.6 Algoritmos importantes
      • 9.7 Exemplos de uso
      • 9.8 Só isso sobre grafos?
    • 10 Outras estruturas de grande relevância
      • 10.1 Set (conjunto)
      • 10.2 Tabela de dispersão (Hashtable)
      • 10.3 Heap
    • Parte 2: O mundo real
    • 11 Estruturas de Dados em Java
      • 11.1 Vetor e Matriz
      • 11.2 Pilha
      • 11.3 Fila
      • 11.4 Lista
      • 11.5 Árvore
      • 11.6 Set
      • 11.7 Tabela de dispersão (Hashtable)
    • 12 Estruturas de Dados em C#
      • 12.1 Vetor e Matriz
      • 12.2 Pilha
      • 12.3 Fila
      • 12.4 Lista
      • 12.5 Árvore
      • 12.6 Set
      • 12.7 Tabela de dispersão (Hashtable)
    • 13 Estruturas de Dados em Python
      • 13.1 Vetor e Matriz
      • 13.2 Pilha
      • 13.3 Fila
      • 13.4 Lista
      • 13.5 Árvore
      • 13.6 Set
      • 13.7 Tabela de dispersão (Hashtable)
      • 13.8 Tuple
    • 14 Estruturas de Dados em JavaScript
      • 14.1 Vetor e Matriz
      • 14.2 Pilha
      • 14.3 Fila
      • 14.4 Lista
      • 14.5 Árvore
      • 14.6 Set
      • 14.7 Tabela de dispersão (Hashtable)
    • Parte 3: Conclusão e apêndices
    • 15 Chegamos ao fim
    • 16 Referências bibliográficas
      • 16.1 Livros
      • 16.2 Links
    • 17 Apêndice I: Ponteiro em C
    • 18 Apêndice II: Struct em C
    • 19 Apêndice III: Funções nativas
    • 20 Apêndice IV: Recursividade

    Dados do produto

    Número de páginas:
    320
    ISBN:
    978-85-5519-338-5
    Data publicação:
    06/2023. Atualizado em 02/2024.
    Fórum de discussões

    Compartilhe!

    Compartilhe no Facebook Compartilhe no Twitter

    *Você terá acesso às futuras atualizações do livro.

    altLogoFooter

    Links da
    Casa do Código

    • Meus ebooks
    • Sobre a Casa do Código
    • Todos os livros
    • Nossas coleções
    • Quero escrever um livro ou fazer parceria
    • Perguntas Frequentes
    • Política de Privacidade
    • Fale conosco

    Nas redes sociais

    • /CasaDoCodigo
    • @casadocodigo
    • @casadocodigo

    Receba novidades e lançamentos

    Este site aceita Pix, Cartão de Crédito, Débito

    • pagarme
    • paypal

    Grupo Alura

    • Educação em Tecnologia

      • FIAP
      • Casa do Código
      • PM3 - Cursos de Produto
    • Mais Alura

      • Alura Start
      • Alura Língua
      • Alura Para Empresas
      • Alura LATAM
    • Comunidade

      • Tech Guide
      • 7 days of code
      • Hipsters ponto Jobs
    • Podcasts

      • Hipsters ponto Tech
      • Dev sem Fronteiras
      • Layers ponto Tech
      • Like a Boss
      • Scuba Dev