Você está na página 1de 25

Teste de Mesa

Ao nos recordarmos dos passos necessrios para


a construo de um algoritmo veremos que aps a
elaborao de um algoritmo devemos test-lo
realizando simulaes com o propsito de
verificarmos se este est ou no correto.
Existem alguns softwares disponveis que
efetuam
a
interpretao
de
algoritmos
representados
em
pseudocdigos
ou
em
fluxogramas.
Porm, existe uma tcnica denominada teste de
mesa que permite a simulao do processo de
interpretao de um algoritmo utilizando apenas um
papel e uma caneta.
80

Teste de Mesa
Para acompanhar o desenvolvimento de um
algoritmo importante verificar o estado dos dados
a cada instruo, verificando o contedo de todas
as variveis contidas no algoritmo.
Sendo assim deve-se enumerar as linhas do
algoritmo e em seguida criar uma tabela onde, a
cada linha, so mostrados os contedos das
variveis do algoritmo
e o nmero da linha
executada.
Para uma melhor visualizao do processo
adotaremos a seguinte conveno: nas linhas em
que uma varivel lida (entrada), o valor da
varivel ficar entre colchetes [] e quando o
contedo de uma varivel for escrito (sada), ficar
81entre chaves {}.

Aplicaremos a tcnica do teste de mesa sobre o


algoritmo abaixo, o qual visa determinar o nmero de
vrtices de uma figura geomtrica.
algoritmo vrtices
var vertices, faces, arestas: inteiro
inicio
1. escreva (Entre com o nmero de faces da figura geomtrica: )
2. leia (faces)
3. escreva (Entre com um nmero da arestas da figura geomtrica:)
4. leia (arestas)
5. vertices <- arestas + 2 faces
6. escreva (O nmero de vrtices do objeto especificado : , vertices)
fimalgoritmo
Linha
Vertices
Faces
Arestas

82

[6]

[12]

12

{8}

12

Estruturas de Controle de Fluxo


2.

Comando de Seleo Mltipla

Em algumas situaes ao chegarmos a uma


determinada instruo de um algoritmo devemos
selecionar um dentre alguns trechos a seguir, tendo
como base para esta escolha um conjunto de
valores.

Trecho 1

Trecho 3
Trecho 2

Para lidar com casos deste tipo foi criado o


comando de seleo mltipla.
83

Estruturas de Controle de Fluxo


2.

Comando de Seleo Mltipla (continuao)

Possuindo a sintaxe:
...
escolha (<varivel>)
caso <valor11>, <valor12>, ..., <valor1n>
<seqncia-de-comandos-1>
caso <valor21>, <valor22>, ..., <valor2m>
<seqncia-de-comandos-2>
...
outrocaso
<seqncia-de-comandos-extra>
fimescolha
...
84

Estruturas de Controle de Fluxo


2. Comando de Seleo Mltipla (continuao)
Exemplo:
O pseudocdigo a seguir informa com base no
nome de um time fornecido, se este trata-se de
um time carioca, paulista ou de outro estado.

85

Estruturas de Controle de Fluxo


algoritmo " Exemplo Seleo Mltipla"
var time: caractere
inicio
escreva ("Entre com o nome de um time de futebol: ")
leia (time)
escolha (time)
caso "Flamengo", "Fluminense", "Vasco", "Botafogo"
escreva (" um time carioca.")
caso "So Paulo", "Palmeiras", "Santos", "Corinthians"
escreva (" um time paulista.")
outrocaso
escreva (" um time de outro estado.")
fimescolha
fimalgoritmo
86

Estruturas de Controle de Fluxo


2.

Comando de Seleo Mltipla

Exerccio:
Construa um algoritmo que receba dois
nmeros reais e um dos seguintes smbolos: +, -,
* ou /, o qual designar qual operao ser
aplicada considerando os valores recebidos
como seus operandos. O referido algoritmo deve
retornar o resultado da operao selecionada
com uma preciso de dois dgitos.

87

algoritmo "exerccio"
var op1, op2: real
operador: caractere
inicio
escreva ("Entre com o primeiro operando: ")
leia (op1)
escreva ("Entre com o segundo operando: ")
leia (op2)
escreva ("Entre com um dos operadores (+, -, *, /): ")
leia (operador)
escolha (operador)
caso "+"
escreva (op1," ",operador,op2," =",op1+op2:10:2)
caso "-"
escreva (op1," ",operador,op2," =",op1-op2:10:2)
88

caso "*"
escreva (op1," ",operador,op2," =", op1*op2:10:2)
caso "/"
se (op2<>0) entao
escreva (op1," ",operador,op2," =")
escreval (op1/op2:10:2)
senao
escreva ("No possvel efetuar a diviso!")
fimse
outrocaso
escreva ("Operao invlida! ")
fimescolha
fimalgoritmo

89

Estruturas de Controle de Fluxo


Em certos algoritmos percebemos que a
execuo de determinados trechos se faz
necessria algumas vezes.
Um exemplo que ns j tratamos o caso do
clculo da mdia aritmtica entre alguns valores.
Vimos que a operao de leitura repetida de
acordo com o nmero de valores que serviram de
base para o clculo da mdia. Outra forma de
verificar a necessidade de repetio de um
determinado trecho do algoritmo imaginar que ao
invs de se desejar apenas obter uma mdia, o
objetivo fosse obter um conjunto de mdias. Para o
clculo de cada uma das mdias o mesmo conjunto
de operaes seria executado.
Este fato gerou a criao das estruturas de
repetio, as quais veremos a seguir.
90

Estruturas de Controle de Fluxo


3. Estrutura ou lao de repetio enquanto
Sintaxe:
...
enquanto (<expresso-lgica>) faca
<seqncia-de-comandos>
fimenquanto
...
Obs.: As instrues contidas no enquanto sero
executadas durante o tempo em que o resultado
da avaliao da expresso lgica resultar
verdadeiro. O fato da avaliao da expresso
lgica encontrar-se no incio do lao faz com que a
seqncia de comandos s venha a ser executada
se ao menos uma vez a avaliao da expresso
91 resultar em verdadeiro.

Estruturas de Controle de Fluxo


3. Estrutura ou lao de repetio enquanto
(continuao)
Exemplo:
O pseudocdigo e os fluxogramas a seguir
escrevem na sada padro os nmeros inteiros
contidos no intervalo [1, 10].

92

Estruturas de Controle de Fluxo

algoritmo "exemplo 1 lao enquanto"


var
valor: inteiro
inicio
valor <- 1
enquanto (valor <= 10) faca
escreval (valor)
valor <- valor+1
fimenquanto
fimalgoritmo
93

Estruturas de Controle de Fluxo


Inicio

Inicio

valor: inteiro

valor: inteiro

Valor <- 1

Valor <- 10

valor<=10

falso

verdadeiro

94

Fim

Valor>0

falso

verdadeiro

valor,

Valor <- valor-1

Valor <- valor+1

10-valor,

Fim

Estruturas de Controle de Fluxo


2. Estrutura ou lao de repetio enquanto
(continuao)
Exemplo:
Dada uma reta ax+by+c=0 e cinco pontos, faa
um algoritmo para calcular, para cada ponto, o
seguinte: se o ponto estiver no primeiro quadrante
calcule e informe a distncia do ponto a reta caso
contrrio escreva uma mensagem informando que
o ponto no pertence ao primeiro quadrante.

95

Estruturas de Controle de Fluxo


algoritmo "exemplo lao enquanto "
var a,b,c,x,y: real
contador: inteiro
inicio
contador <- 1
escreval ("Equao da reta: ax+by+c=0")
escreva ("Coeficiente a da reta = ")
leia (a)
escreva ("Coeficiente b da reta = ")
leia (b)
escreva ("Coeficiente c da reta = ")
leia (c)
96

enquanto (contador<=5) faca


escreval ("Coordenadas do ponto ",contador," :")
escreva ("Coordenada x do ponto = ")
leia (x)
escreva ("Coordenada y do ponto = ")
leia (y)
se (x>=0) e (y>=0) entao
escreval ("A distncia do ponto ",contador,
" a reta : ",((a*x+b*y+c)^2)^0.5/(((a^2)+(b^2))^0.5))
senao
escreval ("O ponto no est no primeiro
quadrante! ")
fimse
contador <- contador + 1
fimenquanto
fimalgoritmo
97

Estruturas de Controle de Fluxo


3. Estrutura ou lao de repetio repita
Sintaxe:
...
repita
<seqncia-de-comandos>
ate (<expresso-lgica>)
...
Obs.: As instrues contidas no repita sero
executadas enquanto o resultado da avaliao
da expresso lgica resultar em falso. O fato da
avaliao da expresso lgica encontrar-se no
final do lao faz com que, mesmo no caso da
expresso lgica nunca resultar em falso, a
seqncia de comandos seja executada ao
menos uma vez.
98

Estruturas de Controle de Fluxo


3. Estrutura ou lao de repetio repita
(continuao)
Exemplo:
O pseudocdigo e os fluxogramas a seguir
escrevem na sada padro os nmeros inteiros
contidos no intervalo [1, 10].

99

Estruturas de Controle de Fluxo


algoritmo "exemplo"
var
valor: inteiro
inicio
valor <- 0
repita
valor <- valor+1
escreval (valor)
ate (valor = 10)
fimalgoritmo

100

Estruturas de Controle de Fluxo


Inicio

Inicio

valor: inteiro

valor: inteiro
Valor <- 9

Valor <- 0
Valor <- valor+1

10-valor,

valor,

falso

101

Valor <- valor-1

valor=10

Fim
verdadeiro

falso

Valor=-1

Fim
verdadeiro

Estruturas de Controle de Fluxo

3.
Estrutura ou lao de repetio
repita (continuao)
Exemplo:
Dada uma reta ax+by+c=0 e cinco pontos, faa
um algoritmo para calcular, para cada ponto, o
seguinte: se o ponto estiver no primeiro
quadrante calcule e informe a distncia do ponto
a reta caso contrrio escreva uma mensagem
informando que o ponto no pertence ao primeiro
quadrante.

102

Estruturas de Controle de Fluxo


algoritmo "exemplo"
var a,b,c,x,y: real
contador: inteiro
inicio
contador <- 1
escreval ("Equao da reta: ax+by+c=0")
escreva ("Coeficiente a da reta = ")
leia (a)
escreva ("Coeficiente b da reta = ")
leia (b)
escreva ("Coeficiente c da reta = ")
leia (c)
103

repita
escreval ("Coordenadas do ponto ",contador," :")
escreva ("Coordenada x do ponto = ")
leia (x)
escreva ("Coordenada y do ponto = ")
leia (y)
se ((x>=0) e (y>=0)) entao
escreval ("A distncia do ponto ",contador,
" a reta : ",
((a*x+b*y+c)^2)^0.5/(((a^2)+(b^2))^0.5))
senao
escreval ("O ponto ",contador," no est no
primeiro quadrante! ")
fimse
contador <- contador + 1
ate (contador>5)
fimalgoritmo
104

Você também pode gostar