Autor Beitrag
ang91
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 27.08.10 17:05 
Hallo Leute!
Ich habe ein riesen Problem. Wir müssen in der Schule einen Quelltext in Deplhi kommentieren. Und zwar jeden einzelnen Schritt bzw. jede Zeile! Hab schon einige Kommentare selbst gemacht,aber jede Zeile bekomm ich nicht hin.
Kann mir bitte jemand helfen? Wäre sehr nett!

Hier zunächst die Aufgabenstellung, zu welcher der Quelltext gefordert wurde.
- Auf einen Datenbestand von maximal 100 ganzen Zahlen sollen 50 Zufallszahlen aus einem Bereich von 1..20 abgelegt werden.
- Von diesem Datenbestand sollen folgende Aussagen gewonnen und ebenfalls im Speicher abgelegt werden:
- kleinstes und größtes Element, Summe aller Zahlen
- Mittelwert (arithmetisch)
- Anzahl der Zufallszahlen
- Anzahl der Zahlen, welche größer und kleines als Mittelwert sind

Nun der Quelltext, welcher kommentiert werden soll:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
procedure TForm1.Button2Click(Sender: TObjekt);
//der geforderte Datentyp

type tfeld = array [1..100of integer;
     tdaten = record
            feld : tfeld;
            anzahl : integer;
            max : integer;
            min : integer;
            Summe : integer;
            mittelw : real;
            anzminmw : integer; (Anzahl der Werte, die kleiner sind als Mittelwert)
            anzmaxmw : integer; (Anzahl der Werte, die größer sind als Mittelwert)
        end;

//dies ist nur die lokale Prozedur zum Sortieren des Datenbestandes
procedure sortiere (var daten : tdaten);
var lauf, lauf1,hilf : integer;
begin
for lauf := 1 to daten.anzahl do
      begin
      for lauf1 := 1 to daten.anzahl-1 do
          begin
          if daten.feld[lauf1] > daten.feld[lauf1+1]
          then
          begin
          hilf := daten.feld[lauf1];
          daten.feld[lauf1] := daten.feld[lauf1+1];
          daten.feld[lauf1+1] := hilf;
          end;
       end;
     end;
end;

//die benötigten Variablen
var daten : tdaten
lauf : integer;
zeile : string

//beginnt die Klieckprozedur vom Button 2, also Start- Button
begin

//50 Zufallszahlen sollchen gespeichert werden
daten.anzahl := 50;

//Initialisierung der 50 Zufallszahlen
randomize;
for lauf := 1 to daten.anzahl do
      begin
       daten.feld[lauf] := random(20)+1;
       end;

//Summe bilden
daten.Summe := 0;
for lauf := 1 to daten.anzahl do
     begin
     daten.Summe := daten.Summe+daten.feld[lauf]
     end;

//Mittelwert bestimmen und ablegen
daten.mittelw := daten.Summe/daten.anzahl;

//kleinstes und größtes Element ermitteln
daten.max := -maxint;
daten.min := maxint;

//Kontrollausgabe der Initialisierung
memo1.Lines.add(IntToStr(daten.max)+'absolut kleinstes Element');
memo1.Lines.add(IntToStr(daten.min)+'absolut größtes Element');
For lauf := 1 to daten.anzahl do
      begin
      if daten.feld[lauf] > daten.max then daten.max := daten.feld[lauf];
      if daten.feld[lauf] < daten.min then daten.min := daten.feld[lauf];
      end;

//Anzahl der Elemente kleiner Mittelwert ermitteln
daten.anzminmw := 0;
for lauf := 1 to daten.anzahl do
 begin
 if daten.feld[lauf] < daten.mittelw then daten.anzminmw :=aten.anzminmw+1;
 end;

//Anzahl der Elemete größer Mittelwert ermitteln
daten.anzmaxmw := 0;
for lauf := 1 to daten.anzahl do
 begin
 if daten.feld[lauf] > daten.mittelw 
            then daten.anzmaxmw :=daten.anzmaxmw+1;
 end;

//Ausgabe der ermittelten Werte
memo1.lines.add('Ergebnisübersicht')

//Textausgabe des Feldes unsortiert
zeile := '';
for lauf := 1 to daten.anzahl do
     begin
     zeile := zeile+IntToStr(daten.feld[lauf]+'';
     if lauf mod 20=0 then
             begin
             memo1.lines.add(zeile);
             zeile := '';
             end;
   end;
memo1.lines.add(zeile);

//Textausgabe sortierter Datenbestand
sortiere(daten);
zeile := '';
for lauf := 1 to daten.anzahl do
     begin
     zeile := zeile+IntToStr(daten.feld[lauf])+';';
     if lauf mod 20 = 0 then
          begin
          memo1.lines.add(zeile);
          zeile :='';
          end;
    end;
memo1.lines.add(zeile);

//Ausgabe der gespeicherten Informationen
memo1.lines.add('Anzahl Elemente = '+IntToStr(daten.anzahl));
memo1.lines.add('kleinstes Element = '+IntToStr(daten.min));
memo1.lines.add('größtes Element = '+IntToStr(daten.max));
memo1.lines.add('Summe = '+IntToStr(daten.Summe.));
memo1.lines.add('Mittelwert = FloatToStr(daten.mittelw));
memo1.lines.add('
Anzahl > Mw = '+IntToStr(daten.anzmaxmw));
memo1.lines.add('
Anzahl < Mw = '+IntToStr(daten.anzminmw));
end;


Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt.
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Fr 27.08.10 17:09 
und wo ist dein problem?
ang91 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: So 29.08.10 15:00 
Ich muss nun jede einzelne Zeile kommentieren!
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: So 29.08.10 15:33 
user profile iconang91 hat folgendes geschrieben Zum zitierten Posting springen:
Ich muss nun jede einzelne Zeile kommentieren!

Richtig, Du musst nun jede einzelne Zeile kommentieren. :think:
Hausagaben machen wir hier sicherlich keine. Wenn Du etwas nicht verstehst, helfen wir aber gerne. :zwinker:

Für diesen Beitrag haben gedankt: elundril
glotzer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: So 29.08.10 16:28 
user profile iconMarc. hat folgendes geschrieben Zum zitierten Posting springen:

Hausagaben


woll eher Beschäftigungstherapie
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: So 29.08.10 16:33 
Wohl eher schaun ob man verstanden hat was der Quelltext macht, oder einfach nur C&P aus dem Internet und das wars. Außerdem wäre einem beim Kommentieren sicher aufgefallen das in Zeile 125 ein String nicht abgeschlossen wurde und die Unit deswegen vermutlich nie kompilieren wird. ;)

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: So 29.08.10 17:54 
user profile iconglotzer hat folgendes geschrieben Zum zitierten Posting springen:
woll eher Beschäftigungstherapie

Da hat er schon rechr: alle sinnvollen Kommentare sind doch schon drin!

Wer mehr Kommentare da rein packt, hat entweder zu viel Zeit oder keine Ahnung vom programmieren (oder schlechte Gene)

Zumindest würde ich das meinem Lehrer so sagen. Muss man aber wissen, ob der das abkann.

Anyway: welche Befehle machen denn Probleme?

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Tankard
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Administrator
Beiträge: 217
Erhaltene Danke: 96



BeitragVerfasst: So 29.08.10 18:16 
user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:

alle sinnvollen Kommentare sind doch schon drin!


das sehe ich leicht anderes. man koennte noch beschreiben, nach welchem algoritmus man sortiert.

er soll ja zeigen, dass er programmieren kann und den code verstanden hat was dort passiert.

spaeter schreibt man nur noch wichtige kommentare.


der folgende kommentar ist nur unnuetz.
ausblenden Delphi-Quelltext
1:
2:
//dies ist nur die lokale Prozedur zum Sortieren des Datenbestandes
procedure sortiere (var daten : tdaten);
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: So 29.08.10 20:36 
Es kommt etwas darauf an, um was es in der Aufgabe geht. Production-Code zu kommentieren oder für eine Schulaufgabe die einzelnen Schritte hinzuschreiben, damit der Lehrer sehen kann, ob du's verstanden hast.

Statt "dies ist nur die lokale Prozedur zum Sortieren des Datenbestandes" würde ich vielleicht noch schreiben nach was in welcher Richtung mit welchem Algorithmus sortiert wird.

Code sollte man übrigens so formatieren.
ausblenden volle Höhe Reformatted Delphi-Code
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
procedure TForm1.Button2Click(Sender: TObject);

type
  // Der geforderte Datentyp
  TFeld = array[1..100of Integer;

  TDaten = record
    Feld: TFeld;
    Anzahl: Integer;
    Max: Integer;
    Min: Integer;
    Summe: Integer;
    Mittelw: Real;
    Anzminmw: Integer; // (Anzahl der Werte, die kleiner sind als Mittelwert)
    Anzmaxmw: Integer; // (Anzahl der Werte, die größer sind als Mittelwert)
  end;

  // Dies ist nur die lokale Prozedur zum Sortieren des Datenbestandes
  procedure Sortiere(var Daten: TDaten);
  var
    Lauf, Lauf1, Hilf: Integer;
  begin
    for Lauf := 1 to Daten.Anzahl do
    begin
      for Lauf1 := 1 to Daten.Anzahl - 1 do
      begin
        if Daten.Feld[Lauf1] > Daten.Feld[Lauf1 + 1then
        begin
          Hilf := Daten.Feld[Lauf1];
          Daten.Feld[Lauf1] := Daten.Feld[Lauf1 + 1];
          Daten.Feld[Lauf1 + 1] := Hilf;
        end;
      end;
    end;
  end;

var
  // Die benötigten Variablen
  Daten: TDaten;
  Lauf: Integer;
  Zeile: string;

// Beginnt die Klieckprozedur vom Button 2, also Start- Button
begin

  // 50 Zufallszahlen sollchen gespeichert werden
  Daten.Anzahl := 50;

  // Initialisierung der 50 Zufallszahlen
  Randomize;

  for Lauf := 1 to Daten.Anzahl do
  begin
    Daten.Feld[Lauf] := random(20) + 1;
  end;

  // Summe bilden
  Daten.Summe := 0;

  for Lauf := 1 to Daten.Anzahl do
  begin
    Daten.Summe := Daten.Summe + Daten.Feld[Lauf]
  end;

  // Mittelwert bestimmen und ablegen
  Daten.Mittelw := Daten.Summe / Daten.Anzahl;

  // Kleinstes und größtes Element ermitteln
  Daten.Max := -MaxInt;
  Daten.Min := MaxInt;

  // Kontrollausgabe der Initialisierung
  Memo1.Lines.Add(IntToStr(Daten.Max) + 'absolut kleinstes Element');
  Memo1.Lines.Add(IntToStr(Daten.Min) + 'absolut größtes Element');

  for Lauf := 1 to Daten.Anzahl do
  begin
    if Daten.Feld[Lauf] > Daten.Max then
      Daten.Max := Daten.Feld[Lauf];
    if Daten.Feld[Lauf] < Daten.Min then
      Daten.Min := Daten.Feld[Lauf];
  end;

  // Anzahl der Elemente kleiner Mittelwert ermitteln
  Daten.Anzminmw := 0;

  for Lauf := 1 to Daten.Anzahl do
  begin
    if Daten.Feld[Lauf] < Daten.Mittelw then
      Daten.Anzminmw := Daten.Anzminmw + 1;
  end;

  // Anzahl der Elemete größer Mittelwert ermitteln
  Daten.Anzmaxmw := 0;

  for Lauf := 1 to Daten.Anzahl do
  begin
    if Daten.Feld[Lauf] > Daten.Mittelw then
      Daten.Anzmaxmw := Daten.Anzmaxmw + 1;
  end;

  // Ausgabe der ermittelten Werte
  Memo1.Lines.Add('Ergebnisübersicht');

  // Textausgabe des Feldes unsortiert
  Zeile := '';

  for Lauf := 1 to Daten.Anzahl do
  begin
    Zeile := Zeile + IntToStr(Daten.Feld[Lauf]) + '';
    if Lauf mod 20 = 0 then
    begin
      Memo1.Lines.Add(Zeile);
      Zeile := '';
    end;
  end;

  Memo1.Lines.Add(Zeile);

  // Textausgabe sortierter Datenbestand
  Sortiere(Daten);
  Zeile := '';

  for Lauf := 1 to Daten.Anzahl do
  begin
    Zeile := Zeile + IntToStr(Daten.Feld[Lauf]) + ';';
    if Lauf mod 20 = 0 then
    begin
      Memo1.Lines.Add(Zeile);
      Zeile := '';
    end;
  end;

  Memo1.Lines.Add(Zeile);

  // Ausgabe der gespeicherten Informationen
  Memo1.Lines.Add('Anzahl Elemente = ' + IntToStr(Daten.Anzahl));
  Memo1.Lines.Add('kleinstes Element = ' + IntToStr(Daten.Min));
  Memo1.Lines.Add('größtes Element = ' + IntToStr(Daten.Max));
  Memo1.Lines.Add('Summe = ' + IntToStr(Daten.Summe));
  Memo1.Lines.Add('Mittelwert = ' + FloatToStr(Daten.Mittelw));
  Memo1.Lines.Add('Anzahl > Mw = ' + IntToStr(Daten.Anzmaxmw));
  Memo1.Lines.Add('Anzahl < Mw = ' + IntToStr(Daten.Anzminmw));
end;