Curso Livre de Algoritmos e Programação/Estruturas de Seleção e Estruturas de Repetição

Estruturas de Seleção e Estruturas de Repetição editar

Em pseudo linguagem de programação existem três estruturas de repetição muito utilizadas são elas: o laço contado ''para...ate...faca'' (similar ao for...to...do do Pascal, c++, phyton), e os laços condicionados ''enquanto...faca'' (similar ao while...do) e 'repita...ate'' (similar ao repeat...until).

Determine a necessidade de usar estruturas repetitivas para resolver um determinado problema. Distinguir entre as diferentes estruturas repetitivas existentes e a aplicabilidade de cada estrutura a diferentes tipos de problemas. Saiba como usar a estrutura repetitiva FOR DO, que é controlada por um contador de incremento. Saiba como usar a estrutura repetitiva ENQUANTO FAZER e REPETIR ATÉ ser controlado pelo usuário. Determine o uso e saiba como resolver o problema da estrutura repetitiva entre outras estruturas repetitivas. Uma das principais características que consolidam o uso bem-sucedido de um computador para a resolução de problemas é sua capacidade de processar repetidamente um conjunto de operações com grande quantidade de dados. Os exemplos em que realizamos vários conjuntos de tarefas repetidamente sob certas circunstâncias são amplamente observados em nossa vida diária.

A estrutura repetitiva fornece uma maneira de repetir um conjunto de processos no final da repetição até que um determinado objetivo seja alcançado. O ponto comum de todas as estruturas repetitivas é a existência de uma condição de controle, que é representada por uma expressão lógica e é testada a cada ciclo para determinar se a repetição continua. Por exemplo, suponha que uma determinada loja de sapatos venda por meio de cartões de crédito a clientes que não se cadastraram em seu sistema. Para fazer essa venda, você deve cadastrar o cliente e solicitar informações básicas, como: nome, endereço, CPF, RG, etc. Para cada novo cliente que apareça na loja, essas etapas para realizar o cadastro seguirão sempre a mesma sequência. Se precisarmos desenvolver um sistema para cadastrar clientes para a loja, não temos razão para reprogramar essas etapas para cada novo cliente, bastaria que desenvolvêssemos uma única vez a seqüência de etapas e que a cada novo cliente usássemos a seqüência previamente definida.

Assim as estruturas de repetição são basicamente: enquanto-faça, faça-enquanto e para-faça. A diferença básica é que enquanto-faça primeiro testa a condição para depois realizar o bloco de comando, ao contrário de faça-enquanto que primeiro executa o bloco para depois realizar o teste. A estrutura para-faça tem embutida um mecanismo de controle para determinar quando o laço deverá ser terminado.

Laço enquanto-faça:

A estrutura de repeticão enquanto-faca. Antes de entrar na estrutura de repetição, uma expressão lógica é avaliada e caso o resultado da mesma for verdadeiro, os comandos que estão dentro da estrutura serão executados. Após a execução dos comandos, a expressão lógica é novamente avaliada. Caso o resultado da expressão lógica for falso, o algoritmo sai da estrutura de repetição e segue para a próxima linha.

De maneira geral, o mecanismo que altera o valor da expressão lógica que controla o laço está embutido dentro do bloco de comandos ou depende de alguma variável externa que será fornecida em tempo de execução.

A estrutura enquanto-faça é usada principalmente quando não se sabe com antecedência a quantidade de repetições que precisam serrealizadas. Por exemplo, suponha que estamos oferecendo ao usuário 3 opções de menu sendo que uma dessas opções seria a de sair do programa. Caso desejemos que o usuário possa executar várias vezes as opções dispostas no menu, não temos como adivinhar quando o usuário irá optar por sair do algoritmo, sendo assim, não podemos limitar a repetição à um determinado número de vezes.

Considere um problema mais específico onde necessitamos fazer a leitura de vários nomes de pessoas e a cada nome que é lido devemos escrever na tela a frase "O nome digitado foi nome", onde nome é a variável. A princípio isso deve ser feito inúmeras vezes e quando o usuário digitar um nome igual a ``fim'' o algoritmo deve parar. Da mesma maneira que no exemplo anterior não podemos definir quando o usuário irá digitar ``fim'', e não temos como precisar a quantidade de vezes que o algoritmo deverá repetir esse conjunto de ações.


ENQUANTO <expressão booleana> FAÇA

<instruções a serem executadas enquanto a expressão booleana resultar em VERDADEIRO>

FIM-ENQUANTO


Laço para-faça:

Esta estrutura repete uma seqüência de comandos um determinado número de vezes.

para <variável> de <valor-inicial> ate <valor-limite> [passo <incremento>] faca

  <seqüência-de-comandos>

fimpara

<variável > É a variável contadora que controla o número de repetições do laço. Na versão atual, deve ser necessariamente uma variável do tipo inteiro, como todas as expressões deste comando.
<valor-inicial> É uma expressão que especifica o valor de inicialização da variável contadora antes da primeira repetição do laço.
<valor-limite > É uma expressão que especifica o valor máximo que a variável contadora pode alcançar.
<incremento > É opcional. Quando presente, precedida pela palavra passo, é uma expressão que especifica o incremento que será acrescentado à variável contadora em cada repetição do laço. Quando esta opção não é utilizada, o valor padrão de <incremento> é 1. Vale a pena ter em conta que também é possível especificar valores negativos para <incremento>. Por outro lado, se a avaliação da expressão <incremento > resultar em valor nulo, a execução do algoritmo será interrompida, com a impressão de uma mensagem de erro.
fimpara Indica o fim da seqüência de comandos a serem repetidos. Cada vez que o programa chega neste ponto, é acrescentado à variável contadora o valor de <incremento >, e comparado a <valor-limite >. Se for menor ou igual (ou maior ou igual, quando <incremento > for negativo), a seqüência de comandos será executada mais uma vez; caso contrário, a execução prosseguirá a partir do primeiro comando que esteja após o fimpara.

<valor-inicial >, <valor-limite > e <incremento > são avaliados uma única vez antes da execução da primeira repetição, e não se alteram durante a execução do laço, mesmo que variáveis eventualmente presentes nessas expressões tenham seus valores alterados.

Laço repita-até:

Esta estrutrura repete uma seqüência de comandos até que uma determinada condição (especificada através de uma expressão lógica) seja satisfeita.

repita

  <seqüência-de-comandos>

ate <expressão-lógica>

repita Indica o início do laço.
ate <expressão-lógica> Indica o fim da <seqüência-de-comandos> a serem repetidos. Cada vez que o programa chega neste ponto, <expressão-lógica> é avaliada: se seu resultado for FALSO, os comandos presentes entre esta linha e a linha repita são executados; caso contrário, a execução prosseguirá a partir do primeiro comando após esta linha.

Considerando o exemplo:

algoritmo "Números de 1 a 10 (com repita)"

var j: inteiro

inicio

j <- 1

repita

  escreva (j:3)

  j <- j + 1

ate j > 10

fimalgoritmo

Importante: Como o laço repita...ate testa sua condição de parada depois de executar sua seqüência de comandos, esta seqüência poderá ser executada uma ou mais vezes.