0% acharam este documento útil (0 voto)
3 visualizações37 páginas

Estruturas de Dados: Vetores e Matrizes

O módulo IV aborda estruturas de dados estáticas, focando em vetores (arrays) e matrizes (arrays bidimensionais). Os vetores permitem armazenar elementos do mesmo tipo, acessíveis por índices, enquanto as matrizes são representações de arrays com duas dimensões. O documento também discute a declaração, inicialização, leitura e impressão de valores em vetores e matrizes, além de destacar vantagens e cuidados na utilização dessas estruturas.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
3 visualizações37 páginas

Estruturas de Dados: Vetores e Matrizes

O módulo IV aborda estruturas de dados estáticas, focando em vetores (arrays) e matrizes (arrays bidimensionais). Os vetores permitem armazenar elementos do mesmo tipo, acessíveis por índices, enquanto as matrizes são representações de arrays com duas dimensões. O documento também discute a declaração, inicialização, leitura e impressão de valores em vetores e matrizes, além de destacar vantagens e cuidados na utilização dessas estruturas.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

MÓDULO IV

ESTRUTURAS DE DADOS ESTÁTICAS

1
VECTORES (ARRAYS)
Vamos neste módulo estudar a forma como podemos
processar conjuntos de dados/valores do mesmo tipo.

• Para isso vamos estudar o funcionamento dos VECTORES.

2
VECTORES (ARRAYS)
Um Vector (também muito conhecido por array) é um
conjunto de elementos consecutivos, todos do mesmo tipo,
que podem ser acedidos individualmente a partir de um
único nome e um índice.

3
VECTORES (ARRAYS)
Exemplos da utilização de arrays:
• Armazenamento de temperaturas médias anuais;
• Armazenamento de comissões mensais de um vendedor;
• Armazenamento de notas de um aluno ao longo do ano;
• Armazenamento de movimentações de capital;

4
VECTORES (ARRAYS)
Representação esquemática de um Array:

0 1 2 3 4

O esquema representa um array com 5


posições
5
VECTORES (ARRAYS)
Declaração de um array:

tipo nome_variavel[numero_de_elementos];

• Onde:
• tipo: representa o tipo de dados dos elementos do vector;
• nome_variavel: representa o nome do vector;
• numero_de_elementos: representa o nrº de elementos de o vector
poderá conter (tem de ser um valor inteiro)

6
VECTORES (ARRAYS)
Exemplos de declarações de arrays:
• float renda[100];

• float: tipo de cada elemento do array;


• renda: nome do array;
• 100: número de elementos do array;

7
VECTORES (ARRAYS)
Se o array tem apenas um nome como podemos
aceder a cada elemento do array?

►Resposta: Através do seu índice.

int array_Exemplo[5];

12 123 1 14 0
0 1 2 3 4

array_Exemplo[0]=12;
array_Exemplo[3]=14;

8
VECTORES (ARRAYS)
Forma de aceder aos elementos de um array (cont.)
• nome_array[índide]; int array_Exemplo[5];

• Ex. array_Exemplo[1]; 12 123 1 14 0


• Em que: 0 1 2 3 4

• nome_array: é o nome que foi definido para o array;


• índice: é a posição de um elemento do array.

• O valor do índice do primeiro elemento de um array é sempre


0 (zero)
• Os índices de um array com n elementos variam sempre
entre 0 e n-1

9
VECTORES (ARRAYS)
int array_Teste[5];

7 6 2 7 5

0 1 2 3 4 5 6 7 8 9

array_Teste[4] = 2;

array_Teste[7] = 5;

array_Teste[0] = array_Teste[4]+array_Teste[7];

array_Teste[array_Teste[4]]=6;

array_Teste[array_Teste[4]+3]=array_Teste[0];

10
VECTORES (ARRAYS)
Inicialização de arrays
• Um array pode ser inicializado com um conjunto de
valores:
• int arrayTeste[4]={12, 3, 332, 23};

• Se o nº de inicializações for inferior ao nº de


elementos do array, os elementos em falta serão
inicializados a 0.
• int arrayTeste[4]={1, 88, 99};
é equivalente a
int arrayTeste[4]={1, 88, 99, 0, 0};

11
VECTORES (ARRAYS)
Leitura de valores para um array em ciclo:


int x[8];
for(i=0;i<8;i++)
{
printf(“\nDigite o elemento da posição %d”,i);
scanf(“%d”,&x[i]);
}

12
VECTORES (ARRAYS)
Impressão dos valores de um array:


printf(“\nElementos do vetor:”);
for(i=0;i<8;i++)
{
printf(“\n%d ”,x[i]);
}

13
VECTORES (ARRAYS)
Vantagens na utilização de arrays:
• Permitem manter os valores em memória;
• Reduzem a quantidade de variáveis;

Cuidado:
• Quer durante a compilação, quer durante a
execução, não é verificado se os índices usados
estão de acordo com a dimensão declarada do
array. É por isso possível declarar um array com,
por exemplo, 4 elementos, e tentar depois aceder
ao índice 5, o que levará a que ocorram problemas
de acesso à memória.

14
STRINGS
Definição:
• Uma String é um conjunto de caracteres armazenados num
array (vector).

Não confundir caracteres com strings


• Nota:
• As strings representam-se entre aspas
• “olá mundo!!” , “GPSI”
• Os caracteres representam-se entre plicas
• ‘x’ , ‘-’ , ‘+’

15
STRINGS
Uma string é então um array de caracteres, que termina
sempre com o caracter ‘\0’, para que desta forma seja
possível identificar o final da string.

Exemplo:
• Se armazenar a palavra “Portugal” numa string, na realidade
o que acontece é que o compilador acrescenta um ‘\0’ no
final.

16
STRINGS
Sintaxe da definição de uma variável para armazenamento de
strings
• char nome_da_variável[nr_de_caracteres];

IMPORTANTE
• O nr_de_caracteres deve ser sempre o número de caracteres
necessários para a string + 1, para o armazenamento do
caracter ‘\0’

17
STRINGS
Exemplo da definição de variáveis para
armazenamento de strings:
• char nome[21];
• char localidade [100];

Inicialização de strings
• char nome[20]=“André”;
• char nome[20]={‘A’,’n’,’d’,’r’,’é’}
• char nome[]=“André”

• A todas estas inicializações o compilador


acrescenta o terminador ‘\0’.

18
STRINGS
Escrita/Impressão de strings
• Função printf()
• printf(“hello world”);
• printf(“%s”, nome_da_variável);
• printf(“a string é: %s”, nome_da_variável);

• Função puts()
• puts(“hello world”);
• puts(“nome_da_variável”);

19
STRINGS
Leitura de strings
• Função scanf()
• scanf(“%s”, nome_da_variável);
• Nunca colocar & na leitura de strings.
• O scanf não lê espaços.

• Função gets()
• gets(nome_da_variável);

20
STRINGS
Funções para manipulação de strings
#include<string.h>
• Copiar strings:
• em C não podemos copiar strings de forma directa.
• Não pode fazer isto:
• nome=“JOEL”;
• nome1=nome2;
• A função que nos permite copiar valores para as strings é:
• strcpy(variável_destino, variável_origem);
• Exemplo:
• strcpy(nome, “JOEL”);
• strcpy(nome1, nome2);

21
STRINGS
Comparar strings <>0 As Strings são diferentes
• int strcmp(string1, string2) =0 As Strings são iguais

• Exemplos:
… …
res=strcmp(nome, nome1); if(strcmp(nome, nome1)==0)
if(res==0) puts(“São iguais”);
puts(“São iguais”); else
else puts(“São diferentes”);
puts(“São diferentes”); …

22
STRINGS
Outras funções:

• int strlen(string); - devolve o tamanho da string

• strcat(string1,string2); - concatena (junta) a


string2 à string1.

• strrev(string); - inverte a string;

23
STRINGS
Exemplos:

int tamanho;
tamanho=strlem(nome);

strcat(nome, nome1);

strcat(nome, ”mais texto”);

strrev(nome);

24
MATRIZES (VECTORES
BIDIMENSIONAIS)
Até agora apenas operávamos com vectores
unidimensionais

0 1 2 3 4

A partir de agora vamos também operar com vectores


bidimensionais ou
MATRIZES

25
MATRIZES (VECTORES
BIDIMENSIONAIS)
As Matrizes não são mais do que Arrays bidimensionais, ou
seja, arrays com duas dimensões. A sua representação
esquemática é a seguinte:

0 1 2 3

0
1

26
MATRIZES (VECTORES
BIDIMENSIONAIS)
0 1 2 3

0
1

O esquema representa uma matriz de 4 linhas e


4 colunas.

27
MATRIZES (VECTORES
BIDIMENSIONAIS)
Declaração de uma Matriz em C:

tipo nome_variavel[nr_de_linhas][nr_de_colunas];

• Onde:
• tipo: representa o tipo de dados dos elementos da matriz;
• nome_variavel: representa o nome da matriz;
• nr_de_linhas: representa o nrº de linhas da matriz (tem de ser um
valor inteiro)
• nr_de_colunas: representa o nrº de counas da matriz (tem de ser
um valor inteiro)

28
MATRIZES (VECTORES
BIDIMENSIONAIS)
Exemplo da declaração de uma matriz:
• int matriz_Exemplo[2][4];

• int: tipo de cada elemento da matriz;


• Matriz_Exemplo: nome da matriz;
• 2: número de linhas da matriz;
• 4: número de colunas da matriz;
0 1 2 3

0
1

29
MATRIZES (VECTORES
BIDIMENSIONAIS)
Como podemos aceder a cada um dos elementos
de uma Matriz?
►Resposta: Através dos seus índices.
int matriz_Exemplo[2][4];

0 1 2 3 matriz_Exemplo[0][2]=33;
0 12 20 33 50 matriz_Exemplo[1][0]=14;
1 matriz_Exemplo[1][3]=80;
14 3 21 80
matriz_Exemplo[1][4]= ERRO!!!

30
MATRIZES (VECTORES
BIDIMENSIONAIS)
Os índices da matriz começam sempre por 0 (zero)
Os índices de uma matriz com x linhas e y colunas variam
sempre entre 0 e x-1 e 0 e y-1 , respectivamente.

Exemplo - matriz com 2 linhas e 4 colunas:

int matriz_Exemplo[2][4];

0 1 2 3 Índice das
colunas
0
Índice das linhas
1

31
MATRIZES (VECTORES
BIDIMENSIONAIS)
int matriz_Teste[3][4];
0 1 2 3

5 0
0
1 40

2 50 15

matriz_Teste[2][3]=15;
matriz_Teste[1][1]=40;
matriz_Teste[2][0]=matriz_Teste[1][1]+10;
matriz_Teste[0][3]=0;
matriz_Teste[ matriz_Teste[0][3] ] [ 1 ] = 5;
32
MATRIZES (VECTORES
BIDIMENSIONAIS)
Inicialização de matrizes
• Uma matriz pode ser inicializada com um conjunto de
valores:
• int matriz_X[3][2]={{1,2},{3,4},{5,6}};

1 2
3 4
5 6

33
MATRIZES (VECTORES
BIDIMENSIONAIS)
Leitura de valores para uma matriz (em ciclo):

#include<stdio.h>
#include<stdlib.h>
Inicialização da matriz.
# define LINHAS 3
# define COLUNAS 2 não é obrigatório.
main()
{
int matriz_Teste[LINHAS][COLUNAS]={{0,0},{0,0},{0,0}};
int i,j;

for(i=0;i<LINHAS;i++)
{
for(j=0;j<COLUNAS;j++)
{
printf("Introduza o valor para a linha %d e coluna %d: ", i, j);
scanf("%d",&matriz_Teste[i][j]);
}
}
}

34
MATRIZES (VECTORES
BIDIMENSIONAIS)
Impressão dos valores de uma Matriz:


for(i=0;i<LINHAS;i++)
{
for(j=0;j<COLUNAS;j++)
{
printf("%d\t",matriz_Teste[i][j]);
}
puts("\n");
}

35
MATRIZES (VECTORES
BIDIMENSIONAIS)
Vantagens na utilização de matrizes:
• Permitem manter os valores em memória;
• Reduzem a quantidade de variáveis;

Cuidado:
• Quer durante a compilação, quer durante a
execução, não é verificado se os índices usados
estão de acordo com a dimensão declarada da
matriz. É por isso possível declarar uma matriz
com, por exemplo, 3 linhas e 3 colunas, e tentar
depois aceder à coluna 4 da linha 7, o que levará a
que ocorram problemas de acesso à memória.

36
#include<stdio.h>
#include<stdlib.h>
# define LINHAS 3
# define COLUNAS 2
main()
{
/* declaração e inicilaização da matriz */
int matriz_Teste[LINHAS][COLUNAS]={{0,0},{0,0},{0,0}};
/* declaração de variáveis que vão percorrer os índices da matriz*/
int i,j;

/* ciclo para a leitura de dados para a matriz*/


for(i=0;i<LINHAS;i++)
{
for(j=0;j<COLUNAS;j++)
{
printf("Introduza o valor para a linha %d e coluna %d: ", i, j);
scanf("%d",&matriz_Teste[i][j]);
}
}

/* ciclo para a impressão dos dados da matriz*/


for(i=0;i<LINHAS;i++)
{
for(j=0;j<COLUNAS;j++)
{
printf("%d\t",matriz_Teste[i][j]);
}
puts("\n");
}

37
system("pause");
}

Você também pode gostar