Ich gehe ein einführendes Programmierbuch durch und es listet ein einfaches Beispiel im Pseudocode auf:
Start
input myNumber
set myAnswer = myNumber * 2
output myAnswer
Stop
Warum können wir nicht auf das Erstellen einer weiteren Variablen verzichten, die aufgerufen wird, myAnswer
und die Operation einfach in den Ausgabebefehl einfügen:
Start
input myNumber
output myNumber * 2
Stop
Warum ist Ersteres richtig und Letzteres nicht?
pseudocode
structured-programming
user1475207
quelle
quelle
Antworten:
Sie könnten aber die andere ist, damit Sie sehen, was los ist und Sie
myAnswer
später im Programm verwenden können. Wenn Sie Ihr zweites verwenden, können Sie es nicht wiederverwendenmyAnswer
.So später im Programm möchten Sie vielleicht:
Möglicherweise haben Sie andere Operationen, für die Sie es verwenden möchten.
Betrachten Sie den Austausch von Zahlen:
Ohne Variablen wäre das schwierig. Computerbücher sind sehr einfach und die meisten Programmieraufgaben sind einfach, bis Sie die Komplexität erkennen. Fast alles ist in Tutorials trivial, und man sieht nur in der Komplexität, wo Dinge Sinn machen oder nicht.
quelle
result
auch für kurze Funktionen eine Variable zu erstellen , damit das Debuggen durch Hinzufügenprint(result)
sehr schnell geht. Es ist jedoch mehr aus Bequemlichkeit als aus gutem Grund.Ein weiterer Grund: Die Zuweisung
set myAnswer = myNumber * 2
gibt dem resultierenden Wert einen Namen . Eine Person, die die zweizeilige Version Ihres Codes liest, weiß nur, dass sie den Wert von ausgibtmyNumber * 2
. Eine Person, die die dreizeilige Version liest, kann sehen, dass diesmyNumber * 2
die Antwort ist .In einem solchen trivialen Beispiel mag es nicht wichtig erscheinen, aber manchmal kann das Zuweisen eines Ergebniswerts zu einer Variablen mit einem aussagekräftigen Namen anderen Programmierern das Lesen und Verstehen Ihres Codes erheblich erleichtern.
quelle
i
,result
oder eine andere bedeutungslose Kennung tut nichts zur Verbesserung der Klarheit und unübersichtlich nur den Codei
Besser wäre ein Array-Index. Wenn es eine gibtresult
, sollte die Funktion mitreturn result
oder dem moralischen Äquivalent enden . Und so weiter ...return result
, dann können Sie auch einfach inline zurückgeben, was auch immer Sie dem Ergebnis zuweisen. Wir können sehen, dass es ein Ergebnis ist. Du gibst es zurück, das verstehen wir.Das ist Pseudocode. Es wird nicht vorausgesetzt, dass es sich um eine bestimmte implementierte Sprache handelt.
Einige Programmiersprachen unterstützen nicht die Auswertung eines Ausdrucks und die Ausgabe des Ergebnisses in derselben Codezeile. Zum Beispiel unterstützen die meisten Assembler dies nicht. Vielleicht wollte der Autor des Buches die Dinge auf einer niedrigen Ebene zeigen.
quelle
Andere Antworten haben sich mit den spezifischen mechanischen Details und Beispielen befasst, bei denen die eine oder andere Form besser wäre, aber ich möchte einen etwas weiteren Hintergrund erwähnen, der irgendwie philosophisch ist:
Du lernst eine Sprache.
Eine Sprache ist etwas, in dem Ideen ausgedrückt und verstanden (kommuniziert) werden können. Eine Computerprogrammiersprache hat die zusätzliche Eigenschaft, dass sie von einer Maschine, die darauf ausgelegt ist, auf der Grundlage von Ideen (Entscheidungen), die unter Verwendung dieser Sprache spezifiziert und eingegeben wurden, Maßnahmen zu ergreifen (auszuführen), mechanisch analysiert werden kann.
In JEDER Sprache, die überhaupt nützlich ist, gibt es mehr als eine Möglichkeit, fast jede Idee auszudrücken, die in dieser Sprache zum Ausdruck kommt.
Betrachten Sie die Vielfalt der Nuancen, die in der englischen Sprache verfügbar sind. Schon ein einfacher Satz, wie z
kann variiert werden, um leicht unterschiedliche Vorstellungen auszudrücken oder die Betonung auf verschiedene Teile der Szene zu legen, während auf dieselbe exakte Aktion des physischen Universums Bezug genommen wird.
Erstens sind grammatikalische Variationen:
Dann gibt es immer größere Variationen, die sich immer noch auf dieselbe physische Handlung beziehen:
Schauen Sie sich nur die Implikationen des Wortes "in der Nähe" in diesem letzten Satz an. Seine Aufnahme vermittelt eine ganze Reihe von Konzepten, die sonst nicht vorhanden sind.
Es gibt immer mehr als einen Weg, Python Zen dagegen.
Natürlich wird es EINEN Weg geben, der Ihre Absicht perfekt zum Ausdruck bringt und der am besten geeignet ist, so wie Sie nur EINEN der obigen englischen Sätze auswählen würden, je nachdem, was Sie genau mitteilen möchten . Darum geht es im Zen of Python.
Aber in einem einleitenden Programmierkurs oder einen einleitenden Englischkurs, müssen Sie zunächst die verschiedenen Möglichkeiten (Benennungen, Code - Snippets) erfahren , in dem Sie können Couch eine Idee , bevor Sie das Urteil entwickeln zu wählen , welche ist am vollkommensten paßt.
quelle
__init__
und__new__
, um nur einige zu nennen. Der Punkt ist, dass jedes für ein subtil anderes Problem geeignet ist. Sie würden keinen dieser englischen Sätze zufällig auswählen, noch würden Sie eine dieser Python-Sprachfunktionen zufällig auswählen.Sie fragen nur nach der
myAnswer
Variablen, die redundant zu sein scheint. Andere Antworten erklären bereits, warum und wann es sinnvoll ist, sie wegzulassen oder zu verwenden, aber hier ist noch eine: Wie wäre es damit?oder auch das
In den meisten Sprachen würde dies immer noch funktionieren, aber können Sie es lesen? Es ist schwierig , so oft wir verwenden Helfer Variablen , weil Computer nicht die einzigen sind, die den Code lesen. Wir müssen es in wenigen Monaten warten und verstehen, und es ist noch schwieriger, Code zu schreiben, den Sie später noch verstehen können als einen funktionierenden. In der Regel wissen Sie nach nur wenigen Tagen nicht, warum Sie etwas auf eine bestimmte Weise getan haben .
quelle
(*2)
. Ich würde jedoch einwenden, dass das Ausführen von Eingaben nicht unbedingt sicher ausgedrückt werden kann, indem nur auf eine Variable zugegriffen wird / eine arithmetische Operation ausgeführt wird: Es kann beobachtbare Nebenwirkungen haben.Sie können beide Varianten ausführen (in diesem einfachen Fall), aber die erste Variante wird für komplexere Fälle besser lesbar und strukturierter. Die erste Variante zeigt das IPO-Modell mit einer Zeile für jeden Schritt (zwei davon bereits mit dem richtigen Namen):
quelle