Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Quelltexteinrückung (https://www.delphipraxis.net/81951-quelltexteinrueckung.html)

Problemmacher 5. Dez 2006 21:50


Quelltexteinrückung
 
Hallo,

wollte euch zunächst Fragen ob der Quellentext
"regelkonform" eingerückt ist, falls nicht, wieso?

Delphi-Quellcode:

k := 4 ;
  if a < k then begin a := b + 2 ;
                   
                 if a < k then b := 3
               
                 else a := b ;
                 
                 k := k * k
                 end

  else k := k + a ;
               
                 if k <> 9 then a := k - a ;
                                 b := a + 2
end;
Ich habe nun zwei Fragen -> Das "k := k * k", wann wird das ausgeführt?
Es gehört nicht mehr zum else-Teil, da dort ja nicht mit "else ... then begin"
ein Anweisungsblock eingeleitet wird, sondern nur eine Anweisung, korrekt?
Heißt also dass es unabhängig von dem If-Else Teil zuvor ausgeführt wird,
also immer (insofern if a > k) oder steht das doch unter einer Abhängigkeit?)

Gleiches bei der Frage zum Schluss von "b := a + 2", da zuvor nur "then" steht,
ist es ja nur eine einzelne Anweisung, oder? Daraus würde ich dann schließen
das eben das letzte unabhängig von allem stattfindet, auch wenn k = 9 sein würde, oder nicht?

Wäre nett wenn ihr mir das Prinzip erläutern würdet falls
ich es falsch interpretiert/eingerückt habe.

Danke!

jfheins 5. Dez 2006 21:54

Re: Quelltexteinrückung
 
Ich würde es so einrücken:
Delphi-Quellcode:
begin //hinzugefügt, damit es passt ....
  k := 4;
  if a < k then
  begin
    a := b + 2;

    if a < k then
      b := 3
    else
      a := b;

    k := k * k
  end
  else
    k := k + a;

  if k <> 9 then
    a := k - a;
  b := a + 2
end;
Ich finde das etwas übersichtlicher - die Fragen solltne jetzt einfach zu beantworten sein ;)

TheMiller 5. Dez 2006 21:57

Re: Quelltexteinrückung
 
Würde es auch so machen. Vor allem bilden die "ends" dann eine schöne Reihe am Schluss und so kann man immer sehen, ob man richtig programmiert hat und in welchem Codeabschnitt (Schleife etc) man sich befindet!

Mackhack 5. Dez 2006 21:59

Re: Quelltexteinrückung
 
Dein Style sieht ziemlich schlecht aus und ist schwer zu lesen.

Aber allgemein wuerde ich es so schreiben:
Delphi-Quellcode:
begin
  ...
  if ( Expression ) then
  begin
    Do Something;
  end
  else
  begin
    Do Something else;
  end;
end;
Oder

Delphi-Quellcode:
begin
...
  if ( Expression ) then
  begin
    if ( Expression ) then
    begin
      Do Something;
    end
    else
    begin
      Do Something else;
    end
  else
  begin
    Do Something totally different;
  end;
end;

Problemmacher 5. Dez 2006 22:01

Re: Quelltexteinrückung
 
Zitat:

Zitat von jfheins
Ich würde es so einrücken:
Delphi-Quellcode:
begin //hinzugefügt, damit es passt ....
  k := 4;
  [ if a < k then
  begin
    a := b + 2; ]

   [ if a < k then
      b := 3
    else
      a := b; ]

  [  k := k * k ]
  end
 [ else
    k := k + a; ]

 [ if k <> 9 then
    a := k - a; ]
 [ b := a + 2 ]
end;
Ich finde das etwas übersichtlicher - die Fragen solltne jetzt einfach zu beantworten sein ;)

Ich habe nun mal Klammern drumgelegt, was sozusagen was "beinhaltet".
Habe ich sie richtig gelegt? Falls ja war ja meine "Interpretation"
des Verlaufes aus meinem Thread-Eröffnungsbeitrag korrekt wenn ich euch
richtig verstanden hab ...(?!)

Mackhack 5. Dez 2006 22:02

Re: Quelltexteinrückung
 
Was willst denn mit den eckigen Klammern? Wenn dann nur um das if ( ... ) then

Problemmacher 5. Dez 2006 22:06

Re: Quelltexteinrückung
 
Habe sie gelegt um damit meine Frage zu verdeutlichen
bzw zu verdeutlichen wie ich den Verlauf dieser Abfrage
verstehe. Sprich ist z.B. das Stück am Ende ...

Delphi-Quellcode:
[ if k <> 9 then
    a := k - a; ]
[ b := a + 2 ]
end;
Wird denn jetzt das b := a + 2 in Abhängigkeit vom If ausgeführt
oder steht es allein so wie ich es markiert habe und findet
prinzipiell immer statt, falls auf der ganz übergeordneten
if-else struktur der If-Teil False ist und man eben in den Else-Teil
kommt.

Mackhack 5. Dez 2006 22:12

Re: Quelltexteinrückung
 
B wird immer ausgefuehrt da kein begin...end drum rum ist von der vorhergehenden if Bedingung!

Daher sauber einruecken und vlt. das eine oder andere begin end schreiben denn dann wirds auch deutlicher wo was hingehoert. Viele lassen begin...end weg wenn nur eine Zeile drin stehen wuerde. Ich machs nicht aus uUebersichtsgruenden!

Problemmacher 5. Dez 2006 22:17

Re: Quelltexteinrückung
 
Nein, also begin und end hinzufügen soll man da nicht,
das war eine Aufgabe aus meinem Info-Unterricht, wo
wir einfach drei Zeilen Code bekommen haben und den
eben per Einrückmethode übersichtlich gestalten sollte
(das ganz am Anfang begin und ganz am Ende ein end hin muss,
weiß ich) ---> War jedoch nur als reine Einrückübung gedacht.

Heißt also, trifft das If ganz am Anfang nicht zu,
so gehen wir in den Teil den ich hier dann mit (-----)
markiert habe nie bzw. gar nicht rein ...

Delphi-Quellcode:
begin //hinzugefügt, damit es passt ....
  k := 4;
  [ if a < k then
  begin
    a := b + 2; ]

   [ if a < k then
      b := 3
    else
      a := b; ]

  [  k := k * k ]
  end
--------------------------
[ else
    k := k + a; ]

[ if k <> 9 then
    a := k - a; ]
[ b := a + 2 ]
end;
Im Prinzip ist die Abfrage "if a < k then" die Schlüsselszene
in dem Ganzen, trifft das zu laufen wir bis zum (----) und dann
ist Ende, ansonsten überspringen wird den Teil bis zum Strich
und führen den Rest danach aus, korrekt?

Mackhack 5. Dez 2006 22:21

Re: Quelltexteinrückung
 
Dumme Frage. Warum schreibst du den Code nicht in deine Delphi IDE, drueckst F5 bei deinem ersten if um n BP zu setzen, drueckst F9 und siehst dir an was los ist?

Dann siehst du Schritt fuer Schritt wo der Debugger dich hinfuehrt! Und schwupps, Aufgabe geloest! Oder nimmst n Blatt Papier, schreibst deinen Code hin und gehst mit dem Stift durch. Wenn du was rechnen musst schreibst das neben an aufs Blatt und fuegst deine Ergebnisse ein in die Variablen oder behaeltst sie im Kopf und gehst durch und siehst ebenfalls was dabei raus kommt! :shock: :???:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:39 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz