Sei sulla pagina 1di 24

GCC224 - Introdução aos Algoritmos

Profa. Juliana Galvani Greghi


Profa. Marluce Rodrigues Pereira
Profa. Valéria Carvalho Santos
Prof. Bruno de Oliveira Schneider
Prof. Tales Heimfarth
ESTRUTURAS DE REPETIÇÃO

Permite que um ou mais comandos sejam executados


repetidas vezes até que uma CONDIÇÃO DE INTERRUPÇÃO
seja satisfeita OU que a condição para manter a repetição não
seja mais satisfeita.

Ex:
Ler as notas de determinado aluno para calcular a média até
que seja inserido um número negativo.

A condição de interrupção pode ser testada no início do ciclo


de repetições, no final, ou um determinado conjunto de
instruções pode ser executado por um número determinado de
vezes. 2
ESTRUTURAS DE REPETIÇÃO
TESTE DE INTERRUPÇÃO NO INÍCIO

FLUXOGRAMA

FALSO VERDADEIRO
LINGUAGEM ALGORÍTMICA
CONDIÇÃO

enquanto < condição > faça

COMANDO <comando>

fim-enquanto

3
ESTRUTURAS DE REPETIÇÃO
TESTE DE INTERRUPÇÃO NO INÍCIO

LINGUAGEM ALGORÍTMICA C++

enquanto < condição > faça while < condição >


{
<comando>
<comando>
fim-enquanto
}
4

Tudo que está entre chaves será repetido


enquanto a condição for verdadeira
ESTRUTURAS DE REPETIÇÃO
TESTE DE INTERRUPÇÃO NO INÍCIO

C++
A condição pode ser realizada através de
contadores:

while < condição > int contador=0;


{ contador=contador +1; // incremento
ou
contador += 1;
ou
<comando> contador++;

contador=contador -1; // decremento


} ou
contador -= 1;
ou
contador--;
5

Ainda existem os operadores *= e /=


ESTRUTURAS DE REPETIÇÃO
TESTE DE INTERRUPÇÃO NO INÍCIO

C++
A condição pode ser realizada através de
sentinela, valor que indica o final de uma
sequência de dados.
while < condição > Utilizamos um valor que não faça sentido
{ para o conjunto de dados que estamos
obtendo.
Ex: quantidade -1

<comando>

6
ESTRUTURAS DE REPETIÇÃO
TESTE DE INTERRUPÇÃO NO INÍCIO

Ler as notas dos candidatos que prestaram um concurso até


que seja lido um valor negativo. Calcule quantos candidatos
fizeram a prova e devolva a maior nota obtida.

7
#include <iostream>
using namespace std;

int main()
{
float nota, maior;
int total_candidatos;

total_candidatos = 0;
cin>>nota;
maior = nota;

while (nota >=0)


{
total_candidatos = total_candidatos + 1;
if (nota > maior)
maior = nota;

cin>>nota;
}

cout<<total_candidatos<<endl<<maior<<endl;

return 0;
}
8
#include <iostream>
using namespace std;

int main()
{
float nota, maior;
int total_candidatos = 0;

total_candidatos = 0;
cin>>nota;
maior = nota;

while (nota >=0)


{
total_candidatos++;
if (nota > maior)
maior = nota;

cin>>nota;
}

cout<<total_candidatos<<endl<<maior<<endl;

return 0;
}
9
#include <iostream>
using namespace std;

int main()
{
float nota, maior;
int total_candidatos = 0;

total_candidatos = 0;
cin>>nota;
maior = nota;

while (nota >=0)


{
total_candidatos += 1;
if (nota > maior)
maior = nota;

cin>>nota;
}

cout<<total_candidatos<<endl<<maior<<endl;

return 0;
}
10
ESTRUTURAS DE REPETIÇÃO
TESTE DE INTERRUPÇÃO NO FINAL
FLUXOGRAMA LINGUAGEM ALGORÍTMICA

faça
<comando 1>
COMANDO 1 <comando 2>
..
.
COMANDO 2
<comando n>
enquanto < condição >
COMANDO N
fim-enquanto
CONDIÇÃO
VERDADEIRO
FALSO
ESTRUTURAS DE REPETIÇÃO
TESTE DE INTERRUPÇÃO NO FINAL

LINGUAGEM ALGORÍTMICA C++


faça do
<comando 1> {
<comando 2> <comando 1>
..
.
<comando
..
.
2>

<comando n>
enquanto < condição > <comando n>
} while < condição >;
fim-enquanto

Tudo que está entre chaves será repetido


enquanto a condição for verdadeira
ESTRUTURAS DE REPETIÇÃO
TESTE DE INTERRUPÇÃO NO FINAL

Calcular e exibir o valor da série

S = 1 + 3 + 5 + 7 + 9 + . . . + 99
1 2 3 4 5 50

13
#include <iostream>
using namespace std;

int main()
{
float serie, parcela;
int divisor, dividendo;

divisor = 1;
dividendo = 1;

serie = 0;

do
{
parcela = dividendo / divisor;
serie += parcela;
divisor++;
dividendo += 2;
} while ((divisor <51) && (dividendo <100));

cout<<serie;
return 0;
}
#include <iostream>
using namespace std;

int main()
{
float serie, parcela;
int divisor, dividendo;

divisor = 1;
dividendo = 1;

serie = 0;

do
{
serie = serie + (dividendo/divisor);
divisor++;
dividendo = dividendo + 2;
} while ((divisor <=50) && (dividendo <=99));

cout<<serie;
return 0;
}
Exercícios - 1

Faça um algoritmo que leia 7 números reais. Após isso, imprima o


maior valor e o menor valor. Imprima também a média dos valores
desconsiderando o maior e o menor.
#include <iostream>
using namespace std;
int main()
{
double numeroLido, Maior, menor, media=0;
int contador=1;

cin>>numeroLido;
Maior = numeroLido;
menor = numeroLido;
media += numeroLido;

do
{
cin>>numeroLido;
contador++;

if (Maior < numeroLido)


Maior = numeroLido;

if (menor > numeroLido)


menor = numeroLido;

media += numeroLido;

} while (contador <7);

media = (media - (Maior + menor))/ 5;

cout<< Maior<<endl<<menor<<endl<<media;

return 0;

}
Exercícios - 2

Criar um algoritmo que leia vários números e encerre a leitura com 0


e imprima o maior, o menor e a média aritmética dos números. O
número 0 (zero) não faz parte da sequência.
#include <iostream>
using namespace std;
int main()
{
double numeroLido, Maior, menor, media=0;
int contador=0;

Maior = numeroLido;
menor = numeroLido;

while (numeroLido != 0)
{
media += numeroLido;
contador++;

if (Maior > numeroLido)


Maior = numeroLido;

if (menor < numeroLido)


menor = numeroLido;

cin>>numeroLido;
}

media = media/contador;

cout<<Maior<<endl<<menor<<endl<<media;

return 0;

}
Exercícios - 3

A sequência de Ricci é uma sequência bastante semelhante à de


Fibonacci, diferindo desta apenas pelo fato que os dois primeiros
termos da sequência ( F(0) e F(1) ) devem ser definidos pelo
usuário.
Sabendo-se que a sequência de Fibonacci é definida por:
● F(0) = 0
● F(1) = 1
● F(n) = F(n - 1) + F(n - 2) , se n ≥ 2
crie um algoritmo que imprima os n primeiros termos da sequência
de Ricci.
#include <iostream>
using namespace std;
int main()
{
int Fn, FnMenos1, FnMenos2, cont,n;

cin>>FnMenos2;
cin>>FnMenos1;

cin>>n;

cont=2;

while (cont <= n)


{
Fn = FnMenos1 + FnMenos2;

FnMenos2 = FnMenos1;
FnMenos1 = Fn;
}

cout<< Fn;

return 0;

}
Exercícios - 4

Uma companhia de teatro deseja montar uma série de espetáculos.


Cada cidade, a direção pretende calcular as despesas para
produzir o espetáculo e também pretende encontrar o valor do
ingresso que maximize os lucros.
Ingressos mais baratos vendem mais, mas não de uma maneira
linear. A direção estima que a cada redução de R$ 0,50 no valor do
ingresso, 31 ingressos adicionais são vendidos.
Faça um programa que recebe o valor estimado das despesas e o
incremento de vendas de ingressos a cada R$ 0,50 (nesta ordem) e
escreva uma tabela com os preços de ingressos e os lucros
previstos. Os preços de ingressos devem variar entre R$ 5,00 e R$
1,00, em intervalos de cinquenta centavos. Considere que preço a
cinco reais sempre vende 120 ingressos.
Material consultado para elaboração da aula
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi
de. . Fundamentos da programação de computadores: algoritmos, Pascal e
C/C++. São Paulo: Prentice Hall, 2002 355 p. ISBN 85-87918-36-2

FARRER, H. et al – Pascal Estruturado, 2ed., LTC, 1986.

FARRER, Harry et al. Programação estruturada de computadores: algoritmos


estruturados. 3. ed. Rio de Janeiro: Livros Técnicos e Científicos, c1999 284
p. ISBN 8521611803

ARAÚJO, Everton Coimbra de. Algoritmos: fundamento e prática. 3. ed. ampl.


e atual. Florianópolis: Visual Books, 2007. 414 p. ISBN 13:
978-85-7502-209-2

MEDINA, Marco; FERTIG, Cristina. Algoritmos e programação: teoria e


prática. São Paulo: Novatec, 2005. 384 p. ISBN 85-7522-073-X

24

Potrebbero piacerti anche