Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 ALGOP – Algoritmos e Programação Aula 5 – Vetores e Matrizes + Vetores (variáveis compostas homogêneas unidimensionais) + Vetores (exemplos de uso) + Matrizes (variáveis compostas homogêneas multidimensionais) + Matrizes (exemplos de uso) 2 ALGOP – Algoritmos e Programação Vetores (definição) Um vetor é uma variável composta, homogênea e unidimensional. Um vetor também é caracterizado como uma variável indexada. Composta: permite o armazenamento de várias informações dentro de uma “mesma variável” (mesmo identificador). Indexada: cada informação é manipulada a partir de um índice, acoplado ao identificador da variável composta. Esse índice corresponde a posição, de um determinado dado, dentro do vetor. Homogênea: os dados armazenados são de um mesmo tipo; (ou são inteiros, ou reais, ou caracteres); Unidimensional: os dados ficam dispostos em uma única dimensão e armazenados em regiões contíguas (vizinhas) de memória. 3 ALGOP – Algoritmos e Programação Vetores (definição, exemplo) vet_idades: Observando o exemplo acima, notamos que existe um conjunto de idades representado por um único identificador (vet_idades). Esse conjunto de idades pode ser armazenado (na memória) em um vetor. Os dados (idades) contidos nesse vetor, podem ser acessados pelos seus índices (posições). Por exemplo, na posição de índice 2 temos como conteúdo o valor 40, ou seja, vet_idades[2] = 40 … :-) Podemos utilizar vetores para representar uma lista com idades de pessoas, uma lista de preços, uma lista com os tempos dos carros de corrida (para formação do grid de largada) … :-) 18 33 40 12 65 0 1 2 3 4 4 ALGOP – Algoritmos e Programação Vetores (declaração e atribuição) vet_idades: Antes de utilizarmos um vetor, precisamos declará-lo (da mesma forma que fazemos para as variáveis comuns). Na linguagem C/C++ acomplamos, ao identificador, o número de elementos do vetor entre colchetes. Em Pseudolinguagem Em linguagem C/C++ vet_idades : vetor[0..4] de inteiro int vet_idades[5]; Para atribuirmos um valor a uma posição desse vetor devemos escrever: Em Pseudolinguagem Em linguagem C/C++ vet_idades[3] <- 12 vet_idades[3] = 12; vet_idades: 0 1 2 3 4 12 0 1 2 3 4 5 ALGOP – Algoritmos e Programação Vetores (entrada e saída de dados) Podemos fornecer valores para posições do vetor, utilizando as instruções de entrada de dados (pelo teclado): Em Pseudolinguagem Em linguagem C/C++ leia (vet_idades[1]) scanf (“%d”, &vet_idades[1]); Supondo que o usuário tenha digitado o valor 53, atendendo a solicitação de entrada de dados pelo teclado, o nosso vetor estará armazenando os valores: vet_idades: Podemos apresentar o conteúdo (valor) de uma determinada posição do vetor: Em Pseudolinguagem Em linguagem C/C++ escreva (vet_idades[1]) printf (“ X = %d”, vet_idades[1]); Será mostrado, na tela, o conteúdo da posição de índice 1 do vetor: X = 53 53 12 0 1 2 3 4 6 ALGOP – Algoritmos e Programação Vetores (exemplo de uso 1 – código sem vetor) No cenário a seguir, queremos armazenar as temperaturas dos sete dias de uma semana para, em seguida, calcular a média de temperatura do período. No primeiro trecho de código, utilizamos 7 variáveis para guardar os dados mencionados, enquanto que, no segundo trecho, utilizamos um vetor... :-) #include <stdio.h> #include <conio.h> int main() { float tdom, tseg, tter, tqua, tqui, tsex, tsab, tmedia; printf ("Informe a temperatura do 1 dia: "); scanf ("%f", &tdom); printf ("Informe a temperatura do 2 dia: "); scanf ("%f", &tseg); // continua (exemplo utilizando 7 variáveis) ... 7 ALGOP – Algoritmos e Programação Vetores (exemplo de uso 1 – código sem vetor) printf ("Informe a temperatura do 3 dia: "); scanf ("%f", &tter); printf ("Informe a temperatura do 4 dia: "); scanf ("%f", &tqua); printf ("Informe a temperatura do 5 dia: "); scanf ("%f", &tqui); printf ("Informe a temperatura do 6 dia: "); scanf ("%f", &tsex); printf ("Informe a temperatura do 7 dia: "); scanf ("%f", &tsab); tmedia = (tdom+tseg+tter+tqua+tqui+tsex+tsab) / 7; printf ("Temperatura media = %f", tmedia); getch(); return 0; } 8 ALGOP – Algoritmos e Programação Vetores (exemplo de uso 1 – código com vetor) #include <stdio.h> #include <conio.h> int main() { int indice; float temp[7], tmedia, soma; soma = 0; for (indice = 0; indice <= 6; indice = indice + 1) { printf ("Informe a temperatura do %d dia: ", indice + 1); scanf ("%f", &temp[indice]); soma = soma + temp[indice]; } tmedia = soma / 7; printf ("Temperatura media = %f", tmedia); getch(); return 0; } Observe que o uso do vetor simplifica o programa. Imagine se tivéssemos que calcular a média anual ? Sem vetor, teríamos 365 variáveis !!! 9 ALGOP – Algoritmos e Programação Vetores (exemplo de uso 2 – busca ou pesquisa sequencial) Aproveitando o cenário anterior, vamos supor que queremos apresentar a temperatura máxima do período coletado. Para isso, fazemos uso da busca senquencial (ou linear), que percorre todos os elementos do vetor, em busca da condição a ser satisfeita (no caso, temperatura máxima)... :-) #include <stdio.h> #include <conio.h> int main() { int indice; float temp[7], tmax; // informamos as temperaturas dos 7 dias for (indice = 0; indice <= 6; indice = indice + 1) { printf ("Informe a temperatura do %d dia: ", indice + 1); scanf ("%f", &temp[indice]); } 10 ALGOP – Algoritmos e Programação Vetores (exemplo de uso 2 – busca ou pesquisa sequencial) // Busca sequencial ou busca linear (pesquisa ou busca) tmax = temp[0]; for (indice = 1; indice <= 6; indice = indice + 1) { if (temp[indice] > tmax) { tmax = temp[indice]; } } printf ("Temperatura maxima = %f", tmax); getch(); return 0; } Que alterações devemos fazer para obter a temperatura mínima ? … :-) 11 ALGOP – Algoritmos e Programação Vetores (exemplo de uso 3 – ordenação do vetor) No cenário seguinte, pedimos ao usuário para ele informar a idade de 5 pessoas, que serão armazenadas num vetor. Em seguida, ordenamos os elementos do vetor, colocando-os em ordem crescente. Isso é muito útil e possibilita outros meios de busca (busca binária)... :-) #include <stdio.h> #include <conio.h> int main() { int idade[5], aux, indice, repete; // coletamos as idades de 5 pessoas for (indice = 0; indice <= 4; indice = indice + 1) { printf ("Informe a idade do %d pessoa: ", indice + 1); scanf ("%d", &idade[indice]); } 12 ALGOP – Algoritmos e Programação Vetores (exemplo de uso 3 – ordenação do vetor) // ordenamos (classificamos) o vetor (em ordem crescente) for (repete = 1; repete <= 4; repete = repete + 1) { for (indice = 1; indice <= 4; indice = indice + 1) { if (idade[indice] < idade[indice 1]) { aux = idade[indice]; idade[indice] = idade[indice 1]; idade[indice 1] = aux; } } } 13 ALGOP – Algoritmos e Programação Vetores (exemplo de uso 3 – ordenação do vetor) // apresentamos o vetor ordenado for (indice = 0; indice <= 4; indice = indice + 1) { printf ("%d ", idade[indice]); } getch(); return 0; } O algoritmo utilizado para classificar (ordenar) o vetor nesse exemplo é conhecido como método da bolha (bubble sort). Quando temos um vetor ordenado, é possível fazer uma busca mais eficiente (mais rápida) por elementos contidos nele. É como no exemplo da busca por uma determinada página de um livro; comoas páginas estão ordenadas, encontramos rapidamente uma página desejada (busca binária … pesquisar na internet)... :-) 14 ALGOP – Algoritmos e Programação Matrizes (definição) Uma matriz é uma variável composta, homogênea, multidimensional e indexada. Composta: permite o armazenamento de várias informações dentro de uma “mesma variável” (mesmo identificador). Indexada: cada informação é manipulada a partir de índices, acoplados ao identificador da variável composta. Os índices estão relacionados com o número de dimensões da matriz. Homogênea: os dados armazenados são de um mesmo tipo; (ou são inteiros, ou reais, ou caracteres); Multidimensional: vamos estudar exemplos de matrizes bidimensionais (duas dimensões) em que os dados ficam dispostos em linhas contendo um determinado número de colunas. 15 ALGOP – Algoritmos e Programação Matrizes (definição, exemplo) mat_idades: Observando o exemplo acima, notamos que existe um conjunto de idades representado por um único identificador (mat_idades). Esse conjunto de idades pode ser armazenado (na memória) em uma matriz. Os dados contidos nessa matriz, podem ser acessados a partir de seus índices (linha e coluna) (matriz de duas dimensões). Por exemplo, na posição de índices linha = 1 e coluna = 2 temos como conteúdo o valor 65, ou seja, mat_idades[1][2] = 65 … :-) ... matriz [linha] [coluna] … :-) L0 33 12 40 L1 19 27 65 L2 14 18 26 C0 C1 C2 16 ALGOP – Algoritmos e Programação Matrizes (declaração e atribuição) mat_idades: Para declararmos uma matriz, procedemos da seguinte forma: Em Pseudolinguagem Em linguagem C/C++ mat_idades : matriz[0..2][0..2] de inteiro int mat_idades[3][3]; Na linguagem C, no primeiro colchete informamos a quantidade de linhas, enquanto que, no segundo colchete, a quantidade de colunas. Para atribuir um valor a uma posição dessa matriz devemos escrever: Em Pseudolinguagem Em linguagem C/C++ mat_idades[1][2] <- 65 mat_idades[1][2] = 65; (ver matriz acima) L0 L1 65 L2 C0 C1 C2 Quando manipulamos elementos de uma matriz, Informamos primeiro o índice das linhas e depois o índice das colunas. Matriz [linha] [coluna] 17 ALGOP – Algoritmos e Programação Matrizes (entrada e saída de dados) mat_idades: Podemos entrar com valores (pelo teclado) para posições da matriz: Em Pseudolinguagem Em linguagem C/C++ leia (mat_idades[2][0]) scanf (“%d”, &mat_idades[2][0]); Supondo que o usuário tenha digitado o valor 14, atendendo a solicitação de entrada de dados pelo teclado, veja na matriz acima onde o 14 foi inserido... :-) Podemos apresentar o conteúdo (valor) de uma determinada posição da matriz: Em Pseudolinguagem Em linguagem C/C++ escreva (mat_idades[2][0]) printf (“ X = %d”, mat_idades[2][0]); Será mostrado, na tela, o conteúdo dessa posição da matriz: X = 14 L0 L1 65 L2 14 C0 C1 C2 18 ALGOP – Algoritmos e Programação Matrizes (exemplo de código para abastecer e mostrar valores) #include <stdio.h> #include <conio.h> int main() { int idades[3][3], linha, coluna; // fornecendo valores para as posições da matriz for (linha = 0; linha <= 2; linha = linha + 1) { for (coluna = 0; coluna <= 2; coluna = coluna + 1) { printf ("Entre valor para idades[%d][%d]: ", linha, coluna); scanf ("%d", &idades[linha][coluna]); } } 19 ALGOP – Algoritmos e Programação Matrizes (exemplo de código para abastecer e mostrar valores) // apresentando (na tela) o conteúdo da matriz printf ("\nMatriz de Idades:\n"); for (linha = 0; linha <= 2; linha = linha + 1) { for (coluna = 0; coluna <= 2; coluna = coluna + 1) { printf ("%4d", idades[linha][coluna]); } printf ("\n"); } getch(); return 0; } 20 ALGOP – Algoritmos e Programação Vetores e Matrizes (declaração e inicialização) #include <stdio.h> #include <conio.h> int main() { int vet_idades[5] = {12, 27, 40, 18, 33}; int mat_idades[3][3] = {{44, 32, 15}, {17, 87, 56}, {22, 25, 50}}; getch(); return 0; } vet_idades: mat_idades: L0 44 32 15 L1 17 87 56 L2 22 25 50 C0 C1 C2 12 27 40 18 33 0 1 2 3 4 Podemos declarar e já inicializar vetores e matrizes. Na linguagem C, basta fornecer os valores iniciais entre chaves, como apresentado abaixo. 21 ALGOP – Algoritmos e Programação Vetores e Matrizes (sugestões de leitura) + MANZANO, José Augusto N. G.; OLIVEIRA, Jayr Figueiredo. Algoritmos: lógica para desenvolvimento de programação de computadores. Capítulos: 6 – Estruturas de Dados Homogêneas I. 7 – Aplicações práticas do uso de matrizes do tipo vetor. 8 – Estruturas de Dados Homogêneas II. + SALIBA, Walter Luís Caram. Técnicas de programação: uma abordagem estruturada. Capítulo: 8 – Variáveis Indexadas. Para Saber Mais + ARAÚJO, Everton C. Algoritmos: fundamento e prática. Capítulos: 12 – Conjuntos. 14 – Classificação e Pesquisa. Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21
Compartilhar