SlideShare ist ein Scribd-Unternehmen logo
1 von 29
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 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
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
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
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
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
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
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 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
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
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ário responder sim para continuar){
comandos;
}
rodrigo@ic.ufal.br
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
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
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; condições de manutenção da repetição; incrementos)
{
sequencia de comandos
}
rodrigo@ic.ufal.br
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
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
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
Instituto de Computação – UFAL
Do … while
 Sempre executa pelo menos uma vez
do
{
Sequencia de comandos;
}while (Expressao);
rodrigo@ic.ufal.br
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
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
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
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
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
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
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
 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

Weitere ähnliche Inhalte

Was ist angesagt?

C curso - notas de aula
C   curso - notas de aulaC   curso - notas de aula
C curso - notas de aulaLoAlves21
 
Tarefa 5 superlogo 3.0
Tarefa 5 superlogo 3.0Tarefa 5 superlogo 3.0
Tarefa 5 superlogo 3.0Victor Martins
 
Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01thomasdacosta
 
Aula 6 - Programação 1
Aula 6 - Programação 1Aula 6 - Programação 1
Aula 6 - Programação 1Isaac Barros
 
Programação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso CompletoProgramação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso Completothomasdacosta
 
Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06thomasdacosta
 
Aula03 repeticao
Aula03   repeticaoAula03   repeticao
Aula03 repeticaoYuri Passos
 
Algoritmos e Técnicas de Programação - Aula 03
Algoritmos e Técnicas de Programação - Aula 03Algoritmos e Técnicas de Programação - Aula 03
Algoritmos e Técnicas de Programação - Aula 03thomasdacosta
 
Aula 3 - Programação 1
Aula 3 - Programação 1Aula 3 - Programação 1
Aula 3 - Programação 1Isaac Barros
 
LAB 02 - Programação Estruturada 2
LAB 02 - Programação Estruturada 2LAB 02 - Programação Estruturada 2
LAB 02 - Programação Estruturada 2thomasdacosta
 

Was ist angesagt? (14)

C curso - notas de aula
C   curso - notas de aulaC   curso - notas de aula
C curso - notas de aula
 
Tarefa 5 superlogo 3.0
Tarefa 5 superlogo 3.0Tarefa 5 superlogo 3.0
Tarefa 5 superlogo 3.0
 
Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01
 
Apostila sobre o Visualg
Apostila sobre o VisualgApostila sobre o Visualg
Apostila sobre o Visualg
 
Aula 6 - Programação 1
Aula 6 - Programação 1Aula 6 - Programação 1
Aula 6 - Programação 1
 
Programação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso CompletoProgramação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso Completo
 
Algop - aula 05
Algop - aula 05Algop - aula 05
Algop - aula 05
 
Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06
 
Aula 02 (2)
Aula 02 (2)Aula 02 (2)
Aula 02 (2)
 
Introduço Superlogo
Introduço SuperlogoIntroduço Superlogo
Introduço Superlogo
 
Aula03 repeticao
Aula03   repeticaoAula03   repeticao
Aula03 repeticao
 
Algoritmos e Técnicas de Programação - Aula 03
Algoritmos e Técnicas de Programação - Aula 03Algoritmos e Técnicas de Programação - Aula 03
Algoritmos e Técnicas de Programação - Aula 03
 
Aula 3 - Programação 1
Aula 3 - Programação 1Aula 3 - Programação 1
Aula 3 - Programação 1
 
LAB 02 - Programação Estruturada 2
LAB 02 - Programação Estruturada 2LAB 02 - Programação Estruturada 2
LAB 02 - Programação Estruturada 2
 

Ähnlich wie Programa repete frase vezes

Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Isaac Barros
 
Aula 7 decisao - Programação 1
Aula 7 decisao - Programação 1Aula 7 decisao - Programação 1
Aula 7 decisao - Programação 1Isaac Barros
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Aula01
Aula01Aula01
Aula01vdlos
 
Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08André Phillip Bertoletti
 
Curso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação CCurso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação CJoberthSilva
 
Getting Started with Python
Getting Started with PythonGetting Started with Python
Getting Started with PythonRômulo Machado
 
Estrutura de linguagem C++
Estrutura de linguagem C++Estrutura de linguagem C++
Estrutura de linguagem C++Verônica Veiga
 
Lógica de Programação - Unimep/Pronatec - Aula11
Lógica de Programação - Unimep/Pronatec - Aula11Lógica de Programação - Unimep/Pronatec - Aula11
Lógica de Programação - Unimep/Pronatec - Aula11André Phillip Bertoletti
 
Conceito de funçao e modularizaçao
Conceito de funçao e modularizaçaoConceito de funçao e modularizaçao
Conceito de funçao e modularizaçaossuserc6132d
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programaçãoEdu Queiroz
 
Algoritmo e lógica de programação - aula 6
Algoritmo e lógica de programação - aula 6Algoritmo e lógica de programação - aula 6
Algoritmo e lógica de programação - aula 6engenhariadecomputacao
 
Algoritmos e LP - Aula 04 - Estruturas de Repeticao - p1.pdf
Algoritmos e LP - Aula 04 - Estruturas de Repeticao - p1.pdfAlgoritmos e LP - Aula 04 - Estruturas de Repeticao - p1.pdf
Algoritmos e LP - Aula 04 - Estruturas de Repeticao - p1.pdfEnio Filho
 

Ähnlich wie Programa repete frase vezes (20)

Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1
 
Aula 7 decisao - Programação 1
Aula 7 decisao - Programação 1Aula 7 decisao - Programação 1
Aula 7 decisao - Programação 1
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Aula01
Aula01Aula01
Aula01
 
Test-driven Development
Test-driven DevelopmentTest-driven Development
Test-driven Development
 
Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08
 
Atpaula3 150906041855-lva1-app6892
Atpaula3 150906041855-lva1-app6892Atpaula3 150906041855-lva1-app6892
Atpaula3 150906041855-lva1-app6892
 
Etapas da programação
Etapas da programaçãoEtapas da programação
Etapas da programação
 
Curso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação CCurso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação C
 
Getting Started with Python
Getting Started with PythonGetting Started with Python
Getting Started with Python
 
Estrutura de linguagem C++
Estrutura de linguagem C++Estrutura de linguagem C++
Estrutura de linguagem C++
 
Algop - aula 06
Algop - aula 06Algop - aula 06
Algop - aula 06
 
Lógica de Programação - Unimep/Pronatec - Aula11
Lógica de Programação - Unimep/Pronatec - Aula11Lógica de Programação - Unimep/Pronatec - Aula11
Lógica de Programação - Unimep/Pronatec - Aula11
 
Conceito de funçao e modularizaçao
Conceito de funçao e modularizaçaoConceito de funçao e modularizaçao
Conceito de funçao e modularizaçao
 
Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001
 
Algoritmos - Aula 13 A - Lacos em C
Algoritmos - Aula 13 A - Lacos em CAlgoritmos - Aula 13 A - Lacos em C
Algoritmos - Aula 13 A - Lacos em C
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programação
 
Algoritmo e lógica de programação - aula 6
Algoritmo e lógica de programação - aula 6Algoritmo e lógica de programação - aula 6
Algoritmo e lógica de programação - aula 6
 
Algoritmos e LP - Aula 04 - Estruturas de Repeticao - p1.pdf
Algoritmos e LP - Aula 04 - Estruturas de Repeticao - p1.pdfAlgoritmos e LP - Aula 04 - Estruturas de Repeticao - p1.pdf
Algoritmos e LP - Aula 04 - Estruturas de Repeticao - p1.pdf
 
Modulo 2
Modulo 2Modulo 2
Modulo 2
 

Mehr von Isaac Barros

Aula 15 recursao-organizacao-arquivos - Programação 1
Aula 15 recursao-organizacao-arquivos - Programação 1Aula 15 recursao-organizacao-arquivos - Programação 1
Aula 15 recursao-organizacao-arquivos - Programação 1Isaac Barros
 
Aula 14 estruturas - Programação 1
Aula 14 estruturas - Programação 1Aula 14 estruturas - Programação 1
Aula 14 estruturas - Programação 1Isaac Barros
 
Aula 13 ponteiros - Programação 1
Aula 13 ponteiros - Programação 1Aula 13 ponteiros - Programação 1
Aula 13 ponteiros - Programação 1Isaac Barros
 
Aula 11 strings - Programação 1
Aula 11 strings - Programação 1Aula 11 strings - Programação 1
Aula 11 strings - Programação 1Isaac Barros
 
Aula 10 arrays - Programação 1
Aula 10 arrays - Programação 1Aula 10 arrays - Programação 1
Aula 10 arrays - Programação 1Isaac Barros
 
Aula 8 principios_programacao - Programação 1
Aula 8 principios_programacao - Programação 1Aula 8 principios_programacao - Programação 1
Aula 8 principios_programacao - Programação 1Isaac Barros
 
Aula 4 - Programação 1
Aula 4 - Programação 1Aula 4 - Programação 1
Aula 4 - Programação 1Isaac Barros
 
Aula 16 arquivos - Programação 1
Aula 16 arquivos - Programação 1Aula 16 arquivos - Programação 1
Aula 16 arquivos - Programação 1Isaac Barros
 

Mehr von Isaac Barros (8)

Aula 15 recursao-organizacao-arquivos - Programação 1
Aula 15 recursao-organizacao-arquivos - Programação 1Aula 15 recursao-organizacao-arquivos - Programação 1
Aula 15 recursao-organizacao-arquivos - Programação 1
 
Aula 14 estruturas - Programação 1
Aula 14 estruturas - Programação 1Aula 14 estruturas - Programação 1
Aula 14 estruturas - Programação 1
 
Aula 13 ponteiros - Programação 1
Aula 13 ponteiros - Programação 1Aula 13 ponteiros - Programação 1
Aula 13 ponteiros - Programação 1
 
Aula 11 strings - Programação 1
Aula 11 strings - Programação 1Aula 11 strings - Programação 1
Aula 11 strings - Programação 1
 
Aula 10 arrays - Programação 1
Aula 10 arrays - Programação 1Aula 10 arrays - Programação 1
Aula 10 arrays - Programação 1
 
Aula 8 principios_programacao - Programação 1
Aula 8 principios_programacao - Programação 1Aula 8 principios_programacao - Programação 1
Aula 8 principios_programacao - Programação 1
 
Aula 4 - Programação 1
Aula 4 - Programação 1Aula 4 - Programação 1
Aula 4 - Programação 1
 
Aula 16 arquivos - Programação 1
Aula 16 arquivos - Programação 1Aula 16 arquivos - Programação 1
Aula 16 arquivos - Programação 1
 

Programa repete frase vezes

  • 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. 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. 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. 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. 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. 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. Instituto de Computação – UFAL Solução rodrigo@ic.ufal.br
  • 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. 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. Instituto de Computação – UFAL No código rodrigo@ic.ufal.br
  • 12. Instituto de Computação – UFAL Ainda dá pra melhorar?  Ir somente até a raiz quadrada do número … rodrigo@ic.ufal.br
  • 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. 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. 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. Instituto de Computação – UFAL Desafio rodrigo@ic.ufal.br
  • 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. 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. 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. 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. Instituto de Computação – UFAL Do … while  Sempre executa pelo menos uma vez do { Sequencia de comandos; }while (Expressao); rodrigo@ic.ufal.br
  • 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. 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. 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. 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. 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. 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. Instituto de Computação – UFAL Exercício rodrigo@ic.ufal.br
  • 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