TESTE DE MESA O teste de mesa é utilizado para a verificação lógica da programação, simulando um processamento linha a linha com a inclusão, se necessário, de dados fictícios. A sua formulação básica consiste de uma tabela onde são relatadas todas as variáveis. Conforme as linhas do programa vão sendo lidas, a tabela vai sendo preenchida. Exemplo: Consideremos o programa-solução do desafio da aula passada: PROGRAMA troca; VARIÁVEL a, b: INTEIRO; INÍCIO a 10; b 5; a a + b; b a – b; a a – b; FIM. Como exemplo, faremos um teste de mesa com o programa acima: 1 Para fazer o teste de mesa, começamos construindo uma tabela com todas as variáveis do programa. a b 2 As linhas do programa vão sendo lidas, uma a uma e a tabela vai sendo preenchida simultaneamente. A primeira linha de processamento é a linha: a 10; a 10 b 3 A 2ª linha é b 5 a 10 b 5 4 Na 3ª linha temos uma nova atribuição ao valor de a. Assim, o valor antigo é substituído pelo valor da soma do antigo a (10) com o valor de b (5). Na tabela, colocamos o novo valor embaixo do antigo. a 10 15 b 5 5 A 4ª linha é b a – b. Note que o valor que usamos para a é 15 e não o primeiro valor dado que era 10. Assim 15 – 5 = 10. a 10 15 b 5 10 6 Por fim, a 5 ª linha: a a – b. Repare que a expressão é exatamente a mesma subtração executada na linha acima; porém, como o valor de b já foi alterado, a subtração não retorna o mesmo valor. a 10 15 5 b 5 10 ESCREVA E LEIA - ENTRADA E SAÍDA DE DADOS Até o momento, os programas apresentados são bastante simples e não requerem nenhum tipo de interação entre o usuário e o programa. Da maneira que os programas estavam sendo feitos, o usuário não teria como alterar os valores já previstos nos programas e tampouco tinham a oportunidade de visualizar o resultado dos cálculos. Duas palavras chaves se tornam então essencial em programação: ESCREVA e LEIA. Para entender cada um deles, comecemos com um exemplo: PROGRAMA Pergunta; VARIÁVEL num1, num2, resultado: INTEIRO; INÍCIO ESCREVA (“Boa noite! Esse programa efetua a soma de dois números inteiros.”); ESCREVA (“Digite o 1º número: ”); LEIA(num1); ESCREVA (“Digite o 2º número: ”); LEIA(num2); resultado num1 + num2; ESCREVA(“O resultado da soma é”); ESCREVA(resultado); FIM. No programa acima, aparecem duas novas palavras-chaves: ESCREVA e LEIA. Lembre-se que a linguagem de programação é idealizada para o programador se comunicar com o computador. Assim quando colocamos a palavra-chave ESCREVA estamos ordenando ao computador que ele escreva alguma coisa. Mas escrever onde? Na tela do computador. Os programas mais antigos não possuíam interfaces gráficas como o Windows, então nas telas dos computadores apareciam basicamente textos. Imagine, então uma tela preta no monitor do computador. Quando o programa começa a “rodar” e ele encontra a linha ESCREVA (“Boa noite! Esse programa efetua a soma de dois números inteiros.”), a tela preta do computador terá uma linha preenchida com a frase Boa noite! Esse programa efetua a soma de dois números inteiros. Além do programador e do computador, temos um terceiro agente que deve ser envolvido no processo de programação: o usuário. O usuário é aquele que não tem acesso às linhas de programação, mas que vai se beneficiar com o uso do programa. As únicas informações que o usuário tem acesso são aquelas que são escritas na tela. O usuário também pode influenciar no processamento de dados fornecendo informações quando estas são solicitadas. Ao ler um programa, o computador sabe que deverá solicitar informações quando aparecer o comando LEIA. Quando isso acontece, o processamento do programa fica interrompido aguardando que o usuário forneça informações. Assim, no programa acima teríamos uma tela que inicialmente ficaria parada nessas linhas: Boa noite! Esse programa efetua a soma de dois números inteiros. Digite o 1º número: Quando o usuário digitar um número e pressionar <ENTER>, a terceira linha aparece solicitando o segundo número e assim por diante. Note que a informação que o usuário digitar precisa ser guardada na memória do computador, ou seja, precisa ser atribuída a uma variável. Por isso, dentro do parêntesis do comando LEIA há uma variável (repare que não há aspas) indicando que é aquela variável que receberá a informação. Desse modo, no programa-exemplo a variável num1 armazenará o 1º valor digitado pelo usuário enquanto o num2 armazenará o segundo valor. Ao final, esses números são somados e depois são apresentados na tela (note que dentro dos parêntesis do comando ESCREVA aparece a palavra resultado sem aspas, o que significa que será apresentado o valor da variável resultado). Agora que conhecemos os comandos ESCREVA e LEIA podemos definir três instâncias em um programa de computador: A entrada de dados, o processamento e a saída de dados. A entrada de dados são os dados que são recebidos e normalmente são aqueles que entram no programa pelo comando LEIA. O processamento se refere a todas as instruções que são executadas sem que o usuário tome conhecimento. E a saída de dados são os resultados do processamento normalmente apresentado ao usuário pelo comando ESCREVA. Por fim, para a correta utilização do comando ESCREVA esteja atento para:. Uso dos parêntesis que engloba a mensagem a ser apresentada na tela. Uso das aspas: o variáveis não são acompanhadas por aspas. o valores literais (aparecem na tela do jeito que são escritos no programa) são acompanhadas por aspas. Uso da vírgula para agregar variáveis e/ou valores literais em uma mesma mensagem. Por exemplo, se no programa-exemplo tivéssemos a linha: ESCREVA (“O número 1 é ”, num1, “ e o número 2 é “); geraria a seguinte mensagem na tela para o caso dos valores digitados pelo usuário serem num1 = 10 e num2 = 3: O número 1 é 10 e o número 2 é 3 E para a correta utilização do comando LEIA esteja atento para: Dentro do parêntesis vai a variável que vai receber o valor digitado pelo usuário. Caso a variável já possua um valor, esse valor será substituído Não se usa aspas dentro do parêntesis do LEIA. EXERCÍCIOS 1. Faça o teste de mesa nos seguintes algoritmos: PROGRAMA aura_tridimensional; VARIÁVEL a, b, c: INTEIRO; INÍCIO a 0; b 1; c a; a a + b + c; c b; b a + b + c; a c; c a + b + c; FIM. PROGRAMA escravo_de_joh; VARIÁVEL a, b, c, d: CARACTERE; INÍCIO a “a”; b “b”; c “c”; d a; a b; b c; c d; d a; b a; c d; d b; FIM. 2. O seguinte algoritmo escrito em portugol solicita a largura e o comprimento de uma sala retangular e apresenta no final a área dessa sala. PROGRAMA area_sala; VARIÁVEIS larg, comp, area: real; INÍCIO ESCREVA(“Digite a largura da sala (em metros): “); _____________________________________ _____________________________________ LEIA(comp); area <- larg*comp; _____________________________________ FIM. Complete o algoritmo acima com os comandos abaixo: LEIA(larg); ESCREVA(“Digite o comprimento da sala (em metros): “); ESCREVA(“A area da sala é: “, area); Quais são os dados de entrada e quais são os dados de saída? 3. Escreva os seguintes algoritmos em portugol, indicando em cada algoritmo quais são os dados de entrada e quais são os dados de saída. a) que pergunte o nome do usuário, o ano de nascimento e apresente na tela a mensagem: “Boa noite, <nome >, você nasceu há <anos> atrás” substituindo o <nome> pelo nome que o usuário fornecer e <anos> pela diferença entre o ano atual e o ano fornecido pelo usuário. b) que calcule a área de um triângulo isósceles, a partir dos valores da base e da altura fornecidos pelo usuário. 𝐴𝑡𝑟𝑖â𝑛𝑔𝑢𝑙𝑜 = 𝑏. ℎ 2 c) que calcule o vértice de uma função de 2º grau, dados os valores de a, b e c. Lembrando que: 𝑥𝑣 = e 𝑦𝑣 = −∆ 4𝑎 −𝑏 2𝑎 com ∆= 𝑏2 − 4. 𝑎. 𝑐 d) que calcule a equação de uma reta, sendo dados as coordenadas x e y de dois pontos. Lembrando que para a equação do tipo 𝑦 = 𝑎𝑥 + 𝑏: 𝑎= e 𝑦2 − 𝑦1 𝑥2 − 𝑥1 𝑏 = 𝑎𝑥1 − 𝑦1