Stoa :: C/C++ :: Blog :: O laço for: Aspectos Básicos - parte 1

setembro 13, 2007

user icon

"O laço for" - Aspectos básicos - parte 1

 

O que é a instrução for?

A instrução for (que, em português, poderia ser traduzida como a instrução para) é uma instrução de controle de fluxo. É também comumente dito que a instrução for é uma instrução de loop (que é comumente traduzido em português como laço). A sintaxe da instrução for é:

 

 

for ( instrução de inicialização; condição de término; instrução de incremento ) { }

 

 

A instrução for serve para executar as instruções dentro do bloco um número controlado de vezes, sendo que o controle é feito pela condição de término. Do ponto de vista algorítmico, usa-se um laço for quando se precisa realizar um operação um número determinado de vezes, especialmente se a cada vez que essa operação é realizada é necessário utilizar um valor numérico que aumenta ou diminui com taxa de variação constante.

 

 

Mas o que é o fluxo de um programa?

O fluxo é o "caminho" que o computador irá percorrer através de um programa em C/C++, isto é, o fluxo é a sequência das instruções de um programa. Dentro da conhecida metáfora da programação como culinária, o fluxo é equivalente à idéia de que, ao preparar uma receita, a ordem em que os ingredientes são adicionados geralmente tem grande importância (se não me engano, isso é especialmente verdadeiro ao se fazer bolos).

 

 

O que quer dizer "for é uma instrução de controle de fluxo"?

Afirmar que a instrução for é uma instrução de controle de fluxo significa dizer que a instrução for controla a sequência de instruções a serem executadas pelo computador. Metaforicamente, a instrução for é como o procedimento da receita que diz: "adicione um ovo; bata até ficar uma massa homogênea; repita esta operação três vezes". Esta parte do procedimento, "repita", faz com que o cozinheiro tenha que retornar a um ponto anterior da receita e executar novamente os procedimentos já feitos uma vez, ou seja, o cozinheiro adiciona um ovo e bate até a massa ficar homogênea; lê que deve fazer isso três vezes, e só fez uma, portanto, retorna ao procedimento de adicionar um ovo e bater até a massa ficar homogênea; lê que deve fazer isso três vezes, já fez duas, e portanto retorna ao procedimento de adicionar um ovo e bater até que a massa fique homogênea; aí lê que deve fazer isso três vezes, e como já fez três vezes, passa para o procedimento seguinte da receita (que deve ser algo como "ponha numa forma untada").

 

 

O que é uma instrução de loop?

Loop é a palavra em inglês para laço, no sentido de "dar uma volta num círculo". Portanto, percorrer um laço é percorrer um caminho que termina no ponto de início. Dizer que a instrução for é uma instrução de laço significa que a instrução for corresponde a um círculo ou a um trajeto que o computador irá percorrer mais de uma vez, retornando ao início da trajetória cada vez que percorrer essa trajetória "até o fim". Mas, tal como a expressão controle de fluxo indica, este laço é percorrido de maneira controlada - ou seja, a trajetória é percorrida tantas vezes quanto necessário, nem mais nem menos - ou pelo menos deveria ser assim. Na verdade, com a instrução for é possível construir um programa em C/C++ que tem execução infinita - basta instruir o computador a executar um procedimento um número de vezes tão grande que seria necessário um tempo muito grande para que o a instrução for seja terminada - digamos, um milhão de anos. Mas também seria possível criar um programa com uma instrução for que tem uma condição de controle de fluxo que nunca é satisfeita - de modo que a instrução for é executada para sempre, não terminando nem mesmo em um milhão de anos.

 

 

Como é a sintaxe da instrução for?

A sintaxe da instrução for é:

 

 

for ( instrução de inicialização; condição de término; instrução de incremento ) { }

 

 

A instrução de inicialização é uma instrução que será executada antes que a primeira execução das instruções dentro do bloco do laço for seja executada - em outras palavras, o bloco (as instruções dentro das chaves) do laço for será executado tantas vezes quanto o controle de fluxo determinar; mas, antes que esse bloco seja executado pela primeira vez, e antes mesmo que a condição de controle de fluxo seja verificada, a instrução de inicialização é executada.

 

 

A condição de término é uma expressão que, se for verdadeira, fará com que o laço for seja executado novamente; se a condição_de_término for falsa, o laço for será encerrado. É verdade que isso é um tanto anti-intuitivo, pois seria mais razoável que a condição de término verdadeira encerrasse o laço, mas isso se dá apenas devido ao nome incorreto dessa expressão, que o uso consagrou como sendo condição de término mas que deveria ser na verdade condição de execução. Nomeada dessa forma, a condição verdadeira faz com que o laço seja executado; se falsa, o laço é encerrado.

 

O bloco de instruções costuma-se dizer que está "dentro" do laço for. De modo que se algum colega seu mais adiantado no estudo do misticismo* disser que seu programa tem "algo errado dentro do segundo for" isso quer dizer que ele acredita que há um erro nas instruções contidas no bloco a ser executado controladamente pelo segundo laço for do seu programa.

 

 

*misticismo = informática.

 

A instrução de incremento é uma instrução que é executada uma vez para cada vez que o computador percorre o laço for. Ela é executada após a execução do bloco de instruções e antes da verificação da condição de término. A instrução de incremento, tal como poderá ser visto na segunda parte deste texto, pode ser qualquer instrução de C ou C++, mas geralmente se trata de uma atribuição de valor a variável, e muito comumente uma adição ou subtração de uma unidade. 

 

Palavras-chave: controle de fluxo, for, laço, sintaxe

Postado por Renato Callado Borges em C/C++

Você deve entrar no sistema para escrever um comentário.

Termo de Responsabilidade

Todo o conteúdo desta página é de inteira responsabilidade do usuário. O Stoa, assim como a Universidade de São Paulo, não necessariamente corroboram as opiniões aqui contidas.