variáveis indexadas vectores e matrizesasilva/resources/aprog/documentos/teoricas... · vectores...
Post on 26-Sep-2018
216 Views
Preview:
TRANSCRIPT
Variáveis indexadasVectores e Matrizes
APROG (Civil)Aula 12
ISEP-DEI, António Silva, © 2007-2009
APROG Civil
Variáveis indexadas
Conteúdo
• Conceito de Variáveis Indexadas• Vectores• Processamento de vectores
2
ISEP-DEI, António Silva, © 2007-2009
APROG Civil
Variáveis indexadas
Variáveis indexadas
3
● O que são variáveis indexadas?• São variáveis múltiplas• Ao contrário das variáveis simples, podem
guardar diversos valores do mesmo tipo simultaneamente.
• Dizem-se indexadas porque a cada elemento corresponde um valor de um índice que o identifica.
● Para que servem?• Permitem armazenar e manipular blocos de
informação de tamanho arbitrário de forma expedita.
ISEP-DEI, António Silva, © 2007-2009
APROG Civil
Variáveis indexadas
Tipos de variáveis indexadas
4
Tipos de variáveis indexadas
Vectoresvariáveis indexadas unidimensionais, em que a posição de um elemento é dada por um só índice.Matrizesvariáveis indexadas bidimensionais, em que a posição de um elemento é dada por dois índices, um referente à linha e outro à coluna.
ISEP-DEI, António Silva, © 2007-2009
APROG Civil
Variáveis indexadas
Variáveis indexadas
5
12
12 5 35 92 102 57 23 48
0 1 2 3 4 5 6 7
variável
indexada
índice
variável
simples
Cada elemento da variável indexada é identificado pelo nome da variável e pela sua posição (índice)
Exemplo:numeros(3) - 4ª posição da variável indexada numeros
ISEP-DEI, António Silva, © 2007-2009
APROG Civil
Variáveis indexadas
Vectores
6
Pelé Eusébio FigoCristiano
RonaldoDeco Zidane Platini Cole
1 2 3 4 5 6 7 8
AllStars
Nºdojogador
Matthaus Maldini Owen
10 11 12
Uma equipa de futebol pode ser representada por um vector, em que• o nome da equipa corresponde ao nome do vector• a cada jogador corresponde um número que equivale
ao seu índice no vector
(*)
(*) é possível fazer com que os índices de um vector comecem em 1, usando Option Base 1
Variáveis Indexadas
APROGCivil
ISEP–DEI, Angelo Martins © 2006ISEP-DEI, António Silva, © 2007-2009
Vectores - Sintaxe
● Sintaxe
Dim <nome>(<dimensão>) as <tipo de dados>
● Exemplos– Const NumAlunos = 60
– Dim v(50) as Single, v1(10) as Integer
– Dim turma(NumAlunos) as Integer
NumAlunos é uma constante que representa o valor 60, logo é o mesmo que escrever o literal 60.
v1(1)
7
ISEP-DEI, António Silva, © 2007-2009
APROG Civil
Variáveis indexadas
Processamento de vectores
8
Problema: Armazenar e actualizar 100 preços
Solução A: Solução B:
Armazenamento
Dim preço1 as singleDim preço2 as single...Dim preço100 as single
Armazenamento
Dim preços(100) as single
Actualização (5%) Actualização 5%
preço1 = preço1 * 1.05preço2 = preço2 * 1.05...preço100 = preço100 * 1.05
For i = 1 To 100 preços(i) = preços(i) * 1.05Next i
100 variáveis simples 1 variável indexada com 100 elementos
Variáveis Indexadas
APROGCivil
ISEP–DEI, Angelo Martins © 2006ISEP-DEI, António Silva, © 2007-2009
Vectores – Exemplo
Elabore um programa que leia as notas de uma turma e que apresente numa ListBox as notas dos alunos que estejam acima da media. Uma turma pode ter no máximo 60 alunos.
Porque é preciso um vector?
Para identificar as notas que se encontram acima da média, é necessário calcular primeiro a média. Seria preciso ler as notas duas vezes, se não houvesse a possibilidade de guardar as notas num vector.
No enunciado não é especificado o número de alunos a ler, só que há um limite de 60. Assim, o utilizador terá de introduzir o número de alunos a processar numa TextBox.
9
Variáveis Indexadas
APROGCivil
ISEP–DEI, Angelo Martins © 2006ISEP-DEI, António Silva, © 2007-2009
Vectores - Form
lstQH - ListBox com os alunos acima da média.
txtNA - TextBox para introdução do número de alunos.
lstNotas - ListBox para apresentação das notas de toda a turma.
lblMed - Label para apresentação da média.
10
Variáveis Indexadas
APROGCivil
ISEP–DEI, Angelo Martins © 2006ISEP-DEI, António Silva, © 2007-2009
Resolução I
Option Base 1Option ExplicitPrivate Sub cmdSair_Click() EndEnd Sub
Private Sub cmdLer_Click() Dim notas(60) As Integer, soma As Long Dim x As Integer, med As Single, na As Integer lstNotas.Clear lstQH.Clear txtMed.Text = "" na = Val(txtNA.Text) If na < 1 Or na > 60 Then MsgBox "Erro: Nº de alunos inválido!", vbCritical Else
É fundamental verificar que o número de alunos é positivo e não ultrapassa a capacidade do vector.
Vector com capacidade para 60 inteiros.
Limpa os valores de corridas anteriores.
11
Variáveis Indexadas
APROGCivil
ISEP–DEI, Angelo Martins © 2006ISEP-DEI, António Silva, © 2007-2009
Resolução II
For x = 1 To na Do notas(x) = Val(InputBox("Nota do aluno " & x)) Loop While notas(x) < 0 Or notas(x) > 20 soma = soma + notas(x) Next med = soma / na For x = 1 To na lstNotas.AddItem x & " - " & notas(x) If notas(x) > med Then lstQH.AddItem x & " - " & notas(x) End If Next txtMed.Text = med End If
End Sub
Leitura do valor para a posição x do vector. O valor de x vai variar entre 1 e o valor de na.
(continuação)
Se a nota actual for superior à média, então adiciona-a à ListBox.
Sendo um vector uma variável múltipla, para o processar é sempre necessário um ciclo!
12
top related