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.