Você está na página 1de 47

1

Entradas e Sadas __________________________________________________1

Estruturas de Seleco Simples________________________________________8

Estruturas de Seleco Embutidas_____________________________________12

Estruturas de Repetio Condicionais Simples I __________________________17

Estruturas de Repetio Condicionais Simples II __________________________21

Estruturas de Repetio Contadas Simples ______________________________25

Estruturas de Repetio Embutidas I ___________________________________29

Estruturas de Repetio Embutidas II __________________________________33

Anexos __________________________________________________________38

Captulo 1

Entradas e Sadas

Exerccios Resolvidos
1.1 Elabore um programa em Visual Basic que permita escrever ou apagar a mensagem, Este o meu
primeiro programa em VB, consoante o boto de comando que seja premido. Como modelo
sugere-se a seguinte interface:

Objecto

Propriedade

Valor

Form1

Caption
Name

Mensagem
FrmMensagem

Label1

Caption
Font

Clique sobre cada um dos botes


Ms Sans Serif; Bold; 8

Label2

Alignment
BorderStyle
Caption
Font
Name

Center
1-Fixed Single
(vazio, isto , eliminar Label2)
Times New Roman; Bold Italic; 10
LblMsg

Command1

Caption
Name

Escrever
CmdEscrever

Command2

Caption
Name

Apagar
CmdApagar

Command3

Caption
Name

Sair
CmdSair

Programao do Boto Escrever:


1. Algoritmo (Fluxograma e Pseudo-cdigo):

Incio
Escrever(Este o meu primeiro programa em VB)
Fim

Visual Basic

Captulo 1

Entradas e Sadas

2. Codificao em Visual Basic:


Private Sub CmdEscrever_Click()
LblMsg.Caption = Este o meu primeiro programa em VB
End Sub

Programao do Boto Apagar:


1. Algoritmo (Fluxograma e Pseudo-cdigo):

Incio
Escrever()
Fim

2. Codificao em Visual Basic:


Private Sub CmdApagar_Click()
LblMsg.Caption =
End Sub

Programao do Boto Sair:


1. Algoritmo (Fluxograma e Pseudo-cdigo):
Incio
Terminar
Fim

2. Codificao em Visual Basic:

Private Sub CmdSair_Click()


End
End Sub

Visual Basic

Captulo 1

Entradas e Sadas

1.2 Elabore um programa em Visual Basic que permita efectuar a converso de graus centgrados (C)
para graus fahrenheit (F), sabendo que a frmula de converso a seguinte: F = 1.8*C + 32.
Sugere-se o seguinte modelo para a interface:

Objecto

Propriedade

Valor

Form1

Caption
Name

Converses Centigrados Fahrenheit


FrmConverte

Label1

Caption
Font

Centgrados
Ms Sans Serif; Bold; 10

Label2

Caption
Font

Fahrenheit
Ms Sans Serif; Bold; 10

Label3

Alignment
BorderStyle
Caption
Font
Name

1 Right Justify
1- Fixed Single
(vazio)
Ms Sans Serif; Regular; 10
LblFahr

Text1

Alignment
Font
Name
Text

1 Right Justify
Ms Sans Serif; Regular; 10
TxtCentigr
(vazio)

Command1

Caption
Name
Font

Converter
CmdConverte
Times New Roman; Bold Italic; 12

Command2

Caption
Name
Font

Sair
CmdSair
Times New Roman; Bold Italic; 12

Programao do Boto Converter:


1. Algoritmo (Fluxograma e Pseudo-cdigo):
Incio
[ Leitura de Dados ]
Escrever(Indique os graus centgrados)
Ler(Centig)
[ Processamento ]
Fahr

Centig * 1.8 + 32

[ Sada de Resultados ]
Escrever(Fahrenheit=, Fahr)
Fim

Visual Basic

Captulo 1

Entradas e Sadas

2. Codificao em Visual Basic:


Private Sub CmdConverter_Click()
Dim Centig As Double, Fahr As Double
Centig = val(TxtCentigr.Text)
Fahr = Centig * 1.8 + 32
LblFahr.Caption = Fahr
End Sub

Exerccios Propostos
1.3 Elaborar uma aplicao em Visual Basic que permita estimar o custo de combustvel que gastar
um automvel numa dada viagem de N Km, sabendo o preo por litro do combustvel usado e o
consumo do automvel aos 100 Km.
Sugere-se o seguinte modelo para a interface:

Visual Basic

Objecto

Propriedade

Valor

Form1

Caption
Name

Consumo em Viagem
FrmConsumo

Label1

Caption
Font

Preo do Combustvel (Euros/Litro):


Ms Sans Serif; Bold; 10

Text1

Alignment
Font
Name
Text

1 Right Justify
Ms Sans Serif; Bold; 12
TxtPrecoLitro
(vazio)

Label2

Caption
Font

Consumo do Automvel (Litros/100 Km):


Ms Sans Serif; Bold; 10

Text2

Alignment
Font
Name
Text

1 Right Justify
Ms Sans Serif; Bold; 12
TxtConsumo100
(vazio)

Captulo 1

Entradas e Sadas

Label3

Caption
Font

Distncia da Viagem (Km):


Ms Sans Serif; Bold; 10

Text3

Alignment
Font
Name
Text

1 Right Justify
Ms Sans Serif; Bold; 12
TxtDistancia
(vazio)

Label4

Caption
Font

Consumo da Viagem (Litros):


Ms Sans Serif; Bold; 10

Label5

Alignment
BorderStyle
Caption
Font
Name

1 Right Justify
1- Fixed Single
(vazio)
Ms Sans Serif; Bold; 12
LblConsumoViag

Label6

Caption
Font

Custo da Viagem (Euros):


Ms Sans Serif; Bold; 10

Label7

Alignment
BorderStyle
Caption
Font
Name

1 Right Justify
1- Fixed Single
(vazio)
Ms Sans Serif; Bold; 12
LblCustoViag

Command1

Caption
Name
Font

&Calcular
CmdCalcular
Ms Sans Serif; Bold; 10

Command2

Caption
Name
Font

&Sair
CmdSair
Ms Sans Serif; Bold; 10

1.4 Tendo como modelo a interface apresentada em baixo, elabore um programa em Visual Basic que
permita visualizar o resultado de qualquer uma das seguintes operaes aritmticas elementares
entre dois nmeros: adio, subtraco, multiplicao e diviso real. O programa deve ainda
apresentar o sinal aritmtico entre os dois operandos, reflectindo a operao realizada.

Visual Basic

Objecto

Propriedade

Valor

Form1

Caption
Name

Operaes Aritmticas
FrmOperAritm

Text1

Alignment
Name
Text

1 - Rigth Justify
TxtNumero1
(vazio)

Captulo 1

Entradas e Sadas

Text2

Alignment
Name
Text

1 - Rigth Justify
TxtNumero2
(vazio)

Label1

Alignment
Caption
Name

Center
(vazio)
LblOperacao

Label2

Caption

Label3

Alignment
BorderStyle
Caption
Name

1 - Rigth Justify
Fixed Single
(vazio)
LblResultado

Command1

Caption
Name

+
CmdAdicionar

Command2

Caption
Name

CmdSubtrair

Command3

Caption
Name

X
CmdMultiplicar

Command4

Caption
Name

/
CmdDividir

Command8

Caption
Name

&Sair
CmdSair

Exerccio Suplementar
1.5 Elabore um programa em Visual Basic para calcular a rea de um polgono regular (A) (ver figura
abaixo), que dada pela seguinte frmula:

A=

o
360
2
R sen (
),
2
n

sendo n o nmero de lados e R o raio circunscrito.


Sugere-se a interface seguinte, em que a figura do polgono construda utilizando a ferramenta
line.

Visual Basic

Objecto

Propriedade

Valor

Form1

Caption
Name

rea de Polgonos Regulares


FrmAreaPoligReg

Captulo 1

Visual Basic

Entradas e Sadas

Label1

Caption

Nmero de lados =

Label2

Caption

Raio circunscrito (R) =

Label3

Caption

rea =

Text1

Name
Text

TxtNumLados
(vazio)

Text2

Name
Text

TxtRaioCircun
(vazio)

Label4

BorderStyle
Caption
Name

1 - Fixed Single
(vazio)
LblArea

Command1

Caption
Name

&Calcular
CmdCalc

Command2

Caption
Name

&Sair
CmdSair

Captulo 2

Estruturas de Seleco Simples

Exerccio Resolvido
2.1 Elabore um jogo em Visual Basic chamado Sete da Sorte. O jogo consiste na gerao aleatria de
um nmero inteiro entre 0 e 9, inclusiv, e o jogador s ganha se sair o nmero 7. Para a interface
sugere-se o seguinte modelo:

Depois do utilizador accionar o boto Iniciar, o programa deve gerar aleatoriamente um nmero

[ ]

inteiro pertencente ao intervalo 0, 9 . Se o nmero gerado for 7, deve ser apresentada uma
imagem com moedas, seno, deve ser apresentada a mensagem Tente Outra Vez
Programao do Boto Iniciar:
1. Algoritmo (Fluxograma e Pseudo-cdigo):
Incio
N

int (aleatorio() * 10)

Escrever(N)
Se N=7 Ento
Mostrar(imagem)
Seno
Escrever(Tente Outra Vez ...)
Fim Se
Fim

Visual Basic

Captulo 2

Estruturas de Seleco Simples

2. Codificao em Visual Basic:


Private Sub CmdIniciar_Click()
Dim N As Integer
Randomize
N = Int(Rnd * 10)
LblN.Caption = N
If N = 7 Then
LblMsg.Caption =
PicMoedas.Visible = True
Else
PicMoedas.Visible = False
LblMsg.Caption = Tente Outra Vez
End If
End Sub

Exerccios Propostos
2.2

Escreva um programa em Visual Basic para calcular o imposto automvel (IA) aplicado aos
veculos ligeiros de passageiros novos. Este imposto calculado multiplicando a cilindrada pela
taxa por cc e subtraindo a parcela a abater, de acordo com a seguinte tabela:
Cilindrada
<= 1250 cc
>= 1250 cc

Taxa por CC
3,60
8,52

A abater
2323,69
8470,99

Por exemplo, o IA aplicado a um veculo de 1242 cc calculado da seguinte forma:


(1242 x 3,60) 2323,69 = 2147,51
Para a interface sugere-se o seguinte modelo:

(continua)
Visual Basic

Captulo 2

Estruturas de Seleco Simples

2.3 Crie uma nova verso do exerccio 2.1, em que so gerados aleatoriamente 3 nmeros inteiros
entre 0 e 9, inclusiv, e o jogador ganha quando sai pelo menos um 7.
Para a interface sugere-se o modelo apresentado na pgina seguinte.

2.4 Altere o programa anterior por forma a que o jogador ganhe quando sairem pelo menos dois 7. Para
a interface sugere-se o seguinte modelo:

Visual Basic

10

Captulo 2

Estruturas de Seleco Simples

Exerccio Suplementar
2.5 Elabore um programa em Visual Basic para auxiliar a contabilidade duma empresa a calcular o
vencimento dum empregado. O clculo baseado no nmero de horas que trabalhou e no seu
salrio por hora. Para alm das 40 horas de trabalho, a hora acrescida de um suplemento de 25%.
Para a interface sugere-se o seguinte modelo:

2.6 O programa das Operaes Aritmticas (exerccio 1.4) gera um erro de execuo na operao de
diviso, quando introduzido um divisor igual a zero. Trata-se de uma situao indesejvel, e como
tal, altere o programa para que em tais circunstncias, em vez de gerar o erro de execuo, o
programa mostre ao utilizador uma informao apropriada numa caixa de mensagem. Deve ainda
acrescentar ao programa as seguintes operaes: exponenciao, diviso inteira e resto da diviso
inteira.

Visual Basic

11

Captulo 3

Estruturas de Seleco Embutidas

Exerccio Resolvido
3.1 Elabore um programa em Visual Basic para o auxiliar a cambiar Euros, sabendo que: 1 = 0.9796
Dlares (USA), 1 = 0.6274 Libras (GB) e 1 = 120.22 Ienes (Japo). O valor de cmbio deve ser
apresentado formatado com duas casas decimais, e no caso de ser um valor superior ou igual a
1000, deve ser mostrado com separadores de milhares. Para a interface sugere-se o seguinte
modelo:

Programao do Boto Cambiar:


1. Algoritmo (Fluxograma e Pseudo-cdigo):

Visual Basic

12

Captulo 3

Estruturas de Seleco Embutidas

Incio
Escrever( Indique o valor em euros a cambiar )
Ler( Euros )
Escrever( Indique a opo (Dlar, Libra ou Iene) )
Ler( Opcao )
Se (Opcao = Dolar) Ento
Cambio

Euros * 0.9796

Escrever( Dlares= , Cambio )


Seno Se (Opcao = Libra) Ento
Cambio

Euros * 0.6274

Escrever( Libras= , Cambio)


Seno
Cambio

Euros * 120.22

Escrever( Ienes= , Cambio )


Fim Se
Fim Se
Fim

2. Codificao em Visual Basic:

Private Sub CmdCambiar_Click()


Dim Euros As Single, Cambio As Single
Euros = val(TxtEuros.Text)
If (OptDolar.Value = True) Then
Cambio = Euros * 0.9796
LblCambio.Caption = Format(Cambio, "#,##0.#0")
LblMoeda.Caption = "Dlares"
ElseIf (OptLibra.Value = True) Then
Cambio = Euros * 0.6274
LblCambio.Caption = Format(Cambio, "#,##0.#0")
LblMoeda.Caption = "Libras"
Else
Cambio = Euros * 120.22
LblCambio.Caption = Format(Cambio, "#,##0.#0")
LblMoeda.Caption = "Ienes"
End If
End Sub

Visual Basic

13

Captulo 3

Estruturas de Seleco Embutidas

Exerccio Proposto
3.2 Elabore um programa em Visual Basic que permita determinar o custo do combustvel adquirido
numa gasolineira. Considere que os preos dos diversos combustveis so os seguintes: gasolina s/
chumbo 95 octanas 1.05 , gasolina s/ chumbo 98 octanas 1.15 e gasleo 0,80.
O custo deve ser apresentado formatado com duas casas decimais e, no caso de ser um valor
superior ou igual a 1000, deve ser mostrado com separadores de milhares. Sugere-se a interface
indicada seguidamente:

Exerccios Suplementares
3.3 Elabore um programa em Visual Basic que determine se um dado ano ou no bissexto. No caso
de no o ser, pretende-se que indique o(s) ano(s) bissexto(s) mais prximo(s). Como modelo,
apresenta-se a seguinte interface:

Visual Basic

14

Captulo 3

Estruturas de Seleco Embutidas

3.4 Elabore um programa em Visual Basic para o auxiliar a localizar o quadrante dum ponto, dadas as
suas coordenadas. Para a interface sugere-se o modelo da figura apresentada, em que os eixos XY
podem ser construdos usando a ferramenta line.

3.5 Elabore um programa em Visual Basic para determinar as solues de uma equao do 2 grau
2

(ax +bx+c=0), reais ou complexas. As solues devem apresentar, no mximo, 3 casas decimais.
Para a interface sugere -se o seguinte modelo:

Visual Basic

15

Captulo 3

Estruturas de Seleco Embutidas

3.6 Elabore um programa em Visual Basic para auxiliar um aluno a determinar a nota final a uma
disciplina, cujo mtodo de avaliao o seguinte: a nota final tem duas componentes, terica e
prtica, e os seus pesos so respectivamente de 60 e 40 %. A nota terica dada pela mdia
aritmtica das duas melhores classificaes obtidas em 3 testes, e a nota prtica a classificao
de um trabalho laboratorial.
O programa tem de permitir ao utilizador introduzir as 4 notas obtidas, 3 tericas e 1 prtica, e tem
de validar todas as notas introduzidas, aceitando apenas valores numricos entre 0 e 20, inclusiv.
No caso de serem introduzidas notas invlidas, o programa deve mostrar uma mensagem
apropriada, numa caixa de mensagem. A nota final deve ser apresentada com apenas 1 casa
decimal.
Construa uma interface adequada.

Visual Basic

16

Captulo 4

Estruturas de Repetio Condicionais Simples I

Exerccio Resolvido
4.1 Elabore um programa em Visual Basic que gere nmeros aleatrios inteiros no intervalo [1, 60], at
sair o nmero 11. O programa deve listar todos os nmeros gerados (11 includo) e apresentar o
total dos mesmos.
Para a interface sugere-se o seguinte modelo:

Programao do Boto Gerar:


1. Algoritmo (Fluxograma e Pseudo-cdigo):

Incio
Total

Repetir
N

Int(Aleatorio( ) * 60) + 1

Escrever(N)
Total

Total +1

At N = 11
Escrever(Total de Nmeros= , Total)
Fim

Visual Basic

17

Captulo 4

Estruturas de Repetio Condicionais Simples I

2. Codificao em Visual Basic:


Private Sub CmdGerar_Click()
Dim N As Integer, Total as Integer
LstNumeros.Clear
Randomize
Total = 0
Do
N = Int(Rnd * 60) + 1
LstNumeros.AddItem N
Total = Total + 1
Loop Until N=11
LblTotal.Caption = Total

End Sub

Exerccios Propostos
4.2 Elabore um programa em Visual Basic que gere nmeros aleatrios inteiros, no intervalo [1, 200],
at sairem 10 nmeros pares. O programa deve listar apenas os nmeros pares gerados e
apresentar o maior deles.
Para a interface sugere-se o seguinte modelo:

4.3 Elabore um programa em Visual Basic que permita gerir a atribuio de lugares num avio. Ao ser
iniciado o Check-In, o funcionrio deve introduzir para cada passageiro, atravs de uma inputbox, o
seu tipo de tarifa: 1 ou 2 (1 ou 2 classe). A seguir, o programa deve mostrar uma mensagem,
atravs de uma msgbox, com o nmero do lugar atribudo sabendo que:

aos bilhetes com a tarifa 1 so atribudos os lugares com os nmeros 1, 2, .., 10 e aos de
tarifa 2, os lugares com os nmeros 11, 12, .., 94;

Visual Basic

A atribuio de lugares deve ser sequencial;

18

Captulo 4

Estruturas de Repetio Condicionais Simples I

Em cada uma das classes no existem mais reservas que lugares disponveis.

A introduo de dados deve terminar assim que se verifique uma das seguintes condies:

o nmero mximo de lugares atingido (94);

O funcionrio introduziu o valor 0 (fecho do Check-In).

No final, o programa deve apresentar o nmero de passageiros que fizeram o Check-In (no conjunto
das duas tarifas).
Para a interface sugere-se o seguinte modelo:

Exerccios Suplementares
4.4 Elabore um programa em Visual Basic que determine se um dado nmero inteiro positivo ou no
primo. Considera-se que um nmero primo quando apenas divisvel por si e pela unidade.
Para a interface sugere-se o seguinte modelo:

Visual Basic

19

Captulo 4

Estruturas de Repetio Condicionais Simples I

4.5 Elabore um programa em Visual Basic que lhe permita jogar adivinha com o computador. O
utilizador tem que adivinhar o nmero que o computador gera aleatoriamente entre 0 e 100 ou 0 e
1000 de acordo com a opo que escolheu. Para cada palpite errado deve-lhe ser dada uma
indicao do gnero Palpite Baixo ou Palpite Alto. No final pretende-se que o programa
apresente o nmero de tentativas efectuadas at ter acertado no nmero mistrio.
Considere o seguinte exemplo:

Visual Basic

20

Captulo 5

Estruturas de Repetio Condicionais Simples II

Exerccio Resolvido
5.1 Elabore um programa em Visual Basic que permita determinar a mdia de um conjunto de nmeros
inteiros positivos. A introduo dos nmeros deve ser realizada atravs de uma inputBox e s deve
terminar quando o utilizador introduzir um valor negativo. Pretende-se que o programa apresente a
mdia dos nmeros (com 1 casa decimal) e a totalidade dos mesmos, conforme ilustrado na
interface seguinte sugerida:

Programao do Boto Iniciar:


1. Algoritmo (Fluxograma e Pseudo-cdigo):

*+ ,

- *

#
#

*+ ,

- *

"
$ %

$'%

Visual Basic

&
($ %

21

Captulo 5

Estruturas de Repetio Condicionais Simples II

Incio
Soma

TotNum

Escrever(Introduza um n inteiro positivo (<0 para terminar))


Ler(N)
Repetir at N < 0
Soma

Soma + N

TotNum

TotNum + 1

Escrever(Introduza um n inteiro positivo (<0 para terminar))


Ler(N)
Fim Repetir
Se TotNum > 0 Ento
Media

Soma / TotNum

Escrever(Mdia = , Media)
Fim Se
Escrever(Total de nmeros = , TotNum)
Fim

2. Codificao em Visual Basic:


Private Sub CmdIniciar_Click()
Dim N As Long, Soma as Long, TotNum As Integer
Dim Media as Single
Soma = 0
TotNum = 0
N = val(inputbox ( Introduza um nmero inteiro: , Leitura de dados ))
Do Until N<0
Soma = Soma + N
TotNum = TotNum + 1
N = val(inputbox ( Introduza um nmero inteiro: , Leitura de dados ))
Loop
If TotNum >0 Then
Media = Soma/TotNum
LblMedia.Caption = format(Media,0.0)
End if
LblTotNum.Caption = TotNum

End Sub

Visual Basic

22

Captulo 5

Estruturas de Repetio Condicionais Simples II

Exerccios Propostos
5.2 Um fabricante de resistncias elctricas pretende uma aplicao informtica para o ajudar a analisar
a qualidade de uma amostra de resistncias de 25 / (valor nominal). Nesse sentido, elabore um
programa em Visual Basic que satisfaa os seguintes requisitos:

Leia o valor de cada uma das resistncias da amostra. A leitura deve terminar quando for
lido um valor negativo.

Apresente o valor mdio da amostra (com duas casas decimais) e a percentagem de


resistncias com valor inferior ao nominal (com uma casa decimal).

Para a interface sugere-se o seguinte modelo:

5.3 Elabore um programa em Visual Basic que leia o nome e a nota de um conjunto de alunos que
realizaram o exame de Introduo Computao. A introduo dos dados deve ser feita utilizando
uma InputBox e terminar quando se digitar o nome ZZZ. Pretende-se ainda que o programa
apresente a mdia das notas e o nome e nota do melhor aluno.
Considere o seguinte exemplo:

Visual Basic

23

Captulo 5

Estruturas de Repetio Condicionais Simples II

Exerccios Suplementares
5.4 Elabore um programa em Visual Basic que calcule a soma dos pesos de um grupo de pessoas que
pretende entrar num elevador. A introduo dos pesos dever ser feita utilizando uma InputBox e
terminar quando for digitado o valor 0 ou se tenha atingido um mximo de 6 pessoas ou a soma dos
pesos exceda os 450 Kgs. Nesta ltima situao dever surgir uma caixa de dilogo com a
mensagem Peso Excessivo.
Como modelo sugere-se a interface seguinte.

5.5 Elabore um programa em Visual Basic que permita determinar o mximo divisor comum entre dois
nmeros inteiros positivos. Como modelo sugere-se a seguinte interface:

5.6 Elabore um programa em Visual Basic para mostrar o nmero mnimo de termos necessrios para
que o valor da srie S =

1
3

3
3

5
3

7
3

+ ... , seja superior a 10,

20 ou 30, consoante a escolha feita pelo utilizador. Para alm


desse valor, o programa tambm tem de apresentar o valor da
srie com esse nmero mnimo de termos.
Para a interface sugere-se o modelo apresentado ao lado.

Visual Basic

24

Captulo 6

Estruturas de Repetio Contadas Simples

Exerccio Resolvido
6.1 Elabore um programa em Visual Basic para gerar 10 nmeros aleatrios inteiros pertencentes ao

intervalo 1, 50 . Para a interface sugere-se o seguinte modelo:

Programao do Boto Mostrar:


1. Algoritmo (Fluxograma e Pseudo-cdigo):

Incio
Repetir Para C
N

1 at 10

int( aleatorio( ) * 50) + 1

Escrever(N)
Fim Repetir
Fim

2. Codificao em Visual Basic:


Private Sub CmdMostrar_Click()
Dim C As Integer, N As Integer
LstNumeros.Clear
Randomize
For C= 1 To 10
N = Int(Rnd * 50) + 1
LstNumeros.AddItem N
Next C

End Sub

Visual Basic

25

Captulo 6

Estruturas de Repetio Contadas Simples

Exerccios Propostos
6.2 Elabore um programa em Visual Basic para listar a tabuada da multiplicao de um nmero inteiro N
fornecido pelo utilizador. Para a interface sugere-se o seguinte modelo:

6.3 Elabore um programa em Visual Basic para listar todos os nmeros inteiros entre -100 e 50. Para a
interface sugere-se o seguinte modelo:

6.4 Modifique o programa anterior para listar todos os nmeros pares entre 1 e N, inclusive, sendo N
definido pelo utilizador. Para a interface sugere-se o seguinte modelo:

6.5 Elabore um programa em Visual Basic que efectue a gerao aleatria de uma chave do totoloto. O
programa deve permitir ao utilizador que especifique o total de nmeros ( [6,12] ) que a chave
dever conter e ainda, como opo, que esses nmeros sejam inferiores a 25 ( [1,24] ). No caso de
ser introduzido um total de nmeros invlido, deve aparecer uma caixa de mensagem apropriada.
Como modelo, considere a interface apresentada na pgina seguinte.

Visual Basic

26

Captulo 6

Estruturas de Repetio Contadas Simples

Exerccios Suplementares
6.6 Elabore um programa em Visual Basic para listagem dos nmeros inteiros pares ou impares,
pertencentes a um dado intervalo (limites includos). Este intervalo deve ser definido pelo utilizador,
e no caso de serem fornecidos limites invlidos ( limite inferior > superior ), deve aparecer uma
caixa de mensagem apropriada para avisar o utilizador.
Para a interface sugere-se o seguinte modelo:

Visual Basic

27

Captulo 6

Estruturas de Repetio Contadas Simples

6.7 Elabore um programa em Visual Basic que permita listar todos os nmeros impares de um dado
intervalo (limites includos), ou ento, apenas os mpares que sejam divisveis por trs, ou por cinco,
ou simultaneamente por trs e cinco, de acordo com as opes do utilizador. Considere o seguinte
exemplo:

1+

1
2

1
3

+ ... +

1
N

6.8 Elabore um programa em Visual Basic para calcular o valor da seguinte srie:

1+

1
2

1
3

+ ... +

1
N

O nmero de termos da srie (N) deve ser fornecido pelo utilizador. Para valores de N invlidos, o
programa deve apresentar ao utilizador uma caixa de mensagem apropriada. O valor da srie deve
apresentar, no mximo, quatro casas decimais. Para a interface sugere-se o seguinte modelo:

6.9 Modifique o programa anterior, para calcular o valor da seguinte srie:

1+

1
3

1
5

1
7

+ ...

O nmero de termos da srie tambm deve ser fornecido pelo utilizador.

Visual Basic

28

Captulo 7

Estruturas de Repetio Embutidas I

Exerccio Resolvido
7.1 Elabore um programa em Visual Basic que permita tabelar a seguinte funo:

f(x, y) =

2
2
x +y
2
y

Os valores a assumir pela varivel x so: 2, 3, 4 e 5.


Para cada valor de x, a varivel y assumir valores entre 2 e 20 com passo 2 ou 3, consoante a
escolha feita pelo utilizador atravs dos botes de opo apresentados no modelo de interface
proposto a seguir.

Exemplo: Caso seja escolhido o passo 3, os valores a assumir pelas variveis x e y assim como
os diversos valores de f(x, y) sero:
x

f(x, y)

2
5
8
11
14
17
20
2
5
8
11
14
17
20
2
5
...
17
20
2
5
...
17
20

2
1,16
1,0625
1,033058
1,020408
1,013841
1,01
3,25
1,36
1,140625
1,07438
1,045918
1,031142
1,0225
5
1,64
...
1,055363
1,04
7,25
2
...
1,086505
1,0625

4
...
4
5
...

Visual Basic

29

Captulo 7

Estruturas de Repetio Embutidas I

Programao do Boto Tabelar Funo:


1. Algoritmo (Fluxograma e Pseudo-cdigo):

%5

* ++ % + ,

+ % 1 3&6

0 ++ 1
2 3

Incio
Escrever(Indique o passo dos valores de Y (2/3))

2 "4

Ler(PassoY)
1 3

Repetir para X

2 at 5

Repetir para Y

2 at 20 passo PassoY

(X2 + Y2) / (Y2)


Escrever(X=, X, Y=, Y, F=, F)

1 "3

Fim Repetir

F (X 2 + Y 2)/(Y 2)
2

(2( 1 (1(
1

Fim Repetir
Fim

1 # 0 ++ 1

2#

2. Codificao em Visual Basic:


Private Sub CmdTabelarFuncao_Click()
Dim X As integer, Y as integer, PassoY as integer, F As double
LstNumeros.Clear
If OptPasso2.Value = True Then
PassoY = 2
Else
PassoY = 3
End If
For X = 2 To 5
For Y = 2 To 20 Step PassoY
F = (X^2 + Y^2) / (Y^2)
LstFuncao.AddItem str(X) &

& str(Y) &

& str(F)

Next Y
Next X

End Sub

Visual Basic

30

Captulo 7

Estruturas de Repetio Embutidas I

Exerccios Propostos
7.2 Na qualificao, para uma determinada prova automobilstica, participam um conjunto de
concorrentes (numerados de 1 a n). Cada concorrente d 6 voltas ao circuito, com o objectivo de
fazer o melhor tempo possvel em qualquer uma das voltas. A grelha de partida ser posteriormente
elaborada, tendo por base o menor tempo realizado por cada concorrente.
Crie um programa em Visual Basic, cuja interface sugerida na figura abaixo apresentada, que leia
para cada concorrente, o tempo efectuado (em segundos) em cada uma das seis voltas. O nmero
total de concorrentes definido pelo utilizador na caixa de texto intitulada N. de Concorrentes.
No final, pretende-se que seja apresentado o pior tempo, assim como, o nmero do concorrente que
o realizou, uma vez que este ser desclassificado.

7.3 A administrao de um casino pretende simular informaticamente o funcionamento de uma das suas
slot machines, para efeitos estatsticos. Fisicamente, esta constituida por 3 roldanas, cada uma
com nmeros entre 0 e 9. Um jogador s ganha, quando os nmeros nas 3 roldanas forem iguais.
Elabore um programa em Visual Basic que permita simular um certo nmero de jogos, a definir pelo
utilizador. Cada jogo constitudo por tantas tentativas quanto as necessrias para se obter 3
nmeros iguais. Cada tentativa consiste na gerao de 3 nmeros aleatrios.
Pretende-se que o programa apresente:

Para cada jogo, o nmero de tentativas que o programa teve que efectuar at acertar,
representando os resultados numa caixa de listagem;

A mdia das tentativas por jogo at conseguir um acerto, obtida ao longo dos vrios jogos.
(continua)

Visual Basic

31

Captulo 7

Estruturas de Repetio Embutidas I

Para interface sugere-se o seguinte modelo:

Exerccios Suplementares
7.4 Uma instituio bancria possibilita aos seus clientes a constituio de um depsito a prazo que
vence juros dirios em funo do montante depositado, de acordo com o especificado na seguinte
tabela:
Montante Depositado
valor < 500 contos
500 valor < 2000 contos
2000 valor < 5000 contos
valor 5000 contos

Taxa de Juro (diria)


0.003%
0.007%
0.01%
0.02%

Elabore um programa em Visual Basic que simule a evoluo de um dado depsito ao longo de N
anos. Pretende-se que este apresente o saldo da conta no final de cada ano. Para a interface
sugere-se o modelo seguinte.

Nota: Considere que um ano sempre composto por 365 dias.


7.5 Elabore um programa em Visual Basic que permita listar todos os nmeros primos que se
encontram num dado intervalo definido pelo utilizador. Como modelo a considerar, sugere-se a
seguinte interface:

Visual Basic

32

Captulo 8

Estruturas de Repetio Embutidas II

!
Exerccio Resolvido
8.1 A Federao de Golfe decidiu adquirir um programa em Visual Basic de modo a facilitar-lhes o
processamento dos dados durante as diversas provas realizadas e que lhes permita:

Ler o nmero N de buracos da prova;

Ler o nome dos participantes, assim como, o total de tacadas que cada atleta necessitou
para cada um dos N buracos existentes na prova. A introduo de dados deve terminar
quando for digitado FFF;

Mostrar o nome do vencedor da prova (atleta que obteve o menor nmero de tacadas no
total dos N buracos).

Para a interface sugere-se o seguinte modelo:

Programao do Boto Iniciar:


1. Algoritmo (Pseudo-cdigo e Fluxograma):
Incio
Escrever( Introduza o n de buracos)
Ler(N)
Menor
5000
Vencedor

Escrever( Indique o nome do jogador)


Ler(Nome)
Repetir At Nome = FFF
TotTacadas

Repetir Para Buraco


1 At N
Escrever( Indique o nmero de tacadas no buraco n , Buraco)
Ler(Tacadas)
TotTacadas
TotTacadas + Tacadas
Fim Repetir
Se TotTacadas < Menor Ento
Menor
TotTacadas
Vencedor
Nome
Fim Se
Escrever( Indique o nome do jogador)
Ler(Nome)
Fim Repetir
Escrever(O vencedor , Vencedor)
Fim
Visual Basic

33

Captulo 8

Visual Basic

Estruturas de Repetio Embutidas II

34

Captulo 8

2.

Estruturas de Repetio Embutidas II

Codificao em Visual Basic:

Private Sub CmdIniciar_Click()


Dim N as integer, Menor as integer, TotTacadas as integer, Tacadas as integer
Dim Buraco as integer, Nome as string, Vencedor as string
N = val(TxtN.Text)
Menor = 5000
Vencedor =
Nome = inputBox (Introduza o nome dum jogador: , Introduo de Dados)
Nome = format(Nome , >)
Do Until Nome = FFF
TotTacadas = 0
For Buraco = 1 To N
tacadas = val(inputBox(Introduza o n de tacadas no buraco & str(buraco), Introduo de Dados))
TotTacadas = TotTacadas + Tacadas
Next Buraco
If TotTacadas < Menor Then
Menor = TotTacadas
Vencedor = Nome
End If
Nome = inputBox (Introduza o nome dum jogador: , Introduo de Dados)
Nome = format(Nome , >)
Loop
lblVencedor.Caption = Vencedor
End Sub

Exerccios Propostos
8.2 Uma livraria pretende adquirir uma aplicao desenvolvida em Visual Basic que lhes possibilite
consultar rapidamente a quantidade de livros por editora que existem em stock na firma. Sabendo
que a mesma editora pode ter editado livros em vrios reas, elabore um programa que lhes
permita:

Ler o total de reas existentes actualmente na loja;

Ler, para cada editora, o seu nome e o nmero de livros por rea. A leitura dos nomes das
editoras deve terminar quando for lido o nome TT;

Apresentar numa lista a quantidade de livros existentes por editora;


(continua)

Visual Basic

35

Captulo 8

Estruturas de Repetio Embutidas II


Apresentar no final a editora com maior quantidade de livros em stock.

Para a interface sugere-se o seguinte modelo:

8.3 Num supermercado de uma cooperativa est a decorrer uma promoo cujo objectivo premiar os
scios que ultrapassem os 75,00 em compras atravs da oferta de um vale de desconto. Elabore
um programa em Visual Basic que:

Leia o nmero de cada scio, assim como, o preo de cada produto que o mesmo adquiriu.
A introduo de dados relativos aos bens adquiridos deve terminar quando for introduzido o
preo 0 (zero) num artigo, e o atendimento dos scios terminar quando for introduzido o
nmero 999;

Apresente o total de vales oferecidos;

Mostre o nmero de clientes atendidos.

Para a interface sugere-se o seguinte modelo:

Visual Basic

36

Captulo 8

Estruturas de Repetio Embutidas II

Exerccio Suplementar
8.4 A Federao de Atletismo pretende comprar uma aplicao que lhes permita gerir mais facilmente
os resultados obtidos pelos atletas participantes na prova do Pentatlo (composta por 5 provas
distintas). Elabore um programa em Visual Basic que:

Leia o nome e o nmero de pontos conseguidos por cada atleta em cada uma das 5 provas.
A introduo de dados deve terminar quando for digitado o nome FFF.

Apresente o nome do vencedor e o total de pontos obtidos (maior nmero de pontos).

Visual Basic

37

Anexos

"

Fluxogramas

"%

& $ '

Smbolo

Funo
Incio / Fim

Entrada

Processamento

Deciso

Sada

Conector

Fluxo de dados

Visual Basic

38

Anexos

"%

Visual Basic O Fundamental da Matria Abordada

'

Tipo
Operadores

) * '

Operao

+, -, *, /, resto, divInt

Casos

Exponenciao

> < =

Entrada
Sada

Seleco de
Alternativas

Estruturas
de
Repetio
(Ciclos)

Funes

e , ou , no
&
ler ...
escrever ...
mostrar ...
se condio ento
aco
fim se
se condio ento
aco
seno
aco
fim se
repetir para c incio at fim [passo n]
aco
fim repetir
repetir enquanto condio
aco
fim repetir
repetir
aco
enquanto condio
repetir at condio
aco
fim repetir
repetir
aco
at condio
seno(x), cos(x), tg(x)
comp(st)
aleatorio()
val(st)
int(x)

Outros

Variveis

Visual Basic

razQ(x)
Incio
Fim
Verdadeiro, Falso
Def
[ .. ]

Observaes
Atribuio

... valor
... valor
... mensagem
... imagem

Concatenao de strings
Ex: ler(x, y, p)
Ex: escrever(Pares=, p)

Passo opcional no caso


de ser +1

Devolve o n de carateres
de st
Gera nmero aleatrio
real no intervalo [0 ; 1[
Converte em numrico os
carateres de st reconhecidos como tal.
Devolve a parte inteira de
X
Raz quadrada
Incio do algoritmo
Fim do algoritmo
Declarao de dados
Comentrio
Nomes
devem
ser
significativos

39

Anexos

"%

Visual Basic O Fundamental da Matria Abordada

)- &

OBJECTOS

Forms

Controls
Label
TextBox
Command Button
PictureBox
Frame
Option Button
Check Box
ListBox

Propriedades Utilizadas
Name
Alignment
Border Style
Caption
Column
Font
Height
List
MaxLength
Text
Value
Visible
Width

EVENTOS

Click

(continua)
Visual Basic

40

Anexos

Visual Basic O Fundamental da Matria Abordada

CDIGO

Tipo de Dados
Integer

Simples:
Indexados:

Long

Single

Double

Array( n_de_elementos )

Boolean

String

Array( n_de_linhas , n_de_colunas )

Variveis
Simples:

Dim

Nome

. .

Indexadas:

Dim

Nome_do_vector( n_elementos) As . .

Dim

Nome_da_matriz( n_de_linhas, n_de_colunas) As . .

As

Contantes
Const Nome As . .

Funes Standard
Abs( )

Cos( )

Exp( )

Fix( )

Format( )

InputBox( )

Int( )

Len( )

Log( )

MsgBox( )

Randomize

Rnd( )

Sin( )

Sqr( )

Str( )

Tan( )

Val( )

Operadores
Atribuio:

Comparao:

>

<

>=

<=

<>

Aritmticos:

Concatenao:

&
Or

Not

Lgicos:

And

Mod

Estruturas de Deciso ( simples / embutidas )


If . . Then
If . . Then . . Else
If . . Then . . ElseIf
End If

Estrututras Repetitivas - Ciclos ( simples / embutidas )


Contados:
For . . Next

Condicionais (Ciclos controlados por Contador ou por Sentinela):

Visual Basic

Do While . . Loop

ou

Do . . Loop While

Do Until . . Loop

ou

Do . . Loop Until

41

Anexos

"%

Visual Basic Mensagens de Erro mais Comuns

Mensagens de Erro
Block If without End If

).

'
Significado
Block If sem End If

Motivo
Intruo If que no se encontra
convenientemente terminada com End
If. No foi respeitada a sintaxe:
If

condio(es) Then
Bloco de Instrues
[ Else
Bloco de Instrues ]
End If
Division by zero

Diviso por zero

Diviso real ou inteira pelo valor zero.

Do without Loop

Do sem Loop

Instruo Do {While | Until} no se


encontra convenientemente terminada
com
Loop. No foi respeitada a
sintaxe:
Do { While | Until } Condio(es)
Bloco de Instrues
Loop

Else without If

Else sem If

Clusula Else sem correspondncia


com qualquer If anterior.

End If without block If

End If sem block If

End If que no pertence a qualquer


bloco If anterior.

For without Next

For sem Next

Instruo For que no se encontra


convenientemente terminada com Next.
No foi respeitada a sintaxe:
For var = inicio To fim [Step Inc]
Bloco de Instrues
Next [var]

Invalid Next control


variable reference

Referncia invlida
varivel de controlo do
Next

A varivel de controlo de ciclo no a


mesma nas instrues For e Next.

Loop without Do

Loop sem Do

Instruo Loop sem o correspondente


Do.
Normalmente este erro causado por
no se ter terminado uma outra
estrutura de controlo (condicional ou
repetitiva) imbricada naquela.

Next without For

Next sem For

Instruo Next sem o correspondente


For.
Normalmente este erro causado por
no se ter terminado uma outra
estrutura de controlo (condicional ou
repetitiva) imbricada naquela.
(continua)

Visual Basic

42

Anexos

Visual Basic Mensagens de Erro mais Comuns

Object required

Objecto obrigatrio

Utilizao duma propriedade num


controlo cujo nome desconhecido
pelo Visual Basic.

Overflow

Valor no suportado

Valor que no susceptvel de ser


suportado pelo tipo de dados da
varivel. Este gnero de erro ocorre
quando por exemplo, se tenta
armazenar um valor superior a 32767
numa varivel do tipo Integer.

Type mismatch

Tipos incompatveis

Operao que envolve tipos de dados


Incompatveis. Este gnero de erro
ocorre por exemplo, quando se tenta
efectuar uma operao aritmtica com
uma varivel no numrica.

Variable not defined

Varivel no definida

A varivel em questo no foi


devidamente declarada atravs de uma
instruo Dim.
No existe qualquer controlo com nome
igual aquele que foi introduzido na
janela de cdigo.

Visual Basic

43