variáveis indexadas vectores e matrizesasilva/resources/aprog/documentos/teoricas... · vectores...

12
Variáveis indexadas Vectores e Matrizes APROG (Civil) Aula 12

Upload: truongdiep

Post on 26-Sep-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Variáveis indexadas Vectores e Matrizesasilva/resources/APROG/Documentos/Teoricas... · Vectores – Exemplo Elabore um programa que leia as notas de uma turma e que apresente numa

Variáveis indexadasVectores e Matrizes

APROG (Civil)Aula 12

Page 2: Variáveis indexadas Vectores e Matrizesasilva/resources/APROG/Documentos/Teoricas... · Vectores – Exemplo Elabore um programa que leia as notas de uma turma e que apresente numa

ISEP-DEI, António Silva, © 2007-2009

APROG Civil

Variáveis indexadas

Conteúdo

• Conceito de Variáveis Indexadas• Vectores• Processamento de vectores

2

Page 3: Variáveis indexadas Vectores e Matrizesasilva/resources/APROG/Documentos/Teoricas... · Vectores – Exemplo Elabore um programa que leia as notas de uma turma e que apresente numa

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.

Page 4: Variáveis indexadas Vectores e Matrizesasilva/resources/APROG/Documentos/Teoricas... · Vectores – Exemplo Elabore um programa que leia as notas de uma turma e que apresente numa

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.

Page 5: Variáveis indexadas Vectores e Matrizesasilva/resources/APROG/Documentos/Teoricas... · Vectores – Exemplo Elabore um programa que leia as notas de uma turma e que apresente numa

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

Page 6: Variáveis indexadas Vectores e Matrizesasilva/resources/APROG/Documentos/Teoricas... · Vectores – Exemplo Elabore um programa que leia as notas de uma turma e que apresente numa

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

Page 7: Variáveis indexadas Vectores e Matrizesasilva/resources/APROG/Documentos/Teoricas... · Vectores – Exemplo Elabore um programa que leia as notas de uma turma e que apresente numa

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

Page 8: Variáveis indexadas Vectores e Matrizesasilva/resources/APROG/Documentos/Teoricas... · Vectores – Exemplo Elabore um programa que leia as notas de uma turma e que apresente numa

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

Page 9: Variáveis indexadas Vectores e Matrizesasilva/resources/APROG/Documentos/Teoricas... · Vectores – Exemplo Elabore um programa que leia as notas de uma turma e que apresente numa

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

Page 10: Variáveis indexadas Vectores e Matrizesasilva/resources/APROG/Documentos/Teoricas... · Vectores – Exemplo Elabore um programa que leia as notas de uma turma e que apresente numa

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

Page 11: Variáveis indexadas Vectores e Matrizesasilva/resources/APROG/Documentos/Teoricas... · Vectores – Exemplo Elabore um programa que leia as notas de uma turma e que apresente numa

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

Page 12: Variáveis indexadas Vectores e Matrizesasilva/resources/APROG/Documentos/Teoricas... · Vectores – Exemplo Elabore um programa que leia as notas de uma turma e que apresente numa

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