Exercícios Resolvidos de Analisando seu programa

Ver Teoria

Enunciado

Copie o programa abaixo em um script do MATLAB:

Descubra porque o programa não funciona, usando o debugger do MATLAB.

Passo 1

Este exercício pede que identifiquemos os erros do programa do enunciado, usando o debugger do MATLAB. Devemos copiar o programa em um novo script e rodá-lo algumas vezes, até que não apareçam mais mensagens de erro.

Passo 2

Crie um script novo no MATLAB e copie nele o programa do enunciado.

Antes de rodarmos o programa e procurarmos eventuais erros, vamos ver o que cada linha significa:

Na primeira linha, temos o comando c l e a r   a l l . Este comando limpa o Workspace do MATLAB cada vez que o programa é rodado. Como procuramos erros no código e teremos que rodá-lo várias vezes para ver se corrigimos alguma coisa, é importante limpar o Workspace a cada tentativa.

Na segunda linha, o comando c l c limpa o Command Window do MATLAB cada vez que o programa é executado. Novamente, como vamos rodar o código diversas vezes, é importante limpar o Command Window a cada tentativa, para ficar mais fácil de ver qual erro foi corrigido e qual é o erro a ser corrigido na sequência, caso exista.

Na linha 4, criamos uma variável chamada m a x X que armazena o número 9. Em seguida, criamos o vetor X , que vai de 1 a m a x X , com um passo igual a 2.

Na linha 6, criamos o vetor Y , que inicia em 10 e termina em 1, com um passo de -1.

Finalmente, na linha 7, somamos os vetores X e Y e armazenamos o resultado no vetor Z .

Agora que sabemos o que cada linha faz, vamos rodar nosso programa pela primeira vez.

Ooops, apareceu o seguinte erro no Command Window:

Temos um erro na linha em que os vetores X e Y são somados (no meu script, o comando Z = X + Y ficou na linha 7, pode ser que no seu script ele esteja em uma linha diferente, dependendo da forma que você copiou o programa). O MATLAB diz que as dimensões das matrizes não batem. Logo, deve ter alguma coisa na criação dos vetores X e Y que fez com que eles tenham comprimentos diferentes, fazendo com que não consigamos somá-los.

Vamos encontrar essa coisa debugando o nosso programa.

Passo 3

Usamos breakpoints para debugar programas. Lembrando que um breakpoint é um ponto marcando uma linha de código, onde o programa vai parar temporariamente de ser executado, permitindo que a gente analise tudo o que aconteceu antes.

Como o erro está na linha 7, vamos criar um breakpoint nessa linha. Para isto, clique na barra cinza à esquerda do código, na linha 7 (ou na linha onde o MATLAB indicou que o erro aparece, caso você tenha copiado o programa um pouquinho diferente).

Vai aparecer um ponto vermelho onde você clicou, que é o nosso breakpoint:

Execute o programa novamente. O MATLAB entra em modo debugger e vai interromper a execução quando chegar na linha do breakpoint:

A interrupção é indicada pela flechinha verde, podemos ver tudo que tem acima dela. Como tivemos um problema de dimensões de matrizes, vamos dar uma olhada nos vetores X e Y , para vermos os tamanhos deles. Para vermos os elementos e as dimensões dos vetores, devemos deixar o cursor do mouse sobre as variáveis.

Ao fazermos isso com o vetor X , vemos que ele tem dimensões 1 × 5 , isto é, ele tem 5 elementos:

Quando fazemos o mesmo com o vetor Y , vemos que ele tem dimensões 1 × 10 :

Em outras palavras, Y tem o dobro de elementos de X . É por isso que o MATLAB não consegue somar os dois.

Passo 4

Vamos tentar corrigir o problema. Antes, pare o debugger clicando em “Quit Debugging”:

Agora, precisamos encontrar uma forma de fazer com que os vetores X e Y tenham o mesmo comprimento. Existem várias formas de fazer isso. Uma delas é mudarmos o valor de m a x X .

Pense comigo: se X começa em 1 e tem passo 2, quanto deve ser m a x X para que X tenha 10 elementos? O número de elementos de um vetor criado com o comando:

v e t o r = v a l o r   i n i c i a l : p a s s o : v a l o r   f i n a l

Pode ser calculado a partir da seguinte expressão:

n º   e l e m e n t o s = v a l o r   f i n a l - v a l o r   i n i c i a l p a s s o + 1

Para o vetor X :

n º   e l e m e n t o s = 10

v a l o r   f i n a l = m a x X

v a l o r   i n i c i a l = 1

p a s s o = 2

Logo, a equação fica:

10 = m a x X - 1 2 + 1

Temos que m a x X = 19 .

Vamos então trocar o valor de m a x X e debugar novamente para verificar como ficou o vetor X :

Agora X tem dimensões 1 × 10 , assim como Y . Desta forma, conseguiremos somar os dois vetores sem problemas.

Passo 5

Vamos ver agora está tudo certo? Para executar a linha 7 no modo debugger, aperte F10 ou o botão step.

Quando você fizer isso, a flechinha verde vai descer uma linha de código, indicando que a linha 7 foi executada sem erros. Como a linha 7 é a última linha do programa, esta flechinha muda de orientação, apontando para baixo:

Note também que não apareceu nenhuma mensagem de erro no Command Window, apenas uma frase dizendo que o script acabou:

Logo, o MATLAB conseguiu somar os vetores X e Y e armazenar a soma em Z , sem problemas.

Pronto! O programa está corrigido! Se quiser dar uma última verificada, apague o breakpoint clicando nele e mande o programa rodar novamente. Com as alterações feitas neste passo a passo, não deve aparecer nenhuma mensagem de erro.

Resposta

Ei, a resposta está no passo a passo :)