25
Vetores e Matrizes Ameliara Freire [email protected]

Ameliara Freire [email protected]. Interpretada como um conjunto (colecao) de valores de um mesmo tipo. Podem ser ◦ Unidimensionais ◦ Multidimensionais

Embed Size (px)

Citation preview

Page 1: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Vetores e Matrizes

Ameliara Freire

[email protected]

Page 2: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Interpretada como um conjunto (colecao) de valores de um mesmo tipo.

Podem ser◦ Unidimensionais◦ Multidimensionais

Requerem novos conceitos para serem manipuladas

2

Variaveis Compostas Homogeneas

Page 3: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

São uma colecao caixinhas, onde cada caixinha guarda uma variável.

Semelhante a uma colecao de gavetas do armario agrupadas.

3

Variaveis Compostas Unidimensionais

Page 4: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Vetores (Arrays)◦ Tipo de dado usado para representar uma coleção

de variáveis de um mesmo tipo.◦ Estrutura de dados homogênea e unidimensional.◦ Sintaxe: tipo nome_do_vetor[tamanho];◦ Tamanho representa o número de elementos.◦ O índice do vetor varia de 0 a (tamanho - 1)

4

Variaveis Compostas Unidimensionais

Page 5: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

As variáveis são alocadas seqüencialmente na memória, onde o endereço mais baixocorresponde ao primeiro elemento (índice 0) do vetor.

5

Vetores

... x[n-2] x[n-1] x[0] x[1] x[2]

x é um vetor unidimensional de n elementos.

Page 6: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Exemplo sem o uso de vetores: Ler a nota de 3 alunos de uma disciplina e calcular a média.

6

Vetores

float nota1, nota2, nota3; 

printf(“Entre com a 1a. nota:”);scanf(“%f”, &nota1);printf(“Entre com a 2a. nota:”);scanf(“%f”, &nota2); printf(“Entre com a 3a. nota:”);scanf(“%f”, &nota3);printf(“Média = %f”, (nota1 + nota2 + nota3) / 3);

Page 7: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Exemplo com o uso de vetores: Ler a nota de 3 alunos de uma disciplina e calcular a média.

7

Vetores

float nota[3];float soma = 0;int i;

 for (i = 0; i < 3; i++) {

printf(“Entre com a %da. nota: ”, (i + 1));scanf(“%f”, &nota[i]);soma = soma + nota[i];

}printf(“Média da disciplina = %f”, soma / 3);

Page 8: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Inicialização◦ A inicialização dos valores atribuídos aos

elementos de um vetor pode ser feita no momento da sua declaração, exemplo:

8

Vetores

main() { int i, vetor[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; for (i = 0; i < 10; i++){

printf(“%d\n”, vetor[i]); }}

Page 9: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Em ‘C’ não existe declaração de vetor dinâmico

O tamanho de um vetor tem que ser determinado em tempo de compilação.

Exemplo:

9

Vetores

int alunos; int notas [ alunos ];

printf (“entre com o número de alunos”);scanf (“%d”, &alunos); /* NÃO É ACEITO PELA LINGUAGEM!!! */

Page 10: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

C não realiza verificação de limites em vetores

Nada impede o acesso além do fim do vetor Faça sempre que possível a verificação do

limite

10

Vetores

Page 11: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Fazer um programa que preenche um array de 10 posicoes contendo as notas dos alunos de uma turma. Em seguida o programa deve imprimir a media aritmetica dos 10 alunos.

11

Exercicio

Page 12: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Sendo V o vetor abaixo e as variaveis X=2 e Y=4, quais os valores de:

12

Exemplo

a) V[X+1]b) V[X] + 1c) V[X+Y]d) V[8-V[2]]e) V[V[V[7]]]

2 6 8 3 10 9 1 21 33 14

0 1 2 3 4 5 6 7 8 9

Page 13: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Construa um programa que preenche um vetor de inteiros de 100 números, colocando 0 nas posições par e 1 ímpar.

Construa um programa que lê, soma e imprime o resultado da soma de um vetor de inteiros de 10 posições.

Construa um programa que multiplique os valores de um vetor de reais de 20 posições pelo valores de um outro vetor de reais de 20 posições. Os resultados das multiplicações devem ser armazenados num terceiro vetor.

Leia um vetor de 16 posições e troque os 8 primeiros valores pelos 8 últimos e vice-e-versa. Escreva ao final o vetor obtido.

13

Exercicio

Page 14: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Construa um programa que leia e guarde os elementos em um vetor de 20 posicoes. Em seguida o algoritmo ordena os elementos do vetor de acordo com a seguinte estrategia:◦ Selecione o elemento do vetor que guarda o

menor e o maior valor

14

Exercicio-desafio

Page 15: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Precisam de mais de um indice para enderecamento.

Funciona como um vetor de vetores

15

Variaveis Compostas Bidimensionais

Page 16: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Exemplo

16

Variaveis Compostas Bidimensionais

linhas

colunas

Page 17: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Manipulacao

17

Variaveis Compostas Bidimensionais (matrizes)

0 1 2 3 4 5 6 7

0

1

2

3

4

5

6

7

MATRIZ

MATRIZ[2][3]

Page 18: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Matrizes◦ Em C podemos definir um vetor em que cada

posição temos um outro vetor (matriz).◦ Matriz é uma estrutura de dados homogênea

bidimensional.◦ Sintaxe: tipo nome_da_matriz[tamanho1]

[tamanho2];◦ Tamanho1 representa o número de linhas da matriz

e tamanho2 o número de colunas.◦ As duas dimensões são, respectivamente, as linhas

e as colunas da matriz.

18

Variaveis Compostas Bidimensionais (matrizes)

Page 19: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

19

Matrizes

... x[0][n-2] x[0][n-1] x[0][0] x[0][1] x[0][2]

x é uma matriz bidimensional m x n.

linha 1

col. 1 col. 2 col. 3 col. n-1 col. n

... x[1][n-2] x[1][n-1] x[1][0] x[1][1] x[1][2]linha 2

... ... ... ... ...

... x[m-1][n-2] x[m-1][n-1]x[m-1][0] x[m-1][1] x[m-1][2]linha m

Page 20: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Como definir uma estrutura onde pode-se identificar quatro disciplinas cada uma com 40 alunos?◦ int disciplinas [ 4 ] [ 40 ];◦ Comando “for” encadeado para manipular matrizes

20

Matrizes

main( ) { int i, j, matriz[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; for (i = 0; i < 3; i++) {

for(j = 0; j < 3; j++) { printf(“%d ”, matriz[i][j]);

} printf("\n");

}}

Page 21: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Assim como vimos com vetores, a inicialização dos valores atribuídos aos elementos de uma matriz também pode ser feita no momento da sua declaração.

Uma forma alternativa seria preencher a matriz usando loops.

21

Matrizes

Page 22: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

Construa um algoritmo que efetue e apresente o resultado da soma entre duas matrizes 3 x 5.

Faça um programa que multiplica uma matriz 3 x 3 de inteiros por um escalar k = 5.

Leia uma matriz 20 x 20. Leia também um valor X. O programa deverá fazer uma busca desse valor na matriz e, ao final escrever a localização (linha e coluna) ou uma mensagem de “não encontrado”.

Dada uma matriz 5x5, elabore um algoritmo que escreva:◦ A diagonal principal◦ A diagonal secundária◦ A soma da linha 4◦ A soma da coluna 2◦ Tudo, exceto a diagonal principal

22

Exercícios

Page 23: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

23

Apenas usar os colchetes na assinatura da função ou procedimento:

float media(float a[], int tam){ int i; float avg, sum=0.0; for(i=0;i<tam;++i){ sum+=a[i]; } avg =(sum/tam); return avg;}

Vetores passados por parâmetro

Page 24: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

24

Especificar a quantidade de colunas da matriz ou todas as dimensões:float media(float a[][2], int lin){ int i; float avg, sum=0.0; for(i=0;i<lin;++i){

for(j=0;i<2;++j) sum+=a[i][j]; } avg =(sum/(lin*2)); return avg;}

Matrizes passadas por parâmetro

Page 25: Ameliara Freire ameliara.fjn@gmail.com.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais

25

1º quesito: Faça um programa em C que leia do usuário um vetor de inteiros com n posições no intervalo [5, 200]. Ler repetitivamente o valor de n até que um valor válido seja digitado pelo usuário. Após a leitura dos n valores digitados pelo usuário algumas estatísticas devem ser extraídas deste vetor:

a) Imprimir na tela a Média do vetor; b) Imprimir na tela a Mediana do vetor; c) Imprimir na tela a quantidade de números ímpares e pares do vetor.

Obs.: Criar uma função para cada item acima; Os números reais devem ser impressos na tela com precisão de duas casas decimais;

Assumir que o vetor já é digitado ordenado pelo usuário;

A média aritmética simples corresponde a 𝑥ҧ= 1𝑛 σ 𝑥𝑖𝑛𝑖=1 , onde x corresponde a cada elemento do

vetor com n posições. O cálculo da mediana de dados ordenados de amostras de tamanho n pode ser realizado

da seguinte forma: se n for ímpar, a mediana será o elemento central 𝑛+12 . Se n for par, a

mediana será o resultado da média simples entre os elementos 𝑛2 e

𝑛2+1;