variáveis indexadas matrizes - dei.isep.ipp.ptasilva/resources/aprog/documentos/teoricas... ·...
TRANSCRIPT
Variáveis indexadasMatrizes
APROG (Civil)Aula 13
ISEP-DEI, António Silva, © 2007-2009
APROG Civil
Variáveis indexadas
Conteúdo
• Conceito de Matriz
• Processamento de matrizes
2
ISEP-DEI, António Silva, © 2007-2009
APROG Civil
Variáveis indexadas
Matrizes
3
Matrizes
variáveis indexadas bidimensionais, em que a posição de um elemento é dada por dois índices, um referente à linha e outro à coluna.
Variáveis Indexadas
APROGCivil
ISEP–DEI, Angelo Martins © 2006ISEP-DEI, António Silva, © 2007
Matrizes - Sintaxe
● Sintaxe
Dim <nome>(<nº de linhas>, <nº de colunas>) as <tipo de dados>
● Exemplo
Dim turma( 15 , 6) as Integer
turma é uma matriz com 15 linhas e 6 colunas, ou seja, permite guardar as notas de 15 alunos a 6 disciplinas.
0 1 2 3 4 5
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
4
Variáveis Indexadas
APROGCivil
ISEP–DEI, Angelo Martins © 2006ISEP-DEI, António Silva, © 2007
Matrizes - Exemplo
Elabore um programa que some duas matrizes.
ListBoxes para apresentar as matrizes.
Com matrizes precisamos de saber o número de linhas e colunas.
cmdCalc
cmdLimpar
5
Variáveis Indexadas
APROGCivil
ISEP–DEI, Angelo Martins © 2006ISEP-DEI, António Silva, © 2007
Resolução I
Option ExplicitOption Base 1Const Linhas = 10Const Colunas = 10
Private Sub cmdLimpar_Click() lstM1.Clear lstM2.Clear lstMS.ClearEnd Sub
Private Sub cmdCalc_Click() Dim m1(Linhas, Colunas) As Integer, m2(Linhas, Colunas) As Integer Dim ms(Linhas, Colunas) As Integer, linha As String Dim nl As Integer, nc As Integer, i As Integer, j As Integer cmdLimpar_Click nl = Val(txtNL.Text) nc = Val(txtNC.Text) If nc < 1 Or nc > Colunas Or nl < 1 Or nl > Linhas Then MsgBox "Dimensões erradas!" Exit Sub End If É preciso validar o número de linhas e colunas.
Definem-se duas constantes com as dimensões máximas das matrizes
Utilizar as duas constantes ou o valor 10 é o mesmo, mas é mais fácil de alterar.
Equivale a premir o botão cmdLimpar.
Uso das Constantes
6
Variáveis Indexadas
APROGCivil
ISEP–DEI, Angelo Martins © 2006ISEP-DEI, António Silva, © 2007
Resolução II For i = 1 To nl ' leitura da matriz 1 linha = "" For j = 1 To nc m1(i, j) = Val(InputBox("M1 [ " & i & ", " & j & "] = ")) linha = linha & " " & m1(i, j) Next lstM1.AddItem linha Next For i = 1 To nl ' leitura da matriz 2 linha = "" For j = 1 To nc m2(i, j) = Val(InputBox("M2 [ " & i & ", " & j & "] = ")) linha = linha & " " & m2(i, j) Next lstM2.AddItem linha Next For i = 1 To nl linha = "" For j = 1 To nc ms(i, j) = m2(i, j) + m1(i, j) linha = linha & " " & ms(i, j) Next lstMS.AddItem linha NextEnd Sub
Adiciona uma linha à ListBox.
Acre
scen
ta um
elem
ento
da m
atriz
à linh
a.
No início uma linha tem que estar vazia.
Leitura de um elemento da matriz.
(continuação)
Se para processar um vector (1D) é necessário 1 ciclo, para processar uma m a t r i z ( 2 D ) s ã o precisos 2 ciclos encadeados.
7
Variáveis Indexadas
APROGCivil
ISEP–DEI, Angelo Martins © 2006ISEP-DEI, António Silva, © 2007
Processamento de Matrizes
For i = 1 To nl
linha = ""
For j = 1 To nc
ms(i, j) = m2(i, j) + m1(i, j)
linha = linha & " " & ms(i, j)
Next
lstMS.AddItem linha
Next
Ciclo Exterior - Processa Linhas
Ciclo Interior - Processa Colunas8