Benutzer:Arbol01/Programmieren für Überflieger: Zahlen und Formeln

Aus Wikibooks

Einleitung[Bearbeiten]

Es gibt starke Unterschiede, was die Möglichkeiten und Bearbeitung von Zahlen bezüglich der unterschiedlichen Programmiersprachen betrifft.

Nicht jede Programmiersprache ist so flexibel in der Behandlung von Zahlen wie REXX. Nunja, eigentlich gibt es in REXX keine Zahlen, sondern nur Strings. Wie extrem REXX ist, wird an der folgenden Aufgabe deutlich:

Es gibt Zahlen und , so das gilt: ist gleich der Konkatenation von und .

Beispiele:

In REXX kann man nun folgendes Programm benutzen:

/* Ein REXX-Programm */
do a = 2 to 10000
  do b = 2 to 10000
    pab = (a*a) + (b*b)
    cab = a||b
    if (pab = cab) then say a||"^2 * "||b||"^2 = "||pab
  end
end

Die Operation a||b ist nichts anderes als eine Zeichenkettenverknüpfung, auch Konkatenation. Ein Beispiel: Aus den Zeichenketten "Eis" und "bär" wird mit "Eis"||"bär" die Zeichenkette "Eisbär". Und obwohl das aus "88"||"33" erzeugte "8833" eine Zeichenkette ist, wird in dem Vergleich (pab = cab) die Zeichenkette cab als Zahl interpretiert. Des Rätsels Lösung: Die Variable pab ist ebenfalls eine Zeichenkette. So liefert die String-Funktion substr((a*a),3,1) bei a = 33 das Zeichen "8" zurück. Trotz dieses Komforts ist REXX nicht gerade die zu bevorzugende Programmiersprache für mathematische Probleme.

Bei anderen Programmiersprachen muß man anders vorgehen:


C:

#include <stdio.h>
int a, b, c;
void main
{
  c = a + b;
  printf(" c=%d \n",c);
}


tcl:

gets stdin a
gets stdin b
set c [ expr $a + $b ]
puts stdout $c