Programação I
Rodrigo Paes
Instituto de Computação – UFAL
Desafio
 Escreva um programa que pergunte ao usuário
quantas vezes a frase: “Eu adoro faze...
Instituto de Computação – UFAL
Tentando
 Qual a entrada?
 Número n de vezes que a frase será repetida
 Qual a saída?
 ...
Instituto de Computação – UFAL
While
 Repete enquanto a expressão é avaliada como
verdadeira
 while (expressão)
{
Sequên...
Instituto de Computação – UFAL
Voltando ao nosso desafio
…
int contador, n;
scanf(“%d”,&n);
contador = 1;
while (contador ...
Instituto de Computação – UFAL
Entenda o fluxo
rodrigo@ic.ufal.br
…
int contador, n;
scanf(“%d”,&n);
contador = 1;
while (...
Instituto de Computação – UFAL
Programa que determina se um número é primo
 Um número é primo se não existem
divisores, e...
Instituto de Computação – UFAL
Solução
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Problemas
 Bem, mas se encontrarmos um divisor, já é
suficiente, não precisamos ir até o f...
Instituto de Computação – UFAL
Desafio
 Modifique o programa
 Vá somente até a metade
 Ao encontrar o divisor, pare o l...
Instituto de Computação – UFAL
No código
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Ainda dá pra melhorar?
 Ir somente até a raiz quadrada do número …
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
While
 Podemos usar o while para repetir a execução
de um programa
 Exemplo
while (usuári...
Instituto de Computação – UFAL
While
 Pode ocorrer de o while não ser executado
nenhuma vez, dependendo das condições
rod...
Instituto de Computação – UFAL
Ano Bissexto
 ano ao qual é acrescentado um dia extra, ficando ele com
366 dias
 objetivo...
Instituto de Computação – UFAL
Desafio
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Repetição
 Outra maneira de repetir: comando “for”
 FOR
 Sintaxe:
for (inicializações; c...
Instituto de Computação – UFAL
For
 Exemplos
int i;
for (i = 1; i <= 10; i = i + 1)
{
printf("%d ", i);
}
int i;
for (i =...
Instituto de Computação – UFAL
For: variações
 Todas as partes são opcionais
 for (;i<10;i++){
 for (;;i++){
 for (;;)...
Instituto de Computação – UFAL
For X While
 For
 Número de execuções conhecidas a priori
 While
 Repetições condiciona...
Instituto de Computação – UFAL
Do … while
 Sempre executa pelo menos uma vez
do
{
Sequencia de comandos;
}while (Expressa...
Instituto de Computação – UFAL
Do .. while
#include <stdio.h>
#include <ctype.h>
main()
{
char Resp;
do
{
Sequência de com...
Instituto de Computação – UFAL
Validação da entrada
...
// Código de leitura de um mês válido
int Mes;
do
{
printf("Digite...
Instituto de Computação – UFAL
Break
 A execução de um comando break dentro de
uma estrutura de repetição interrompe as
e...
Instituto de Computação – UFAL
Break
while (d <= r)
{
if (num % d == 0)
{
break;
}
else
{
d = d + 1;
}
}
rodrigo@ic.ufal.b...
Instituto de Computação – UFAL
Exercício
 Faça um programa que imprima todos os
números (inteiros e positivos) entre 10 e...
Instituto de Computação – UFAL
Exercício
Propriedade do 3025
 Repare a seguinte característica do número
3025:
 30 + 25 ...
Instituto de Computação – UFAL
Exercício
rodrigo@ic.ufal.br
Instituto de Computação – UFAL
Revendo os princípios
 Vocabulário
 while, do while, for, break …
 Entenda o fluxo
 Vej...
Próximos SlideShares
Carregando em…5
×

Aula 9 repeticao - Programação 1

428 visualizações

Publicada em

Aulas da Disciplina de Programação I do Professor Rodrigo Paes, UFAL

0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
428
No SlideShare
0
A partir de incorporações
0
Número de incorporações
0
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Aula 9 repeticao - Programação 1

  1. 1. Programação I Rodrigo Paes
  2. 2. Instituto de Computação – UFAL Desafio  Escreva um programa que pergunte ao usuário quantas vezes a frase: “Eu adoro fazer exercícios de programação 1” deve ser impressa.  O seu programa deve imprimir a frase a quantidade de vezes que o usuário digitar rodrigo@ic.ufal.br
  3. 3. Instituto de Computação – UFAL Tentando  Qual a entrada?  Número n de vezes que a frase será repetida  Qual a saída?  A frase repetida n vezes  Como ??  scanf(“%d”,&n); // entrada  // Saída:  // … mas precisamos fazer o comando abaixo ser // repetido n vezes  printf(“Eu adoro fazer exercícios de programacao 1n”); rodrigo@ic.ufal.br
  4. 4. Instituto de Computação – UFAL While  Repete enquanto a expressão é avaliada como verdadeira  while (expressão) { Sequência de comandos } rodrigo@ic.ufal.br
  5. 5. Instituto de Computação – UFAL Voltando ao nosso desafio … int contador, n; scanf(“%d”,&n); contador = 1; while (contador <= n) { printf(“Eu adoro fazer exercícios de programacao In”); contador ++; } rodrigo@ic.ufal.br
  6. 6. Instituto de Computação – UFAL Entenda o fluxo rodrigo@ic.ufal.br … int contador, n; scanf(“%d”,&n); contador = 1; while (contador <= n) { printf(“Eu adoro fazer exercícios de programacao In”); contador ++; } 1 2 6 5 3 1 2 3 4 5 6 4 false true
  7. 7. Instituto de Computação – UFAL Programa que determina se um número é primo  Um número é primo se não existem divisores, exceto 1 e ele mesmo  Escreva um programa que dado um número escreva na tela  “sim”, caso o número seja primo  “nao”, caso não seja primo rodrigo@ic.ufal.br
  8. 8. Instituto de Computação – UFAL Solução rodrigo@ic.ufal.br
  9. 9. Instituto de Computação – UFAL Problemas  Bem, mas se encontrarmos um divisor, já é suficiente, não precisamos ir até o final do programa  Da forma atual, ele sempre vai executar até o final  Além disso, só precisaríamos ir até a metade  Se um inteiro não possui um divisor próprio menor do que sua "metade", então ele é primo rodrigo@ic.ufal.br
  10. 10. Instituto de Computação – UFAL Desafio  Modifique o programa  Vá somente até a metade  Ao encontrar o divisor, pare o loop (repetição) rodrigo@ic.ufal.br
  11. 11. Instituto de Computação – UFAL No código rodrigo@ic.ufal.br
  12. 12. Instituto de Computação – UFAL Ainda dá pra melhorar?  Ir somente até a raiz quadrada do número … rodrigo@ic.ufal.br
  13. 13. Instituto de Computação – UFAL While  Podemos usar o while para repetir a execução de um programa  Exemplo while (usuário responder sim para continuar){ comandos; } rodrigo@ic.ufal.br
  14. 14. Instituto de Computação – UFAL While  Pode ocorrer de o while não ser executado nenhuma vez, dependendo das condições rodrigo@ic.ufal.br
  15. 15. Instituto de Computação – UFAL Ano Bissexto  ano ao qual é acrescentado um dia extra, ficando ele com 366 dias  objetivo de manter o calendário anual ajustado com a translação da Terra e com os eventos sazonais relacionados às estações do ano  Regras  De 4 em 4 anos é ano bissexto.  De 100 em 100 anos não é ano bissexto.  De 400 em 400 anos é ano bissexto  Para entender melhor:  São bissextos todos os anos múltiplos de 400  ex: 1600, 2000, 2400, 2800  Não são bissextos todos os múltiplos de 100 e não de 400  ex: 1700, 1800, 1900, 2100, 2200, 2300, 2500...  São bissextos todos os múltiplos de 4 e não múltiplos de 100  ex: 1996, 2004, 2008, 2012, 2016...  Não são bissextos todos os demais anos. rodrigo@ic.ufal.br
  16. 16. Instituto de Computação – UFAL Desafio rodrigo@ic.ufal.br
  17. 17. Instituto de Computação – UFAL Repetição  Outra maneira de repetir: comando “for”  FOR  Sintaxe: for (inicializações; condições de manutenção da repetição; incrementos) { sequencia de comandos } rodrigo@ic.ufal.br
  18. 18. Instituto de Computação – UFAL For  Exemplos int i; for (i = 1; i <= 10; i = i + 1) { printf("%d ", i); } int i; for (i = 11; i <= 10; i = i + 20) { printf("%d ", i); } rodrigo@ic.ufal.br
  19. 19. Instituto de Computação – UFAL For: variações  Todas as partes são opcionais  for (;i<10;i++){  for (;;i++){  for (;;){  Ver exemplo  for.c rodrigo@ic.ufal.br
  20. 20. Instituto de Computação – UFAL For X While  For  Número de execuções conhecidas a priori  While  Repetições condicionais rodrigo@ic.ufal.br
  21. 21. Instituto de Computação – UFAL Do … while  Sempre executa pelo menos uma vez do { Sequencia de comandos; }while (Expressao); rodrigo@ic.ufal.br
  22. 22. Instituto de Computação – UFAL Do .. while #include <stdio.h> #include <ctype.h> main() { char Resp; do { Sequência de comandos do programa; printf("Deseja continuar (S/N)?"); scanf("%c", &Resp); } while (toupper(Resp) == 'S'); } rodrigo@ic.ufal.br
  23. 23. Instituto de Computação – UFAL Validação da entrada ... // Código de leitura de um mês válido int Mes; do { printf("Digite mes: "); scanf("%d", &Mes); if ((Mes < 1) || (Mes > 12)) { printf("a Digitacao errada! Digite de novo n"); } } while ( (Mes < 1) || (Mes > 12) ); rodrigo@ic.ufal.br
  24. 24. Instituto de Computação – UFAL Break  A execução de um comando break dentro de uma estrutura de repetição interrompe as execuções da sequência de comandos da estrutura  mesmo que a condição de manutenção da repetição não tenha sido invalidada  USE COM MUITO CUIDADO !!! rodrigo@ic.ufal.br
  25. 25. Instituto de Computação – UFAL Break while (d <= r) { if (num % d == 0) { break; } else { d = d + 1; } } rodrigo@ic.ufal.br 1 2 4 1 2 34 true false true false
  26. 26. Instituto de Computação – UFAL Exercício  Faça um programa que imprima todos os números (inteiros e positivos) entre 10 e 100 que satisfaçam as duas condições abaixo:  não terminem em zero;  se o dígito da direita for removido, o número restante é divisor do número original.  Exemplos:  39: 3 é divisor de 39  48: 4 é divisor de 48 rodrigo@ic.ufal.br
  27. 27. Instituto de Computação – UFAL Exercício Propriedade do 3025  Repare a seguinte característica do número 3025:  30 + 25 = 55 e 55^2 = 3025  Faça um programa que leia uma série de valores (números inteiros de 4 digitos, um de cada vez) e diga se possuem a mesma característica. O programa termina quando for lido um valor menor que 1000 ou maior que 9999. rodrigo@ic.ufal.br
  28. 28. Instituto de Computação – UFAL Exercício rodrigo@ic.ufal.br
  29. 29. Instituto de Computação – UFAL Revendo os princípios  Vocabulário  while, do while, for, break …  Entenda o fluxo  Veja o estado  Entenda como as variáveis são alteradas em um loop  Passo-a-passo  Crie de forma incremental  Comece pequeno, teste, aumente um pouco, teste …  Do contreto ao abstrato  Não aplicável, ainda … rodrigo@ic.ufal.br

×