Sie sind auf Seite 1von 140

Programação

ISVOUGA
Instituto Superior entre Douro e Vouga

LEPI – Licenciatura Engenharia de Produção Industrial


2010/2011

J.A. Campos Neves

j.neves@doc.isvouga.pt
(c) jacn10/11 1
Conteúdo programático
• Introdução à Algoritmia
– - Algoritmos, programas, linguagens de programação
– - Desenho de programas: fluxogramas e pseudo-código
– - Estruturas de controlo: sequenciais, decisão e repetição
• A Linguagem de Programação VB.Net e VBA para Excel
– - Ambiente de Trabalho do Editor VB
– - Tipos de Variáveis
– - Tipos de Operadores
– - Estrutura de decisão IF…THEN…ELSE
– - Estrutura de decisão SELECT…CASE
– - Estrutura de repetição WHILE…WEND
– - Estrutura de repetição DO…LOOP UNTIL
– - Estrutura de repetição FOR…NEXT, FOR EACH e outras
– - Utilização e manipulação de Strings
– - Utilização e manipulação de Vectores mono e multidimensionais
– - Introdução as Classes de objectos

(c) jacn10/11 2
Introdução à algoritmia
• Um programa corresponde à tradução de um raciocínio na forma de
comandos numa linguagem máquina.
• Um algoritmo é uma sequência de instruções que, uma vez
executado conduz a um resultado específico.
• Para funcionar, um algoritmo deve conter unicamente instruções
compreensíveis para quem o vai executar. Quem o executa pode
ser máquina ou pessoa. Exemplos um trajecto descrito por um
mapa, uma receita de cozinha, uma sequência de instruções de
uma máquina, etc.
• Quem desenvolve algoritmos deve possuir alguma intuição, de
forma a conseguir, a priori, saber que instruções devem ser usadas
e como deve abordar o problema e a sua fragmentação.

(c) jacn10/11 3
Introdução à algoritmia
• Quando se elabora um algoritmo para ser executado por
uma máquina, é importante que :
– Se seja metódico e rigoroso
– Cada passo que se considera no programa seja visto na óptica
da máquina de forma a verificar que o resultado é o correcto.
• Um programa de computador é um algoritmo escrito na
linguagem máquina que estamos a utilizar (Fortran,
Basic, Visual Basic, Pascal, C/C++, Java, Perl, Lisp,
Cobol, etc...).
• Cada linguagem tem as suas próprias especificidades,
ou seja as suas características funcionais e de escrita,
que em alguns casos podem apresentar similitudes, mas
noutros não.
(c) jacn10/11 4
Introdução à algoritmia
• Os computadores são, essencialmente capazes de
efectuar quatro operações lógicas (fora as operações
de cálculo matemático e lógico) e que são:
– Afectação de variáveis atribuição de valores a posições memória
– Leitura e escrita entrada e saída de dados
– Testes base das condições
– Ciclos base das repetições
• Um programa informático não é mais que a combinação
destes tijolos de base conceptuais, e que são
organizados de uma forma mais ou menos estruturada.
• A complexidade de cada caso é que parametriza os
limites do algoritmo.Um algoritmo é a estrutura lógica de
um programa informático, escrito com uma conjunto
base de instruções de uma dada linguagem.
(c) jacn10/11 5
Introdução à algoritmia
• Convenções de escrita de algoritmos:
– Há várias convenções, mas deve ser o utilizador que escolhe o seu
método de representação da ideia/algoritmo, de forma a melhor
representar o seu raciocínio na linguagem que escolheu.
– As técnicas mais conhecidas:
• Organigramas : diagramas de blocos, em que cada bloco corresponde
a uma dada instrução, ou a um dos 4 “tijolos” anteriormente
analisados.

Não
N
vezes X  17 X > 10 Input(x) Output(x)
Sim

• Pseudo-código: código que se assemelha ( ou não) ao código máquina


a usar e que descreve o algoritmo de forma textual, e que pode ser
próprio do utilizador, desde que compreensível a terceiros.
(c) jacn10/11 6
Introdução à algoritmia
• Variáveis:
– Um programa informático armazena sempre dados, venham
eles do teclado, do disco, de uma carta de aquisição ou de outra
fonte.
– Os dados podem ser de vários tipos (texto, inteiros, reais,
complexos, etc...), e são armazenados em posições memória da
máquina sendo designados por literais (com algum
significado...!).Assim uma variável é uma “caixa” na memória da
máquina com uma etiqueta (nome da variável).
– As variáveis tem que ser (sempre) declaradas antes da sua
utilização. Assim declarar uma variável é reservar o seu espaço
memória necessário e atribuir-lhe um nome (etiqueta).
– Os tipos mais usuais são:
• Byte Mas há mais tipos e valores 
• Inteiro simples ou Longo slide seguinte para os tipos mais
• Real simples ou duplo
(c) jacn10/11
em VB 7
Variáveis
• Existem ainda mais tipos numéricos, a saber:
– Tipo monetário ( com 2 algarismos após a virgula)
– Tipo data (dia/mês/ano, na seguinte forma DD/MM/AAAA)
– Tipo alfanumérico
• Também designado por tipo caractere, tipo string ou cadeia de
caracteres.
• É usado para representar letras, espaços, ou algarismos na sua
representação não numérica.
• O tipo string, ou cadeia de caracteres, é a representação de um
conjunto de literais.
• Em pseudo-código uma cadeia de caracteres é sempre
representada entre aspas => “ Olá, bom dia ... ! “
– Existem também os tipos compostos como vector, tabela a
várias dimensões
– e conjugados de vários tipos e objectos (classes) (ver mais
tarde)

(c) jacn10/11 8
Instruções de afectação
• Afectar um valor a uma variável consiste em colocar na caixa designada
pela etiqueta um valor. Em pseudo-código usam-se os símbolos  ou =.
– EX: Conteúdo de X na memória do PC
• X  10
X
ou 10
• X = 10
• (coloca o valor 10 na memória referenciada por X)
• As operações de afectação são sempre da direita para a esquerda.
• Dado existir uma ordem de execução de programas, existe uma ordem
de afectação de valores a variáveis,e uma ordem de sequenciamento de
instruções. Os raciocínios da matemática não podem ser extrapolados
para a informática com alguma ligeireza.

• Se à esquerda do sinal de afectação temos a variável, à sua direita


temos o valor ou a expressão.

• A expressão corresponde a um conjunto de valores ligados por


operadores.

(c) jacn10/11 9
Variáveis e memória Nome Tipo
Memória do computador (RAM)
j Inteiro

10
Pi Real

3.1415925
abc Char
„V‟

„O‟ „L‟ „A‟ str String

(c) jacn10/11 10
Afectação de variáveis
Identificadores de tipos de variáveis
Identifier type character Data type Example
% Integer Dim L%
& Long Dim M&
@ Decimal Const W@ = 37.5

! Single Dim Q!
# Double Dim X#
$ String Dim V$ = "Secret"

Afectação de variáveis:
Ou ainda:
Corresponde a colocar/ modificar um
valor, contido numa variável. X= X+1: Y = Y+X
X= 10
A = 0.2351* B + X
A = 0.2351
Str= “Olá Bom Dia”
Str= “Olá Bom Dia”
abc= „A‟ Str1 = Str
(c) jacn10/11 11
Introdução à algoritmia
Exemplo VB6

Tipo Descrição Banda de valores


Integer inteiro de 2 bytes -32.768 até 32.767
Long inteiro de 4 bytes -2.147.483.648 até
2.147.483.647
Single ponto flutuante de 4 bytes -3,402823E38 até
-1,401298E-45 (val. Negativos)
1,401298E-45 até
3,402823E38 (val. Positivos)
Double ponto flutuante de 8 bytes -1,79769313486232D308 até
-4,94065645841247D-324 (neg)
4,94065645841247D-324 até
1.79769313486232D308 (pos)
Currency número de 8 bytes com parte -922337203685477,5808 até
decimal fixa 922334203685477,5808
String cadeia de caracteres 0 até aprox. 65.500 caracteres
Boolean valores lógicos True ou False
Variant
(c) jacn10/11 Data/Tempo, ponto flutuante Data: 1 janeiro de 0000 até 12
ou string 31 dezembro de 9999;
Introdução à algoritmia
• Exemplo C
– short
– int
– float
– double
– long
– char e tabela de char como string

(c) jacn10/11 13
Operadores
• As variáveis podem ser operadas entre si, recorrendo a
operadores.
• Assim: a = x (op) y
• Existem vários tipos de operadores, a saber:
– Operadores numéricos: NB: em matemática uma variável é uma
• + adição incógnita numa equação, mas em
• - subtracção informática uma variável (caixa+ etiqueta
• * multiplicação = nome) possui um e um só valor em
• / divisão cada passo de execução do programa.
• ^ potenciação Tratamos, assim, com valores fixos, e não
• Etc... com conceitos abstractos.
– Operadores alfanuméricos
• & concatenação de strings
– Operadores lógicos : o resultado é TRUE ou FALSE
• AND  E lógico
• OR  OU lógico
• NOT  Negação lógica
• XOR (pouco usado)  OU exclusivo lógico

(c) jacn10/11 14
Introdução à algoritmia
• Condições
• Uma condição é uma comparação. Tal significa quem
uma condição é composta de 3 elementos:
– Um valor A
– Um operador de comparação op A op B
– Um segundo valor B
• Os valores podem ser de qualquer um dos tipos
admitidos pela linguagem (numéricos,
caracteres, ...), mas se queremos que a
comparação tenha significado, os valores
devem ser do mesmo tipo.
(c) jacn10/11 15
Introdução à algoritmia
• Operadores de comparação:
•= igual a ...
• <> diferente de
•< estritamente menor que ...
•> estritamente maior que ...
• =< menor ou igual a ...
• >= maior ou igual a...

(c) jacn10/11 16
Introdução à algoritmia
• Condições compostas: são as que se obtém
com a conjunção de operadores lógicos:

Condição1 AND Condição2


Condição1 OR Condição2
Condição1 XOR Condição2
NOT(Condição1)

• Nota 1 : usar as tabelas de verdade das funções lógicas para se ver


o resultado que se pode obter.
• Nota 2 : os testes podem ser imbricados uns nos outros de forma a
permitir patamares diferentes de decisão.
(c) jacn10/11 17
Introdução à algoritmia
• Operadores lógicos (ou booleanos):
– Tratam-se dos operadores AND, OR e NOT, e mais raramente
do XOR (ou exclusivo).

– Estes são usados em inúmeras formas, mas particularmente na


concatenação de conjunções ou testes de comparação:

• Se A > 10 Then ...

• Se A > 10 AND A < 20 Then ...

• Se (A > 1 AND B < 20 OR C = True ) Then ...

(c) jacn10/11
• Se A*B > C*D Then ...
18
Introdução à algoritmia
• Testes ou estruturas opcionais
– Uma estrutura de teste assume uma das seguintes formas:
– A forma da esquerda é a forma completa, enquanto que a forma
da direita é a forma simples

Se booleano Então Se booleano Então


Instruções 1 Instruções
Senão Fim Senão
Instructions 2
Fim Se
Onde booleano representa o resultado de um teste específico,
que corresponde a uma expressão cujo valor é TRUE ou
FALSE. Esta obtém-se à custa de uma variável boolena, ou de
uma expressão condicional. Os testes podem ser encadeados
para se obterem resultados diversos.
(c) jacn10/11 19
Introdução à algoritmia
• O conceito de teste imbricado pode ser descrito pelos
esquemas seguintes:
Instruções 1
SIM
Se Fim Se
NÃO
Instruções 2

Instruções 1

Se SIM Instruções 2 Fim Se


SIM
NÃO
Se Fim Se
NÃO Instruções 3

(c) jacn10/11 20
Introdução à algoritmia
• Ciclos
– São estruturas repetitivas ou iterativas.
• O conceito de repetição está ligado à execução DE UM GRUPO DE
INSTRUÇÕES, um determinado numero de vezes.

– Os ciclos podem ser, executados:


• Um numero determinado de vezes
• Um numero infinito de vezes, ISTO É DESCONHECIDO…!
• Apenas uma vez
– O processo de execução repetitiva PODE OBRIGAR à existência de
uma variável adicional de controlo de ciclo.
– A estrutura de um ciclo é:
Enquanto que < condição >
instrução...
instrução...
instrução...
...
Fim Enquanto
(c) jacn10/11 21
Introdução à algoritmia
• É necessário ter alguma atenção quando se escrevem
ciclos pois se o controlo de paragem não for bem feito, o
ciclo pode nunca parar, levando à necessidade de
termos que bloquear o programa de forma externa.
• Em termos de programa/linguagem os ciclos podem
assumir várias formas. As mais usuais são:

Enquanto < condição> Para <variável= inicio> até <valor fim> [ Passo xx ]
instrução instrução
instrução instrução
... ...
Fim Enquanto Valor variável Seguinte

(c) jacn10/11 22
Introdução à algoritmia
• Ciclos imbricados
– Os ciclos podem ser, em qualquer circunstância
imbricados uns nos outros, de forma a executar
determinadas tarefas. O seu formato é :
Declara x, y as Integer
Para y = 1 até 15
Escrever “O programa passou por aqui“
Para x = 1 até 6
Escrever “O programa vai passar por aqui “
x Seguinte
y Seguinte
(c) jacn10/11 23
Introdução à algoritmia
• O programa anterior é diferente de :
Declara y, x as Integer
Para y = 1 até 15
Escrever “O programa passa por aqui“
Escrever “ y = “ y
y Seguinte

Para x = 1 até 6
Escrever “O programa passa também por aqui “
Escrever “ x = “ x
x Seguinte

(c) jacn10/11 24
Introdução à algoritmia
• Tabelas:
– As tabelas são utilizadas quando se tem necessidade de ter um
mesmo tipo de dados guardado numa estrutura com vários
valores de um mesmo tipo.
– Nestes casos usamos tabelas, ou arrays que são definidos
como uma variável de um certo tipo, a que se agrega um
contador ou índice. Uma tabela tem que ter sempre um NOME
(v, tata, ….) que é definido pelo utilizador.
– Ex: Dim v(10) as Integer
• tabela de nome v, com 10 posições, do tipo integer!
– Ex: Dim tata(100) as Double
Tabela de 100 posições do tipo double

(c) jacn10/11 25
Introdução à algoritmia
• As tabelas (C/VB/Java/…) começam sempre no índice 0, e acabem
no índice N-1, tendo N posições disponíveis. Há linguagens quem
que começam em 1 e não em 0.
• O tipo dos valores na tabela é o da sua declaração
indice tabela(N)
0 Para i = 0 até n-1
1 tabela(i) = 2*i
2
3 I Seguinte
4
5
...
...
Para i = 0 até n-1
i
... imprime_ecran(tabela(i))
...
I Seguinte
n-1
(c) jacn10/11 26
Introdução à algoritmia
Funções predefinidas:
• Todas as linguagens possuem funções predefinidas de forma a
poderem ser chamadas de dentro de um programa e que
produzem determinados resultados.
• Uma função é constituída por 3 partes :
1. O nome da função , propriamente dito.Este nome deve ser
inventado, ter algum significado e não fazer parte do leque de
funções do sistema.
2. Deve também ter dois parêntesis ( abertura e fecho)
3. Uma lista de valores que são passados à função e que se
chamam os argumentos ou parâmetros da função.
– Exemplo: a sin(x) ou a = sin(x)
– Em qualquer linguagem há que estudar as funções que esta
possui para que se possam utilizar.

(c) jacn10/11 27
Introdução à algoritmia
• Ficheiros sequenciais:
– Os dados são armazenados de forma permanente em disco na forma
de ficheiros, entre operações de programas.

– Organização de ficheiros texto:


• Há limitadores de campos nos ficheiros de texto que são usados :
– limitadores por caracteres (mais económica em memória)
– Limitadores por comprimento fixo do campo (menos económica)

– Tipos de acesso:
• Acesso sequencial
– Acedemos ao registo seguinte ao que acabamos de visitar
• Acesso aleatório
– Acedemos aos registos de forma aleatória, ou seja acesso ao registo que
queremos sem nos preocuparmos com uma ordem específica de acesso.

(c) jacn10/11 28
Introdução à algoritmia
• Instruções com ficheiros
– Se queremos trabalhar sobre um ficheiro a primeira coisa a
fazer é abri-lo.Os elementos de um ficheiro são os registos.
– Tal faz-se atribuindo ao ficheiro um numero de canal. Só se
pode abrir um ficheiro por canal, mas dispomos de vários
canais para tal efeito.
– Quando abrimos o canal há que saber o que vamos fazer: ler
(Read), escrever (Write) ou acrescentar (Append).
• Ler: acedemos ao ficheiro em modo leitura, sem alterarmos o
seu conteúdo.
• Escrever : acesso ao ficheiro em modo escrita permite escrever
tudo o que se quiser, mas todos os dados que poderiam existir
são apagados, sendo substituidos pelos que vamos escrever.
• Acrescentar: neste modo não podemos ler (em alguns casos
sim) nem apagar o que ele contém, mas apenas acrescentar
dados aos que o ficheiro já continha.
– Ex.: OPEN “Exemplo.txt” no canal 4 para LEITURA
(c) jacn10/11 29
Introdução à algoritmia
• Em termos de programação, ler um ficheiro sequencial é usar-se
um ciclo que termina quando se encontra o fim do ficheiro,
definido pelo caracter especial EOF (End Of File).
• O ciclo vai ler os registos, no formato que estes possuem, e pára
quando encontra o EOF. Durante a leitura transfere o seu
conteúdo para estruturas de dados no programa, que serão
utilizadas durante a execução.

• Em modo Escrita, após a abertura do ficheiro vamos escrever


com auxílio de instruções específicas, e no formato que
pretendermos, o conteúdo do ficheiro.

• Em modo Acrescento é igual (ao modo escrita), mas o modo de


abertura é diferente tendo um caractere que o diferencia da
escrita no momento da sua abertura.
(c) jacn10/11 30
Introdução à algoritmia
Procedimentos e Funções
• Quando um programa é longo no numero de linhas que possui é
grande e quando há instruções, ou blocos de instruções, que são
usados muitas vezes, ou de forma repetitiva.

• Há hipótese de simplificar/racionalizar o seu conteúdo pela


escrita de pequenos blocos/grupos de instruções que sejam
chamadas, repetidamente, durante a execução.

• Esses grupos são as funções, ou procedimentos, sendo o


programa principal designado por Procedimento Principal e as
funções os Sub Procedimentos.

(c) jacn10/11 31
Funções predefinidas
Functions

• Uma função é constituída por 3 partes :


Function <nome> ( […,<byref ou byval parametroi>,…]), as <Tipo>
1. O nome da função , propriamente dito.Este nome deve ser inventado, ter
algum significado e não fazer parte do leque de funções do sistema.
2. Deve também ter dois parêntesis ( abertura e fecho)
3. Uma lista de valores/parametros que são passados à função por
referencia (Byref) ou por valor (Byval) [slide mais à frente]
– Exemplo: a sin(x) ou a = sin(x)
– Em qualquer linguagem há que estudar as funções que esta possui para
que se possam utilizar.

(c) jacn10/11 32
Tipos de variáveis em VB
Visual Basic
type 2005/8/10 (1)
Common
language
runtime type
Nominal storage
allocation
Value range

structure

Boolean Boolean Depends on implementing True or False


platform

Byte Byte 1 byte 0 through 255 (unsigned)


Char (single Char 2 bytes 0 through 65535 (unsigned)
character)
Date DateTime 8 bytes 0:00:00 (midnight) on January 1, 0001
through 11:59:59 PM on December 31,
9999
Decimal Decimal 16 bytes 0 through +/-
79,228,162,514,264,337,593,543,950,335
(+/-7.9...E+28) † with no decimal point; 0
through +/-
7.9228162514264337593543950335 with
28 places to the right of the decimal;
smallest nonzero number is +/-
0.0000000000000000000000000001 (+/-
1E-28) †

(c) jacn10/11 33
Tipos de variáveis em VB 2008 (2)
Double Double 8 bytes -1.79769313486231570E+308
(double- through -4.94065645841246544E-
precision 324 † for negative values;
floating-
4.94065645841246544E-324 through
point)
1.79769313486231570E+308 † for
positive values

Integer Int32 4 bytes -2,147,483,648 through


2,147,483,647 (signed)
Long (long Int64 8 bytes -9,223,372,036,854,775,808 through
integer) 9,223,372,036,854,775,807
(9.2...E+18 †) (signed)

Object Object (class) 4 bytes on 32-bit Any type can be stored in a variable
platform of type Object
8 bytes on 64-bit
platform
SByte SByte 1 byte -128 through 127 (signed)
Short (short Int16 2 bytes -32,768 through 32,767 (signed)
(c) jacn10/11 34
integer)
Tipos de variáveis em VB 2005 (3)
Single (single- Single 4 bytes -3.4028235E+38 through -1.401298E-45 †
precision for negative values;
floating-
point) 1.401298E-45 through 3.4028235E+38 †
for positive values

String String (class) Depends on implementing 0 to approximately 2 billion Unicode


(variable- platform characters (ver: www.unicode.org)
length)

UInteger UInt32 4 bytes 0 through 4,294,967,295 (unsigned)

ULong UInt64 8 bytes 0 through 18,446,744,073,709,551,615


(1.8...E+19 †) (unsigned)

User-Defined (inherits from Depends on implementing Each member of the structure has a range
(structure) ValueType) platform determined by its data type and
independent of the ranges of the other
members

UShort UInt16 2 bytes 0 through 65,535 (unsigned)

† In scientific notation, "E" refers to a power of 10.


jacn10/11signifies 3.56 x 102 or 356, and 3.56E-2 signifies 3.56 / 102 or 0.0356.
So(c)3.56E+2 35
VB -Testes e comparações
• Operadores de teste
–Se (booleano) então –Se (booleano) então
•Instrução 1 •Instruções
–Senão –Fim Se
•Instrução 2
•Fim Se

• Booleano: expressão cujo resultado é True ou False, e que se


realiza com ajuda de uma condição.
• Uma Condição é uma Comparação, e compõe-se de :
– Variaveis ( A (operador de comparação) B),
– Um operador de comparação (= (igual), <> (diferente), <, >, >=, <=)
– Ex: Se X < 10 Então
• caso X = 5 então é True,
• caso X= 20 então é False.
(c) jacn10/11 36
Ciclos
• São estruturas de programação que permitem a repetição de um
conjunto de instruções um determinado numero de vezes (1, n ou
infinito). São executados enquanto que uma determinada condição
lógica não muda de valor (True/False).

No VB temos:

• While...End While

• Do Loops

• For...Next

• For Each Loops


(c) jacn10/11 37
VB – Ciclos: While
• Ciclos são estruturas repetitivas de execução de
instruções.
• São o ponto mais fácil de errar, sobretudo quando os
problemas se complicam, i.é, quando os algoritmos são
complexos.
• Os ciclos mais usados são: While( condição)
– Enquanto (booleano)
...
Instruções ....
While condition
... instruções
[ statements ]
– Fim enquanto
[ Exit While ] ...
[ statements ] EndWhile
End While
(c) jacn10/11 38
VB – Ciclos: For…Next
• Os ciclos For…Next tem a seguinte sintaxe:
For counter [ As datatype ] = start To end [ Step step ]
[ statements ]
[ Exit For ]
[ statements ]
Next [ counter ]

• counter: Required in the For statement. Numeric variable. The control variable for the loop.
• Datatype: Required if counter is not already declared. Data type of counter.
• start : Required. Numeric expression. The initial value of counter.
• end : Required. Numeric expression. The final value of counter.
• step : Optional. Numeric expression. The amount by which counter is incremented each time through
the loop.
• statements :Optional. One or more statements between For and Next that run the specified number
of times.
• Exit For : Optional. Transfers control out of the For loop.
• Next : Required. Terminates the definition of the For loop

(c) jacn10/11 39
VB – Ciclos 4: For…Next
• Para i =valor inicial até Valor Final Step (passo de incremento de i)
– Instruções
• Fim Para [ Incrementa variável i ]
• Há que ter em atenção o ciclo.!
• NB: valor de Step
– Se positivo ou zero executa até counter <= end
– Se negativo então executa até counter >= end
Em geral são os mais utilizados para percorrer estruturas cujo numero
de elementos, ou ciclos é previamente conhecido. Ex:
N = 100 „Realiza o ciclo 100 (valor de N)
For i= 0 to N
x=i*2 „Coloca em X o dobro do valor de I, ou seja 0,2,4,6,…
Next i
(c) jacn10/11 40
VB – Ciclos 4: For…Each
For Each element [ As datatype ] In group
[ statements ]
[ Exit For ]
[ statements ]
Next [ element ]

element : Required in the For Each statement. Optional in the Next statement.
Variable. Used to iterate through the elements of the collection.
datatype : Required if element is not already declared. Data type of element.
group : Required. Object variable. Refers to the collection over which the
statements are to be repeated.
statements : Optional. One or more statements between For Each and Next
that run on each item in group.
Exit For : Optional. Transfers control out of the For Each loop.
Next : Required. Terminates the definition of the For Each loop

(c) jacn10/11 41
VB – If…Then…Else (1)
• Estrutura de controlo de testes. Tem uma sintaxe base a
partir da qual se podem derivar outras formas de escrita
do mesmo código.
• Executa conjuntos de instruções em função dos
resultados dos testes realizados.
• Os testes podem ser simples ou compostos, em função
do caso a analisar.
• No caso de testes compostos complexos, podem-se fazer
externamente ao If… colocando-os numa variável
auxiliar que é a que será avaliada.

(c) jacn10/11 42
VB – If…Then…Else (2)
• Sintaxe
If condition [ Then ] If condition [ Then ]
[ statements ] [ statements ]
[ ElseIf elseifcondition [ Then ] [ Else
[ elseifstatements ] ] [ elsestatements ] ]
[ Else [ elsestatements ] ] End If
End If

Ou

If condition Then [ statements ] [ Else [ elsestatements ] ]


(NB: neste ultimo caso escreve-se numa só linha)
(c) jacn10/11 43
VB – If…Then…Else (3)  partes
• condition
– Required. Expression. Must evaluate to True or False, or to a data type that
is implicitly convertible to Boolean.
• Then
– Required in the single-line form, optional in the multiple-line form.
• statements
– Optional. One or more statements following If...Then that are executed if
condition evaluates to True.
• elseifcondition
– Required if ElseIf is present. Expression. Must evaluate to True or False, or
to a data type that is implicitly convertible to Boolean.
• elseifstatements
– Optional. One or more statements following ElseIf...Then that are executed
if elseifcondition evaluates to True.
• elsestatements
– Optional. One or more statements that are executed if no previous
condition or elseifcondition expression evaluates to True.
• End If
– Terminates the If...Then...Else block.

(c) jacn10/11 44
VB – If…Then…Else (4) exemplos
If A > 10 Then
• Exemplos:
A=A+1
If A > 10 Then B=B+A
A=A+1 C=C+B
B=B+A Exemplos Else
C=C+B diferentes !
A=A+2
End if C=C-B
End if

• Ou (neste caso usamos o separador : de instruções)


If A > 10 Then A = A + 1 : B = B + A : C = C + B

(c) jacn10/11 45
VB – If…Then…Else (5) exemplo
• Ou ainda:

Dim number, digits As Integer


Dim myString As String number = 53

If number < 10 Then


digits = 1
ElseIf number < 100 Then
digits = 2
Else digits = 3
End If

If digits = 1 Then myString = "One" Else myString = "More than one"

(c) jacn10/11 46
VB – Select...Case (1)
Select [ Case ] testexpression [ Case
expressionlist [ statements ] ]
• testexpression [ Case Else [ elsestatements ] ]
– Required. Expression. End Select
• expressionlist
– Required in a Case statement. List of expression clauses representing match values for
testexpression. Multiple expression clauses are separated by commas. Each clause can
take one of the following forms:
• expression1 To expression2
• [ Is ] comparisonoperator expression
• expression
• statements
– Optional. One or more statements following Case that run if testexpression matches any
clause in expressionlist.
• elsestatements
– Optional. One or more statements following Case Else that run if testexpression does not
match any clause in the expressionlist of any of the Case statements.
• End Select
– Terminates the definition of the Select...Case construction.

(c) jacn10/11 47
VB – Select...Case (2)
• Exemplo:
Dim nota As Integer = 8
Select Case nota
Case 1 To 5
Debug.WriteLine(“Nota entre 1 e 5, inclusive")
Case 6, 7, 8
Debug.WriteLine(“Entre 6 e 8, inclusive")
Case 9 To 10
Debug.WriteLine(“Igual 9 ou 10")
Case Else
Debug.WriteLine(“Não está entre 1 e 10, inclusive")
End Select
(c) jacn10/11 48
Passagem de dados
• Passagem de dados
– As funções podem ter elementos (dados) de entrada (parâmetros
de entrada), e que serão usados durante a execução desta, e
podem produzir dados de saída (parâmetros de saída ou de
retorno).
– Por vezes os parâmetros de entrada são modificados (ou não) e
são retornados na saída, também como parâmetros.
– Aos parâmetros de entrada que são modificados na função,
dizemos que há passagem de parâmetro por referencia.
– Aos parâmetros de entrada que não modificados na função,mas
que são por ela usados, dizemos que há passagem de parâmetro
por valor.
– Funções personalizadas são aquelas que só devolvem um
parâmetro na saída, respondendo, assim a um desenvolvimento
específico no programa.

(c) jacn10/11 49
Variáveis PUBLICAS e PRIVADAS
– A funções, ou procedimentos, usam variáveis internas, que, no
contexto do programa, se declaram no início do Procedimento e
extinguem no fim deste (i.é quando a sua execução termina).
– Logo as variáveis de um programa tem zonas de declaração (ou
de existência) e de actuação específicas  tem um alcance
definido.
– Como tal as variáveis podem ser usadas em todo o programa ou
em partes deste, o que faz surgir designações sobre o seu
alcance: uma variável pode ser:
• Pública ou Global : tal significa que a variável é declarada e pode
ser usada em qualquer parte do programa sob a sua “jurisdição”, ou
seja o seu conteúdo é conservado para lá das chamadas a funções
onde pode ser usada  PUBLIC ou GLOBAL. São as que mais
consomem a memória dado ocuparem de forma fixa a memória,
independentemente de serem usadas ou não.
• Privada ou Local: é a opção mais usada (90% das vezes) e
significa que a variável declarada cessa a sua existência quando
deixa de ser usada, como é o caso dos Procedimentos  PRIVATE
ou LOCAL. São que permitem um uso mais racional da memória que
(c) jacn10/11 leva a que sejam preferidas à Públicas/Globais. 50
Visual Basic – Introdução 1
• A forma mais antiga de escrita de programas consistia em definir um
conjunto de instruções sequenciais, utilizando uma sintaxe própria da
linguagem com que se trabalhava e com a qual o problema algorítmico era
resolvido.
• Posteriormente apareceu a programação modular e a programação
estruturada que consistia em dividir o problema em subproblemas menores,
usando módulos, que de forma integrada, traduziriam o algoritmo.
• A Programação Orientada para Objectos (OOP – Objecto Oriented
Programming) é a evolução natural da programação por módulos, onde
estes passam de simples funções (identificadas com os subproblemas) para
objectos com características próprias em termos de estruturas de dados e
de funções que lhes possam/devam ser associadas. Logo os objectos
passam a ter características próprias (propriedades) e a capacidade de
realizarem certas funções (métodos).
• Para cada objecto existe uma lista de possíveis eventos, sendo nesses
eventos que se inscrevem as instruções para a acção de programação.

(c) jacn10/11 51
Visual Basic – Introdução 2
• O Visual Basic (VB) serve-se de estruturas de
objectos ao que alia uma linguagem dirigida por
eventos (event driven) onde as sequências de acções
surgem como resposta a eventos ligados a objectos.

• O conceito de evento é todo aquele que pode ser


desencadeado de forma directa ou indirecta pela
acção objectiva, ou indirecta do utilizador.

• As estruturas de decisão e os ciclos actuam sobre os


objectos e sobre as variáveis que existem num
programa em VB.

(c) jacn10/11 52
Visual Basic – Introdução 3
• O VB possui :
– um interface gráfico composto por objectos – formas e controlos.
– cada objecto possui propriedades sendo possível modificá-las alterando
os seus atributos
– pode-se actuar sobre os objectos ou determinar actuações dos mesmos
atribuindo eventos a esses objectos através de códigos.
• Ambiente de trabalho (IDE)
– O VB possui um ambiente de trabalho onde pode desenvolver as suas
aplicações usando o IDE (Integrated Development Environment)
Ambiente de Desenvolvimento Integrado.
– Para se lançar o IDE devemos efectuar a seguinte lista de
comandos no ambiente Windows do computador ou a partir deum
atalho colocado no ambiente de trabalho.
1) <Iniciar>
2) <Todos os Programs>
3) <Microsoft VB2005 (ou VB2008) Express>

(c) jacn10/11 53
O que aparece… (1)
• Quando se lança o VB surge o écran seguinte:

Onde se
concentra a
nossa atenção

(c) jacn10/11 54
O que aparece… (2)
• Se vamos criar um novo
programa devemos
escolher:
– Create: Project…

• Senão, então é porque vamos abrir um programa


que já existe, pelo que se deve escolher:
– Open: Project…

(c) jacn10/11 55
Create Project….
• Quando se escolhe criar um novo projecto, aparece o ecran
seguinte. Aqui, seleccionamos com o rato (parte superior)
Windows Application , e depois, devemos especificar o
nome do mesmo. Por exemplo Programa1.

•Por
ordem:
•1 1
Depois clicar
em OK
•2
•3

2
(c) jacn10/11
3 56
O IDE - 1
• Tendo criado um novo projecto, ou aberto um antigo, acedemos ao
IDE (Integrated Development Environment) que corresponde ao
ambiente que vamos usar para desenvolver os nossos programas /
projectos. Este tem o aspecto seguinte:

(c) jacn10/11 57
O IDE - 2
• Componentes do IDE:
– Um projecto vai ter um interface com o utilizador que pode ser em linha de comando ou
via uma janela de comunicação chamada Form (forma…!?).
– Partindo do principio que vamos usar sempre uma janela de interface (um Form) este
é, então, um dos elementos essenciais do nosso ambiente de trabalho.
– A Form serve de base para se colocarem objectos sobre os quais vamos agir, ou com
os quais o programa vai interactuar, e que constituem o interface com o utilizador, ou
seja, a zona de dialogo entre o programa e o utilizador.
– Assim é importante definir correctamente que interface devemos/queremos ter, para a
aplicação em desenvolvimento.
– A definição do interface está ligada ao algoritmo, ou seja, as entradas e saídas do
programa. Estas devem ser devidamente analisadas e escolhidas de maneira a
obtermos os resultados pretendidos.
– A escolha está sempre associada a entradas e saídas de dados do programa, e podem
ser na forma de texto ou gráficas.
– NB: todas na entradas/saídas são na forma de strings.
– Há uma lista de objectos que podemos usar para implementar as entradas e as saídas
e que estão disponíveis na barra vertical da esquerda  os Comandos.

(c) jacn10/11 58
O IDE - 3
• Assim temos uma barra de comandos com vários objectos sensíveis a acções
do utilizador e que podemos arrastar para a Form, de maneira a definir
interfaces.
• Existem outras zonas que constituem o IDE a saber:
– Barra de comandos (Toolbox) que contém várias opções
– Solution Explorer (Explorador da Solução que contém os elementos do programa).
– Properties: janela que contém as propriedades dos objectos do programa, seja das
FORMS (podemos ter mais que uma), seja de qualquer outro objecto que tenhamos
incluido no programa (Comandos da Toolbox)
– Por cima da janela da Form temos abas (separadores) que nos permitem aceder a
janelas utilitárias como a do código, a da pagina inicial (Start Page), a da lista de
erros (Error List), e outras que podem ser chamadas ao longo da evolução da
implementação do projecto.
– Na parte superior (na horizontal) temos ainda uma barra de menus e de shortcuts
para estes.
• File – Edit – View – Project – Build – Debug – Data – Format – Tools – Windows ….
• ou

(c) jacn10/11 59
O IDE - 4

Explorador
da Solução

Janela da Form

Barra de Janela de
comandos propriedades
(Toolbox) dos objectos
(c) jacn10/11 60
O IDE - 2
• Antes de se começar a usar, com a escrita de um primeiro
programa teste, há que conhecer mais alguns termos do VB que
são as suas palavras reservadas, que não podem ser usadas como
expressões de código base num programa.

AddHandler AddressOf Alias And


AndAlso As Boolean ByRef
Byte ByVal Call Case
Catch CBool CByte CChar
CDate CDec CDbl Char
CInt Class CLng CObj
Const Continue CSByte CShort
CSng CStr CType CUInt
CULng CUShort Date Decimal
Declare Default Delegate Dim
DirectCast Do Double Each
Else ElseIf End EndIf
Enum Erase Error Event
Exit False Finally For
Friend Function Get GetType
GetXMLNamespace Global GoSub GoTo
Handles If If() Implements
Imports (.NET Namespace and Type)Imports (XML Namespace) In Inherits
Integer Interface Is IsNot
Let Lib Like Long
Loop Me Mod Module
(c) jacn10/11 61
O IDE - 2
MustInherit MustOverride MyBase MyClass
Namespace Narrowing New Next
Not Nothing NotInheritable NotOverridable
Object Of On Operator
Option Optional Or OrElse
Overloads Overridable Overrides ParamArray
Partial Private Property Protected
Public RaiseEvent ReadOnly ReDim
REM RemoveHandler Resume Return
SByte Select Set Shadows
Shared Short Single Static
Step Stop String Structure
Sub SyncLock Then Throw
To True Try TryCast
TypeOf Variant Wend UInteger
ULong UShort Using When
While Widening With WithEvents
WriteOnly Xor #Const #Else
#ElseIf #End #If =
& &= * *=
/ /= \ \=
^ ^= + +=
- -= >> Operator (Visual Basic) >>= Operator (Visual Basic)

(c) jacn10/11 62
Programas - 1
• Primeiro programa teste:
– Olá MUNDO….! O programa clássico!
• Exercícios:
1. Faça um programa que leia a largura e o comprimento de um
campo rectangular e que faça o display da sua área e perímetro.
2. Escreva um programa que leia 5 valores do teclado e que faça o
display da sua média, usando apenas 2 variáveis.
3. Escreva um programa que leia 2 valores A e B, e que faça o
display de A+B, A-B, A*B e A/B.
4. Escreva um programa que peça ao utilizador o preço sem
impostos de um produto e que faça o display do preço com o IVA,
considerando que este é prefixado.
5. Escreva um programa que peça ao utilizador para descobrir um
numero secreto, entre 0 e 100, aleatoriamente gerado, a partir de
um valor lido ao teclado, e que apenas diga dê como respostas
« Acima », « Abaixo » e « Acertou », se, respectivamente, os
valores introduzidos forem superiores, inferiores ou o certo.
(c) jacn10/11 63
Programas - 2
• Exercícios (continuação)
6. Escrever um programa que faça o display dos primeiros 50 números
impares:
a) Recorrendo a um FOR
b) Recorrendo a um WHILE
7. Escrever um programa que leia 10 valores ao teclado, e faça o display
do maior valor lido.
8. O mesmo que a questão anterior com o menor valor lido.
9. Escreva uma função que leia um ângulo expresso em graus, do
teclado e que faça o display do seu co-seno, do seno e tangente.
10. Faça um programa que construa as tabelas de verdade de:
a) A AND B
b) A OR B
c) A XOR B
d) AB
e) A B
f) Not(A) AND (B Or Not(C) )
g) Demonstre que A  B é igual a Not(A) Or B, usando a tabela de verdade
(c) jacn10/11 64
Programas - 3
• Exercícios (continuação)
11. Escreva um programa para converter dólares em euros e vice-versa.
12. Escreva um programa que calcule a distancia entre dois pontos P1 e
P2, definidos P1( x1, y1) e P2 (x2, y2), usando as formulas da
distancia:

a) dist  x2  x1 2   y2  y1 2
b) dist  x2  x1  y2  y1
c) Compare os resultados subtraindo-os.
13. Escreva um programa que dado o seu raio, pelo utilizador, determine
o perímetro e a área.
14. Determinar triângulo valido. Para tal, ler três pontos e determinar se
formam um triângulo. Pode ser utilizada a fórmula da distância entre
dois pontos para calcular as medidas dos lados do triângulo. Sendo
que um triângulo é sempre válido se a medida de cada um dos seus
lados é menor que a soma dos outros lados.
(c) jacn10/11 65
Programas - 4
• Exercícios (continuação)
15. Dado um polinómio do segundo grau na forma Ax2 + Bx+ C =0 calcule as
suas raízes e escreva-o na forma (x-x0) *(x-x1) = 0, se for possível.

 b  b 2  4.a.c
x0,1 
2.a

16. Programa de conversão de temperaturas.


As temperaturas exprimem-se geralmente em graus Celsius, Fahrenheit ou
Kelvin, sendo as formulas de conversão as abaixo assinaladas. Escreva um
programa que leia um valor numa das escalas referidas (ºC, ºF ou ºK) e que
por meio de um comando converta nas outras escalas.

(c) jacn10/11 66
Programas - 5
• Exercícios (continuação)
17. Calcular a somatório dos números existentes num intervalo
definido pelos seus limites inferior e superior (n1 e n2 ) dados
pelo utilizador ao teclado, introduzidos na ordem que entender.
Assim os intervalos [5-10] e [10-5] são igualmente válidos.

18. Escreva um programa que determina se um dado numero N


inteiro e maior que 1, lido ao teclado é primo.

19. Escreva um programa para gerar os números primos entre 2 e


10.000 a partir dos critérios usados na questão anterior.

20. Faça um programa para jogar no Euromilhões, gerando uma


chave e os dois algarismos associados. (Nota: este é dificil…!)

(c) jacn10/11 67
Vectores 1
• Frequentemente temos a necessidade de trabalhar com
estruturas de dados que devem guardar vários
elementos do mesmo tipo, sob uma mesma designação
e com valores diferentes.
• Por exemplo guardar as temperaturas de uma cidade ao
longo do dia, com medidas de hora a hora. Neste caso
iríamos necessitar 24 registos, o que se pode fazer:
– Declarando 24 variáveis com nomes diferentes para guardar os
valores das temperaturas lidas (Não….!)
– Declarar uma tabela com um único nome e 24 posições para
registo. (SIM….!)

(c) jacn10/11 68
Vectores 2
• Um array (tabela ou matriz) é uma lista de valores onde todos os
valores do grupo são referenciados pelo nome e o índice do valor
específico.
• Um valor individual de um array é chamado elemento.
• Os arrays são criados na memória do computador permitindo um
bom desempenho no seu uso (leitura/escrita de dados).
• Cada elemento possui um número relacionado que é utilizado como
índice. A referência usa o nome da matriz e o número entre
parênteses. Assim: NomedoVector(NúmeroDoElemento)
– Ex: Vetor(1) - refere-se ao elemento que possui o índice 1.
• Em VB.NET todos os arrays são indexados a partir de zero. Logo
temos :
– Quantidade(0) - refere-se ao primeiro elemento
– Quantidade(3) - refere-se ao quarto elemento

(c) jacn10/11 69
Vectores 3
• O conceito de tabela pode ser considerada como:
– Dim V(10) as Integer

N : numero de
indice Nome: V(N) elementos
N = 10
i V(i)
0 4 V(0) contém o valor 4
1 6 V(1) contém o valor 6
2 12 V(2) contém o valor 12
3 34 V(3) contém o valor 34
4 78 V(4) contém o valor 78
5 12 V(5) contém o valor 12
6 5 V(6) contém o valor 5
7 6 V(7) contém o valor 6
8 78 V(8) contém o valor 78
9 5 V(9) contém o valor 5

(c) jacn10/11 70
Vectores 4
• Arrays sem dimensão especificada
– Por vezes não conseguimos saber a priori quantos elementos temos
que guardar no array, pelo que:
• Ou sobredimensionamos (O QUE NÃO SE DEVE FAZER….!)
• Ou dimensionamos a medida que formos necessitando mais elementos
– Neste caso podemos usar uma instrução que nos permite trabalhar com
arrays de dimensão variável:
• Dim Vector() as Integer
• Dim N as Integer „ N vai conter o numero de elementos ao longo do
programa
• …
• N = 50
• Redim Vector(N) „ Neste ponto redimensionamos Vector() para N elementos
50
• …
• N = 150
• Redim Vector(N) „ Aqui redimensionamos Vector() para N elementos 150

(c) jacn10/11 71
Vectores 5
• Arrays sem dimensão especificada (2º parte)
– Há duas formas de redimensionar arrays:
• Redim Vector(N)
– Neste caso os valores que o array continha são perdidos, ou seja
apagados
– É util quando queremos re-iniciar a variável a meio do programa
• Ou
• Redim Preserve Vector(N)
– Neste caso os valores que o array contém são preservados.
– Há a considerar duas situações:
» Caso o N seja maior que o numero de elementos anterior, por exemplo
se o numero de elementos passar de 50 para 100, os novos serão
colocados depois dos já existentes, e com o valor 0.
» Caso o N seja menor que o numero de elementos anteriores, então
perdem-se os elementos que estariam acima de N. Assim se tivesse
(antes) um array com 100 elementos e se redimensionasse para 50,
ficaríamos apenas com os 50 primeiros.

(c) jacn10/11 72
Tabelas - 1
• As tabelas começam sempre no índice 0, e indice tabela(N)
acabam no índice N-1, tendo N posições 0
disponíveis. 1
• O tipo dos valores na tabela é o da sua 2
declaração: 3
• Dim V(10) as Double 4
Dim XX(10) as Integer 5
indice i V(N) ...
0 4 V(0) contém 4 V( i= 0 )
1 5 V(1) contém 5 V( i= 1 ) ...
2 2
3 7
V(2)
V(3)
contém
contém
2
7
V(
V(
i=
i=
2
3
)
)
i
4 8 V(4) contém 8 V( i= 4 ) ...
5 12 V(5) contém 12 V( i= 5 )
6 15 V(6) contém 15 V( i= 6 ) ...
7 1 V(7) contém 1 V( i= 7 )
8 67 V(8) contém 67 V( i= 8 )
n-1
9 21 V(9) contém 21 V( i= 9 )

Nesta caso temos 10 valores


Logo V(10)

(c) jacn10/11 73
Tabelas -2
– As tabelas são utilizadas quando é necessario ter um mesmo tipo de dados
guardado numa estrutura com vários valores. Ex: registo de temperaturas.
– Nestes casos usamos tabelas, ou arrays que são definidos por:
– Dim tab(200) As Integer
– Exemplo  Calculo da média dos valores contidos numa tabela
DIM Nota(54) as Integer
Dim i, Soma as Integer
Dim Media as Double
For i = 0 To 53
Escrever “Input nota n°” & i
Ler Nota(i)
Next i
Soma = 0
For i = 0 To 53
Soma = Soma + Nota(i)
Next i
Media = Soma / 54

Escrever “Média = “, Media


(c) jacn10/11 74
Tabelas dinâmicas
• Por vezes trabalhamos com tabelas cuja dimensão, ou
seja o numero de elementos que possuem, é a priori,
indeterminado. Tal obriga-nos a redimensiona-la sempre
que necessário, e existem meios para se dimensionar
uma tabela nestas condições. Instrução :
• Redim V()  ex: Redim V(100)
– Apaga os valores contidos ao redimensionar.
• Redim Preserve V()  ex: Redim Preserve V(50)
– Preserva os valores contidos ao redimensionar.
Dim Notas() As Integer
Dim nb As Integer
Escrever “Quantos valores temos na tabela ?“
Ler nb
Redim Notas(nb-1)

(c) jacn10/11 75
Tabelas multidimensionais
– Por vezes temos que usar tabelas a várias dimensões para guardar
valores. Estas são declaradas por Dim <nome> (dim1, dim2, …, dim) as..
<Tipo>
Dim Tab( 100 , 100 ) as Integer  exemplo de tabela para conter uma imagem.
– Nestes casos para percorrer toda a tabela necessitamos de imbricar 2 ciclos
com variáveis diferentes:
Dim Tab(100 , 100) as Integer
For i = 0 To 100
For j = 0 To 100
Ler x
Tab( i , j ) )= x
Next j
Next i
• Nota : podemos ter tabelas de várias dimensões.
• Ex: Dim Tab(100,100,20,30,15) as Integer  tabela a 5 dimensões

(c) jacn10/11 76
Propriedades associados a tabelas

• IsFixedSize: indica se o array tem um tamanho fixo.


• IsReadOnly: indica se o array é só de leitura (read-only)
• IsSynchronized: indica se o acesso ao array é
sincronizado (thread-safe)
• Length: fornece o cardinal de elementos em todas as
dimensões do array.
• Rank: fornece o número de dimensões do array.
• SyncRoot: fornece um objecto que pode ser usado
para sincronizar o acesso ao array.

(c) jacn10/11 77
Métodos associados a tabelas - 1
• Clear: define o intervalo dos elementos de um array para, zero, false ou
null
• Clone: cria copia do array.
• Copy: copia a secção de um array para outro e faz o casting e o boxing.
• CopyTo: copia todos os elementos de array de uma dimensão para outro.
• Create Instance: inicializa uma nova instância da classe array.
• Equals (herdado de Object): determina se duas instâncias de objectos
são iguais.
• GetLength: determina o numero de elementos de uma dada dimensão de
um array.
• GetLowerBound: obtém o menor índice inferior da dimensão especificada
num array.

(c) jacn10/11 78
Métodos associados a tabelas - 2
• GetType (herdado de Object): obtém o tipo da instância actual.
• GetUpperBound: obtém o índice superior da dimensão especificada num array.
• GetValue: obtém o valor de um elemento definido no array.
• IndexOf: retorna o índice da primeira ocorrência de um valor num array de uma
dimensão.
• Initialize: inicia cada elemento de um array chamando o construtor padrão.
• Reverse: inverte a ordem dos elementos num array a uma dimensão.
• SetValue: define o elemento especificado num array para um valor definido.
• Sort: ordena os elementos de um array monodimensional.
• ToString (inherited from Object): retorna uma string que representa o objecto
actual.

(c) jacn10/11 79
Problemas – 2ª série (a)
1. Escreva um programa que calcule a soma de um conjunto de valores dados
ao teclado. Note que se desconhece o número de elementos a somar.
2. Escreva um programa que calcule o máximo e o mínimo de um conjunto de
valores reais dados ao teclado.
3. Escreva um programa que calcule os n primeiros da função seguinte e
visualize os resultados obtidos usando numa listbox, calculando a sua média.
f(x) = e-(x.sin(2.PI.x))
4. Escreva um programa que determine os n primeiros termos da seguinte série:
x(t) = (x(t-1) + x(t-2))
5. Escreva um programa que determine os n primeiros termos da seguinte série:
Q[n] = Q[n-Q[n-1]] + Q[n-Q[n-2]] . . . para n > 2 Q[n] = 1 . . . para n = 1 ou n =
2
N.B.: designa-se esta série por série "Q" de Hofstadter , e cujos primeiros 50
elementos são:
1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 6, 8, 8, 8, 10, 9, 10, 11, 11, 12, 12,12, 12, 16, 14, 14, 16, 16, 16, 16, 20,
17, 17, 20, 21, 19, 20, 22, 21, 22, 23, 23, 24, 24, 24, 24, 24, 32, 24, 25, ....
6. Escreva um programa que determine os n primeiros termos da seguinte série:
com u1= 0.5
1  2
u n 1    u n  
3  un 
(c) jacn10/11 80
Problemas – 2ª série (b)
7. Escreva um programa que calcule os n primeiros termos da
seguinte série: f(n) = 1+ 1/(k*(k+1))
8. Escreva um programa que calcule os n primeiros termos da
seguinte série: f(n) = 1+ 1/(k2)
9. Considere dois pontos de um espaço bidimensional, definidos por
Pi: (xi,yi). Escreva um programa que lhe permita introduzir esses
pontos e que calcule o ponto médio entre eles.
10. Considere ainda os pontos da questão anterior, e verifique se
definem uma recta. Se sim, calcule o declive dessa recta, e a
equação da recta que lhe é perpendicular e que passe pelo ponto
médio entre eles.
11. Escreva um programa que converta um numero lido ao teclado
(de valor entre 1 e 3000) em notação romana.
12. Escreva um programa que calcule e (2,718281..., Numero de
Neper) sabendo que:
i 
1
f(i) = e =  , para 1/i! < 10 -10
i  0 i!
(c) jacn10/11 81
Problemas – 2ª série (c)
• Escreva um programa para calcular π
usando o processo proposto por Euler:
4 1 1 1 1 1 1 1 1
 4  4  4  4  ...    90  4  4  4  4  ...
4 4
90 1 2 3 4 1 2 3 4
N
• Ou seja: 1
  90  4  4
4

i 1 i

• NOTA : há outros métodos mais interessantes…!

(c) jacn10/11 82
Strings -1
• A representação de texto nos computadores é
feita usando caracteres (char) isolados ou em
cadeia. As cadeias de caracteres são as strings.
• Todas as entradas e saídas de dados de, e para,
o teclado/ecran, usam strings. Estes servem-se
de códigos base que atribui a cada valor (do
código) uma correspondência em termos de
letras, algarismos e símbolos especiais. Os
códigos mais usuais são:
– ASCII - American Standard Code for Information Interchange.
– EBCDIC - Extended Binary Coded Decimal Interchange Code.

(c) jacn10/11 83
Strings -2
• ASCII
– É um código (inicial) de 7 bits (logo 27 = 128
símbolos) agrupados em: (hoje tem 256 símbolos)
• 52 letras do alfabeto, desde as minúsculas as maiúsculas,
ou seja a,b,c,……,z, A,B,C,D,…..Z;
• 10 algarismos: 0,1,2,3,4,5,6,7,8,9
• 33 caracteres especiais: +-*/><!”#$%&/()=?»«[] {},…..etc..
• 33 caracteres de controlo, como o CR<Return>, o LF<Line
Feed>, BS<BackSpace>, HT<Horizontal Tab>,…
– Este código está hoje especificado no Unicode, que é
uma entidade que define os standards de códigos a
nível mundial (www.unicode.org)

(c) jacn10/11 84
Strings -3
• Em VB uma string é um vector de caracteres, que
suporta o correspondente ao código ASCII, logo contém
caracteres que são letras, algarismos e símbolos
usados. As strings são um tipo de variável do VB.
• As strings são sempre declaradas entre aspas (ex:
“toto”), e os caracteres entre plicas (Ex: „A‟, ou „2‟).
Dim abc as String
Dim aaa as char
abc = “Olá Bom dia”
aaa= „A‟
• Podemos sempre iniciar as variáveis quando as
declaramos, senão nada contém.
Dim abc as String = “toto tata tete”
(c) jacn10/11 85
Strings -4
• As strings são compostas por caracteres representados em código
ASCII, cujo valor varia de 0 a 255. A cada código corresponde um
char diferente. Assim a letra „a‟ é diferente de ‟A‟ e diferente de „á‟
pois tem códigos ASCII diferentes. Esta é a base de comparação de
strings.
• O programa seguinte, tendo criado uma ListBox e um botão,
permite ver os códigos ASCII

Private Sub Button1_Click(-----------) Handles Button1.Click


Dim i As Integer
ListBox1.Items.Clear()
For i = 32 To 255
ListBox1.Items.Add("Codigo(" & i & ") = " & vbTab &
Chr(i))
Next
End Sub

(c) jacn10/11 86
Exemplos de
Strings -5
Código(65) = A Código(97) = a
códigos ASCII Código(66) = B Código(98) = b
Código(48) = 0 Código(67) = C Código(99) = c
Código(49) = 1 Código(68) = D Código(100) = d
Código(69) = E Código(101) = e
Código(50) = 2 Código(70) = F Código(102) = f
Código(51) = 3 Código(71) = G Código(103) = g
Código(91) = [ Código(72) = H Código(104) = h
Código(52) = 4
Código(92) = \ Código(73) = I Código(105) = i
Código(93) = ] Código(53) = 5 Código(74) = J Código(106) = j
Código(54) = 6 Código(75) = K Código(107) = k
Código(94) = ^
Código(76) = L Código(108) = l
Código(95) = _ Código(55) = 7 Código(77) = M Código(109) = m
Código(96) = ` Código(56) = 8 Código(78) = N Código(110) = n
Código(79) = O Código(111) = o
Código(57) = 9
Código(80) = P Código(112) = p
Código(58) = : Código(81) = Q Código(113) = q
Código(59) = ; Código(82) = R Código(114) = r
Código(83) = S Código(115) = s
Código(60) = < Código(84) = T Código(116) = t
Código(61) = = Código(85) = U Código(117) = u
Código(86) = V v
Código(62) = > Código(118) =
Código(87) = W Código(119) = w
Código(63) = ? Código(88) = X Código(120) = x
Código(64) = @ Código(89) = Y Código(121) = y
Código(90) = Z Código(122) = z
(c) jacn10/11 87
Strings -6
• Declaração de strings
– Em VB as strings declaram-se :
• Dim abc as String
• Dim aString As String = "This is a string"
– Comparação de strings
• Podemos usar os operadores de comparação normais para
comparar strings, em função da sequência dos seus códigos
ASCII:
< Menor que <= Menor que ou igual a
<>diferente de ou não igual = igual a
>= Maior que ou igual a > Maior que

(c) jacn10/11 88
Strings -7
• O operador Like:

– Existe uma outra forma de comparar strings, usando o operador Like,


com a seguinte sintaxe:
• resultado = string Like modelo
– Sendo que :
• Resultado : é variável booleana (True / False)
• string : string de comparação
• modelo: pode ser uma expressão string conforme o a convenção definida.
– Para o modelo são adoptadas as seguintes convenções de alias:
• ? Qualquer caractere simples
• * Nenhum ou mais de um caractere
• # Qualquer digito simples ( "0", ..."9")
• [charlist] Qualquer caractere simples da lista de caracteres
• [!charlist] Qualquer caractere simples não presentes na lista de
caracteres
– Ex: resultado = “A” Like “?”  sempre True
– resultado = “ABC5078” Like “ABC???”  também sempre
True
– resultado = “ABC78” Like “ABC*”  também sempre True
(c) jacn10/11 89
Strings -8
• Funções pré definidas sobre strings do VB
– Str(numero) : converte <numero> (valor numérico) em string.
– Len(string ) : determina o número de caracteres da string, ou seja o seu
comprimento.
– Chr$(código) : retorna uma string associada ao código.
– Asc(string) : retorna um valor inteiro que representa o código do
primeiro caractere da string.
– Space(numero) - Retorna uma string contendo <numero> de espaços.
– String$(Tamanho,String) - Cria uma string com comprimento igual a
Tamanho e que contém o primeiro caractere da String. Se String tiver
mais que um caractere somente o primeiro será usado.
– Trim$(string) - Remove os espaços existentes de ambos os lados de
string
– RTrim$(string) - Remove os espaços à direita da string
– LTrim$(string) - Remove os espaços à esquerda da string
– LCase$(string) - Converte todos os caracteres alfanuméricos na string
para minúsculas.
(c) jacn10/11 90
Strings -9
• Funções básicas de manipulação de strings (cont.):
– UCase$(string) - Converte os caracteres alfanuméricos na string para
maiúsculas.

• Substrings: substrings são pedaços/partes de uma string.Existem


funções para trabalhar com substrings e que são:

– Left$(String , Tamanho) : retorna uma string contendo o número de


caracteres definido em Tamanho do lado esquerdo da String.
– Right$(String, Tamanho) : retorna uma string contendo o número de
caracteres definido em Tamanho do lado direito da String.
– Mid$(String, Inicio,[Tamanho]) : como função retorna uma substring da
String dada , começando no primeiro caractere de Inicio com
comprimento definido em Tamanho. Se Tamanho for omitido ou for
menor que o comprimento da string todos os caracteres a partir de
inicio serão retornados.

(c) jacn10/11 91
Strings -10
– Instr$(Inicio,string1,string2,[Compare]) : determina a posição da
primeira ocorrência de uma substring contida em uma string. Retorna
um Long.
– Split(string,delimiter,count,compare_mode) : divide uma string e retorna
as substrings como um array de strings.
– Join(List,Delimiter) : concatena as substrings contidas em List numa
única string, sendo :
• List um array de uma dimensão contendo as strings a serem concatenadas,
• Delimiter o caractere usado para separar as substrings na string retornada.
Se omisso o caractere (" ") será usado. Se for uma string vazia ("") , todos
os itens da lista serão concatenados sem delimitadores.
– Filter(Varlist, Value, Include, Compare) : procura em VarList pelas
strings definidas em Value e retorna o resultado num array, onde:
• VarList: contém um array de strings que a função irá filtrar
• Value: é a string de caracteres usada para identificar qual elemento será
incluída no novo array.
• Include : boleano que indica se os elementos contendo o valor coincidente
será incluído ou não na string . O valor padrão é True.
• Compare: indica como será busca de Value efectuada

(c) jacn10/11 92
Strings -11
– StrReverse(string) : retorna uma string com os
caracteres invertidos.
– Replace(string, strProcura, strSubstPor, Inicio,
Contador, Compare)
• Onde:
– String : é a string a ser alterada
– strProcura : é a string a procurar em <String>
– strSubstPor : é a string usada para substituir a string
<strProcura>
– Inicio - indica o inicio da busca por <strProcura>. (Opcional)
– Contador - indica o número máximo de vezes que
<strProcura> será substituída
– Compare - o modo de comparação a ser efectuada.

(c) jacn10/11 93
Strings -12
Private Sub Command2_Click() Programa que determina o
Dim i, conta As Integer numero de ocorrências de uma
Dim in_str As String letra dada pelo utilizador
Dim abc As String * 1
conta = 0
in_str = InputBox("Introduza o texto :")
Label1.Caption = in_str
abc = InputBox("Introduza a letra :")
Label2.Caption = " Letra a procurar:" + abc_
'MsgBox (" o comprimento da string é :" +
Str(Len(in_str)))
For i = 1 To Len(in_str)
If abc = Mid(in_str, i, 1) Then conta = conta + 1
Next i
Label3.Caption = ("n. de ocorrências de " + abc + " é :
" + Str(conta))
End Sub

(c) jacn10/11 94
Strings -13
Exercício sobre strings
Escreva, um programa em VB que leia texto
de uma Textbox e que:
a) Conte o numero de ocorrências de uma
determinada letra ou caractere definida,
dada, pelo utilizador, via teclado.
b) Procure uma ocorrência de uma palavra
dadas pelo utilizador ao teclado.

(c) jacn10/11 95
Strings -14
• Problemas:
– 1) Faça um programa que leia uma string e
que inverta a ordem dos caracteres
– 2) Escreva um programa que determine
a) o numero de espaços contidos na string
b) o numero de caracteres numéricos (algarismos)
que esta contém.
c) o numero de ocorrências de uma dada letra
definida pelo utilizador.
d) o numero de vezes que uma dada palavra
aparece no texto.
(c) jacn10/11 96
Strings -15
• Mais problemas
– 3) Escreva um programa que transforme um
texto em maiúsculas.
– 4) Escreva um programa que substitua uma
dada palavra no texto por outra palavra dada
pelo utilizador
– 5) Faça um programa que implemente o
código de distancia, sendo a distancia
definida pelo utilizador
(c) jacn10/11 97
GDI – 1
GDI= Graphic Device Interface.
• A computação gráfica é a parte das ciências da
computação que trata com o desenho de
gráficos e formas no computador.
• O computador tem um sistema de gestão da
parte gráfica que nos permite o interface com o
programa, e consequentemente com o
utilizador.
• As imagens são formadas por pixels (do inglês
Picture Element), e estão organizadas em linhas
e colunas.
• Um pixel é referenciado pela sua posição no
écran, e pela sua cor.
(c) jacn10/11 98
GDI - 2
• Os gráficos são feitos sobre objectos, sendo o
primeiro a própria Form.
• Em termos de cor, o sistema usa a codificação
RGB, respectivamente R:Reed, B:Blue e
G:Green, onde para cada um destes parâmetros
se pode escolher um valor entre 0-255.
• A outros processos de codificar a cor, mas que
não são aqui referidos.
• Podemos ainda introduzir uma componente
adicional de transparência sobre a imagem
anterior, dando uma aparência desta (factor
alfa)
(c) jacn10/11 99
GDI - 3
• PictureBox
– Picture box é um controlo usado como suporte para desenhos e
imagens, mas podemos fazer o mesmo directamente sobre a
Form.
– No entanto a PictureBox trabalha em “cima” da Form dado ser
um objecto que adicionamos ao programa.
– A PictureBox exprime-se em termos do seu comprimento e da
sua largura (width and height). O mesmo ocorre para as
imagens que são medidas em numero de pixeis em X e Y, ao
que corresponde a sua resolução:
– pixels. Resolution = width * height
– As unidades que usamos em ambos os casos são os pixeis.

(c) jacn10/11 100


GDI - 4
• PictureBox (cont)
• Uma imagem pode ser colocada numa
PictureBox, usando a propriedade Image.
• Antes de se usar esta propriedade, devemos
colocar a Image property, no SizeMode de
forma a podermos vê-la. Tal é particularmente
util quand a imagemé maior que a PictureBox
(i.e. tem mais pixeis que a picturebox).
• Também há a questão do:
– AutoSize que permite redimensionara imagem para
caber naPictureBox.
– E do StretchImage que faz o resize da imagem para
a picturebox.
(c) jacn10/11 101
GDI - 5
• PictureBox (cont)
– Podemos ainda carregar directamente uma
imagem para a PictureBox com:
• picBox.Image = Image.FromFile(filespec)
– Podemos ainda usar a propriedade
SizeMode para alterar (durante a execução
do programa) a dimensão da imagem para
que esta caiba na PictureBox
• picBox.SizeMode = PictureBoxSizeMode.AutoSize

(c) jacn10/11 102


GDI - 6
• Coordenadas em imagem
– Há sempre m referencial ligado a qualquer imagem,
para se colocar os pixeis, ou para se aceder a estes
numa imagem.
– O canto superior esquerdo é sempre o (0,0) do
referencial
x0
(0,0)
Eixo dos X
(x0,y0)
y0
mais a cor

(c) jacn10/11
Eixo dos 103
Y
GDI - 7
• Existe um sem numero de primitivas de desenho,
que nos permitem desenhar elementos sobre o
objecto gráfico em uso (Form ou PictureBox).
• São disso exemplo:
– picBox.CreateGraphics.DrawRectangle(Pens.Blue, x, y, w, h)
• Desenha um rectângulo, de cor azul, a partir do ponto x,y e com o
comprimento w e a largura h.
• Neste caso usamos uma das pen (Pens.Blue) com cor predefinida.

x
w
y
h

(c) jacn10/11 104


GDI – 8
• Para desenhar uma elipse, ou uma circunferência a
primitiva é a mesma. Apenas mudam D0 e D1:
– Circulo (azul) de diâmetro d:
• picBox.CreateGraphics.DrawEllipse(Pens.Blue, x, y, d0, d1)
– Os valores x e y são as coordenadas do canto superior
esquerdo do rectângulo que o inscreve.
– EX: picBox.CreateGraphics.DrawEllipse(Pens.Red, 35, 35, 70, 70)

y x d

(c) jacn10/11 105


GDI – 9
• Objectos gráficos:
– Primitivas: pixels, linhas, rectângulos,
círculos, sectores.
– Objectos de aplicação: pie charts, barras, etc.
– Objectos de aplicação gráfica são feitos por
primitivas.

(c) jacn10/11 106


GDI – 10
• Com o que aprendeu, faça um programa de
display de funções matemáticas:
1. F(x) = cos(x) 1. F(x) = x3-3x2+1
2. F(x) = sin(x) 2. F(x) = x.ex
3. F(x) = tang(x) 3. F(x) = log(x)/x
4. F(x) = 1/x 4. F(x) = e-x. sin(x)
5. F(x)= x1/2 5. F(x)= x1/3
6. F(x) = log(x) 6. F(x) = xn
7. F(x) = x1/2/(1-x) 7. F(x) = x3 /(x2-x)
8. F(x) = x + 1/x2

Nota: Para cada função há que previamente calcular o seu domínio e


respectiva imagem para se definir a zona de impressão. Ou seja os
limites da função e os valores que esta vai gerar.
(c) jacn10/11 107
GDI - 11
• Introdução de strings em modo gráfico:
– O VB permite que se faça o display de texto, contido
em strings, em modo gráfico, recorrendo ao
comando DRAWSTRING, cuja sintaxe pode ser vista
no exemplo seguinte, onde se desenha a função f(x)=
sin(x)
– A sintaxe desta função é:
• gr.DrawString( string, Font, Brush, x_posição, y_posição)
• Exemplo:
– Dim gr as Graphics= PictureBox1.CreateGraphics
– Dim str as String = “Olá mundo!”
– Gr.DrawString( str, Me.Font,Brushes.Blue,200,100)
(c) jacn10/11 108
GDI - 12
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button2.Click
Dim gr As Graphics= PictureBox1.CreateGraphics
Dim x, i, fx, fx0, i0, aa, ll, toto As Single
Dim str As String

aa = PictureBox1.Height: ll = PictureBox1.Width: toto = 0


gr.DrawString("Função f(x) = sin(x)", Me.Font, Brushes.Blue, 100, 1)

For i = 0 To ll
fx = 10 + aa / 2 + 0.3 * aa * Math.Sin(i * Math.PI / 180)
If i > 0 Then gr.DrawLine(Pens.Brown, i, fx, i0, fx0)

fx0 = fx: i0 = i: toto = toto + 1


If toto >= 50 Then ‘de 50 em 50 pontos faz o display da string com o valor de f(x) no
ponto.
str = "f(" & i & "º)= " & Math.Round(fx, 1) ‘constrói a stirng str
gr.DrawString(str, Me.Font, Brushes.DarkRed, i, fx) ‘ display da string str
toto = 0
End If

Next
End(c)Sub
jacn10/11 109
GDI - 13
Display gráfico
de f(x)= sin(x)
• A saída gráfica desta
função é:

Display da
string str, com o
valor de f(x) no
ponto...

(c) jacn10/11 110


GDI – 14
• Outras funções gráficas:
– DrawRectangle (Pens.Color, x , y , w , h )
– Fill.Rectangle(Brushes.Color,x,y,w,h)
– DrawEllipse( Pens.Color, x, y , d ,d )  caso circulo
– DrawEllipse( Pens.Color, x, y , d1 ,d2 )  caso elipse
– FillEllipse( Brushes.Color, x , y , w, h )
• Nota: no uso da Ellipse, o x, y correspondem ao canto
superior esquerdo do rectângulo que a limita, sendo w e h a
largura e o comprimento do mesmo x
w
y
h
(c) jacn10/11 111
GDI - 15
• Outras funções gráficas (cont)
– DrawLine( Pens.Color, X0,y0, x1, y1)
– FillPie(Brushes.Color, a-r,b-r,2*r,2*r,
Angulo_inicio, Angulo_Varrido)
• Esta função desenha uma pie (tarte) de centro
(a,b), raio r, com a cor Brushes.Color, e tendo
um ângulo inicial e um ângulo de varrimento.
• Nos slides seguinte podemos ver o código
respectivo e o resultado gráfico.
(c) jacn10/11 112
GDI - 16
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button8.Click

'Desenha Pie
Dim gr As Graphics = PictureBox1.CreateGraphics
Dim r As Single = 100
Dim ini_ang, tot_ang As Single
ini_ang = 0
tot_ang = 135

gr.DrawPie(Pens.Black, 200 - r, 200 - r, 2 * r, 2 * r, ini_ang, tot_ang) ‘(1)


gr.FillPie(Brushes.Salmon, 400 - r, 200 - r, 2 * r, 2 * r, ini_ang, tot_ang)
‘(2)

‘(3)
gr.FillPie(Brushes.Tomato, 300 - r, 50 - r, 2 * r, 2 * r, ini_ang, tot_ang)
gr.DrawPie(Pens.Blue, 300 - r, 50 - r, 2 * r, 2 * r, ini_ang, tot_ang)
End Sub
(c) jacn10/11 113
GDI - 17

„(3)

(c) jacn10/11
„(1) „(2)
114
GDI - 18
• Para além das funções estudadas, existem muitos
outros métodos que nos permitem:
– Trabalhar com cores
– Trabalhar com polígonos (mínimo de 3 pontos)
– Usar matrizes de transformação (rotação, scalling,
espelhamento, …)
– Usar padrões de preenchimento, texturas e gradientes
– Incluir formas para terminar linhas (setas,…)
– Desenhar arcos, curvas (abertas e fechadas) e curvas de
Béziers
– Fazer a combinação de formas (intersecção, reunião, exclusão,
complemento, ou exclusivo, etc)
– Trabalhar com imagens.

(c) jacn10/11 115


Implemente um programa do Jogo da Vida
• Regras do Jogo da Vida
– Conway escolheu suas regras cuidadosamente, após um longo período de
experimentos, para satisfazer três critérios:
• Não deve haver nenhuma imagem inicial para a qual haja uma prova imediata ou
trivial de que a população pode crescer sem limite.
• Deve haver imagens iniciais que aparentemente cresçam sem limite.
• Deve haver imagens iniciais simples que cresçam e mudem por um período de tempo
considerável antes de chegar a um fim das possíveis formas:
– Sumindo completamente (por superpopulação ou por ficarem muito distantes)
– Estacionando em uma configuração estável que se mantem imutável para sempre, ou
entrando em uma fase de oscilação na qual são repetidos ciclos infinitos de dois ou mais
períodos.
– Por outras palavras, as regras deviam tornar o comportamento das populações
ao mesmo tempo interessante e imprevisível.
– As regras são simples e elegantes:
• Qualquer célula viva com menos de dois vizinhos vivos morre de solidão.
• Qualquer célula viva com mais de três vizinhos vivos morre de superpopulação.
• Qualquer célula com exatamente três vizinhos vivos se torna uma célula viva.
• Qualquer célula com dois vizinhos vivos continua no mesmo estado para a próxima
geração.
– É importante entender que todos os nascimentos e mortes ocorrem
simultaneamente. Juntos eles constituem uma geração ou, como podemos
chamá-los, um "instante" na história da vida completa da configuração inicial.

(c) jacn10/11 116


Rato – 1
• O rato é um poderoso instrumento em inúmeros
programas, e que permite uma dimensão adicional de
interface com o código.
• O seu uso primário consiste em desencadear eventos
(agindo sobre os controlos) e que desencadeiam a
execução do código que lhes corresponde.
• Mas há outra forma de usar o rato, e que consiste em
aceder directamente aos eventos que este pode gerar e
que são:
– Posição (x,y)
– Premir algum dos seus botões
– Etc…

(c) jacn10/11 117


Rato – 2
• O rato é sempre usado sobre um objecto
(Form1, PictureBox,…) e é necessário
incluir no programa o código
correspondente ao seu uso.

(c) jacn10/11 118


Ficheiros - 1

(c) jacn10/11 119


Ficheiros – 2

(c) jacn10/11 120


Ficheiros – 3

(c) jacn10/11 121


Ficheiros – 4

(c) jacn10/11 122


Ficheiros – 5

(c) jacn10/11 123


Ficheiros – 6

(c) jacn10/11 124


Ficheiros – 7

(c) jacn10/11 125


Ficheiros – 8

(c) jacn10/11 126


Ficheiros – 9

(c) jacn10/11 127


Ficheiros – 10

(c) jacn10/11 128


Ficheiros – 11

(c) jacn10/11 129


Ficheiros – 12

(c) jacn10/11 130


Ficheiros – 13

(c) jacn10/11 131


Ficheiros – 14

(c) jacn10/11 132


Ficheiros – 15

(c) jacn10/11 133


Ficheiros – 16

(c) jacn10/11 134


Ficheiros – 17

(c) jacn10/11 135


Ficheiros – 18

(c) jacn10/11 136


Ficheiros – 19

(c) jacn10/11 137


Ficheiros – 20

(c) jacn10/11 138


Ficheiros – 21

(c) jacn10/11 139


Ficheiros – 22

(c) jacn10/11 140

Das könnte Ihnen auch gefallen