DEV Community

Cover image for Explorando as Fundamentais Estruturas de Dados: Uma Introdução
Matheus 🇧🇷
Matheus 🇧🇷

Posted on

Explorando as Fundamentais Estruturas de Dados: Uma Introdução

Introdução

Seja bem-vindo a esta primeira publicação de uma série que pretendo fazer sobre estrutura de dados. Sou um estudante, em transição de carreira, que está estudando esta disciplina no tecnólogo em análise e desenvolvimento de sistemas, e gostaria de compartilhar tudo aquilo que estou aprendendo e estudando mais sobre o assunto.

Nesta série vamos explorar os blocos fundamentais no que diz respeito ao desenvolvimento de software e solução de problemas. Vamos começar!

Definição

Podemos pensar que Estrutura de Dados são conjuntos que armazenam dados de forma eficiente, fornecendo ao usuário operações que o auxiliam a trabalhar com estas estruturas (ordenar, buscar e outros).

Um conjunto de dados é um tipo abstrato de dados, estabelecendo uma relação, as funções e as operações que podem ser aplicados a estes dados. Assim, uma estrutura de dados é uma implementação de um tipo abstrato de dados.

Deste modo, temos alguns tipos de Estrutura de Dados como Vetores, Matrizes, Pilhas, Filas, Árvores, Hashtables e Grafos.

Básico

Complexidade Big O

Big O é uma forma de categorizarmos algoritmos em tempo de execução e consumo de memória com base no tamanho da entrada de dados fornecida. Big O não tenta ser uma medida exata, e sim uma ideia generalizada para compreender a ordem de grandeza do algoritmo.

E é importante entender isto pois é uma ferramenta que nos ajuda na tomada de decisões sobre qual estrutura de dados será implementada para determinado algoritmo pretendido. Sabendo como o algoritmo vai performar, nos dá uma segurança maior sobre a qualidade do programa que será desenvolvido.

Estrutura de Vetores e Matrizes

Essas estruturas de dados são homogêneas pois todos os elementos tem o mesmo tipo associado.

Desta maneira, temos os Vetores que é:

  • Variável composta homogênea unidimensional;
  • Formada por uma sequência de valores, todos do mesmo tipo, com o mesmo identificador e alocadas em sequência na memória.
  • Uma vez que todos os valores possuem o mesmo identificador, o que distingue um valor do outro é a sua posição nesta sequência (estrutura), aqui chamaremos esta posição de índice.

Todos os Vetores são Matrizes, a diferença é que a Matriz possui mais de uma dimensão, ou seja, Matriz é:

  • Variável composta homogênea multidimensional;
  • Formada por uma sequência de valores, todos do mesmo tipo, com o mesmo identificador e alocadas em sequência na memória.
  • Uma vez que todos os valores possuem o mesmo identificador, o que distingue um valor do outro é a sua posição nesta sequência (estrutura), aqui chamaremos esta posição de índice.

Pseudocódigo

// Declarando vetor
Declarar
    notas[3] real;

    // Atribuindo em Vetor
    notas[0] <- 9,0;
    notas[1] <- 8,0;
    notas[2] <- 9,5;

// Declarando matriz
Declarar
    notas[2][2] real;

    // Atribuindo em Matriz
    notas[0][0] <- 9,5;
    notas[0][1] <- 9,0;
    notas[1][0] <- 7,0;
    notas[1][1] <- 5.6;

// Mostrando Valores
Algoritmo MostrarVetor
inicio_algoritmo
    Declarar
        vet[25],i inteiro;

    para i de 0 até 24 passo + 1 faça
        escrever("Digite um valor inteiro");
        ler(vet[i]);
        escrever(vet[i]);
    fimpara;
fim_algoritmo

Enter fullscreen mode Exit fullscreen mode

Java

import javax.swing.JOptionPane;

public class SomaDeValores {

    public static void main(String[] args) {
        int tamanhoVetor = 10;
        int[] valores = new int[tamanhoVetor];

        for (int i = 0; i < tamanhoVetor; i++) {
            String entrada = JOptionPane.showInputDialog("Digite o valor " + (i + 1) + ":");
            valores[i] = Integer.parseInt(entrada);
        }

        int soma = 0;
        for (int valor : valores) {
            soma += valor;
        }

        JOptionPane.showMessageDialog(null, "A soma dos valores é: " + soma);
    }
}

Enter fullscreen mode Exit fullscreen mode

Typescript

  • Em Typescript não há um tipo específico chamado "vetor", mas os vetores são utilizados por meio de arrays.
  • Assim, pode-se trabalhar com arrays para representar estruturas de dados semelhantes aos vetores.
  • Arrays em Typescript é uma coleção ordenada de elementos do mesmo tipo (ou de tipos compatíveis) e é definido pela sintaxe dos colchetes [] ou Array<> = [].
function somarValores(array: number[]): number {
  let soma = 0;
  for (let i = 0; i < array.length; i++) {
    soma += array[i];
  }
  return soma;
}

// Array com 10 valores
const numeros: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// Chama a função para somar os valores da array
const resultado = somarValores(numeros);

console.log(`A soma dos valores é: ${resultado}`);

Enter fullscreen mode Exit fullscreen mode

Praticando

Gosto de praticar o que foi estudado resolvendo problemas na plataforma Codewars. Desta forma consigo aplicar conceitos teóricos para a resolução de problemas e desafios. Vamos praticar!

8 kyu - Add Length

Descrição do problema:

E se precisarmos que o comprimento das palavras, separadas por um espaço, seja adicionado ao final da própria palavra e que seja retornado como um array?

Exemplo(Entrada --> Saída)

"apple ban" --> ["apple 5", "ban 3"]
"you will win" --> ["you 3", "will 4", "win 3"]
Enter fullscreen mode Exit fullscreen mode

Sua tarefa é escrever uma função que receba uma String e retorne um Array com o comprimento de cada palavra adicionado a cada elemento.

Solução:

export function addLength(str: string): string[] {
  //Transformando a string em uma array
  let strArray = str.split(' ');

  //Criando uma array vazia de Strings para a resposta
  let strReturnArray: string[] = [];

  //Loop para iterar sobre todos os elementos desta array de strings
  for (let i = 0; i < strArray.length; i++) {
    //Template: "String StringLength"
    let str = `${strArray[i]} ${strArray[i].length}`;

    //Utilizando uma operação de Arrays para adicionar essa string na Array.
    strReturnArray.push(str);
  }

  return strReturnArray;
}
Enter fullscreen mode Exit fullscreen mode

Conclusão

Chegamos ao final desta publicação sobre Estrutura de Dados. Este será a primeira publicação de uma série que quero fazer utilizando minhas anotações de estudo, e para que possa compartilhar aquilo que estou aprendendo e como estudo.

Até a próxima!

Top comments (0)