CURSO DE C

Introdução a Alguns Comandos de Controle de Fluxo


Os comandos de controle de fluxo são aqueles que permitem ao programador alterar a sequência de execução do programa. Vamos dar uma breve introdução a dois comandos de controle de fluxo. Outros comandos serão estudados posteriormente.

 

if

O comando if representa uma tomada de decisão do tipo "SE isto ENTÃO aquilo". A sua forma geral é:

 if (condição) declaração;

 A condição do comando if é uma expressão que será avaliada. Se o resultado for zero a declaração não será executada. Se o resultado for qualquer coisa diferente de zero a declaração será executada. A declaração pode ser um bloco de código ou apenas um comando. É interessante notar que, no caso da declaração ser um bloco de código, não é necessário (e nem permitido) o uso do ; no final do bloco. Isto é uma regra geral para blocos de código. Abaixo apresentamos um exemplo:

 

#include <stdio.h>
int main ()
{
	int num;
	printf ("Digite um numero: ");
	scanf ("%d",&num);
	if (num>10) printf ("\n\nO numero e maior que 10");
	if (num==10)
	{
        	printf ("\n\nVoce acertou!\n");
        	printf ("O numero e igual a 10.");
        }
	if (num<10) printf ("\n\nO numero e menor que 10");
	return (0);
}

No programa acima a expressão num>10 é avaliada e retorna um valor diferente de zero, se verdadeira, e zero, se falsa. Repare que quando queremos testar igualdades usamos o operador == e não =. Isto é porque o operador = representa apenas uma atribuição. Isto pode parecer estranho à primeira vista, mas se escrevêssemos

 

if (num=10) ...       /* Isto esta errado */

o compilador iria atribuir o valor 10 à variável num e a expressão num=10 iria retornar 10, fazendo com que o nosso valor de num fosse adulterado e fazendo com que a declaração fosse executada sempre. Este problema gera erros frequentes entre iniciantes e, portanto, muita atenção deve ser tomada.

 Os operadores de comparação são: == (igual),  != (diferente de), > (maior que),  < (menor que),  >= (maior ou igual), <= (menor ou igual).

 

for

O loop (laço) for é usado para repetir um comando, ou bloco de comandos, diversas vezes, de maneira que se possa ter um bom controle sobre o loop. Sua forma geral é:

 for (inicialização;condição;incremento) declaração;

 A declaração no comando for também pode ser um bloco ({ } ) e neste caso o ; é omitido. O melhor modo de se entender o loop for é ver de que maneira ele funciona "por dentro". O loop for é equivalente a se fazer o seguinte:

 

inicialização;
if (condição)
{
declaração;
incremento;
"Volte para o comando if"
}

 

Podemos ver então que o for executa a inicialização incondicionalmente e testa a condição. Se a condição for falsa ele não faz mais nada. Se a condição for verdadeira ele executa a declaração, o incremento e volta a testar a condição. Ele fica repetindo estas operações até que a condição seja falsa. Abaixo vemos um programa que coloca os primeiros 100 números na tela:

 

#include <stdio.h>
int main ()
{
	int count;
	for (count=1;count<=100;count=count+1) printf ("%d ",count);
	return(0);
}

Outro exemplo interessante é mostrado a seguir: o programa lê uma string e conta quantos dos caracteres desta string são iguais à letra 'c'

#include <stdio.h>
int main ()
{
    char string[100];     /* String, ate' 99 caracteres */
    int i, cont;
    printf("\n\nDigite uma frase: ");
    gets(string); /* Le a string */
    printf("\n\nFrase digitada:\n%s", string);
    cont = 0;
    for (i=0; string[i] != '\0'; i=i+1)
    {
        if ( string[i] == 'c' )      /* Se for a letra 'c' */
            cont = cont +1;          /* Incrementa o contador de caracteres */
    }
    printf("\nNumero de caracteres c = %d", cont);
}

Note o teste que está sendo feito no for: o caractere armazenado em string[i] é comparado com '\0' (caractere final da string). Caso o caractere seja diferente de '\0', a condição é verdadeira e o bloco do for é executado. Dentro do bloco existe um if que testa se o caractere é igual a 'c'. Caso seja, o contador de caracteres c é incrementado.


AUTO AVALIAÇÃO

Veja como você está.

a) Explique porque está errado fazer

         if (num=10) ...

O que irá acontecer?

b)  Escreva um programa que coloque os números de 1 a 100 na tela na ordem inversa (começando em 100 e terminando em 1).

c) Escreva um programa que leia uma string, conte quantos caracteres desta string são iguais a 'a' e substitua os que forem iguais a 'a' por 'b'. O programa deve imprimir o número de caracteres modificados e a string modificada.


Página Anterior Índice da Aula Próxima Página


Curso de C do CPDEE/UFMG - 1996 - 1999