跳轉到內容

圖靈/幫助

來自華夏公益教科書,開放的書籍,開放的世界

歡迎來到圖靈幫助臺。有問題嗎?請隨時在此提出,有人會盡快嘗試回答您的問題。


圖靈在哪些情況下真正有效?

[編輯 | 編輯原始碼]
  • 圖靈在哪些情況下真正有效?什麼時候我應該選擇圖靈而不是華夏公益教科書:程式語言書架上其他語言,例如程式設計:QBasic程式設計:PrologPython 程式設計
  • 誰使用圖靈?
  • 是否有用圖靈編寫的重大程式?
  • 圖靈可以在我的電腦上執行嗎?
  • 圖靈可以在我的[[嵌入式系統/PIC 上執行嗎?
  • 如何在計算機上安裝圖靈編譯器/直譯器/IDE?

i0 := --DavidCary 00:20, 4 October 2005 (UTC)

  • 嗨,David。抱歉回覆晚了。#sorrynotsorry 圖靈主要用作學習工具,並且是為此而設計的。由於它是為了易用性而不是速度或多功能性而設計的,因此您使用圖靈的唯一原因可能是用於簡單的程式,或者您只是開始學習程式設計。
  • 主要是高中生
  • 據我所知,沒有。
  • 是的,圖靈在 Windows 上執行。它還在 Linux 和 Mac 上執行。
  • 如果你能在上面安裝 Linux 的話 ;)
  • 我不知道,但我也不確定。
  • 您需要從 holtsoft 購買一份副本。如果您是學生,並且您的學校/董事會購買了許可證,您可以免費獲得一份副本。
  • 在 Windows 上,安裝非常簡單。我不經常使用它,而且有一段時間沒用過它了,所以我不確定在其他系統上安裝它是否有任何重要說明。
希望這有幫助!-Frazzydee| 03:29, 5 January 2006 (UTC)

傳遞引數

[編輯 | 編輯原始碼]

為什麼不傳遞引數是不好的程式設計風格?如果在不傳遞引數的情況下有效,為什麼不使用全域性變數?

原因可能因程式而異。最常見的原因之一是,您的過程/函式最終可能會被包含在庫中,使用您程式的人希望直接將引數傳遞給它,而不是弄清楚所有需要的變數。-Frazzydee| 04:23, 24 May 2005 (UTC)

以遞增和遞減的量增加和減少計數器?

[編輯 | 編輯原始碼]

所以,我需要將值增加零,然後增加一,然後減一,增加二,減二,增加三,減三……我不知道該怎麼做。我一直在嘗試使用一些關於

  loop
    counter:=counter+1
    a:=a+(-1)**counter
  end loop

但是它只是在做 a+0, a-1, a+1, a-1, a+1 而不是 a+0, a-1, a+1, a-2, a+2 求助!

我不確定我是否完全理解您的問題……如果減去和新增的數字相同,那麼最終不只是等於 0 嗎?-Frazzydee| 11:58, 24 May 2005 (UTC)

它是這樣做的 a+0, a-1, a+1, a-1, a+1 因為 -1**1=-1, -1**2=+1, -1**3=-1, -1**4=+1...等等。請嘗試

var y : int
var z : int
for x:1..10
    y:=x
    z:=x
    put "a+", y 
    put "a-", z
end for

減緩程式速度

[編輯 | 編輯原始碼]

如何減緩程式將資訊輸出(放置)到螢幕上的速度?請幫忙!緊急!

答案

使用delay(n),其中 n 是您希望程式暫停的毫秒數。例如
delay(1000)

將使程式暫停一秒鐘,然後再執行下一行。-Frazzydee| 22:53, 6 Jun 2005 (UTC)

如何跳過行

[編輯 | 編輯原始碼]

有沒有辦法在特定條件下跳過一行

例如

如果 x=2 “現在我需要計算機避免第 32 行到第 45 行的資料”

在大多數情況下,您只需將它儲存在這些行中的臨時變數中
var tmp : string
if x=2 then
     for i : 1 .. 14
          get : inp, tmp
     end for
end if
但是,我遇到過無法將其儲存在變數中的情況,我不確定如何解決這個問題。如果您知道如何解決,請在此處釋出!:) -Frazzydee| 02:48, 9 Jun 2005 (UTC)

高爾夫模擬作業

[編輯 | 編輯原始碼]

我上十年級,我們剛被要求製作一個模擬程式。包含風、重力等變數。無論如何,我過去一週左右一直生病,什麼也沒做,因為我在家沒有圖靈。你能給我傳送一個模擬高爾夫球擊球的程式嗎?它必須包含諸如風力、重力、切球和拉球之類的變數,使用者可以輸入諸如他/她是業餘球手還是職業球手之類的資訊,從而影響他的/她的擊球距離球洞的遠近。請你給我傳送一個可以做到這一點的程式。我非常需要它。謝謝!

嗨!請告訴我為什麼這段程式碼在圖靈中無法執行。它崩潰了

[編輯 | 編輯原始碼]

procedure info (var base, height, L1, L2, L3 : int)

   put "Please enter the base of the triangle"
   get base
   put "Please enter the height of the triangle"
   get height
   put "Please enter the 1st length of the triangle"
   get L1
   put "Please enter the 2nd length of the triangle"
   get L2
   put "Please enter the 3rd length of the triangle"
   get L3

end info

procedure area (var b, h, Area_Triangle : int)

   Area_Triangle:=b*h div 2

end area

procedure pmeter (var L1, L2, L3, Perimeter_Triangle : int)

   Perimeter_Triangle := L1 + L2 + L3

end pmeter

procedure areapmeter (var finalarea, finalperimeter, Area_Triangle, Perimeter_Triangle : int)

   put "The Area of the triangle is", finalarea, "The Perimeter of the triangle is,", finalperimeter
   finalarea := Area_Triangle
   finalperimeter := Perimeter_Triangle

end areapmeter

您有冗餘變數,例如 b 和 base,並且您在 put 之後定義了 finalarea 和 final perimeter。刪除冗餘變數,您應該沒問題
   %Declare the variables
   var base, height, L1, L2, L3, Area_Triangle, Perimeter_Triangle : int
   
   %Enter in values
   put "Please enter the base of the triangle"
   get base
   put "Please enter the height of the triangle"
   get height
   put "Please enter the 1st length of the triangle"
   get L1
   put "Please enter the 2nd length of the triangle"
   get L2
   put "Please enter the 3rd length of the triangle"
   get L3
   %Display
   Area_Triangle := base * height div 2
   
   Perimeter_Triangle := L1 + L2 + L3
   
   put "The Area of the triangle is ", Area_Triangle
   put "The Perimeter of the triangle is ", Perimeter_Triangle

居中文字

[編輯 | 編輯原始碼]

有人能告訴我如何在 Turing 中居中文字嗎?

在幫助檔案中查詢 locate。你需要知道字串的長度才能正確地居中它。 -Frazzydee| 03:32, 2006年1月5日(UTC)

練習

[edit | edit source]

如何編寫一個程式,允許使用者輸入任何十進位制數,然後將該數字輸出為二進位制數?

var tmp : int
var tmpc : string := ""

get tmp

loop
    tmpc += intstr(tmp mod 2)
    tmp := tmp div 2
    exit when tmp=0
end loop

put tmpc

for decreasing i : length(tmpc) .. 1
    put tmpc(i)..
end for
這只是不斷地除以 2 並記錄餘數,然後反向讀取它。希望對您有所幫助,抱歉回覆晚了。 -Frazzydee| 03:48, 2006年1月5日(UTC)

字串

[edit | edit source]

輸出一個單詞並確定中間單詞是大寫還是小寫?

為什麼它不輸出我輸入的單詞?!在它被修改之後

[edit | edit source]
if choice = 3 then
    loop
        put "title"       %---use quotations---% 
        put "line"

        %setting outputs
        locate (3, 1)
        put "Enter a pattern:"
        locate (4, 1)
        put "Enter a pattern to substitute"
        put "it with:"
        locate (6, 1)
        put "Enter a word to change:"

        %getting inputs
        locate (3, 18)
        get pattA : *
        locate (5, 10)
        get pattB : *
        locate (6, 25)
        get word : *

        if index (word, pattA) not= 0 then
            loop
                pos := index (word, pattA)
                exit when pos = 0
                beg_word := word (1 .. pos - 1)
                end_word := word (pos .. *)
                new_word := beg_word + end_word
                word := new_word
            end loop
        end if

        cls
        put title
        put line
        locate (7, 1)
        put word

    end loop
end if

在 Turing 中製作 RPG 遊戲

[edit | edit source]

在 Turing 中製作 RPG 遊戲是否可能?我可以製作一個非常基本的戰鬥系統,帶有 HP 等。但是,我想讓它可以升級、使用物品等等。並帶有一些武器製造系統。


Turing 是一種極其有限的程式設計工具/語言,在 Turing 中製作帶有升級和武器的 RPG 將非常困難,如果不是不可能的話。這是因為 Turing 主要被用作初學者程式設計師的學習工具,以向他們展示程式設計的基本要素,一個更好的程式語言可能是 Java 或 C++,我真的不推薦使用 Turing 來建立像你描述的這樣的複雜遊戲。


我製作了一個簡單的(有等級攻擊等)基於文字的 RPG,但很難在我的遊戲中製作圖形,所以我想要一個復古的外觀,如果你喜歡做這類事情,你應該訪問這個網站。

http://compsci.ca/v3/index.php?pf=120&h=1&start=0

四子棋

[edit | edit source]

我需要幫助編寫一個影片四子棋遊戲的程式。我剛得了肺炎,已經缺課兩週左右了。這個專案很快就要截止了,我對 Turing 不是很擅長。請幫助我,這將不勝感激。非常感謝你。

當然,你可以在 Turing 中製作 RPG 遊戲。現在,它不會像最終幻想 X 那樣有圖形,但你可以輕鬆地製作出類似於任天堂/超級任天堂時代遊戲的作品。

猜數字

[edit | edit source]

我需要為學校用 Turing 程式碼建立猜數字遊戲。我完全迷茫和困惑。如果有人有程式碼,或者只是提供一些幫助,我會非常感謝。謝謝

如何編寫一個程式,允許使用者點選並讓連線到紙質汽車的 LED 燈(連線到實驗盒)閃爍

我知道它

[edit | edit source]

我做錯了什麼,我知道它,但我記不起來了?

case
    label := "a"
        put "no"
    label := "b"
        put "yes"
    label := "c"
        put "no"
    label := "d"
        put "no"
    label := "e"
        put "no"
end case

答案

:= 設定變數的值。您應該使用 = 進行比較(例如,比較 label 的值和 "a")。試試看,如果它仍然不起作用,請回來...抱歉,但我現在沒有時間自己測試 :( -Frazzydee| 22:58, 2006年2月26日(UTC)

一個帶 GUI 的聊天程式

[edit | edit source]

我已經完成了 95% 的程式碼。但我被實際的資訊傳輸難住了!我可以開啟連線,並連線,但我沒有辦法在伺服器和客戶端之間傳遞資訊!有人可以幫忙嗎?

您應該可以使用 get 和 put,如果我記得沒錯。是否有任何理由導致 "get : ns, stringvar" 不起作用?(其中 ns 是您的網路流,stringvar 是一個字串變數)。如果您仍然遇到問題,請將您的程式碼釋出到某個地方,我會看一看。 -Frazzydee| 23:00, 2006年2月26日(UTC)

嗯,是的,我只是想知道,我理解迴圈是如何工作的,但我不知道如何讓程式迴圈,以便在使用者提示時重新開始,例如。在這種情況下,您讓程式執行,然後您到達末尾,您迴圈它,這樣它就會在 word = no 時說退出程式(使用者說他們不想再玩了),但如果使用者說他們想再玩一次,您如何讓它重新開始呢?

連結

[edit | edit source]

我正在為學校(十年級 FTW)製作一個 Turing 專案,我必須建立一個歡迎螢幕,在我的所有程式中使用。問題是,我製作了一個非常棒的歡迎螢幕(至少對我們目前所學的來說很不錯),但它的程式碼很長。我不想每次都將它複製到程式的頂部。是否有一行程式碼可以放在每個程式的頂部,告訴它先執行歡迎螢幕,然後繼續執行程式的其餘部分?

您可以使用 include。

例如,如果您的歡迎螢幕在名為 welcome.t 的檔案中,您需要編寫

include "welcome.t"

在每個作業的開頭。

不過,請確保 welcome.t 與您的作業在同一個目錄中。

太多變數。

[edit | edit source]

我正在嘗試製作一個數獨遊戲,它已經變成了一個很長的指令碼。是否有辦法將變數分組,以簡化操作?例如,如果 a1 = {任何變數組},則迴圈 a1 := a1+1

== 您好,我想知道是否有人可以指導我使用 Turing 4.1.1

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

您好,雖然我不會指導您,但您可能會發現檢視 Turing 參考中的陣列很有幫助。

var sampleArray1: array 1..9,1..9 of int %建立陣列

var sampleArray2: array 1..3,1..6 of int: %建立陣列併為陣列分配值

   =init(1,1,1,1,1,1,
   1,1,1,1,1,1,
   2,2,2,5,6,2)

sampleArray1(1,3):=6 %將整數 6 分配給陣列的索引 1,3

希望這對您有所幫助 :)

求助!

[edit | edit source]

嘿,有人能告訴我這段程式碼有什麼問題嗎?這是一個石頭剪刀布遊戲的程式。

var p1 : char
var p2 : char
var exit_char : string (1)
var p : char
var P : char

put "Note: The 'ROCK-PAPER-SCISSORS' game is meant for two (2) players. \nPress any key to continue. \n\n"
    getch (exit_char)

put "Player 1, enter 'p' for paper, 'r' for rock, or 's' for scissors: "..
get p1
put "Player 2, enter 'p' for paper, 'r' for rock, or 's' for scissors: "..
get p2

if ((p1 = "p" or "P") and (p2 = "p" or "P")) then
    put "\nTie game, nobody wins."
elsif ((p1 = "s" or "S") and (p2 = "s" or "S")) then
    put "\nTie game, nobody wins."
elsif ((p1 = "r" or "R") and (p2 = "r" or "R")) then
    put "\nTie game, nobody wins."

elsif ((p1 = "p" or "P") and (p2 = "r" or "R")) then
     put "\nPlayer 1 wins, paper covers rock."
elsif ((p1 = "r" or "R") and (p2 = "s" or "S")) then
    put "\nPlayer 1 wins, rock breaks scissors."
elsif ((p1 = "s" or "S") and (p2 = "p" or "P")) then
    put "\nPlayer 1 wins, scissor cuts paper."

elsif ((p1 = "p" or "P") and (p2 = "s" or "S")) then
     put "\nPlayer 2 wins, scissor cuts paper."
elsif ((p1 = "r" or "R") and (p2 = "p" or "P")) then
    put "\nPlayer 2 wins, paper covers rock."
elsif ((p1 = "s" or "S") and (p2 = "r" or "R")) then
    put "\nPlayer 2 wins, rock breaks scissors."

else 
     put "\nInvalid choice(s). Remember to enter only one letter; 'p', 'r', or 's'."
end if

答案

您沒有正確使用布林值。將 (p1 = "p" or "P") 重寫為 (p1 = "p" or p1 = "P"),因此第一行應該是
if ((p1 = "p" or p1 = "P") and (p2 = "p" or p2 = "P")) then
    put "\nTie game, nobody wins."

Turing 幫助

[edit | edit source]

有人可以幫幫我嗎?我需要製作一個牛仔從懸崖跳到馬背上,然後騎著馬跑掉的場景。我可以製作場景,但我似乎無法讓牛仔跳到馬背上,然後騎著馬跑掉。他們是棍狀人物,在一個棕色的盒子上面。

流程和程式

[編輯 | 編輯原始碼]

我有一堆程式,每個程式的開頭我都想放一首帶叉子的音樂。我做到了,但它在程式內部卻不起作用,因為你不能在程式內部放過程。我該怎麼辦?求求你幫幫我!

字串問題

[編輯 | 編輯原始碼]

以下程式碼是模擬的猜數字遊戲。這是基本程式碼。不幸的是,我在一些字串方面遇到了問題,我已經用*****問題區域****標記了。

var guess1, guess2, guess3, guess4 :string                          %guesses
var ans1 :int :=Rand.Int (97,101)                                   %generation of answer
var ans2 :int :=Rand.Int (97,101) 
var ans3 :int :=Rand.Int (97,101) 
var ans4 :int :=Rand.Int (97,101) 
var nouveau_guess :int
const ANS :string := chr (ans1)+chr (ans2)+chr (ans3)+chr (ans4)    %answer

put ANS

%instructions
put "Pick four of the following five letters: a, b, c or d \n"

loop
%prompts
put "Enter your first guess: "..
get guess1

put "Enter your second guess: "..
get guess2

put "Enter your third guess: "..
get guess3

put "Enter your forth guess: "..
get guess4

var GUESS :string := guess1+guess2+guess3+guess4                  %guess

%answer completely correct
if ANS=GUESS then
    put "YOU WIN!"
    exit
end if

%evaluation of guess (completely correct)
for i :1..4
    if GUESS (i)=ANS (i) then
        *****PROBLEM AREA***** i must convert the guess (i) into another character so that it doesn't check it again in the following code    
        put "Correct"
    end if
end for

%evaluation of guess (sort of correct)
for i :1..4
    if GUESS (1) = ANS (i) then
        put "semi-correct"
    end if
    
    if GUESS (2) = ANS (i) then
        put "semi-correct"
    end if
    
    if GUESS (3) =ANS (i) then 
        put "semi-correct"
    end if
    
    if GUESS (4)= ANS (i) then
        put "semi-correct"
    end if
end for
end loop

答案

我不確定你在問題區域中想做什麼。我的猜測是,你需要將問題區域改成以下內容。
var allRight : boolean := true
for i :1..4
    if GUESS(i) not= ANS(i) then
       allRight := false
    end if
end for
if allRight the
    put "Correct"
    exit
end if

多邊形

[編輯 | 編輯原始碼]

我正在做這個作業,我需要移動一個多邊形,但我不知道怎麼做,你能告訴我嗎?非常感謝你!

在製作多邊形之後清除螢幕,然後在它旁邊製作相同的多邊形即可。

它可能與 getch 和跟隨滑鼠程式有關,試著查詢一下,一旦你學會瞭如何使用 getch,你可能就會想通了。

並行埠

[編輯 | 編輯原始碼]

如何使用 parallelget 函式?根據我的理解,它比 parallelget(64) 更複雜。請詳細解答,因為我正在讀高二。粗體 MOD 和 DIV 是什麼?非常感謝你。parallelget 是一個沒有引數的函式。

procedure PGet(var val, i0, i1, i2, i3, i4: int)
val := parallelget
i0 := (val div 64) mod 2
i1 := (val div 128) mod 2
i2 := (val div 32) mod 2 
i3 := (val div 16) mod 2
i4 := (val div 8) mod 2 
end PGet

parallelget 代表一個已經確定的數字,它不需要變數,這就是 parallelget(64) 沒有任何作用的原因。把它像變數一樣使用,例如,"put parallelget"。

按字母順序程式設計

[編輯 | 編輯原始碼]

是的,我需要製作一個程式,它會要求使用者輸入兩個單詞,然後我按字母順序排列它們。我已經透過簡單地將變數設定為 word1 和 word2 來實現了這一點,然後我只是放入了 

if word1 > word2 then
   put word2,"":2,word1
else
   put word1,"":2, word2
end if

在我的程式中,我確實包含了 get 語句和變數...但我只是寫下了我按字母順序排列事物的想法。問題是,兩個單詞必須全部是大寫或全部是小寫,我不能讓 word1 大寫,word2 小寫,因為小寫字母比大寫字母大,即使大寫字母以 "Z" 開頭,小寫字母以 "a" 開頭,我的程式仍然會在輸入單詞之後顯示 "Z" 在 "a" 之前。我該怎麼做才能讓它顯示 "a" 在 "Z" 之前?

進位制轉換器(二進位制、八進位制、十進位制、十六進位制轉換)

[編輯 | 編輯原始碼]

嗨!

我想知道是否能得到一些關於數字轉換的幫助。

我需要將十進位制、十六進位制、二進位制和八進位制相互轉換。

我知道

binary_out := intstr (decimal_in, 0, 2)

將 decimal_in 轉換為 binary_out

以及

for decreasing n : length (binin) .. 1
        if binin (n) = '1' then
            decout := decout + 2 ** (length (binin) - n)
        end if
    end for

將數字轉換回十進位制

我在二進位制到八進位制/十六進位制、八進位制到十進位制/二進位制/十六進位制以及十六進位制到十進位制/二進位制/八進位制的轉換方面遇到困難。

請幫幫我!謝謝 ==> 為什麼不先將二進位制字串轉換回整數(十進位制)呢?然後你可以使用 "intStr(int, 0, <base>) 將其轉換為十六進位制或八進位制字串?

decNumberOut := strint(binStringIn, 2)
octalString  := intstr(decNumberOut, 0, 8)
hexString    := intstr(decNumberOut, 0, 16)

角色移動

[編輯 | 編輯原始碼]

更好的問題: 如何在沒有重力的情況下使用 WASD 或左右上下鍵移動,更具體地說,如何上下移動?沒有網站提供此資訊,我快要瘋了。

以下是到目前為止的程式碼

   Text.ColourBack (green)
   cls
   setscreen ("graphics:800;800,offscreenonly,nobuttonbar,title:SPEEDY SNOWMAN")
   var x, y : int
   x := 100
   y := 100
   var keypress : array char of boolean
   Text.ColourBack (green)
   cls
   loop
   Input.KeyDown (keypress)
   if keypress (KEY_RIGHT_ARROW) then
       x := x + 5
   end if
   if keypress (KEY_LEFT_ARROW) then
       x := x - 5
   end if
   drawfilloval (300 + x, 200, 50, 50, white)
   drawfilloval (300 + x, 260, 40, 40, white)
   drawfilloval (300 + x, 100, 80, 80, white)
   drawfilloval (280 + x, 270, 5, 5, black)
   drawfilloval (320 + x, 270, 5, 5, black)
   drawfilloval (300 + x, 260, 5, 5, red)
   drawfilloval (278 + x, 248, 4, 4, black)
   drawfilloval (286 + x, 240, 4, 4, black)
   drawfilloval (298 + x, 235, 4, 4, black)
   drawfilloval (308 + x, 240, 4, 4, black)
   drawfilloval (318 + x, 248, 4, 4, black)
   drawfilloval (300 + x, 190, 6, 6, black)
   drawfilloval (300 + x, 210, 6, 6, black)
   delay (5)
   View.Update
   View.Set ("offscreenonly")
   cls 
   end loop

- Alexiler

華夏公益教科書