Italo Info


Comandos de repetição #2 (Loops)

O fatorial de um número é a multiplicação do número por todos os seus antecessores, exemplos:

fatorial de 5 = 5*4*3*2*1 = 120
fatorial de 3 = 3*2*1 = 6

Mais abaixo, três versões de um programa que calcula o fatorial de um número informado pelo usuário:

Programa fatorial com for:


#include <stdio.h>

int main() {
    int num, i, fatorial;
    
    printf( "Informe um numero: " );
    scanf( "%d", &num );
    
    fatorial = 1;   
    for( i = 1; i <= num; i++ )
        fatorial *= i;      
    
    printf( "O fatorial de %d eh %d", num, fatorial );  
    return 0;
}

Programa fatorial com while:


#include <stdio.h>

int main() {
    int num, i, fatorial;
    
    printf( "Informe um numero: " );
    scanf( "%d", &num );
    
    fatorial = 1;   
    i = 1;
    while( i <= num ) {
        fatorial *= i;      
        i++;
    }
    
    printf( "O fatorial de %d eh %d", num, fatorial );  
    return 0;
}

Programa fatorial com do/while:


#include <stdio.h>

int main() {
    int num, i, fatorial;
    
    printf( "Informe um numero: " );
    scanf( "%d", &num );
    
    fatorial = 1;   
    i = 1;  
    do {
        fatorial *= i;      
        i++;
    } while( i <= num );
    
    printf( "O fatorial de %d eh %d", num, fatorial );  
    return 0;
}

Abaixo um programa que lê 3 números e mostra qual é o maior e qual é o menor:


#include <stdio.h>

int main() {
    int i, n, maior, menor;
    
    for( i = 1; i <= 3; i++ ) {
        printf( "Informe um numero: " );
        scanf( "%d", &n );
        
        if ( n > maior )
            maior = n;
        if ( n < menor )
            menor = n;
    }
        
    printf( "O maior numero eh %d", maior );    
    printf( "O menor numero eh %d", menor );
    return 0;
}


Exercício

Altere o programa acima para que o programa pergunte a quantidade de números a serem lidos e, então, leia a quantidade de números informada, mostrando no final, qual o número maior e qual o menor.

Ex: Seja quant a variável que tem armazenada a quantidade de números a serem lidas, se quant == 5, entao, ler 5 valores e armazenar o maior valor na variavel maior e o menor valor na variável menor

Série fibonacci

A série fibonacci é a seguinte: 1 1 2 3 5 8 13 21... Ou seja, cada elemento da séria é igual a soma dos dois elementos anteriores. Ex: 8 = 5 + 3; 3 = 2 + 1; 2 = 1 + 1. Abaixo, um programa que imprime a quantidade de elementos da séria fibonacci informada pelo usuário: Ex: Se o usuário informar 5, é mostrado 1 1 2 3 5.


#include <stdio.h>

int main() {
    int num, i, fibo, ant1, ant2;
    
    printf( "Informe um numero: " );
    scanf( "%d", &num );
    
    ant1 = 0;
    ant2 = 1;
    
    printf( "Serie fibonacci: " );
    printf( "%d ", ant2 );
    
    for( i = 1; i < num; i++ ) {
        fibo = ant1 + ant2;
            
        printf( "%d ", fibo );  
        
        ant1 = ant2;
        ant2 = fibo;        
    }   
    
    return 0;
}

Números aleatórios

Abaixo um exemplo que envolve a geração de números aleatórios:


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    int num, i;
    
    srand( time( NULL ) );
    
    printf( "Numeros sorteados: " );
    for( i = 1; i <= 10; i++ ) {    
        num = rand() % 10;  
        printf( "%d ", num );
    }    
    return 0;
}

No programa acima, para sortear um valor entre 0 e 9, foi utilizada a função rand em cojunto com o operador de resto de divisão: o %. Ex: para sortear números entre 0 e um número N, fazer num = rand() % (N+1). A função srand recebe um valor semente para geração do número aleatório. Nesse caso, foi passado como semente para a função srand é a quantidade de segundos passados desde 1 de janeiro de 1970 até o instante que o programa é executado (através da função time(NULL)). Desse modo, a função time sempre retorna um valor diferente a cada execução e a semente é sempre diferente. Sem o uso da função srand, os valores sorteados a cada execução são sempre os mesmos.

Para utilizar as funções rand e srand, inclua o arquivo de cabeçalho stdlib.h e para utilizar a função time, inclua a biblioteca time.h.

Exercícios

Experimente rodar o programa anterior para entender o que ele faz e, altere-o para resolver os exercícios seguintes:

1) Faça um programa que imprima oito valores sorteados entre 1 e 100.

2) Faça um programa que imprima oito valores sorteados entre 1 e um número informado pelo usuário.

Exercícios

1) Codifique um programa em C que mostre todos os divisores de um número informado pelo usuário.

2) Faça um programa em C que mostre se um número informado pelo usuário é ou não primo. Lembrando que um número é dito primo se for divisível apenas por 1 e por ele mesmo.

Dica: Numero nenhum (diferente de zero) é divisível por número maior que ele mesmo. Por isso, para verificar se um número é primo, basta verificar os números de 2 a metade do número. Se houver algum divisor entre 2 e metade do número, o número não é primo.

3) Faça um programa em que leia dois números e informe se o segundo número é múltiplo do primeiro. Ex: 6 é multiplo de 3, 8 é multiplo de 2 e de 4.