009
19.10.2016, 13:50 Uhr
ao
(Operator)
|
Da das eine Übungsaufgabe für Anfänger ist, kommt hier noch ein bisschen allgemeine Manöverkritik:
Das ist ein kurzes und simples Programm, das aber durch die Verwendung von nichtssagenden Variablennamen (a, i, j, k) erstaunlich unübersichtlich wird. Wie dieses Programm arbeitet, das erschließt sich erst bei ganz genauer Lektüre des Quellcodes: Zwei geschachtelte Schleifen, eine Division, wenn die ohne Rest aufgeht, eine Variable erhöhen ... aha ...
Ich weiß, das k steht so im Aufgabentext. Ich kenne auch die Gewohnheit, Schleifenzähler i und j zu nennen. Wenn es sich wirklich nur um Schleifenzähler handelt, spricht auch nichts dagegen.
In deinem Fall ist aber i der Dividend und j der Divisor einer Rechenoperation, a hält die Anzahl der Teiler und k ist der Zielwert. Um dein Programm allgemein verständlich zu machen, müsstest du diese Informationen in Kommentare schreiben.
Aber wenn du drüber nachdenkst, Kommentare zu verfassen, die die Bedeutungen der Variablen erklären, kannst du auch gleich über bessere Namen nachdenken.
Fang nicht blind an, irgendwas in den Computer zu hacken. Mach dir zuerst kurz Gedanken darüber, welche Daten du speichern musst, und gib ihnen treffende Namen. Dadurch werden alle Schritte, die das Programm macht, auf einmal selbsterklärend. Du wirst staunen, wie gut du dich selber in deinem Code zurechtfindest, und deine Leser werden dir jubelnd zu Füßen liegen
Das ist auch nicht mehr Schreibarbeit. Jeder halbwegs moderne Editor (geany, eclipse, Visual Studio) kann Autocompletion und bietet dir, wenn du anfängst, einen Namen zu tippen, die in Frage kommenden Symbole zur Auswahl an.
Zum Abschluss noch ein Wort zu der Konstanten 1000: Die kommt in deinem Quelltext dreimal vor, und immer in derselben Bedeutung. Wenn du dein Programm nun dazu bringen willst, bis 10.000 zu prüfen, musst du es an drei Stellen ändern. Hier geht das noch, aber wenn die Programme länger werden, wird das eine üble Sucherei. Vor allem, wenn du nicht mehr weißt, ob die 1.000 in allen Fällen die Bedeutung des Endwerts hat, oder ob es nicht an irgendeiner Stelle doch nur die Schuhgröße ist. Sowas wird sehr schnell völlig unwartbar.
Leg an einer Stelle eine Variable an, die die 1000 enthält, und verwende im Code nur diese Variable. Das verbessert die Lesbarkeit, weil man sofort sieht, womit hier eigentlich gearbeitet wird (aha, die Maximalzahl, mit der geprüft werden soll) - Zahlenwerte über den Code verstreut sagen nämlich gar nichts aus über die Bedeutung der Zahlen. Und es verbessert die Pflegbarkeit: An einer einzigen Stelle die 1.000 durch was anderes ersetzen, und das Programm läuft in identischer Weise bis eine Million oder noch mehr. Oder für einen schnellen Test nur bis 100. Dieser Post wurde am 19.10.2016 um 13:55 Uhr von ao editiert. |