Buscar

Bac004 - Parte 7 (Vetores)

Prévia do material em texto

Vetores
Variáveis Compostas 
Homogeneas
Unidimensionais
2
Variáveis Compostas 
Unidimensionais - Vetor
� Variáveis que possuem a finalidade de 
armazenar vários valores do mesmo 
tipo de forma uniforme na memória. 
� Conjuntos de dados referenciados por 
um mesmo nome e que necessitam de 
somente um índice para que seus 
elementos sejam endereçados são 
ditos compostos unidimensionais.
Variáveis Compostas 
Unidimensionais - Vetor
• São úteis quando se deseja armazenar vários 
valores do mesmo tipo.
• Considere um programa que peça ao usuário para 
digitar a nota de 40 alunos e as armazene na 
memória. 
• Sem a utilização de vetores seria necessário 
declarar 40 variáveis, uma para armazenar cada 
nota, atribuindo-lhes os valores digitados pelo 
usuário. 
• Este mesmo programa poderia ser feito declarando 
apenas 1 vetor que armazene 40 valores.
Variáveis Compostas 
Unidimensionais - Vetor
� O conjunto de 40 notas dos alunos de uma 
disciplina pode constituir uma variável 
composta.
� A este conjunto associa-se o identificador 
NOTA que passará a identificar não uma única 
posição de memória, mas 40.
� A referência ao conteúdo do n-ésimo elemento 
do conjunto será indicada pela notação 
NOTA[n-1], onde n é um número inteiro ou uma 
variável numérica contendo um valor inteiro.
Variáveis Compostas 
Unidimensionais - Exemplo
� São unidimensionais as variáveis NOTA, 
IDADE e NOME mostradas a seguir:
BAC004-Informática-
Teórica-Fabiana C 
6
Variáveis Compostas 
Unidimensionais - Vetor
� Nas linguagens C/C++ o limite inferior 
de uma variável composta é sempre 0. 
� A declaração exige apenas o total de 
elementos.
� Portanto, a faixa de intervalo do índice 
varia de 0 até total de elementos 
menos 1.
int identificador[tam];
7
Variáveis Compostas 
Unidimensionais - Vetor
� Exemplo 1: int vetor[6]
� Na memória é representado da seguinte forma:
� Sendo uma única variável com o nome vetor
com 6 posições, nas quais podem ser 
armazenados números inteiros. A faixa de 
intervalo do índice varia de 0 até total de 
elementos menos 1. Para o vetor[6], do 
exemplo, os índices variam de 0 a 5.
Variáveis Compostas 
Unidimensionais - Vetor
• Observe que o tamanho de um vetor pode ser 
determinado por uma variável inteira, como na 
última linha do exemplo abaixo.
int codigo[40]; /*Declara o vetor codigo que armazena 40 células do tipo 
int */
float preco[6]; /*Declara o vetor preco que armazena 6 células do tipo 
float*/
char alternativa[10]; /*Declara o vetor alternativa que armazena 10 
células do tipo char*/
int n = 50; 
int nota[n]; //Declara o vetor nota que armazena 50 células do tipo int
9
Variáveis Compostas 
Unidimensionais - Vetor
� Exemplo 2: 
int vetor [6] = {12, 95, 75, 84, 7, 41};
Acessar um elemento do vetor.
Variáveis Compostas 
Unidimensionais - Vetor
• Para atribuir ou recuperar valores das 
células de um vetor, basta informar o 
seu nome e o índice da célula que 
deseja acessar entre colchetes.
• Vale lembrar que apenas uma célula 
pode ser acessada por comando. 
• Comandos para manipular mais de 
uma célula ao mesmo tempo gerarão 
erros de compilação.
11
Variáveis Compostas 
Unidimensionais - Vetor
� Exemplo 3: A atribuição pode ser feita em 
apenas um elemento de cada vez.
vetor[1]=202;
vetor[5]=12;
12
Variáveis Compostas 
Unidimensionais - Vetor
� Exemplo 4: A atribuição pode ser feita lendo 
entradas do teclado
13
Variáveis Compostas 
Unidimensionais - Vetor
� Exemplo 5: A apresentação dos dados pode 
ser com uma repetição
14
Variáveis Compostas Unidimensionais 
– Vetor - Exemplo
//ProgC060 - Programa exemplo de vetor
#include <iostream>
#include <cstdlib>
int main()
{
int N[6],
Contador;
for(Contador=0; Contador < 6; Contador++)
N[Contador] = 2;
for(Contador=0; Contador < 6; Contador++)
std::cout << N[Contador] << "\t";
system("PAUSE > null");
return 0;
}
Declaração de um vetor de 6 elementos.
Contador para controlar a repetição.
Repetição para colocar o valor dois nas 
posições do vetor
Repetição para apresentar o vetor na tela. 
15
Variáveis Compostas Unidimensionais 
– Vetor - Exemplo
//ProgC061 - Programa que calcula o número de dias verificando se é bissexto
#include <iostream>
#include <cstdlib>
int main()
{
int dmes[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int dia, mes, ano, total;
char ch;
std::cout << "Digite a data no formato DD/MM/AAAA: ";
std::cin >> dia >> ch >> mes >> ch >> ano;
if (ano%4==0 && ano%100 || ano%400==0)
dmes[1]=29;
total=dia;
for(int i=0; i<mes-1; i++)
total += dmes[i];
std::cout << "Total de dias transcorridos: " << total;
system("PAUSE > null");
return 0;
}
Declaração de um vetor de 12 elementos, atribuindo valores. 
Leitura formatada com cin. Mais de um 
elemento digitado.
Condição para verificação de ano bissexto. 
Repetição para contar o número de dias. 
16
Variáveis Compostas Unidimensionais 
– Vetor - Exemplo
// ProgC062.cpp - Vetor com tamanho informado do teclado.
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
int tamanho;
cout<<"Digite o comprimento do vetor:";
cin>>tamanho;
int vetor[tamanho];
cout<<"Digite uma sequencia com " <<tamanho<<" numeros inteiros:\n";
for (int i = 0; i < tamanho; i++)
cin>>vetor[i];
cout<<"A sequencia digitada foi:\n";
for (int i = 0; i < tamanho; i++)
cout<<vetor[i]<<" ";
system ("pause > null");
return 0;
}
Solicita tamanho do vetor. 
Declaração de um vetor do tamanho especificado pelo usuário. 
Inserção de itens no vetor
Apresentação dos itens do vetor.
Variáveis Compostas 
Unidimensionais – Vetor - Exemplo
int maior (int vet[10]) 
{ 
int m = vet[0]; 
for (int i = 1; i < 10; ++i) 
{ 
if (vet[i] > m) 
m = vet[i]; 
} 
return m; 
}
Passagem de vetor por parametro.
Variáveis Compostas 
Unidimensionais – Vetor - Exemplo
// ProgC063.cpp - Vetor - passagem de parametro.
#include <iostream>
#include <cstdlib>
using namespace std;
int maior (int vet[], int tam) {
int m = vet[0];
for (int i = 1; i < tam; ++i) {
if (vet[i] > m)
m = vet[i]; }
return m; }
int main() {
int valores [6] = {3, -1, 8, 12, 5, -6};
int mValor = maior(valores, 6);
cout << "Maior valor = " << mValor << endl;
system ("pause"); return 0;
}
Tamanho do vetor.
Passagem de vetor por parametro
sem informar tamanho do vetor.
Chamada da função maior.
Variáveis Compostas 
Unidimensionais – Vetor - Exemplo
• Por definição, ao passar um vetor como 
parâmetro para uma função em C++, esta 
passagem é feita apenas por referência
• Qualquer alteração nas células deste vetor 
continuará sendo válida após o término da 
função. 
• O símbolo '&' está implícito em todas as 
passagens de vetores como parâmetros 
(incluir este símbolo causa um erro de 
compilação).
Variáveis Compostas 
Unidimensionais – Vetor - Exemplo
// ProgC064.cpp - Vetor - passagem de parametro (sempre referencia).
#include <iostream>
using namespace std;
void zerar(int vet[], int tam) {
for (int i = 0; i < tam; ++i) vet[i] = 0;
}
int main(){
int v[4] = {10, 20, 30, 40};
cout << "v = [" << v[0] << ", " << v[1] << ", " << v[2] << ", " << v[3] << "]" 
<< endl;
zerar(v, 4);
cout << "v = [" << v[0] << ", " << v[1] << ", " << v[2] << ", " << v[3] << "]" 
<< endl;
}
Resultado em tela:
v = [10, 20, 30, 40] 
v = [0, 0, 0, 0]
Chamada da função zerar.
Variáveis Compostas 
Unidimensionais – Vetor - Exemplo
// ProgC065.cpp - Vetor - soma dos elementos.
#include <iostream>
using namespace std;
int soma(int vetor[]) {
int resultado = 0;
for(int i=0; i<10; i++) resultado = resultado + vetor[i];
return resultado;}
int main(){
intvetor[10];
int resultado;
for(int i=0; i<10; i++){
cout << "Digite o " << i+1 << " numero: "; cin >> vetor[i]; }
resultado = soma(vetor);
cout << " Soma = " << resultado;
}
Repetição para preencher o vetor.
Chamada da função soma.
Repetição para percorrer o vetor 
somando os seus valores.
Variáveis Compostas 
Unidimensionais – Vetor
• Quando for necessário retornar um 
vetor, devemos passá-lo como 
parâmetro também.
• Como a passagem é por referência, as 
alterações realizadas dentro da função 
são mantidas.
Variáveis Compostas 
Unidimensionais – Vetor
// ProgC066.cpp - Vetor - função ordenação
#include <iostream>
using namespace std;
void ordena(int A[], int B[]){
int aux;
for(int i=0; i<5; i++)
B[i] = A[i];
for(int i=0; i<4; i++){
for(int j=i+1; j<5; j++){
if (B[i] > B[j]){
aux = B[i];
B[i] = B[j];
B[j] = aux; } } } }
int main(){
int vetor_inicial[5], vetor_ordenado[5];
for(int i=0; i<5; i++){
cout << "Digite o " << i+1 << " 
numero: ";
cin >> vetor_inicial[i];
}
ordena(vetor_inicial, vetor_ordenado);
for(int i=0; i<5; i++){
cout << vetor_ordenado[i] << endl;
}
}
A ideia é ir trazendo para as posições 
iniciais do vetor os números menores
Dois vetores como parametro
24
Exercícios
� Faça um programa em C++ que 
carregue dois vetores de dez 
elementos numéricos cada um e 
mostre um vetor produto dos dois 
vetores. 
Tópicos para Discussão
� Variáveis Compostas Homogêneas
� Unidimensional – Vetor
� Declaração
� Atribuição
� Leitura do teclado
� Apresentação (impressão)
� Passagem por parametro
� Somente uma posição
� Vetor inteiro
BAC004-Informática-
Teórica-Fabiana C 
Matrizes
Variáveis Compostas 
Homogeneas
Multidimensional
27
Variáveis Compostas 
Multidimensionais - Matriz
� Assim como os vetores, as matrizes 
são variáveis que podem armazenar 
diferentes valores do mesmo tipo 
sequencialmente. 
� No entanto, as matrizes apresentam 
um arranjo bidimensional, 
diferentemente dos vetores que são 
unidimensionais.
28
Variáveis Compostas 
Multidimensionais - Matriz
� Os elementos de uma matriz podem 
ser de qualquer tipo, incluindo outras 
matrizes.
� Com dois pares de colchetes obtém-se 
uma matriz de duas dimensões e com 
cada par de colchetes adicionais 
obtém-se matrizes com uma dimensão 
a mais.
Variáveis Compostas 
Multidimensionais - Matriz
• Suponha que deseja-se fazer um mapa de sala 
das turmas de uma escola. 
• Em cada sala existem 6 filas cada uma com 5 
mesas, totalizando uma capacidade de 
acomodar 30 alunos.
• Para representar este arranjo em um programa, 
seria possível utilizar uma matriz de 5 linhas e 
6 colunas, definindo 30 células cada uma 
podendo armazenar o nome de um aluno.
Variáveis Compostas 
Multidimensionais - Matriz
31
Variáveis Compostas 
Multidimensionais - Matriz
32
Variáveis Compostas 
Multidimensionais - Matriz
� As matrizes são alocadas sequencialmente 
na memória , sendo que suas células 
devem ser acessadas referenciando-se uma 
linha e uma coluna. A seguinte declaração:
int mat[3][3];
� Aloca uma matriz na memória (assim como 
os vetores, as matrizes têm o seu primeiro 
índice de linha e coluna iniciados em 0)
Introdução à Computação - Aulas Laboratório -
Fabiana Costa Guedes
33
Variáveis Compostas 
Multidimensionais - Matriz
34
Variáveis Compostas 
Multidimensionais - Matriz
35
Variáveis Compostas 
Multidimensionais - Matriz
Variáveis Compostas 
Multidimensionais - Matriz
// ProgC067.cpp - Programa Exemplo Matriz
#include <iostream>
using namespace std;
int main(){
int mat[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3;j++) {
cout<< "Insira o valor do elemento da "<<i+1<<"a. linha, "<<j+1<<"a. coluna: ";
cin >> mat[i][j];
}
}
}
Declaração da matriz. 
Preencher matriz
37
Variáveis Compostas 
Multidimensionais – Matriz - Exemplo
// ProgC068.cpp - Exemplo Soma de Matriz
#include <iostream>
using namespace std;
int main() {
int mat1[3][3], mat2[3][3], mat3[3][3];
cout << "Preencha a matriz 1" << endl;
for (int i = 0; i <= 2; i++) 
for (int j = 0; j <= 2;j++) { 
cout << "Insira o elemento da " << i+1 << "ª linha, " << j+1 << "ª coluna: "; cin >> mat1[i][j];
}
cout << "Preencha a matriz 2" << endl;
for (int i = 0; i <= 2; i++) 
for (int j = 0; j <= 2;j++) {
cout << "Insira o elemento da " << i+1 << "ª linha, " << j+1 << "ª coluna: "; cin >> mat2[i][j];
}
for (int i = 0; i <= 2; i++) 
for (int j = 0; j <= 2; j++) 
mat3[i][j] = mat1[i][j] + mat2[i][j];
cout << "Matriz resultante" << endl;
for (int i = 0; i <= 2; i++) 
for (int j = 0; j <= 2; j++) 
cout<< "mat3[" << i+1 << "][" << j+1 << "] = " << mat3[i][j] << endl;
}
Declaração das tres matrizes. 
Repetição para atribuição de valores para matriz 1
Repetição para apresentar matriz resultante. 
Repetição para atribuição de valores para matriz 2
Repetição para realizar a soma das matrizes.
38
Variáveis Compostas 
Multidimensionais – Matriz - Exemplo
// ProgC069.cpp - Exemplo Soma de elementos de Matriz
#include <iostream>
using namespace std;
int main(){
int mat[3][3], i, j, s;
for (int i = 0; i < 3; i++) 
for (int j = 0; j < 3; j++) {
cout<< "Insira o elemento da " << i+1 << "ª linha, " << j+1 << "ª coluna: ";
cin >> mat[i][j];
}
s = 0;
for (i = 0; i < 3; i++)
s += mat[i][i];
cout << "Soma dos elementos da diagonal principal = " << s << endl;
}
Declaração da matriz. 
Repetição para inserir elementos. 
Repetição para cálculo.
Elementos de mesmo indice
são da diagonal principal 
Variáveis Compostas 
Multidimensionais – Matriz - Exemplo
// ProgC070.cpp - Apresentação de Dados formatada
#include <iostream>
using namespace std;
int main(){
int mat[3][3], i, j;
for (int i = 0; i < 3; i++) 
for (int j = 0; j < 3; j++) {
cout<<"Insira o elemento da "<<i+1<<"ª linha, "<<j+1<<"ª coluna: "; cin>> mat[i][j];
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout<< mat[i][j] << "\t";
}
cout << "\n";
}
}
Variáveis Compostas 
Multidimensionais – Matriz
• Uma matriz é passada como 
parâmetro a uma função incluindo o 
seu tipo, nome e dimensões (número 
de linhas e número de colunas) no 
cabeçalho da função.
Variáveis Compostas 
Multidimensionais – Matriz
float retornaMaior(float mat[5][5]){
int maior = mat[[0][0];
for (int i = 0; i < 5; ++i) {
for (int j = 0; j < 5; ++j) {
if (mat[i][j] > maior) 
maior = mat[i][j];
}
}
return maior;
}
Percorre a matriz
Teste de maior
Variáveis Compostas 
Multidimensionais – Matriz
• As células das matrizes também são 
implicitamente passadas como referência 
às funções, o que significa que o símbolo 
de referência '&' está implícito em cada 
matriz passada como parâmetro.
• Qualquer modificação feita nas células de 
uma matriz dentro de uma função 
permanecerá mesmo depois que esta 
função terminar sua execução. 
Variáveis Compostas 
Multidimensionais – Matriz
// ProgC071.cpp - Multuplicação por constante
#include <iostream>
using namespace std;
void multiplica(float mat[5][5], float k){
for (int i = 0; i < 5; ++i)
for (int j = 0; j < 5; ++j)
mat[i][j] = k * mat[i][j]; }
int main(){
float k, valores[5][5];
cout << "Preencha os valores da matriz:" << endl;
for (int i = 0; i < 5; ++i){
for (int j = 0; j < 5; ++j){
cout<<"Digite um valor para o elemento da linha "<<i<<", coluna "<<j<<": "; cin>>valores[i][j];}}
cout << "Digite o valor de uma constante k para multiplicar a matriz: "; cin >> k;
multiplica(valores, k);
for (int i = 0; i < 5; ++i) {
for (int j= 0; j < 5; ++j)
cout << valores[i][j] << " ";
cout << endl; }}
Função multiplica matriz por constante
Matriz por parametro
Chamada da função
44
Exercícios
� Faça um programa que carregue uma matriz 2X2, 
calcule e mostre uma matriz resultante que será a 
matriz digitada multiplicada pelo maior elemento da 
matriz.
� Faça um programa que carregue uma matriz 10X3 
com as notas de dez alunos em três provas. Mostre 
um relatório com o número do aluno (número da 
linha) e a prova em que cada aluno obteve menor 
nota. Ao final do relatório, mostre quantos alunos 
tiveram menor nota na prova 1, quantos tiveram 
menor nota na prova 2 e quantos tiveram menor 
nota na prova 3.
Tópicos para Discussão
� Variáveis Compostas Homogêneas
� Multidimensional – Matriz
� Declaração
� Atribuição
� Leitura do teclado
� Apresentação (impressão)
� Passagem por parametro
� Somente uma posição
� Matriz inteira

Outros materiais

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes