CFAC: Visual Basic: VI - Arrays

Documentos relacionados
Visual Basic. VI - Arrays. CFAC Concepção e Fabrico Assistidos por Computador João Manuel R. S. Tavares

Nesta aula serão apresentados alguns comandos de condição, repetição e gráficos.

Informática de Gestão 1º ano / 1º semestre Ano letivo: 2014/2015. Visual Basic VBA

1 Code::Blocks Criação de projetos

Busca. Pesquisa sequencial

Índice: Nitgen do Brasil

Pesquisa: localização de um Registo num Ficheiro (para aceder ao registo: ler/alterar informação) R. P. António Viera, 23. R. Carlos Seixas, 9, 6º

Deverá ser apresentada uma caixa de combinação para auxiliar o utilizador a escolher o distrito de residência do entrevistado.

MÉTODOS DE ORDENAÇÃO

Unidade IV: Ponteiros, Referências e Arrays

Sistema dinâmico de impressão da tabela de detalhes das facturas

O dono de uma livraria cuja base de dados é administrada por si pediu-lhe para efectuar as seguintes alterações ao preço dos livros:

Árvores Binárias de Busca

Manipulando Strings no VBA (Replace, Mid e InStr)

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

Curso de Iniciação ao Access Basic (I) CONTEÚDOS

UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO CURSORS. Profº Erinaldo Sanches Nascimento

Javascript 101. Parte 2

Procalc v1.0. Versão Programador

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Linguagens de Programação

Parte 5 LibreOffice Base

Armazenamento de Dados. Prof. Antonio Almeida de Barros Junior

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

4 Criação de macros e introdução à linguagem VBA

Informática II Ficha 5_resolução

Tarefa Orientada 17 Listas de dados

Manipulando Strings no VBA (Replace, Mid e InStr)

Como incluir artigos:

VETORES E MATRIZES. By Eduardo Vieira Machado (Good Guy)

JavaScript (Funções, Eventos e Manipulação de Formulários)

Reconhecer alguns dos objectos VBA Automatizar bases de dados recorrendo à programação VBA e scripts SQL

JAVA NETBEANS PGOO Prof. Daniela Pires Conteúdo

Laboratório de Programação I

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

PROGRAMAÇÃO II 3. PILHA DINÂMICA

Orientação a Objetos

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

ESTRUTURA DE DADOS PILHA

P S I 2. º A N O F 5 M E S T R E / D E T A L H E E P E S Q U I S A. Criar uma relação mestre-detalhe. Pesquisa de informação

Flash MX ActionScript

PROGRAMAÇÃO II 4. ÁRVORE

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

INTRODUÇÃO À PROGRAMAÇÃO DO ACCESS BASIC

BARRA DE PROGRESSO EM VBA

Visual Basic. V - Repetição. CFAC Concepção e Fabrico Assistidos por Computador João Manuel R. S. Tavares

MANUAL DO EXCEL. Um campo é um espaço que contém determinada informação (ex: Nome do cliente X, Telefone do Sr. Y)

Figura 1 Busca Linear

Dim formulário As Object formulário = Me Me.Text = "Título"

CAPÍTULO 2. Grafos e Redes

Planeamento de um Posto de Abastecimento de Combustível

Universidade da Beira Interior. Sistemas Distribuídos

Algumas notas sobre PASCAL

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

O AMBIENTE DE TRABALHO DO WINDOWS

Tabelas (arrays) (vetores, matrizes, etc) Algoritmos de pesquisa Algoritmos de ordenação

Findo o processo de normalização, obtemos o conjunto de tabelas indicado na tabela 1.28.

Expressões Lógicas Comandos de Seleção

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

Tarefa Orientada 14 Subconsultas

INTRODUÇÃO OBJECT PASCAL/DELPHI

V - Repetição. CFAC Concepção e Fabrico Assistidos por Computador. 2) Elementos de uma estrutura de repetição;

Aplicações de Escritório Electrónico

1. Ambiente de Trabalho

OPERADORES E ESTRUTURAS DE CONTROLE

Aplicações de Programação CNC/ISO com Microcomputador

Tarefa Orientada 13 Agrupamento e sumário de dados

APROG - Civil. Excel. Técnicas de pesquisa de informação em tabelas. Instituto Superior de Engenharia do Porto

Aplicações de Escritório Electrónico

Hashing. Rafael Nunes LABSCI-UFMG

ESTRUTURA DE DADOS -VARIÁVEIS COMPOSTAS. Prof. Angelo Augusto Frozza, M.Sc.

Visão Artificial Para a Indústria. Manual do Utilizador

Planificação. Apreender conceitos sobre a lógica de programação. Aplicar instruções e sequências lógicas na resolução de problemas

JavaScript. JavaScript é uma linguagem de script usada em navegadores web. É uma linguagem dinâmica, estruturada e orientada em objetos.

Aula de JavaScript 05/03/10

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho.

DESENVOLVIMENTO DE SOFTWARE AULA 06 TEORIA. Prof. Celso Candido ADS / REDES / ENGENHARIA

Introdução à Programação

Poderá instalar o ZSRest APP diretamente através da Play Store do equipamento.

SAMUO APP: MANUAL DO ADMINISTRADOR

Análise de complexidade

EAD Árvore árvore binária

Manipulação de Arquivos em Pascal

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL

Iniciar o Data Adapter Configuration Wizard. Toolbox Data Duplo clique em OleDbDataAdapter. Botão next na caixa de diálogo

Endereçamento IP 09/05/2014. Endereçamento IP CLASSE B CLASSE A CLASSE A CLASSE C

Algoritmos de Pesquisa e Ordenação em Vectores

Tarefa Orientada 16 Vistas

JSP - ORIENTADO A OBJETOS

Pesquisa em Memória Primária. Prof. Jonas Potros

APOSTILA DE EXCEL 2007

Abaixo do Objeto WorkSheet temos a coleção Cells, que representa todas as células de uma planilha.

Pragmática das Linguagens de Programação 2004/2005

Pesquisa e organização de informação

Estrutura de Dados Básica

Introdução ao Microsoft Windows

Transcrição:

Visual Basic VI - Arrays CFAC Concepção e Fabrico Assistidos por Computador João Manuel R. S. Tavares 1) Arrays no Visual Basic arrays unidimensionais (vectores); arrays de controlos; arrays bidimensionais (tabelas/matrizes); arrays dinâmicos. 2) Pesquisa; 3) Ordenamento. Sumário @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 2 @2009 - João Manuel R. S. Tavares 1

Array versus Variáveis Simples Uma variável simples é utilizada para guardar um único valor; Uma variável do tipo array é utilizada para representar vários valores do mesmo tipo utilizando-se apenas um nome para a variável. Imagine-se que pretende-se guardar os nomes de 1000 alunos; é razoável utilizar 1000 variáveis independentes? @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 3 Elementos de um Array Nome do Array: Um nome de variável válido para a estrutura. Índice : Um valor que identifica um elemento particular do array. Elemento: Um item particular do array (identificado pelo seu índice). Os elementos de um array ocupam localizações seguidas na memória principal. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 4 @2009 - João Manuel R. S. Tavares 2

Declaração de um Array Sintaxe: Dim nomedoarray ( m To n) As TipoDeElementos Para nomear o array deve-se utilizar as mesmas regras utilizadas para as variáveis simples. Exemplos: Dim month ( 1 To 12) As String Dim score (1 To 30) As Single Dim students (1 To 30 ) As String (Geralmente m é igual a 1.) @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 5 A Declaração Dim Utilizada quando se necessita de definir i um array. A declaração Dim prepara a locação de memória para o array. A declaração Dim deve ocorrer antes da primeira referência aos elementos do array. Tal como as variáveis simples, os arrays podem ser declarados ao nível de formulário ou passados para diferentes subprogramas através dos argumentos. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 6 @2009 - João Manuel R. S. Tavares 3

Exemplo: Inicialização de um Array Private Sub cmdwhowon_click() Dim teamname( 1To 5) As String declaração Dim n As Integer ' Fill array with World Series Winners teamname(1) = "Red Sox" teamname(2) = "Giants" teamname(3) = "White Sox" inicialização teamname(4) = "Cubs" teamname(5) = "Cubs" acesso n = Val(txtNumber.Text) picwinner.print "The "; teamname(n); " won World Series number"; n End Sub @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 7 Array teamname() teamname( 1 To 5) As String Nome do Array Red Sox Giants White Sox Cubs Cubs teamname(1) Índice Localizações sucessivas na memória @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 8 @2009 - João Manuel R. S. Tavares 4

Exemplo: Inicialização de um Array através da Leitura a partir de um Ficheiro Dim student ( 1 To 30) As String Open STUDENTS.TXT For Input As #1 For count = 1 To 30 Input #1, student ( count ) atribuição Next count @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 9 Exemplo: Somar os Valores de um Array Dim score( 1 To 30) As Single, student (1 To 30) As String Open STUDENT.TXT For Input As #1 For count = 1 To 30 Input #1, student (count), score (count) Next count sum = 0 For count = 1 To 30 sum = sum + score(count) Soma Next count average = sum/30 Igual à média. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 10 @2009 - João Manuel R. S. Tavares 5

Arrays Paralelos Dois arrays dizem-se paralelos se os seus s elementos identificados pelo mesmo índice estão relacionados. Exemplo: Dim nom ( 1 To 8) As String, score ( 1 To 8 ) As Integer Open SCORE.TXT For Input As #1 For student = 1 To 8 Input #1, nom(student), score(student) (Cada elemento dos arrays Next student nom e score identificados pelo Close #1 mesmo índice referem-se ao mesmo aluno.) @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 11 Ordenamento de um Array Um array diz-se ordenado d se os seus valores estão segundo uma ordem ascendente ou descendente. Para arrays com elementos do tipo string a tabela ANSI é utilizada para verificar a condição menor do que ou igual a. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 12 @2009 - João Manuel R. S. Tavares 6

Processando Arrays Uma pesquisa sucessiva dos elementos de um array é designada por Pesquisa Sequencial. Também é designada por pesquisa linear ou pesquisa em série. Uma Pesquisa Sequencial examina cada elemento, a partir do primeiro até ao último, até ao valor especificado ser encontrado ou até atingir o último elemento do array. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 13 Exemplo de uma Pesquisa Sequencial (encontrar valores superiores a 8) Dim quiz ( 1 To 15) As Single For position =1 TO 15 If quiz(position) > 8 THEN picoutput.print quiz (position) count = count + 1 End If Next Position @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 14 @2009 - João Manuel R. S. Tavares 7

Pesquisa Sequencial Útil com listas (vectores) pequenas; Muito ineficiente para listas longas (por exemplo nomes numa lista telefónica); Utilizar pesquisa binária se a lista está ordenada. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 15 Pesquisa Binária Numa pesquisa binária, i um array previamente ordenado é repetidamente devido ao meio. A parte não contendo o valor desejado é ignorada e a pesquisa continua na outra parte. Para utilizar-se pesquisa binária, i os dados d devem estar no array ordenados de forma ascendente ou descendente. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 16 @2009 - João Manuel R. S. Tavares 8

Exemplo de Pesquisa Binária Private Sub BinarySearch(corp As String, result As String foundflag = 0 '1 indica que o valor pretendido foi encontrado first = 1 last = numfirms Do While (first <= last) And (foundflag = 0) middle = Int((first + last) / 2) Select Case UCase(firm(middle)) Case corp foundflag = 1 Case Is > corp last = middle - 1 Case Is < corp first = middle + 1 End Select Loop End Sub (O ciclo é repetido enquanto o dado pretendido não for encontrado e ainda não for atingido o último elemento do vector.) @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 17 Exemplo de Pesquisa Binária (Cont.) If foundflag = 1 Then result = "found Else result = "not found End If Utilização de uma variável (Flag) para indicar que o valor desejado foi encontrado. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 18 @2009 - João Manuel R. S. Tavares 9

Combinar Arrays Uma prática comum envolvendo arrays é combinar (juntar) dois arrays ordenados. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 19 Método para Combinar dois Arrays Ordenados: 1. Comparar os primeiros elementos de cada um dos arrays de entrada. A. Se um dos valores procede o outro, copia-lo para o terceiro array (o de saída/resultado) e passar a considerar o elemento seguinte do array que o continha. B. Se os valores são iguais, copiar o valor para o terceiro array e passar a considerar os elementos seguintes de cada array de entrada. 2. Repetir o passo 1 com os novos valores dos arrays de entrada até atingir-se o final de um dos arrays de entrada. 3. Copiar os restantes valores do array ainda com elementos a considerar para o terceiro array. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 20 @2009 - João Manuel R. S. Tavares 10

Passar um Array Um array ypode ser passado para um outro procedimento por referência. Exemplo: Private Sub cmddisplay_click() ' Passagem de um array para um subrotina e uma funcao Dim score(1 To 5) As Integer Call FillArray(score( ) ) picaverage.cls Passagens do array score picaverage.print Average is"; Sum(score( ) ) / 5 End Sub Declaração do array score @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 21 Passagem do Array Score para uma Subrotina Private Sub FillArray(s( ) As Integer) ' Preencher o array s(1) = 85 s(2) = 92 s(3) = 75 s(4) = 68 s(5) = 84 End Sub Este array esta apontado para a mesma localização de memoria do array score. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 22 @2009 - João Manuel R. S. Tavares 11

Passagem do Array Score para uma Função Private Function Sum(s ( ) As Integer) As Integer Dim total As Integer, index As Integer ' determina a soma dos valores do array total = 0 For index = 1 To 5 total = total + s(index) Next index Sum = total End Function (As funções LBound(nome-do-array) e UBound(nome-do-array) permitem determinar os limites de um array.) @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 23 Array de controlos Uma maneira para construir arrays de caixas de texto, etiquetas e botões de comando, num formulário. Pelo menos um elemento de um array de controlos deve ser criado quando o formulário é desenhado. Os elementos restantes do array tanto podem ser criados durante o desenho do formulário ou durante a execução do programa através da declaração Load. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 24 @2009 - João Manuel R. S. Tavares 12

Criar um Array de Controlos durante o Desenho de um Formulário 1) Adicionar uma instancia do controlo desejado ao formulário; 2) Definir para a propriedade Índice (Index) um número (geralmente o 0); 3) Definir todas as propriedades que serão comuns a todos os restantes t elementos; 4) Seleccionar o controlo e carregar em CTRL + C; 5) Para criar cada elemento carregar em CTRL + V. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 25 Array de Controlos Todas as propriedades do primeiro elemento são passadas para os restantes elementos do array de controlos incluindo as propriedades Topo (Top) e Esquerda (Left); A única propriedade que difere do primeiro elemento é a da Visibilidade (Visible); A declaração Load define a propriedade Visibilidade como Verdadeira ou Falsa. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 26 @2009 - João Manuel R. S. Tavares 13

Procedimentos de Evento para um Array de Controlos: Apesar de existirem vários controlos definidos no array apenas existe um procedimento associado a cada evento; O valor da propriedade Índice (Index) deve ser passado ao procedimento para indicar qual o elemento pretendido. Exemplo: Private Sub txtbox_gotfocus (Indice As Integer) @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 27 Criar um Array de Controlos Durante a Execução Array (em Run Time): É possível criar-se os elementos de um array de controlos durante a execução através da declaração Load; A unidade de medida standard é designada por Twip (1 inch = 1440 wip); Para posicionar um novo elemento do array durante a execução deve-se ajustar as suas propriedades Topo (Top) e Esquerda (Left); Para o elemento tornar-se visível deve-se definir a sua propriedade Visibilidade (Visible) como Verdadeira. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 28 @2009 - João Manuel R. S. Tavares 14

Verificar a Localização e o Tamanho de um Controlo no Ambiente do Visual Basic A localização e o tamanho de um controlo @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 29 Exemplo ( Criar um array de controlos durante a execução) Private Sub Form_Load() Dim i As Integer, monthnames As String monthnames = "FebMarAprMayJunJulAugSepOctNovDec" For i = 1 To 11 Load lblmonth(i) Load txtinfo(i) blmonth(i).top = lblmonth(i - 1).Top + txtinfo(0).height txtinfo(i).top = txtinfo(i - 1).Top + txtinfo(0).height lblmonth(i).caption = Mid(monthNames, 3 * i - 2, 3) lblmonth(i).visible = True txtinfo(i).visible = True Next i End Sub @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 30 @2009 - João Manuel R. S. Tavares 15

Ordenamento Uma prática comum envolvendo arrays é ordenar os elementos de um array de forma ascendente ou descendente. Um array pode ser ordenamento numericamente ou alfabeticamente (utilizando os valores ASCII). Existem várias técnicas para ordenar dados: BubbleSort; ShellSort;... @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 31 BubbleSort Ob bublesort bl consiste na comparação de elementos adjacentes e trocar os seus valores caso estejam fora de ordem. A comparação de todos os elementos do array é designada d por passo. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 32 @2009 - João Manuel R. S. Tavares 16

BubbleSort For passnum =1To4 For index = 1 To 5 - passnum If name(index) > name(index + 1) Then Call SwapData( name( ), index) End If Next index Next passnum Igual ao número de elementos do vector menos 1 Subrotina para trocar os valores dos elementos name(index) e name(index+1) Pode ser utilizada um flag para controlar se na anterior passagem foi realizada ou não alguma troca; caso não tenha sido efectuada nenhuma troca o vector já está ordenado e o programa pode sair da ordenação. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 33 Subrotina para Trocar os Valores de duas Variáveis Private Sub SwapData ( A ( ) As String, index As Integer) Dim temp As String temp = A ( index) A(index ) = A (index + 1) A(index) A(index+1) A ( index + 1) = temp End Sub @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 34 @2009 - João Manuel R. S. Tavares 17

BubbleSort O máximo número de passos necessários para ordenar os elementos de um array é igual ao número de elementos do array menos 1. O mínimo número de passos para ordenar um array pode ser igual um. Funciona de forma adequada para um número reduzido de itens; É demasiado lento para listas longas (mais de 100 elementos). @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 35 ShellSort É similar ao bubblesort, mas em vez de comparar e trocar elementos adjacentes A(count) e A(count+1), compara e troca elementos não adjacentes A(count) e A(count + Gap), onde o valor de Gap começa consideravelmente maior do que 1. Apresenta um bom compromisso velocidade/simplicidade para listas com mais de 30 elementos. No inicio, Gap é definida como igual a metade do comprimento do array. Após cada passagem, se a flag utilizada para indicar que houve alguma troca é verdadeira, é efectuada uma nova passagem com Gap igual a metade do valor anterior. No final o valor de Gap é igual a 1, e elementos adjacentes são comparados e trocados. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 36 @2009 - João Manuel R. S. Tavares 18

Exemplo de Codificação do ShellSort gap = Int(numParts / 2) valor inicial Do While gap >= 1 Do doneflag = 1 flag para indicar que houve trocas For index = 1 To numparts - gap If part(index) > part(index + gap) Then Call Swap( part(index), part(index + gap) doneflag = 0 houve uma troca End If Next index Loop Until doneflag = 1 ate nao haver trocas gap = Int(gap / 2) igual a metade do valor anterior Loop @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 37 Eficiência do BubbleSort e do ShellSort Número de elementos no array e o número de comparações necessárias para processar o ser ordenamento: Nº de Elementos BubbleSort ShellSort 5 10 15 15 105 115 25 300 302 30 435 364 100 4950 2638 500 124,750 22,517 @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 38 @2009 - João Manuel R. S. Tavares 19

Arrays Bidimensionais Guardam valores como uma tabela (ou matriz), agrupados em linhas e colunas; O primeiro índice identifica a linha e o segundo a coluna. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 39 Declaração de um Array Bidimensional Sintaxe: Dim nome-do -array (m1 To n1, m2 To n2) As tipo-de-elementos Exemplo: Dim rm (1 To 4, 1 To 4) As Single para as colunas para as linhas @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 40 @2009 - João Manuel R. S. Tavares 20

Exemplo de array bidimensional: rm(1 To 4, 1 To 4) Chicago Los Angeles New York Philadelphia (Array utilizado para guardar as distâncias entre 4 cidades.) Chicago Los Angeles New York Philadelphia 0 2054 802 738 2054 0 2786 2706 802 2786 0 100 736 2706 100 0 rm (2,2) rm (3,4) @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 41 Manipulação de um Array Bidimensional Utilizar dois ciclos For... Next embutidos para atribuir, ir ou aceder, a todos os elementos de um array bidimensional. Exemplo: For row = 1 To 4 For col = 1To 4 Input #1, rm(row, col) Next col Next row Exemplo de um Ficheiro de entrada: 0, 2054, 802, 738 2054, 0, 2786, 2706 802, 2786, 0, 100 738, 2706, 100, 0 @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 42 @2009 - João Manuel R. S. Tavares 21

Exemplo de um Array Bidimensional Dim a(1 To 4, 1 To 5 ) As Integer Private Sub cmddisplay_click() For j = 1 To 4 For k = 1 To 5 a (j, k) = (j - k) * j picoutput.print a(j,k); Next k picoutput.print Next j End Sub Saída: 0-1 -2-3 -4 2 0-2 -4-6 6 3 0-3 -6 12 8 4 0-4 @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 43 Arrays Dinâmicos Em alguns problemas, surge a necessidade de utilizar um array, mas o seu tamanho apenas será definido durante a execução. O Visual Basic permite criar arrays dinâmicos, ou de tamanho variável. Para isso, o array deve ser declarado sem tamanho na secção general declarations de um formulário ou módulo. Exemplo : 'Colocar dentro do general declarations de um formulário ou módulo Dim Vector() as string * 25 No interior do procedimento onde vai ser definido o tamanho, redimensionar o array usando a declaração ReDim. @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 44 @2009 - João Manuel R. S. Tavares 22

Arrays Dinâmicos Exemplo: Sub Command1_click () ReDim Vector (n) End Sub Importante: Sempre que se utilize o comando ReDim, todos os valores contidos no array são perdidos e o array é todo preenchido com o valor NULL. Para aumentar o tamanho de um array sem que seu conteúdo seja perdido, utilizar a palavra chave Preserve. Exemplo: ReDim Preserve Vector (n) @2009 - João Manuel R. S. Tavares CFAC: Visual Basic: VI - Arrays 45 @2009 - João Manuel R. S. Tavares 23