Algoritmos e Estruturas de Dados I – Estrutura de Repetição

Slides:



Advertisements
Apresentações semelhantes
Programação em Java Prof. Maurício Braga
Advertisements

UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL
Estruturas de Repetição
Algoritmo I Aula 05 Pseudo-Linguagem.
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INSTRUÇÕES DE CONTROLE – PARTE I Prof. Thiago Pereira Rique
Algoritmos.
Introdução a Algoritmos Seqüenciais
Programação de Computadores - 3
Estruturas de repetição
Introdução a Programação
Estruturas de Controle
Algoritmos Escher.
THOBER CORADI DETOFENO, MSC. Aula 07
Estrutura de Repetição
Lógica de Programação Módulo II
6.3 – Estruturas Repetitivas
Ap-3 Profª Kelly E. Medeiros
Processamento da Informação BC-05045
Algoritmos e Estruturas de Dados I – Estruturas de Dados
Algoritmos e Estruturas de Dados I – Estruturas de Controle de Fluxo
Comandos de Repetição Comando Para-Faça
Linguagem de Programação I Parte III
Estruturas de Repetição
Material Didático Proposto
Estruturas de Repetição
Estruturas de Dados Módulo 3 – Controle de Fluxo
ALGORITMOS.
Linguagem e Ambiente Scratch
Algoritmos e Estruturas de Dados I – Recursão
Algoritmos e Estruturas de Dados I – Recursão
Algoritmos e Estruturas de Dados I – Estrutura Condicional
PCI- Estrutura de Repetição
Algoritmos e Estrutura de Dados I
Algoritmos e Estruturas de Dados I – Estruturas de Dados
Vetores Unidimensionais Sistemas de Informação Desenvolvimento de Sistemas para Web Prof. Gale.
Algoritmos e Estruturas de Dados I – Estruturas de Controle de Fluxo
Algoritmos e Estruturas de Dados I – Modularização
Algoritmos - exercícios
Algoritmos Comandos de repetição.
Algoritmo e Programação
Vetores Unidimensionais Prof. Gale. A Variável A  Ilustrando: O que aconteceria no algoritmo... A  3 Escreva A A  5 Escreva A 3 5.
Lógica e Estrutura de Dados Fundamentais Professor: Eduardo O. Teles
Algoritmos e Estruturas de Dados I – Estrutura Condicional
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 06) Prof. Alessandro Bernardo.
Algoritmos e Estruturas de Dados I – Estrutura de Repetição
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 09) Prof. Alessandro Bernardo.
Algoritmos e Estruturas de Dados I – Estruturas de Dados
Fundamentos de linguagens de programação
Algoritmos.
Algoritmos e Estruturas de Dados I – Estruturas de Controle de Fluxo
Profa. Mercedes Gonzales Márquez
Introdução a Programação
Informática e Computação Aula Estrutura de Repetição
Algoritmo e Estrutura de Dados I
Exercícios (Algoritmo Narrativo, Fluxograma e Pseudocódigo) RESOLVIDO
Informática Aplicada à Ciência da Informação
Programação I Aula 07 Autor: Francisco Airton Professor: André L. R. Didier 1.
ALGORITMOS Profº Antonio Carlos Marcelino de Paula.
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 08) Prof. Alessandro Bernardo.
Fundamentos de Programação Aula 4. 2 Conteúdo Estruturas Básicas de Programação –Repetição, laço, loop ou iteração Exercícios.
Linguagem de Programação I Parte IV
Algoritmos – Aula 04 Comandos de repetição.
Estrutura de Repetição
1 Estruturas de Controle Algoritmos Algoritmos –Série de ações em uma ordem específica As ações executadas Ordem na qual as ações são executadas.
1Unidade 04 – Estruturas de Repetição Algoritmos e Linguagens de Programação Estruturas de Repetição Prof.: Guilherme Baião S. Silva
Linguagem de Programação Prof. Fabricio Roulin Bittencout
Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez.
Conteúdo de Laços de Repetição para os alunos do 7º ano EVL.
Lógica de Programação Aula 06 Prof. Marcelo Marcony.
Transcrição da apresentação:

Algoritmos e Estruturas de Dados I – Estrutura de Repetição Profa. Mercedes Gonzales Márquez 1

Estrutura de Repetição Referência bibliográfica : SALVETTI/BARBOSA e HARRY FARRER Execução de uma seqüência de ações repetidas vezes. O computador abandona o fluxo natural da execução (de cima para baixo) e volta a executar a seqüência de ações desejada. Pode apresentar duas formas: 1.Repetição com variável de controle: O número de repetições no loop (laço) está previamente determinado pelo valor inicial e pelo valor final da variável de controle. 2.Repetição controlada por condição Não sabemos a-priori quantas vezes executar a repetição. A execução do loop deve ser controlada por uma condição. A condição pode controlar a interrupção da repetição no início ou no final da sequência de comandos desta. 2 2

Repetição com variável de controle Formato : Para variável_controle de valor_inicial até valor_final passo valor_passo repita seqüência de comandos Fim para O número de repetições no loop (laço) está previamente determinado pelo valor inicial e pelo valor final da variável de controle. Quando valor_passo é 1, podemos omitir a especificação de passo. 3 3 3

Repetição com variável de controle Exemplo: Algoritmo <exemplo1> inteiro: i Inicio Para i de 1 até 5 repita escreva (i) Fim Para Fim 4 4 4

Repetição com variável de controle Exercício 2. (1º forma) Faça um algoritmo que imprima os 4 primeiros números inteiros pares positivos. Algoritmo <pares> inteiro: i Inicio Para i de 1 até 4 repita escreva (2*i) Fim Para Fim 5 5 5

Repetição com variável de controle Exercício 2. (2º forma) Faça um algoritmo que imprima os 4 primeiros números inteiros pares positivos. Algoritmo <pares> inteiro: i Inicio Para i de 2 até 8 passo 2 repita escreva (i) Fim Para Fim 6 6 6

Repetição com variável de controle Exercício 2. (3º forma) Faça um algoritmo que imprima os 4 primeiros números inteiros pares positivos. Algoritmo <pares> inteiro: i,n Inicio n ←0 Para i de 1 até 4 repita n ←n+2 escreva (n) Fim Para Fim 7 7 7

Repetição com variável de controle Exercício 3. Faça um algoritmo que imprima a soma dos 4 primeiros números inteiros positivos. Algoritmo <cincoprimeiros> inteiro: i,s Inicio s ←0 Para i de 1 até 4 repita s ←s+i Fim Para escreva (s) Fim i s 1 2 3 6 4 10 8 8 8

Repetição com variável de controle Exercício 4. Faça um algoritmo que imprima a soma dos 4 primeiros números inteiros pares positivos. Algoritmo <pares2> inteiro: i,s Inicio s ←0 Para i de 1 até 4 repita s ←s+2*i Fim Para escreva (s) Fim i s 1 2 6 3 12 4 20 9 9 9

Repetição com variável de controle Exercício 5. Faça um algoritmo que imprima a soma dos n primeiros números inteiros pares positivos. Algoritmo <pares3> inteiro: i,s,n Inicio leia (n) s ←0 Para i de 1 até n repita s ←s+2*i Fim Para escreva (s) Fim 10 10 10

Repetição com variável de controle Exercício 6. Faça um algoritmo que imprima a soma dos n primeiros números inteiros ímpares positivos. Algoritmo <impares> inteiro: i,s,n Inicio leia (n) s ←0 Para i de 1 até n repita s ←s+2*i-1 Fim Para escreva (s) Fim 11 11 11

Repetição com variável de controle Exercício 7. Desenvolver um algoritmo para calcular a soma: Algoritmo <soma> inteiro: i,s Inicio s ←1 Para i de 1 até 100 repita s ←s+1/(2*i) Fim Para Fim 12 12

Repetição com variável de controle Exercício 8. Tem-se a altura e o nome de 50 pessoas. Fazer um algoritmo que escreva o nome da pessoa mais alta. Se tiver mais de uma pessoa possuíndo a maior altura, escreva o nome de quaisquer delas. Algoritmo <altura> inteiro: i Literal: nome,nomemaisalta Real:altura, maioraltura Inicio maioraltura←0 Para i de 1 até 50 repita leia (nome,altura) se (altura>maioraltura) então maioraltura←altura nomemaisalta←nome fim se Fim Para escreva (nomemaisalta,maioraltura) Fim 13 13 13

Repetição com variável de controle Exercício 9. Num frigorífico existem 90 bois. Cada boi traz preso no pescoço um cartão contendo seu número de identificação e seu peso. Fazer um algoritmo que escreva o número e peso do boi mais gordo e do boi mais magro. Algoritmo <bois> inteiro: i,numero,gordo,magro Real:peso,pesomenor, pesomaior Inicio pesomenor←10000 pesomaior←0 Para i de 1 até 90 repita leia (numero,peso) se (peso>pesomaior) então pesomaior←peso gordo←numero fim se se (peso<pesomenor) então pesomenor←peso magro←numero fim se Fim Para escreva (gordo,pesomaior) escreva (magro,pesomenor) Fim 14 14 14

Repetição com variável de controle Exercício 10. Sendo H=1+1/2+1/3+1/4+...+1/N faça um algoritmo para calcular H. O número N é lido. Algoritmo <H> inteiro: i,n real: H Inicio leia (n) H ←0 Para i de 1 até n repita H ←H+1/i Fim Para escreva (H) Fim 15 15 15

Repetição com variável de controle Exercício 11. Imprimir os N primeiros termos da seqüência com Seja N=5. O primeiro termo é definido pela condição inicial e os demais são calculados pela formula de recorrência dada Algoritmo <nprimeiros> inteiro: i,n,y Inicio leia (n) y ←1 escreva (y) Para i de 1 até n-1 repita y ←y+2 Fim Para Fim 16 16 16

Repetição com variável de controle Exercício 12. Faça um algoritmo que calcule a seguinte soma ( o símbolo representa somatório. Algoritmo <somatorio> inteiro: i,s Inicio s ←0 Para i de 1 até 10 repita s ←s+i**2 Fim Para Fim Resolvendo o somatório 17 17 17

Repetição com variável de controle Exercício 13. Faça um algoritmo que calcule e escreva o valor da seguinte somatória Procurando uma fórmula ou Algoritmo <somatorio2> inteiro: i,s Início s ←0 Para i de 0 até 4 repita s ←s+2**i/3**i Fim Para Fim Algoritmo <somatorio2> inteiro: i,s Início s ←1 Para i de 1 até 4 repita s ←s+2**i/3**i Fim Para Fim 18 18 18

Repetição com variável de controle Exercício 14. Faça um algoritmo que calcule e escreva o valor da seguinte somatória Procurando uma fórmula Algoritmo <somatorio2> inteiro: i,s Início s ←1 Para i de 1 até 4 repita s ←s+2**i/3**(i+1) Fim Para Fim 19 19 19

Repetição com variável de controle Exercício 15. Faça um algoritmo que calcule e escreva o valor da seguinte somatória Procurando uma fórmula Algoritmo <somatorio2> inteiro: i,s Início s ←1 Para i de 1 até 4 repita s ←s+2**i/3**(5-i) Fim Para Fim 20 20 20

Repetição com variável de controle Exercício 16. Faça um algoritmo que calcule e escreva o valor da seguinte somatória Procurando uma fórmula Algoritmo <somatorio2> inteiro: i,s Início s ←1 Para i de 1 até 4 repita s ←s+(-1 )**i*2**i/3**i Fim Para Fim Algoritmo <somatorio2> inteiro: i,s Início s ←1 Para i de 1 até 4 repita s ←s+(-2)**i/3**i Fim Para Fim 21 21 21

Repetição com variável de controle Exercício 17. Faça um algoritmo que calcule e escreva o valor da seguinte somatória Procurando uma fórmula Algoritmo <somatorio2> inteiro: i,s Inicio s ←0 Para i de 1 até 15 repita s ←s+2**(i-1)/(16-i)**2 Fim Para Fim 22 22 22

Repetição com variável de controle Exercício 18. Faça um algoritmo que calcule o valor do seno de A através da seguinte série:   O valor de A e o número N de termos da série devem ser lidos. Algoritmo <senoA> inteiro: i,n real: A Inicio leia (n,A) soma←A den←1 num←A Para i de 2 até n repita num← -num*A*A den←den*(2*i-1)*(2*i-2) soma←soma+num/den Fim Para Fim 23 23 23

Repetição com variável de controle Exercício 19. O número 3025 possui a seguinte característica: Faça um algoritmo que pesquise e imprima todos os números de quatro algarismos que apresentam tal característica. Algoritmo <caracteristica> inteiro: i Inicio Para i de 1000 até 9999 repita Se (((mod(i,100)+div(i,100))**2)=i) escreva (i) Fim se Fim Para Fim   24 24 24

Repetição com variável de controle Exercício 20. Partindo-se de um único casal de coelhos filhotes recém-nascidos e supondo que um casal de coelhos torna-se fértil após dois meses de vida, a partir de então, produz um novo casal a cada mês e que os coelhos nunca morrem, a quantidade de casal de coelhos após n meses é dado pelo n-ésimo termo da seguinte seqüência: Essa seqüência chama-se seqüência de Fibonacci. 25 25 25

Repetição com variável de controle (a) Mostre como os termos dessa série correspondem à solução do problema proposto. meses 26 26 26

Repetição com variável de controle b) Redija um algoritmo para calcular a quantidade de casais de coelhos após n meses. Algoritmo <fibonacci> inteiro: i,n,fibonacci,fib0,fib1 Inicio leia (n) fib0 ←1 fib1←1 Para i de 2 até n repita fibonacci ←fib0+fib1 fib0 ←fib1 fib1 ←fibonacci Fim Para Fim 27 27 27

Repetição controlada por condição As vezes precisamos que nosso algoritmo realize uma certa quantidade de repetições, mas não sabemos o número exato de repetições necessárias. Exemplo: Faça um algoritmo que determine os quadrados de um conjunto de números inteiros positivos. Neste caso não podemos usar a estrutura de repetição com variável de controle pois o conjunto de dados de entrada é formado por um número desconhecido de elementos. Não é fornecida pelo usuário a quantidade de números existem no conjunto. O que desejamos é repetir o bloco de comandos (leitura, comandos, saída) enquanto existir um número inteiro positivo na lista de entrada dos dados. 28

Repetição controlada por condição Nestes casos usamos a repetição controlada por condição. Repetição controlada por condição. Não sabemos a-priori quantas vezes executar a repetição. A execução do loop deve ser controlada por uma condição. Esta repetição é também chamada de repetição controlada por sentinela ou flag. No exemplo, a condição para interromper a repetição é que o número não seja positivo. O valor sentinela será então qualquer número que não seja positivo. Por exemplo, o número zero ou o número -1. 29

Repetição controlada por condição Representamos essa estrutura de repetição através de uma das duas instruções: (1) enquanto-faça (2) repita-até-que. As duas instruções são equivalentes. Entretanto, há situações em que uma é preferível à outra. 30

Repetição controlada por condição Instrução Enquanto-Faça Formato. Enquanto <condição> faça <bloco de comandos> Fim enquanto Nesta instrução, <bloco de comandos> só é executado se <condição> for verdadeira. Antes de ser executado pela primeira vez é necessário que a <condição> esteja definida. Se na primeira vez em que a <condição> for testada ela for falsa, o loop não é executado nenhuma vez. Dentro do loop deve existir uma instrução que altera o valor da <condição>, caso contrário, o loop pode se tornar de execução infinita (não parar). 31

Repetição controlada por condição Exemplo 1. Faça um algoritmo que determine os quadrados de um conjunto de números inteiros positivos. Algoritmo <quadrados> inteiro: numero Inicio leia (numero) enquanto (numero>0) faça escreva (numero*numero) fim enquanto Fim 32

Repetição controlada por condição Algoritmo <media> inteiro: numero,soma,cont real: media Inicio cont ←0 soma ←0 leia (numero) enquanto (numero<>0) faça soma ← soma+numero cont ← cont+1 fim enquanto se (cont>0) então media ←soma/cont escreva (media) fim se Fim Exemplo 2: Faça um algoritmo que leia uma lista de números inteiros. A leitura de dados terminará quando for ingressado o número zero (flag). Pede-se a soma e a média de todos os números lidos (excluindo o zero). 33

Repetição controlada por condição Exercício 3. Escrever um algoritmo que receba dois números inteiros positivos, e determine o produto dos mesmos, utilizando o seguinte método de multiplicação: dividir, sucessivamente, o primeiro número por 2, até que se obtenha 1 como quociente; paralelamente, dobrar, sucessivamente, o segundo número; somar os números da segunda coluna que tenham um número ímpar na primeira coluna. O total obtido é o produto procurado. Exemplo: 9 x 6 9 6→ 6 4 12 2 24 1 48→ +48 ___ 54 34 34 34

Repetição controlada por condição Algoritmo <produto> inteiro: i,a,b,pro Inicio leia (a,b) pro←0 Enquanto (a<>1) faça Se (mod(a,2)<>0) então pro←pro+b Fim se a←div(a,2) b←b*2 Fim enquanto pro ←pro+b Fim 35 35 35

Repetição controlada por condição Exemplo 4: Faça um algoritmo que encontre a primeira potência de 2 maior que 1000. 36

Repetição controlada por condição Exemplo 5: Faça um algoritmo que calcule a soma dos divisores de um número n, exceto ele próprio. Algumas observações se fazem necessárias: (A) Se um número inteiro X possui um divisor Y menor que sua raiz quadrada, o quociente da divisão de X por Y será maior que a raiz quadrada de X e será, também, um divisor de X. (B) Se um número inteiro X possui um divisor Y igual a sua raiz quadrada, o quociente da divisão de X por Y será o próprio divisor Y. 37 37 37

Repetição controlada por condição Algoritmo <somadivisores> inteiro:n, soma,divisor Inicio leia (n) soma←1 divisor←2 Enquanto (divisor<sqr(n)) faça Se (mod(n,divisor)=0) então soma←soma+divisor+div(n,divisor) Fim se divisor←divisor+1 Fim enquanto se (divisor=sqr(n)) soma ←soma+divisor fim se Fim 38 38 38

Repetição controlada por condição Exemplo 6: Faça um algoritmo que determine se um número inteiro n é um número primo. Um número inteiro X é um número primo se ele possui como únicos divisores 1 e ele próprio. 39 39 39

Repetição controlada por condição Solução 1. Algoritmo <numeroprimo> inteiro:n,j logico:primo Inicio leia (n) primo←1 Para j de 2 até n-1 repita Se (mod(n,j)=0) faça primo←0 Fim enquanto Se (primo) então escreva (“O número é primo”) Fim se Fim 40 40 40

Repetição controlada por condição Solução 2. Algoritmo <numeroprimo> inteiro:n,j Inicio leia (n) j←2 Enquanto (j<=sqr(n) e mod(n,j)<>0) faça j←j+1 Fim enquanto Se (mod(n,j)<>0) então escreva (“O número é primo”) Fim se Fim 41 41 41

Repetição controlada por condição Exemplo 7: São dados um número n e quatro outros, “a”, “b”, “c”, e “d”, correspondentes, respectivamente, às extremidades dos intervalos [a,b] e [c,d], sendo a<b, c<d e a<c. Determinar se n pertence somente ao intervalo [a,b] ou somente ao intervalo [c,d] ou, se n pertence a ambos ou se n não pertence a nenhum dos dois. Em cada caso imprimir uma mensagem conveniente. Faça a leitura do número n até que seja ingressado o valor N como resposta para a pergunta: Deseja continuar <S/N>? 42 42 42

Repetição controlada por condição Quando temos um único valor n. Algoritmo <pertenencia> inteiro:n Inicio leia (n) se (n>=c e n<=b) então Escreva (“n pertence a ambos intervalos”) senão se (n>=a e n<=b) então Escreva (“n pertence ao intervalo [a b]”) se (n>=c e n<=d) então Escreva (“n pertence ao intervalo [c d]) Escreva (“n não pertence a nenhum dos dois intervalos”) Fim se Fim 43 43 43

Repetição controlada por condição Faça para vários valores de n conforme pede o enunciado. 44 44 44

Repetição controlada por condição Instrução Repita-Até-Que Formato. repita <bloco de comandos> até que <condição> Nesta instrução, <bloco de comandos> pelo menos uma vez porque somente após a sua execução a <condição> é testada. Dentre as instruções do loop deve existir pelo menos uma que altere o valor de <condição>. Para o mesmo problema as condições de controle dos comandos enquanto-faça e repita-até-que são condições complementares. Observe que a negação de A>0 é A<=0 e vice-versa. 45

Repetição controlada por condição Exemplo comparativo.- Faça um algoritmo que determine os quadrados de um conjunto de números inteiros positivos. Algoritmo <quadrados> inteiro: numero Inicio leia (numero) repita escreva (numero*numero) até que (numero<=0) Fim Algoritmo <quadrados> inteiro: numero Inicio leia (numero) enquanto (numero>0) faça escreva (numero*numero) fim enquanto Fim Observe que a primeira estrutura de repetição (enquanto-faça) é mais conveniente para resolver o problema proposto. 46

Exercício2: Suponha que no ano N a população americana seja maior que a brasileira. Sabendo-se que os Estados Unidos possuem um crescimento anual de 2% na sua população e que o Brasil tem crescimento anual de 4%, determinar o ano em que as duas populações serão iguais (em quantidade). São dados os números de habitantes dos Estados Unidos e do Brasil no ano N. Algoritmo <populacao> inteiro: ano,br,am Inicio leia (ano,br,am) enquanto (am>br) faça am ←am*1.02 br ←br*1.04 ano ←ano+1 fim enquanto escreva (ano) Fim Algoritmo <populacao> inteiro: ano,br,am Inicio leia (ano,br,am) repita br ←br*1.04 am ←am*1.02 ano ←ano+1 até que (br>=am) escreva (ano) Fim 47

Repetição controlada por condição 1. Se usarmos repita-até-que, as duas populações primeiro sofrem um acréscimo, e depois o teste da condição será executado. Esta instrução é indicada se considerarmos sabido que inicialmente a população americana é de fato maior que a população brasileira. 2. Se usarmos enquanto-faça Se os valores de entrado fossem desconhecidos, esta instrução é mais adequada pois primeiro o teste da condição é efetuado e conforme o resultado do teste o bloco será o não executado dentro do loop. 48

Estrutura de Repetição Tarefas: Estude os exercícios resolvidos de estrutura de repetição do livro Introdução à Programação 500 Algoritmos Resolvidos de Anita Lopes. Estude a lista de exercícios resolvidos de estrutura de repetição que se encontra no site da disciplina. Resolva a lista de exercícios propostos de estrutura de repetição que também já está disponível no site da disciplina. 49 49