Baixe o app para aproveitar ainda mais
Prévia do material em texto
C5_Algoritmos.indd 14 27/04/2018 14:12:37 Variáveis indexadas (vetores) Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: Declarar estruturas de dados de uma dimensão (vetores) em pseu- docódigo e linguagem MATLAB. Construir algoritmos com estruturas de dados homogêneas (vetores) em pseudocódigo e linguagem MATLAB. Aplicar as estruturas de dados homogêneas (vetores) na solução de problemas. Introdução Vetores, arranjos simples ou estruturas de dados homogêneas de uma dimensão representam coleções lineares de elementos armazenados em sequência que são identificados por índices. A linguagem MATLAB fornece recursos poderosos para trabalhar com vetores, que vão desde simples operações até funções complexas, que realizam cálculos avançados com o objetivo de encontrar soluções para diversas questões do mundo real que podem ser representadas por expressões matemáticas. Neste capítulo, você vai estudar sobre a declaração de estruturas de dados homogêneas de uma dimensão e a construção de algoritmos em pseudocódigo e em MATLAB na solução de problemas. Estruturas de dados de uma dimensão (vetores) em pseudocódigo e linguagem MATLAB Uma estrutura de dados de uma dimensão, também conhecida como vetor, array ou arranjo simples (unidimensional), é uma lista ou relação de elementos dispostos em sequência. Essa estrutura, em comparação com uma tabela, é representada por uma linha ou uma coluna (PALM, 2013). Um vetor é uma estrutura de elementos homogêneos, isto é, seus elementos são todos do mesmo tipo de dados, como uma relação de números inteiros, de C5_Algoritmos.indd 1 27/04/2018 14:12:33 números reais ou de strings. Isso significa que não é possível inserir elementos de tipos diferentes em um vetor, mesmo que a linguagem de programação não exija que a declaração do tipo de dados seja explícita (GILAT, 2012). Algumas linguagens de programação exigem que as variáveis sejam declaradas com um tipo de dados específico, como Pascal, C, Java e outras. No entanto, há linguagens que realizam a conversão implícita de dados e, assim, não requerem que o tipo seja informado na declaração, como MATLAB, Visual Basic, PHP, etc. Nesse caso, um vetor que contém números inteiros e reais terá seus elementos convertidos para números reais. Vetores são organizados por índices ou subscritos, que representam cada uma das posições da estrutura. Na linguagem MATLAB, o índice de um vetor inicia a partir da primeira posição, seguindo até o número total de elementos da estrutura, conforme ilustrado na Figura 1 (GILAT, 2012). Figura 1. Estrutura de um vetor. Os elementos de um vetor são armazenados em posições contíguas da memória do dispositivo ou da máquina virtual que o armazenam, por isso os elementos podem ser acessados diretamente por meio de seus índices (DEITEL; DEITEL, 2011). A linguagem MATLAB foi desenvolvida especificamente para tratar com vetores de quaisquer dimensões. Dessa forma, qualquer relação de elementos pode ser tratada como um vetor, por exemplo, dados estatísticos de determinada população (GILAT, 2012). Variáveis indexadas (vetores)2 C5_Algoritmos.indd 2 27/04/2018 14:12:33 A declaração de um vetor em pseudocódigo pode ser realizada pela indica- ção de um nome para a variável que representa o arranjo seguida da atribuição dos valores da lista, ou seja, dos valores dos elementos de cada posição: Esse exemplo cria um vetor de cinco posições, cujos elementos foram inseridos automaticamente na sua declaração. É possível, ainda, declarar um vetor sem indicar os elementos na sua criação, podendo inseri-los posterior- mente por meio de uma estrutura de repetição, conforme será apresentado adiante neste capítulo. No MATLAB, a declaração é muito semelhante, bastando substituir o caractere-chave por colchete, além de substituir, opcionalmente, as vírgulas que separam os elementos pelo caractere espaço. Esse tipo de declaração se chama vetor de linha (PALM, 2013): Um vetor de coluna no MATLAB é declarado quando seus elementos são separados pelo caractere ponto e vírgula, pela indicação de uma aspa simples no final ou por quebras de linha (operador de transposição). Nesse tipo de vetor, os elementos são exibidos um abaixo do outro (PALM, 2013): É possível, ainda, criar um vetor com elementos espaçados de um fator constante no MATLAB. Para isso, deve-se indicar o valor do primeiro ele- mento, o incremento e o valor do último elemento. Nesse tipo de declaração, os caracteres colchetes ou parênteses são opcionais (CHAPRA, 2013). Observe: 3Variáveis indexadas (vetores) C5_Algoritmos.indd 3 27/04/2018 14:12:33 Se o incremento, que representa o parâmetro do meio, não for informado, o interpretador do MATLAB usará o valor 1, incrementando a sequência a cada número inteiro. No entanto, se o incremento superar o último valor, o vetor receberá até o último valor que não exceder o valor final (CHAPRA, 2013). Observe: Outra opção para declarar um vetor com atribuição de valores se dá por meio da função . Essa função cria um vetor com espaçamento linear, que identifica automaticamente os elementos intermediários do vetor por meio de um parâmetro que especifica a quantidade de elementos (GILAT, 2012). Nesse exemplo, a função é usada para atribuir quatro valores, entre 1 e 10, para o vetor: Algoritmos com estruturas de dados homogêneas (vetores) em pseudocódigo e linguagem MATLAB Uma vez defi nidas as declarações das estruturas de dados homogêneas uni- dimensionais, isto é, dos vetores, conforme visto anteriormente, é possível executar diversas ações com esses dados, como pesquisar, editar, concatenar e acrescentar elementos, entre outras. Acessar elementos Sabendo que o índice de um vetor inicia na posição 1, é possível acessar diretamente qualquer elemento do vetor a partir de seu índice, informando apenas a posição ou um intervalo, de acordo com os seguintes exemplos: Variáveis indexadas (vetores)4 C5_Algoritmos.indd 4 27/04/2018 14:12:34 Editar elementos A edição de um vetor também ocorre pela seleção do índice de seus ele- mentos. Essa edição pode modifi car um único elemento ou uma faixa que indica a posição inicial e a posição fi nal. Se houver a atribuição para uma posição inexistente, essa posição será criada e seus elementos intermediários receberão 0 (CHAPRA, 2013). Além disso, é possível excluir elementos de um vetor pela atribuição de um valor nulo para determinada posição ou para uma faixa de posições. Nesse caso, o vetor reduz o seu tamanho para a quantidade de itens restantes. Concatenar vetores A concatenação de dois vetores se dá pela união de seus elementos. O resultado pode ser atribuído a outra variável ou a qualquer uma das variáveis que estão sendo concatenadas: Operações com vetores É possível realizar diversas operações com vetores, como soma, subtração, divisão, multiplicação, exponenciação e outras. As operações adição, subtração e multiplicação por um escalar podem ser realizadas de forma direta, usando os operadores conhecidos da computação: +, - e * (GILAT, 2012). 5Variáveis indexadas (vetores) C5_Algoritmos.indd 5 27/04/2018 14:12:34 No entanto, as operações multiplicação, divisão e potenciação exigem uma representação um pouco diferente. Para isso, utiliza-se um ponto antes do operador na expressão, em uma representação conhecida no MATLAB por operações elemento por elemento (GILAT, 2012): Para realizar operações entre vetores, é necessário que eles tenham a mesma dimensão, isto é, não é possível, por exemplo, somar dois vetores de dimensões diferentes, sendo um com cinco elementos e o outro com quatro. Caso haja uma tentativa de realizar uma operação com vetores de dimensões diferentes, o seguinte erro será apresentado pelo MATLAB: matrix dimensions must agree. Percorrer vetores É possível percorrer um vetor para realizar comparações ou operações com seus elementos. A navegação em um vetor sedá pelo índice dos elementos, que apontam para o conteúdo de cada posição, entre um e o número total de itens do arranjo (PALM, 2013). O pseudocódigo de uma estrutura de repetição em um vetor é apresentado a seguir. Nessa estrutura, uma variável chamada índice indica a posição de cada elemento pela navegação na estrutura, permitindo, assim, imprimir o conteúdo de cada elemento: Variáveis indexadas (vetores)6 C5_Algoritmos.indd 6 27/04/2018 14:12:34 Para percorrer um vetor de elementos com o MATLAB, é preciso usar uma das estruturas de repetição, como ou . O seguinte exemplo navega em um vetor de cinco posições e multiplica por dois apenas os elementos pares que compõem a estrutura. Observe: Estruturas de dados homogêneas (vetores) na solução de problemas A linguagem MATLAB é uma poderosa ferramenta para a solução de pro- blemas matemáticos. Inúmeras funções nativas estão disponíveis para o uso em vetores, que facilitam e agilizam cálculos e operações nessas estruturas, conforme será apresentado a seguir. Contagem de elementos A instrução pode ser utilizada para obter a dimensão de um vetor, cujo resultado apresenta dois números: a quantidade de linhas e de colunas (CHAPRA, 2013). Outra forma de encontrar o número de elementos de um vetor se dá pela função , conforme os seguintes exemplos: 7Variáveis indexadas (vetores) C5_Algoritmos.indd 7 27/04/2018 14:12:35 Seleção de elementos Não raras vezes, é necessário encontrar e/ou selecionar elementos de um vetor de acordo com determinados critérios, como menor e maior, média, mediana e soma, entre outros (CHAPRA, 2013). Seleção de índices e valores Utilize a função para selecionar os índices dos elementos que satisfaçam a determinados critérios de pesquisa (GILAT, 2012). No exemplo a seguir, os índices são identifi cados e os valores dos elementos têm valor maior que o número 4. Funções nativas Diversas funções matemáticas estão disponíveis para o uso com vetores no MATLAB. Essas funções servem de apoio para a execução de cálculos avançados, que vão desde a soma e o produto de um vetor até funções mais complexas, como produto escalar, produto vetorial, seno, cosseno e tangente, entre outros (GILAT, 2012). Variáveis indexadas (vetores)8 C5_Algoritmos.indd 8 27/04/2018 14:12:35 Geração de números aleatórios Números aleatórios são importantes para a geração de dados que servem de base para diversas atividades da Engenharia, por exemplo, simulações. O MATLAB tem três formas diferentes de gerar números aleatórios para vetores, que produzem números diferentes a cada execução, conforme segue (GILAT, 2012). Instrução rand Essa instrução gera números aleatórios entre 0 e 1 uniformemente distribuídos. Se apenas um parâmetro for passado, uma matriz quadrada será produzida com números aleatórios. No entanto, para produzir um vetor com números aleatórios por meio da função , utilize um parâmetro para forçar a geração de apenas uma linha ou coluna. 9Variáveis indexadas (vetores) C5_Algoritmos.indd 9 27/04/2018 14:12:35 Instrução randi Essa instrução gera números aleatórios inteiros uniformemente distribuídos, entre 1 e o número passado como parâmetro. Havendo necessidade de gerar números por determinada faixa, utilize um parâmetro adicional que recebe um vetor e a dimensão da matriz, indicando a quantidade de linhas e colunas, conforme os seguintes exemplos. Instrução randn Essa instrução gera uma distribuição normalizada de números defi nidos pela média 0 e desvio padrão 1. Com isso, pode gerar variáveis escalares, vetoriais ou matriciais, cujos parâmetros defi nem as linhas e as colunas da matriz. Você pode utilizar lookfor para obter detalhes das instruções e palavras reservadas do MATLAB. Exemplo: lookfor randi. randi – pseudorandom integers from a uniform discrete distribution. rng – control the random number generator used by RAND, RANDI, and RANDN. randi – pseudorandom integers from a uniform discrete distribution. randi – CODISTRIBUTED.RANDI Create a codistributed array of random integers. randiLike – randiLike codistributed array. randi – codistributed array of normally distributed pseudorandom numbers using codistributor. randi – codistributed array of normally distributed pseudorandom numbers using codistributor. randi – DISTRIBUTED.RANDI Create a distributed array of random integers. randi – build a gpuArray of uniformly distributed pseudo-random integers. randi – GPUARRAY.RANDI Create a gpuArray of random integers. Variáveis indexadas (vetores)10 C5_Algoritmos.indd 10 27/04/2018 14:12:36 Entrada e saída de dados em vetores Embora muitos problemas possam ser resolvidos pela defi nição de dados fi xos em variáveis, em outros casos pode ser necessário promover a interação do usuário com a aplicação, por meio da entrada e da saída de dados. Entrada de dados No MATLAB, a entrada de dados em vetores pode ser realizada pelo teclado ou pela leitura de arquivos armazenados em alguma pasta no disco rígido ou em memória auxiliar, como um pen drive, por exemplo. Para isso, a instrução pode ser utilizada para enviar uma mensagem ao usuário e, ao mesmo tempo, capturar a resposta inserida na aplicação (GILAT, 2012). Nesse exemplo, declaramos um vetor vazio e implementamos um laço de repetição para realizar a leitura de três posições. A instrução converte um número para string para formar a mensagem exibida ao usuário e a função captura a leitura para dentro do vetor. Observe: Existem diversas formas de ler arquivos no MATLAB, porém, foge ao escopo deste capítulo explicar cada uma delas. Nesse sentido, trataremos a forma mais simplificada, que simplesmente carrega para um vetor os dados de um arquivo que estejam em formato compatível. Essa entrada de dados facilita a execução de programas que têm dados já armazenados, isto é, que foram capturados por outras fontes, mas que podem ser trabalhados no MATLAB. Para carregar um arquivo, utilize a instrução (GILAT, 2012). Nesse exemplo, o MATLAB cria uma variável com o nome do arquivo e atribui o conteúdo do arquivo a ela. Na sequência, um laço de repetição percorre o vetor para exibir cada um dos elementos. Observe: o conteúdo do arquivo deve ser compatível com um vetor (Figura 2). 11Variáveis indexadas (vetores) C5_Algoritmos.indd 11 27/04/2018 14:12:36 Figura 2. Arquivo que contém os dados de um vetor. Saída de dados No MATLAB, a saída pode ser realizada pela simples execução de uma variável – modo como foi apresentado até agora –, ou pelas instruções disp e fprintf. Para ambos os modos, é possível apresentar os dados de um vetor de forma única ou pela navegação em seus elementos por meio de uma estrutura de repetição (PALM, 2013). A instrução é muito simples e exibe o conteúdo de uma variável, sem qualquer parâmetro adicional: Já a função é mais elaborada e se comporta de forma seme- lhante ao comando da linguagem C. Assim, é possível controlar a apresentação da saída dos dados, como definir o formato dos números, inserir quebras de linhas, etc. Variáveis indexadas (vetores)12 C5_Algoritmos.indd 12 27/04/2018 14:12:36 Acesse o link ou o código a seguir e descubra outras infor- mações sobre entrada e saída de dados no MATLAB. https://goo.gl/h3kzMD CHAPRA, S. C. Métodos numéricos aplicados com MATLAB® para engenheiros e cientistas. 3. ed. Porto Alegre: AMGH, 2013. DEITEL, P. J.; DEITEL, H. M. Como Programar em C. 6. ed. São Paulo: Pearson, 2011. GILAT, A. MATLAB com aplicações em engenharia. 4. ed. Porto Alegre: Bookman, 2012. PALM III, W. J. Introdução ao MATLAB para engenheiros. 3. ed. Porto Alegre: AMGH, 2013. 13Variáveis indexadas (vetores) C5_Algoritmos.indd 13 27/04/2018 14:12:37 https://goo.gl/h3kzMD Encerra aqui o trecho do livro disponibilizado para esta Unidade de Aprendizagem. Na Biblioteca Virtual da Instituição, você encontra a obra na íntegra.
Compartilhar