Teste de Mesa em Algoritmos

O Teste de Mesa é um processo manual que é utilizado para validar a lógica de um determinado algoritmo. Ele é utilizado principalmente em algoritmos quando a linguagem utilizada não possui nenhuma ferramenta automatizada de depuração. O teste consiste em acompanhar os valores das variáveis do programa e verificar se os resultados são os esperados. É um teste limitado, já que é factível somente para programas e algoritmos menores, porém bastante eficaz na detecção de erros 12345.

A figura serve para exemplificar, de maneira didática, os passos de um teste de mesa quando estamos aprendendo sobre algoritmos.

1Stack Overflow em Português 2DIO 3Devs Channel 4Curso de CPP da He4rt Developers – GitHub Pages 5: Treinamento em Lógica de Programação

Origem da palavra algoritmo

Fonte: BrasilEscola


Abu Jafar Mohamed ibn Musa al-Khwarizmi

Brilhante matemático e astrônomo persa-muçulmano nascido provavelmente na região de Khwarizm, sul do mar de Aral, na Ásia central, descobridor do Sistema de Numeração Decimal e dos dez símbolos, que hoje são conhecidos como algarismos indo-arábicos, e introdutor desses numerais e dos conceitos da álgebra na matemática européia. O Califa al-Mamum ocupava o trono do Império Árabe e decidiu transformar seu reino em um grande centro de ensino onde se pudesse dominar todas as áreas do conhecimento, originando a primeira época áurea da ciência islâmica. E para atingir esse objetivo, contratou e trouxe para Bagdá os grandes sábios muçulmanos daquela época. Entre esses sábios estava al-Khowarizmi, o maior matemático árabe de todos os tempos.

Vivendo sob os califados de al-Mamun e al-Mutasim, de sua vida anterior a Bagdá pouco se sabe, porém escreveu principalmente sobre astronomia, geografia e matemática. Da importância de sua obra também se originou a palavra álgebra (al-jabr = reunir). Seu extraordinário trabalho sobre matemática elementar Kitab Al-jabr w’al-mukabalah (A arte de reunir desconhecidos para igualar ao conhecido, 820), uma compilação de regras para solução aritmética de equações lineares e de segundo grau, baseado nos trabalhos de Diofante, foi traduzido no século XII para o latim e quando deu origem ao termo álgebra.

Encarregado de traduzir para o árabe os livros de matemática vindos da Índia, numa dessas traduções o matemático se deparou com aquilo ainda hoje é considerado, a maior descoberta no campo da matemática: O Sistema de Numeração Decimal. Ele ficou tão impressionado com a utilidade daqueles dez símbolos, que hoje são conhecidos como: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9, que escreveu um livro explicando como funciona esse sistema. Este importante trabalho (825) foi preservado numa tradução latina Algoritmi de numero Indorum (975), um texto sobre a arte hindu de calcular, obra que divulgou os símbolos e o sistema numérico indo-arábico.

Este livro introduziu bibliograficamente na Europa, o sistema numérico dos hindus, que passou a ser conhecido como algarismos arábicos, além de importantes conceitos algébricos. Deste texto surgiu o termo algorítmo. Também compilou tabelas astronômicas, baseadas no Sind-hind, versão árabe do original sânscrito Brahma-siddhanta, no século VII da era cristã, e morreu em Bagdá. O termo algarismo vem de al-Khowarizmi, usado para denominar os símbolos de 0 a 9, uma homenagem a esse matemático árabe que mostrou a humanidade a utilidade desses dez e magníficos símbolos.


Mais fontes de informações:

Introdução a algoritmos e pseudocódigo – Lógica de programação

Fonte : DevMedia.com


Motivação

A capacidade de pensar de maneira lógica é um dos principais diferenciais para saber como resolver problemas, principalmente na área da computação. Diretamente relacionado a isso, compreender o conceito de algoritmo também é algo fundamental. Com isso em mente, caso seu objetivo seja se tornar um bom programador, o próximo passo é aprender um pseudocódigo (Portugol, por exemplo), no qual você entrará em contato com detalhes como entrada e saída de dados, assim como o processamento propriamente dito. Nesse artigo, veremos um pouco sobre esses conceitos, fundamentais para quem está começando a programar.

Saiba mais sobre programação em: Programação: pode onde começar?

Lógica de programação: o algoritmo

lógica de programação é a capacidade que todo programador precisa ter para resolver os problemas que aparecem no dia-a-dia. A capacidade de dividir o problema em partes menores é uma etapa essencial da lógica de programação e precisa ser levada em consideração quando nos deparamos com qualquer exercício/desafio. É nesse ponto que entra o conceito de algoritmo, descrito, geralmente, como uma sequência lógica de ações capaz de resolver um problema.

É válido ressaltar, no entanto, que o conceito de algoritmo vai muito além da programação. Uma receita de bolo, por exemplo, é um exemplo simples de algoritmo. Até mesmo algo como “mascar um chiclete” pode ser descrito como um algoritmo, como mostrado na Código 1.

1 – pegar o chiclete
2 – retirar o papel
3 – mascar o chiclete
4 – jogar o papel no lixo
5 – jogar o chiclete no lixo

Código 1. Algoritmo para mascar chiclete.

A maioria dos algoritmos, obviamente, será mais complexa do que simplesmente “mascar um chiclete” ou “fazer um bolo”. No caso da computação, uma soma de dois números é o exemplo mais clássico de um algoritmo simples. Algo como o mostrado na Código 2 é bastante comum para observarmos que temos uma sequência lógica de ações que envolvem os três elementos que comentamos anteriormente: entrada de dados, processamento e saída de dados.

1 – Inserir o primeiro número
2 – Inserir o segundo número
3 – Somar os dois valores
4 – Mostrar o resultado

Código 2. Algoritmo para soma de dois números.

  • Ações 1 e 2: entrada de dados;
  • Ação 3: processamento das informações inseridas;
  • Ação 4: saída de dados.

Introdução ao pseudocódigo

A representação de algoritmos pode ser feita de várias formas; a que mostramos na Código 2 é uma delas. Entretanto, essa opção não possui nenhum tipo de regra mais formal, o que faz com que esteja um pouco distante da programação propriamente dita. Para aproximar um pouco mais os dois conceitos, o pseudocódigo foi criado (um dos exemplos de pseudocódigo mais conhecidos no Brasil é o Portugol). Além dele, podemos encontrar várias opções. O objetivo de todos, no entanto, é um só: criar um código que se aproxime do que será visto em linguagens de programação como C, C# ou Java.

Utilizando o Portugol como exemplo, nosso algoritmo da soma de dois números seria algo como o mostrado na Código 3. Nessa “linguagem de programação”, é importante observar que temos um outro conceito, conhecido como regiões; nesse código, temos uma região de variáveis e outra de processamento. Esse conceito também é algo que será levado para as linguagens de programação e sempre deve ser considerado durante o desenvolvimento de software.

início
inteiro a, b, resultado

ler (a)
ler (b)
resultado <- a + b
escrever (resultado)
fim

Código 3. Soma de dois números em pseudocódigo (Portugol).

Linha 01: Indicação do início do algoritmo em Portugol;

Linha 02: Região de definição de variáveis. As variáveis inteiras “a” e “b” são utilizadas para guardar os valores inseridos pelo usuário, enquanto o “resultado”, como o nome sugere, irá receber a soma deles;

Linhas 04 e 05: Lê os valores inseridos pelo usuário e os guarda em “a” e “b”. Note que, no Portugol, as ações são sempre definidas por verbos no infinitivo. Ler serve para indicar a leitura de informações do usuário (entrada de dados), e Escrever, para mostrar o resultado final para o mesmo (saída de dados);

Linha 06: Utilizamos o operador de atribuição <-. Esse operador atribui a soma de “a” e “b” à variável “resultado”. Essa é a fase de processamento dos dados de entrada;

Linha 07: Para finalizar o algoritmo, temos a amostragem dos dados para o usuário. Nesse caso, utilizamos o verbo Escrever para mostrar essa ação;

Linha 08: Indicação do fim do algoritmo em Portugol.

Com isso, podemos observar que o Portugol possui regras simples e bastante flexíveis. Ao começar a programar com Java ou C#, por exemplo, você irá notar que a proposta de se aproximar de linguagens como elas é obedecida. Se compararmos o código da Código 3 com um em C#, por exemplo, notaremos que não existe uma grande diferença. É claro que as ações (ler e escrever) e os operadores (atribuição e operador aritmético “+”) serão substituídos por seus respectivos na linguagem, mas a estrutura será semelhante à apresentada no exemplo.

Verified by MonsterInsights