![]() |
Quelltexteinrückung
Hallo,
wollte euch zunächst Fragen ob der Quellentext "regelkonform" eingerückt ist, falls nicht, wieso?
Delphi-Quellcode:
Ich habe nun zwei Fragen -> Das "k := k * k", wann wird das ausgeführt?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; 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! |
Re: Quelltexteinrückung
Ich würde es so einrücken:
Delphi-Quellcode:
Ich finde das etwas übersichtlicher - die Fragen solltne jetzt einfach zu beantworten sein ;)
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; |
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!
|
Re: Quelltexteinrückung
Dein Style sieht ziemlich schlecht aus und ist schwer zu lesen.
Aber allgemein wuerde ich es so schreiben:
Delphi-Quellcode:
Oder
begin
... if ( Expression ) then begin Do Something; end else begin Do Something else; end; end;
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; |
Re: Quelltexteinrückung
Zitat:
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 ...(?!) |
Re: Quelltexteinrückung
Was willst denn mit den eckigen Klammern? Wenn dann nur um das if ( ... ) then
|
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:
Wird denn jetzt das b := a + 2 in Abhängigkeit vom If ausgeführt
[ if k <> 9 then
a := k - a; ] [ b := a + 2 ] end; 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. |
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! |
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:
Im Prinzip ist die Abfrage "if a < k then" die Schlüsselszene
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; 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? |
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 00:26 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 by Thomas Breitkreuz