Baixe o app para aproveitar ainda mais
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
Compartilhar