Estruturas de
REPETIÇÃO
CASE
ADMINISTRAÇÃO DE CONTAS BANCÁRIAS
•
Existem ocasiões em que é necessário
efetuar a repetição de um trecho de
programa um determinado número de
vezes.
• Neste caso, poderá ser criado um looping
que efetue o processamento de um
determinado trecho, tantas vezes quantas
forem necessárias. Os loopings também
são chamados de laços de repetição.
“Escrever um algoritmo que, a partir do saldo bancário
da conta de um cliente, mostre a mensagem “Conta
Estourada” se o saldo for negativo, e a mensagem
“Conta Normal”, se o saldo não for negativo”.
Pela definição do problema, podemos considerar que se tem
como entradas o número da conta e o valor do saldo bancário do
cliente e como saída, uma mensagem dizendo se a conta tem ou não
saldo negativo. O código para resolução do problema pode ser
escrito como segue:
Algoritmo banco_1
Var
saldo: real
numeroconta : Inteiro
Inicio
Escreva ("Digite o numero da conta : ")
leia(numeroconta)
Escreva ("Digite o saldo")
leia (saldo)
Se saldo < 0 entao
Escreva ("Conta de numero : " ,numeroconta, " Conta Estourada")
senao
Escreva ("Conta de numero : " ,numeroconta, " Conta Normal ")
fimse
Fimalgoritmo
•
Veja que o algoritmo Banco1 resolve o problema considerando a
existência de uma única conta. Se quisermos considerar a existência de
várias contas, o que é a situação mais comum, e para a qual faz muito
mais sentido a utilização de uma maquina para a sua resolução,
teremos que fazer com que as instruções que resolvem o problema para
a conta de um cliente sejam repetidas várias vezes.
•
Para isso, faz-se necessário um comando que, ao ser executado
faça que determinado grupo de instruções seja repetido várias vezes.
Enquanto < expressão lógica > Faça
conjunto de instruções
Fimenquanto
Algoritmo banco2
Var
saldo: real
numeroconta : Inteiro
contador:inteiro
Inicio
contador <- 0
Enquanto contador < 10 faca
contador <- contador + 1
Escreva ("Digite o numero da conta : ")
leia(numeroconta)
Escreva ("Digite o saldo")
leia (saldo)
Se saldo < 0 entao
Escreval ("Conta de numero : " ,numeroconta, " Conta Estourada")
senao
Escreval ("Conta de numero : " ,numeroconta, " Conta Normal ")
fimse
fimenquanto
Fimalgoritmo
Observe que, no algoritmo banco2, utilizamos a variável Contador, que
inicialmente recebe o valor zero. Na primeira vez que o fluxo de execução
chega ao Enquanto, a expressão lógica “contador <10” tem o valor verdadeiro.
Assim, são executados todos os comandos internos ao Enquanto. Observe
também que, no grupo de comandos internos ao Enquanto, colocamos o
comando:
contador ← Contador + 1
•
O qual fará com que o conteúdo da variável contador seja incrementado de
uma unidade toda a vez que for executado. Assim, cada vez que for executado
o grupo de instruções que estiver dentro do Enquanto, Contador aumentará de
uma unidade, até que chegue ao valor 10, quando então, ao retornar ao inicio
do Enquanto, será verificado que a expressão logica vale falso. Conforme seu
funcionamento, se o valor da expressão for falso, o fluxo de execução sairá
automaticamente do Enquanto e passará para a execução da próxima instrução
após o fim enquanto.
•
No algoritmo banco2, todos os comandos colocados internamente ao
comando Enquanto foram deslocados em relação a coluna do Enquanto – Fim
Enquanto. \conforme já vimos, esse processo chamasse identação e tem por
objetivo facilitar a visualização e análise dos comandos que estão sendo
repetidos.
REPETIÇÃO CONTROLADA PELO USUÁRIO
Veja que o algoritmo banco2 resolve o problema para dez contas bancárias.
Se quisermos colocar duzentas contas, teremos que modificar o algoritmo para
Contador < 200. os demais comandos ficariam exatamente iguais. Podemos evitar
essa modificação escrevendo um algoritmo mais genérico, de forma que o usuário
defina o número de vezes que deseja repetir o grupo de instruções, nesse caso o
número de contas bancarias que deseja processar. O controle do numero de
repetição por parte do usuário só pode ser aplicado quando fizer sentido a sua
intervenção. Este controle pode ser feito da seguinte forma:
a) Solicitação ao usuário do número de casos a processar
b) Uso de um valor finalizador
c) Solicitação de continuação a cada passo processado
d) Utilização de menus com opção de finalização.
•
O algoritmo banco3 apresenta uma solução onde o usuário
define o numero de casos a processar. Observe que, antes de
processar qualquer conta bancária, é solicitado para que o
usuário entre com a quantidade de contas a processar. Assim
enquanto o valor de contador for menor que o valor informado
pelo usuário (qtdcontas), o grupo de instruções do enquanto
será repetido.
• O algoritmo banco3, além de analisar cada uma das contas,
tambem calcula a soma dos saldos das contas. Para tanto , é
utilizada a variável soma, que inicialmente recebe o valor zero
e que, a cada conta processada, acumula (acrescenta) o valor
do saldo da conta. Isso acontece toda vez que é executado o
comando : soma ← soma + saldo
•
Uma outra forma em que o usuário controla o numero de
casos a processar consiste na utilização de um valor finalizador
para alguma variável de entrada. O valor finalizador deve ser um
valor absurdo, ou seja, um valor que não faça sentido como dado
de entrada.
• Por exemplo, se a variável de entrada for a idade de uma pessoa,
pode-se perfeitamente utilizar qualquer valor negativo como valor
finalizador. Não faz sentido alguém ter idade menor que zero. No
algoritmo banco4 a seguir, o controle do número de contas a
processar, é feito através de um valor absurdo para o número de
conta.
• O controle da repetição também pode ser feito fazendo –
se com que, após o processamento da entrada, seja
solicitada ao usuário uma confirmação de continuação ou
não. Dependendo do caso, especialmente em situações
que envolvem a entrada de uma grande quantidade de
dados, essa forma pode -se tornar-se cansativa.
Exemplo
Desenvolver um sistema que multiplique qualquer numero
digitado por 3. A cada final do loop o usuário deve
responder se deseja continuar .
Download

Estruturas de repetição-ENQUANTO