Baixe o app para aproveitar ainda mais
Prévia do material em texto
BCC701- Programac¸a˜o de Computadores I 04 - Estruturas de Repetic¸a˜o Universidade Federal de Ouro Preto - UFOP Departamento de Computac¸a˜o - DECOM http://www.decom.ufop.br/bcc701 BCC701 - 2018-01 DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 1 / 54 Suma´rio 1 Definic¸a˜o 2 Sintaxe ba´sica Iterac¸a˜o controlada logicamente (while) Iterac¸a˜o controlada por contador (for) 3 Comparando while e for 4 Exerc´ıcios 01 a 07 5 Lac¸os aninhados 6 Exerc´ıcios 08 a 10 DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 2 / 54 Programac¸a˜o Estruturada A Programac¸a˜o Estruturada e´ uma forma de programac¸a˜o de computadores que preconiza que todos os programas poss´ıveis podem ser reduzidos a apenas treˆs estruturas Sequeˆncia; Decisa˜o (desvio condicional); Iterac¸a˜o (lac¸o de repetic¸a˜o); DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 3 / 54 Programac¸a˜o Estruturada A Programac¸a˜o Estruturada e´ uma forma de programac¸a˜o de computadores que preconiza que todos os programas poss´ıveis podem ser reduzidos a apenas treˆs estruturas: sequeˆncia, decisa˜o e iterac¸a˜o. Sequeˆncia Os programas constituem-se de uma sequeˆncia de instruc¸o˜es, ou comandos, executados um apo´s o outro, conforme o fluxograma ao lado. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 4 / 54 Programac¸a˜o Estruturada A Programac¸a˜o Estruturada e´ uma forma de programac¸a˜o de computadores que preconiza que todos os programas poss´ıveis podem ser reduzidos a apenas treˆs estruturas: sequeˆncia, decisa˜o e iterac¸a˜o. Decisa˜o (desvio condicional) Sa˜o aplicados quando os programas precisam executar algumas instruc¸o˜es SOMENTE se determinada condic¸a˜o for verdadeira ou falsa; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 4 / 54 Programac¸a˜o Estruturada A Programac¸a˜o Estruturada e´ uma forma de programac¸a˜o de computadores que preconiza que todos os programas poss´ıveis podem ser reduzidos a apenas treˆs estruturas: sequeˆncia, decisa˜o e iterac¸a˜o. Iterac¸a˜o (lac¸o de repetic¸a˜o) Sa˜o aplicados quando os programas precisam executar algumas instruc¸o˜es ENQUANTO determinada condic¸a˜o for verdadeira; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 4 / 54 Programac¸a˜o Estruturada A Programac¸a˜o Estruturada e´ uma forma de programac¸a˜o de computadores que preconiza que todos os programas poss´ıveis podem ser reduzidos a apenas treˆs estruturas: sequeˆncia, decisa˜o e iterac¸a˜o. Iterac¸a˜o (repetic¸a˜o) Enquanto a condic¸a˜o for verdadeira: execute o conjunto de instruc¸o˜es 2; Quando a condic¸a˜o for falsa, finalize a repetic¸a˜o; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 4 / 54 Programac¸a˜o Estruturada A Programac¸a˜o Estruturada e´ uma forma de programac¸a˜o de computadores que preconiza que todos os programas poss´ıveis podem ser reduzidos a apenas treˆs estruturas: sequeˆncia, decisa˜o e iterac¸a˜o. Iterac¸a˜o (repetic¸a˜o) Enquanto a condic¸a˜o for verdadeira: execute o conjunto de instruc¸o˜es 2; Quando a condic¸a˜o for falsa, finalize a repetic¸a˜o; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 4 / 54 Programac¸a˜o Estruturada Sequeˆncia: Decisa˜o: Iterac¸a˜o: DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 5 / 54 Sintaxe ba´sica de repetic¸a˜o Em alguns casos e´ necessa´rio realizar a repetic¸a˜o de um certo conjunto de instruc¸o˜es; Assim, altera-se o fluxo de execuc¸a˜o do programa, executando as instruc¸o˜es inu´meras vezes consecutivamente; O conjunto de instruc¸o˜es e´ sempre o mesmo, mas os dados podem mudar a cada execuc¸a˜o; Cada execuc¸a˜o do lac¸o em conjunto com a avaliac¸a˜o da condic¸a˜o e´ denominada uma iterac¸a˜o; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 6 / 54 Sintaxe ba´sica de repetic¸a˜o Veremos dois tipos de repetic¸a˜o: Controlado logicamente: define-se explicitamente a condic¸a˜o atrave´s de uma expressa˜o lo´gica: Enquanto a condic¸a˜o permanecer verdadeira, as instruc¸o˜es sera˜o executadas; Controlado por contador: a condic¸a˜o e´ definida implicitamente por um contador: Existe uma sequeˆncia de contagem predefinida: in´ıcio, passo e fim; A cada iterac¸a˜o o contador e´ alterado pelo valor do passo; O lac¸o e´ executado enquanto o contador na˜o atinge ou ultrapasse o valor final; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 7 / 54 Sintaxe ba´sica de repetic¸a˜o: Controlado logicamente while <cond icao> < i n s t r u c o e s> end < condicao >: expressa˜o lo´gica que determina se o lac¸o continua (%T ) ou e´ encerrado (%F ); < instrucoes >: conjunto de instruc¸o˜es a serem executadas a cada iterac¸a˜o; while e end palavras reservadas; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 8 / 54 Comparando if e while i f <cond icao> [ then ] < i n s t r u c o e s> [ e l s e i f <c o n d i c a o 1> < i n s t r u c o e s 1> : e l s e i f <c o n d i c a o N> < i n s t r u c o e s N>] [ e l s e < i n s t r u c o e s N+1>] end whi le <cond icao> < i n s t r u c o e s > end if: execute as < instrucoes > CASO a < condicao > seja verdadeira (nenhuma ou uma u´nica vez). Em suas variac¸o˜es de sintaxe, permite escolher entre diferentes conjuntos de instruc¸o˜es; while: execute as < instrucoes > ENQUANTO a < condicao > for verdadeira (nenhuma ou va´rias vezes). DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 9 / 54 Exemplo 1 Implemente um programa que leia do teclado um nu´mero inteiro N e imprima todos os nu´meros inteiros do intervalo 0 ate´ N. Observac¸o˜es: A impressa˜o e´ em ordem crescente; Sera˜o impressos nu´meros >= 0 e <= N; O comando de imprimir e´ repetido (N + 1) vezes; Quando a varia´vel assume um valor > N, a repetic¸a˜o e´ encerrada (condic¸a˜o de parada). DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 10 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: ‡ Varia´veis DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 ‡ Varia´veis N float 3. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 ‡ Varia´veis N float 3. num float 0. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 ‡ Varia´veis N float 3. num float 0. 0 <= 3 bool %T DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 ‡ Varia´veis N float 3. num float 0. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 ‡ Varia´veis N float 3. num float 1. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N =input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 ‡ Varia´veis N float 3. num float 1. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 ‡ Varia´veis N float 3. num float 1. 1 <= 3 bool %T DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 ‡ Varia´veis N float 3. num float 1. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 ‡ Varia´veis N float 3. num float 2. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 ‡ Varia´veis N float 3. num float 2. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 ‡ Varia´veis N float 3. num float 2. 2 <= 3 bool %T DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 ‡ Varia´veis N float 3. num float 2. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 ‡ Varia´veis N float 3. num float 3. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 ‡ Varia´veis N float 3. num float 3. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 ‡ Varia´veis N float 3. num float 3. 3 <= 3 bool %T DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 3 ‡ Varia´veis N float 3. num float 3. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 3 ‡ Varia´veis N float 3. num float 4. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 3 ‡ Varia´veis N float 3. num float 4. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 3 ‡ Varia´veis N float 3. num float 4. 4 <= 3 bool %F DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 3 Fim do programa.‡ Varia´veis N float 3. num float 4. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Exemplo 1: while 1 N = input("Digite o valor limite: ") 2 num = 0 3 while num <= N 4 printf("%g\t", num) 5 num = num + 1 6 end 7 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 3 Fim do programa.‡ Varia´veis N float 3. num float 4. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 11 / 54 Sintaxe ba´sica de repetic¸a˜o: Controlado por contador fo r <v a r i a v e l > = < i n i c i o > : [ p a s s o :]< f im> < i n s t r u c o e s> end < variavel >: nome da varia´vel controladora do for, seus valores sera˜o definidos e atualizados automaticamente por: < inicio >: valor inicial, atribu´ıdo a` varia´vel na primeira iterac¸a˜o; < passo >: valor de incremento, atualiza o valor da varia´vel ao final de cada iterac¸a˜o. E´ opcional, o valor padra˜o e´ 1; < fim >: valor final, o lac¸o termina quando o valor da varia´vel se iguala ou ultrapassa o valor final; < instrucoes >: conjunto de instruc¸o˜es a serem executadas a cada iterac¸a˜o; for e end palavras reservadas; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 12 / 54 Exemplo 1 Implemente um programa que leia do teclado um nu´mero inteiro N e imprima todos os nu´meros inteiros do intervalo 0 ate´ N. Observac¸o˜es: A impressa˜o e´ em ordem crescente; Sera˜o impressos nu´meros >= 0 e <= N; O comando de imprimir e´ repetido (N + 1) vezes; Quando a varia´vel assume um valor > N, a repetic¸a˜o e´ encerrada (condic¸a˜o de parada). DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 13 / 54 Exemplo 1: for 1 N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: ‡ Varia´veis DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Exemplo 1: for 1 N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: 3 ‡ Varia´veis N float 3. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Exemplo 1: for 1 N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: 3 ‡ Varia´veis N float 3. num float ? DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Exemplo 1: for 1 N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: 3 ‡ Varia´veis N float 3. num float 0. 0 <= 3 bool %T DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Exemplo 1: for 1 N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: 3 0 ‡ Varia´veis N float 3. num float 0. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Exemplo 1: for 1N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: 3 0 ‡ Varia´veis N float 3. num float 0. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Exemplo 1: for 1 N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: 3 0 ‡ Varia´veis N float 3. num float 1. 1 <= 3 bool %T DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Exemplo 1: for 1 N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 ‡ Varia´veis N float 3. num float 1. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Exemplo 1: for 1 N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 ‡ Varia´veis N float 3. num float 1. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Exemplo 1: for 1 N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 ‡ Varia´veis N float 3. num float 2. 2 <= 3 bool %T DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Exemplo 1: for 1 N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 ‡ Varia´veis N float 3. num float 2. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Exemplo 1: for 1 N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 ‡ Varia´veis N float 3. num float 2. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Exemplo 1: for 1 N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 ‡ Varia´veis N float 3. num float 3. 3 <= 3 bool %T DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Exemplo 1: for 1 N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 3 ‡ Varia´veis N float 3. num float 3. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Exemplo 1: for 1 N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 3 ‡ Varia´veis N float 3. num float 3. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Exemplo 1: for 1 N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 3 ‡ Varia´veis N float 3. num float 3. 4 <= 3 bool %F DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Exemplo 1: for 1 N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 3 Fim do programa.‡ Varia´veis N float 3. num float 3. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Exemplo 1: for 1 N = input("Digite o valor limite: ") 2 for num = 0 : 1 : N 3 printf("%g\t", num) 4 end 5 printf("\nFim do programa.") Console Digite o valor limite: 3 0 1 2 3 Fim do programa.‡ Varia´veis N float 3. num float 3. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 14 / 54 Comparando while e for 1 N = i n p u t ( ” D i g i t e o v a l o r l i m i t e : ” ) 2 num = 0 3 w h i l e num <= N 4 p r i n t f ( ”%g\ t ” , num) 5 num = num + 1 6 end 7 p r i n t f ( ”\nFim do programa . ” ) 1 N = i n p u t ( ” D i g i t e o v a l o r l i m i t e : ” ) 2 f o r num = 0 : 1 : N 3 p r i n t f ( ”%g\ t ” , num) 4 end 5 p r i n t f ( ”\nFim do programa . ” ) while: todo o controle e´ feito pelo programador; for: o programador define os limites e o Scilab realiza o controle; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 15 / 54 Comparando while e for 1 N = i n p u t ( ” D i g i t e o v a l o r l i m i t e : ” ) 2 num = 0 3 w h i l e num <= N 4 p r i n t f ( ”%g\ t ” , num) 5 num = num + 1 6 end 7 p r i n t f ( ”\nFim do programa . ” ) 1 N = i n p u t ( ” D i g i t e o v a l o r l i m i t e : ” ) 2 f o r num = 0 : 1 : N 3 p r i n t f ( ”%g\ t ” , num) 4 end 5 p r i n t f ( ”\nFim do programa . ” ) while: todo o controle e´ feito pelo programador; for: o programador define os limites e o Scilab realiza o controle; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 15 / 54 Comparando while e for 1 N = i n p u t ( ” D i g i t e o v a l o r l i m i t e : ” ) 2 num = 0 3 w h i l e num <= N 4 p r i n t f ( ”%g\ t ” , num) 5 num = num + 1 6 end 7 p r i n t f ( ”\nFim do programa . ” ) 1 N = i n p u t ( ” D i g i t e o v a l o r l i m i t e : ” ) 2 f o r num = 0 : 1 : N 3 p r i n t f ( ”%g\ t ” , num) 4 end 5 p r i n t f ( ”\nFim do programa . ” ) while: todo o controle e´ feito pelo programador; for: o programador define os limites e o Scilab realiza o controle; Observac¸a˜o: Todo for pode ser implementado com um while correspondente, mas a rec´ıproca na˜o e´ verdadeira. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 15 / 54 Comparando while e for Quando usar while e quando usar for? while Quando NA˜O se sabe de antema˜o a quantidade de repetic¸o˜es que devera˜o ser executadas, pois isto depende da execuc¸a˜o das < instrucoes >. for Quando um intervalo de dados bem definido precisa ser percorrido e na˜o depende da execuc¸a˜o das < instrucoes >. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 16 / 54 Comparando while e for Quando usar while e quando usar for? No caso do Exemplo 1: Implemente um programa que leia do teclado um nu´mero inteiro N e imprima todos os nu´meros inteiros do intervalo 0 ate´ N. A quantidade de repetic¸o˜es e´ conhecida de antema˜o e na˜o depende da execuc¸a˜o das < instrucoes >; Enta˜o, o mais adequado e´ utilizar o for; 1 N = i n p u t ( ” D i g i t e o v a l o r l i m i t e : ” ) 2 f o r num = 0 : 1 : N 3 p r i n t f ( ”%g\ t ” , num) 4 end 5 p r i n t f ( ”\nFim do programa . ” ) DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 17 / 54 Comparando while e for Quando usar while e quando usar for? Use o for sempre que poss´ıvel, ele sera´ mais mais seguro e eficiente; Cuidado ao utilizar o while, pois sera´ poss´ıvel que o lac¸o nunca termine (lac¸o infinito), veja: 1 x = 0 2 w h i l e x <= 10 3 p r i n t f ( ”\nx = %g” , x ) 4 // O v a l o r de x nunca s e r a a l t e r a d o . 5 // Logo , o l a c o e i n f i n i t o . 6 end 1 x = 0 2 w h i l e x <= 10 3 p r i n t f ( ”\nx = %g” , x ) 4 x = x − 0 . 2 5 // O v a l o r de x e decrementado . 6 // Logo , o l a c o e i n f i n i t o . 7 end DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 18 / 54 Exemplo 2 Implemente um programa que leia do teclado um nu´mero inteiro N e imprima todos os nu´meros inteiros do intervalo N ate´ 0. Depois disso, o usua´rio deve responder se deseja executar novamente, caso a resposta seja ’sim’ ele repete a execuc¸a˜o do programa. Observac¸o˜es: O programa agora e´ praticamente o mesmo do exemplo 1, mas a “contagem” e´ regressiva; Pore´m, agora ele na˜o e´ encerrado enquanto o usua´riona˜o permitir; Continua sendo um u´nico programa, mas tudo o que era feito antes devera´ estar em um lac¸o; Na˜o e´ poss´ıvel saber quando o programa sera´ encerrado, pois isso depende da resposta do usua´rio. Enta˜o, para isso e´ necessa´rio usar o while. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 19 / 54 Exemplo 2 Implemente um programa que leia do teclado um nu´mero inteiro N e imprima todos os nu´meros inteiros do intervalo N ate´ 0. Depois disso, o usua´rio deve responder se deseja executar novamente, caso a resposta seja ’sim’ ele repete a execuc¸a˜o do programa. Observac¸o˜es: Vamos dividir este problema em dois: Imprimir os nu´meros de N a 0; Repetir a execuc¸a˜o, fazendo a pergunta ao usua´rio; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 19 / 54 Exemplo 2 Implemente um programa que leia do teclado um nu´mero inteiro N e imprima todos os nu´meros inteiros do intervalo N ate´ 0. Depois disso, o usua´rio deve responder se deseja executar novamente, caso a resposta seja ’sim’ ele repete a execuc¸a˜o do programa. Resolvendo o primeiro problema: 1 N = i n p u t ( ” D i g i t e o v a l o r l i m i t e : ” ) 2 f o r num = N : −1 : 0 3 p r i n t f ( ”%g\ t ” , num) 4 end 1 N = i n p u t ( ” D i g i t e o v a l o r l i m i t e : ” ) 2 num = N 3 w h i l e num >= 0 4 p r i n t f ( ”%g\ t ” , num) 5 num = num − 1 6 end Observe as diferenc¸as para o exemplo 1! DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 19 / 54 Exemplo 2 Implemente um programa que leia do teclado um nu´mero inteiro N e imprima todos os nu´meros inteiros do intervalo N ate´ 0. Depois disso, o usua´rio deve responder se deseja executar novamente, caso a resposta seja ’sim’ ele repete a execuc¸a˜o do programa. Resolvendo o segundo problema: 1 c o n t i n u a r = %t // Deve e x e c u t a r p e l o menos uma vez . 2 w h i l e c o n t i n u a r // c o n t i n u a r assume um v a l o r l o g i c o . 3 // Programa que p r e c i s a e x e c u t a r r e p e t i d a s v e z e s ! // 4 // Pergunta ao u s u a r i o . 5 r e s p = i n p u t ( ” D e s e j a e x e c u t a r novamente ( s im / nao ) ? ” , ” s ” ) 6 c o n t i n u a r = r e s p == ” sim ” 7 end 8 p r i n t f ( ”\nFim do programa . ” ) DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 19 / 54 Exemplo 2 Implemente um programa que leia do teclado um nu´mero inteiro N e imprima todos os nu´meros inteiros do intervalo N ate´ 0. Depois disso, o usua´rio deve responder se deseja executar novamente, caso a resposta seja ’sim’ ele repete a execuc¸a˜o do programa. Soluc¸a˜o: 1 c o n t i n u a r = %t // Deve e x e c u t a r p e l o menos uma vez . 2 w h i l e c o n t i n u a r // c o n t i n u a r assume um v a l o r l o g i c o . 3 // P r i m e i r o problema . 4 N = i n p u t ( ” D i g i t e o v a l o r l i m i t e : ” ) 5 f o r num = N : −1 : 0 6 p r i n t f ( ”%g\ t ” , num) 7 end 8 // P r i m e i r o problema . 9 // Agora e n e c e s s a r i o f a z e r a p e r g u n t a ao u s u a r i o . 10 r e s p = i n p u t ( ” D e s e j a e x e c u t a r novamente ( s im / nao ) ? ” , ” s ” ) 11 c o n t i n u a r = r e s p == ” sim ” 12 end 13 p r i n t f ( ”\nFim do programa . ” ) DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 19 / 54 Exemplo 3 Implemente um programa que pec¸a um valor N ao usua´rio e calcule e imprima o valor da se´rie: S = N∑ i=1 2i − 1 i Observac¸o˜es: S = 11 + 3 2 + 5 3 + 7 4 + ...+ 2N−1 N O somato´rio e´ calculado de forma acumulativa ate´ o N-e´simo termo: S inicialmente e´ 0 (zero), valor nulo para a soma; Quando i = 1, S = 1/1, ou seja, S = S + 1/1; Quando i = 2, S = (1/1) + 3/2, ou seja, S = S + 3/2; Quando i = 3, S = (1/1 + 3/2) + 5/3, ou seja, S = S + 5/3; E assim por diante; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 20 / 54 Exemplo 3 Implemente um programa que pec¸a um valor N ao usua´rio e calcule e imprima o valor da se´rie: S = N∑ i=1 2i − 1 i Observac¸o˜es: Devo usar while ou for? for, pois o intervalo [1, N] e´ bem definido e conhecido antes do in´ıcio da execuc¸a˜o do lac¸o; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 20 / 54 Exemplo 3 Implemente um programa que pec¸a um valor N ao usua´rio e calcule e imprima o valor da se´rie: S = N∑ i=1 2i − 1 i Observac¸o˜es: Toda se´rie matema´tica apresentara´ um padra˜o para o ca´lculo de cada termo (expl´ıcito ou impl´ıcito): Neste caso e´ expl´ıcito e definido por (2 ∗ i − 1)/i ; Caso seja impl´ıcito voceˆ deve identificar o padra˜o. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 20 / 54 Exemplo 3 S = N∑ i=1 2i − 1 i = 1 1 + 3 2 + 5 3 + 7 4 + ...+ 2N − 1 N 1 N = i n p u t ( ” D i g i t e a q u a n t i d a d e de termos : ” ) 2 // Antes de i n i c i a r o s o m a t o r i o a c u m u l a t i v o 3 // e n e c e s s a r i o d e f i n i r S e seu v a l o r i n i c i a l . 4 S = 0 // V a l o r n e u t r o para a soma e 0 ( z e r o ) . 5 // A s e g u i r o l a c o para o c a l c u l o a c u m u l a t i v o . 6 f o r i = 1 : N 7 S = S + (2 ∗ i − 1) / i 8 end 9 // D e s p o i s da c o n c l u s a o do l a c o o r e s u l t a d o 10 // e c o n h e c i d o e pode s e r i m p r e s s o na t e l a . 11 p r i n t f ( ”\nO v a l o r da s e r i e e %g. ” , S ) 12 p r i n t f ( ”\nFim do programa . ” ) DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 21 / 54 Exemplo 4 Em matema´tica, o algoritmo de Euclides e´ um me´todo simples e eficiente de encontrar o ma´ximo divisor comum entre dois nu´meros inteiros diferentes de zero. A ideia principal no Algoritmo de Euclides e´ que o MDC pode ser calculado iterativamente, usando a seguinte propriedade: MDC (a, b) = MDC (b, r), onde r e´ o resto da divisa˜o de a por b. O MDC resultante sera´ obtido quando o resto da divisa˜o for 0 (zero). DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 22 / 54 Exemplo 4 Exemplificando, seja a = 348 e b = 156: Passo 1: r = 36 (resto da divisa˜o de 348 por 156); Passo 2: r = 12 (resto da divisa˜o de 156 por 36); Passo 3: r = 0 (resto da divisa˜o de 36 por 12); Como r == 0 no passo 3, o valor do MDC e´ 12 (o u´ltimo divisor); DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 23 / 54 Exemplo 4 Exemplificando, seja a = 348 e b = 156: Passo 1: r = 36 (resto da divisa˜o de 348 por 156); Passo 2: r = 12 (resto da divisa˜o de 156 por 36); Passo 3: r = 0 (resto da divisa˜o de 36 por 12); Como r == 0 no passo 3, o valor do MDC e´ 12 (o u´ltimo divisor); Soluc¸a˜o: 1 x = i n p u t ( ” D i g i t e um v a l o r : ” ) 2 y = i n p u t ( ” D i g i t e o u t r o v a l o r : ” ) 3 a = x 4 b = y 5 w h i l e b ˜= 0 6 r = modulo ( a , b ) 7 a = b 8 b = r 9 end 10 p r i n t f ( ”MDC(%g, %g) = %g” , x , y , a ) DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 23 / 54 Exemplo 5 Implemente um programa que leia do teclado um nu´mero N que determina a quantidade de nu´meros inteiros maiores do que zero a serem lidos do teclado e imprima a me´dia dos valores digitados. Observac¸o˜es: E´ necessa´rio verificar a restric¸a˜o imposta aos nu´meros; A me´dia e´ computada a partir do somato´rio de todos os nu´meros; Somente depois que se conhece o somato´rio e´ que se deve calcular o valor da me´dia; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 24 / 54 Exemplo 5 Implemente um programa que leia do teclado um nu´mero N que determina a quantidade de nu´meros inteiros maiores do que zero a serem lidos do teclado e imprima a me´dia dos valores digitados. Observac¸o˜es: Precisaremos de dois lac¸os: Um para ler todos os nu´meros e processar o seu somato´rio. Neste caso teremos um intervalo [1, N] e deveremos utilizar o for; Outro para validar os nu´meros.Neste caso, na˜o sabemos quantas vezes o usua´rio digitara´ um nu´mero inva´lido, sendo assim, e´ obrigato´rio o uso do while. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 24 / 54 Exemplo 5 Implemente um programa que leia do teclado um nu´mero N que determina a quantidade de nu´meros inteiros maiores do que zero a serem lidos do teclado e imprima a me´dia dos valores digitados. Soluc¸a˜o: 1 N = i n p u t ( ” D i g i t e o v a l o r de N: ” ) 2 Media = 0 // I n i c i a l m e n t e armazenara o s o m a t o r i o . 3 f o r i = 1 : N 4 // Usando s p r i n t f para uma mensagem mais i n f o r m a t i v a . 5 Num = i n p u t ( s p r i n t f ( ” D i g i t e o v a l o r %g: ” , i ) ) 6 // Num tem que s e r i n t e i r o e maior do que z e r o . 7 w h i l e Num ˜= i n t (Num) | Num <= 0 // V a l i d a c a o . 8 p r i n t f ( ”O v a l o r nao e i n t e i r o e maior do que z e r o .\ n” ) 9 Num = i n p u t ( s p r i n t f ( ” D i g i t e o v a l o r %g: ” , i ) ) 10 end 11 // Agora Num tem um v a l o r v a l i d o . 12 Media = Media + Num 13 end 14 Media = Media / N // A p a r t i r de agora armazena a media . 15 p r i n t f ( ”\nA media dos %g numeros e %. 4 f . ” , N, Media ) DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 24 / 54 Exemplo 6 Implemente um programa que leia do teclado um nu´mero N que determina a quantidade de nu´meros inteiros maiores do que zero a serem lidos do teclado e imprima o produto´rio dos valores digitados. Observac¸o˜es: E´ praticamente igual ao exemplo anterior, mas ao inve´s da me´dia solicita o produto´rio; Para a me´dia precisamos do somato´rio, o que diferencia o produto´rio do somato´rio, ale´m da operac¸a˜o matema´tica envolvida, e´ o valor inicial; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 25 / 54 Exemplo 6 Implemente um programa que leia do teclado um nu´mero N que determina a quantidade de nu´meros inteiros maiores do que zero a serem lidos do teclado e imprima o produto´rio dos valores digitados. Soluc¸a˜o: 1 N = i n p u t ( ” D i g i t e o v a l o r de N: ” ) 2 P r o d u t o r i o = 1 // V a l o r n e u t r o para o p r o d u t o r i o . 3 f o r i = 1 : N 4 // Usando s p r i n t f para uma mensagem mais i n f o r m a t i v a . 5 Num = i n p u t ( s p r i n t f ( ” D i g i t e o v a l o r %g: ” , i ) ) 6 // Num tem que s e r i n t e i r o e maior do que z e r o . 7 w h i l e Num ˜= i n t (Num) | Num <= 0 // V a l i d a c a o . 8 p r i n t f ( ”O v a l o r nao e i n t e i r o e maior do que z e r o .\ n” ) 9 Num = i n p u t ( s p r i n t f ( ” D i g i t e o v a l o r %g: ” , i ) ) 10 end 11 // Agora Num tem um v a l o r v a l i d o . 12 P r o d u t o r i o = P r o d u t o r i o ∗ Num 13 end 14 p r i n t f ( ”\nO p r o d u t o r i o dos %g numeros e %. 4 f . ” , N, P r o d u t o r i o ) DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 25 / 54 Exerc´ıcio 1 Um aluno foi ao supermercado e gastou X reais com as compras da semana. Escreva um programa que tenha como entrada o valor X da compra. O programa deve determinar quantas notas de 50, de 10 e de 1 real sa˜o suficientes para o pagamento da compra. Obs: O programa so´ devera´ imprimir a quantidade de notas que forem maiores do que zero. O valor da compra e´ um nu´mero inteiro e maior do que 0 (zero). DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 26 / 54 Exerc´ıcio 1: Soluc¸a˜o 1 v a l o r = i n p u t ( ’ V a l o r ( R$ ) : ’ ) 2 c i n q u e n t a = 0 ; dez = 0 ; um = 0 3 w h i l e v a l o r > 0 4 i f v a l o r >= 50 then 5 v a l o r = v a l o r − 50 6 c i n q u e n t a = c i n q u e n t a + 1 7 e l s e i f v a l o r >= 10 8 v a l o r = v a l o r − 10 9 dez = dez + 1 10 e l s e 11 v a l o r = v a l o r − 1 12 um = um + 1 13 end 14 end 15 i f c i n q u e n t a > 0 then 16 p r i n t f ( ’ Notas de R$ 5 0 : %g.\ n ’ , c i n q u e n t a ) 17 end 18 i f dez > 0 then 19 p r i n t f ( ’ Notas de R$ 1 0 : %g.\ n ’ , dez ) 20 end 21 i f um > 0 then 22 p r i n t f ( ’ Notas de R$ 1 : %g. ’ , um) 23 end DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 27 / 54 Exerc´ıcio 2 Um determinado material radioativo perde 1% de sua massa a cada 50 segundos. Codifique um programa que leia a massa inicial em gramas. A massa fornecida deve ser maior que 0.5 gramas e o programa repete a entrada ate´ que uma massa com esta especificac¸a˜o seja fornecida. O programa calcula e imprime o tempo necessa´rio para que a massa se torne menor que 0.5 gramas. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 28 / 54 Exerc´ıcio 2: Soluc¸a˜o 1 m a s s a i n i c i a l = 0 // Um v a l o r i n i c i a l que e n t r a no w h i l e . 2 w h i l e m a s s a i n i c i a l < 0 . 5 3 m a s s a i n i c i a l = i n p u t ( ’ D i g i t e a massa ( g ) : ’ ) 4 end 5 massa = m a s s a i n i c i a l 6 segundos = 0 7 w h i l e massa >= 0 . 5 8 segundos = segundos + 50 9 massa = massa − massa ∗ 0 . 0 1 10 end 11 p r i n t f ( ’ Massa i n i c i a l = %. 4 f ( g ) .\ n ’ , m a s s a i n i c i a l ) 12 p r i n t f ( ’ Massa f i n a l = %. 4 f ( g ) .\ n ’ , massa ) DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 29 / 54 Exerc´ıcio 3 Fazer um algoritmo para calcular a raiz quadrada (x) de um nu´mero positivo (y) usando o roteiro abaixo, baseado no me´todo de aproximac¸o˜es sucessivas de Newton: A primeira aproximac¸a˜o para a raiz quadrada de y e´ x1 = y/2; As sucessivas aproximac¸o˜es sera˜o xn+1 = x2n+y 2∗xn O lac¸o dos ca´lculos das aproximac¸o˜es devera´ terminar quando: |xi − xi−1| < 0.0001 DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 30 / 54 Exerc´ıcio 3: Soluc¸a˜o 1 y = i n p u t ( ’ D i g i t e o v a l o r de Y : ’ ) 2 x1 = y / 2 3 x2 = ( x1 ˆ 2 + y ) / (2 ∗ x1 ) 4 w h i l e abs ( x2 − x1 ) >= 0.0001 5 x1 = x2 6 x2 = ( x1 ˆ 2 + y ) / (2 ∗ x1 ) 7 end 8 p r i n t f ( ’ R a i z quadrada de %. 2 f e %. 2 f . ’ , y , x2 ) DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 31 / 54 Exerc´ıcio 4 Elabore um programa que solicita ao usua´rio um valor inteiro N qualquer e calcula N!. Exemplos de sa´ıdas do programa: Digite N: 9 9! = 362880 Digite N: -16 Numero invalido! Digite N: 4 4! = 24 DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 32 / 54 Exerc´ıcio 4: Soluc¸a˜o 1 numero = i n p u t ( ’ D i g i t e um numero : ’ ) 2 i f numero >= 1 then 3 f a t o r i a l = 1 4 f o r termo = 1 : numero 5 f a t o r i a l = f a t o r i a l ∗ termo 6 end 7 p r i n t f ( ’%g! = %g ’ , numero , f a t o r i a l ) 8 e l s e 9 p r i n t f ( ’ Numero i n v a l i d o ! ’ ) 10 end DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 33 / 54 Exerc´ıcio 5 Elabore um programa que calcule e imprima uma tabela de senos, conforme o exemplo abaixo: x seno(x) 0.0 0.0000 0.2 0.1987 0.4 0.3894 : : 6.2 -0.0831 Utilize a func¸a˜o sin(x) para calcular o seno de x; O crite´rio de parada e´ x = 6.2 = 2 ∗ pi. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 34 / 54 Exerc´ıcio 5: Soluc¸a˜o 1 p r i n t f ( ’ x\ t s e n o ( x ) ’ ) 2 f o r x = 0 . 0 : 0 . 2 : 6 . 2 3 p r i n t f ( ’%. 1 f \t% . 4 f ’ , x , s i n ( x ) ) 4 end DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 35 / 54 Exerc´ıcio 6 Elabore um programa que exiba para o usua´rio se um nu´mero e´ primo ou na˜o. Exemplo de sa´ıda do programa: Digite o nu´mero: 4 Na˜o e´ primo! Digite o nu´mero: 13 E´ primo! DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 36 / 54 Exerc´ıcio 6: Soluc¸a˜o 1 n = i n p u t ( ’ D i g i t e o numero : ’ ) 2 epr imo = %t 3 f o r f = 2 : n / 2 : 4 i f modulo ( n , f ) == 0 then 5 epr imo = %f 6 end 7 end 8 i f epr imo then 9 p r i n t f ( ’E pr imo ! ’ ) 10 e l s e 11 p r i n t f ( ’ Nao e pr imo ! ’ ) 12 end DECOM 04 - Estruturas de Repetic¸a˜oBCC701 - 2018-01 37 / 54 Exerc´ıcio 7 Elabore um programa que exiba na tela a tabuada do 1 ao 9. Exemplo de sa´ıda do programa: 1 x 1 = 1 1 x 2 = 2 : 1 x 9 = 9 2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 : 9 x 9 = 81 DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 38 / 54 Exerc´ıcio 7: Soluc¸a˜o 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 39 / 54 Lac¸os Aninhados Um lac¸o inserido dentro de outro lac¸o: 1 A execuc¸a˜o dos lac¸os comec¸a no lac¸o externo; 2 Cada iterac¸a˜o do lac¸o externo causa uma execuc¸a˜o do lac¸o interno; 3 Assim, as [instrucoes 1] e [instrucoes 3] executam n vezes, ja´ as <instrucoes 2> executam n ∗m vezes; 1 f o r i = 1 : n 2 [ i n s t r u c o e s 1 ] 3 f o r j = 1 : m 4 < i n s t r u c o e s 2> 5 end 6 [ i n s t r u c o e s 3 ] 7 end DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 40 / 54 Lac¸os Aninhados Vamos retornar ao programa que exibe na tela a tabuada do 1 ao 9. Exemplo de sa´ıda do programa: 1 x 1 = 1 1 x 2 = 2 : 1 x 9 = 9 2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 : 9 x 9 = 81 DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 41 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console ‡ Varia´veis f1 float 1. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console ‡ Varia´veis f1 float 1. f2 float 1. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console ‡ Varia´veis f1 float 1. f2 float 1. produto float 1. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console 1 x 1 = 1 ‡ Varia´veis f1 float 1. f2 float 1. produto float 1. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console 1 x 1 = 1 ‡ Varia´veis f1 float 1. f2 float 1. produto float 1. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console 1 x 1 = 1 ‡ Varia´veis f1 float 1. f2 float 2. produto float 1. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console 1 x 1 = 1 ‡ Varia´veis f1 float 1. f2 float 2. produto float 2. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console 1 x 1 = 1 1 x 2 = 2 ‡ Varia´veis f1 float 1. f2 float 2. produto float 2. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console 1 x 1 = 1 1 x 2 = 2 ‡ Varia´veis f1 float 1. f2 float 2. produto float 2. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console 1 x 8 = 8 1 x 9 = 9 ‡ Varia´veis f1 float 1. f2 float 9. produto float 9. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console 1 x 8 = 8 1 x 9 = 9 ‡ Varia´veis f1 float 1. f2 float 9. produto float 9. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console 1 x 8 = 8 1 x 9 = 9 ‡ Varia´veis f1 float 2. f2 float 9. produto float 9. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console 1 x 8 = 8 1 x 9 = 9 ‡ Varia´veis f1 float 2. f2 float 1. produto float 9. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console 1 x 8 = 8 1 x 9 = 9 ‡ Varia´veis f1 float 2. f2 float 1. produto float 2. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console 1 x 9 = 9 2 x 1 = 2 ‡ Varia´veis f1 float 2. f2 float 1. produto float 2. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console 1 x 9 = 9 2 x 1 = 2 ‡ Varia´veis f1 float 2. f2 float 1. produto float 2. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console 2 x 8 = 16 2 x 9 = 18 ‡ Varia´veis f1 float 2. f2 float 9. produto float 18. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console 2 x 8 = 16 2 x 9 = 18 ‡ Varia´veis f1 float 2. f2 float 9. produto float 18. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console 2 x 8 = 16 2 x 9 = 18 ‡ Varia´veis f1 float 3. f2 float 9. produto float 18. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Lac¸os Aninhados 1 f o r f 1 = 1 : 9 2 f o r f 2 = 1 : 9 3 produto = f 1 ∗ f 2 4 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto ) 5 end 6 end Console 9 x 8 = 72 9 x 9 = 81 ‡ Varia´veis f1 float 9. f2 float 9. produto float 81. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 42 / 54 Exemplo 7 Implemente um programa que leia do teclado um nu´mero N que determina a quantidade de linhas a serem impressas na tela, contendo uma string com N asteriscos. Veja um exemplo para N = 5: ***** ***** ***** ***** ***** Observac¸o˜es: Para resolver este problema e´ necessa´rio usar lac¸os aninhados; Sa˜o va´riaslinhas a serem impressas; Para cada linha sa˜o va´rios “*” a serem impressos; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 43 / 54 Exemplo 7 Implemente um programa que leia do teclado um nu´mero N que determina a quantidade de linhas a serem impressas na tela, contendo uma string com N asteriscos. Veja um exemplo para N = 5: ***** ***** ***** ***** ***** Soluc¸a˜o: 1 N = i n p u t ( ” D i g i t e a q u a n t i d a d e de l i n h a s : ” ) 2 f o r l i n = 1 : N 3 f o r c o l = 1 : N 4 p r i n t f ( ”∗” ) 5 end 6 p r i n t f ( ”\n” ) 7 end DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 43 / 54 Exemplo 8 Implemente um programa que leia do teclado um nu´mero N que determina a quantidade de linhas a serem impressas na tela, contendo uma string com N asteriscos conforme o exemplo para N = 5: * ** *** **** ***** Observac¸o˜es: Problema muito parecido com o anterior; Mas o padra˜o das linhas e´ outro; Para cada linha uma determinada quantidade de “*”; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 44 / 54 Exemplo 8 Implemente um programa que leia do teclado um nu´mero N que determina a quantidade de linhas a serem impressas na tela, contendo uma string com N asteriscos conforme o exemplo para N = 5: * ** *** **** ***** Soluc¸a˜o: 1 N = i n p u t ( ” D i g i t e a q u a n t i d a d e de l i n h a s : ” ) 2 f o r l i n = 1 : N 3 f o r c o l = 1 : l i n 4 p r i n t f ( ”∗” ) 5 end 6 p r i n t f ( ”\n” ) 7 end DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 44 / 54 Exemplo 9 Implemente um programa que imprima a tabuada de multiplicac¸a˜o: 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 7 8 9 0 2 4 6 8 10 14 16 18 0 3 6 9 12 15 21 24 27 0 4 8 12 16 20 28 32 36 0 5 10 15 20 25 35 40 45 0 6 12 18 24 30 42 48 54 0 7 14 21 28 35 49 56 63 0 8 16 24 32 40 56 64 72 0 9 18 27 36 45 63 72 81 DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 45 / 54 Exemplo 9 Implemente um programa que imprima a tabuada de multiplicac¸a˜o: 0 0 ... 0 0 1 ... 9 : : ... : : : ... : 0 9 ... 81 Soluc¸a˜o: 1 f o r l i n = 0 : 9 2 f o r c o l = 0 : 9 3 p r i n t f ( ”%3. 0 f ” , l i n ∗ c o l ) 4 end 5 p r i n t f ( ”\n” ) 6 end DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 46 / 54 Exerc´ıcio 8 Implemente um programa que leia do teclado um nu´mero N que determina a quantidade de linhas a serem impressas na tela, contendo uma string com N caracteres conforme o exemplo para N = 5: +-+-+ -+-+- +-+-+ -+-+- +-+-+ Observac¸o˜es: Dois programas apresentados anteriormente servem de refereˆncia; Um imprime um padra˜o de impressa˜o semelhante, mas composto apenas de “*”; Outro permite classificar um nu´mero como par ou impar, que pode ser u´til para determinar quando imprimir “+” ou “-”; DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 47 / 54 Exerc´ıcio 8: Soluc¸a˜o 1 Uma soluc¸a˜o mais trivial: 1 N = i n p u t ( ” D i g i t e a q u a n t i d a d e de l i n h a s : ” ) 2 f o r l i n = 1 : N 3 f o r c o l = 1 : N 4 i f modulo ( l i n , 2) == 0 then 5 i f modulo ( c o l , 2 ) == 0 then 6 p r i n t f ( ”+” ) 7 e l s e 8 p r i n t f ( ”−” ) 9 end 10 e l s e 11 i f modulo ( c o l , 2 ) == 0 then 12 p r i n t f ( ”−” ) 13 e l s e 14 p r i n t f ( ”+” ) 15 end 16 end 17 end 18 p r i n t f ( ”\n” ) 19 end DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 48 / 54 Exerc´ıcio 8: Soluc¸a˜o 2 Uma soluc¸a˜o mais rebuscada, apo´s analisar o padra˜o matema´tico com mais atenc¸a˜o: 1 N = i n p u t ( ” D i g i t e a q u a n t i d a d e de l i n h a s : ” ) 2 f o r l i n = 1 : N 3 f o r c o l = 1 : N 4 i f modulo ( l i n+c o l , 2) == 0 then 5 p r i n t f ( ”+” ) 6 e l s e 7 p r i n t f ( ”−” ) 8 end 9 end 10 p r i n t f ( ”\n” ) 11 end DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 49 / 54 Exerc´ıcio 9 Implemente um programa para tabular a func¸a˜o: f (x , y) = x4 + 3xy + y 3 2xy + 3x + 4y + 2 para x = [ 2, 4, 6, 8 ] e y = [1, 3, 5, 7, 9]. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 50 / 54 Exerc´ıcio 9: Soluc¸a˜o 1 f o r x = 2 : 2 : 8 2 p r i n t f ( ”\n” ) 3 f o r y = 1 : 2 : 9 4 f = ( x ˆ4 + 3∗x∗y + y ˆ3) / (2∗ x∗y + 3∗x + 4∗y + 2) 5 p r i n t f ( ”%8. 2 f ” , f ) 6 end 7 end DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 51 / 54 Exerc´ıcio 10 Implemente um programa que receba o valor de N e em seguida N sequeˆncias de valores nume´ricos na˜o nulos (numero ∼= 0). Cada sequeˆncia e´ encerrada pela leitura de um valor nulo. Para cada sequeˆncia de nu´meros lidos, o programa deve imprimir o valor do somato´rio dos nu´meros cujo arredondamento para inteiro resulte em um valor par. DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 52 / 54 Exerc´ıcio 10: Soluc¸a˜o 1 N = i n p u t ( ” D i g i t e a q u a n t i d a d e de s e q u e n c i a s de numeros : ” ) 2 f o r i = 1 : N 3 p r i n t f ( ”\n\ n S e q u e n c i a %g:\ n\n” , i ) 4 soma = 0 // Para cada s e q u e n c i a de numeros , uma soma . 5 num = i n p u t ( ” D i g i t e um numero : ” ) // P r i m e i r o numero 6 w h i l e num ˜= 0 // Lendo os numeros da s e q u e n c i a . 7 num = round (num) // Arredondando para um i n t e i r o . 8 i f modulo (num , 2) == 0 then 9 soma = soma + num // Somator io a c u m u l a t i v o ( apenas p a r e s ) . 10 end 11 num = i n p u t ( ” D i g i t e um numero : ” ) // Proximo numero . 12 end 13 // S e q u e n c i a d e f i n i d a , o u s u a r i o acaba de d i g i t a r 0 ( z e r o ) . 14 // I m p r i m i r o r e s u l t a d o do s o m a t o r i o da s e q u e n c i a a t u a l , 15 // a n t e s de i n i c i a r a prox ima s e q u e n c i a . 16 p r i n t f ( ”\nO s o m a t o r i o dos numeros p a r e s e %f .\ n” ) 17 end 18 p r i n t f ( ”\nFim do programa . ” ) DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 53 / 54 DU´VIDAS DECOM 04 - Estruturas de Repetic¸a˜o BCC701 - 2018-01 54 / 54 Definição Sintaxe básica Iteração controlada logicamente (while) Iteração controlada por contador (for) Comparando while e for Exercícios 01 a 07 Laços aninhados Exercícios 08 a 10
Compartilhar