Você está na página 1de 11

Programao

Ficha n2.3
Correo

Contedos:

Estruturas de repetio com base numa condio: while e do .. while


Estrutura de repetio com base numa varivel e/ou condio: for
Instrues break e continue
Varivel contador
Varivel acumulador

Estrutura de repetio com base numa condio: while


while (condio) <bloco de instrues>;

Exemplo:
int i = 1;
while (i <= 10) {
cout << i << " ";
i++;
}

// declarao e inicializao da varivel contador i

// incremento da varvel contador i

Pgina 1 de 11

Programao

Ficha n2.3

Estrutura de repetio com base numa condio: do .. while


do <bloco de instrues> while (condio);

Exemplo:
int i = 1;
do {
cout << i << " ";
i++;
} while (i <= 10);

// declarao e inicializao da varivel contador i

// incremento da varvel contador i

Estrutura de repetio com base numa varivel e/ou condio: for


for (inicializao; condio; incremento )
<bloco de instrues>;

Exemplo:
for (int i = 1; i <= 10; i++ )
cout << i << " ";

Pgina 2 de 11

Programao

Ficha n2.3

Instrues break e continue:


break:

Termina o ciclo.

continue:

Faz

com

instrues

que
do

ciclo

ciclo

continue

que

se

sem

seguem

executar

continue.

Exemplo:
#include <iostream>
using namespace std;
void main() {
int i=0, nota, soma;
char c;
cout << "Introduza as notas dos seus 4 testes:\n";
i=0;
soma = 0;
while ( i < 4 ) {
cout << "Teste " << i << ": ";
cin >> nota;
soma += nota;
// varivel acumulador soma
i++;
}
cout << "Media dos 4 testes " << (float)soma / 4 << "\n\n";

do {
cout << "Introduza uma letra maiscula: ";
cin >> c;
if ( c == # ) break;
} while ( c < 'A' || c > 'Z' );
cout << "A letra introduzida foi : " << c << "\n\n";
cout << "Nmeros pares at 20 sem o 14\n";
for( i=2; i<=20; i+=2){
if ( i == 14 ) continue;
cout << i << " ";
}
}

Pgina 3 de 11

as

instruo

Programao

Ficha n2.3

1. Considere o seguinte cdigo:


#include <iostream>
using namespace std;
void main() {
int i = 1;
while (i <= 10) {
cout << i << " ";
i++;
}
cout << endl;
system("pause");
}

a)

Execute e verifique que escreve os nmeros de 1 a 10.

b)

Acrescente o cdigo para escrever os nmeros de 40 a 60.


i = 40;
while (i <= 60) {
cout << i << " ";
i++;
}
cout << endl << endl;

c)

Acrescente o cdigo para escrever os nmeros de -2 a 20, utilize a estrutura


do..while.
i = -2;
while (i <= 20) {
cout << i << " ";
i++;
}
cout << endl << endl;

d)

Acrescente o cdigo para escrever os nmeros de 1 a 200, utilize a estrutura


for.
for ( i = 1; i <= 200; i++)
cout << i << " ";
cout << endl << endl;

Pgina 4 de 11

Programao

Ficha n2.3

2. Considere o seguinte cdigo:


int i;
for ( i = 1; i < 50; i+=2)
cout << i << " ";
cout << endl << endl;

a)

Introduza o cdigo anterior no seu programa do exerccio 1.

b)

Execute e verifique que escreve os nmeros impares de 1 a 49 e pares de 2 a


48.

c)

Acrescente o cdigo para escrever os nmeros pares de 40 a 60.


for (i = 40; i <= 60; i += 2)
cout << i << " ";
cout << endl << endl;

d)

Acrescente o cdigo para escrever os nmeros impares de 323 a 367.


for (i = 323; i <= 367; i+=2)
cout << i << " ";
cout << endl << endl;

e)

Acrescente o cdigo para escrever os nmeros mltiplos de 3, de 3 a 60.


for (i = 3; i <= 60; i += 3)
cout << i << " ";
cout << endl << endl;

f)

Acrescente o cdigo para escrever os nmeros mltiplos de 5, de 500 a 560.


for (i = 500; i <= 560; i += 5)
cout << i << " ";
cout << endl << endl;

g)

Acrescente o cdigo para escrever os nmeros mltiplos de 5, de 500 a 560,


utilize a estrutura do..while.
i = 500;
do {
cout << i << " ";
i += 5;
} while (i < 560);
cout << endl << endl;

Pgina 5 de 11

Programao
h)

Ficha n2.3

Acrescente o cdigo para escrever os nmeros mltiplos de 5, de 500 a 560,


utilize a estrutura while.
i = 500;
while (i <= 560) {
cout << i << " ";
i += 5;
}
cout << endl << endl;

3. Elabore um programa que escreva a tabuada do 2. (Utiliza a estrutura for).


2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2
2
2
2
2
2
2

x
x
x
x
x
x
x

4 = 8
5 = 10
6 = 12
7 = 14
8 = 16
9 = 18
10 = 20

for (i = 1; i <= 10; i++)


cout << "2 x " << i << " = " << 2 * i << "\n";
cout << endl;
cout << endl;

Pgina 6 de 11

Programao

Ficha n2.3

4. Considere o seguinte cdigo:


int i=0, nota, soma;
char c;
cout << "Introduza as notas dos seus 4 testes:\n";
i=0;
soma = 0;
while ( i < 4 ) {
cout << "Teste " << i << ": ";
cin >> nota;
soma += nota;
// varivel acumulador soma
i++;
}
cout << "Media dos 4 testes " << (float)soma / 4 << "\n\n";

a)

Escreva um programa para utilizar o cdigo anterior.

b)

Verifique o programa calcula a mdia de 4 valores de testes introduzidos.

c)

Altere o programa de modo a calcular a mdia de 2 valores de testes


introduzidos.

int i=0, nota, soma;


cout << "Introduza as notas dos seus 2 testes:\n";
i=0;
soma = 0;
while ( i < 2 ) {
cout << "Teste " << i+1 << ": "; //para no comear em zero soma 1
cin >> nota;
soma += nota;
// varivel acumulador soma
i++;
}
cout << "Media dos 2 testes " << (float)soma / 2 << "\n\n";

d)

Altere o programa de modo a calcular a mdia de n valores de testes


introduzidos. Sendo n um valor lido da consola atravs do comando cin

int i, n, soma, nota;


cout << "Quantos testes:\n";
cin >> n;
i = 1;
// se contador comea em 1
soma = 0;
while (i <= n) {
// condio de paragem menor ou igual
cout << "Teste " << i << ": ";
cin >> nota;
soma += nota;
i++;
}
cout << "Media dos " << n << " testes " << (float)soma / n << "\n\n";
// converter soma em float para o resultado ser float (nmero real)
cout << endl << endl;

Pgina 7 de 11

Programao

Ficha n2.3

5. Escreva um programa que l uma srie de valores positivos reais. A recolha de dados
termina quando for indicado um valor negativo. O programa tambm calcula a soma
dos valores escritos. (Utilize a estrutura dowhile).
float num, somatorio ;
somatorio = 0;
cout << "Soma dos numeros positivos introduzidos.";
cout << (Introduza um n negativo para parar)\n\n";
do {
cout << " Nmero: ";
cin >> num ;
somatorio += num;
} while( num > 0 );
somatorio -= num; // retira o ltimo n negativo, que foi somado
cout << "A soma dos valores positivos escritos " << somatorio << " ";
cout << endl << endl;

6. Escreva um programa que calcule a soma dos primeiros 5 primeiros nmeros inteiros.
(Utilize a estrutura while).
int k;
k = 1;
soma = 0;
while (k <= 5) {
soma += k;
k++;
}
cout << "A soma dos primeiros 5 inteiros (1 a 5) " << soma << " " ;

7. Escreva um programa que l um nmero positivo, e escreve-o ao contrrio (em ordem


inversa). (Utiliza a estrutura do... while).
Nota: Podemos obter o ltimo digito de um nmero inteiro atravs do resto da diviso
inteira por 10 e retirar o ltimo digito dividindo por 10, ie:
453 % 10 == 3
453 / 10 == 45
int p, ultimo;
cout << "Diga um nmero positivo: ";
cin >> p;
cout << "O nmero ao contrrio: ";
do {
ultimo = p % 10;
cout << ultimo;
p = p / 10;
} while (p != 0);
cout << endl << endl;

Pgina 8 de 11

Programao

Ficha n2.3

8. Crie um programa que dado um nmero inteiro positivo e um dgito, conta o nmero de
vezes que esse dgito ocorre no nmero.
int y, z, d, conta, ultimo;
cout << "Diga um nmero: ";
cin >> y;
cout << "Diga o digito a contar: ";
cin >> d;
conta = 0;
z = y;
do {
ultimo = z % 10;
if (d == ultimo)
conta++;
z /= 10;
} while (z != 0);
cout << d << " aparece " << conta << " vezes em " << y;
cout << endl << endl;

9. Os seguintes dois ciclos for tm o mesmo nmero de iteraes?


for(j=0 ; j<8 ; j++);
for(k=1 ; k<=8 ; k++);
Resposta:
Sim, tm ambos 8 iteraes (nmero de repeties do ciclo).
j - > 0 1 2 3 4 5 6 7
k - > 1 2 3 4 5 6 7 8

10. Qual o valor da varivel inteira x depois do seguinte cdigo ser executado?
x=1;
for(i=2; i<10 ; i++){
if (i%3==0) continue;
x+=i;
}
Resposta:
x

== 27

Porque x = 1 + 2 + 4 + 5 + 7 + 8 = 27
(3 , 6 e 9 no so somados porque so mltiplos de 3, i.e. o
resto da diviso inteira por 3 zero (i%3==0) )

Pgina 9 de 11

Programao

Ficha n2.3

11. Escreva um programa que dado um nmero inteiro positivo, retorna o seu factorial.
Exemplo: factorial de 4 : 1 x 2 x 3 x 4 = 24
int fatorial, n, j;
cout << "Qual o nmero para calcular o seu fatorial?";
cin >> n;
if (n >= 0) {
fatorial = 1;
for (j = 2; j <= n; j++)
fatorial *= j;
cout << n << "! = " << fatorial;
}
else
cout << "Fatorial calculado apenas com nmeros positivos!!!";
cout << endl << endl;

12. Escreve um programa que escreve os valores dos factoriais de 1 a 8.

int fatorial, n, j;
cout << "Fatoriais de 1 a 8:";
for (int n = 1; n <= 8; n++) {
fatorial = 1;
for (int j = 2; j <= n; j++)
fatorial *= j;
cout << n << "! = " << fatorial << "\n";
}

13. Considere os seguintes extractos de um programa:


for( i=1; i<=20; i++)

for( i=1; i<=20; i++)

if( i==10)

if( i==10)

continue;

break;

else

else

cout << i << \n;

cout << i << \n;

a) Qual a sua diferena, e o que fazem?


O primeiro salta o nmero 10, mas continua
O segundo para no nmero 10.
14. Quantas vezes so executadas as instrues dos seguintes ciclos (quantas iteraes):
a) for( i=1; i<=20; i++) ...
20 iteraes
b) for( i=1; i<=20; i+=2) ...
10 iteraes

Pgina 10 de 11

Programao

Ficha n2.3

c) for( i=10; i>=1; i -=2) ...


5 iteraes
d) for( i= -20; i<=20; i++) ...
41 iteraes (20 de -20 a -1, 1 para 0 e 20 de 1 a 20, ie 20+1+20=41)
e) for( i=1; i<=20; i++)
for( j=1; j<=5; j++)
100 iteraes (20 x 5)

Pgina 11 de 11

Você também pode gostar