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. No exemplo, se num for maior que 10, será impressa a frase: "O número e maior que 10".  Repare que, se o número for igual a 10, estamos executando dois comandos. Para que isto fosse possível, tivemos que agrupa-los em um bloco que se inicia logo após a comparação e termina após o segundo printf. Repare também que quando queremos testar igualdades usamos o operador == e não =. Isto  porque o operador = representa apenas uma atribuição. 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 modificado 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 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);
    return(0);
}

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.

 

Mais um exemplo, agora envolvendo caracteres:

/* Este programa imprime o alfabeto: letras maiúsculas  */
 
#include <stdio.h>
int main()
{
    char letra;
    for(letra = 'A' ; letra <= 'Z' ; letra =letra+1)
    printf("%c ", letra);
}

Este programa funciona porque as letras maiúsculas de A a Z possuem código inteiro sequencial.


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 da EE/UFMG - 1996 - 2000