2010-07-01 8 views
1

Je souhaite effectuer une assignation de variable simultanée en Pascal. Pour autant que je sache, ce n'est pas possible. Googling sur le problème, je peux voir que de nombreux langages de programmation implémentent cela, mais je ne peux pas trouver comment le faire en Pascal.Affectation de variable simultanée en pascal

Par exemple, en Python, je peux le faire:

(x, y) = (y, x) 

En Pascal, je besoin d'une variable supplémentaire pour maintenir la valeur de x avant qu'il ne soit retiré, quelque chose comme ceci:

bubble := x; 
x := y; 
y := bubble; 

Donc, y a-t-il une assignation simultanée en Pascal, ou devrais-je réécrire le code à quelque chose comme la chose bulle ci-dessus?

Je n'ai pas seulement besoin de faire des échanges; parfois je dois faire des choses comme ceci:

(x,y) = (x+1,y+x) 

Serait-ce correct de le faire comme le suivant?

old_x := x; 
old_y := y; 
x := x + 1; // maybe x := old_x + 1; 
y := old_y + old_x; 
+0

Le terme que vous cherchez ici est 'swap' - vous voulez échanger les valeurs de' x' et 'y'. –

+1

Bien que ces quatre instructions soient OK, je pense que je le ferais en deux: 'y: = y + x; x: = x + 1; ' –

Répondre

2

PASCAL ne contient pas d'affectation de variable simultanée.

Il ne contient pas non plus de procédure prédéfinie SWAP (X, Y).

Vous devez le faire vous-même.

Vous voudrez peut-être envisager d'acheter une copie de [Jensen & Wirth]. C'est toujours le meilleur manuel de référence disponible sur la langue. Si vous utilisez l'un des systèmes Borland PASCAL, utilisez le manuel qui l'accompagne: Borland a apporté des modifications incompatibles, ce qui a considérablement facilité l'utilisation du langage.

0

Je ne connais pas du tout avec Pascal, mais je ne peux trouver aucune fonction swap spéciale qui fait ce que vous voulez.

Dans tous les cas, ce que vous faites est parfaitement raisonnable; toute implémentation standard de swap nécessite une variable temporaire pour contenir l'une des valeurs en cours d'échange. La seule chose que je changerais dans le code que vous avez écrit ci-dessus est de renommer la variable temp, de préciser que la variable existe seulement temporairement aux fins de l'échange:

temp := x; 
x := y; 
y := temp; 

EDIT: Il y a aussi rien de mal avec ce que vous faites en changeant x et y. Si vous avez besoin de conserver l'ancienne valeur dans le cadre de vos calculs, il est parfaitement possible d'affecter l'ancienne valeur à une variable, puis de l'utiliser.

+0

merci .. J'ai édité la question pour aller au-delà des échanges .. devrais-je faire quelque chose comme ça? – iduppe

Questions connexes