126
BCC701- Programa¸ ao de Computadores I 04 - Estruturas de Repeti¸c˜ ao Universidade Federal de Ouro Preto - UFOP Departamento de Computa¸c˜ ao - DECOM http://www.decom.ufop.br/bcc701 BCC701 - 2018-02 DECOM 04 - Estruturas de Repeti¸c˜ ao BCC701 - 2018-02 1 / 52

BCC701- Programação de Computadores I 04 - Estruturas de ...2018_02][bcc... · while: execute as ENQUANTO a for verdadeira (nenhuma ou v

Embed Size (px)

Citation preview

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

DUVIDAS

DECOM 04 - Estruturas de Repeticao BCC701 - 2018-02 52 / 52