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?
Vous pouvez le faire, mais l'autre est si vous voyez ce qui se passe et vous pouvez donc utiliser myAnswer
plus tard dans le programme. Si vous utilisez votre deuxième, vous ne pouvez pas réutiliser myAnswer
.
Donc plus tard dans le programme, vous voudrez peut-être:
myAnswer + 5
myAnswer + 1
etc.
Vous pouvez avoir différentes opérations pour lesquelles vous souhaitez l'utiliser.
Pensez à échanger des numéros:
Start
input myNumber
set myAnswerA = myNumber * 2
output myAnswerA
set myAnswerB = myNumber * 3
output myAnswerB
set temp = myAnswerA
set myAnswerA = myAnswerB
set myAnswerA = temp
output myAnswerA
output myAnswerB
Stop
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.
Une autre raison, la mission set myAnswer = myNumber * 2
donne à la valeur résultante un nom. Une personne qui lit la version à deux lignes de votre code sait seulement qu'il imprime la valeur de myNumber * 2
. Une personne lisant la version à trois lignes peut voir que myNumber * 2
est le réponse.
Cela peut ne pas sembler important dans un exemple aussi trivial, mais parfois, attribuer une valeur de résultat à une variable avec un nom significatif peut rendre beaucoup plus facile pour les autres programmeurs de lire et de comprendre votre code.
C'est du pseudocode. Il n'est pas censé ê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.
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, une sorte de philosophie:
Vous apprenez une langue.
Une langue est quelque chose dans lequel 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
Le chat sauta sur la boîte.
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:
Le chat a sauté sur la boîte.
Sur la boîte sauta le chat.
Viennent ensuite des variations de plus en plus larges, faisant toujours référence à la même action physique:
La boîte a tremblé sous l'impact du chat.
Le chat est descendu avec un bruit sourd sur le dessus de la boîte.
Le félin sauta légèrement en l'air et atterrit proprement sur une boîte voisine.
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 qui est la plus appropriée, tout comme vous ne choisiriez qu'une seule des phrases anglaises ci-dessus en fonction exactement de ce que vous souhaitez communiquer. C'est à cela que sert le Zen de Python.
Mais dans un cours d'introduction à la programmation ou un cours d'introduction à l'anglais, vous devez d'abord apprendre les différentes façons (libellés, extraits de code) par lesquelles vous pouvez faire une idée avant de développer le jugement pour choisir qui convient le mieux.
Vous ne demandez que la variable myAnswer
qui semble être redondante. D'autres réponses expliquaient déjà pourquoi et quand il serait judicieux de l'omettre ou de l'utiliser, mais voici une autre: qu'en est-il?
Start
output input * 2
Stop
ou même ça
Start output input * 2 Stop
Dans la plupart des langues, cela fonctionnerait toujours, mais pouvez-vous le lire? C'est difficile donc nous utilisons souvent des variables helper 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 .
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):
Start
input myNumber // Input
set myAnswer = myNumber * 2 // Process
output myAnswer // Output
Stop