1
Entradas e Saídas __________________________________________________1
2
Estruturas de Selecção Simples________________________________________8
3
Estruturas de Selecção Embutidas_____________________________________12
4
Estruturas de Repetição Condicionais Simples I __________________________17
5
Estruturas de Repetição Condicionais Simples II __________________________21
6
Estruturas de Repetição Contadas Simples ______________________________25
7
Estruturas de Repetição Embutidas I ___________________________________29
8
Estruturas de Repetição Embutidas II __________________________________33
9
Anexos __________________________________________________________38
Capítulo 1
Entradas e Saídas
Exercícios 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 botão 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 botões
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
Programação do Botão Escrever:
1. Algoritmo (Fluxograma e Pseudo-código):
Início
Escrever(“Este é o meu primeiro programa em VB”)
Fim
Visual Basic
1
Capítulo 1
Entradas e Saídas
2. Codificação em Visual Basic:
Private Sub CmdEscrever_Click()
LblMsg.Caption = “Este é o meu primeiro programa em VB”
End Sub
Programação do Botão Apagar:
1. Algoritmo (Fluxograma e Pseudo-código):
Início
Escrever(“”)
Fim
2. Codificação em Visual Basic:
Private Sub CmdApagar_Click()
LblMsg.Caption = “”
End Sub
Programação do Botão Sair:
1. Algoritmo (Fluxograma e Pseudo-código):
Início
Terminar
Fim
2. Codificação em Visual Basic:
Private Sub CmdSair_Click()
End
End Sub
Visual Basic
2
Capítulo 1
Entradas e Saídas
1.2 Elabore um programa em Visual Basic que permita efectuar a conversão de graus centígrados (C)
para graus fahrenheit (F), sabendo que a fórmula de conversão é a seguinte: F = 1.8*C + 32.
Sugere-se o seguinte modelo para a interface:
Objecto
Propriedade
Valor
Form1
Caption
Name
Conversões Centigrados – Fahrenheit
FrmConverte
Label1
Caption
Font
Centígrados
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
Programação do Botão Converter:
1. Algoritmo (Fluxograma e Pseudo-código):
Início
[ Leitura de Dados ]
Escrever(“Indique os graus centígrados”)
Ler(Centig)
[ Processamento ]
Fahr
Centig * 1.8 + 32
[ Saída de Resultados ]
Escrever(“Fahrenheit=”, Fahr)
Fim
Visual Basic
3
Capítulo 1
Entradas e Saídas
2. Codificação 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
Exercícios Propostos
1.3 Elaborar uma aplicação em Visual Basic que permita estimar o custo de combustível que gastará
um automóvel numa dada viagem de N Km, sabendo o preço por litro do combustível usado e o
consumo do automóvel 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
Preço do Combustível (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 Automóvel (Litros/100 Km):
Ms Sans Serif; Bold; 10
Text2
Alignment
Font
Name
Text
1 – Right Justify
Ms Sans Serif; Bold; 12
TxtConsumo100
(vazio)
4
Capítulo 1
Entradas e Saídas
Label3
Caption
Font
Distância 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 operações aritméticas elementares
entre dois números: adição, subtracção, multiplicação e divisão real. O programa deve ainda
apresentar o sinal aritmético entre os dois operandos, reflectindo a operação realizada.
Visual Basic
Objecto
Propriedade
Valor
Form1
Caption
Name
Operações Aritméticas
FrmOperAritm
Text1
Alignment
Name
Text
1 - Rigth Justify
TxtNumero1
(vazio)
5
Capítulo 1
Entradas e Saídas
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
Exercício Suplementar
1.5 Elabore um programa em Visual Basic para calcular a área de um polígono regular (A) (ver figura
abaixo), que é dada pela seguinte fórmula:
A=
o
360
2
R sen (
),
2
n
n
sendo n o número de lados e R o raio circunscrito.
Sugere-se a interface seguinte, em que a figura do polígono é construída utilizando a ferramenta
line.
Visual Basic
Objecto
Propriedade
Valor
Form1
Caption
Name
Área de Polígonos Regulares
FrmAreaPoligReg
6
Capítulo 1
Visual Basic
Entradas e Saídas
Label1
Caption
Número 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
7
Capítulo 2
Estruturas de Selecção Simples
Exercício Resolvido
2.1 Elabore um jogo em Visual Basic chamado Sete da Sorte. O jogo consiste na geração aleatória de
um número inteiro entre 0 e 9, inclusivé, e o jogador só ganha se sair o número 7. Para a interface
sugere-se o seguinte modelo:
Depois do utilizador accionar o botão Iniciar, o programa deve gerar aleatoriamente um número
[ ]
inteiro pertencente ao intervalo 0, 9 . Se o número gerado for 7, deve ser apresentada uma
imagem com moedas, senão, deve ser apresentada a mensagem “Tente Outra Vez …”
Programação do Botão Iniciar:
1. Algoritmo (Fluxograma e Pseudo-código):
Início
N
int (aleatorio() * 10)
Escrever(N)
Se N=7 Então
Mostrar(imagem)
Senão
Escrever(“Tente Outra Vez ...”)
Fim Se
Fim
Visual Basic
8
Capítulo 2
Estruturas de Selecção Simples
2. Codificação 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
Exercícios Propostos
2.2
Escreva um programa em Visual Basic para calcular o imposto automóvel (IA) aplicado aos
veículos 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 veículo 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
9
Capítulo 2
Estruturas de Selecção Simples
2.3 Crie uma nova versão do exercício 2.1, em que são gerados aleatoriamente 3 números 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 página 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
Capítulo 2
Estruturas de Selecção Simples
Exercício Suplementar
2.5 Elabore um programa em Visual Basic para auxiliar a contabilidade duma empresa a calcular o
vencimento dum empregado. O cálculo é baseado no número de horas que trabalhou e no seu
salário por hora. Para além 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 Operações Aritméticas (exercício 1.4) gera um erro de execução na operação de
divisão, quando é introduzido um divisor igual a zero. Trata-se de uma situação indesejável, e como
tal, altere o programa para que em tais circunstâncias, em vez de gerar o erro de execução, o
programa mostre ao utilizador uma informação apropriada numa caixa de mensagem. Deve ainda
acrescentar ao programa as seguintes operações: exponenciação, divisão inteira e resto da divisão
inteira.
Visual Basic
11
Capítulo 3
Estruturas de Selecção Embutidas
Exercício Resolvido
3.1 Elabore um programa em Visual Basic para o auxiliar a cambiar Euros, sabendo que: €1 = 0.9796
Dólares (USA), €1 = 0.6274 Libras (GB) e €1 = 120.22 Ienes (Japão). O valor de câmbio 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:
Programação do Botão Cambiar:
1. Algoritmo (Fluxograma e Pseudo-código):
Visual Basic
12
Capítulo 3
Estruturas de Selecção Embutidas
Início
Escrever( “Indique o valor em euros a cambiar” )
Ler( Euros )
Escrever( “Indique a opção (Dólar, Libra ou Iene)” )
Ler( Opcao )
Se (Opcao = “Dolar”) Então
Cambio
Euros * 0.9796
Escrever( “Dólares= ”, Cambio )
Senão Se (Opcao = “Libra”) Então
Cambio
Euros * 0.6274
Escrever( “Libras= ”, Cambio)
Senão
Cambio
Euros * 120.22
Escrever( “Ienes= ”, Cambio )
Fim Se
Fim Se
Fim
2. Codificação 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 = "Dólares"
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
Capítulo 3
Estruturas de Selecção Embutidas
Exercício Proposto
3.2 Elabore um programa em Visual Basic que permita determinar o custo do combustível adquirido
numa gasolineira. Considere que os preços dos diversos combustíveis são os seguintes: gasolina s/
chumbo 95 octanas – 1.05 €, gasolina s/ chumbo 98 octanas – 1.15€ e gasóleo – 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:
Exercícios Suplementares
3.3 Elabore um programa em Visual Basic que determine se um dado ano é ou não bissexto. No caso
de não o ser, pretende-se que indique o(s) ano(s) bissexto(s) mais próximo(s). Como modelo,
apresenta-se a seguinte interface:
Visual Basic
14
Capítulo 3
Estruturas de Selecção 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 construídos usando a ferramenta line.
3.5 Elabore um programa em Visual Basic para determinar as soluções de uma equação do 2º grau
2
(ax +bx+c=0), reais ou complexas. As soluções devem apresentar, no máximo, 3 casas decimais.
Para a interface sugere -se o seguinte modelo:
Visual Basic
15
Capítulo 3
Estruturas de Selecção Embutidas
3.6 Elabore um programa em Visual Basic para auxiliar um aluno a determinar a nota final a uma
disciplina, cujo método de avaliação é o seguinte: a nota final tem duas componentes, teórica e
prática, e os seus pesos são respectivamente de 60 e 40 %. A nota teórica é dada pela média
aritmética das duas melhores classificações obtidas em 3 testes, e a nota prática é a classificação
de um trabalho laboratorial.
O programa tem de permitir ao utilizador introduzir as 4 notas obtidas, 3 teóricas e 1 prática, e tem
de validar todas as notas introduzidas, aceitando apenas valores numéricos entre 0 e 20, inclusivé.
No caso de serem introduzidas notas inválidas, 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
Capítulo 4
Estruturas de Repetição Condicionais Simples I
Exercício Resolvido
4.1 Elabore um programa em Visual Basic que gere números aleatórios inteiros no intervalo [1, 60], até
sair o número 11. O programa deve listar todos os números gerados (11 incluído) e apresentar o
total dos mesmos.
Para a interface sugere-se o seguinte modelo:
Programação do Botão Gerar:
1. Algoritmo (Fluxograma e Pseudo-código):
Início
Total
0
Repetir
N
Int(Aleatorio( ) * 60) + 1
Escrever(N)
Total
Total +1
Até N = 11
Escrever(“Total de Números=” , Total)
Fim
Visual Basic
17
Capítulo 4
Estruturas de Repetição Condicionais Simples I
2. Codificação 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
Exercícios Propostos
4.2 Elabore um programa em Visual Basic que gere números aleatórios inteiros, no intervalo [1, 200],
até sairem 10 números pares. O programa deve listar apenas os números 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 atribuição de lugares num avião. Ao ser
iniciado o Check-In, o funcionário deve introduzir para cada passageiro, através de uma inputbox, o
seu tipo de tarifa: 1 ou 2 (1ª ou 2ª classe). A seguir, o programa deve mostrar uma mensagem,
através de uma msgbox, com o número do lugar atribuído sabendo que:
•
aos bilhetes com a tarifa 1 são atribuídos os lugares com os números 1, 2, .., 10 e aos de
tarifa 2, os lugares com os números 11, 12, .., 94;
•
Visual Basic
A atribuição de lugares deve ser sequencial;
18
Capítulo 4
Estruturas de Repetição Condicionais Simples I
•
Em cada uma das classes não existem mais reservas que lugares disponíveis.
A introdução de dados deve terminar assim que se verifique uma das seguintes condições:
•
o número máximo de lugares é atingido (94);
•
O funcionário introduziu o valor 0 (fecho do Check-In).
No final, o programa deve apresentar o número de passageiros que fizeram o Check-In (no conjunto
das duas tarifas).
Para a interface sugere-se o seguinte modelo:
Exercícios Suplementares
4.4 Elabore um programa em Visual Basic que determine se um dado número inteiro positivo é ou não
primo. Considera-se que um número é primo quando apenas é divisível por si e pela unidade.
Para a interface sugere-se o seguinte modelo:
Visual Basic
19
Capítulo 4
Estruturas de Repetição 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 número que o computador gera aleatoriamente entre 0 e 100 ou 0 e
1000 de acordo com a opção que escolheu. Para cada palpite errado deve-lhe ser dada uma
indicação do género “Palpite Baixo” ou “Palpite Alto”. No final pretende-se que o programa
apresente o número de tentativas efectuadas até ter acertado no número mistério.
Considere o seguinte exemplo:
Visual Basic
20
Capítulo 5
Estruturas de Repetição Condicionais Simples II
Exercício Resolvido
5.1 Elabore um programa em Visual Basic que permita determinar a média de um conjunto de números
inteiros positivos. A introdução dos números deve ser realizada através de uma inputBox e só deve
terminar quando o utilizador introduzir um valor negativo. Pretende-se que o programa apresente a
média dos números (com 1 casa decimal) e a totalidade dos mesmos, conforme é ilustrado na
interface seguinte sugerida:
Programação do Botão Iniciar:
1. Algoritmo (Fluxograma e Pseudo-código):
!
%
)
*+ ,
- *
!
!
#
#
%
)
*+ ,
- *
"
$ %
!
$'%
%
Visual Basic
.
&
($ %
+
(
21
Capítulo 5
Estruturas de Repetição Condicionais Simples II
Início
Soma
0
TotNum
0
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 Então
Media
Soma / TotNum
Escrever(“Média = ”, Media)
Fim Se
Escrever(“Total de números =” , TotNum)
Fim
2. Codificação 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 número inteiro:” , “Leitura de dados” ))
Do Until N<0
Soma = Soma + N
TotNum = TotNum + 1
N = val(inputbox ( “Introduza um número 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
Capítulo 5
Estruturas de Repetição Condicionais Simples II
Exercícios Propostos
5.2 Um fabricante de resistências eléctricas pretende uma aplicação informática para o ajudar a analisar
a qualidade de uma amostra de resistências de 25 / (valor nominal). Nesse sentido, elabore um
programa em Visual Basic que satisfaça os seguintes requisitos:
•
Leia o valor de cada uma das resistências da amostra. A leitura deve terminar quando for
lido um valor negativo.
•
Apresente o valor médio da amostra (com duas casas decimais) e a percentagem de
resistências 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 Introdução à Computação. A introdução dos dados deve ser feita utilizando
uma InputBox e terminar quando se digitar o nome ZZZ. Pretende-se ainda que o programa
apresente a média das notas e o nome e nota do melhor aluno.
Considere o seguinte exemplo:
Visual Basic
23
Capítulo 5
Estruturas de Repetição Condicionais Simples II
Exercícios 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 introdução dos pesos deverá ser feita utilizando uma InputBox e
terminar quando for digitado o valor 0 ou se tenha atingido um máximo de 6 pessoas ou a soma dos
pesos exceda os 450 Kgs. Nesta última situação deverá surgir uma caixa de diálogo com a
mensagem “Peso Excessivo”.
Como modelo sugere-se a interface seguinte.
5.5 Elabore um programa em Visual Basic que permita determinar o máximo divisor comum entre dois
números inteiros positivos. Como modelo sugere-se a seguinte interface:
5.6 Elabore um programa em Visual Basic para mostrar o número mínimo de termos necessários para
que o valor da série S =
1
3
+
3
3
+
5
3
+
7
3
+ ... , seja superior a 10,
20 ou 30, consoante a escolha feita pelo utilizador. Para além
desse valor, o programa também tem de apresentar o valor da
série com esse número mínimo de termos.
Para a interface sugere-se o modelo apresentado ao lado.
Visual Basic
24
Capítulo 6
Estruturas de Repetição Contadas Simples
Exercício Resolvido
6.1 Elabore um programa em Visual Basic para gerar 10 números aleatórios inteiros pertencentes ao
[
]
intervalo 1, 50 . Para a interface sugere-se o seguinte modelo:
Programação do Botão Mostrar:
1. Algoritmo (Fluxograma e Pseudo-código):
Início
Repetir Para C
N
1 até 10
int( aleatorio( ) * 50) + 1
Escrever(N)
Fim Repetir
Fim
2. Codificação 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
Capítulo 6
Estruturas de Repetição Contadas Simples
Exercícios Propostos
6.2 Elabore um programa em Visual Basic para listar a tabuada da multiplicação de um número 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 números inteiros entre -100 e 50. Para a
interface sugere-se o seguinte modelo:
6.4 Modifique o programa anterior para listar todos os números 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 geração aleatória de uma chave do totoloto. O
programa deve permitir ao utilizador que especifique o total de números ( [6,12] ) que a chave
deverá conter e ainda, como opção, que esses números sejam inferiores a 25 ( [1,24] ). No caso de
ser introduzido um total de números inválido, deve aparecer uma caixa de mensagem apropriada.
Como modelo, considere a interface apresentada na página seguinte.
Visual Basic
26
Capítulo 6
Estruturas de Repetição Contadas Simples
Exercícios Suplementares
6.6 Elabore um programa em Visual Basic para listagem dos números inteiros pares ou impares,
pertencentes a um dado intervalo (limites incluídos). Este intervalo deve ser definido pelo utilizador,
e no caso de serem fornecidos limites inválidos ( 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
Capítulo 6
Estruturas de Repetição Contadas Simples
6.7 Elabore um programa em Visual Basic que permita listar todos os números impares de um dado
intervalo (limites incluídos), ou então, apenas os ímpares que sejam divisíveis por três, ou por cinco,
ou simultaneamente por três e cinco, de acordo com as opções 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 série:
1+
1
2
+
1
3
+ ... +
1
N
O número de termos da série (N) deve ser fornecido pelo utilizador. Para valores de N inválidos, o
programa deve apresentar ao utilizador uma caixa de mensagem apropriada. O valor da série deve
apresentar, no máximo, quatro casas decimais. Para a interface sugere-se o seguinte modelo:
6.9 Modifique o programa anterior, para calcular o valor da seguinte série:
1+
1
3
+
1
5
+
1
7
+ ...
O número de termos da série também deve ser fornecido pelo utilizador.
Visual Basic
28
Capítulo 7
Estruturas de Repetição Embutidas I
Exercício Resolvido
7.1 Elabore um programa em Visual Basic que permita tabelar a seguinte função:
f(x, y) =
2
2
x +y
2
y
Os valores a assumir pela variável x são: 2, 3, 4 e 5.
Para cada valor de x, a variável y assumirá valores entre 2 e 20 com passo 2 ou 3, consoante a
escolha feita pelo utilizador através dos botões de opção apresentados no modelo de interface
proposto a seguir.
Exemplo: Caso seja escolhido o passo 3, os valores a assumir pelas variáveis x e y assim como
os diversos valores de f(x, y) serão:
x
y
f(x, y)
2
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
3
4
...
4
5
...
Visual Basic
29
Capítulo 7
Estruturas de Repetição Embutidas I
Programação do Botão Tabelar Função:
1. Algoritmo (Fluxograma e Pseudo-código):
%5
* ++ % + ,
+ % 1 3&6
0 ++ 1
2 3
Início
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
F
(X↑2 + Y↑2) / (Y↑2)
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#
2. Codificação 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
Capítulo 7
Estruturas de Repetição Embutidas I
Exercícios Propostos
7.2 Na qualificação, para uma determinada prova automobilística, 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 possível 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 número
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 número do concorrente que
o realizou, uma vez que este será desclassificado.
7.3 A administração de um casino pretende simular informaticamente o funcionamento de uma das suas
slot machines, para efeitos estatísticos. Fisicamente, esta é constituida por 3 roldanas, cada uma
com números entre 0 e 9. Um jogador só ganha, quando os números nas 3 roldanas forem iguais.
Elabore um programa em Visual Basic que permita simular um certo número de jogos, a definir pelo
utilizador. Cada jogo é constituído por tantas tentativas quanto as necessárias para se obter 3
números iguais. Cada tentativa consiste na geração de 3 números aleatórios.
Pretende-se que o programa apresente:
•
Para cada jogo, o número de tentativas que o programa teve que efectuar até acertar,
representando os resultados numa caixa de listagem;
•
A média das tentativas por jogo até conseguir um acerto, obtida ao longo dos vários jogos.
(continua)
Visual Basic
31
Capítulo 7
Estruturas de Repetição Embutidas I
Para interface sugere-se o seguinte modelo:
Exercícios Suplementares
7.4 Uma instituição bancária possibilita aos seus clientes a constituição de um depósito a prazo que
vence juros diários em função 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 (diária)
0.003%
0.007%
0.01%
0.02%
Elabore um programa em Visual Basic que simule a evolução de um dado depósito 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 números primos que se
encontram num dado intervalo definido pelo utilizador. Como modelo a considerar, sugere-se a
seguinte interface:
Visual Basic
32
Capítulo 8
Estruturas de Repetição Embutidas II
!
Exercício Resolvido
8.1 A Federação 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 número 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 introdução de dados deve terminar
quando for digitado FFF;
•
Mostrar o nome do vencedor da prova (atleta que obteve o menor número de tacadas no
total dos N buracos).
Para a interface sugere-se o seguinte modelo:
Programação do Botão Iniciar:
1. Algoritmo (Pseudo-código e Fluxograma):
Início
Escrever( “Introduza o nº de buracos”)
Ler(N)
Menor
5000
Vencedor
“”
Escrever( “Indique o nome do jogador”)
Ler(Nome)
Repetir Até Nome = “FFF”
TotTacadas
0
Repetir Para Buraco
1 Até N
Escrever( “Indique o número de tacadas no buraco nº ”, Buraco)
Ler(Tacadas)
TotTacadas
TotTacadas + Tacadas
Fim Repetir
Se TotTacadas < Menor Então
Menor
TotTacadas
Vencedor
Nome
Fim Se
Escrever( “Indique o nome do jogador”)
Ler(Nome)
Fim Repetir
Escrever(“O vencedor é ”, Vencedor)
Fim
Visual Basic
33
Capítulo 8
Visual Basic
Estruturas de Repetição Embutidas II
34
Capítulo 8
2.
Estruturas de Repetição Embutidas II
Codificação 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: ”, “Introdução 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), “Introdução de Dados”))
TotTacadas = TotTacadas + Tacadas
Next Buraco
If TotTacadas < Menor Then
Menor = TotTacadas
Vencedor = Nome
End If
Nome = inputBox (“Introduza o nome dum jogador: ”, “Introdução de Dados”)
Nome = format(Nome , “>”)
Loop
lblVencedor.Caption = Vencedor
End Sub
Exercícios Propostos
8.2 Uma livraria pretende adquirir uma aplicação 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 vários á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 número 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
Capítulo 8
•
Estruturas de Repetição 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 promoção cujo objectivo é premiar os
sócios que ultrapassem os 75,00€ em compras através da oferta de um vale de desconto. Elabore
um programa em Visual Basic que:
•
Leia o número de cada sócio, assim como, o preço de cada produto que o mesmo adquiriu.
A introdução de dados relativos aos bens adquiridos deve terminar quando for introduzido o
preço 0 (zero) num artigo, e o atendimento dos sócios terminará quando for introduzido o
número 999;
•
Apresente o total de vales oferecidos;
•
Mostre o número de clientes atendidos.
Para a interface sugere-se o seguinte modelo:
Visual Basic
36
Capítulo 8
Estruturas de Repetição Embutidas II
Exercício Suplementar
8.4 A Federação de Atletismo pretende comprar uma aplicação 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 número de pontos conseguidos por cada atleta em cada uma das 5 provas.
A introdução de dados deve terminar quando for digitado o nome FFF.
•
Apresente o nome do vencedor e o total de pontos obtidos (maior número de pontos).
Visual Basic
37
Anexos
"
#
Fluxogramas
$
"%
& $ '
Símbolo
Função
Início / Fim
Entrada
Processamento
Decisão
Saída
Conector
Fluxo de dados
Visual Basic
38
Anexos
"%
Visual Basic – O Fundamental da Matéria Abordada
'
Tipo
Operadores
(
) * '
Operação
←
+, -, *, /, resto, divInt
↑
Casos
Exponenciação
> < ≥ ≤ = ≠
Entrada
Saída
Selecção de
Alternativas
Estruturas
de
Repetição
(Ciclos)
Funções
e , ou , não
&
ler ...
escrever ...
mostrar ...
se condição então
acção
fim se
se condição então
acção
senão
acção
fim se
repetir para c ← início até fim [passo n]
acção
fim repetir
repetir enquanto condição
acção
fim repetir
repetir
acção
enquanto condição
repetir até condição
acção
fim repetir
repetir
acção
até condição
seno(x), cos(x), tg(x)
comp(st)
aleatorio()
val(st)
int(x)
Outros
Variáveis
Visual Basic
raízQ(x)
Início
Fim
Verdadeiro, Falso
Def
[ …….. ]
Observações
Atribuição
... valor
... valor
... “mensagem”
... imagem
Concatenação 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 número aleatório
real no intervalo [0 ; 1[
Converte em numérico os
carateres de st reconhecidos como tal.
Devolve a parte inteira de
X
Raíz quadrada
Início do algoritmo
Fim do algoritmo
Declaração de dados
Comentário
Nomes
devem
ser
significativos
39
Anexos
"%
Visual Basic – O Fundamental da Matéria 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 Matéria Abordada
CÓDIGO
•
Tipo de Dados
Integer
• Simples:
• Indexados:
•
•
Long
Single
Double
Array( nº_de_elementos )
Boolean
String
Array( nº_de_linhas , nº_de_colunas )
Variáveis
• 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 . .
•
•
Funções Standard
Abs( )
Cos( )
Exp( )
Fix( )
Format( )
InputBox( )
Int( )
Len( )
Log( )
MsgBox( )
Randomize
Rnd( )
Sin( )
Sqr( )
Str( )
Tan( )
Val( )
Operadores
Atribuição:
=
Comparação:
>
<
>=
<=
<>
Aritméticos:
+
-
*
/
\
Concatenação:
&
Or
Not
Lógicos:
•
And
^
Mod
Estruturas de Decisão ( 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
• Intrução If que não se encontra
convenientemente terminada com End
If. Não foi respeitada a sintaxe:
If
condição(ões) Then
Bloco de Instruções
[ Else
Bloco de Instruções ]
End If
Division by zero
Divisão por zero
• Divisão real ou inteira pelo valor zero.
Do without Loop
Do sem Loop
• Instrução Do {While | Until} não se
encontra convenientemente terminada
com
Loop. Não foi respeitada a
sintaxe:
Do { While | Until } Condição(ões)
Bloco de Instruções
Loop
Else without If
Else sem If
• Cláusula Else sem correspondência
com qualquer If anterior.
End If without block If
End If sem block If
• End If que não pertence a qualquer
bloco If anterior.
For without Next
For sem Next
• Instrução For que não se encontra
convenientemente terminada com Next.
Não foi respeitada a sintaxe:
For var = inicio To fim [Step Inc]
Bloco de Instruções
Next [var]
Invalid Next control
variable reference
Referência inválida à
variável de controlo do
Next
• A variável de controlo de ciclo não é a
mesma nas instruções For e Next.
Loop without Do
Loop sem Do
• Instrução Loop sem o correspondente
Do.
Normalmente este erro é causado por
não se ter terminado uma outra
estrutura de controlo (condicional ou
repetitiva) imbricada naquela.
Next without For
Next sem For
• Instrução Next sem o correspondente
For.
Normalmente este erro é causado por
não 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 obrigatório
• Utilização duma propriedade num
controlo cujo nome é desconhecido
pelo Visual Basic.
Overflow
Valor não suportado
• Valor que não é susceptível de ser
suportado pelo tipo de dados da
variável. Este género de erro ocorre
quando por exemplo, se tenta
armazenar um valor superior a 32767
numa variável do tipo Integer.
Type mismatch
Tipos incompatíveis
• Operação que envolve tipos de dados
Incompatíveis. Este género de erro
ocorre por exemplo, quando se tenta
efectuar uma operação aritmética com
uma variável não numérica.
Variable not defined
Variável não definida
• A variável em questão não foi
devidamente declarada através de uma
instrução Dim.
• Não existe qualquer controlo com nome
igual aquele que foi introduzido na
janela de código.
Visual Basic
43
Download

formato pdf - Departamento de Engenharia Informática