SlideShare uma empresa Scribd logo
1 de 25
Ameliara Freire
ameliara.fjn@gmail.com
 Interpretada como um conjunto (colecao) de
valores de um mesmo tipo.
 Podem ser
◦ Unidimensionais
◦ Multidimensionais
 Requerem novos conceitos para serem
manipuladas
2
 São uma colecao caixinhas, onde cada
caixinha guarda uma variável.
 Semelhante a uma colecao de gavetas do
armario agrupadas.
3
 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
 As variáveis são alocadas seqüencialmente na
memória, onde o endereço mais baixo
corresponde ao primeiro elemento (índice 0)
do vetor.
5
... x[n-2] x[n-1]
x[0] x[1] x[2]
x é um vetor unidimensional de n elementos.
 Exemplo sem o uso de vetores: Ler a nota de
3 alunos de uma disciplina e calcular a média.
6
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);
 Exemplo com o uso de vetores: Ler a nota de
3 alunos de uma disciplina e calcular a média.
7
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);
 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
main() {
int i, vetor[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
for (i = 0; i < 10; i++){
printf(“%dn”, vetor[i]);
}
}
 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
int alunos;
int notas [ alunos ];
printf (“entre com o número de alunos”);
scanf (“%d”, &alunos);
/* NÃO É ACEITO PELA LINGUAGEM!!! */
 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
 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
 Sendo V o vetor abaixo e as variaveis X=2 e
Y=4, quais os valores de:
12
a) V[X+1]
b) V[X] + 1
c) 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
 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
 Construa um programa que leia e guarde os
elementos em um vetor de 20 posições. Em
seguida o algoritmo ordena os elementos do
vetor de acordo com a seguinte estratégia:
◦ Selecione o elemento do vetor que guarda o menor
e o maior valor
14
 Precisam de mais de um indice para
enderecamento.
 Funciona como um vetor de vetores
15
 Exemplo
16
linhas
colunas
 Manipulacao
17
0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7
MATRIZ
MATRIZ[2][3]
 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
19
... 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
 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
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");
}
}
 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
 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
 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;
}
23
 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;
}
24
25

Mais conteúdo relacionado

Semelhante a Aula 8 - Vetores e Matrizes.pptx

Semelhante a Aula 8 - Vetores e Matrizes.pptx (20)

8. matrizes
8. matrizes8. matrizes
8. matrizes
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
Matrizes e Vetores para programação
Matrizes e Vetores para programaçãoMatrizes e Vetores para programação
Matrizes e Vetores para programação
 
Manual PSInf - Modulo 5
Manual PSInf - Modulo 5Manual PSInf - Modulo 5
Manual PSInf - Modulo 5
 
Aula 06 vetores e matrizes
Aula 06   vetores e matrizesAula 06   vetores e matrizes
Aula 06 vetores e matrizes
 
Ipccea cap iv
Ipccea cap ivIpccea cap iv
Ipccea cap iv
 
Cap09
Cap09Cap09
Cap09
 
Cap09
Cap09Cap09
Cap09
 
Cap09
Cap09Cap09
Cap09
 
Aula Vetores - 08-05-2023.pdf
Aula Vetores - 08-05-2023.pdfAula Vetores - 08-05-2023.pdf
Aula Vetores - 08-05-2023.pdf
 
Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registros
 
Algoritmos - Vetores
Algoritmos - VetoresAlgoritmos - Vetores
Algoritmos - Vetores
 
Matrizes em c#
Matrizes em c#Matrizes em c#
Matrizes em c#
 
Aula 5 aed - vetores
Aula 5   aed - vetoresAula 5   aed - vetores
Aula 5 aed - vetores
 
Java8
Java8Java8
Java8
 
Lógica de Programação - Unimep/Pronatec - Aula10
Lógica de Programação - Unimep/Pronatec - Aula10Lógica de Programação - Unimep/Pronatec - Aula10
Lógica de Programação - Unimep/Pronatec - Aula10
 
Matrizes
MatrizesMatrizes
Matrizes
 
Estruturas de dados e técnicas de programação
Estruturas de dados e técnicas de programaçãoEstruturas de dados e técnicas de programação
Estruturas de dados e técnicas de programação
 
Algoritmos e Programação: Vetores
Algoritmos e Programação: VetoresAlgoritmos e Programação: Vetores
Algoritmos e Programação: Vetores
 
Alg04 - Vetores e Matrizes.pdf
Alg04 - Vetores e Matrizes.pdfAlg04 - Vetores e Matrizes.pdf
Alg04 - Vetores e Matrizes.pdf
 

Aula 8 - Vetores e Matrizes.pptx

  • 2.  Interpretada como um conjunto (colecao) de valores de um mesmo tipo.  Podem ser ◦ Unidimensionais ◦ Multidimensionais  Requerem novos conceitos para serem manipuladas 2
  • 3.  São uma colecao caixinhas, onde cada caixinha guarda uma variável.  Semelhante a uma colecao de gavetas do armario agrupadas. 3
  • 4.  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
  • 5.  As variáveis são alocadas seqüencialmente na memória, onde o endereço mais baixo corresponde ao primeiro elemento (índice 0) do vetor. 5 ... x[n-2] x[n-1] x[0] x[1] x[2] x é um vetor unidimensional de n elementos.
  • 6.  Exemplo sem o uso de vetores: Ler a nota de 3 alunos de uma disciplina e calcular a média. 6 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);
  • 7.  Exemplo com o uso de vetores: Ler a nota de 3 alunos de uma disciplina e calcular a média. 7 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);
  • 8.  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 main() { int i, vetor[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; for (i = 0; i < 10; i++){ printf(“%dn”, vetor[i]); } }
  • 9.  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 int alunos; int notas [ alunos ]; printf (“entre com o número de alunos”); scanf (“%d”, &alunos); /* NÃO É ACEITO PELA LINGUAGEM!!! */
  • 10.  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
  • 11.  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
  • 12.  Sendo V o vetor abaixo e as variaveis X=2 e Y=4, quais os valores de: 12 a) V[X+1] b) V[X] + 1 c) 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
  • 13.  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
  • 14.  Construa um programa que leia e guarde os elementos em um vetor de 20 posições. Em seguida o algoritmo ordena os elementos do vetor de acordo com a seguinte estratégia: ◦ Selecione o elemento do vetor que guarda o menor e o maior valor 14
  • 15.  Precisam de mais de um indice para enderecamento.  Funciona como um vetor de vetores 15
  • 17.  Manipulacao 17 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 MATRIZ MATRIZ[2][3]
  • 18.  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
  • 19. 19 ... 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
  • 20.  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 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"); } }
  • 21.  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
  • 22.  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
  • 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; } 23
  • 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; } 24
  • 25. 25