Questões com teste de mesa

Teste de mesa é um recurso que objetiva avaliar o conhecimento técnico dos recursos da linguagem de programação. É mais fácil fazer o teste de mesa do que elaborar o algoritmo, sendo a elaboração de uma solução algorítmica algo que exige maior capacidade do programador. Mesmo assim, é importante avaliar, ou pelo menor iniciar, com o entendimento de um código e a verificação do real entendimento através do teste de mesa, onde deve-se indicar qual será a saída do algoritmo para uma determinada entrada.

A seguir, dois algoritmos em linguagem C são apresentados e solicitado o teste de mesa para os mesmos. Não será dito o que os algoritmos realizam, cabendo acompanhar cada passo do algoritmo para poder determinar a saída. Uma das questões envolve vetores e a outra envolve ponteiros, sendo que ambas envolvem o conhecimento de função.


Questão utilizando vetor

O algoritmo envolve a manipulação básica de um vetor. Ele avalia o real entendimento do uso da estrutura de repetição for, bem como uma chamada simples de função envolvendo um vetor como argumento.

Código

#include <stdio.h>

void teste(int v[], int tam) {
    int i;
    for (i = 0; i < tam; i++) {
        v[i] = 0;
    }
}

int main() {
    int vet[6] = {-5, 3, 2, 9, 2, 2}, i, j = 4, valores = 0;

    for (i = 0; i < j; i++) {
        if (vet[i] == 2) {
            valores = valores + 2;
        }
    }
    printf("%i %i \n", valores, i);

    for (i = 0; i < 6; i++) {
        vet[i] = j;
        j = j - 1;
    }
    for (i = 0; i < 6; i++) {
        printf("%i ", vet[i]);
    }

    printf("\n");
    teste(vet, 3);
    for (i = 0; i < 6; i++) {
        printf("%i ", vet[i]);
    }

    return 0;
}

Resultado esperado

2 4
4 3 2 1 0 -1
0 0 0 1 0 -1

Questão utilizando ponteiros

O algoritmo envolve inicialmente o conhecimento básico de ponteiros, mas também sua utilização em funções. Passagem por valor e referência são tratadas no algoritmo.

Código

#include <stdio.h>

float aula(int a, int b) {
    return b / (a + 1);
}

int oitenta() {
    int a, b, c;
    a = 8456;
    return (a * b) / (c * 2);
}

void troca(int tam, int *a) {
    int b = tam + 2;
    *a = b;
    tam = *a;
}

int main() {
    int tam = 0, *aux, b = 5;
    float teste;
    aux = &b;
    printf("%i \n", *aux);
    troca(tam, &b);
    printf("%i %i\n", tam, b);
    teste = aula(tam, *aux);
    printf("%f", teste);
    return 0;
}

Resultado esperado

5
0 2
2.000000
Share

2 opiniões sobre “Questões com teste de mesa

  1. Helton

    algoritmo “algoritmo_que_faz_algo”

    var

    var99, var103, var7 : inteiro

    var55 : real

    var0 : inteiro

    inicio

    var0 <- 3

    leia(var103)

    leia(var99)

    leia(var7)

    var55 <- (var99 + var103 + var7) / var0

    escreva(var55)

    fimalgoritmo

     
    Reply
    1. Benjamin Grando Moreira

      Não vejo razão para utilizar a variável “var0”. Como ela é constante, você poderia fazer simplesmente:
      var55 <- (var99 + var103 + var7) / 3

       
      Reply

Deixe um comentário para Benjamin Grando Moreira Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.