003
05.01.2014, 22:28 Uhr
Hans
Library Walker (Operator)
|
@~f.-th.: Wenn du schon solche Sachen anschneidest: Zum einen hast Du recht, aber was mich hier mehr stört ist, dass die Kommentare so weit vom Quelltext entfernt stehen, und die damit verbundenen Zeilenumbrüche. Die stören bei mir nämlich den Lesefluss, weil sie durch die Umbrüche bedingt zum einen die Formatierung durcheinander bringen und zum anderen die Reste der Kommentare sich immer zwischen dem Quelltext drängen. Das mag auf einem breiten 16:10 Monitor vielleicht ganz gut hinkommen, wird aber spätestens beim drucken wieder problematisch, wenn man nur 80 oder 90 Spalten zur Verfügung hat. Dieser Quelltext hier benötigt aber bis zu 130 Spalten pro Zeile, was für meinen Geschmack eindeutig zu viele sind. - Jedenfalls wenn man ihn auf A4 im Hochformat druckt. Ich habs mal in OpenOffice mit dem Zeichensatz "Lucida Console" mit 10 Punkten Schriftgrösse getestet. Das ist für meinen Geschmack immer noch eine Katastrophe. Bei A4-quer sieht das anders aus, aber selbst da gibt es noch Zeilenumbrüche, und vor allem: wer macht sowas? (ausser mir jetzt.) Soweit mal mein Senf zum Thema Programmierstil bzw. Coding-Style.
Hans
P.S. Ich hab das Programm mal mit AStyle umformatiert (GNU-Style) und die Kommentare so gesetzt, wie ich es bevorzuge, wobei ich aber einige der bemängelten Kommentare drin gelassen habe. Das sieht dann so aus:
C++: |
////////////////////////////////////////////////////////////////////////////////////////////////// /* Datei: etech.cpp
Wiederstandsberechnungen von Reihen- und Parallelschaltungen bei Gleichstrom. Dieses Programm stammt von jemandem aus den C/C++ Forum. */
#include <iostream> #include <iomanip> #include <cstdlib> #include <vector>
using namespace std;
float reihenwid (float gesamtr, float eing, int erneut)
{ gesamtr = gesamtr + eing; erneut ++; cout << gesamtr; return (gesamtr); }
int main(int argc, char *argv[]) { /* Allgemeine Variablen */
char nochmal; int choice; int widerstaende; float widwert; float spannung;
/* Variablen für Funktionen */
float anzahl; float eing; float gesamtr=0; // Initialisierung des Gesamtwiderstandes mit 0 int erneut=1; // Initialisierung von nochmal mit 1 float reihenwid (float gesamtr, float eing); // Logischer Fehler: // Definition eines Funktionsprototyps
do { // Überschrift cout << "Elektro-Technik-Elektronischer Taschen Rechner (ET-ETR)" << endl; cout << "*******************************************************" << endl; cout << "\n"; /********************ABFRAGE VON SCHALTUNGSKOMPONENTEN*******************/ cout << "Geben Sie den Wert der angelegten Spannung ein!\n" << endl; cout << "Spannungswert [in Volt]: "; cin >> spannung; cout << "\n"; cout << "Geben Sie die Anzahl der Widerstaende ein!" << endl; cout << "\nAnzahl: "; cin >> anzahl; // Eingabe von der gewünschten Anzahl der Zahlen
/* Festlegung der Widerstandswerte erfolgt später! */
/****************ENDE ABFRAGE VON SCHALTUNGSKOMPONENTEN******************/ system ("cls"); // Ausgabe: Frage nach Art der Schaltung cout << "Bitte geben Sie die Art Ihrer Schaltung ein!\n\n"; cout << "<1> = Parallelschaltung\n"; // Wahl 1 = Parallelschaltung cout << "<2> = Reihenschaltung\n\n"; // Wahl 2 = Reihenschaltung cout << "Ihre Wahl: <->\b\b"; // Ausgabe: Wahl cin >> choice; // Eingabe der Wahl (1 oder 2) system ("cls"); // Bildschirm "putzen"
switch (choice) /* Anfang: "switch-Befehl" */ { /***********************ANFANG: PARALLELSCHALTUNG************************/
case 1: // Parallelschaltung cout << "\n"; cout << "Sie haben 'Parallelschaltung' gew"<< "\x84"<< "hlt!" << endl;
/*******************BERECHNUNG: GESAMTWIDERSTAND*************************/
while(erneut <= anzahl) // Beginn der While-Schleife { cout << "\n"; cout << "Widerstand Nr. " << erneut << ": "; cin >> eing; // Eingabe der Widerstandswerte
gesamtr = gesamtr + 1/eing; // Berechnung des Gesamtwiderstandes erneut++; // Addiert auf Variable nochmal +1 }
cout << "\n"; // Ausgabe der Summe cout << "Der Gesamtwiderstand betr" << "\x84" << "gt: " << gesamtr << endl;
break; // Abschluss Parallelschaltung
/***********************ENDE: PARALLELSCHALTUNG**************************/
/***********************ANFANG: REIHENSCHALUNG***************************/
case 2: // Wahl Reihenschaltung cout << "\n"; cout << "Sie haben 'Reihenschaltung' gew"<< "\x84"<< "hlt!" << endl;
/*******************BERECHNUNG: GESAMTWIDERSTAND*************************/
while(erneut <= anzahl) { cout << "\n"; cout << "Widerstand Nr. " << erneut << ": "; cin >> eing;
float reihenwid (float gesamtr, float eing, float erneut); /* Logischer Fehler! Definition eines Funktionsprototyps */
erneut++; } // while()
cout << "\n"; // Ausgabe der Summe cout << "Der Gesamtwiderstand betr" << "\x84" << "gt: " << gesamtr << endl; break; // Abschluss vom "zweiten Fall"
/**********************ENDE: REIHENSCHALTUNG*****************************/
default: cout << "\nFehler bei der Auswahl !\n\n"; break; } cout << "\n\nNochmal? Dann bitte j eingeben!\n"; // Abfrage ob erneuter Start cout << "Ihre Wahl: " << endl; cin >> nochmal; // Einlesen von Wahl cout << "\n\n" << endl; // Zeilensprünge } /* Ende: "switch-Befehl" */
while (nochmal == 'j'); // Wenn j bzw. J erneuter Start sonst Schluss cout << "\nDas Programm wird beendet!\n"; // Hinweis, dass Programm beendet wird
return 0; // Anfangszustand }
|
Zu beachten wäre auch noch der "Kopfkommentar", der grundsätzlich den Dateinamen und eine Erklärung enthält, was das Programm oder Modul macht, bzw. machen soll, sofern man noch dran arbeitet. Fall es sich um Beispiele aus Lehrbüchern handelt, schreibe ich da auch immer noch die genauen Quellenangaben rein, damit ich später noch weis wo es her kommt. Genaue Quellenangabe heisst hier: genau so, wie es für Zitate in wissenschaftlichen Arbeiten gefordert wird! - Wenn ich so ein Beispiel ändere und damit experimentiere, vermerke ich das ebenfalls dort. Und zuletzt wäre noch anzumerken, dass ich die logischen Fehler im Quelltext drin gelassen habe, - allerdings markiert. -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. Dieser Post wurde am 06.01.2014 um 19:59 Uhr von Hans editiert. |