OBJETIVOS

  • Usar expressões lógicas
  • Usar as instruções de ciclo while e for
  • Usar as instruções de salto break e continue
  • Usar ciclos embebidos
  • Construir, e usar, predicados
  • Usar a iteração para trabalhar com ficheiros
  • Usar pathnames relativos e absolutos


EXERCÍCIOS

 

1.     (Q1 do Cap.3) Qual o valor de i imediatamente após a execução de cada um dos seguintes ciclos? Quantas vezes são executados os respectivos corpos, i.e., quantas iterações são realizadas?

 

a)     int i = 0;

while (i < 5)

{

  i = i + 1;

}

 

b)     int i = 0;

while (0 < i%5)

{

  i = i + 1;

}

 

c)     int i = 1;

while (i < 10)

{

  i = i + 5;

}

 

 

2.     (Q2 do Cap.3) Quais os valores de x e y após a execução do ciclo?

 

int x = 1;

int y = 10;

while (x < y)

{

  x = x + 1;

  y = y - 1;  

}

 

3.     (Q3 do Cap.3) Escreva uma função double potencia(double x, int n) para calcular o valor do primeiro argumento, x , elevado à potência do segundo argumento, n , o qual é não negativo.

 

4.     (Q4 do Cap.3) Qual o valor de cada uma das seguintes expressões lógicas, dado que

 

int i = 10;

int j = 5;

double x = 12.0;

bool teste = false ;

 

a)     i < x

b)     (i  < x) or (j == 3)

c)     false and (not teste)

d)     true and (not teste)

e)     i%j == 0

 

5.     (Q5 do Cap.3) Quais os valores em x e y após a execução do seguinte ciclo?

 

int x = 1;

int y = 10;

while( (x < y) and (y > x) )

{

  x = x + 1;

  y = y - 1;

}

 

6.     (Q6 do Cap.3) O que faz o seguinte ciclo?

 

int x = 1;

int y = 10;

while( x != y )

{

  x = x + 1;

  y = y - 1;

}

 

7.     (Q8 do Cap.3) Escreva uma única asserção que sirva para substituir as duas asserções nas linhas 7 e 8 do diapositivo 114.

 

8.     (Q12 do Cap.3) Considere o seguinte ciclo para calcular a média dos números lidos a partir de uma ligação de entrada ( istream ) designada por entrada :

 

double soma = 0;

int contador = 1;

double x;

entrada >> x;

while( not entrada.fail() )

{

  contador = contador + 1;

  soma = soma + x;

  entrada >> x;

}

double media = soma/contador;

 

O que está mal neste código?

 

9.     Construa, em C++, uma aplicação que leia números inteiros a partir de um ficheiro chamado inteiros.txt , verifique quais deles são múltiplos de 3, e os escreva num ficheiro chamado mult3.txt . Verifique o seu funcionamento. Faça experiências com diferentes pathnames (relativos e absolutos).

 

10. Construa em C++ uma aplicação que peça ao utilizador um número inteiro positivo, e que verifique se esse número é primo. Resolva:

a)     usando a instrução de repetição while;

b)     usando a instrução de repetição for. (Em princípio, a instrução for é para ser usada associada ao conceito de ciclo contador, e é isso que se pretende neste exercício.)

 

11. Aproveitando a aplicação desenvolvida no exercício anterior, construa uma aplicação que peça ao utilizador dois números inteiros positivos, e determine quantos números primos existem no intervalo fechado por eles definido. Resolva:

a)     com uma aplicação cuja função principal seja a única rotina;

b)     transformando a aplicação desenvolvida no exercício anterior num predicado, o qual é invocado pela função principal da nova aplicação.