Escolar Documentos
Profissional Documentos
Cultura Documentos
2 A Programao Bsica
2.1 A Entrada de Dados
Para um computador poder cumprir as ordens que um programador criou, ele
precisa conhecer algumas informaes iniciais. Assim como o ensinamento de uma criana
nos princpios dos primeiros passos, onde um adulto precisa orientar e direcion-la, um
programa de computador precisa receber do usurio informaes iniciais conhecidas como
entrada de dados.
fundamental que o programador tenha conscincia que o usurio na maioria das
vezes quer uma resposta rpida para o tipo de processo que est trabalhando. Sendo assim,
um programa de computador que necessita de entrada de dados externos, no pode de
maneira alguma pedir grandes quantidades de informaes iniciais. O melhor programa
aquele que necessita de uma quantidade mnima de informaes externas para seu
funcionamento.
Um algoritmo como uma receita de bolo, isso foi que me ensinaram no tempo de
graduao. O nome da receita o nome do programa. Os ingredientes so as definies dos
tipos de variveis que o programador vai usar. E o algoritmo em si, a forma como o bolo
ser feito.
Figura 2.1 - Equivalncia Receita de bolo e algoritmo
20
Desde os primrdios dos tempos de tecnologia de programao, um programa de
computador precisa passar por algumas seqncias de avaliaes. O editor de texto onde
o usurio escreve o que ele deseja que o computador realize. Depois de escrever o
programa, para que o mesmo converse com o computador, no pode haver erros na
colocao das regras dentro da linguagem escolhida. Para isso as averiguaes de
inconsistncias entre o que o programador deseja e o que ele pode usar naquela linguagem
escolhida realizada pelo compilador. Caso haja alguma inconsistncia entre o programa
escrito e a notao dos smbolos e regras permitidas pela linguagem, uma mensagem de
erro enviada pelo compilador.
A ltima fase o processo de linkagem realizada pelo linkador que vai atrelar ao
programa todas as bibliotecas de funes que o programa poder acessar. Exemplo: a
impresso de um grfico precisa de uma rotina da linguagem que permita a impresso. Se a
linguagem no tem essa rotina ou funo que permita o programa imprimir um grfico ou
imagem, o programa no poder realizar a tarefa e uma mensagem de erro ser emitida para
o usurio.
Todos esses alertas podem deixar o leitor iniciante confortvel, achando que seus
erros sero alertados pelo computador. No, infelizmente o pior dos erros nunca alertado
pelo computador. O erro lgico de pensamento do programador nunca encontrado pelo
computador. Exemplo: se o programador enviou uma ordem para que o computador fazer a
operao 2 +3 =4, se a regra de soma estiver de acordo com as permisses da linguagem,
o computador vai enviar ao usurio a mensagem que dois mais trs quatro e no cinco. O
problema que o computador recebeu uma ordem lgica errada, mas com comandos certos.
Assim, caro leitor, lembre-se que seus erros de programao somente um ser humano
poder encontrar ( no VBA-Excel pelo menos ).
Figura 2.2- O processo de programao
No entanto, no VBA-Excel esse processo muito rpido e o leitor nem perceber
qual dos processos est ocorrendo. Nos primrdios dos primeiros computadores linguagens
as vezes demoravam minutos e at horas para compilar e mais ou menos o mesmo tempo
para linkar. Exemplo disso a linguagem cientifica que dominou o mundo acadmico at a
dcada de 1990, o FORTRAN, onde os compiladores eram programas externos a
linguagem e os linkadores tambm. Para a execuo de um programa, o programador tinha
que esperar bastante tempo e torcer para no acusar erros em sua programao.
21
Figura 2.3- Acessando o Visual Basic da planilha do Excel
No caso do VBA-Excel, o ambiente de programao das macros se encontra no
caminho ferramentas macros editor do visual basic. Ento aparecer a tela de
programao ainda vazia com tela a esquerda mostrando a raiz e as planilhas contidas no
arquivo em Excel (janela do project explorer) e a janela de propriedades que sero
exploradas nos captulos posteriores.
Clica-se ento no caminho ferramentas macros e ento ao abrir a nova tela de
nomes, coloca-se um nome para o programa (ver Figura 2.5). Ao clicar no boto criar
ser aberta a tela onde o programa dever ser escrito. nessa tela que comea toda a
programao dos algoritmos e ser nessa tela que o computador interpretar os comandos
do programador ( Figura 2.6).
22
Figura 2.4- Acessando o ambiente de macros
Figura 2.5- Escrevendo o nome do programa
23
Figura 2.6 Tela onde o algoritmo dever ser escrito.
Algumas observaes importantes devem ser feitas em relao ao nome do
programa e nomes de variveis. Tanto os nomes dos programas quanto de variveis devem
seguir a seguinte regra de nomeao:
No pode comear com NMERO
Exemplo: 1prog, 10xpe, 2123cal, 1aula,
=
=
i
i
r
R
33
Exemplo 2.9
{ Algoritmo da adivinhao}
1. Pea ao usurio para digitar a idade dele.
2. Mande uma mensagem para ele pensar num nmero diferente de zero.
3. Mande uma mensagem para ele multiplicar o nmero pensado por 2.
4. Mande ele somar mentalmente o nmero resultante pelo nmero 6.
5. Mande uma mensagem para ele dividir o resultado pelo nmero 2.
6. Envie uma mensagem para ele subtrair o resultado obtido do valor do primeiro
nmero pensado.
7. Mande a mensagem: O resultado 3
Por que esse algoritmo funciona e sempre fornece o resultado 3? Observe o que
acontece com a matemtica das operaes que est por trs da brincadeira desse algoritmo.
34
1. x =fornecido pelo usurio
2. y =2*x
3. y =y +6
4.
( )
3
2
6 * 2
2 / + =
+
= = x
x
y z
5. Resultado =z x =(x +3) x =3
ogo para qualquer nmero pensado o resultado sempre ser o nmero 3. O leitor deve
estar perguntando porque a varivel idade entrou no programa. Para nada! Ela apenas
entra para o usurio pensar que a idade tem alguma importncia no programa, mas na
verdade ela no usada.
2.3 A Lgica Condicional
Algoritmos onde se efetuam clculos so bastante parecidos com calculadoras
comuns e no demonstram todo o poder da computao na resoluo de problemas. A
figura de uma condio divisria de eventos na programao o que faz a lgica de um
algoritmo se aproximar da mente humana na resoluo de problemas.
Todas as linguagens de programao possuem a estrutura de desvio lgico de um
algoritmo. A funo para o desvio lgico no VBA a funo SE. Na planilha do Excel ela
aparece em lngua portuguesa e tem a caracterstica de colocaes das lgicas necessrias
no parntesis =SE(condio; verdade; falso). No caso da programao a funo If e tem a
estrutura
onde os comandos so lgicas operacionais do programa que estaro sujeitas a condio ser
verdadeira ou falsa depois do If. Se a condio for verdadeira ento a linha logo abaixo do
Then verdade e sero obedecidos esses comandos no programa. Caso seja falso depois do
Else entra os comandos para essa condio. A estrutura if-then-else tem um resultado lgico
binrio que divide o programa em ramos verdadeiros e falsos. Mas ateno todo if deve
terminar com um End If.
35
Exemplo 2.10
Fazer um algoritmo que leia um nmero inteiro. Se esse nmero for menor ou igual
do que 10 o programa envia uma mensagem ao usurio prejuzo. Caso contrrio mande
uma mensagem lucro.
Esse algoritmo desvia depois da leitura o programa para a linha abaixo depois do Then caso
o nmero fornecido pelo usurio seja menor que 10. Caso contrrio, o compilador manda o
programa pular todas as ordens at encontrar o comando Else onde ento executar esses
comandos at encontrar o End If.
Exemplo 2.11
Se uma conta bancria contm saldo inferior a R$10.000,00 o banco pagar juros
de 2% ao ms na remunerao da conta-poupana. Se o saldo for superior a R$10.000,00
o banco pagar juros de 3% ao ms. Fazer um programa onde o usurio entra com o saldo
de sua conta bancria e o programa informa o saldo corrigido.
36
O resultado ser
Muitas vezes necessrio encadear muitos if para traduzir o pensamento lgico
desejado na soluo de um problema. Alm da estrutura if-then-else existe a possibilidade
do uso do elseif que significa caso contrrio se. Esse comando lgico deve ser usado
quando indicado ao computador que ao negar uma afirmao ele o faa em troca de outra
pergunta lgica. Isso no significa que sempre que ocorrer uma falsidade na afirmao
deve-se utilizar o comando elseif. s vezes o uso de vrios if um aps o outro pode
resolver o problema da mesma forma.
Exemplo 2.12
No exemplo 2.10, suponha agora que se a conta possuir saldo inferior a
R$10.000,00 o banco pagar juros de 2%. Mas diferente do exemplo anterior, assuma
agora que para cada R$5.000,00 adicional acima de R$10.000,00 o banco pagar 0,5% a
mais at atingir a taxa limite de 4%. Fazer um programa para calcular quanto uma conta
bancria nessas condies ter no final do ms.
37
Algumas observaes importantes devem ser feitas a cerca desse exemplo com o
uso do elseif. Se o saldo for inferior a R$10.000,00 a taxa assumida ser de 0,02 que
corresponde a 2%. Mas caso contrrio, ou seja, se a taxa igual ou superior o computador
deve perguntar se ela menor que R$15.000,00. Ento a diferena entre um else e um elseif
que quando existe uma negao e o computador tem um elseif, ele no est somente
verificando a negao da condio anterior, mas tambm perguntando se com a primeira
negao a segunda condio satisfeita. Ento a parte do programa a seguir
tem o mesmo significado matemtico de um intervalo de validade, ou
000 . 15 000 . 10 < < saldo
Exerccio 2.13
Fazer um programa onde o computador leia um nmero inteiro fornecido pelo
usurio e envia uma mensagem se esse nmero par ou mpar.
Discusso da resoluo
Existem diversas maneiras de programar e pensar no algoritmo para resolver esse
simples problema. O primeiro recordar dos tempos colegiais como esto relacionados os
termos de uma diviso: divisor, dividendo, quociente e resto.
Dividendo Divisor
Quociente
Resto
A relao matemtica entre resto e os demais fatores
Quociente Divisor Dividendo resto * =
Ento o que se deve fazer primeiro fazer a diviso entre o nmero (dividendo)
pelo nmero 2 (divisor) e guardar o resultado numa varivel quociente. Definindo essa
varivel como inteira o resultado sempre ser truncado e inteiro. Ento se faz a subtrao
do nmero que o usurio entrou (dividendo) por duas vezes o quociente. Ento se usa a
regra lgica para perguntar se o resto zero ou no. Se for zero o computador envia uma
mensagem ao usurio dizendo que o nmero par, caso contrrio que o nmero impar. O
programa resolvido apresentado a seguir.
38
Uma outra forma de resolver esse problema fazendo o uso da funo mod que toda
linguagem de programao possui. Essa funo j fornece o resto da diviso entre dois
nmeros e sua utilizao segue a seguinte regra:
x =num1 mod num2
e o resultado para x ser o resto da diviso de num1 por num2. Ento para o exemplo do
nmero par ou mpar o programa fica como a seguir.
A ltima soluo apresentada a mais simples de todas. Para saber se o nmero
par ou mpar basta usar a regra matemtica da potenciao do nmero (-1). Ou seja, todo
nmero negativo elevado a nmero par ser positivo e elevado a mpar ser negativo. Ento
basta programar uma condio lgica que verifica se o sinal dessa operao positivo ou
negativo. A soluo apresentada a seguir.
39
Nesse ponto o leitor pode ficar confuso e se perguntar sobre qual soluo a mais
correta?. A resposta que todas as formas so corretas desde que o resultado final seja
correto. Claro que existem algumas solues mais rebuscadas e confusas com passos a mais
que outras mais claras e objetivas. Esse tipo de anlise que faz a diferena num
programador, que se faz entender aos outros ou somente a si prprio em sua programao.
No entanto, sob o ponto de vista de anlise, se o programa solucionou o problema de forma
correta em todos os passos, tanto faz a forma de resolver. O diferencial que o melhor
programador se destaca perante aos outros se alm de mais elegante e simples seu programa
economizar memria, o que significa economizar energia e tempo dispensado no trabalho.
2.4 Exerccios
(1) Fazer um algoritmo e programa em VBA-Excel onde o usurio entra com um nmero e
o programa imprime uma mensagem dizendo se o nmero positivo ou negativo.
(2) Fazer um algoritmo e programa em VBA-Excel onde o usurio entra com 3 nmeros
usando InputBox e o programa calcula a mdia.
(3) Projetar um algoritmo onde o usurio entra com 3 nmeros usando InputBox e o
programa descobre e imprime uma mensagem dizendo qual o maior e qual o menor.
(4) Fazer um programa onde o usurio entra via InputBox com dois nmeros reais. Se os
dois nmeros forem iguais o programa deve enviar uma mensagem com o valor da soma de
outras duas variveis X =2 e Y=1 .Se os dois nmeros forem diferentes o programa deve
imprimir uma mensagem mostrando o valor da subtrao de X e Y.
40
(5) Dados 3 lados de um tringulo qualquer, fazer um programa onde ele descobre se o
tringulo eqiltero, isceles ou escaleno.
(6) Um comerciante deseja entrar com o valor de compra de uma mercadoria, o valor de
venda da mesma e descobrir se o lucro foi <10%, entre 10% e 20%, ou ainda superior a
20%. Fazer um programa que imprima a mensagem dizendo em qual faixa a mercadoria do
comerciante se localiza.
(8) A frmula de converso de graus Farenheit para centgrados obtida por
9
) 32 ( 5
=
F
C
Fazer um algoritmo e programa em VBA-Excel onde o usurio entra com o grau F
(Farenheit) e o programa mostra o valor em centgrados.
(9) Fazer um programa onde o usurio entra com dois nmeros e programa imprime uma
mensagem dizendo quantos % o primeiro menor que o segundo, ou caso contrrio,
quantos % o primeiro maior que o segundo.
(10) Lembrar do programa do retorno mdio da aula. Fazer um programa onde no mais os
eventos tem mesma probabilidade de ocorrer. Ou seja, suponha o caso onde
Retorno Probabilidade Evento
12 0,5 1
9 0,4 2
6 0,1 3
Quais so as entradas. Quais so as sadas. Programar novamente o algoritmo levando em
conta que as probabilidades dos eventos so diferentes.
(11) Fazer um programa onde o usurio entra com 03 nmeros x1, x2 e x3 e o programa
mostra numa MsgBox o valor da media dos nmeros e em outra MsgBox o valor do desvio
padro.
(12) Fazer um programa onde o usurio entra com os limites de um intervalo (inferior e
superior) e logo em seguida o computador pede um nmero qualquer a esse usurio. Se o
nmero pertence ao intervalo do usurio o programa manda uma mensagem pertence
caso contrrio uma mensagem no pertence.
Exemplo: Liminf=10
Limsup =20
Num =15 ---- pertence
Num =25 ----- no pertence
41
(13) O suporte de uma ao calculado como 30% do intervalo histrico de uma ao
(mximo subtrado do mnimo). A resistncia calculada como o valor de 60% do intervalo
histrico. Veja o exemplo:
Baixa histrica: 1,50
Alta histrica: 2,20
Suporte: 1,5 +(2,20-1,50)*0,3
Resistncia: 1,5 +(2,20 1,5)*0,6
Faa um programa onde o usurio fornea o valor mais baixo historicamente e o
valor mais alto e o programa diz qual o suporte e qual a resistncia.
(14) Considere uma equao do segundo grau
0
2
= + + C Bx Ax
Utilizando-se da varivel AC B DELTA 4
2
= escreva uma macro que calcule as
razes da equao tal que:
(i) Se no houver razes (DELTA<0) o programa retorna a mensagem no existem
razes reais.
(ii) Se houver uma nica raiz (DELTA =0) o programa mostra ao usurio a nica
raiz calculada como
X1 =-B / (2*a)
(iii) Se houver duas razes mostre ao usurio calculando-as da forma:
X1 =( -B +Sqr(DELTA) ) / ( 2*A )
X2 =( -B - Sqr(DELTA) ) / ( 2*A )
Onde Sqr a funo do VBA para calcular a raiz quadrada de um nmero real.
(15) Fazer um programa que leia um nmero. Se o valor for negativo, inverter-lhe o sinal.
Em qualquer caso, imprimir a raiz quadrada do nmero resultante.
(16) Em uma disciplina, a nota final calculada pela mdia ponderada das trs notas do
semestre: trabalho, prova escrita e laboratrio. O peso das notas na mdia ,
respectivamente 2, 5 e 3. As notas variam de 0 a 10 e o aluno considerado aprovado se a
nota final for maior ou igual a 6. Elaborar um programa para calcular a nota final de um
aluno e enviar uma mensagem se ele foi aprovado ou no.
(17) Fazer um programa para ler trs valores {A, B,C}. Se A +B for menor do que C,
enviar a mensagem dados errados. Caso contrrio, enviar a mensagem dados corretos.
(18) Fazer um programa para ler dois nmeros inteiros A e B. Se A =B, atribuir para uma
varivel X o valor 1.5 e para uma varivel Y o valor 2.5. Caso contrrio, atribuir os valores
-1.5 e -2.5. Em todos os casos, imprimir os valores de X e Y.
42
(19) Fazer um programa para ler trs valores inteiros, A, B e C. Enviar uma mensagem de
qual deles o menor nmero.
(20) A tabela abaixo fornece os descontos de uma compra. Fazer um programa que leia o
valor de uma compra, determine o desconto a ser aplicado e calcule o valor a ser pago pelo
cliente.
Tabela:
Valor da Compra (R$) Desconto (%)
Entre 0 e 20,00 5
Entre 21 e 50 10
Entre 51 e 100 15
Entre 101 e 1000 20
Maior que 1000 30
(21) Escreva um programa para ler um valor de um ngulo em graus, converter esse valor
em radianos e enviar o valor em uma mensagem para o usurio.
(22) Dados trs pontos (x1,y1), (x2,y2) e (x3,y3), escrever um programa para verificar se
esses pontos esto alinhados. A condio de alinhamentos de trs pontos :
3 2
3 2
1 3
1 3
x x
y y
x x
y y