Você está na página 1de 6

Engenharia de Software II

Prof. Raul Sidnei Wazlawick


Exerccios: Teste caixa-branca

Para os programas abaixo definidos, determine:


a)
b)
c)
d)

Complexidade ciclomtica.
Grafo de fluxo.
Conjunto de caminhos independentes.
Casos de teste.

Trata-se de programas elaborados por alunos da disciplina de introduo programao


(Pascal), e, portanto, podem efetivamente conter erros.

1. Fazer um programa que calcule a mdia aritmtica de n nmeros digitados pelo


teclado. At que o usurio informe o valor zero.
01. Program median;
02. var valores,n :integer;
03.
media,numero,soma:real;
04. Begin
05. writeln('digite o valor');
06. valores := 0;
07. soma := 0;
08. repeat
09.
readln (numero);
10.
soma := soma + numero;
11.
valores := valores + 1;
12. until numero = 0;
13. media := (soma / valores);
14. Writeln ('A media eh',(media));
15. writeln('Pressione para finalizar');
16. readln();
17. end.

2. Escreva um programa que leia vrios nmeros inteiros ate que seja informado o
numero 0. Se o nmero lido for positivo, escreva uma mensagem indicando se ele
par ou mpar. Se o nmero for negativo, escreva a seguinte mensagem Este nmero
no positivo. (use a funo mod deve ser "x mod y" e retorna o resto da diviso de x
por y)
01. program positivonegativo;

02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.

var n:integer;
var teste2:integer;
begin
repeat
write('digite o numero a ser verificado');
readln(n);
if (n > 0) then
begin
writeLn ('O numero eh positivo ');
if (n mod 2 = 0) then
writeLn ('O numero eh par ')
else
writeLn ('O numero eh impar ')
end
else
write ('O numero eh negativo ')
;
until(n=0);
writeln('Digite qualquer tecla para continuar ');
readln(teste2);
end.

3. Escrever um algoritmo que l 5 valores para a, um de cada vez, e conta quantos destes
valores so negativos, escrevendo esta informao.
01. Program Ex.3 ;
02. Var
03. a: Integer;
04. i: Integer;
05. Neg: Integer;
06. Begin
07. i:= 0;
08. Repeat
09. Writeln ('Digite um nmero qualquer: ');
10. Readln (a);
11. If (a < 0 ) then
12.
Neg:= Neg + 1;
13. i:= i + 1;
14. Until (i = 5);
15. Writeln ('Foram digitados ', Neg,' nmero(s) negativo(s)');
16. End.

4. Escreva um algoritmo que leia 50 valores e encontre o maior deles. Mostre o


resultado.
01. Program QualOMaior;
02. Var
03. Numero: Real;
04. MaiorNumero: Real;
05. i: Integer;
06. Begin
07. i:= 0;
08. MaiorNumero:= 0;
09. Repeat
10. Writeln ('Digite um nmero qualquer.');
11. Readln (Numero);
12. If (Numero > MaiorNumero) then
13.
MaiorNumero:= Numero;
14. i:= i + 1;
15. Until (i = 50);
16. Writeln ('O maior nmero encontrado foi: ', MaiorNumero);
17. readln;
18. End.

5. Dado uma srie de 20 valores reais, faa uma algoritmo que calcule e escreva a mdia
aritmtica destes valores, entretanto se a mdia obtida for maior que 8 dever ser
atribuda 10 para a mdia.
01. Program Exercicio5 ;
02. Var
03. Numero: Real;
04. SomaNumeros: Real;
05. Media: Real;
06. i: Integer;
07. Begin
08. i:= 0;
09. Repeat
10.
Writeln ('Digite um nmero: ');
11.
Readln (Numero);
12.
SomaNumeros:= SomaNumeros + Numero;
13.
i:= i + 1;
14. Until (i = 20);
15. Media:= SomaNumeros / i;
16. If (Media > 8) then
17.
Media:= 10;
18. Writeln ('A mdia dos nmeros digitados foi de: ', Media);
19. End.

6. Escreva um programa que conte quantas vezes cada dgito aparece em um nmero
inteiro longo lido (use o tipo LONGINT). Exemplo: se for lido o nmero 2622111, o
resultado ser:
1 -> 3
2 -> 3
3 -> 0
4 -> 0
5 -> 0
6 -> 1
7 -> 0
8 -> 0
9 -> 0
0 -> 0
01. Program exercicio42;
02. Var
03. NumeroDigitado: longint;
04. DigitoEncontrado: integer;
05. Representante: array [1..10] of integer;
06. i: integer;
07. Begin
08. For i:= 1 to 10 do
09. Representante[i]:= 0;
10. i:= 0;
11. writeln('Digite um numero inteiro: ');
12. readln(NumeroDigitado);
13. Repeat
14. DigitoEncontrado:= (NumeroDigitado mod 10);
15. NumeroDigitado:= (NumeroDigitado div 10);
16. Representante[DigitoEncontrado]:= Representante[DigitoEncontrado]+1;
17. If DigitoEncontrado = 0 then
18.
Representante[10]:= Representante[10]+1;
19. until (NumeroDigitado = 0);
20. For i:= 1 to 9 do
21. Writeln (i,'->',Representante[i]);
22. Writeln ('0->',Representante[10]);
23. readln();
24. end.

7. Faa um programa que leia 10 valores e depois leia mais 10 valores. O programa deve
escrever o produto de cada valor na primeira lista pelo valor correspondente na
segunda lista, ou seja, o primeiro nmero vezes o dcimo primeiro, o segundo vezes o
dcimo segundo, e assim por diante at o dcimo vezes o vigsimo.

01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.

Program vezes;
var
tabela1:array[1..10]of real;
tabela2:array[1..10]of real;
mutiplicacao:array[1..10]of real;
i:integer;
lido:real;
Begin
for i:=1to 10 do
Begin
writeln('Digite o ',i,' numero:');
readln(lido);
tabela1[i]:=lido;
end;
for i:=1to 10 do
begin
writeln('Digite o ',i+10,' numero:');
readln(lido);
tabela2[i]:=lido;
end;
for i:=1 to 10 do
mutiplicacao[i]:= tabela1[i]*tabela2[i];
for i:=1to 10do
writeln('A mult. de:',tabela1[i]:2:2,'*',tabela2[i]:2:2,'eh:',mutiplicacao[i]:2:2);
readln();
end.

8. Escrever um programa que leia um nmero (do teclado) e calcule e imprima o fatorial
deste nmero.
01. Program Fatorial;
02. var num, fat, i : integer;
03. Begin
04. write ('Digite o numero');
05. readln (num);
06. i:= 1; fat:=1;
07. while i <= num do
08.
begin
09.
fat:= (fat * i);
10.
i:= i + 1
11.
end;
12. writeln ('Fatorial = ', Fat);
13. write ('digite enter para finalizar')
14. readln;
15. End.

9. Dada uma matriz de 4 x 5 elementos inteiros, calcular a soma de cada linha, de cada
coluna e de todos os seus elementos.
01. program somaMatriz;
02. var matriz : array [1..4, 1..5] of integer;
03.
arquivo : text;
04.
soma, linha, coluna : integer;
05. begin
06. assign (arquivo, 'c:\temp\matriz.txt');
07. reset(arquivo);
08. for linha := 1 to 4 do
09. for coluna := 1 to 5 do
10.
read(arquivo, matriz[linha,coluna]);
11. for linha := 1 to 4 do
12. begin
13.
soma := 0;
14.
for coluna := 1 to 5 do
15.
soma := soma + matriz[linha,coluna]
16.
;
17.
writeln('Soma linha ',linha,'=',soma);
18. end;
19. for coluna := 1 to 5 do
20.
begin
21.
soma := 0;
22.
for linha := 1 to 4 do
23.
soma := soma + matriz[linha,coluna];
24.
writeln('Soma coluna ',coluna,'=',soma);
25.
end;
26. soma := 0;
27. for linha := 1 to 4 do
28.
for coluna := 1 to 5 do
29.
soma := soma + matriz[linha,coluna];
30. writeln('Soma de todos elementos= ', soma);
31. close(arquivo);
32. readln();
33. end.