AGB  ·  Datenschutz  ·  Impressum  







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

Quelltexteinrückung

Ein Thema von Problemmacher · begonnen am 5. Dez 2006 · letzter Beitrag vom 8. Dez 2006
Antwort Antwort
Seite 1 von 3  1 23      
Problemmacher

Registriert seit: 14. Nov 2006
43 Beiträge
 
#1

Quelltexteinrückung

  Alt 5. Dez 2006, 22:50
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!
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Quelltexteinrückung

  Alt 5. Dez 2006, 22:54
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
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#3

Re: Quelltexteinrückung

  Alt 5. Dez 2006, 22:57
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!
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Quelltexteinrückung

  Alt 5. Dez 2006, 22:59
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;
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Problemmacher

Registriert seit: 14. Nov 2006
43 Beiträge
 
#5

Re: Quelltexteinrückung

  Alt 5. Dez 2006, 23:01
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 ...(?!)
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#6

Re: Quelltexteinrückung

  Alt 5. Dez 2006, 23:02
Was willst denn mit den eckigen Klammern? Wenn dann nur um das if ( ... ) then
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Problemmacher

Registriert seit: 14. Nov 2006
43 Beiträge
 
#7

Re: Quelltexteinrückung

  Alt 5. Dez 2006, 23:06
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.
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#8

Re: Quelltexteinrückung

  Alt 5. Dez 2006, 23:12
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!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Problemmacher

Registriert seit: 14. Nov 2006
43 Beiträge
 
#9

Re: Quelltexteinrückung

  Alt 5. Dez 2006, 23:17
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?
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#10

Re: Quelltexteinrückung

  Alt 5. Dez 2006, 23:21
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!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 04:37 Uhr.
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