Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação de Computadores UNIDADE 3 1 PROGRAMAÇÃO DE COMPUTADORES COM VBA E C UNIDADE 3 Para início de conversa! Olá, aluno! Estamos iniciando a terceira unidade da nossa disciplina de Programação de Computadores com VBA e C, lembrando que o conteúdo já abordamos no vídeo de apresentação. Na unidade anterior, vimos os tipos de dados no VBA, operadores e principais funções matemáticas, usando macros no VBA e interface com o usuário e formulários. Vamos a VBA – parte 2. Antes de prosseguir com esse estudo, leia os capítulos 3 e 4 do livro texto da disciplina. Depois disso, volte a este ponto para continuar o estudo. Orientações da Disciplina Nesta unidade vamos aprender a usar estruturas de seleção e desenvolver instruções de múltipla escolha. Também vamos conhecer as estruturas de repetição com testes no início e no final do looping. Vamos aprender a utilizar os Loops DO-WHILE e DO-UNTIL no VBA e as estruturas de repetição com a variável de controle FOR NEXT, que equivalem às estruturas de repetição “Enquanto” e “Para “ do Visualg, que aprenderemos aqui. Vamos lá ? 2 ESTRUTURAS DE SELEÇÃO Guarde essa ideia! As estruturas de seleção permitem aos computadores tomarem decisões a partir de determinadas informações. É com estruturas de decisão que os computadores “pensam”, ou seja, decidem de acordo com alguma condição. Essa é uma característica que diferencia os computadores, por exemplo, das máquinas de calcular. Com essas estruturas, podemos agregar inteligência aos nossos programas de computadores. Sem dúvida, é absolutamente fundamental, extremamente importante entender as estruturas de seleção (ou estruturas de decisão). Para entender o que é uma estrutura de seleção, vamos fazer o seguinte: veremos na prática como funciona, inserindo código no Visualg. Mais à frente checaremos código no VBA. Exemplo! Vamos aprender da forma que já estamos fazendo: através de testes feitos com exemplos práticos. Para testar uma estrutura de seleção, insira o código abaixo no Visualg. algoritmo “estrutura seleção” var idade : inteiro inicio escreval(“informe a sua idade”) leia(idade) se idade >= 18 entao escreval(“é de maior”) senao escreval(“é de menor”) fimse fimalgoritmo 3 Atenção para os seguintes detalhes: Não use “ENTÃO”. Use “ENTAO”. O Visualg não permite o uso de acentos nos comandos, apenas entre aspas. Execute o algoritmo acima duas vezes. Na primeira, coloque a idade igual a 15. Na segunda, coloque a idade igual a 30. O que você percebeu? Que dependendo do valor que é inserido, o programa se comporta de uma forma ou de outra. É essa a essência da estrutura de seleção. Uma estrutura de seleção faz com que o computador “pense”, ou seja, ele se comporta realizando operações dependendo da informação que recebe, e toma decisões a partir dos dados que foram inseridos pelo usuário. Exemplo! Vamos agora ver mais um exemplo! ALGORITMO “ESTRUTURA SELEÇÃO2” var sexo : literal inicio escreval(“informe sexo m ou f”) leia(sexo) se sexo = “m” entao escreval(“masculino”) senao escreval(“feminino”) fimse fimalgoritmo 4 Toda estrutura de seleção trata de possíveis condições. Não há limite para essa quantidade de decisões, ou possibilidades. Se você tem 50 possibilidades, utilizará uma estrutura com 50 “SE”. Na vida real existem vários casos assim. Suponhamos o caso em que temos 3 possibilidades: Por exemplo, suponha que você possa usar os códigos “x”, “y” ou “z”, e qualquer código fora disso resulte em mensagem “código incorreto”. O algoritmo seria assim: ALGORITMO “ESTRUT.SELEÇÃO3” var codigo : literal inicio escreval(“informe codigo x, y ou z”) leia(codigo) se codigo = “x” entao escreval(“você informou o código X”) senao se codigo = “y” entao escreval(“você informou o código Y”) senao se codigo = “z” entao escreval(“você informou o código Z”) senao escreval(“código incorreto”) fimse fimse fimse fimalgoritmo Dica! Ou seja: com a estrutura de seleção, é possível testar várias condições, fazendo com que o computador responda de acordo com o dado que recebeu. Essas condições precisam ser bem especificadas, pois qualquer erro em uma delas fará com que o programa realize o que foi mandado, mesmo se a condição foi escrita com erro de lógica. Por isso é importante ter muito cuidado na hora de escrever as suas condições. Vimos, portanto, que nas estruturas de seleção sempre é possível escolher entre várias opções. 5 É assim que os programas funcionam. Nas estruturas de seleção você pode também usar estruturas encadeadas que tratam de assuntos diferentes. No algoritmo acima, tratamos sempre dos valores possíveis dos códigos, ou seja, várias possibilidades, mas sobre o mesmo assunto. Vamos ver agora outra forma de usar as estruturas de seleção, também baseada em exemplos comuns do dia a dia. Suponha que um algoritmo receba o nome, sexo e média de uma pessoa. Se ela for do sexo feminino, e tirar uma média acima de 7, o programa deve dizer que ela foi aprovada. Se a média for menor que 7, o programa deve dizer que foi reprovada. Se for do sexo masculino, deve dizer que foi aprovado se a média foi maior ou igual a 7 e reprovado se for menor. Ou seja, temos quatro possibilidades: aprovado, reprovado, aprovada e reprovada. Precisamos criar uma estrutura de seleção que reflita isso. Esse comportamento é assumido pelo programa abaixo, que você deve inserir no Visualg e testar : ALGORITMO “RESULTADO” VAR Nome, sexo: literal Media : real INICIO Escreval(“informe nome”) Leia(nome) Escreval(“informe sexo m ou f”) Leia(sexo) Escreval(“informe média entre zero ou 10”) Leia(media) Se sexo = “m” entao Se media >=7 entao Escreval(nome, “foi aprovado”) Senao Escreval(nome, “foi reprovado”) Fimse Senao Se media >=7 entao Escreval(nome, “foi aprovada”) Senao Escreval(nome, “foi reprovada”) Fimse Fimse FIMALGORITMO 6 Vamos analisar cada ponto do algoritmo acima! Primeiro, a parte de criação das variáveis: a variável NOME recebe letras, portanto é literal. A variável sexo também recebe letra, portanto também é literal. Como é do mesmo tipo que nome, essa variável pode ser declarada na mesma linha. Já a variável média recebe números reais, portanto é do tipo real. Já que sempre usamos a estrutura de entrada/processamento/saída, inicialmente vamos solicitar ao usuário que informe nome, depois informe sexo e por fim a média. Sempre usamos o comando “escreval” com uma mensagem antes do dado a ser recebido, pois assim o nosso usuário saberá qual dado está sendo solicitado. Depois dos dados terem sido recebidos, o programa tomará decisões e emitirá respostas dependendo dos dados que foram inseridos. No caso específico, a primeira pergunta é: qual a informação de sexo? Se sexo = “m”, então o programa fará a pergunta seguinte: “a média é maior ou igual a 7 ? “ se sim, o programa emitirá o nome da pessoa com a expressão “aprovado”. Se foi menor que 7, o programa emitirá o nome da pessoa seguido da expressão “reprovado”. Perceba que, em qualquer caso, como sexo é masculino então a expressão que o sistema emite também é masculina, ou seja, “aprovado” ou “reprovado’”. No outro caso, se sexo for igual a “f”, então o programa fará a pergunta seguinte: “a média é maior ou igual a 7? “se sim, o programa emitirá o nome da pessoa com a expressão “aprovada”. Se foi menor que 7, o programa emitirá o nome da pessoa seguido da expressão “reprovada”. Existe uma forma equivalente de fazer isso, apenas modificando a variável que será testada primeiro. No exemplo acima, testamos antes a informação de sexo. Dessa vez, testaremos antes a informação de média. Veja como fica o algoritmo abaixo após alterarmos a ordem dos comandos “SE”: ALGORITMO “RESULTADO” VAR Nome, sexo: literal Media : real INICIOEscreval(“informe nome”) Leia(nome) Escreval(“informe sexo m ou f”) Leia(sexo) Escreval(“informe média entre zero ou 10”) Leia(media) 7 Se media >=7 entao Se sexo = “m” entao Escreval(nome, “foi aprovado”) Senao Escreval(nome, “foi aprovada”) Fimse Senao Se sexo = “m” entao Escreval(nome, “foi reprovado”) Senao Escreval(nome, “foi reprovada”) Fimse Fimse FIMALGORITMO Execute esse programa no visualg e constate que, mesmo sendo escrito de forma diferente, ele faz a mesma coisa que o anterior. As respostas, para as entradas dadas pelo usuário, são rigorosamente as mesmas. Isso decorre do fato de que existem várias formas de escrever o mesmo algoritmo, obtendo resultados iguais. Podemos ver, com os exemplos acima, que o programa se comporta como queremos, emitindo a mensagem apropriada de acordo com os dados que recebeu. É muito importante salientar que somos nós que criamos os comandos dos programas, portanto, se houver um erro a responsabilidade não é do sistema, é nossa. Você, como bom programador, deve ter cuidado para utilizar a estrutura de seleção SE de forma adequada. Qualquer erro nessa construção pode gerar sérios problemas. Praticamente todas as linguagens de programação têm a sua estrutura SE...Então...Senão...Fimse. Com o VBA não é diferente, ou seja, também existe essa estrutura, que veremos mais adiante. Mas não é apenas utilizando SE que você pode utilizar estruturas de seleção. Também existe a estrutura “CASO”, Vamos ver isso agora! Já vimos que podemos utilizar o SE com várias opções, mas o trabalhando sobre o mesmo código. Esse tipo de SE é estrutura de seleção encadeada homogênea, do tipo se-senão-se. No caso que vamos tratar agora, como estamos falando de uma situação que envolve alternativas, existe uma estrutura específica e mais prática para estas situações: a seleção de múltipla escolha. 8 Exemplo! Como exemplo da escrita de uma seleção de múltipla escolha na linguagem, observe as instruções a seguir: escolha <expressão-de-seleção> caso <exp11>, <exp12>, ..., <exp1n> <sequência-de-comandos-1> caso <exp21>, <exp22>, ..., <exp2n> <sequência-de-comandos-2> ... outrocaso <sequência-de-comandos-extra> fimescolha Exemplo! Veja o exemplo a seguir, que ilustra bem o que faz este comando: algoritmo “Times” var time: caractere inicio escreva (“Entre com o nome de um time de futebol: “) leia (time) escolha time caso “Flamengo”, “Fluminense”, “Vasco”, “Botafogo” escreval (“É um time carioca.”) caso “São Paulo”, “Palmeiras”, “Santos”, “Corínthians” escreval (“É um time paulista.”) outrocaso escreval (“É de outro estado.”) fimescolha fimalgoritmo É interessante verificar que a opção “outrocaso” trata exatamente os casos onde a entrada do dado não satisfez as opções anteriores. No caso acima, se o time não for “Flamengo”, “Fluminense”, “Vasco”, “Botafogo”, “São Paulo”, “Palmeiras”, “Santos” ou “Corínthians”, o sistema emitirá a mensagem “é de outro estado”. 9 Vamos ver agora como isso é feito em VBA (tanto as estruturas “SE” quanto a estrutura “Caso”). ESTRUTURAS DE SELEÇÃO NO VBA Veja o vídeo! Antes de iniciarmos, sugiro a você que assista um vídeo no youtube sobre esse assunto. No link citado temos uma gravação sobre as estruturas de seleção em VBA. O material tem 11 minutos e 35 segundos, e é bem útil para entender como funcionam as estruturas de seleção no VBA: https://www.youtube.com/watch?v=dI537faJdVk Assista a esse vídeo e depois retorne a este ponto do texto! Seguindo, as estruturas fundamentais do VBA são as seguintes: If -Then - Else Funciona da mesma forma que o “SE... ENTAO... SENAO...FIMSE”. É uma estrutura de seleção que permite definir a forma com que o programa reage de acordo com uma dada condição. Select - Case Serve para selecionar qual parte do código será executada de acordo com o dado avaliado. Estrutura de Seleção IF..THEN..ELSE A estrutura de seleção IF tem o seguinte comportamento: 1. Avalia a condição, que deverá ser uma expressão booleana colocada como primeiro parâmetro; 2. Se a condição for verdadeira, então (then) realiza as operações colocadas no segundo parâmetro; 3. Caso contrário (else) realiza as operações. Sintaxe da Estrutura If-Then-Else If <Condição> Then <se condição verdadeira> Else <se condição falsa> End If 10 A palavra Else é opcional num comando If-Then-Else. Caso ela não seja utilizada, o programa sai do IF caso a condição seja falsa. Exemplo! Suponha uma situação de media de um aluno, onde ele é aprovado se a média for maior ou igual a 7. Se for maior ou igual a 4 e menor do que 7, o aluno vai pra a final. Se for menor do que 4, o aluno é reprovado diretamente. Codificamos isso de mais de uma forma, sendo a primeira delas a que mostramos abaixo: Sub situacao () Dim Msg As String If media < 4 Then Msg = “foi reprovado” If media >= 4 And Time < 7 Then Msg = “está na final” If media >= 7 Then Msg = “foi aprovado” MsgBox “você “ & Msg End Sub Você pode perceber que no caso acima usamos três IF diferentes. Essa mesma estrutura pode ser utilizada de uma forma semelhante, mas fechando cada bloco. Sub situacao () If media < 4 Then Msg = “foi reprovado” End If If media >= 4 And Time < 7 Then Msg = “está na final” End If If media >= 7 Then Msg = “foi aprovado” MsgBox “você “ & Msg End If End Sub 11 Agora vamos ver de outra forma, utilizando o ELSE: Sub situacao () If media < 4 Then Msg = “foi reprovado” Else If media >= 4 And Time < 7 Then Msg = “está na final” Else If media >= 7 Then Msg = “foi aprovado” MsgBox “você “ & Msg End If End If End If End Sub Perceba que essa estrutura é muito mais eficiente do que as duas anteriores, mas por qual motivo isso acontece? Enquanto nas estruturas anteriores todos os IF são testados, nessa é diferente. Se a condição for satisfeita logo no primeiro IF, o sistema pulará a execução dos outros, sendo mais veloz e eficiente. Legal, não é? E, para fechar as estruturas de seleção, vamos mostrar a estrutura “CASO” no VBA, que é representado pela estrutura SELECT CASE. Sub situacao () Dim media As Double DIM msg as string media = InputBox (“Digite a media:”) Select Case media Case 0 To 3.9: msg = “reprovado” Case 4 To 6.9: msg = “final” Case 7 To 10: msg = “aprovado” End Select MsgBox “Situação:” & msg End Sub Essa é uma forma bem mais “enxuta” de fazer a estrutura de seleção. 12 Ou seja: pelo que podemos perceber, a linguagem do VBA é extremamente flexível e fácil, e se parece com as demais, o que facilita muito o seu aprendizado. Agora vamos ver como o VBA implementa as estruturas de repetição. Veremos cada um dos casos possíveis no item que abordaremos a seguir. Veremos as estruturas de repetição genéricas, no Visualg, e depois veremos como isso é feito no VBA. É possível perceber que, da mesma forma que nas estruturas de seleção, o VBA faz as estruturas de repetição de uma forma muito semelhante às outras linguagens. ESTRUTURAS DE REPETIÇÃO Como em qualquer outra linguagem, o VBA possui estruturas de repetição. Antes, porém, vamos vê-las mais detalhadamente no Visualg, para depois ver como essas estruturas são usadas no VBA. Veja o vídeo! Antes de iniciarmos, indico que você assista a um vídeo no youtube sobre as estruturas de repetição em VBA. O material 14 minutos e 57 segundos, e é bem útil para entender como funcionam as estruturas de repetição no VBA: https://www.youtube.com/watch?v=VKDDWU_eFUo Agora que você assistiu ao vídeo, vamos seguir com o nosso assunto! As estruturas de repetição fazem com que os computadores tenham uma qualidade interessante: eles podem repetir um conjunto de instruções várias vezes. Tanto pode fazer uma quantidade definida de vezes, que chamamos de “repetição determinada”, quanto fazer uma quantidade indefinida de vezes, que chamamos de “repetição indeterminada”,ou seja: você pode construir um algoritmo que realiza uma contagem definida, que você sabe onde começa e quando termina, e também pode fazer uma contagem indefinida, ou seja, você sabe quando começa, mas não prevê quando irá terminar. Cada uma dessas repetições (determinada ou indeterminada) tem uma aplicação específica, servindo para situações diferentes. Vamos estudar os dois tipos de repetição. Nesse estudo, faremos da mesma forma que antes: inseriremos programas no Visualg, testaremos e, junto com a nossa leitura e tirando dúvidas nos fóruns da disciplina, consolidaremos os nossos conhecimentos. Depois disso, veremos essas estruturas no VBA. Vamos lá! 13 ESTRUTURA DE REPETIÇÃO DETERMINADA Vamos iniciar abordando a estrutura de repetição determinada, ou seja, aquela que trabalha com uma quantidade definida de repetições. Com ela, podemos criar contagens que sabemos quando começam e quando terminam. Para começar, insira o algoritmo abaixo no Visualg e depois execute usando F9: ALGORITMO “REP. DETERMINADA01” VAR I: inteiro Inicio Para i:=1 ate 100 faca Escreval (i) Fimpara FIMALGORITMO Agora, vamos analisar cada linha desse algoritmo. Na parte VAR, é declarada a variável “i”, inteira. Essa variável é utilizada na repetição determinada. Ela é chamada “variável de controle da repetição”, e no Visualg ela TEM que ser sempre do tipo INTEIRO, não pode ser Real nem Literal(Caracter). Essa variável de controle pode ter qualquer nome, mas normalmente usamos o nome “i”. Lembramos mais uma vez que no caso do Visualg (e algumas outras linguagens, como o Pascal), essa variável tem que ser do tipo inteiro. Se você tentar usar uma variável REAL para controlar o PARA, o Visualg não aceitará – dará erro. A grande maioria das linguagens funciona dessa forma. Existem linguagens, contudo, que admitem outras formas de indexação, mas esse assunto não será abordado nesta disciplina. Por ora, vamos nos ater ao uso de inteiros nas variáveis de controle das estruturas de repetição. No comando “escreval(i)”, é exibido o conteúdo da variável i. Esse conteúdo, de acordo com a repetição, vai de 1 até 100. Por esse motivo, no algoritmo acima o computador executou o comando “escreval(i) “ 100 vezes. A variável i mudou de valor variando de 1 até 100, de um em um (que é o passo de contagem padrão), ou seja, para cada valor que i assume, indo de 1 a 100, é feita uma exibição deste valor. 14 Guarde essa ideia! Essa repetição é chamada “repetição determinada”, porque acontece um número fixo de vezes, que é conhecido previamente. Ou seja: se a variável i vai variar de 1 até 100 pulando de um em um, tudo o que estiver dentro da repetição vai ser feito 100 vezes. No caso da repetição determinada, é simples assim. Fácil, não é? Vamos ver mais uma repetição determinada. Insira o algoritmo abaixo no visualg e execute. ALGORITMO “REPETICAO DETERMINADA02” VAR I: inteiro Inicio Para i:=1 ate 100 passo 2 faca Escreval(i) Fimpara FIMALGORITMO Você percebeu que ele funcionou de forma diferente do anterior? O uso da cláusula “passo 2” fez com que o algoritmo “pulasse” de 2 em 2, ou seja, a variável i assume os valores de 1,3,5,7,9 e assim por diante, indo até 99. A cláusula “passo”, portanto, faz com que a variável possa ser incrementada em valores diferentes de 1, que é o passo padrão. Em muitas linguagens, como o VBA, esse passo é representado através do uso da cláusula “STEP”. Vamos ver no VBA: A repetição determinada tem um comando apropriado no VBA: LOOP For.. NEXT. O loop FOR-NEXT é o equivalente ao PARA... FACA... FIMPARA do Visualg. O funcionamento básico é o mesmo, ou seja, tem um ponto de partida, um ponto de chegada e um passo para acontecer. É praticamente uma tradução do comando PARA, com algumas pequenas diferenças. Vamos ver um exemplo: 15 Exemplo! Vamos ver os comandos no Visualg e depois no VBA, para o mesmo algoritmo. No Visualg: Var x: inteiro soma : inteiro Inicio x:= 10 soma:= 0 para i:= 1 ate x faca soma : = soma + i fimpara Escreval (“valor da soma”, soma) Vamos ver agora os mesmos comandos em VBA: Dim x x=10 soma = 0 for i= 1 to x soma = soma + i next MsgBox “valor da soma = &soma Podemos ver que é bem parecido, não é? A idéia fundamental é a mesma. Do mesmo modo que vimos que o Visualg usa a cláusula “Passo”, vamos ver isso no VB, com o “STEP” Comando FOR-NEXT com STEP Vamos fazer abaixo um algoritmo no visualg que lista os números pares entre 500 e 1000. Nesse caso, a ideia é fazer com que o algoritmo comece com 500 e vá pulando de 2 em 2, ou seja, passo 16 2. O código é bem simples: Var x : inteiro Inicio para x:= 500 ate 1000 passo 2 faca escreval(i) fimpara Simples, não é ? Vamos agora traduzir isso para o VBA: Dim x soma = 0 for x= 500 to 1000 step 2 MsgBox &i next Ou seja: é bem semelhante ao que vemos não só no visualg, mas também em diversas outras linguagens. Mas e nos casos onde não temos esses dados de forma determinada? Onde não sabemos quantas vezes aquela repetição acontecerá? Nesse caso, usamos a repetição indeterminada, que será abordada a seguir. Vamos em frente. Repetição Indeterminada Guarde essa ideia! Suponha que você é o dono de um posto de gasolina. Esse posto funciona diariamente e tem uma loja de conveniência. É fácil perceber que, ao abrir a loja de manhã, o dono não tem como prever com exatidão quantas pessoas ele atenderá no posto e na loja. Essa imprevisibilidade é comum em qualquer negócio. Observando o nosso dia a dia percebemos que não só num posto, mas que qualquer lugar que atende pessoas, como uma loja de roupas, não sabe inicialmente quantas pessoas serão atendidas, ou quantas pessoas chegarão àquela loja em um dado dia. O mesmo podemos dizer sobre hospitais, ruas, enfim, qualquer situação que receba pessoas. Nesse caso, dizemos que estamos numa situação INDETERMINADA. 17 É possível tratar desses casos em uma linguagem de programação. Esse tratamento de casos em que não prevemos inicialmente quantas vezes aquela operação ocorrerá é feito usando a estrutura que aprenderemos a seguir: a estrutura de repetição INDETERMINADA. Essa estrutura de repetição pode funcionar de duas formas diferentes. A primeira é a estrutura com teste prévio, e a segunda é a estrutura com teste após a execução dos comandos da repetição. Veremos os dois casos aqui. Conforme dissemos, o uso de repetição indeterminada acontece normalmente quando não é possível saber com antecedência quantas vezes a repetição acontecerá. Isso é comum no dia a dia, pois se tomarmos um cinema como exemplo, provavelmente os proprietários não saberão quantos clientes atenderão naquele dia, ou seja, quantos clientes irão assistir a cada filme, mesmo considerando que as salas têm lotação máxima – teoricamente eles teriam um limite máximo, mas até isso pode variar. De concreto, o que se sabe é que não tem como prever quantos clientes virão. Eles só vão ter essa informação de forma definitiva após encerrar o expediente do dia e contabilizar todos os atendimentos, ou seja, nesse momento saberão quantos clientes atenderam durante todo o dia. Sabemos que existem dias em que superlota, mas existem vários outros dias que a lotação máxima não é atingida. Na prática, não tem como saber com antecedência quantos clientes comparecerão - nunca. Não só em cinemas, mas em praticamente todo lugar é assim. Exemplo! Poderíamos citar vários exemplos, mas trabalharemos apenas com os casos mais comuns, que já estamos acostumados a ver. Para iniciar, vamos a um exemplo de repetição indeterminada. Insira o código abaixo no visualg e execute para experimentar. Nesse algoritmo, suponha que você está num supermercado onde compra um conjunto de produtos (uma unidade de cada). No algoritmo a compra encerra quando se digita “FIM” (em maiúsculo) no nome do produto. Caso não seja digitado “FIM”, significa que você está comprando mais um produto e, em seguida, informará o preço dele. Note que nesse casoestamos em uma situação muito diferente da anterior, ou seja, ao invés de sabermos de antemão quantos itens serão comprados, nós só saberemos isso após finalizarmos a compra, digitando “FIM” no momento de informar o nome do produto. Vamos ao algoritmo (insira no visualg e teste executando com F9) ALGORITMO “compranummercado” VAR produto : literal preço :real soma : real qtd comprados : inteiro 18 Inicio Escreval(“informe nome do produto ou FIM para encerrar”) leia(produto) enquanto produto <> “FIM” FACA qtdcomprados := qtdcomprados +1 escreval(“informe preço do produto”) leia(preco) soma:= soma + preco Escreval(“informe nome do produto ou FIM para encerrar”) leia(produto) fimenquanto Escreval (“ a quantidade de produtos comprados foi “, qtdcomprados) Escreval (“você vai pagar”, soma) Escreval (“o valor médio foi”, soma / qtdcomprados) FIMALGORITMO Vamos analisar o algoritmo acima para compreendê-lo bem direitinho? Vamos começar pelas variáveis. As variáveis declaradas são: Produto: literal, ou seja, o nome do produto. Preco: real é o preço daquele produto. soma : real , ou seja, vai acumular os preços de todos os produtos numa única soma exibida no final do programa. Por fim, temos a variável qtd comprados: inteiro , que conta quantos produtos foram comprados. Logo após a declaração de variáveis, o programa inicia lendo o nome de um produto. Nesse ponto, se o usuário digitar “FIM” (em maiúsculo), o programa terminará. Caso digite QUALQUER outro nome, o programa entrará na repetição indeterminada, e dentro dela a primeira coisa que fará é contar aquele produto com a expressão qtdcomprados:= qtdcomprados +1. Esse é um contador que serve para contar a quantidade de produtos comprados. A seguir, o algoritmo pede para informar o preço do produto, com os comandos “escreval(“informe preço do produto”) “ e a seguir “ leia(preco)”. Lido esse preço, o programa somará o valor desse produto ao total geral, usando o comando “soma:= soma + preco”. Com esse comando, a variável “soma” guardará esse total. A seguir, o programa vai ler o nome do próximo produto. Nesse ponto, se o usuário digitar “FIM” (em maiúsculo), o programa terminará a repetição e mostrará as mensagens finais, que são: 19 escreval(“ a quantidade de produtos comprados foi “, qtdcomprados) escreval(“você vai pagar “, soma) escreval(“o valor médio foi “, soma / qtdcomprados) Qtdcomprados mostrará a quantidade de produtos. Soma mostrará o total pago. E o comando “escreval(“o valor médio foi “, soma / qtdcomprados)” mostrará a média. Interessante, não é? Os programas de repetição indeterminada têm essa estrutura geral. É claro que podemos sofisticar colocando diversos outros contadores, como podemos ver no algoritmo a seguir (esse uso de contadores também é plenamente possível em VBA): ALGORITMO “estatisticaalunos” VAR nome, sexo : literal idade :inteiro soma : real qtdalunos, qtdf, qtdm : inteiro Inicio Escreval(“informe nome do aluno ou FIM para encerrar”) leia(nome) enquanto nome <> “FIM” FACA qtdalunos := qtdalunos +1 escreval(“informe idade do aluno”) leia(idade) soma:= soma + idade escreval(“informe sexo do aluno m ou f”) leia(sexo) se sexo = “m” entao qtdm:=qtdm +1 senao qtdf:= qtdf +1 fimse Escreval(“informe nome do aluno ou FIM para encerrar”) leia(nome) 20 fimenquanto escreval(“ a quantidade de alunos “, qtdalunos) escreval(“a média de idades é“, soma/qtdalunos) escreval(“ a quantidade de mulheres “, qtdf) escreval(“ a quantidade de homens é “, qtdm) FIMALGORITMO Outra forma de construir repetições indeterminadas é com a estrutura Repita... até Esta estrutura repete uma seqüência de comandos até que uma determinada condição (especificada através de uma expressão lógica) seja satisfeita. É diferente do “Enquanto” porque ela testa após repetir, e o “Enquanto” testa antes de realizar os comandos. Ela funciona assim: Repita <seqüência-de-comandos> ate <expressão-lógica> Exemplo! var j: inteiro inicio j <- 1 repita escreva (j) j <- j + 1 ate j > 10 fimalgoritmo No caso acima, o algoritmo lista os números de 1 até 10. Portanto, esse tipo de comando é bem parecido com o “Enquanto”, e cada um pode ser utilizado de acordo com a necessidade. Vamos ver agora como funcionam essas estruturas no VBA. 21 A estrutura Do...Loop. Guarde essa ideia! Esta estrutura pode ser utilizada para repetir um trecho de código, enquanto uma determinada condição for verdadeira, ou até que uma determinada condição torne-se verdadeira. Podemos utilizar dois operadores condicionais diferentes: While ou Until. Os operadores While ou Until podem ser utilizados de duas maneiras diferentes: No início do laço ou no final do laço. Com isso temos quatro situações distintas, e vamos analisar cada uma delas a partir de agora, através da construção de exemplos. É importante salientar que, em caso de repetição indeterminada, O Código dentro do laço deve ser capaz de alterar a condição para que essa se torne Falsa, pois caso contrário a condição será sempre verdadeira e os comandos dentro do laço ficarão em execução, infinitamente, ou seja, nunca vão parar e ficarão sendo executados indefinidamente. Vamos ver como é essa estrutura no VBA! A estrutura Do While Condição...Loop. Neste caso, estamos utilizando o operador condicional While, no início do laço. O formato geral, neste caso é o seguinte: Do While condição / teste Comando1 Comando2 ... Comandon –Loop Ou seja: é bem simples e parecido com o que conhecemos. Exemplo! Vamos ver agora um exemplo de uso desse comando: Dim x x=10 Contador=1 22 Soma=0 Do While Contador <= x Soma = Soma + Contador Contador = Contador + 1 Loop MsgBox “Valor da Soma = “ & Soma Veja que nesse caso o teste é feito logo na entrada da repetição. Se o contador for maior do que x, a repetição não acontecerá. Essa estrutura de repetição equivale ao comando “Enquanto” do Visualg. Vamos ver agora a outra opção, que é a que equivale ao “Repita... Até” do Visualg: o A estrutura Do Until Condição... Loop. Neste caso, estamos utilizando o operador condicional Until, no início do laço. O formato geral, neste caso é o seguinte: Do Until condição Comando1 Comando2 ... Comandon Loop Exemplo! Vamos ver agora um exemplo! Dim x x=10 Contador=1 Soma=0 Do Until Contador > x Soma = Soma + Contador Contador = Contador + 1 Loop MsgBox “Valor da Soma = “ & Soma 23 Muito interessante, não é? Com esse tipo de estrutura, você consegue tratar a maior parte dos casos que encontramos no dia a dia das empresas. Tente criar variações desse algoritmo e teste. É testando que se aprende!!!! Tendo feito esses exemplos e exercícios, concluímos a parte principal de repetições determinadas (usando PARA) e repetições indeterminadas (usando ENQUANTO) e seus equivalentes no VBA. Palavras do Professor Terminamos aqui a nossa segunda unidade. Vimos: - Estruturas de seleção e estruturas de repetição determinadas e indeterminadas; - Como construir esse tipo de estrutura de seleção e estruturas de repetição no VBA. Não deixe de realizar os exercícios. Insira suas dúvidas nos fóruns da disciplina. Para consolidar os seus conhecimentos, releia as unidades 3 e 4 do livro texto. Na unidade 4, veremos a linguagem C. Bom estudo!
Compartilhar