BCC701- Programação de Computadores I 04 - Estruturas de ...2018_02][bcc... · while: execute as ...
Transcript of BCC701- Programação de Computadores I 04 - Estruturas de ...2018_02][bcc... · while: execute as ...
BCC701- Programacao de Computadores I
04 - Estruturas de Repeticao
Universidade Federal de Ouro Preto - UFOPDepartamento de Computacao - DECOMhttp://www.decom.ufop.br/bcc701
BCC701 - 2018-02
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 1 / 52
Sumario
1 Definicao
2 Sintaxe basicaIteracao controlada logicamente (while)Iteracao controlada por contador (for)
3 Comparando while e for
4 Exercıcios 01 a 07
5 Lacos aninhados
6 Exercıcios 08 a 10
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 2 / 52
Programacao Estruturada
A Programacao Estruturada e uma forma de programacao decomputadores que preconiza que todos os programas possıveis podem serreduzidos a apenas tres estruturas
Sequencia;
Decisao (desvio condicional);
Iteracao (laco de repeticao);
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 3 / 52
Programacao Estruturada
A Programacao Estruturada e uma forma de programacao decomputadores que preconiza que todos os programas possıveis podem serreduzidos a apenas tres estruturas: sequencia, decisao e iteracao.
Sequencia
Os programas constituem-se deuma sequencia de instrucoes,ou comandos, executados umapos o outro, conforme ofluxograma ao lado.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 4 / 52
Programacao Estruturada
A Programacao Estruturada e uma forma de programacao decomputadores que preconiza que todos os programas possıveis podem serreduzidos a apenas tres estruturas: sequencia, decisao e iteracao.
Decisao (desvio condicional)
Sao aplicados quando osprogramas precisam executaralgumas instrucoesSOMENTE se determinadacondicao for verdadeira oufalsa;
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 4 / 52
Programacao Estruturada
A Programacao Estruturada e uma forma de programacao decomputadores que preconiza que todos os programas possıveis podem serreduzidos a apenas tres estruturas: sequencia, decisao e iteracao.
Iteracao (laco de repeticao)
Sao aplicados quando osprogramas precisam executaralgumas instrucoesENQUANTO determinadacondicao for verdadeira;
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 4 / 52
Programacao Estruturada
A Programacao Estruturada e uma forma de programacao decomputadores que preconiza que todos os programas possıveis podem serreduzidos a apenas tres estruturas: sequencia, decisao e iteracao.
Iteracao (repeticao)
Enquanto a condicao forverdadeira: execute oconjunto de instrucoes 2;
Quando a condicao forfalsa, finalize a repeticao;
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 4 / 52
Programacao Estruturada
A Programacao Estruturada e uma forma de programacao decomputadores que preconiza que todos os programas possıveis podem serreduzidos a apenas tres estruturas: sequencia, decisao e iteracao.
Iteracao (repeticao)
Enquanto a condicao forverdadeira: execute oconjunto de instrucoes 2;
Quando a condicao forfalsa, finalize a repeticao;
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 4 / 52
Programacao Estruturada
Sequencia: Decisao: Iteracao:
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 5 / 52
Sintaxe basica de repeticao
Em alguns casos e necessario realizar a repeticao de um certoconjunto de instrucoes;
Assim, altera-se o fluxo de execucao do programa, executando asinstrucoes inumeras vezes consecutivamente;
O conjunto de instrucoes e sempre o mesmo, mas os dados podemmudar a cada execucao;
Cada execucao do laco em conjunto com a avaliacao da condicao edenominada uma iteracao;
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 6 / 52
Sintaxe basica de repeticao
Veremos dois tipos de repeticao:
Controlado logicamente: define-se explicitamente a condicao atravesde uma expressao logica:
Enquanto a condicao permanecer verdadeira, as instrucoes seraoexecutadas;
Controlado por contador: a condicao e definida implicitamente porum contador:
Existe uma sequencia de contagem predefinida: inıcio, passo e fim;A cada iteracao o contador e alterado pelo valor do passo;O laco e executado enquanto o contador nao atinge ou ultrapasse ovalor final;
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 7 / 52
Sintaxe basica de repeticao: Controlado logicamente
while <cond i c a o>< i n s t r u c o e s>
end
<condicao>: expressao logica que determina se o laco continua(%T ) ou e encerrado (%F );
<instrucoes>: conjunto de instrucoes a serem executadas a cadaiteracao;
while e end palavras reservadas;
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 8 / 52
Comparando if e while
i f <cond i c ao> [ then ]< i n s t r u c o e s>
[ e l s e i f <cond i c a o 1>< i n s t r u c o e s 1>
:e l s e i f <cond 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 i c ao>< i n s t r u c o e s>
end
if: execute as <instrucoes> CASO a <condicao> seja verdadeira(nenhuma ou uma unica vez). Em suas variacoes de sintaxe, permiteescolher entre diferentes conjuntos de instrucoes;
while: execute as <instrucoes> ENQUANTO a <condicao> forverdadeira (nenhuma ou varias vezes).
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 9 / 52
Exemplo 1
Implemente um programa que leia do teclado um numero inteiro N eimprima todos os numeros inteiros do intervalo 0 ate N.
Observacoes:
A impressao e em ordem crescente;
Serao impressos numeros >= 0 e <= N;
O comando de imprimir e repetido (N + 1) vezes;
Quando a variavel assume um valor > N, a repeticao e encerrada(condicao de parada).
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 10 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: ‡Variaveis
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 3‡
Variaveis
N 3.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 3‡
Variaveis
N 3.num 0.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 3‡
Variaveis
N 3.num 0.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 ‡
Variaveis
N 3.num 0.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 ‡
Variaveis
N 3.num 0.7→1.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 ‡
Variaveis
N 3.num 1.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 ‡
Variaveis
N 3.num 1.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 ‡
Variaveis
N 3.num 1.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 ‡
Variaveis
N 3.num 1.7→2.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 ‡
Variaveis
N 3.num 2.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 ‡
Variaveis
N 3.num 2.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 ‡
Variaveis
N 3.num 2.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 ‡
Variaveis
N 3.num 2.7→3.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 ‡
Variaveis
N 3.num 3.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 ‡
Variaveis
N 3.num 3.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 3 ‡
Variaveis
N 3.num 3.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 3 ‡
Variaveis
N 3.num 3.7→4.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 3 ‡
Variaveis
N 3.num 4.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 3 ‡
Variaveis
N 3.num 4.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 3Fim do programa.‡
Variaveis
N 3.num 4.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Exemplo 1: while
1 N = input("Digite o valor de N: ")2 num = 03 while num <= N4 printf("%g\t", num)5 num = num + 16 end7 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 3Fim do programa.‡
Variaveis
N 3.num 4.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 11 / 52
Sintaxe basica de repeticao: Controlado por contador
fo r <v a r i a v e l > = < i n ı c i o > : [ pa s so :]< f im>< i n s t r u c o e s>
end
<variavel>: nome da variavel controladora do for, seus valores seraodefinidos e atualizados automaticamente por:
<inıcio>: valor inicial, atribuıdo a variavel na primeira iteracao;<passo>: valor de incremento, atualiza o valor da variavel ao final decada iteracao. E opcional, o valor padrao e 1;<fim>: valor final, o laco termina quando o valor da variavel se igualaou ultrapassa o valor final;O controle e definido antes da primeira iteracao, depois disso, osvalores de <inıcio>, <passo> e <fim> nao sofrerao alteracao, mesmoque variaveis que compoem as expressoes sejam alteradas.
<instrucoes>: conjunto de instrucoes a serem executadas a cadaiteracao;
for e end palavras reservadas;
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 12 / 52
Exemplo 1
Implemente um programa que leia do teclado um numero inteiro N eimprima todos os numeros inteiros do intervalo 0 ate N.
Observacoes:
A impressao e em ordem crescente;
Serao impressos numeros >= 0 e <= N;
O comando de imprimir e repetido (N + 1) vezes;
Quando a variavel assume um valor > N, a repeticao e encerrada(condicao de parada).
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 13 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: ‡Variaveis
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: 3‡
Variaveis
N 3.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: 3‡
Variaveis
N 3.num ?
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: 3‡
Variaveis
N 3.num 0.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: 30 ‡
Variaveis
N 3.num 0.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: 30 ‡
Variaveis
N 3.num 0.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: 30 ‡
Variaveis
N 3.num 0.7→1.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 ‡
Variaveis
N 3.num 1.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 ‡
Variaveis
N 3.num 1.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 ‡
Variaveis
N 3.num 1.7→2.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 ‡
Variaveis
N 3.num 2.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 ‡
Variaveis
N 3.num 2.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 ‡
Variaveis
N 3.num 2.7→3.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 3 ‡
Variaveis
N 3.num 3.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 3 ‡
Variaveis
N 3.num 3.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 3 ‡
Variaveis
N 3.num 3.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 3 ‡Fim do programa.‡
Variaveis
N 3.num 3.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Exemplo 1: for
1 N = input("Digite o valor de N: ")2 for num = 0 : 1 : N3 printf("%g\t", num)4 end5 printf("\nFim do programa.")
Console
Digite o valor de N: 30 1 2 3Fim do programa.‡
Variaveis
N 3.num 3.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 14 / 52
Comparando while e for
1 N = i npu t ( ”D i g i t e o v a l o r deN: ”)
2 num = 03 wh i l e num <= N4 p r i n t f ( ”%g\ t ” , num)5 num = num + 16 end7 p r i n t f ( ”\nFim do programa . ”)
1 N = i npu t ( ”D i g i t e o v a l o r deN: ”)
2 f o r num = 0 : 1 : N3 p r i n t f ( ”%g\ t ” , num)4 end5 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 Repeticao BCC701 - 2018-02 15 / 52
Comparando while e for
1 N = i npu t ( ”D i g i t e o v a l o r deN: ”)
2 num = 03 wh i l e num <= N4 p r i n t f ( ”%g\ t ” , num)5 num = num + 16 end7 p r i n t f ( ”\nFim do programa . ”)
1 N = i npu t ( ”D i g i t e o v a l o r deN: ”)
2 f o r num = 0 : 1 : N3 p r i n t f ( ”%g\ t ” , num)4 end5 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 Repeticao BCC701 - 2018-02 15 / 52
Comparando while e for
1 N = i npu t ( ”D i g i t e o v a l o r deN: ”)
2 num = 03 wh i l e num <= N4 p r i n t f ( ”%g\ t ” , num)5 num = num + 16 end7 p r i n t f ( ”\nFim do programa . ”)
1 N = i npu t ( ”D i g i t e o v a l o r deN: ”)
2 f o r num = 0 : 1 : N3 p r i n t f ( ”%g\ t ” , num)4 end5 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;
Observacao:
Todo for pode ser implementado com um while correspondente, masa recıproca nao e verdadeira.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 15 / 52
Comparando while e for
Quando usar while e quando usar for?
while
Quando NAO se sabe de antemao a quantidade de repeticoes quedeverao ser executadas, pois isto depende da execucao das<instrucoes>.
for
Quando um intervalo de dados bem definido precisa ser percorrido enao depende da execucao das <instrucoes>.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 16 / 52
Comparando while e for
Quando usar while e quando usar for?
No caso do Exemplo 1: Implemente um programa que leia do tecladoum numero inteiro N e imprima todos os numeros inteiros do intervalo 0ate N.
A quantidade de repeticoes e conhecida de antemao e nao depende daexecucao das <instrucoes>;
Entao, o mais adequado e utilizar o for;
1 N = i npu t ( ”D i g i t e o v a l o r de N: ”)2 f o r num = 0 : 1 : N3 p r i n t f ( ”%g\ t ” , num)4 end5 p r i n t f ( ”\nFim do programa . ”)
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 17 / 52
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 laco nuncatermine (laco infinito), veja:
1 x = 02 wh i l e x <= 103 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 = 02 wh i l e x <= 103 p r i n t f ( ”\nx = %g” , x )4 x = x − 0 .25 // 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 Repeticao BCC701 - 2018-02 18 / 52
Exemplo 2
Implemente um programa que leia do teclado um numero inteiro N eimprima todos os numeros inteiros do intervalo N ate 0. Depois disso, ousuario deve responder se deseja executar novamente, caso a resposta seja’sim’ ele repete a execucao do programa.
Observacoes:
O programa agora e praticamente o mesmo do exemplo 1, mas a“contagem” e regressiva;
Porem, agora ele nao e encerrado enquanto o usuario nao permitir;
Continua sendo um unico programa, mas tudo o que era feito antesdevera estar em um laco;
Nao e possıvel saber quando o programa sera encerrado, pois issodepende da resposta do usuario. Entao, para isso e necessario usar owhile.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 19 / 52
Exemplo 2
Implemente um programa que leia do teclado um numero inteiro N eimprima todos os numeros inteiros do intervalo N ate 0. Depois disso, ousuario deve responder se deseja executar novamente, caso a resposta seja’sim’ ele repete a execucao do programa.
Observacoes:
Vamos dividir este problema em dois:
Imprimir os numeros de N a 0;Repetir a execucao, fazendo a pergunta ao usuario;
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 19 / 52
Exemplo 2
Implemente um programa que leia do teclado um numero inteiro N eimprima todos os numeros inteiros do intervalo N ate 0. Depois disso, ousuario deve responder se deseja executar novamente, caso a resposta seja’sim’ ele repete a execucao do programa.
Resolvendo o primeiro problema:
1 N = i npu t ( ”D i g i t e o v a l o r de N: ”)2 f o r num = N : −1 : 03 p r i n t f ( ”%g\ t ” , num)4 end
1 N = i npu t ( ”D i g i t e o v a l o r de N: ”)2 num = N3 wh i l e num >= 04 p r i n t f ( ”%g\ t ” , num)5 num = num − 16 end
Observe as diferencas para o exemplo 1!
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 19 / 52
Exemplo 2
Implemente um programa que leia do teclado um numero inteiro N eimprima todos os numeros inteiros do intervalo N ate 0. Depois disso, ousuario deve responder se deseja executar novamente, caso a resposta seja’sim’ ele repete a execucao do programa.
Resolvendo o segundo problema:
1 c on t i n u a r = %t // Deve e x e c u t a r p e l o menos uma vez .2 wh i l e c o n t i n u a r // c on 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 npu t ( ”Dese ja e x e c u t a r novamente ( sim/nao ) ? ” , ”s ”)6 c on t i n u a r = r e s p == ”sim ”7 end8 p r i n t f ( ”\nFim do programa . ”)
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 19 / 52
Exemplo 2
Implemente um programa que leia do teclado um numero inteiro N eimprima todos os numeros inteiros do intervalo N ate 0. Depois disso, ousuario deve responder se deseja executar novamente, caso a resposta seja’sim’ ele repete a execucao do programa.
Solucao:
1 c on t i n u a r = %t // Deve e x e c u t a r p e l o menos uma vez .2 wh i l e c o n t i n u a r // c on t i n u a r assume um v a l o r l o g i c o .3 // P r ime i r o problema .4 N = i npu t ( ”D i g i t e o v a l o r de N: ”)5 f o r num = N : −1 : 06 p r i n t f ( ”%g\ t ” , num)7 end8 // P r ime i r o problema .9 // Agora e n e c e s s a r i o f a z e r a pe rgunta ao u s u a r i o .
10 r e s p = i npu t ( ”Dese ja e x e c u t a r novamente ( sim/nao ) ? ” , ”s ”)11 c on t i n u a r = r e s p == ”sim ”12 end13 p r i n t f ( ”\nFim do programa . ”)
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 19 / 52
Exemplo 3
Implemente um programa que peca um valor N ao usuario e calcule eimprima o valor da serie:
S =N∑i=1
2i − 1
i
Observacoes:
S = 11 + 3
2 + 53 + 7
4 + ...+ 2N−1N
O somatorio e calculado de forma acumulativa ate o N-esimo 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 Repeticao BCC701 - 2018-02 20 / 52
Exemplo 3
Implemente um programa que peca um valor N ao usuario e calcule eimprima o valor da serie:
S =N∑i=1
2i − 1
i
Observacoes:
Devo usar while ou for?
for, pois o intervalo [1, N] e bem definido e conhecido antes do inıcioda execucao do laco;
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 20 / 52
Exemplo 3
Implemente um programa que peca um valor N ao usuario e calcule eimprima o valor da serie:
S =N∑i=1
2i − 1
i
Observacoes:
Toda serie matematica apresentara um padrao para o calculo de cadatermo (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 padrao.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 20 / 52
Exemplo 3
S =N∑i=1
2i − 1
i=
1
1+
3
2+
5
3+
7
4+ ...+
2N − 1
N
1 N = i npu t ( ”D i g i t e a quant i dade de termos : ”)2 // Antes de i n i c i a r o somat o r i o acumu la t i vo3 // 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 // Va lo r neu t ro 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 acumu la t i vo .6 f o r i = 1 : N7 S = S + (2 ∗ i − 1) / i8 end9 // Despo i s da conc l u s a o do l a c o o r e s u l t a d o
10 // e conhec ido e pode s e r imp re s so 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 Repeticao BCC701 - 2018-02 21 / 52
Exemplo 4
Implemente um programa que leia do teclado um numero N que determinaa quantidade de numeros inteiros maiores do que zero a serem lidos doteclado e imprima a media dos valores digitados.
Observacoes:
E necessario verificar a restricao imposta aos numeros;
A media e computada a partir do somatorio de todos os numeros;
Somente depois que se conhece o somatorio e que se deve calcular ovalor da media;
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 22 / 52
Exemplo 4
Implemente um programa que leia do teclado um numero N que determinaa quantidade de numeros inteiros maiores do que zero a serem lidos doteclado e imprima a media dos valores digitados.
Observacoes:
Precisaremos de dois lacos:
Um para ler todos os numeros e processar o seu somatorio. Neste casoteremos um intervalo [1, N] e deveremos utilizar o for;Outro para validar os numeros. Neste caso, nao sabemos quantas vezeso usuario digitara um numero invalido, sendo assim, e obrigatorio o usodo while.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 22 / 52
Exemplo 4
Implemente um programa que leia do teclado um numero N que determinaa quantidade de numeros inteiros maiores do que zero a serem lidos doteclado e imprima a media dos valores digitados.Solucao:
1 N = i npu 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 somat o r i o .3 f o r i = 1 : N4 // Usando s p r i n t f para uma mensagem mais i n f o rma t i v a .5 Num = i npu 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 ze r o .7 wh i l e Num ˜= i n t (Num) | Num <= 0 // Va 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 ze r o .\ n ”)9 Num = i npu t ( s p r i n t f ( ”D i g i t e o v a l o r %g: ” , i ) )
10 end11 // Agora Num tem um v a l o r v a l i d o .12 Media = Media + Num13 end14 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 Repeticao BCC701 - 2018-02 22 / 52
Exemplo 5
Implemente um programa que leia do teclado um numero N que determinaa quantidade de numeros inteiros maiores do que zero a serem lidos doteclado e imprima o produtorio dos valores digitados.
Observacoes:
E praticamente igual ao exemplo anterior, mas ao inves da mediasolicita o produtorio;
Para a media precisamos do somatorio, o que diferencia o produtoriodo somatorio, alem da operacao matematica envolvida, e o valorinicial;
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 23 / 52
Exemplo 5
Implemente um programa que leia do teclado um numero N que determinaa quantidade de numeros inteiros maiores do que zero a serem lidos doteclado e imprima o produtorio dos valores digitados.Solucao:
1 N = i npu t ( ”D i g i t e o v a l o r de N: ”)2 P rodu t o r i o = 1 // Va lo r neu t ro para o p r o d u t o r i o .3 f o r i = 1 : N4 // Usando s p r i n t f para uma mensagem mais i n f o rma t i v a .5 Num = i npu 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 ze r o .7 wh i l e Num ˜= i n t (Num) | Num <= 0 // Va 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 ze r o .\ n ”)9 Num = i npu t ( s p r i n t f ( ”D i g i t e o v a l o r %g: ” , i ) )
10 end11 // Agora Num tem um v a l o r v a l i d o .12 P rodu t o r i o = Produ to r i o ∗ Num13 end14 p r i n t f ( ”\nO p r o du t o r i o dos %g numeros e %. 4 f . ” , N, P rodu t o r i o )
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 23 / 52
Exercıcio 1
Um aluno foi ao supermercado e gastou X reais com as compras dasemana.
Escreva um programa que tenha como entrada o valor X da compra. Oprograma deve determinar quantas notas de 50, de 10 e de 1 real saosuficientes para o pagamento da compra.
Obs: O programa so devera imprimir a quantidade de notas que foremmaiores do que zero. O valor da compra e um numero inteiro e maior doque 0 (zero).
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 24 / 52
Exercıcio 1: Solucao
1 v a l o r = i npu t ( ’ Va lo r (R$) : ’ )2 c i nquen t a = 0 ; dez = 0 ; um = 03 wh i l e v a l o r > 04 i f v a l o r >= 50 then5 v a l o r = v a l o r − 506 c i nquen ta = c i nquen ta + 17 e l s e i f v a l o r >= 108 v a l o r = v a l o r − 109 dez = dez + 1
10 e l s e11 v a l o r = v a l o r − 112 um = um + 113 end14 end15 i f c i nquen t a > 0 then16 p r i n t f ( ’ Notas de R$ 50 : %g.\ n ’ , c i nquen ta )17 end18 i f dez > 0 then19 p r i n t f ( ’ Notas de R$ 10 : %g.\ n ’ , dez )20 end21 i f um > 0 then22 p r i n t f ( ’ Notas de R$ 1 : %g. ’ , um)23 end
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 25 / 52
Exercıcio 2
Um determinado material radioativo perde 1% de sua massa a cada 50segundos.
Codifique um programa que leia a massa inicial em gramas. A massafornecida deve ser maior que 0.5 gramas e o programa repete a entradaate que uma massa com esta especificacao seja fornecida.
O programa calcula e imprime o tempo necessario para que a massa setorne menor que 0.5 gramas e a massa final.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 26 / 52
Exercıcio 2: Solucao
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 en t r a no wh i l e .2 wh i l e ma s s a i n i c i a l <= 0.53 m a s s a i n i c i a l = i npu t ( ’ D i g i t e a massa ( g ) : ’ )4 end5 massa = m a s s a i n i c i a l6 segundos = 07 wh i l e massa >= 0.58 segundos = segundos + 509 massa = massa − massa ∗ 0 .01
10 end11 p r i n t f ( ’Tempo d e c o r r i d o = %g segundos .\ n ’ , segundos )12 p r i n t f ( ’Massa f i n a l = %.4 f ( g ) .\ n ’ , massa )
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 27 / 52
Exercıcio 3
Fazer um algoritmo para calcular a raiz quadrada (x) de um numeropositivo (y) usando o roteiro abaixo, baseado no metodo de aproximacoessucessivas de Newton:
A primeira aproximacao para a raiz quadrada de y e x1 = y/2;
As sucessivas aproximacoes serao xn+1 =x2n+y2∗xn
O laco dos calculos das aproximacoes devera terminar quando:|xi − xi−1| < 0.0001
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 28 / 52
Exercıcio 3: Solucao
1 y = i npu t ( ’ D i g i t e o v a l o r de Y : ’ )2 x1 = y / 23 x2 = ( x1 ˆ 2 + y ) / (2 ∗ x1 )4 wh i l e abs ( x2 − x1 ) >= 0.00015 x1 = x26 x2 = ( x1 ˆ 2 + y ) / (2 ∗ x1 )7 end8 p r i n t f ( ’ Ra i z quadrada de %.2 f e %. 2 f . ’ , y , x2 )
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 29 / 52
Exercıcio 4
Elabore um programa que solicita ao usuario um valor inteiro N qualquer ecalcula N!.
Exemplos de saıdas do programa:
Digite N: 99! = 362880
Digite N: -16Numero invalido!
Digite N: 44! = 24
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 30 / 52
Exercıcio 4: Solucao
1 numero = i npu t ( ’ D i g i t e um numero : ’ )2 i f numero >= 1 then3 f a t o r i a l = 14 f o r termo = 1 : numero5 f a t o r i a l = f a t o r i a l ∗ termo6 end7 p r i n t f ( ’%g! = %g ’ , numero , f a t o r i a l )8 e l s e9 p r i n t f ( ’Numero i n v a l i d o ! ’ )
10 end
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 31 / 52
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 funcao sin(x) para calcular o seno de x;
O criterio de parada e x = 6.2 = 2 ∗ π.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 32 / 52
Exercıcio 5: Solucao
1 p r i n t f ( ’ x\ t s eno ( x ) ’ )2 f o r x = 0 .0 : 0 . 2 : 6 . 23 p r i n t f ( ’%. 1 f \t% .4 f ’ , x , s i n ( x ) )4 end
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 33 / 52
Exercıcio 6
Elabore um programa que exiba para o usuario se um numero e primo ounao.
Exemplo de saıda do programa:
Digite o numero: 4Nao e primo!
Digite o numero: 13E primo!
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 34 / 52
Exercıcio 6: Solucao
1 n = i npu t ( ’ D i g i t e o numero : ’ )2 epr imo = %t3 f o r f = 2 : n /2 :4 i f modulo (n , f ) == 0 then5 epr imo = %f6 end7 end8 i f epr imo then
9 p r i n t f ( ’ E pr imo ! ’ )10 e l s e11 p r i n t f ( ’Nao e pr imo ! ’ )12 end
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 35 / 52
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 = 11 x 2 = 2:1 x 9 = 92 x 1 = 22 x 2 = 42 x 3 = 62 x 4 = 8:9 x 9 = 81
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 36 / 52
Exercıcio 7: Solucao
1 f o r f 1 = 1 : 92 f o r f 2 = 1 : 93 produto = f1 ∗ f 24 p r i n t f ( ’%g x %g = %g\n ’ , f1 , f2 , p roduto )5 end6 end
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 37 / 52
Lacos Aninhados
Um laco inserido dentro de outro laco:
1 A execucao dos lacos comeca no laco externo;
2 Cada iteracao do laco externo causa uma execucao do laco interno;
3 Assim, as [instruc~oes 1] e [instruc~oes 3] executam n vezes, jaas <instruc~oes 2> executam n ∗m vezes;
1 <1->1,2,6,7<1->3,4,5f o r i = 1 : n2 <1->1,2,6,7<1->3,4,5[ i n s t r u c o e s 1 ]3 <1->1,2,6,7<1->3,4,5f o r j = 1 : m4 <1->1,2,6,7<1->3,4,5< i n s t r u c o e s 2>5 <1->1,2,6,7<1->3,4,5end6 <1->1,2,6,7<1->3,4,5[ i n s t r u c o e s 3 ]7 <1->1,2,6,7<1->3,4,5end
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 38 / 52
Lacos Aninhados
Vamos retornar ao programa que exibe na tela a tabuada do 1 ao 9.
Exemplo de saıda do programa:
1 x 1 = 11 x 2 = 2:1 x 9 = 92 x 1 = 22 x 2 = 42 x 3 = 62 x 4 = 8:9 x 9 = 81
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 39 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
‡Variaveis
f1 1.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
‡Variaveis
f1 1.f2 1.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
‡Variaveis
f1 1.f2 1.produto 1.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
1 x 1 = 1‡
Variaveis
f1 1.f2 1.produto 1.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
1 x 1 = 1‡
Variaveis
f1 1.f2 1.produto 1.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
1 x 1 = 1‡
Variaveis
f1 1.f2 1.7→2.produto 1.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
1 x 1 = 1‡
Variaveis
f1 1.f2 2.produto 2.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
1 x 1 = 11 x 2 = 2‡
Variaveis
f1 1.f2 2.produto 2.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
1 x 1 = 11 x 2 = 2‡
Variaveis
f1 1.f2 2.produto 2.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
1 x 8 = 81 x 9 = 9‡
Variaveis
f1 1.f2 8.7→9.produto 8.7→9.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
1 x 8 = 81 x 9 = 9‡
Variaveis
f1 1.f2 9.produto 9.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
1 x 8 = 81 x 9 = 9‡
Variaveis
f1 1.7→2.f2 9.produto 9.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
1 x 8 = 81 x 9 = 9‡
Variaveis
f1 2.f2 9.7→1.produto 9.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
1 x 8 = 81 x 9 = 9‡
Variaveis
f1 2.f2 1.produto 9.7→2.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
1 x 9 = 92 x 1 = 2‡
Variaveis
f1 2.f2 1.produto 2.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
1 x 9 = 92 x 1 = 2‡
Variaveis
f1 2.f2 1.produto 2.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
2 x 8 = 162 x 9 = 18‡
Variaveis
f1 2.f2 8.7→9.produto 16.7→18.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
2 x 8 = 162 x 9 = 18‡
Variaveis
f1 2.f2 9.produto 18.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
2 x 8 = 162 x 9 = 18‡
Variaveis
f1 2.7→3.f2 9.produto 18.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Lacos Aninhados
1 for f1 = 1 : 92 for f2 = 1 : 93 produto = f1 * f24 printf(’%g x %g = %g\n’, f1, f2, produto)5 end6 end
Console
9 x 8 = 729 x 9 = 81‡
Variaveis
f1 8.7→9.f2 8.7→9.produto 72.7→81.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 40 / 52
Exemplo 6
Implemente um programa que leia do teclado um numero N que determinaa quantidade de linhas a serem impressas na tela, contendo uma stringcom N asteriscos. Veja um exemplo para N = 5:*************************
Observacoes:
Para resolver este problema e necessario usar lacos aninhados;
Sao varias linhas a serem impressas;
Para cada linha sao varios“*”a serem impressos;
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 41 / 52
Exemplo 6
Implemente um programa que leia do teclado um numero N que determinaa quantidade de linhas a serem impressas na tela, contendo uma stringcom N asteriscos. Veja um exemplo para N = 5:*************************Solucao:
1 N = i npu t ( ”D i g i t e a quant i dade de l i n h a s : ”)2 f o r l i n = 1 : N3 f o r c o l = 1 : N4 p r i n t f ( ”∗ ”)5 end6 p r i n t f ( ”\n ”)7 end
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 41 / 52
Exemplo 7
Implemente um programa que leia do teclado um numero N que determinaa quantidade de linhas a serem impressas na tela, contendo uma stringcom N asteriscos conforme o exemplo para N = 5:***************
Observacoes:
Problema muito parecido com o anterior;
Mas o padrao das linhas e outro;
Para cada linha uma determinada quantidade de“*”;
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 42 / 52
Exemplo 7
Implemente um programa que leia do teclado um numero N que determinaa quantidade de linhas a serem impressas na tela, contendo uma stringcom N asteriscos conforme o exemplo para N = 5:***************Solucao:
1 N = i npu t ( ”D i g i t e a quant i dade de l i n h a s : ”)2 f o r l i n = 1 : N3 f o r c o l = 1 : l i n4 p r i n t f ( ”∗ ”)5 end6 p r i n t f ( ”\n ”)7 end
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 42 / 52
Exemplo 8
Implemente um programa que imprima a tabuada de multiplicacao:
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 Repeticao BCC701 - 2018-02 43 / 52
Exemplo 8
Implemente um programa que imprima a tabuada de multiplicacao:
0 0 ... 0
0 1 ... 9
: : ... :
: : ... :
0 9 ... 81
Solucao:
1 f o r l i n = 0 : 92 f o r c o l = 0 : 93 p r i n t f ( ”%3. 0 f ” , l i n ∗ c o l )4 end5 p r i n t f ( ”\n ”)6 end
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 44 / 52
Exercıcio 8
Implemente um programa que leia do teclado um numero N que determinaa quantidade de linhas a serem impressas na tela, contendo uma stringcom N caracteres conforme o exemplo para N = 5:+-+-+-+-+-+-+-+-+-+-+-+-+
Observacoes:
Dois programas apresentados anteriormente servem de referencia;
Um imprime um padrao de impressao semelhante, mas compostoapenas de“*”;
Outro permite classificar um numero como par ou impar, que podeser util para determinar quando imprimir “+”ou“-”;
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 45 / 52
Exercıcio 8: Solucao 1
Uma solucao mais trivial:
1 N = i npu t ( ”D i g i t e a quant i dade de l i n h a s : ”)2 f o r l i n = 1 : N3 f o r c o l = 1 : N4 i f modulo ( l i n , 2) == 0 then5 i f modulo ( co l , 2 ) == 0 then6 p r i n t f ( ”+”)7 e l s e8 p r i n t f ( ”−”)9 end
10 e l s e11 i f modulo ( co l , 2 ) == 0 then12 p r i n t f ( ”−”)13 e l s e14 p r i n t f ( ”+”)15 end16 end17 end18 p r i n t f ( ”\n ”)19 end
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 46 / 52
Exercıcio 8: Solucao 2
Uma solucao mais rebuscada, apos analisar o padrao matematico commais atencao:
1 N = i npu t ( ”D i g i t e a quant i dade de l i n h a s : ”)2 f o r l i n = 1 : N3 f o r c o l = 1 : N4 i f modulo ( l i n+co l , 2) == 0 then5 p r i n t f ( ”+”)6 e l s e7 p r i n t f ( ”−”)8 end9 end
10 p r i n t f ( ”\n ”)11 end
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 47 / 52
Exercıcio 9
Implemente um programa para tabular a funcao:
f (x , y) =x4 + 3xy + y3
2xy + 3x + 4y + 2
para x = [ 2, 4, 6, 8 ] e y = [1, 3, 5, 7, 9].
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 48 / 52
Exercıcio 9: Solucao
1 f o r x = 2 : 2 : 82 p r i n t f ( ”\n ”)3 f o r y = 1 : 2 : 94 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 end7 end
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 49 / 52
Exercıcio 10
Implemente um programa que receba o valor de N e em seguida Nsequencias de valores numericos nao nulos (numero ∼= 0). Cadasequencia e encerrada pela leitura de um valor nulo. Para cada sequenciade numeros lidos, o programa deve calcular o somatorio dos valoresarredondados para inteiro cujo resultado seja par e imprimir este somatoriona tela.
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 50 / 52
Exercıcio 10: Solucao
1 N = i npu t ( ”D i g i t e a quant i dade de s e qu e n c i a s de numeros : ”)2 f o r i = 1 : N3 p r i n t f ( ”\n\ nSequ enc ia %g:\ n\n ” , i )4 soma = 0 // Para cada s equ e n c i a de numeros , uma soma .5 num = i npu t ( ”D i g i t e um numero : ”) // P r ime i r o numero6 wh i l e num ˜= 0 // Lendo os numeros da s equ en c i a .7 num = round (num) // Arredondando para um i n t e i r o .8 i f modulo (num , 2) == 0 then9 soma = soma + num // Somat o r io acumu la t i vo ( apenas
pa r e s ) .10 end11 num = i npu t ( ”D i g i t e um numero : ”) // Proximo numero .12 end13 // Sequ enc 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 // Imp r im i r o r e s u l t a d o do somat o r i o da s equ e n c i a a tua l ,15 // an t e s de i n i c i a r a pr ox ima s equ e n c i a .16 p r i n t f ( ”\nO somat o r i o dos numeros pa r e s e %f .\ n ”)17 end18 p r i n t f ( ”\nFim do programa . ”)
DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 51 / 52