Baixe o app para aproveitar ainda mais
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
Compartilhar