✔ 最佳答案
你係錯在pascal的 and/or項式,而不是until的句式。
pascal很講求格式化,做到一絲不苟。
和人腦不同,有時一個括號可令意義不夠明確。
and 和 or 的句式是兩個數字的算式,即 如 0 and 1 得出 0,只有 1 and 1才得出1。or則只有 0 or 0得0,其餘得1。
(其實可用於 binary 算式和boolean算式, 意義一樣)
所以你寫成 until option = 1 or option=2 or option=3;
順序編譯時會看成 until option = 1 or option (即1 和option 做 OR,但其後再一個等號就變成不能解。syntax error
所以一定要加括號。
變成until (option = 1) or (option=2) or (option=3);
清清楚楚的 ,先做 (option =1),結果是一個 boolean,後面的 (option=2) 和 (option=3) 也回傳一個 boolean,最後,把三個boolean 做 OR。結果送給 until指令。
寫開其他語言的可能認為好煩,但委實十分清楚。
順帶一提,如果你的句子包括and 及or,
例如 until (a=1) or (b=2) and (c=3),意思不夠清楚。編譯時可能不出錯誤,但未必是你的意思。因為
((a=1) or (b=2)) and (c=3)
和
(a=1) or ((b=2)) and (c=3))
即先處理OR和AND先的結果差太遠。
後記:until後的一句也可以寫成
until (option>=1) and (option<=3);
如你的選項由1至10,這個寫法較好。(唔使 or or or or )
又如果,你的選項不是順序,可以用set
如 until (option in [1,3,5,7,10..15]);