# Fakultät mit Turbopascal berechnen



## Xeal87 (4. November 2003)

Hallo.
Da ich mit der Schule drei Wochen in Amerika war, habe ich natürlich den Unterricht verpasst. Insbesondere in den Informatikstunden bereue ich es ein wenig, da wir begebracht bekamen, wie wir eine Fakultät in Turbopascal berechnen. Hier der code (ich weiss, es gibt auch andere Lösungen... aber ich wills so machen, wie es unser Lehrer beigebracht hat):
--------------------------------------------------------------------------------------------
Program Fakultaet;
Var
Fak: Real;
n,i: Word;
Begin
Readln ;
Fak:=1;
For i:=2 to n do Fak:=Fak*i;
Writeln (Fak);
End.
----------------------------------------------------------------------------------------------
Ich weiss das das programm nicht gerade schwer ist, aber Ich liste trotzdem mal auf, was ich nicht verstehe und wo ich Fragen habe:
- Warum heißt es, dass "n" und "i" "wörter" sind ? Ist es egal, als was sie definiert werden ?
- Könnt ihr mir das erläutern: 
_______
Readln ;
Fak:=1;
For i:=2 to n do Fak:=Fak*i;
Writeln (Fak);
__________

- Welche Rolle spielt die Variable "i" ?!
Ich würde euch sehr dafür danken !


----------



## zeromancer (5. November 2003)

ok, bin zwar schon ewig von tp weg (so ca. 15 jahre), aber das ist wirklich nicht weiter wild:

Program Fakultaet;

Deklarationen

Var
Fak: Real;
n,i: Word;
Begin

Eingabe des Benutzers fordern.
Da readln verwendet wird, erhält man als Rückgabe einen String, der allerdings
eine Zahl darstellen sollte (z.B. "4").
Ein Problem gibt es, sollte der User etwas alphanumerisches eingeben...nun ja

Readln ;
Fak:=1;

Die Variable i dient nur als Zählvariable der For-Schleife. Diese wird n Mal durchlaufen. Das i wird ansonsten nicht verwendet.

For i:=2 to n do Fak:=Fak*i;
Writeln (Fak);
End.

Hehe, hoffe, das das jetzt nicht total daneben war


----------



## Xeal87 (5. November 2003)

Ich hab mich mal in die saudumme maschiene (acuh pc genannt) versetzt und bin dabei das ganze zu verstehen. 
also die fakultät von 4 zum beispiel lautet ja:
!4=4*3*2*1
Der Computer zählt also so lange zu der zahl zwei eins dazu bis n erreicht wurde und multipliziert das dann miteinandern ?!
Danke schonmal


----------



## zeromancer (5. November 2003)

> _Original geschrieben von Masaker _
> *Ich hab mich mal in die saudumme maschiene (acuh pc genannt) versetzt und bin dabei das ganze zu verstehen.
> also die fakultät von 4 zum beispiel lautet ja:
> !4=4*3*2*1
> ...



richtig muss es heissen:

... und multipliziert JEDESMAL miteinander

und deine eher "ungewöhnliche" formulierung müsste eigentlich so heissen, was nach kommutativgesetz allerdings wirklich schnuppe ist: 4! => 1*2*3*4
Deswegen fängt das gute Programm auch bei 2 an zu zählen, da *1 ja doch nicht wirklich was Aufwendiges ist


----------



## Tim C. (5. November 2003)

<klugscheiss>
Die Mathematische Schreibweise sieht jedoch vor, mit der größten Zahl anzufangen, also 4*3*2*1, da sich so beim späteren gegeneinanderrechnen und kürzen von  Fakultäten Vorteile ergeben (sollen) ...
</klugscheiss>
Meine zumindest, das so aus Mathe in Erinnerung haben zu müssen.


----------



## zeromancer (5. November 2003)

mathe? wasn das? schon ewig her...  

*mit dem krückstock fuchtel*


----------



## Xeal87 (5. November 2003)

Also bei mir ist Mathe noch nicht so lange her *g*
Bin grad 11te klasse und es ist wirklich egal wie man es schreibt, aber das Programm beginnt mit der 1 und endet mit der zahl n


----------



## Patrick Kamin (5. November 2003)

*-*

Hallo.
Also readln() gibt hier keinen String zurück, da es keine Funktion ist. Außerdem ist der Datentyp "word" kein 'Wort', sondern stellt den Wertebereich von 0-65535 zur Verfügung. Hinzu kommt, dass es blödsinn ist, hier Fak als Real-Datentyp zu nehmen, da du niemals Nachkommastellen benötigst.


----------



## Xeal87 (6. November 2003)

Also das würd ich mir nochmal genau überlegen, ob der real datentyp da so unsinnig ist. 
Die Fakultät ist nämlich eine der am schnellsten wachsenden funktionen. 
Bsp:
!5 = 120
!10 =518400
Also denke ich schon das real da ganz ok ist


----------



## Thomas Kuse (6. November 2003)

Nimm *long*

Real-Werte sind Gleitkomma-Zahlen, mit denen Vergleiche (if) sehr nervenaufreibend sein können.


----------



## Xeal87 (6. November 2003)

aber real kann doch viel größere zahlen darstellen, wenn ich mich nicht täusche oder ?


----------



## Thomas Kuse (6. November 2003)

Wenn schon grosse Zahlen, dann könntest du auch gleich extended nehmen!
Sind aber halt keine genauen Zahlen, je länger der Wert wird.


----------

