Introdução a Array

Operações relacionais e lógicas Operações Aritméticas variáveis Tipos de dados Estruturas Aninhadas algoritmos

Oi Pessoal!!! Nos últimos artigos nós falamos sobre os comandos de controle: if, switch/case, for, while, do-while. Esses comandos são importantes para resolver alguns dos nossos problemas, mas a maioria das Linguagens de Programação fornecem, além destes, outros recursos que nos permitem resolver de maneira ainda melhor os nossos problemas, como as Estruturas de Dados! No artigo de hoje veremos uma estrutura de dados simples chamada de ARRAY.

 

 

ARRAYS

 

Um Array é uma Estrutura de Dados, isto significa que é uma forma de representar, manipular e armazenar dados em um computador. Um Array também é chamado de Variável Composta Homogênea, isto significa que um Array é um tipo de variável que consegue armazenar mais de um dado de um único tipo. Composta: mais de um dado; Homogêna: um único tipo. Exemplos: armazenar 10 salários, armazenar 15 nomes, armazenar 20 notas, etc. Existem vários "tipos" de Arrays, hoje veremos o Array denominado de "Variáveis Compostas Homogêneas Unidimensionais"

 

 

Variáveis Compostas Homogêneas Unidimensionais (Array de uma dimensão)

 

São variáveis compostas que necessitam de apenas um índice para individualizar um elemento do conjunto. Essas variáveis também são chamadas de Vetores. Observe a Figura 1:

 

Array de Uma Dimensão
Figura 1: Array de Uma Dimensão

 

A Figura 1 ilustra um Array de uma dimensão com cinco posições. Cada quadrado desse Array é correspondente a um espaço de memória que armazena um dado. Como o Array tem cinco posições, então, são cinco espaços de memória que serão utilizados para armazenar esses dados.

 

O índice nos ajuda a percorrer o Array, permitindo que o elemento daquela determinada posição possa ser armazenado, acessado, atualizado, excluído, enfim, manipulado. O índice pode "andar" da esquerda pra direita, por isso vocês veem escrito "i", "i + 1", e assim por diante. O índice "i" é a variável de incremento (contador) e a cada iteração que fizermos, ela é somada de um, para podermos caminhar no array.

 

Bom, para entendermos melhor tudo isso, vamos ver um exemplo simples: armazenar dez números do tipo real.

 

algoritmo "vetores"

var
   indice: inteiro
   vet: vetor [1..10] de real

inicio

  para indice de 1 ate 10 faca
    escreva(" Digite um número real: ")
    leia (vet[indice])
  fimpara
 
  escreval("")
 
  para indice de 1 ate 10 faca
    escreval(" | indice: | ", indice, " | elemento: | ", vet[indice])
  fimpara
 
fimalgoritmo

Listagem 1: Armazenando e imprimindo dez números reais em um Array.

 

Saída do programa no VisuAlg
Figura 2: Saída do programa no VisuAlg
Vetor do Exemplo
Figura 3: Vetor do Exemplo

 

A listagem 1 apresenta a solução em pseudocódigo para o exemplo do nosso artigo. A Figura 2 apresenta a saída do software VisuAlg, isto é, mostra o console do VisuAlg ao testarmos o nosso algoritmo. Por fim, a Figura 3 apresenta a REPRESENTAÇÃO do Vetor do nosso exemplo. Na linha 5 é feita a DECLARAÇÃO do vetor:

 

vet: vetor [1..10] de real

 

A declaração do vetor cria o espaço de memória necessário para armazenar a quantidade de posições que desejamos: vetor é a palavra chave reservada; [1..10] é a quantidade de posições que desejamos para o nosso vetor, começando sempre em 1; real é o tipo de dado que queremos armazenar neste vetor; vet é o nome do vetor, poderia ser qualquer outro nome.

 

Nas linhas de 9 a 12 temos o código necessário para PREENCHER o vetor e usamos o comando de controle FOR para isso, assim podemos incluir um valor em cada posição do vetor. O FOR vai ser repetido por dez vezes, conforme a linha 9 define: para ÍNDICE de 1 até 10 (começando em 1 e terminando em 10). Dentro do FOR colocamos uma mensagem para o usuário, pedindo que ele digite um valor, e o mesmo é armazenado pelo comando

 

leia ( vet [ indice ] )

 

Observe que vet[índice] é a forma que usamos para armazenar um valor no vetor em uma posição que não conhecemos, já que no FOR o valor do índice varia conforme ele é executado.

 

As linhas de 16 a 18 IMPRIMEM o conteúdo do ARRAY e vocês podem verificar a forma como é impresso o conteúdo na Figura 2. Vamos fazer o teste de mesa para esse código do nosso exemplo, mas por questões de espaço visual, vou dividir o código. Abaixo, a Tabela 1 apresenta o teste de mesa do código para inserir no vetor.

 

iteraçãoindicepara indice de 1 até 10leia ( vet [ indice ] )
11i = 1vet[1] = 5.6
22i = 2vet[2] = 8.7
33i = 3vet[3]= 1.2
44i = 4vet[4] = 3
55i = 5vet[5] = 9
66i = 6vet[6] = 10.7
77i = 7vet[7] = 3.5
88i = 8vet[8] = 81.7
99i = 9vet[9] = 123.07
1010i = 10 vet[10] = 2.4
11------

Tabela 1: Teste de Mesa - inserindo no vetor

 

Como vocês podem observar na Tabela 1, o teste de mesa mostra que, quando atingimos indice = 10, chegamos ao fim do algoritmo. Na primeira iteração, que é i = 1, é impressa na tela do console a mensagem para o usuário digitar um número real. Logo em seguida, esse número é obtido e armazenado em vet[índice], e o nosso índice neste momento é igual a 1, portanto, vet [1]. Na posição 1 do vetor foi armazenado o valor 5.6. Na segunda iteração, i = 2 e índice = 2, então, o próximo número que o usuário digitar, que no caso foi 8.7, será armazenado nesta posição e, assim sucessivamente, até i = 10.

 

A Tabela 2 apresenta o teste de mesa para a parte do código que imprime o vetor na tela.

 

iteraçãoindicepara indice de 1 até 10imprime indiceimprime vet[indice]
11i = 11vet[1] = 5.6
22i = 22vet[2] = 8.7
33i = 33vet[3] = 1.2
44i = 44vet[4] = 3
55i = 55vet[5] = 9
66i = 66vet[6] = 10.7
77i = 77vet[7] = 3.5
88i = 88vet[8] = 81.7
99i = 99vet[9] = 123.07
1010i = 10 10vet[10] = 2.4
11------ 

Tabela 2: Teste de Mesa - imprimindo o vetor

 

Na primeira iteração, i = 1 e índice também igual a 1, então, na mensagem em ESCREVAL, será impresso o valor do índice, que é 1, e o valor do conteúdo da posição vet[indice], que neste caso é vet[1]. A posição vet[1] é igual a 5.6, então este é o valor que será buscado e impresso na tela. Na segunda iteração, i = 2, indice = 2, e vet[indice] é vet[2] = 8.7, assim esses serão os valores impressos na tela. Isso ocorre sucessivamente até que i = 10.

 

Vamos ver agora como fica o mesmo código em outra linguagem?

 

C

#include <stdio.h>
#include <stdlib.h>

int main()
{
     float Vetor[10];
     int indice;

     for(indice=0; indice<10; indice++){
        printf(" Digite um numero real: ");
        scanf("%f",&Vetor[indice]);
     }

     for(indice=0; indice<10; indice++){
        printf(" Indice %d \n", indice);
        printf(" Vetor[indice] %.2f \n " , Vetor[indice]);
     }

    return 0;
}

 

Pascal

program arrays;

uses wincrt, crt;

var
   vet : array[1..10] of real;
   indice : integer;

begin
     //populando o vetor
     for indice:=1 to 10 do
       begin
         write(' Escreva um número real: ');
         readln(vet[indice]);
       end;

     //imprimindo o vetor
     for indice:=1 to 10 do
       begin
         writeln(' | indice = ' , indice , ' | vet [ índice ] = ', vet[indice]:2:2 , ' | ');
       end;

       readkey();

end.

 

Java

 package vetores;

import java.util.Scanner;

public class Vetores {

    public static void main(String[] args) {
        int indice;
        double[] vetor = new double[10];
        Scanner s = new Scanner(System.in);

        for (indice = 1; indice < 10; indice++) {
            System.out.println(" Digite um número real: ");
            vetor[indice] = s.nextDouble();
        }

        for (indice = 1; indice < 10; indice++) {
            System.out.println(" | Índice: " + indice + " | Vetor [ indice ]: " + vetor[indice]);            
        }
    }

}

 

 

Conclusão

 

Pessoal, neste artigo eu fiz uma introdução à Arrays Unidimensionais. No próximo artigo eu vou mostrar algumas coisas que podemos fazer com Arrays além de populá-los e imprimi-los. Deixarei os exercícios para o próximo artigo, ok?! Muito Obrigada.

Outros artigos da série

Operações com Arrays >>
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Elaine Cecília Gatto
Bacharel em Engenharia de Computação. Mestre em Ciência da Computação. Doutoranda em Ciência da Computação. Co-fundarora e Líder das #GarotasCPBr. Pesquisadora Convidada no Grupo de Pesquisa: "Artes em Tecnologias Emergentes" do Programa de Pós Graduação em Design na UNESP Campus Bauru. Cantora, Docente no Magistério Superior, Geek, Nerd, Otaku e Gamer. Apaixonada por Michael Jackson, Macross, Rocky Balboa, Séries, Filmes, Cervejas e Vinhos. Mais informações sobre mim você encontra em: http://lattes.cnpq.br/8559022477811603.

4
Deixe um comentário

avatar
 
2 Comment threads
2 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors
Elaine Cecília GattoIrenil Ramos ValentimElaine Cecília GattoEuclides Franco de Rezende Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Irenil Ramos Valentim
Membro
Irenil Ramos Valentim

Gostei muito do seus artigos. Tem como fazer downloads . Estruturas de Dados.....

Euclides Franco de Rezende
Visitante
Euclides Rezende

Excelente matéria. Parabens!

Elaine Cecília Gatto
Visitante
Elaine Cecília Gatto

muito obrigada Euclides!!