• Nenhum resultado encontrado

A07 estruturas.repeticao.1 comando.enquanto

N/A
N/A
Protected

Academic year: 2019

Share "A07 estruturas.repeticao.1 comando.enquanto"

Copied!
45
0
0

Texto

(1)

Estruturas de Repetição 1:

Comando ENQUANTO

Bruno Cartaxo

http://sites.google.com/site/brunocartaxo

bruno.cartaxo@olinda.ifpe.edu.br

(2)

Tópicos a serem discutidos na disciplina

Introdução a computadores e algoritmos

Tipos de dados, operadores, variáveis, E/S

Verificação manual de algoritmos e modularização

Estruturas de decisão: comandos SE e CASO

Estruturas de repetição: comandos ENQUANTO e PARA

Vetores

Introdução à Java

(3)
(4)

Estruturas de repetição

Diferente do ser humano,

o computador não se cansa de realizar operações

repetitivas

.

Diante disto, podemos incluir nos algoritmos as

estruturas de repetição.

O que é uma

repetição

?

• É uma instrução que permite a execução de um trecho de algoritmo várias vezes seguidas. • Também chamada a laço ou loop;

Tipos

de estrutura de repetição:

• Repetição com teste no início (enquanto); • Repetição com teste no final (repita);

(5)

Comando ENQUANTO

• Indica que os comandos seguintes serão executados, desde que uma expressão lógica seja verdadeira.

• Esta estrutura é chamada de repetição com teste no início

• A decisão entre repetir e parar o laço é feita no início do comando.

• Se o teste for falso desde o início, o laço não será executado.

• Ao encontrar o fim dos comandos, o computador volta para a 1ª linha do laço e avalia novamente a expressão lógica:

Se verdadeira, o computador fará uma nova execução do trecho;

Se falsa, o computador pára a execução e continua no próximo comando após o trecho repetido.

enquanto

<expressão_lógica>

faça

(6)

Exemplo de comando ENQUANTO

Fazer um algoritmo para ler diversos números informados pelo

(7)

Exemplo de comando ENQUANTO

Variáveis

num

: inteiro;

Início

enquanto

num >= 0

faça

escrever

“Digite um número (negativo caso queira sair): “;

ler

num

;

se

num % 2 = 0

então

escrever

“O número é par”

senão

escrever

“O número é ímpar”;

(8)

Exemplo de comando ENQUANTO

Mas, qual o valor de num na 1ª execução?

Variáveis

num

: inteiro;

Início

enquanto

num >= 0

faça

escrever

“Digite um número (negativo caso queira sair): “;

ler

num

;

se

num % 2 = 0

então

escrever

“O número é par”

senão

escrever

“O número é ímpar”;

(9)

Exemplo de comando ENQUANTO

Como podemos contornar este problema?

Retirando a leitura da variável de dentro do laço

:

• Será gerado um laço infinito, pois num será lida apenas uma vez, e se for >= 0, o laço nunca terminará.

(10)

Exemplo de comando ENQUANTO

Variáveis

num : inteiro;

Início

escrever “Digite um número (negativo caso queira sair): “; ler num;

enquanto num >= 0 faça

se num % 2 = 0 então

escrever “O número é par” senão

escrever “O número é ímpar”;

escrever “Digite um número (negativo caso queira sair): “; ler num;

(11)

Variáveis contadoras

Uma variável é chamada de contadora quando

armazena um número referente a

uma quantidade de elementos ou iterações

.

Este tipo de variável é

muito comum em estruturas de repetição

, dada as suas

(12)

Imprimir todos os números inteiros de 1 a 100.

(13)

Imprimir todos os números inteiros de 1 a 100.

Exemplo de variáveis contadoras

Variáveis

valor

: inteiro;

Início

escrever

“Valores inteiros de 1 a 100”;

valor <- 1;

enquanto

valor <= 100

faça

escrever

valor;

(14)

Variáveis acumuladoras

Uma variável é chamada de acumuladora quando

tem por

característica armazenar o resultado acumulado de uma série de

valores

.

Quando armazenamos a soma de uma quantidade pequena de

números, a atribuição é direta.

Numa repetição devemos armazenar

a soma de diversos números sucessivos

, e para isto utilizamos uma

(15)

Calcular a soma de diversos números reais informados pelo usuário. A

entrada de dados termina com o número -999.

(16)

Exemplo de variáveis acumuladoras

Variáveis

num: real; soma : real;

Início

soma <- 0;

escrever “Digite um númro número (ou -999 para sair): “; ler num;

enquanto num != -999 faça soma <- soma + num;

escrever “Digite um númro número (ou -999 para sair): “; ler num;

escrever “A soma é: ”, soma;

Fim

A variável é iniciada

(17)

Laços infinitos

Ao trabalhar com repetições,

é preciso tomar cuidado para não criar

um laço infinito

, ou seja, um laço que não termina.

Neste tipo de situação

a máquina permaneceria executando o laço

(18)

Imprimir os quadrados dos números inteiros de 1 a 10.

(19)

Exemplode laço infinitos

Variáveis

valor:

real

;

Início

valor <- 1;

enquanto

valor <= 10

faça

escrever

QUAD(valor);

valor <- valor - 1;

Fim

(20)

Repetições aninhadas

Da mesma forma que é permitido o encadeamento de estruturas de

decisão

, também é possível encadear estruturas de repetição.

Um encadeamento de repetições

ocorre quando há necessidade de

efetuar um laço dentro de outro

.

Neste tipo de situação, o algoritmo possui

repetições controladas por

(21)

Repetições aninhadas

(22)

Exemplo de repetições aninhadas

Variáveis

num: inteiro;

mult: inteiro;

cont : inteiro;

Início

num <- 3;

enquanto num <= 6 faça

escrever “Tabuada de ”, num;

cont <- 1;

enquanto cont <= 10 faça

mult <- num * cont;

escrever num, “x”, cont, “=“, mult;

cont <- cont + 1;

(23)
(24)

Exemplo 1

Faça um algoritmo que leia diversos números positivos e imprima a

metade deles. Um número negativo sinaliza o fim da leitura de

(25)

Exemplo 1

Estruturando solução

Entradas

• Números positivos

Saídas

• A metade dos números

Detalhes

• Usar o comando ENQUANTO repetir a leitura de números até que seja digitado um valor negativo.

(26)

Exemplo 1 - Algoritmo

Variáveis

numero : real; metade : real;

Início

escrever “Digite um número (negativo caso deseje sair): ”; ler numero ;

enquanto numero >= 0 faça metade <- numero / 2;

escrever “Metade de ”, numero, “é: ”, metade;

escrever “Digite um número (negativo caso deseje sair): ”; ler numero ;

(27)

Exemplo 1

Execuções do algoritmo

Digite um número (negativo caso deseje sair): 10 Metade de 10 é: 5

Digite um número (negativo caso deseje sair): 2,5 Metade de 2,5 é: 1,25

Digite um número (negativo caso deseje sair): 5000 Metade de 5000 é: 2500

Digite um número (negativo caso deseje sair): -1

(28)

Exemplo 2

(29)

Exemplo 2

Estruturando solução

Entradas

• 10 números inteiros

Saídas

• Quantidade de números ímpares

Detalhes

• Serão necessárias 10 leituras. Podemos criar uma variável contadora para controlar este laço. • Precisaremos de uma outra variável para contar a quantidade de números ímpares.

• Não podemos deixar para contar após a repetição, pois cada número fornecido apaga o anterior. Logo precisamos ir contando após cada entrada, incrementando uma nova variável contadora.

(30)

Exemplo 2 - Algoritmo

Variáveis

contador : inteiro;

numero : inteiro;

contador_impar : inteiro;

Início

contador <- 1;

contador_impar <- 0;

enquanto contador <= 10 faça

escrever “Digite um número inteiro: ”; ler numero ;

contador <- contador + 1;

se (numero % 2) != 0 então

contador_impar <- contador_impar + 1;

escrever “O total de ímpares é: “, contador_impar ;

(31)

Exemplo 2

Execuções do algoritmo

(32)

Exemplo 3

(33)

Exemplo 3

Estruturando solução

Entradas

• Números reais

Saídas

• Maior número dentre os informados

Detalhes

(34)

Exemplo 3 - Algoritmo

Variáveis

numero: real;

maior_numero : real; Início

escrever “Digite um número (ou -1 para sair): “; ler numero;

maior_numero <- numero;

enquanto numero != -1 faça

se numero > maior_numero então

maior_numero <- numero ;

escrever “Digite um número (ou -1 para sair): “; ler numero;

se maior_numero != -1 então

escrever“O maior número é: ”, maior_numero; senão

(35)

Exemplo 3

Execuções do algoritmo

Digite um número (ou -1 para sair): 10 Digite um número (ou -1 para sair): 3 Digite um número (ou -1 para sair): 3267 Digite um número (ou -1 para sair): 65 Digite um número (ou -1 para sair): -1 O maior número é: 3267

(36)

Exemplo 4

Faça um algoritmo que gere e escreva os 5 primeiros números

(37)

Exemplo 4

Estruturando solução

Entradas

• Nenhuma

Saídas

• Lista de números perfeitos

Detalhes

• Vamos precisar de uma variável contadora de números perfeitos

• Vamos precisar de duas estruturas de repetição aninhadas

• Uma estrutura de repetição para gerar números a serem testados, que só deve parar quando encontrar os primeiros 5 números perfeitos

• Vamos precisar de uma variável acumuladora para a soma dos divisores

(38)

Exemplo 4 - Algoritmo

Variáveis

numero: inteiro;

contador_perfeitos: inteiro;

divisor: inteiro;

soma_divisores: inteiro;

Início

contador_perfeitos <- 0; numero <- 1;

enquanto contador_perfeitos < 5faça

divisor <- 1;

soma_divisores <- 0;

enquanto divisor < numerofaça

senumero % divisor == 0 então

soma_divisores <- soma_divisores + divisor;

divisor <- divisor + 1;

senumero == soma_divisores então

contador_perfeitos <- contador_perfeitos + 1;

escrevernumero, “, ”;

numero++;

(39)

Exemplo 4

Execuções do algoritmo

(40)

Exemplo 5

Uma fábrica de automóveis produz uma determinada quantidade de

automóveis por dia. Faça um algoritmo para ler do usuário a

quantidade produzida diariamente ao longo de um ano e depois

informe:

A quantidade produzida no ano todo

A menor produção diária

(41)

Exemplo 5

Estruturando solução

Entradas

• Veículos produzidos diariamente

Saídas

• A quantidade produzida no ano todo • A menor produção diária

Detalhes

• Precisamos de uma variável acumuladora para o total produzido e outra para a menor produção

(42)

Exemplo 5 - Algoritmo

Variáveis

producao: inteiro;

total_produzido: inteiro;

menor_producao: inteiro; Início

escrever “Digite a produção do dia: ”; ler producao;

total_produzido <- 0;

menor_producao <- producao;

enquanto producao != -1 faça

total_produzido <- total_produzido + producao;

seproducao < menor_producao então

menor_producao <- producao ;

escrever “Digite a produção do dia: ”; ler producao;

(43)

Exemplo 5

Execuções do algoritmo

Digite a produção do dia: 1 Digite a produção do dia: 2 Digite a produção do dia: 3 Digite a produção do dia: 4 Digite a produção do dia: 5 Digite a produção do dia: -1 Produção total: 15

(44)

Referências da aula

Adaptado da aula

Introdução à Programação

do Prof. Ricardo Araújo

do curso de Ciência da Computação da FBV.

Gilvan Vilarim.

Algoritmos: Programação para Iniciantes

. Editora

(45)

Estruturas de Repetição 1:

Comando ENQUANTO

Bruno Cartaxo

http://sites.google.com/site/brunocartaxo

bruno.cartaxo@olinda.ifpe.edu.br

Referências

Documentos relacionados

O obje- tivo deste trabalho é de aplicar a norma ASTM A923-Prática A para verifi car a presença de fases intermetálicas na junta soldada de aço inoxidável superduplex UNS 32750..

Contrato de Prestação de Serviços no prazo máximo de 05 (cinco) dias úteis, contados do recebimento da comunicação para tal, através de FAX, correio

Observa-se que os perfis de temperatura seguem a mesma tendência, quando confronta-se os dados obtidos através da simulação com os experimentais para as duas

Também, como vivemos nos tempos modernos onde a internet e as redes sociais tornaram-se a parte integrante de nossa vida, não posso deixar de fora o fato de que

Cada vez mais se impõe a necessidade do poder se tornar competente. Mais especificamente, a partir do século XIX, todo agente do poder vai ser um agente de constituição de

Calouste Gulbenkian Foundation, Lisboa Lisboa Lisbon, Portugal, Portugal António Cachola - Arte Portuguesa Anos 80-90 comissariado por curated by João Pinharanda. MEIAC-

Na produção científica sobre a adolescência, recorre à definição de que se trata de transição entre a infância e a vida adulta. A adolescência é vista como etapa

Pelos resultados encontrados neste trabalho as médias mensais de temperatura do ar no interior da estufa plástica foram superiores em 7,5%, a umidade relativa do ar em 7%, o