Je passe par un livre de programmation d'introduction et il répertorie un exemple simple en pseudocode:
Start
input myNumber
set myAnswer = myNumber * 2
output myAnswer
Stop
Pourquoi ne pouvons-nous pas omettre de créer une autre variable appelée myAnswer
et simplement mettre l'opération dans la commande de sortie, comme ceci:
Start
input myNumber
output myNumber * 2
Stop
Pourquoi la première est correcte et la seconde non?
pseudocode
structured-programming
user1475207
la source
la source
Réponses:
Vous pouvez, mais l'autre est si vous voyez ce qui se passe et que vous pouvez utiliser
myAnswer
plus tard dans le programme. Si vous utilisez votre deuxième, vous ne pouvez pas réutilisermyAnswer
.Donc plus tard dans le programme, vous voudrez peut-être:
Vous pouvez avoir différentes opérations pour lesquelles vous souhaitez l'utiliser.
Pensez à échanger des numéros:
Ce serait difficile sans variables. Les livres informatiques commencent vraiment basiques, et la plupart des programmes sont faciles jusqu'à ce que vous voyiez de la complexité. La plupart des choses sont triviales dans les didacticiels, et ce n'est que dans la complexité que vous voyez où les choses ont ou n'ont pas de sens.
la source
result
variable même pour des fonctions courtes, pour que le débogage par ajoutprint(result)
soit vraiment rapide. C'est plus par commodité que par les bonnes pratiques.Une autre raison, l'affectation
set myAnswer = myNumber * 2
donne un nom à la valeur résultante . Une personne qui lit la version à deux lignes de votre code sait seulement qu'il imprime la valeur demyNumber * 2
. Une personne lisant la version à trois lignes peut voir quemyNumber * 2
c'est la réponse .Il peut ne pas sembler important dans un tel exemple trivial, mais parfois, l' attribution d' une valeur de résultat à une variable avec un nom significatif peut le rendre beaucoup plus facile pour les autres programmeurs de lire et de comprendre votre code.
la source
i
,result
ou d'un autre identifiant vide de sens ne fait rien pour améliorer la clarté, et ne fait qu'encombrer le codei
vaut mieux être un index de tableau. S'il y a unresult
, la fonction doit se terminer parreturn result
ou l'équivalent moral. Et ainsi de suite ...return result
, alors vous pouvez aussi bien vous contenter de retourner tout ce que vous assigniez au résultat. Nous pouvons voir que c'est un résultat. Vous le retournez, nous l'obtenons.C'est du pseudocode. Il n'est pas supposé être un langage implémenté particulier.
Certains langages de programmation ne prennent pas en charge l'évaluation d'une expression, puis la sortie du résultat dans la même ligne de code. Par exemple, la plupart des assembleurs ne prennent pas en charge cela. Peut-être que l'auteur du livre voulait montrer les choses de façon modeste.
la source
D'autres réponses ont abordé les détails mécaniques spécifiques et des exemples de cas où l'une ou l'autre forme serait meilleure, mais je veux mentionner un peu plus de contexte, en quelque sorte philosophique:
Vous apprenez une langue.
Une langue est quelque chose dans laquelle les idées peuvent être exprimées et comprises (communiquées). Un langage de programmation informatique a la propriété supplémentaire de pouvoir être analysé mécaniquement par une machine conçue pour agir (exécuter) sur la base d'idées (décisions) qui sont spécifiées et alimentées en utilisant ce langage.
Dans N'IMPORTE QUELLE langue qui est utile, il y a plus d'une façon d'exprimer presque n'importe quelle idée exprimable dans cette langue.
Considérez la grande variété de nuances disponibles dans la langue anglaise. Même une simple phrase, comme
peut être varié pour exprimer des idées légèrement différentes ou mettre l'accent sur différentes parties de la scène tout en se référant à la même action physique exacte de l'univers.
Il y a d'abord les variations grammaticales:
Viennent ensuite des variations de plus en plus larges, faisant toujours référence à la même action physique:
Il suffit de regarder les implications du mot "à proximité" dans cette dernière phrase. Son inclusion véhicule une toute nouvelle gamme de concepts qui ne sont pas autrement présents.
Il y a toujours plus d'une façon de le faire, Python Zen au contraire.
Bien sûr, il y aura UNE manière qui exprime parfaitement votre intention et est la plus appropriée, tout comme vous ne choisiriez qu'une seule des phrases anglaises ci-dessus en fonction de ce que vous souhaitez communiquer. C'est à cela que sert le Zen of Python.
Mais dans un cours de programmation d'introduction ou un cours d'introduction à l'anglais, vous devez d'abord apprendre les différentes façons (libellés, extraits de code) par lesquels vous pouvez formuler une idée avant de développer le jugement pour choisir celui qui convient le mieux.
la source
__init__
et__new__
, pour n'en nommer que quelques-uns. Le fait est que chacun est approprié à un problème subtilement différent. Vous ne choisiriez pas une de ces phrases anglaises au hasard, ni ne choisiriez l'une de ces fonctionnalités du langage Python au hasard.Vous ne demandez que la
myAnswer
variable qui semble redondante. D'autres réponses expliquaient déjà pourquoi et quand il serait logique de l'omettre ou de l'utiliser, mais en voici une autre: qu'en est-il?ou même ça
Dans la plupart des langues, cela fonctionnerait toujours, mais pouvez-vous le lire? C'est difficile, donc nous utilisons souvent des variables d' aide car les ordinateurs ne sont pas les seuls à lire le code. Nous devons le maintenir et le comprendre en quelques mois et il est encore plus difficile d'écrire du code que vous pouvez encore comprendre plus tard que celui qui fonctionne ... généralement après seulement quelques jours, vous ne saurez pas pourquoi vous avez fait quelque chose d'une manière spécifique .
la source
(*2)
. Je objecterais cependant que l'exécution d'une entrée ne peut pas nécessairement être exprimée en toute sécurité comme simplement accéder à une variable / effectuer une opération arithmétique: elle peut avoir des effets secondaires observables.Vous pouvez faire les deux variantes (dans ce cas simple), mais la première variante devient plus lisible et structurée pour les cas plus complexes. La première variante montre le modèle IPO avec une ligne pour chaque étape (deux de ceux déjà avec le bon nom):
la source