Pesquisa · Mapa mental

Algoritmo de Trabb Pardo-Knuth

O Algoritmo de Trabb Pardo-Knuth, ou algoritmo TPK, foi criado por Donald Knuth e Luis Trabb Pardo para demonstrar a evolução das linguagens de programação. Em seu artigo de 1977, "The Early Development of Programming Languages", eles apresentaram um programa simples que incorporava conceitos fundamentais como arrays, índices, funções matemáticas, sub-rotinas, entrada/saída, condicionais e iteração. Em seguida, implementaram o algoritmo em diversas linguagens da época para ilustrar como esses conceitos eram expressos em cada uma delas.

Fonte: Wikipédia (pt)Texto didático por IAAtualizado em 01/07/2026

Pontos-chave

  • O algoritmo TPK foi introduzido por Knuth e Trabb Pardo em 1977.
  • Seu objetivo era ilustrar a evolução das linguagens de programação.
  • O algoritmo envolve arrays, funções matemáticas, E/S, condicionais e iteração.
  • Ele processa onze números, aplicando uma função e verificando limites.
  • As implementações revelam como diferentes linguagens lidam com conceitos e erros.
01

Como o Algoritmo TPK Funciona

O algoritmo TPK opera lendo onze números de um dispositivo de entrada e os armazenando em um array. Posteriormente, ele processa esses números em ordem reversa. Para cada valor, uma função específica é aplicada. O algoritmo então reporta o resultado da função ou exibe uma mensagem caso o valor exceda um limite pré-definido.

02

Implementações e Desafios

As implementações do algoritmo TPK em diferentes linguagens revelam como cada uma lida com os conceitos de programação e, especialmente, com situações de erro como o transbordamento numérico.

ALGOL 60: Limites e Transbordamento

Um dos desafios na função especificada do algoritmo TPK é o termo `5 * t ^ 3`. Para números negativos muito grandes, essa expressão pode facilmente causar um 'transbordamento' (overflow) na maioria das linguagens de programação, excedendo a capacidade máxima de representação numérica.

Python: NaN, Inf e Exceções

Em Python, a maioria das plataformas utiliza o padrão IEEE 754 para números de ponto flutuante. Isso significa que, em certas operações, o resultado pode ser 'NaN' (Not a Number), 'Inf' (Infinito) ou, em outros casos, pode-se lançar uma exceção para indicar um erro ou uma condição inválida.

Rust: Tratamento de Erros com f64::NAN

A linguagem Rust possui uma abordagem específica para lidar com o transbordamento numérico em operações de ponto flutuante. Nesses casos, Rust retorna o valor `f64::NAN`, que representa 'Not a Number', indicando que o resultado da operação não é um número válido.

Vídeos recomendados

Fontes consultadas

Continue pesquisando