Universidade Estadual de Feira de Santana
Departamento de Ciências Exatas
Engenharia de Computação
EXA801 – Algoritmos e Programação 1
EXA801
Algoritmos e Programação 1
Prof. Matheus Giovanni Pires
Aula 5‐Vetores
Aula 5
Vetores e Matrizes
e Matrizes
Esta aula foi baseada em material cedido gentilmente pelas professoras Ana Lúcia Lima Marreiros Maia e Fabiana Cristina Bertoni
Motivação
• Se o usuário precisa digitar uma sequência de números e depois mostrar esta sequência em ordem inversa. Como fazer?
• Para uma sequência de quatro números, poderíamos utilizar quatro variáveis.
q
– Exemplo: numero1, numero2, numero3, numero4
• EE para uma sequência de 100 números? Como para uma sequência de 100 números? Como
faríamos?
• Como armazenar vários valores em uma única Como armazenar vários valores em uma única
estrutura de armazenamento?
2
Estruturas homogêneas
Estruturas homogêneas
• Estruturas homogêneas unidimensionais
– VETORES
• Estruturas homogêneas multidimensionais
g
– MATRIZES
3
Vetores
• Armazenam vários elementos do mesmo tipo primitivo;
p ç
• Vários valores em posições diferentes, com ordem específica entre si;
Elementos podem ser repetidos ou não;
• Elementos podem ser repetidos ou não;
• Podemos encontrar esse tópico na literatura com as seguintes nomenclaturas:
seguintes nomenclaturas: – Vetor, Array, Matriz unidimensional ou Arranjo.
4
Ilustração de um vetor
Ilustração de um vetor
• Exemplo de um vetor capaz de armazenar 7 números inteiros, chamado numeros.
0
1
2
3
4
5
6
– Todas as posições pertencem ao vetor numeros, e cada p ç
p
,
uma dessas posições é capaz de armazenar um número inteiro;
– O acesso a cada um dos valores armazenados em numeros
é feito por um índice que cada posição possui.
– Na linguagem C, esses índices iniciam‐se no valor zero, ou seja, o índice da primeira posição de numeros é o zero e o índice da última posição de numeros é o 6.
índice da última posição de numeros
éo6
5
Declaração de um vetor
Declaração de um vetor
• Forma Geral:
tipo nome[tamanho];
• onde:
– tipo: qualquer tipo da linguagem C
– nome: nome do vetor
nome: nome do vetor
– tamanho: define quantos elementos o vetor é capaz de armazenar. Deve ser um valor constante.
armazenar. Deve ser um valor constante.
• Exemplos:
i t numeros[7];
int
[7]
char respostas[5];
float notas[100];
6
Declaração de um vetor
Declaração de um vetor
• Declaração não dimensionada:
– Caso o tamanho não seja especificado, o vetor já deve ser inicializado. Exemplo:
int vet1[] = {1,5,8,3};
• O compilador alocará o espaço suficiente para armazenar o conteúdo atribuído, ou seja, o vetor terá tamanho = 4.
• As duas notações a seguir são equivalentes:
int vet1[4]
[ ] = {
{1,
, 2,
, 3,
, 4};
};
int vet1[] = {1, 2, 3, 4};
7
Acesso aos elementos de um vetor
Acesso aos elementos de um vetor
• Para ter acesso a cada elemento do vetor, é necessário especificar o nome do vetor seguido do índice da posição desejada. Exemplos:
• Armazenando o valor 15 na 4ª posição do vetor numeros:
numeros[3] = 15;
• Lendo
Lendo um número inteiro do teclado e um número inteiro do teclado e
armazenando‐o na 1ª posição do vetor numeros:
scanf("%d",
scanf(
%d , &numeros[0]);
8
Acesso aos elementos de um vetor
Acesso aos elementos de um vetor
• Imprimindo o 6º elemento do vetor numeros:
printf("%d",numeros[5]);
• Imprimindo um elemento com a posição especificada p
p ç
p
por uma variável:
p
printf("%d",numeros[x]);
,
• Imprimindo um elemento com a posição especificada pelo resultado de uma expressão:
pelo resultado de uma expressão:
printf("%d",numeros[x+2]);
9
Acesso aos elementos de um vetor
Acesso aos elementos de um vetor
• ATENÇÃO – IMPORTANTE – Sendo numeros um vetor de números inteiros NÃO é possível fazer:
scanf("%d",&numeros);
printf("%d",numeros);
10
Vetores: exemplo 1
Vetores: exemplo 1
• Programa que lê 10 valores inteiros e armazena‐os em um vetor, em seguida, os valores lidos são exibidos na tela.
#include <stdio.h>
const int MAX = 10;
void main() {
int lista[MAX];
int i; //índice do vetor, sempre inteiro
for(i = 0; i < MAX; i++){
printf("\nDigite o %d elemento do vetor: ", i + 1);
scanf("%d",&lista[i]);
}
printf ("\nValores lidos:\n");
for(i = 0; i < MAX; i++)
printf("%d\n" lista[i]);
printf("%d\n",
}
11
Vetores: exemplo 2
Vetores: exemplo 2
• Programa que lê 7 valores inteiros e armazena‐os em um vetor, em seguida, imprime os valores lidos em ordem inversa à leitura.
#include <stdio.h>
const int MAX = 7;
void main() {
int vetor[MAX], i;
for(i=0; i < MAX; i++) {
printf("\nDigite o elemento %d: ", i + 1);
scanf("%d", &vetor[i]);
}
for(i=MAX-1; i>=0; i--)
printf("\nElemento %d: %d", i+1, vetor[i]);
}
12
Vetores: considerações
Vetores: considerações
• Tamanho do vetor é fixo (alocação estática), ou seja, não é possível alterar.
p
q
• É preciso saber a quantidade máxima de elementos que se deseja armazenar.
Pode‐se
se criar uma variável numérica para armazenar criar uma variável numérica para armazenar
• Pode
quantas posições estão sendo usadas de fato.
13
Vetores: considerações
Vetores: considerações
• Nenhuma restrição é feita quanto a quantidade de valores inseridos. – Se o usuário ultrapassar o limite, o programa tentará ler os valores normalmente, mas os escreverá em uma parte não alocada de memória. Isto pode resultar nos mais variados erros de execução:
variados erros de execução: • Acessar local inválido da memória.
• Erro (operação ilegal, segmentation
Erro (operação ilegal, segmentation fault)
fault) pode levar o programa a pode levar o programa a
ser "finalizado" pelo sistema operacional.
14
Matrizes
• Armazenam vários elementos do mesmo tipo primitivo.
• Matrizes têm mais de um índice de referência.
• Matriz bidimensional é uma representação tabular (retangular, em linhas e colunas) de um conjunto de
(retangular, em linhas e colunas) de um conjunto de dados do mesmo tipo.
15
Ilustração de uma matriz
Ilustração de uma matriz
• Matriz notas contendo notas de 3 avaliações de 5 alunos. – A linhas representam os alunos e as colunas representam as notas.
0
1
2
0
8.9
7.4
5.7
1
69
6.9
27
2.7
40
4.0
2
9.5
9.4
8.6
3
49
4.9
89
8.9
63
6.3
4
7.2
9.9
7.7
16
Declaração de uma matriz
Declaração de uma matriz
• Forma Geral:
tipo nome[dim1][dim2]...[dimN];
• onde:
– tipo: qualquer tipo possível na linguagem C.
– nome: nome da matriz.
– [dim1][dim2]...[dimN]: cada tamanho inteiro entre colchetes define o tamanho da respectiva dimensão desejada.
• A matriz notas é declarada da seguinte forma:
g
float notas[5][3];
17
Declaração de uma matriz
Declaração de uma matriz
• Declaração não dimensionada:
– Podem ter apenas seu primeiro índice não especificado, os outros devem ser indicados para que o compilador possa i d
indexar de forma correta. d f
int mat1[][2]= {1,5,8,3};
• O compilador alocará o espaço suficiente para armazenar o conteúdo atribuído, ou seja, irá inserindo os elementos, considerando 2 colunas e quantas linhas forem necessárias. 18
Acesso aos elementos de uma matriz
Acesso aos elementos de uma matriz
• Para ter acesso a cada elemento da matriz, é necessário especificar o nome da matriz seguido do índice da linha e da coluna entre colchetes.
• Armazenando o valor 9.4 na 3ª linha e 2ª coluna da matriz notas:
notas[2][1] = 9.4;
• Lendo
Lendo um número real do teclado e armazenando
um número real do teclado e armazenando‐o
o na 1ª linha e 2ª coluna da matriz notas:
printf( Digite um número");
printf("Digite
número );
scanf("%f", &notas[0][1]);
19
Matrizes: exemplo 1
Matrizes: exemplo 1
• Programa que lê 3 notas de 5 alunos e as armazena em uma matriz de ordem 5 X 3 de números reais, e em seguida imprime os valores lidos.
20
Matrizes: exemplo 1
Matrizes: exemplo 1
#include <stdio.h>
#define ALUNO 5 // ou const int ALUNO = 5;
#d fi
#define
NOTAS 3 // ou const
t int
i t NOTAS = 3;
3
void main() {
float notas[ALUNO][NOTAS];
int i,
, j
j; // índices q
que representam
p
linhas e colunas
for(i = 0; i < ALUNO; i++){
for(j = 0; j < NOTAS; j++) {
printf("\nDigite
i tf("\ Di it a %da
%d nota
t d
do aluno
l
%d
%d: "
", j+1
j+1, i+1)
i+1);
scanf("%f", &notas[i][j]);
}
}
printf("\nValores lidos:\n\n");
for(i = 0; i < ALUNO; i++) {
for(j = 0; j < NOTAS; j++)
printf ("%5.1f",
("%5 1f" notas[i][j]);
printf("\n");
}
}
21
Matrizes: exemplo 2
Matrizes: exemplo 2
• Programa que lê duas matrizes inteiras 3 X 4 e obtenha uma terceira matriz, a qual é resultado da soma das duas anteriores. Imprime a matriz resultante.
22
Matrizes: exemplo 2
Matrizes: exemplo 2
#include <stdio.h>
#define LINHAS 3
// ou const int LINHAS = 3;
#define COLUNAS 4 // ou const int COLUNAS = 4;
void main() {
int A[LINHAS][COLUNAS], B[LINHAS][COLUNAS], C[LINHAS][COLUNAS], i, j;
for(i = 0; i < LINHAS; i++)
for(j = 0; j < COLUNAS; j++) {
printf("\nDigite o elemento %d %d da matriz A: ", i+1, j+1);
scanf("%d", &A[i][j]);
}
for(i = 0; i < LINHAS; i++)
for(j = 0; j < COLUNAS; j++) {
printf("\nDigite o elemento %d %d da matriz B: ", i+1, j+1);
scanf("%d", &B[i][j]);
}
printf("\nMatriz resultante:\n\n");
for(i = 0; i < LINHAS; i++) {
for(j = 0; j < COLUNAS; j++) {
C[i][j] = A[i][j] + B[i][j];
printf ("%5d", C[i][j]);
}
printf("\n");
}
}
23
Exercícios
• Faça um programa que leia N valores inteiros (0 < N ≤ 100) e armazena‐os em um vetor. Em seguida, mostre os valores lidos em ordem inversa à leitura.
• Faça um programa que leia 8 valores inteiros e armazena‐os em um vetor. Em seguida, calcule e g
mostre a soma dos valores pares lidos. Faça um programa que leia 10 valores que
• Faça um programa que leia 10 valores que representam notas e armazene‐as em um vetor. Em seguida, calcule e imprima a média das notas e as
seguida, calcule e imprima a média das notas e as notas que estão acima da média.
24
Exercícios
• Faça um programa que leia 200 números inteiros e armazene‐os em um vetor V. Em seguida separe os elementos de V em dois vetores A e B, de forma que o vetor A contenha os elementos pares de V e B contenha os elementos ímpares de V. Imprima na tela os números dos vetores A e B.
• Faça um programa que leia 30 valores inteiros positivos e armazene‐os em um vetor, calcule e imprima:
– O menor valor do vetor.
– A quantidade de elementos do vetor que são divisíveis q
q
pelo menor valor.
25
Exercícios
• Faça um programa que leia 30 números inteiros e armazene‐os em um vetor A e leia também um inteiro n. Em seguida seu programa deve procurar o valor n em A e imprimir a posição em que este aparece. Se o elemento não estiver no vetor, o programa deve imprimir uma mensagem indicando que o elemento não pertence ao vetor.
• Faça um programa que leia um número inteiro e uma matriz 4 X 4 de inteiros, e obtenha uma segunda matriz resultado do produto da matriz original pelo número lido. Imprima a matriz resultado.
26
Exercícios
• Escreva um programa que leia uma matriz 10x10 e encontre e imprima o maior e o menor elemento da matriz. • Escreva um programa que leia as notas das 5 provas de 50 alunos e armazene‐as em uma matriz e calcule e imprima as médias das 5 notas de cada um dos 50 alunos. Calcule ainda a maior média e a quantidade de alunos com média maior ou igual a 7.
27
Download

quatro números