Sumário Introdução Algoritmos e Estruturas de Dados 1 Parte 1 - Começando com o básico Criando nosso primeiro algoritmo Estruturas de dados primitivas Atribuição e declaração de variáveis Leitura e escrita de dados Estruturas condicionais e Operadores relacionais Operadores aritméticos Operadores lógicos Estruturas de repetição Funções e escopo Parte 2 - Conceitos avançados Introdução a ponteiros Estruturas de dados não primitivas Entendendo-recursão Retornando argumentos de funções recursivas Como a máquina interpreta seus códigos Parte 3 - Conhecendo POO e seus Princípios O que é Programação Orientada a Objetos? Criando nossa primeira classe Entendendo Encapsulação Entendendo Herança Entendendo Polimorfismo Algoritmos e Estruturas de Dados 2 Parte 1 - Complexidade e Programação Competitiva ] Complexidade e notação Big O Complexidade em funções recursivas Crescimento de funções - Notação Theta e Omega Programação competitiva Parte 3 - Algoritmos de pesquisa Busca linear Parte 4 - Ordenação Interna Quicksort Parte 5 - Tipos Abstratos de Dados (TAD) Parte 6 - Estruturas Flexíveis e Estáticas Parte 7 - Árvores e Tabela Hash Árvore Binária Algoritmos e Estruturas de Dados 3 CRUD Intercalação balanceada C Argumentos-de-entrada debug Introducao-ao-gdb Introducao-ao-valgrind ponteiro Ponteiros e Alocação de Memória em C string Strings em C Leitura-de-Strings-em-C Java Nocoes-basicas Argumentos-de-entrada Debug em Java java-debugger-tool visual-studio-debugger string String-em-Java Tratamento de Exceções em Java try-catch-e-o-throws COMO-CONTRIBUIR