Buscar

Aula 5 - Estruturas de Repetição

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
Estruturas de Repetição
*
Exemplo 1 – 1ª versão
Um programa que imprima na tela 10 vezes a mensagem: "Oi mundo !". 
# include <stdio.h>
int main()
{
	printf( "Oi mundo!\n");
	printf( "Oi mundo!\n");
	printf( "Oi mundo!\n");
	printf( "Oi mundo!\n");
	printf( "Oi mundo!\n");
	printf( "Oi mundo!\n");
	printf( "Oi mundo!\n");
	printf( "Oi mundo!\n");
	printf( "Oi mundo!\n");
	printf( "Oi mundo!\n"); 	
}
Muito ruim! Se aumentarmos a quantidade para 1000 vezes, fica inviável escrever dessa forma
*
Estrutura de Repetição
As estruturas de repetição (ou laços) permitem ao programador especificar que uma seqüência de instruções deve ser repetida.
Em C estudaremos três tipos de laços: para (for), enquanto (while) e faça - enquanto (do-while).
Dependendo do problema que desejamos solucionar, podemos escolher a estrutura de repetição mais adequada.
*
Estrutura de repetição para (for)
Esta estrutura é mais utilizada quando sabemos previamente quantas vezes o bloco de instruções deve ser repetido.
Este tipo de laço é chamado de laço contado, pois utiliza-se de uma variável que chamamos de contador que serve para controlar o número de repetições.
O contador começa com um valor inicial. A cada passo o laço efetua um teste sobre o valor do contador para decidir se deve repetir mais uma vez o bloco de instruções. Se o teste der verdadeiro, o bloco de instruções é repetido e o contador tem então seu valor atualizado (aumentado ou diminuído de uma constante).
*
Estrutura de repetição para (for)
Estrutura geral do laço for em C:
for (inicialização do contador; teste; atualização do contador)
{
	Bloco de instruções
}
 A inicialização do contador é a primeira instrução a ser executada e é executada uma única vez.
 Cada vez que o teste for verdadeiro as instruções são repetidas.
 A atualização do contador prepara-o para o próximo teste.
*
Exemplo 1
Um programa que imprima na tela 10 vezes a mensagem: "Oi mundo !". 
# include <stdio.h>
int main()
{
	int contador;
	for (contador = 1; contador <= 10; contador = contador + 1)
	{
		printf( "Oi mundo!\n");
	}
}
E se aumentarmos a quantidade para 1000 vezes, como fica?
*
Exemplo 2
Um programa que imprima na tela 1000 vezes a mensagem: "Oi mundo !". 
# include <stdio.h>
 int main()
{
	int contador;
	for (contador = 1; contador <= 1000; contador = contador + 1)
	{
		printf( "Oi mundo!\n");
	}
}
Recordando: Em C quando queremos aumentar o valor de uma variável 'a' em 1, podemos escrever a++ no lugar de a = a + 1.
Do mesmo modo, se quisermos decrementar em 1 pode ser escrito a-- no lugar de a = a – 1.
*
Exemplo 2
Um programa que imprima na tela 1000 vezes a mensagem: "Oi mundo !". 
# include <stdio.h>
 int main()
{
	int contador;
	for (contador = 1; contador <= 1000; contador++)
	{
		printf( "Oi mundo!\n");
	}
}
*
Exemplo 3
Um programa que imprima os números de 100 a 1. 
# include <stdio.h>
 int main()
{
	int contador;
	for (contador = 100; contador >=1; contador= contador - 1)
	{
		printf("%d\n", contador);
	}
}
*
Exemplo 3 
Um programa que leia a idade de 12 pessoas e calcule e imprima na tela a média das idades lidas.
# include <stdio.h>
 int main()
{
	int contador, idade, soma = 0;
	float media;
	for (contador = 1; contador <= 12; contador++)
	{
		printf( "\nDigite a idade: ");
		scanf("%d", &idade);
		soma = soma + idade;
	}
	media = (float) soma/12;
	printf("A media de idades eh: %f", media);
}
*
Exemplo 4
Escrever um programa que calcula e mostra a soma dos números pares compreendidos entre 13 e 73. 
# include <stdio.h>
 int main()
{
	int contador, soma = 0;
	for (contador = 13; contador <= 73; contador = contador + 1)
	{
		if (contador % 2 == 0)
		{
			soma = soma + contador;
		}
	}
	printf("A soma dos pares entre 13 e 73 eh: %d.\n", soma);
}
*
Exemplo 4 – 2ª versão 
Escrever um programa que calcula e mostra a soma dos números pares compreendidos entre 13 e 73. 
# include <stdio.h>
 int main()
{
	int contador, soma = 0;
	for (contador = 14; contador <= 73; contador = contador + 2)
	{
		soma = soma + contador;
	}
	 printf("A soma dos pares entre 13 e 73 eh: %d.\n", soma);
}
*
Estrutura de repetição enquanto (while)
Esta estrutura é mais utilizada quando não se sabe previamente quantas vezes o bloco de instruções deve ser repetido, embora também possa ser utilizada quando se conhece esse número;
Este tipo de laço é chamado de laço condicional;
A cada passo, o laço efetua um teste sobre uma variável que tem um valor pré definido (que pode ser inicializada pelo usuário). Se o teste for verdadeiro, o bloco de instruções é repetido e a variável deve então ser atualizada (pode ser atualizada pelo usuário, lendo-se do teclado).
*
Estrutura geral do laço enquanto:
Inicialização da(s) variável (is)
while (teste) 
{
	Bloco de instruções
	Atualização da(s) variável (is)
}
Repete o 2º, 3º e 4º passos enquanto o teste for verdadeiro.
Estrutura de repetição enquanto (while)
*
Exemplo 1 usando while
Um programa que imprima na tela 10 vezes a frase: "Oi Mundo!"
# include <stdio.h>
 int main()
{
	int contador;
	contador = 1;
	while (contador <= 10) 
	{
		printf("Oi Mundo!\n");
		contador = contador + 1;
	}
}
*
Exemplo 5
Um programa que leia um número indeterminado de valores inteiros maiores ou iguais a zero, e calcule e imprima na tela a média dos valores lidos. O programa deve finalizar a leitura de dados quando for digitado um valor negativo.
#include<stdio.h>
 int main()
{
	int num, soma = 0, qtd = 0;
	float media;
	printf("Digite um numero: ");
	scanf("%d", &num);
	while (num >= 0)
	{
		soma = soma + num;
		qtd = qtd + 1;
		printf("Digite um numero: ");
		scanf("%d", &num);
	}
	media = (float) soma/qtd;
	printf("\nA media dos numeros digitados eh: %f.\n", media);
}
*
Estrutura de repetição faça - enquanto (do - while)
Esta estrutura é mais utilizada quando não se sabe previamente quantas vezes o bloco de instruções deve ser repetido, mas quer que pelo menos uma vez o conjunto de instruções seja executado, muito embora também possa ser utilizada quando se conhece esse número;
Este tipo de laço é chamado de laço condicional com teste no fim;
A cada passo, o laço executa o bloco de instruções que contém a atualização da variável (que pode ser atualizada pelo usuário) e ao final efetua um teste sobre a variável. Se o teste for verdadeiro, o bloco de instruções é repetido. A inicialização da variável pode ser feita dentro ou fora do bloco de instruções.
*
Estrutura geral do laço do-while em C:
Inicialização da variável
do
{
	Bloco de instruções
	Atualização da variável
} while (teste);
Repete o 2º, 3º e 4º passos enquanto o teste for verdadeiro.
Estrutura de repetição do - while
Versao I: Inicialização fora do laço
*
Exemplo 1 usando do..while
Um programa que imprima na tela 10 vezes a mensagem: "Oi mundo!"
# include <stdio.h>
int main()
{
	int contador;
	contador = 1;
	do
	{
		printf("Oi mundo!\n");
		contador = contador + 1;
	} while (contador <= 10);
}
*
Exemplo 6
Um programa que leia uma quantidade indeterminada de valores inteiros positivos ou o valor zero (pelo menos um valor correto deverá ser digitado), e calcule e imprima na tela a soma dos valores lidos. O programa deve finalizar a leitura de dados quando for digitado um valor negativo.
#include<stdio.h>
int main()
{
	int num, soma = 0;
	printf("Digite um numero: ");
	scanf("%d", &num);
	do
	{
		soma = soma + num;
		printf("Digite um numero: ");
		scanf("%d", &num);
	} while (num >= 0);
	printf ("\nA soma dos numeros digitados eh: %d\n", soma);
}
*
Estrutura geral do laço do-while em C:
do
{
	 Bloco de instruções
	 Inicialização/Atualização da variável
	
} while (teste);
Repete o 1º, 2º e 3º passos enquanto o teste for verdadeiro.
Estrutura de repetição do - while
Versao II: Inicialização/Atualização dentro do laço
*
Exemplo 7
Um programa que leia um número inteiro com 4 dígitos e imprima na tela o primeiro dígito deste número. O programa deve repetir a leitura do valor enquanto o usuário digitar um valor inválido (diferente de 4 dígitos).
#include<stdio.h>
int main()
{
	int num, primeiro;
	do
	{
		printf("Digite um numero: ");
		scanf("%d", &num);
	} while (num <1000 || num >9999);
	primeiro = num/1000;
	printf("\nO primeiro digito eh: %d", primeiro);
}
*
Exemplo 7
Um programa que apresenta um menu com várias opções e repete a escolha até que seja digitada a opção de saída.
#include<stdio.h>
int main()
{
 char Opcao;
 do 
 {
 	 printf("Entre com uma opcão do menu abaixo: \n");
 	 printf("[1] - Inserir dados de aluno.\n");
 	 printf("[2] - Remover aluno do cadastro.\n");
 	 printf("[3] - Alterar os dados de um aluno.\n");
 	 printf("[4] - Sair do sistema de cadastro.\n");
 	 printf("Opcao: "); 
 	 scanf(" %c",&Opcao); 
 	 switch(Opcao)
	 {
 	case '1' : printf("Aqui insere aluno."); break;
 		case '2' : printf("Aqui remove aluno."); break;
 		case '3' : printf("Aqui altera Aluno."); break;
 		case '4' : printf("Fim da execução do sistema."); break;
 		default : printf("Opcão inválida."); break;
 } 
 } while (Opcao !='4');
}
*
Exercícios
Escrever um programa que leia um número inteiro n e calcule e mostre a tabuada do n. Mostre a tabuada na forma: 
1 x n = n 
2 x n = 2n 
3 x n = 3n 
... 
10 x n = 10n
Em uma eleição para prefeito existem quatro candidatos e 2.000 eleitores. Os votos são informados através de códigos (de maneira similar a uma Urna Eletrônica). Os dados utilizados para a contagem dos votos obedecem a seguinte codificação:
1, 2, 3 e 4: voto para os respectivos candidatos;
5: voto em branco;
Qualquer valor diferente de 1,2,3,4 e 5 é considerado voto nulo.
Elabore um programa que leia o voto de cada eleitor (código do candidato) e calcule a porcentagem de votos para cada candidato, a quantidade de votos nulos e a quantidade de votos em branco e o candidato que obteve mais votos.
*
Exercícios
Escreva um programa que calcule e apresente na tela a área de cada círculo através da fórmula A = PI * R * R, onde R (o valor que deverá ser digitado pelo usuário) representa o raio do círculo e PI é o número 3,14. Repetir o processo enquanto for digitado um valor de R maior que 0.
Escreva um programa que leia um número indeterminado de notas entre 0.0 e 10.0. Ao final imprima a média das notas e a quantidade de notas maiores ou iguais a 7. A digitação deve ser encerrada quando for digitada uma nota inválida. 
Faça um programa que leia uma quantidade não determinada de números positivos. Calcule a média dos valores pares, a média de valores ímpares e a média geral dos números lidos. A leitura encerrará quando for digitado um valor menor ou igual a zero.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais