Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Paulista (UNIP) Disciplina: Lógica de Programação e Algoritmo (LPA) Prof. MSc. Vladimir Camelo São Paulo, 2017 Vetores e Matrizes VETORES Pode-se definir um Vetor como uma estrutura de dados homogênea UNIDIMENSIONAL (1 linha com várias colunas), ou seja, uma estrutura em que todos os dados armazenados devem ser obrigatoriamente do mesmo tipo. Esta estrutura armazena de forma contigua em memória as posições que possibilitem o armazenamento dos dados. Cada posição é identifica por um índice que possibilita a localização dos dados armazenados nesta estrutura. Escrita de um vetor em algoritmo: Var nomeVetor : vetor [<início>..<quantidade_de_posições>] de <tipo_de_vetor> Ex.: nomeVetor: vetor [1..10] de inteiro A forma de armazenamento de um elemento em um vetor é dada a seguir: nomeVetor [indíce] <- elemento ou nomeVetor [indíce] := elemento Ex.: nomeVetor[0] <- 10 nomeVetor[1] <- 10 nomeVetor[2] <- 10 nomeVetor[3] <- 10 Até que sejam inseridos todos os elemento nas posições do vetor. Utilizando uma estrutura de repetição a forma utilizada para a inserção dos elementos é dada a seguir: para i <- 0 ate 9 nomeVetor[i] <- valor fimpara ou com base na declaração acima para i <- 1 ate 10 nomeVetor[i] <- valor fimpara Para que seja lido uma informação do usuário e armazenada em um vetor no algoritmo segue-se a declarção abaixo na estrutura de repetição: para i <- 1 ate 10 leia (nomeVetor[i]) fimpara Exemplo: Escreva um algoritmo para ler a nota de 10 alunos, calcular a média geral da turma e escrever quantos alunos obtiveram nota acima da média calculada (media >= 7). algoritmo "semnome" var soma, media: real nota: vetor [1..10] de real x, n, cont: inteiro inicio soma <- 0 media <- 0 cont <- 0 para x <- 1 ate 10 faca leia (nota [x]) soma <- soma + nota [x] fimpara media <- soma / 10 para n <- 1 ate 10 faca se (nota [n] > media) entao cont <- cont + 1 fimse fimpara escreval (cont) fimalgoritmo Operações básicas com vetores Assim como em variáveis simples, também é possível operar com variáveis indexadas (vetores ou matrizes). Contudo não é possível operar diretamente com o conjunto completo, mas com cada um de seus elementos de forma separada. O acesso individual a cada elemento de um vetor é realizado pela especificação de sua posição na mesma por meio do nome do vetor e informando o índice que deseja pesquisar. Área de atuação de vetores A área de aplicação de vetores em algoritmos é muito extenso, mas normalmente os vetores são usados em duas tarefas muito importantes no processamento de dados: pesquisa e classificação. A pesquisa consiste na verificação da existência de um valor dentro de um vetor. Trocando em miúdos, pesquisar um vetor consiste em procurar dentre seus elementos um determinado valor. A classificação de um vetor consiste em arranjar seus componentes numa determinada ordem, segundo um critério específico. Por exemplo, este critério pode ser a ordem alfabética de um vetor de dados caracter, ou então a ordem crescente ou decrescente para um vetor de dados numéricos. Há vários métodos de classificação, mas o mais conhecido é o método da bolha (Bubble Sort). Exercício: Exercícios utilizando Arrays (Vetores e Matrizes) Crie um vetor de 10 posições e armazene os números em ordem aleatória. Após inserir os números ordene-os em ordem decrescente. Crie um vetor de 10 posições e armazene os valores. Peça ao usuário um número qualquer e verifique quantos números do vetor são inferiores a esse número e quantos são superiores. Crie dois vetores do tipo inteiro chamado respectivamente A e B com 10 posições cada. Receba do usuário valores para armazenar em ambos os vetores. Armazene os elementos do vetor A e do vetor B em um vetor resultante chamado C. Ordene em ordem crescente e apresente os elementos do vetor C. Crie dois vetores do tipo inteiro chamado respectivamente A e B com 10 posições cada. Armazene a multiplicação dos respectivos elementos de cada vetor em um vetor resultante chamado C. Escreva um programa para pedir 10 números ao usuário, armazene esses valores em um array (vetor). Peça ao usuário que informe um número qualquer e verifique quantos números do array são inferiores a esse número. Escreva uma classe que some os elementos da diagonal principal de uma matriz bidimensional quadrada (você pode escolher o tamanho contanto que seja quadrada), fornecida pelo usuário. Dado o seguinte vetor: Qual será o conteúdo do vetor V depois de executado o algoritmo abaixo? para i de 8 até 5 passo -1 Faça aux <- [i] v [i] <- [8 - i + 1] v [8 - i + 1] <- aux fimpara v [3] <- [1] v [v [3]] <- [v [2]] Escreva um algoritmo que permita a leitura dos nomes de 10 pessoas e armaze os nomes lidos em um vetor denominado nomes. Após isto, o algoritmo deve permitir a leitura de mais 1 nome qualquer de pessoa e depois escrever a mensagem ACHEI, se o nome estiver entre os 10 nomes lidos anteriormente (guardados no vetor), ou NÃO ACHEI caso contrário. Escreva um algoritmo que implemente um vetor de 10 posições com os valores conforme apresentado na figura abaixo. Para a execução deste algoritmo siga os seguintes passos: Na primeira interação o algoritmo deverá ordenar (crescente) o vetor conforme especificado na figura. (ordenar apenas a primeira parte (0 até 4) e depois a segunda parte (5 até 9)) Na segunda interação realize a ordenação da seguinte forma: posição 0 com posição 5, posição 1 com posição 6, posição 2 com posição 7, posição 3 com posição 8, posição 4 com posição 9. Na terceira interação realize a ordenação da seguinte forma: posição 0 com posição 9, posição 1 com posição 8, posição 2 com posição 7, posição 3 com posição 6, posição 4 com posição 5. Na quarta interação realize a ordenação conforme feito no item a desta questão. MATRIZES Este tipo de estrutura também tem sua principal utilização vinculada à criação de tabelas. Caracteriza-se por ser definida uma única variável vinculada dimensionada com um determinado tamanho. A dimensão de uma matriz é constituída por constantes inteiras e positivas. Os nomes dados às matrizes seguem as mesmas regras de nomes utilizados para as variáveis simples. Assim como um vetor é uma estrutura de dados homogênea. A sintaxe do comando de definição de matrizes de duas dimensões é a seguinte: var <nome_da_variável> : MATRIZ [<linha_inicial>..<linha_final>,<coluna_inicial>..<coluna_final> ] DE <tipo_de_dado> Ex.: var m : matriz [1 .. 5 , 1 .. 10] de inteiro Também é possível definir matrizes com várias dimensões, por exemplo: Ex.: var N : MATRIZ [1 .. 4] DE INTEIRO O : MATRIZ [1 .. 50 , 1 .. 4] DE INTEIRO P : MATRIZ [1 .. 5, 1 .. 50 , 1 .. 4] DE INTEIRO Q : MATRIZ [1 .. 3 , 1 .. 5, 1 .. 50 , 1 .. 4] DE INTEIRO R : MATRIZ [1 .. 2 , 1 .. 3 , 1 .. 5, 1 .. 50 , 1 .. 4] DE INTEIRO S : MATRIZ [1 .. 2 , 1 .. 2 , 1 .. 3 , 1 .. 5, 1 .. 50 , 1 .. 4] DE INTEIRO Exemplo de um algoritmo utilizando uma matriz quarada de tamanho 5X5. algoritmo "semnome" var num: vetor [1..5, 1..5] de real L, C: inteiro inicio para L <- 1 ate 5 faca para C <- 1 ate 5 faca escreva ("Digite o valor de num [",L,",",C,"] = ") leia (num [L,C]) fimpara fimpara escreval() para L <- 1 ate 5 faca para C <- 1 ate 5 faca escreval ("o valor de num [",L,",",C,"] = ",num [L,C]) fimpara fimpara fimalgoritmo Exercício: Construa um algoritmo que solicite do usuário a inserção de 25 valores. Armazene-os em uma matriz quadrada e realize a seguinte: Capture os elementos armazenados na diagonal principal e armazene em um vetor denominado principal, conforme figura abaixo: Capture os elementos armazenados na diagonal secundaria e armazeneem um vetor denominado secundaria, conforme figura abaixo: Realize a inversão dos valores do vetor principal para o vetor secundário, conforme apresentado abaixo: Resultando nos vetores abaixo Após a inversão dos valores no vetor realize a inserção novamente na matriz conforme figura abaixo: Construa um algoritmo que implemente duas matriz com tamanho 5X4 e 4X5 denominadas A e B respectivamente. Coloque em uma matriz C a soma dos valores da matriz A e B. Construa um algoritmo que troque os valores entre as colunas na matriz conforme figura abaixo: (Observação: não é para criar uma nova matriz, os valores devem ser trocados e colocados na mesma matriz) Crie uma matriz conforme apresentado na figura abaixo e realize as seguintes tarefas: Ache 5 alunos com as maiores notas e informe o nome, disciplina e a nota Informe a média geral da turma e a média geral de cada aluno Ache 5 alunos com as menores notas e informe o nome, disciplina e a nota Encontre os alunos que estão de exame em determinadas disciplinas, pois apresentam média < 7 e media >= 4. Informe o nome do aluno, a disciplina e a nota destes alunos. Encontre os alunos que estão de DP em determinadas disciplinas, pois apresentam média < 4. Informe o nome do aluno, a disciplina e a nota destes alunos:
Compartilhar