Buscar

4_Metodo_de_Depuracao_de_Erros

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Método de depuração de erros - Teste de Mesa
Os métodos de depuração de erros foram criados para:
Simular execução de um procedimento
Detectar erros de lógica
Existem dois tipos conhecidos de métodos de depuração de erros:
Teste de mesa
Método chinês
Utilizaremos o Teste de Mesa como nosso método de depuração padrão. Sua estrutura consiste em:
Entrada de dados
Variáveis
Condicionais (implícitos e explícitos)
Saída de Dados
Como podemos identificar cada um deles?
Entrada de dados
- Consiste em verificar se existe um comando de leitura
Variáveis
- Consiste em relacionar todas as variáveis definidas
Condicionais
- Consiste em relacionar todas as condições existentes no procedimento
Saída de dados
- Consiste em verificar se existe um comando de escrita
�
Vejamos então o seguinte código:
Início
Defina nome, sit caracter
Defina n1, n2, m real
Defina i inteiro
Para i de 1 até 5 passo 1 faça
 Leia nome, n1, n2, m
 m ( (n1 + n2) / 2
 Se m < 5 Então
 sit ( “reprovado”
 Senão
 sit ( “aprovado”
 Fim-se
 Escreva nome, n1, n2, m, sit
Fim-para
Fim
Primeiro montaremos a estrutura do meu teste de mesa. Seguindo os questionamentos feitos anteriormente, teremos a seguinte posição:
	Entrada
	nome
	n1
	n2
	m
	sit
	i
	I≤5
	m<5
	Saída
Temos entrada de dados, pois existe um comando de leitura no algoritmo.
As variáveis definidas no algoritmo são nome, n1, n2, m, sit, i.
Os condicionais são:
i≤5 (implícito no comando de repetição incondicional) 
m<5 (explícito no comando condicional)
Temos saída de dados, pois existe um comando de escrita no algoritmo.
O segundo passo é definir qual é a massa de dados que utilizaremos. Temos 5 alunos e a cada um deles terei informação sobre o nome e duas notas de cada um deles. Assim, poderemos ter o seguinte conjunto de dados abaixo como exemplo:
“Andrea Maria”, 9, 9.8
“Emerson Lima”, 7.4, 5
“Carlos Barros”, 4.5, 5.5
“Helio Cardoso”, 7.8, 4.9
“Iolanda Neves”, 3, 2.7
�
Então os dados aparecerão como informação da Entrada de dados. Veja o esquema abaixo:
	Entrada
	nome
	n1
	n2
	m
	sit
	i
	I≤5
	m<5
	Saída
	“Andrea Maria”, 9, 9.8
“Emerson Lima”, 7.4, 5
“Carlos Barros”, 4.5, 5.5
“Helio Santos”, 7.8, 4.9
“Iolanda Neves”, 3, 2.7
	
	
	
	
	
	
	
	
	
Agora vamos simular a execução do algoritmo. Após a definição das variáveis, o primeiro comando a ser executado é o comando de repetição incondicional. Quando ele é executado a primeira ação realizada é a atribuição do primeiro valor do comando à variável do loop. Veja abaixo:
	Entrada
	nome
	n1
	n2
	m
	sit
	i
	I≤5
	m<5
	Saída
	“Andrea Maria”, 9, 9.8
“Emerson Lima”, 7.4, 5
“Carlos Barros”, 4.5, 5.5
“Helio Santos”, 7.8, 4.9
“Iolanda Neves”, 3, 2.7
	
	
	
	
	
	1
	
	
	
 A segunda ação realizada é verificar se a variável do loop satisfaz a condição. Note que a variável é comparada com o segundo valor do conjunto. Note ainda que se o terceiro valor fosse negativo, a comparação a ser realizada seria ≥ (maior ou igual). Veja abaixo: 
	Entrada
	nome
	n1
	n2
	m
	sit
	i
	I≤5
	m<5
	Saída
	“Andrea Maria”, 9, 9.8
“Emerson Lima”, 7.4, 5
“Carlos Barros”, 4.5, 5.5
“Helio Santos”, 7.8, 4.9
“Iolanda Neves”, 3, 2.7
	
	
	
	
	
	1
	.V.
	
	
 Como a condição é satisfeita, os comandos internos ao loop serão executados. O primeiro comando existente dentro do loop é o comando de leitura. Veja abaixo:
	Entrada
	nome
	n1
	n2
	m
	sit
	i
	I≤5
	m<5
	Saída
	“Andrea Maria”, 9 , 9.8
“Emerson Lima”, 7.4, 5
“Carlos Barros”, 4.5, 5.5
“Helio Santos”, 7.8, 4.9
“Iolanda Neves”, 3, 2.7
	“Andrea Maria”
	9
	9.8
	
	
	1
	.V.
	
	
Note que os valores lidos foram cortados como uma indicação de que foram utilizados. Sendo assim, quando uma nova leitura ocorrer, os valores a serem utilizados serão os valores que aparecem na sequência.
O próximo comando a ser executado dentro do loop é o comando de atribuição, ou seja o valor calculado na expressão à direita do sinal de atribuição (() será armazenado na variável indicada à esquerda do sinal de atribuição. Veja abaixo:
	Entrada
	nome
	n1
	n2
	m
	sit
	i
	I≤5
	m<5
	Saída
	“Andrea Maria”, 9 , 9.8
“Emerson Lima”, 7.4, 5
“Carlos Barros”, 4.5, 5.5
“Helio Santos”, 7.8, 4.9
“Iolanda Neves”, 3, 2.7
	“Andrea Maria”
	9
	9.8
	9.6
	
	1
	.V.
	
	
Após a execução do comando de atribuição, será executado o comando condicional. Veja abaixo:
	Entrada
	nome
	n1
	n2
	m
	sit
	i
	I≤5
	m<5
	Saída
	“Andrea Maria”, 9 , 9.8
“Emerson Lima”, 7.4, 5
“Carlos Barros”, 4.5, 5.5
“Helio Santos”, 7.8, 4.9
“Iolanda Neves”, 3, 2.7
	“Andrea Maria”
	9
	9.8
	9.6
	
	1
	.V.
	.F.
	
Como o retorno da condição é FALSO, serão executados os comandos após a palavra-reservada SENÃO. Neste caso a atribuição do texto APROVADO à variável sit. Veja abaixo:
	Entrada
	nome
	n1
	n2
	m
	sit
	i
	I≤5
	m<5
	Saída
	“Andrea Maria”, 9 , 9.8
“Emerson Lima”, 7.4, 5
“Carlos Barros”, 4.5, 5.5
“Helio Santos”, 7.8, 4.9
“Iolanda Neves”, 3, 2.7
	“Andrea Maria”
	9
	9.8
	9.6
	“aprovado”
	1
	.V.
	.F.
	
�
Como este é o único comando existente neste bloco, o próximo comando a ser executado é o comando de escrita. Note que este comando está fora do comando condicional. E é isto mesmo que deveria acontecer, pois este comando não implica na repetição do comando. Para isto existe um comando específico que é o comando de REPETIÇÃO condicional. Veja abaixo:
	Entrada
	nome
	n1
	n2
	m
	sit
	i
	I≤5
	m<5
	Saída
	“Andrea Maria”, 9 , 9.8
“Emerson Lima”, 7.4, 5
“Carlos Barros”, 4.5, 5.5
“Helio Santos”, 7.8, 4.9
“Iolanda Neves”, 3, 2.7
	“Andrea Maria”
	9
	9.8
	9.6
	“aprovado”
	1
	.V.
	.F.
	Andrea Maria 9 9.8 9.6 aprovado
Note que os valores na saída de dados diferem da entrada de dados em algumas características:
Valores alfanuméricos não aparecem com aspas.
Valores são separados por espaço e não por vírgula
Após a execução do comando de escrita, temos o fim do comando de repetição incondicional. Como ele é um comando de repetição, você deve retornar à linha onde iniciou o próprio comando.
Ao retornar ao mesmo, o terceiro valor é somado ao valor da variável do loop e novamente realizado todo o procedimento do loop. Vamos supor a execução até o ponto onde o valor da variável do loop assuma o valor 5. Veja abaixo: 
	Entrada
	nome
	n1
	n2
	m
	sit
	i
	I≤5
	m<5
	Saída
	“Andrea Maria”, 9 , 9.8
“Emerson Lima”, 7.4, 5
“Carlos Barros”, 4.5, 5.5
“Helio Santos”, 7.8, 4.9
“Iolanda Neves”, 3, 2.7
	“Andrea Maria”
“Emerson Lima”
“Carlos Barros”
“Helio Santos”
“Iolanda Neves”
	9
7
4.5
7.8
3
	9.8
4.5
5.5
4.9
2.8
	9.6
5.25
5
6.25
2.9
	“aprovado”
“aprovado”
“aprovado”
“aprovado”
“reprovado”
	1
2
3
4
5
	.V.
.V.
.V.
.V.
.V.
	.F.
.F.
.F.
.F.
.V.
	Andrea Maria 9 9.8 9.6 aprovado
Emerson Lima 7 4.5 5.25 reprovado
Carlos Barros 4.5 5.5 5 aprovado
Helio Santos 7.8 4.9 6.25 aprovado
Iolanda Neves 3 2.8 2.9 reprovado
Note que os valores foram cortados, pois no caso das variáveis e dos condicionais quando um novo valor é calculado, este é colocado no lugar do valor anterior. Por esta razão o valor anterior é cortado dando lugar ao novo valor resultante.
Vamos supor então a execução até o ponto onde o valor da variável do loop assuma o valor 5. Veja abaixo: 
	Entrada
	nome
	n1
	n2
	m
	sit
	i
	I≤5
	m<5
	Saída
	“Andrea Maria”, 9 , 9.8
“Emerson Lima”, 7.4, 5
“Carlos Barros”, 4.5, 5.5
“Helio Santos”, 7.8, 4.9
“Iolanda Neves”, 3, 2.7
	“Andrea Maria”
“Emerson Lima”
“Carlos Barros”
“Helio Santos”
“Iolanda Neves”
	9
7
4.5
7.8
3
	9.84.5
5.5
4.9
2.8
	9.6
5.25
5
6.25
2.9
	“aprovado”
“aprovado”
“aprovado”
“aprovado”
“reprovado”
	1
2
3
4
5
6
	.V.
.V.
.V.
.V.
.V.
.F.
	.F.
.F.
.F.
.F.
.V.
	Andrea Maria 9 9.8 9.6 aprovado
Emerson Lima 7 4.5 5.25 reprovado
Carlos Barros 4.5 5.5 5 aprovado
Helio Santos 7.8 4.9 6.25 aprovado
Iolanda Neves 3 2.8 2.9 reprovado
Quando o loop é executado novamente, o valor da variável passa a 6 e o condicional agora não é satisfeito. Assim, você deve proceder a execução do próximo comando após o Fim-para.
O comando que vem após o Fim-para é o comando Fim. O algoritmo então se encerra. Se houvesse outros comandos após o Fim-para, estes seriam executados até que o comando Fim seja encontrado.
Note que:
Na entrada de dados, todos os valores foram cortados. Isto significa que todos os valores foram usados.
Nas colunas referentes as variáveis e condicionais, todos os valores de cada coluna foram cortados exceto o último. Este é o valor que está armazenado na memória.
Na saída de dados, nenhum dos valores é cortado, pois todos os valores são visíveis ao final da escrita das mesmas.
Método Chinês
Este método é similar ao teste de mesa, a diferença é que não colocamos os condicionais. É dirigido para um grupo de desenvolvedores que tem um nível avançado de experiência e que precisa apenas saber os valores existentes, visto que os condicionais são executados dinamicamente e o que se necessita na verdade são os valores finais da execução do procedimento.

Outros materiais