Vamos Programar? – Introdução à Programação #14

15 Comentários

Arrays Unidimensionais e Multidimensionais

O mundo está constantemente a evoluir: desde o mais pequeno inseto à espécie Humana. Dentro das palavras que mais ouvimos atualmente, incluímos “evolução”, “mudança”, “futuro”.

A tecnologia tem revolucionado o mundo das mais diversas formas: do mais simples aparelho para medir o tempo ao mais complexo acelerador de partículas. Se quer entrar no mundo da tecnologia e deixar a sua marca, pode começar aqui.

keepcalmprogramming

Infelizmente, o artigo desta semana não é acompanhado por vídeo porém esperemos que apreciem o restante conteúdo.

Arrays

Até agora apenas falámos de variáveis escalares, ou seja, variáveis com valores individuais. Vamos então falar de uma nova estrutura de dados: as arrays.

Arrays, também conhecidas por “tabelas” ou “vetores”, são estruturas de dados que, ao contrário de variáveis escalares, nos permitem armazenar mais do que um valor.

Estas são como matrizes (ou tabelas) de dados em que cada dado está localizado numa determinada posição que pode ser acedida através de “coordenadas”. Existem dois tipos: as unidimensionais e as multidimensionais.

Arrays Unidimensionais

Arrays unidimensionais podem ser comparadas a tabelas com uma única coluna e várias linhas. São o tipo mais simples de arrays.

Sintaxe

tipo nome[tamanho];

Onde:

  • tipo → O tipo de dados que a array vai conter;
  • nome → O nome da array, tal como se faz com uma variável;
  • tamanho → O número máximo de elementos que a array irá conter.

Exemplo

int idades[10]; //Array de 10 elementos
    
idades[0] = 14; //Atribuição Correta
idades[4] = 12; //Atribuição Correta
idades[7] = 15; //Atribuição Correta
idades[10] = 20; //Atribuição Incorreta (tamanho máximo da array ultrapassado)

No exemplo anterior, a última declaração está errada porque o índice máximo da array foi ultrapassado, ou seja, a array apenas pode conter 10 elementos mas, como a contagem inicia sempre no zero, “idades[10]” refere-se ao décimo primeiro elemento.

Podemos também, à semelhança do que acontece com as variáveis, atribuir valores às arrays no momento em que as declaramos da seguinte forma:

int idades[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

Arrays Multidimensionais

Arrays multidimensionais são todas aquelas que contenham mais do que uma dimensão, ou seja, se comparamos a uma tabela, têm mais do que uma coluna.

Sintaxe

tipo nome[linhas][colunas];

Exemplo

/*
 * Declaração de uma array 6x5
 */
float notas[6][5]; 

notas[0][0] = 18.7; //1ª Linha, 1ª Coluna
notas[0][1] = 15.4; //1ª Linha, 2ª Coluna
notas[3][2] = 19.6; //4ª Linha, 3ª Coluna
notas[5][4] = 17.5; //6ª Linha, 5ª Coluna
notas[6][0] = 20.0; //Excedeu o máximo de linhas (6)
notas[5][5] = 17.4; //Excedeu o máximo de colunas (5)

No exemplo anterior é possível visualizar a criação de uma tabela array 6 linhas por 5 colunas. Traduzindo esta array para uma tabela, ficaríamos com o seguinte:

Que, inserindo os dados anteriormente utilizados no exemplo, ficaria preenchida da seguinte forma:

18.7 15.4
19.6
17.5

A sintaxe que aplicámos anteriormente para atribuir valores a arrays quando as inicializamos também pode ser utilizada neste contexto. Veja o seguinte exemplo:

int idades[2][4] = {
    {1, 2, 3, 4},
    {0, 1, 2, 3}};

Exercícios

1 – Crie um programa que peça cinco números inteiros ao utilizador, os armazene numa matriz e, posteriormente, imprima os números armazenados na matriz tal como o índice (posição) em que se encontram.

2 – Crie um pequeno programa onde o utilizador tenha que inserir os valores (float) que obteve no final do ano letivo em sete disciplinas e, posteriormente, mostre a sua média. Utilize apenas uma array para armazenar todos os valores.

3 – Crie mais um programa para obter as notas de cinco testes em 3 disciplinas (matriz 3×5) e percorra cada linha de forma a dizer a nota mais alta de cada uma das três disciplinas.


Mais uma vez, gostávamos de saber a sua opinião. Caso tenha alguma dúvida, pode sempre utilizar os comentários para colocar a questão. Caso o faça,  pedimos que utilize a keyword [DUVIDA] no início do seu comentários.


Resoluções de exercícios.

Esta saga

Henrique Dias

Mais episódios: 
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13][12] [14] [15] [16]
[17] [18] [19] [20] [21] [22] [23][24]

homefacebookgoogle-plus

Comentários

15

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Kabindas
    Kabindas

    O valor de 17.4 na grelha está errado. Não devia lá estar -.-

    1. Avatar de Eduardo Royer
      Eduardo Royer

      Na verdade o que deveria estar lá é 17.5
      Que foi posto com o comando abaixo:

      notas[5][4] = 17.5; //6ª Linha, 5ª Coluna

      1. Avatar de Henrique Dias

        Corrigido 🙂 Obrigado pelo reparo.

    2. Avatar de lmx
      lmx

      existem alguns que estão em posições erradas, mas a ideia percebeu-se…

      1. Avatar de Henrique Dias

        Quais? O.o Estive a rever e não compreendi quais. 🙂

        1. Avatar de lmx
          lmx

          secalhar só havia mesmo uma :S, estive agora a ver e também não encontrei nada 😉

          1. Avatar de Henrique Dias

            Eheh. Não faz mal 🙂

  2. Avatar de lmx
    lmx

    Parabéns pelo artigo 😉

    faltou-te falar no conteúdo que os arrays teem logo após sua declaração/definição…

    Se o array for global ou estático(mesmo que seja dentro da uma função…tem é que ser estatico), o array é inicializado a zero!

    Se o array for criado numa função, mas não for estático, então , ai o lixo que estiver nas posições ocupadas pelo array é o conteúdo do mesmo, pois ele é criado no stack…

    Numa função, se tens a certeza que não vais ler dados do array antes de o preencher todo…não precisas de inicializalo(ver Initializer’s…).

    mas se por algum motivo necessitares de ter um array inicializado a zero, e a variável não for global, ou static…ai tens que inicializa-lo…

    Por exemplo:

    unsigned int array[1024]={0};

    1. Avatar de Henrique Dias

      Obrigado pela adição 🙂

  3. Avatar de Afonso Marques
    Afonso Marques

    Não reparei bem, ou não indicaram a linguagem que se trata? poderiam dizer que isto é c#.

    1. Avatar de Henrique Dias

      Olá Afonso,

      Por acaso é C. Esta saga de tutoriais, “Introdução à Programação”, tem como objetivo introduzir os nossos leitores no mundo da programação através da linguagem C.

      Isto foi mencionado em vários dos primeiros tutoriais. 🙂

  4. Avatar de Ricardo
    Ricardo

    Não encontro as soluções dos exercícios no github da pplware. alguem pode-me dizer onde encontrar?

    1. Avatar de Henrique Dias

      Olá Ricardo,

      Obrigado por avisar. Quando puder, no fim de semana, colocarei as soluções e dar-lhe-ei um “toque” aqui nos comentários.

      1. Avatar de Ricardo
        Ricardo

        ok. obrigado

        1. Avatar de Henrique Dias

          Bom dia Ricardo,

          Desculpe pela demora, mas acabei de adicionar as soluções deste artigo ao GitHub. Espero que sejam úteis! 🙂

          Bom fim de semana!