300x250 AD TOP

Blogger news

AD (728x90)

Tecnologia do Blogger.

Colaboradores

Seguidores

Postagens populares

Tagged under:

Linguagem C - Laço For

  •       LAÇO DE REPETIÇÃO - FOR
Retirado de: vidadeprogramador.com.br


Os laços de repetição permite que um conjunto de instruções seja repetido até que uma condição seja encontrada. A linguagem C suporta os mesmos tipos de laços que outras linguagens estruturadas modernas. Os laços em C são o for, o while e o do-while. Nesse post teremos como foco o Laço FOR

Forma Geral:


for (inicialização; condição; incremento){
comandos;
}

Na sua forma simples, a inicialização é um comando de atribuição usado para inicializar a variável de controle do laço.
A condição é usualmente uma expressão relacional que determina quando o laço terminará pelo teste da variável de controle do laço contra algum valor.
O incremento usualmente define como a variável de controle do laço mudará cada vez que a repetição for realizada.

Para um exemplo simples, o seguinte programa imprime os números de 1 a 100 na tela:

#include <stdio.h>
main(){
int x;
for (x = 1; x <= 100; x++){
printf (“%d - “, x);
}
}

Neste programa, x é inicializado em 1. Desde que x seja menor ou igual a 100, a função printf( ) é chamada. Depois que a função printf( ) retorna, x é incrementado em 1 e testado para ver se é menor ou igual a 100. Este processo repete-se até que x seja maior que 100, ponto este em que a repetição termina.

Neste exemplo, x é a variável de controle do laço, que é modificada e verificada cada vez que o laço é executado.

Obs:

O laço for nem sempre precisa executar de maneira crescente. Um laço negativo é criado pelo decremento “x--” em vez do incremento “x++” da variável de controle do laço .  

Por exemplo, este programa imprime os números de 100 a 1 na tela.

#include <stdio.h>
main(){
int x;
for (x = 100; x > 0; x--){
printf (“%d - “, x);
}
}

Porém, você não está restrito a incrementar ou decrementar a variável de controle do laço. Você pode mudar esta variável da maneira que desejar. Por exemplo, este laço imprime os números de 0 a 100 de cinco em cinco.

#include <stdio.h>
main(){
int x;
for (x = 0; x <= 100; x = x + 5){
printf (“%d - “, x);
}
}

Usando-se um bloco de código, é possível que um for repita múltiplos comandos, como mostrado neste exemplo, que imprime o quadrado dos números de 0 a 99.

#include <stdio.h>
main(){
int i;
for (i = 100; i < 100; i++){
printf (“Este é o valor de i: %d “, i);
printf (“ e i ao quadrado: %d\n”, i * i);
}
}

  • VARIÁVEIS DO LAÇO for


A discussão mencionada descreve a forma mais comum do laço for.
Entretanto, muitas variações são permitidas, o que aumenta o seu poder, flexibilidade e aplicabilidade em certas situações em programação.
Uma das variações mais comuns é o uso de duas ou mais variáveis de controle  do laço. Aqui está um exemplo que usa duas variáveis, x e y, para controlar o laço.

#include <stdio.h>
main(){
int x, y;
for (x = 0, y = 0; x + y < 100; x++, y++){
printf (“%d - ”, x + y);
}
}

Este programa imprime os números de 0 a 98 de dois em dois. Note que as vírgulas são usadas para separar os comandos de inicialização e incremento. A vírgula é um operador da linguagem C que significa essencialmente “faça isto e isto”.
A cada interação por meio do laço, tanto x como y são incrementadas e os dois devem estar com o valor correto para que o laço se encerre.
A expressão condicional não tem necessariamente que envolver teste de variáveis de controle do laço com algum valor-alvo. De fato, a condição pode ser qualquer expressão válida da linguagem C. Isso significa que é possível fazer o teste por meio de muitas condições de terminação. Por exemplo, este programa ajuda a ensinar crianças a somar. Se a criança cansa e quer parar, ela digita N quando perguntada se quer mais. Preste especial atenção à parte da condição do laço for. A expressão condicional faz com que o for seja executado até 99 ou até que o usuário responda não à solicitação.

#include <stdio.h>
#include <ctype.h>

main(){
int i, j, resposta;
char fim = ‘ ‘;
for (i = 0, i < 100 && fim != ‘N’; i++){
for (j = 1; j < 10; j++){
printf (“quanto é %d + %d? “, i, j);
scanf (“%d”, &resposta);
if (resposta != (i + j)){
printf (“errado\n”);
}
else{
printf (“certo\n”);
}
}
printf (“Mais ?”);
fim = toupper(getche());
printf (“\n”);
}
}

Uma outra interessante variação do laço for é possível porque, atualmente, cada uma das três partes da declaração do for podem consistir de qualquer expressão válida da linguagem C. Elas não precisam ter nada que faça a seção ser usada de maneira padrão. Considerando isso, vejamos o seguinte exemplo:

#include <stdio.h>

void prompt(){
printf (“Informe um inteiro: ”);
}
int readnum(){
int t;
scanf (“%d”, &t);
return t;
}
void sqrnum (int num){
printf (“%d\n”, num * num);
}


main(){
int t;
for (prompt(); t = readnum(); prompt()) {
sqrnum(t);
}
}

Esse programa primeiro apresenta uma solicitação e, então, aguarda pela resposta. Quando um número é informado, o seu quadrado é exibido e novamente é feita uma solicitação. Isso prossegue até que um 0 seja digitado. Se você olhar com atenção o laço for na função main( ), verá que cada parte do for é compreendida por chamadas a funções que fazem a solicitação ao usuário e recebem um número do teclado. Se o número informado é zero, o laço termina, já que a expressão condicional será falsa; caso contrário, o quadrado do número é calculado. Assim, nesse laço for as partes de inicialização e incremento são usadas de modo não tradicional, mas perfeitamente válido.

Outra característica interessante do laço for é que pedaços da definição do laço não necessitam estar lá. Na verdade, não é necessário que uma extensão esteja presente em qualquer das partes as expressões são opcionais. Por exemplo, este laço será executado até que o número 10 seja informado.

for (x = 0; x!= 10; )
scanf (“%d”, &x);

Note que a parte de incremento da definição do for está vazia. Isso significa que, cada vez que o laço é repetido, a variável x é testada para verificar se ela é igual a 10, mas x não é modificado de nenhuma forma. Entretanto, se você digital 10, a condição do laço torna-se falsa e o laço encerra-se.

·        O LAÇO INFINITO

Um dos usos mais interessantes do laço for é na criação de laços infinitos. Nenhuma das três expressões que formam o laço for são requeridas, portanto, é possível fazer um laço sem fim, deixando-se a expressão condicional vazia, como mostra este exemplo.

for ( ; ; ){
printf (“Este laço será executado para sempre.\n”);
}

·        A INTERRUPÇÃO DE UM LAÇO for

A construção for ( ; ; ) não cria necessariamente um laço infinito tendo em vista uma nova aplicação da declaração break da linguagem C. Quando encontrada
em algum lugar dentro do corpo de um laço, a declaração break faz com que o laço termine. O controle do programa segue no código posterior do laço, como mostrado aqui.

for ( ; ; ){
ch = getche(); //lê um caractere
if (ch = ‘A’) {
break; //sai do laço
}
}
printf (“Você digitou a letra A”);

Este laço é executado até que um caractere A seja digitado no teclado. Espero que tenha esclarecido algumas de suas duvidas em relação ao laço de repetição FOR, qual quer duvida ou sugestão deixe um comentário.

Para dar continuidade aos posts sobre linguagem C, escolha um dos links abaixo:

“Um autor é um louco que, insatisfeito de enfadar os homens de seu tempo, ainda quer enfadar as gerações futuras.”

(Montesquieu)

1 comentários:

  1. sequencias de Fibonacci, um clássico pedidos nas provas de programação.

    ResponderExcluir