💻
Micro-fundamentos - AEDs
  • 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
Powered by GitBook
On this page
  • Você vai aprender
  • Pré-requisitos
  • O Mundo simbolizado pelas Estruturas de Dados
  • Definindo Estruturas de Dados
  • Ponto flutuante (float e double)
  • Booleano (bool)
  • Caractere (char)
  • Ponteiro (*)
  • Conclusão
  • Links úteis
  1. Algoritmos e Estruturas de Dados 1
  2. Parte 1 - Começando com o básico

Estruturas de dados primitivas

Você vai aprender

  • O que são Estruturas de Dados.

  • Qual é a importância das Estruturas de Dados e escolher as Estruturas de Dados certa.

  • O que são as Estruturas de Dados Primitivas e quais são elas.

Pré-requisitos

  • Criando nosso primeiro algoritmo

O Mundo simbolizado pelas Estruturas de Dados

Quando trabalhamos com a construção de algoritmos, precisamos pensar nas entidades que iram suportar e representar os objetos dos nossos problemas fielmente. Um exemplo bem simples de visualizar esse conceito, é a calculadora, pois nela, precisamos trabalhar com números que possam ter casas decimais e para isso temos o "float" e o "double" para representar número com casas decimais. Entretanto, a pergunta fica: qual deles utilizar? Pois o "float" pode ter até 7 casas decimais enquanto o "double" pode guardar 15 casas decimais. Esta discussão é para ilustrar a importância das estruturas de dados: organizar dados de maneira que representem o nosso problema fidedignamente e eficiente.

Outro exemplo bem simples seria, por exemplo: suponhamos que estamos trabalhando em um aplicativo para uma padaria e temos que fazer um contador para a disponibilidade de um novo pão que estão vendendo agora. Neste caso não precisamos de números com casas decimais, pois não existe ter “2,43 pães disponíveis”, então nesse caso precisariamos trabalhar com números inteiros. Porém, simultaneamente, não tem como ter “-5 pães disponíveis”, e por isso precisamos trabalhar com números inteiros que não possuem o bit de sinal.

Definindo Estruturas de Dados

Inteiros são contêineres para valores numéricos que podem ser negativos ou positivos e não guardam casas decimais. Em sua forma geral, a quantidade máxima de bits que o inteiro pode carregar depende da arquitetura da CPU e do Sistema Operacional, mas tipicamente um Inteiro pode guardar 32 bits e podem guardar 4294967296 números, ou seja, um inteiro pode ir de -2147483648 até 2147483647.

Ponto flutuante (float e double)

Ponto flutuante descreve um número geralmente de 32 bits, sendo 24 desses bits para dígitos (o que em termos de arquitetura chamamos disso a mantissa) e 8 bits de expoente). Em termos básicos, "floats" guardam números que podem ter casas decimais, caso você precise de maior precisão, use o "double" que tem o dobro da precisão do "float".

Booleano (bool)

Inspirado pela álgebra booliana, criada pelo matemático inglês George Boole, um booliano descreve um valor que pode ser verdadeiro (true) representado pelo número 1, ou pode ser falso (false) representado pelo número 0. De forma geral, nós usamos boolianos para fazer lógicas condicionais.

Caractere (char)

Temos o "char" que pode guardar um caractere, este caractere irá depender de qual codificação for utilizada, em C tipicamente a codificação usada é ASCII que possui apenas 8 bits (1 byte). Para guardar caracteres de línguas latinas, como os caracteres com acentos, precisamos usar a codificação UTF-8, que utiliza 16 bits (2 bytes).

Ponteiro (*)

Por fim temos o ponteiro, que não entraremos em detalhes nesta aula, pois é um pouco mais complexo, mas basicamente um ponteiro descreve um tipo que guardar o endereço de outra variável em nosso programa.

Obs.: Também temos o tipo "void", mas entraremos em detalhe em próximas aulas.

Conclusão

E por enquanto é isto, existe mais algumas pequenas variações nos tipos de dados, como, por exemplo, o size_t do C, que permite guardar números inteiros sem sinal de 16 bits. Entretanto, deixaremos esses detalhes para você pesquisar por conta própria. Por agora, espero que você tenha entendido a importância das estruturas de dados e as suas formas primitivas na linguagem C.

Links úteis

  • Aula de AEDs1

  • Leia mais sobre tipos de Dados em C

PreviousCriando nosso primeiro algoritmoNextAtribuição e declaração de variáveis

Last updated 2 years ago