Vetores
Variáveis Compostas
Homogeneas
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
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.
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;
9
Variáveis Compostas
Unidimensionais - Vetor
Exemplo 2:
int vetor [6] = {12, 95, 75, 84, 7, 41};
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
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;
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
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
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.
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
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;
}
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;
Tamanho do vetor.
Passagem de vetor por parametro sem informar tamanho do vetor.
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] << "]"
Resultado em tela: v = [10, 20, 30, 40] v = [0, 0, 0, 0]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(){ int vetor[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
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
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.
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
Variáveis Compostas
31
Variáveis Compostas
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
Variáveis Compostas
35
Variáveis Compostas
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 matriz37
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
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]; 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
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 maiorVariá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
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