AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pascalsches Dreieck o0

Ein Thema von AneLSD · begonnen am 27. Mai 2013 · letzter Beitrag vom 27. Mai 2013
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.216 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Pascalsches Dreieck o0

  Alt 27. Mai 2013, 21:46
Wäre ich ein Lehrer, wäre ich über die Antwort wohl nicht ganz glücklich

Eine for-Schleife erzeugt nicht einfach Zahlen und geht dann nach Hause. Ich würde es so darstellen, dass man in einer for-Schleife einmal
  • eine Definition einer Zahlenreihe
  • und einen Block an Quellcode, indem jede(!) Zahl aus dieser Zahlenreihe zum Einsatz kommt
hat.

Deine Zahlenreihe geht von 0 bis einschließlich "exponent". Das hast du mit deinem for i:=0 to exponent abgedeckt.

Nur wo steckt der zweite Teil? Das ist das, was hinter deinem do kommt. Und zwar nicht alles was du heute noch schreibst, sondern nur die nächste Anweisung hinter dem do. Deshalb hatte ich das vorhin auch so eingerückt:

Delphi-Quellcode:
for i:=0 to exponent do
    zeile:=zeile+inttostr(pas(exponent,i))+' ';
 
e_ausgabe.Text:=zeile;
Die Zuweisung zeile:=zeile+inttostr(pas(exponent,i))+' ' wird (exponent+1) mal ausgeführt. In jedem Aufruf ändert sich deine Variable i: Im ersten Aufruf ist sie 0, dann 1, ... und am Schluss ist sie gleich "exponent".

Jetzt wollen wir ja nicht nur in die Variable "zeile" das richtige reinschreiben, wir wollen auch jedes mal eine Zeile an die Memo anhängen - Wir müssen die For-Schleife nun irgendwie so hinbekommen, dass wir den Teil, der für jeden Eintrag unserer Zahlenreihe ausgeführt wird, auf unser Memo1.Lines.Add(...) ausweiten.

Das geschieht mit etwas, das du schonmal gesehen hast: begin und end . Wahrscheinlich werde ich später über den Haufen geknüppelt, aber drücken wir es vereinfacht einmal so aus: Alles was du zwischen ein begin und end packst, kommt Delphi wie eine einzelne Anweisung vor.


Baue dir einmal eine Prozedur (z.B. einem Button-Klick) eine for-Schleife die in etwa folgendermaßen aussieht:
Delphi-Quellcode:
for i:=0 to 10 do begin
   Memo1.Lines.Add('Mein Wert ist gerade '+IntToStr(i));
   Memo1.Lines.Add('Diese Zeile fühlt sich hier wohl');
end;
Memo1.Lines.Add('Diese Zeile kommt ganz zum Schluss... Und das nur ein mal.');
Kommst du damit weiter?
  Mit Zitat antworten Zitat
AneLSD

Registriert seit: 15. Mai 2013
7 Beiträge
 
#2

AW: Pascalsches Dreieck o0

  Alt 27. Mai 2013, 21:59
for i:=0 to 10 do begin // Warum denn 10? Es müsste doch Exponent sein oder?
Memo1.Lines.Add('Mein Wert ist gerade '+IntToStr(i)); // Der aktuelle Wert ? Der ist doch immer i + 1 also hier 1,2,3 - 11
Memo1.Lines.Add(' '); Die Zeile belibt dann ja leer
end;
Memo1.Lines.Add(' '); Die doch dann auch, aber dann passt das mit dem begin und end nicht...

  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.216 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Pascalsches Dreieck o0

  Alt 27. Mai 2013, 22:05
Warum denn 10? Es müsste doch Exponent sein oder?
Es sollte nur ein Beispiel sein.

Dann: Ich hätte auch Smileys oder Gedichte in die Add()-Anweisungen schreiben können. Du kannst den Text natürlich auch gerne entfernen, dann hast du natürlich leere Zeilen. Wie man sieht, ist es wohl eine gute Sache, dass ich meine Brötchen nicht damit verdiene, Dinge zu erklären. Hast du es nicht einmal ausprobiert? Ich wollte mit diesem wundervollen Beispiel nur zeigen, wie eben das, was zwischen begin und end steht für jede Zahl in deiner Zahlenreihe wiederholt wird, die letzte Zeile allerdings nicht!

In deinem Memo-Feld würde somit nach dem Klick folgendes stehen:
Code:
Mein Wert ist gerade 1
Diese Zeile fühlt sich hier wohl
Mein Wert ist gerade 2
Diese Zeile fühlt sich hier wohl
Mein Wert ist gerade 3
Diese Zeile fühlt sich hier wohl
Mein Wert ist gerade 4
Diese Zeile fühlt sich hier wohl
Mein Wert ist gerade 5
Diese Zeile fühlt sich hier wohl
Mein Wert ist gerade 6
Diese Zeile fühlt sich hier wohl
Mein Wert ist gerade 7
Diese Zeile fühlt sich hier wohl
Mein Wert ist gerade 8
Diese Zeile fühlt sich hier wohl
Mein Wert ist gerade 9
Diese Zeile fühlt sich hier wohl
Mein Wert ist gerade 10
Diese Zeile fühlt sich hier wohl
Diese Zeile kommt ganz zum Schluss... Und das nur ein mal.
  Mit Zitat antworten Zitat
AneLSD

Registriert seit: 15. Mai 2013
7 Beiträge
 
#4

AW: Pascalsches Dreieck o0

  Alt 27. Mai 2013, 22:13
Es tut mir Leid, du erklärst wirklich sehr professionell und ausfühlich, allerdings bin ich das absolute Gegenteil eines Schnelllerners

for i := 0 to exponent do
Memo1.Lines.Add('Mein Wert ist gerade '+IntToStr(i)); // Das habe ich Versatnden, der aktuelle Wert ist also immer der Exponent aber was ist dann mit #Mein Wert ist gerade ' gemeint? Klar, der aktuelle Wert - aber was soll ich hier einsetzen?

Memo1.Lines.Add('Diese Zeile fühlt sich hier wohl'); // Das ist doch nur ein 'Lückenfüller' oder?
end;
Memo1.Lines.Add // gibt dann ja einfach die letzte Zeile an
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.216 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Pascalsches Dreieck o0

  Alt 27. Mai 2013, 22:22
Ja, das "Mein Wert ist gerade" war unglücklich formuliert. Es hätte besser "Die schleifenvariable i entspricht gerade:" oder ähnlich heißen sollen.

Wie gesagt, im Endeffekt hattest du eigentlich schon alles. Die einzige Herausforderung, vor der wir momentan stehen, ist in der for-Schleife nicht eine Sache (die Variable "zeile" setzen), sondern zwei Sachen zu tun: Die Variable "zeile" setzen und die Variable "zeile" dann ins Memo schreiben.

In Delphi ist es (glaube ich) nicht sonderlich populär, aber in anderen Sprachen nennt zusammen gruppierte, aufeinanderfolgende (sehr salopp umschrieben ) "einen Block". Wie weiter oben: Die For-Schleife hat zwei Bestandteile:
  • Die Definition deiner Zahlenreihe
  • Den Codeblock, der FÜR JEDE Zahl deiner Zahlenreihe ausgeführt werden soll

In unserem Fall ist der ganze Codeblock unsere Zwei Anweisungen: Variable "zeile" setzen und die Variable "zeile" in unserer Memo ausgeben.


Du hast anscheinend privat keine Delphi-Installation und kannst nicht mal etwas ausprobieren? Gerade das ist eigentlich, was an der Informatik Spaß macht: (Zumindest meistens) kann man herumprobieren wie man lustig ist, ohne etwas kaputt zu machen...

PS: Bitte packe Delphi-Quellcode hier im Forum immer in (delphi)(/delphi)-Tags (mit eckigen Klammern), somit kann man das besser lesen.
  Mit Zitat antworten Zitat
AneLSD

Registriert seit: 15. Mai 2013
7 Beiträge
 
#6

AW: Pascalsches Dreieck o0

  Alt 27. Mai 2013, 22:33
Delphi-Quellcode:
begin
  for i:=0 to exponent do
                         Memo1.Lines.Add('Mein Wert ist gerade '+IntToStr(i));
                         Memo1.Lines.Add (zeile(i))

So etwa?

Ich besitze Delphi 6 - leider kann ich keine Anwendungen starten, da dich mein liebes Programm dann immer aufhängt
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.216 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Pascalsches Dreieck o0

  Alt 27. Mai 2013, 22:36
Nein, nicht ganz. Bislang hatten wir für jeden Zahlenwert zwischen 0 bis "exponent" die Zuweisung der Variable Zahl. Das war schon ganz gut so. Jetzt wollen wir nach jeder Zuweisung das in die Memo schreiben. Weiterhin für jeden Zahlenwert. Und das beides muss direkt zwischen das begin und end:

Delphi-Quellcode:
for i:=0 to exponent do BEGIN

   zeile:=zeile+inttostr(pas(exponent,i))+' ';
   Memo1.Lines.Add(zeile);

END;
Dinge wie Einrückungen sind im Endeffekt nur Geschmackssache für das menschliche Auge, dem Computer ist das (in Delphi) relativ egal, für ihn zählt nur das begin und end. Aber so sieht man als Mensch auf einen Blick, dass sich diese zwei Anweisungen immer wiederholen und zusammengehören.


Zitat:
leider kann ich keine Anwendungen starten, da dich mein liebes Programm dann immer aufhängt
Das ist als würde man sagen "Ich habe zwar einen Stift, aber der kann nicht schreiben weil da vorne kommt irgendwie nichts raus. Aber immerhin habe ich einen Stift..." - Das sollten wir bei Gelegenheit auch einmal in Angriff nehmen, das bringt ja so nichts...

Geändert von Der schöne Günther (27. Mai 2013 um 22:39 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz