2010-07-01 101 views
1

我希望在Pascal中進行同時變量賦值。pascal中的同時變量賦值

據我所知,這是不可能的。在這個問題上搜索,我可以看到很多編程語言都實現了這一點,但是我無法在Pascal中找到如何去做。

例如,在Python我可以這樣做:

(x, y) = (y, x) 

在Pascal中,我需要一個額外的變量來保存x的值它去掉,這樣的事情:

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

那麼,Pascal中是否存在同時賦值,還是我應該將代碼重寫爲類似上面的泡沫物?

我不僅要做掉掉;有時我必須做這樣的事情:

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

可以像下面這樣做嗎?

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

您在這裏尋找的術語是「交換」 - 您想交換「x」和「y」的值。 – 2010-07-01 01:45:00

+1

雖然這四個陳述都可以,但我想我只是在兩個方面做:'y:= y + x; x:= x + 1;' – 2010-07-02 05:34:53

回答

2

PASCAL不包含同時變量賦值。

它也不包含SWAP(X,Y)預定義過程。

你必須自己動手。

你可能要考慮購買一份[Jensen & Wirth]。它仍然是該語言的最佳參考手冊。如果您使用的是Borland PASCAL系統之一,請使用隨附的手冊:Borland做出了一些不兼容的更改,但這些語言使得語言更易於使用。

0

我不熟悉,在所有帕斯卡爾,但我無法找到任何特殊swap函數,你想要做什麼。

無論如何,你在做什麼是完全合理的;任何swap的標準實現都需要一個臨時變量來保存其中一個正在交換的值。我會在你上面寫的代碼更改的唯一一件事就是變量重命名爲temp,使之清楚,該變量只用於交換的目的暫時存在:

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

編輯:有當你改變xy時,你的行爲也沒有錯。如果您需要保留舊值作爲計算的一部分,則將舊值分配給變量然後使用它是完全正確的。

+0

謝謝..我編輯了這個問題以超越掉期。我應該做那樣的事情嗎? – iduppe 2010-07-01 02:09:08