In diesem Artikel geht es nicht darum, einen neuen komplexen Algorithmus zu lernen, sondern mehr um die Geschichte der Programmierung. TPK wurde eingeführt, um die Entwicklung von Computerprogrammiersprachen zu veranschaulichen. Wenn Sie mit diesem Artikel fertig sind, werden Sie eher etwas über die Geschichte der Programmierung als über ein neues Konzept gelernt haben.

In ihrer Arbeit „The Early Development of Programming Languages“ von 1977 stellten Trabb Pardo und Knuth ein kleines Programm vor, das Arrays, Indexierung, mathematische Funktionen, Subroutinen, I/O, Bedingungen und Iterationen umfasste. Dieses Programm wurde in mehreren frühen Programmiersprachen geschrieben, um die Entwicklung von Programmiersprachen zu zeigen.

Genau wie das „Hello World!“ Programm hat den Zweck, Anfänger in die Programmierung einzuführen, das TPK hat den gleichen Zweck und hat keine praktischen Anwendungen.

Algorithm:
input 11 numbers into a sequence A
reverse sequence A
for each item in sequence A
    call a function to do an operation
    if result overflows
        alert user
    else
        print result

C

// C program to implement TPK algorithm
#include <stdio.h>
#include <math.h>
  
// f(x) = sqrt(|x|) + 5*x**3 
double f (double x)
{
    return (sqrt(fabs(x)) + 5.0 * pow(x, 3.0));
}
  
int main (int argc, char* argv[])
{
    double y;
    int i;
  
    // Read in the values of the array A 
    double A[11] = {7.9, 7.3, 20.9, 112.0, 5.0, 3.0, 2.9, 9.0, 21.7, 31.2, 4.1};
  
    // In reverse order, apply "f" 
    // to each element of A and print
    for (i=10; i>=0; i--)
    {
        y = f (A[i]);
        if (y > 400.0)
        {
            printf ("%d TOO LARGE\n", i);
        }
        else
        {
            printf ("%d %f\n", i, y);
        }
    }
    return (0);
}

Java

// Java program to implement TPK algorithm
import java.util.*;
import java.io.*; 
    
public class TPKA {
    public static void main(String... args) {
        double[] input = {7.9, 7.3, 20.9, 112.0, 5.0, 3.0, 2.9, 9.0, 21.7, 31.2, 4.1};
           
        for(int j = 10; j >= 0; j--) {
            double y = f(input[j]);
            if( y < 400.0) {
                System.out.printf("%d %.2f\n", j, y);
            } else {
                System.out.printf("%d %s\n", j, "TOO LARGE");
            }
        }
    }
    
    private static double f(double x) {
        return Math.pow(Math.abs(x), 0.5) + (5*(Math.pow(x, 3)));
    }
}

Python

# Python program to implement TPK algorithm
def f(x):
    return abs(x) ** 0.5 + 5 * x**3
  
def main():
    s = [7.9, 7.3, 20.9, 112.0, 5.0, 3.0, 2.9, 9.0, 21.7, 31.2, 4.1]
    s.reverse()
    i = 10
    for x in s:
        result = f(x)
        if result > 400:
            print('%d %s' % (i, "TOO LARGE"))
            i = i-1
        else:
            print('%d %f' % (i, result))
            i = i-1
    print('')
      
if __name__ == '__main__':
    main()
Output:
10 346.629846
9 TOO LARGE
8 TOO LARGE
7 TOO LARGE
6 123.647939
5 136.732051
4 TOO LARGE
3 TOO LARGE
2 TOO LARGE
1 TOO LARGE
0 TOO LARGE

Referenzen: http://cs.fit.edu/~ryan/compare/tpk-c.html

Dieser Artikel wurde von Palash Nigam beigesteuert . Wenn Ihnen GeeksforGeeks gefällt und Sie einen Beitrag leisten möchten, können Sie auch einen Artikel über Contribute.geeksforgeeks.org schreiben oder Ihren Artikel per E-Mail an Contribute@geeksforgeeks.org senden. Sehen Sie, wie Ihr Artikel auf der Hauptseite von GeeksforGeeks erscheint, und helfen Sie anderen Geeks.

Go Premium (An Ad Free Experience with many more features)