Buscar

Outras estruturas de repetição

Prévia do material em texto

Outras estruturas de repetição
Aula 8
Bárbara Purkott Cezar
1Faculdade de Computação
Universidade Federal de Mato Grosso do Sul
Algoritmos e Programação
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 1 / 80
Conteúdo da aula
1 Introdução
2 Estrutura de repetição for
3 Estrutura de repetição do-while
4 Exercícios
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 2 / 80
Introdução
Duas outras estruturas de repetição na linguagem C:
for , equivalente à estrutura de repetição while
do-while
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 3 / 80
Introdução
Duas outras estruturas de repetição na linguagem C:
for , equivalente à estrutura de repetição while
do-while
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 3 / 80
Estrutura de repetição for
#include <stdio.h>
/* Mostra os 100 primeiros números inteiros positivos */
int main(void)
{
int numero;
for (numero = 1; numero <= 100; numero = numero + 1)
printf("%d\n", numero);
printf("\n");
return 0;
}
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 4 / 80
Estrutura de repetição for
operador unário de incremento ++ : adicionar uma unidade do
valor armazenado em seu operando
operador unário de decremento -- : subtrair uma unidade do
valor armazenado em seu operando
além de modificar os valores de seus operandos, ++ e --
podem ser usados como operadores prefixos e também como
operadores posfixos
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 5 / 80
Estrutura de repetição for
operador unário de incremento ++ : adicionar uma unidade do
valor armazenado em seu operando
operador unário de decremento -- : subtrair uma unidade do
valor armazenado em seu operando
além de modificar os valores de seus operandos, ++ e --
podem ser usados como operadores prefixos e também como
operadores posfixos
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 5 / 80
Estrutura de repetição for
operador unário de incremento ++ : adicionar uma unidade do
valor armazenado em seu operando
operador unário de decremento -- : subtrair uma unidade do
valor armazenado em seu operando
além de modificar os valores de seus operandos, ++ e --
podem ser usados como operadores prefixos e também como
operadores posfixos
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 5 / 80
Estrutura de repetição for
int cont;
cont = 1;
printf("cont vale %d\n", ++cont);
printf("cont vale %d\n", cont);
int cont;
cont = 1;
printf("cont vale %d\n", cont++);
printf("cont vale %d\n", cont);
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 6 / 80
Estrutura de repetição for
int cont;
cont = 1;
printf("cont vale %d\n", ++cont);
printf("cont vale %d\n", cont);
int cont;
cont = 1;
printf("cont vale %d\n", cont++);
printf("cont vale %d\n", cont);
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 6 / 80
Estrutura de repetição for
01 #include <stdio.h>
02
03 int main(void)
04 {
05 int numero, soma;
06
07 soma = 0;
08 for (numero = 1; numero <= 10; ++numero)
09 soma = soma + numero;
10
11 printf("A soma dos 10 primeiros inteiros é %d\n", soma);
12
13 return 0;
14 }
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 7 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
01 #include <stdio.h>
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 8 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
02
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 9 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
03 int main(void)
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 10 / 80
Estrutura de repetição for
entrada/saida
programa
04
memoria
{
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 11 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
05
?
int numero, soma;
?
numero soma
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 12 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
? ?
numero soma
06
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 13 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
?
numero soma
07 soma = 0;
0
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 14 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
01
for (numero = 1; numero <= 10; ++...08
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 15 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
1
09 soma = soma + numero;
1
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 16 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
for (numero = 1; numero <= 10; ++...08
12
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 17 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
09 soma = soma + numero;
2 3
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 18 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
for (numero = 1; numero <= 10; ++...08
33
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 19 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
09 soma = soma + numero;
3 6
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 20 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
for (numero = 1; numero <= 10; ++...08
4 6
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 21 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
09 soma = soma + numero;
4 10
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 22 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
for (numero = 1; numero <= 10; ++...08
5 10
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 23 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
09 soma = soma + numero;
5 15
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 24 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
for (numero = 1; numero <= 10; ++...08
6 15
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 25 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
09 soma = soma + numero;
6 21
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 26 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
for (numero = 1; numero <= 10; ++...08
7 21
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 27 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
09 soma = soma + numero;
7 28
Viduani Martinez (FACOM) Outrasestruturas de repetição Algoritmos e Programação 28 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
for (numero = 1; numero <= 10; ++...08
8 28
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 29 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
09 soma = soma + numero;
8 36
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 30 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
for (numero = 1; numero <= 10; ++...08
9 36
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 31 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
09 soma = soma + numero;
9 45
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 32 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
for (numero = 1; numero <= 10; ++...08
10 45
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 33 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
09 soma = soma + numero;
10 55
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 34 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
for (numero = 1; numero <= 10; ++...08
11 55
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 35 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
11 55
10
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 36 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
11 55
11
A soma dos 10 primeiros inteiros e 55
printf("A soma dos 10 primeiros ...
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 37 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
11 55
A soma dos 10 primeiros inteiros e 55
12
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 38 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
11 55
A soma dos 10 primeiros inteiros e 55
13 return 0;
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 39 / 80
Estrutura de repetição for
entrada/saida
programa
memoria
numero soma
11 55
A soma dos 10 primeiros inteiros e 55
14 }
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 40 / 80
Estrutura de repetição do-while
Problema: dada uma sequência de números inteiros terminada
com 0, calcular a soma desses números
podemos resolver esse problema usando a estrutura de repetição
while ou for
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 41 / 80
Estrutura de repetição do-while
Problema: dada uma sequência de números inteiros terminada
com 0, calcular a soma desses números
podemos resolver esse problema usando a estrutura de repetição
while ou for
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 41 / 80
Estrutura de repetição do-while
01 #include <stdio.h>
02
03 int main(void)
04 {
05 int numero, soma;
06
07 soma = 0;
08 do {
09 scanf("%d", &numero);
10 soma = soma + numero;
11 } while (numero != 0);
12
13 printf("A soma dos números informados é %d\n", soma);
14
15 return 0;
16 }
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 42 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
01 #include <stdio.h>
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 43 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
02
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 44 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
03 int main(void)
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 45 / 80
Estrutura de repetição do-while
entrada/saida
programa
04
memoria
{
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 46 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
05
?
int numero, soma;
?
numero soma
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 47 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
? ?
numero soma
06
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 48 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
?
numero soma
07 soma = 0;
0
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 49 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
0
08
?
do {
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 50 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
0
09 scanf("%d", &num);
6
6
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 51 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
6 6
soma = soma + numero;
6
10
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 52 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
6 6
6
11 } while (numero != 0);
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 53 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
08 do {
6 6
6
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 54 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
09 scanf("%d", &num);
6
63
3
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 55 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
soma = soma + numero;
6
10
3 9
3
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 56 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
6
11 } while (numero != 0);
3 9
3
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 57 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
08 do {
6
3 9
3
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 58 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
09 scanf("%d", &num);
6
3
1
1
9
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 59 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
soma = soma + numero;
6
10
3
1 10
1
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 60 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
6
11 } while (numero != 0);
3
1 10
1
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 61 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma08 do {
6
3
1
1 10
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 62 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
09 scanf("%d", &num);
6
3
1
0 10
0
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 63 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
soma = soma + numero;
6
10
3
10
1
0
0
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 64 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
6
11 } while (numero != 0);
3
10
1
0
0
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 65 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
6
3
10
1
0
0
12
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 66 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
6
3
10
1
0
0
13 printf("A soma dos numeros ...
A soma dos numeros informados e 10
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 67 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
6
3
10
1
0
0
A soma dos numeros informados e 10
14
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 68 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
6
3
10
1
0
0
A soma dos numeros informados e 10
15 return 0;
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 69 / 80
Estrutura de repetição do-while
entrada/saida
programa
memoria
numero soma
6
3
10
1
0
0
A soma dos numeros informados e 10
}16
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 70 / 80
Exercícios
1. Qualquer número natural de quatro algarismos pode ser dividido
em duas dezenas formadas pelos seus dois primeiros e dois
últimos dígitos.
Exemplos:
1297: 12 e 97; 5314: 53 e 14.
Verifique se o programa 8.4 imprime todos os números naturais
de quatro algarismos cuja raiz quadrada é a soma das dezenas
formadas pela divisão acima. Por exemplo, 9801 é um dos
números a ser impresso, já que
√
9801 = 99 = 98+ 01. Faça pelo
menos uma simulação da execução passo a passo do programa.
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 71 / 80
Exercícios
#include <stdio.h>
/* Imprime os números inteiros positivos de 4 dí-
gitos cuja raiz quadrada é igual à soma dos
seus dois primeiros e dois últimos dígitos */
int main(void)
{
int numero, DD, dd;
for (numero = 1000; numero <= 9999; numero++) {
DD = numero / 100;
dd = numero % 100;
if ( (DD + dd) * (DD + dd) == numero )
printf("%d\n", numero);
}
return 0;
}
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 72 / 80
Exercícios
2. Verifique se o programa 8.5 soluciona o seguinte problema: dado
um número inteiro não-negativo n, escreva um programa que
determine quantos dígitos o número n possui. Faça pelo menos
uma simulação da execução passo a passo da sua solução.
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 73 / 80
Exercícios
#include <stdio.h>
/* Recebe um número inteiro não-negativo e im-
prime a quantidade de dígitos que possui */
int main(void)
{
int n, digitos;
printf("Informe n: ");
scanf("%d", &n);
digitos = 0;
do {
n = n / 10;
digitos++;
} while (n > 0);
printf("O número tem %d dígitos\n", digitos);
return 0;
}
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 74 / 80
Exercícios
3. Dado um número natural na base binária, transformá-lo para a
base decimal.
Exemplo:
Dado 10010 a saída será 18, pois
1 · 24 + 0 · 23 + 0 · 22 + 1 · 21 + 0 · 20 = 18.
Faça pelo menos uma simulação da execução passo a passo da
sua solução.
4. Dado um número natural na base decimal, transformá-lo para a
base binária.
Exemplo:
Dado 18 a saída deverá ser 10010.
Faça pelo menos uma simulação da execução passo a passo da
sua solução.
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 75 / 80
Exercícios
3. Dado um número natural na base binária, transformá-lo para a
base decimal.
Exemplo:
Dado 10010 a saída será 18, pois
1 · 24 + 0 · 23 + 0 · 22 + 1 · 21 + 0 · 20 = 18.
Faça pelo menos uma simulação da execução passo a passo da
sua solução.
4. Dado um número natural na base decimal, transformá-lo para a
base binária.
Exemplo:
Dado 18 a saída deverá ser 10010.
Faça pelo menos uma simulação da execução passo a passo da
sua solução.
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 75 / 80
Exercícios
5. Dado um número inteiro positivo n, transformá-lo e imprimi-lo na
ordem inversa de seus dígitos.
Exemplo:
Dado 26578 a saída deverá ser 87562.
Faça pelo menos uma simulação da execução passo a passo da
sua solução.
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 76 / 80
Exercícios
6. Dizemos que um número natural n é palíndromo se
o primeiro algarismo de n é igual ao seu último algarismo;
o segundo algarismo de n é igual ao se penúltimo algarismo;
e assim sucessivamente.
Exemplos:
567765 é palíndromo;
32423 é palíndromo;
567675 não é palíndromo.
Dado um número natural n, verificar se n é palíndromo. Faça pelo
menos uma simulação da execução passo a passo da sua
solução.
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 77 / 80
Exercícios
7. Dados um número inteiro positivo n e uma sequência de n
números inteiros, determinar quantos segmentos de números
iguais consecutivos compõem essa sequência.
Exemplo:
Para n = 9, a sequência
︷︸︸︷
5 ,
︷ ︸︸ ︷
−2,−2,
︷ ︸︸ ︷
4, 4, 4, 4,
︷︸︸︷
1, 1 é formada
por 4 segmentos de números iguais.
Faça pelo menos uma simulação da execução passo a passo da
sua solução.
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 78 / 80
Exercícios
8. Uma sequência de números a1, a2, . . . , an, com n > 1, é chamada
uma sequência crescente se para cada par ai, ai+1 de números
consecutivos da sequência, com 1 6 1 < n, vale que ai 6 ai+1.
Dados um número inteiro positivo n e uma sequência de n
números inteiros, determinar o comprimento de um segmento
crescente de comprimento máximo.
Exemplos:
Na sequência 5, 10, 6,
︷ ︸︸ ︷
2, 4, 7, 9, 8,−3 o comprimento do
segmento crescente máximo é 4.
Na sequência 10, 8, 7, 5, 2 o comprimento do segmento
crescente máximo é 1.
Faça pelo menos uma simulação da execução passo a passo da
sua solução.
Viduani Martinez (FACOM) Outras estruturas de repetição Algoritmos e Programação 79 / 80
	Introdução
	Estrutura de repetição for
	Estrutura de repetição do-while
	Exercícios

Continue navegando

Outros materiais