- Conheça as estruturas de dados que você usa todos os dias.
- 🔎 Mergulhe profundamente na estrutura básica das arrays
- 📚 Classification
- 👀 Reading Values – The Magic Begins!
- 1️⃣ Indices
- 2️⃣ Memória
- 🔧 Operações – Bastidores!
- 1️⃣ Inserção – Bem-vindo!
- ⚠️ Espere um minuto! O que acontece se o array estiver cheio?
- 2️⃣ Deletion- Bye, Bye!
- 3️⃣ Finding an Element
- 👋 Em Resumo…
- 👋 Obrigado!
Conheça as estruturas de dados que você usa todos os dias.
👋 Bem-vindo! Vamos começar com algum Contexto Vital. Deixe-me perguntar-lhe isto:
✅ Ouve música no seu smartphone?
✅ Mantém uma lista de contactos no seu telefone?
✅ Alguma vez viu um quadro de líderes durante uma competição?
Se a sua resposta for “sim” a alguma destas perguntas, então é quase certo que usou arrays e nem sequer o sabia! 😃 Os arrays são estruturas de dados muito poderosas que armazenam listas de elementos. Eles têm aplicações infinitas. Eles são muito importantes no mundo da informática.
Neste artigo, você aprenderá os prós e contras dos arrays, sua estrutura, operações e casos de uso.
Comecemos! 👍
🔎 Mergulhe profundamente na estrutura básica das arrays
Para entender como elas funcionam, é muito útil visualizar a memória do seu computador como uma grade, assim como a que se segue. Cada peça de informação é armazenada em um daqueles pequenos elementos (quadrados) que fazem a grade.
Arrays aproveita esta estrutura de “grade” para armazenar listas de informações relacionadas em locais de memória adjacentes para garantir extrema eficiência para encontrar esses valores. 🔳🔳🔳🔳🔳
Pode pensar em arrays como este:
Os seus elementos estão ao lado uns dos outros na memória. Se você precisar acessar mais de um deles, o processo é extremamente otimizado, pois seu computador já sabe onde o valor está localizado.
Fantástico, certo? Vamos aprender como isto funciona nos bastidores! 😃
📚 Classification
Arrays are classified as Homogeneous Data Structures because they store elements of the same type.
They can store numbers, strings, boolean values (true and false), characters, objects, and so on. Mas uma vez definido o tipo de valores que seu array irá armazenar, todos os seus elementos devem ser do mesmo tipo. Você não pode “misturar” diferentes tipos de dados.
👀 Reading Values – The Magic Begins!
O incrível poder dos arrays vem de sua eficiência para acessar valores. Isto é conseguido graças à sua estrutura em forma de grelha. Vamos dar uma olhada mais detalhada nisto.🔍
Quando você cria um array, você:
– Atribua-o a uma variável. 👈
– Defina o tipo de elementos que ela irá armazenar. 🎈
– Define o seu tamanho (o número máximo de elementos). 📚
💡 Nota: O nome que você atribui a esta variável é muito importante porque você a usará mais tarde em seu código para acessar valores e modificar o array.
Mas como você pode dizer ao computador qual valor em particular você gostaria de acessar? Aqui é onde os índices têm um papel vital!
1️⃣ Indices
Você usa o que é chamado de “index” (“índices” no plural) para acessar um valor em um array. Este é um número que se refere ao local onde o valor é armazenado.
Como você pode ver no diagrama abaixo, o primeiro elemento no array é referido usando o índice 0. Conforme você se move mais para a direita, o índice aumenta em um para cada espaço na memória.
💡 Nota: Eu sei que parece estranho no início começar a contar a partir de 0 ao invés de 1, mas isto é chamado de Numeração Baseada em Zero. É muito comum na informática.
A sintaxe geral para acessar um elemento é: <ArrayVariable>
Por exemplo:
Se o seu array está armazenado na variável myArray
e você quer acessar o primeiro elemento (no índice 0), você usaria myArray
2️⃣ Memória
Agora que você sabe como acessar valores, vamos ver como os arrays são armazenados na memória do seu computador. Quando você define o tamanho do array, todo esse espaço na memória é “reservado” a partir daquele momento para valores futuros que você pode querer inserir.
💡 Nota: Se você não preencher o array com valores, esse espaço será mantido reservado e vazio até que você o faça.
Por exemplo:
Vamos dizer que você define um array de tamanho 5 mas apenas insira um valor. Todo esse espaço restante será vazio e “reservado” na memória, esperando por futuras atribuições.
Esta é a chave porque os arrays são extremamente eficientes no acesso aos valores porque todos os elementos são armazenados em espaços contíguos na memória. Desta forma, o computador sabe exatamente onde procurar para encontrar as informações solicitadas.
Mas… há uma desvantagem: 😞 porque isto não é eficiente em termos de memória. Você está reservando a memória para operações futuras que podem não ocorrer. É por isso que as arrays são recomendadas em situações em que você sabe de antemão quantos elementos você vai armazenar.
🔧 Operações – Bastidores!
Agora você sabe o que são arrays quando eles são usados, e como eles armazenam elementos, vamos mergulhar em suas operações como inserção e remoção.
1️⃣ Inserção – Bem-vindo!
Vamos dizer que temos uma matriz de tamanho 6 e ainda há um espaço vazio. Queremos inserir um elemento “e” no início do array (índice 0), mas este lugar já está ocupado pelo elemento “a”. O que devemos fazer?
Para inserir em arrays, movemos todos os elementos localizados à direita do local de inserção, um índice para a direita. O elemento “a” estará agora no índice 1, o elemento “b” estará no índice 2 e assim por diante…
💡 Nota: Você precisará criar uma variável para acompanhar o último índice que contém elementos. No diagrama acima, o array é preenchido até o índice 4 antes da inserção. Desta forma, você pode determinar se o array está cheio e que índice você deve usar para inserir um elemento no final.
Depois de fazer isso, nosso elemento é inserido com sucesso. 👏
⚠️ Espere um minuto! O que acontece se o array estiver cheio?
O que você acha que vai acontecer se o array estiver cheio e você tentar inserir um elemento? 😱
Neste caso, você precisa criar um novo e maior array e copiar manualmente todos os elementos para este novo array. Esta operação é muito cara, em termos de tempo. Imagine o que aconteceria se você tivesse um array com milhões de elementos! Isso poderia demorar muito tempo para ser concluído. ⏳
💡 Nota: A única exceção a esta regra, quando a inserção é muito rápida, é quando você insere um elemento no final do array (no índice localizado à direita do último elemento) e ainda há espaço disponível. Isto é feito em tempo constante O(1).
2️⃣ Deletion- Bye, Bye!
Agora vamos dizer que você quer excluir um elemento do array.
Para manter a eficiência do acesso aleatório (podendo acessar o array através de um índice extremamente rápido) os elementos devem ser armazenados em espaços contíguos de memória. Você não pode simplesmente apagar o elemento e deixar esse espaço vazio.
Você deve mover os elementos que vêm depois do elemento que você quer apagar um índice a esquerda.