用紙程式設計:用手寫的計算機程式讓你的朋友迷路

透過自己編寫一個程式來了解計算機程式的工作原理——解決你自己的迷宮!

核心概念
計算機
計算機程式設計
問題解決
 
簡介
你可能每天都在使用計算機程式。每次你上網、玩電子遊戲或使用智慧手機時,你都依賴於計算機程式。你知道你可以在不需要使用計算機的情況下學習一些程式設計知識嗎?在這個有趣的活動中,你將編寫一個“程式”——一套指導志願者找到迷宮出路的指令。你能幫助他們找到出路而不撞牆嗎?
 
背景
計算機程式是一系列指令或命令,告訴計算機做什麼。例如,當你在計算機上打字時,有一些命令指示它在你按下鍵盤上的某個鍵時在螢幕上顯示特定的字元。電子遊戲的程式可能有不同的指令,告訴遊戲在你按下控制器時移動螢幕上的角色。Web瀏覽器有指令告訴它當你滑鼠點選不同的按鈕時該做什麼。計算機程式可以做的事情還有很多很多。你能想到更多嗎?
 
計算機非常擅長遵循指令——但這可能會導致一個問題:如果人類程式設計師不小心給了計算機錯誤的指令,會發生什麼?計算機不能自己思考——它會繼續遵循給它的指令,即使這些指令是錯誤的!這可能會導致程式“崩潰”,或無法按預期執行。計算機程式設計師將計算機程式碼中的錯誤稱為“bug”,而查詢和刪除這些錯誤的過程稱為“除錯”。在這個專案中,你將編寫一套指導志願者在迷宮中導航的指令,使用諸如“向前移動”、“向左轉”和“向右轉”之類的命令。如果你在指令中犯了錯誤,志願者將“撞”到迷宮的牆上,你將不得不除錯你的程式並再次嘗試!
 
材料

  • 方格紙

  • 尺子

  • 鉛筆

  • 志願者

  準備工作


支援科學新聞報道

如果你喜歡這篇文章,請考慮訂閱我們的獲獎新聞報道來支援我們。 訂閱。透過購買訂閱,你正在幫助確保關於塑造我們當今世界的發現和想法的有影響力的故事的未來。


  • 使用一張方格紙建立一個適合矩形網格的小迷宮。迷宮的所有牆壁都應該是垂直或水平的——沒有對角線或曲線。

  • 從一個小的、易於解決的迷宮開始。(你以後可以做一個更難的。)

  • 確保迷宮有明確標記的“開始”和“結束”點。

  步驟

  • 想象一下你是一個正在穿過你的迷宮的人,從“開始”點開始。在一張單獨的紙上,一步一步地寫下你如何穿過迷宮的指示。例如,使用諸如“向前移動兩個方格”、“向左轉”和“向右轉”之類的命令。繼續寫指示,直到你有足夠的指示到達迷宮的“結束”標記。

  • 可選:如果你願意,你可以畫箭頭來表示你的方向指令,而不是寫出文字。寫出逐步的指令需要一段時間嗎?這個過程與繪製迷宮相比如何?

  • 現在,將你的迷宮、指令和鉛筆交給你的志願者。指示他們完全按照你的指示穿過迷宮,即使他們發現錯誤。他們不允許自己解決迷宮或更改指示。

  • 仔細觀察志願者是否透過遵循你的指示成功完成了迷宮。他們是否撞到任何牆壁或一路到達終點線?

  • 如果你的志願者一路到達終點線,那麼恭喜你!你的程式沒有任何錯誤。嘗試製作一個更大、更復雜的迷宮並重新開始。

  • 然而,如果你的志願者撞到了迷宮的牆壁,你需要除錯你的程式!仔細地一步步追蹤你的程式,看看哪裡出了問題。你是否讓他們多走了一個街區,或者過早地轉彎了一個街區?僅僅一個錯誤就可能使你的整個程式失效,並導致稍後崩潰,所以請仔細檢查!

  • 在你發現錯誤之後,重寫你的程式。如果你只需要更改一兩個步驟,你可以直接擦掉它們,而無需重寫整個程式。

  • 讓你的志願者再次嘗試迷宮,遵循你的新程式。他們這次解決了嗎?如果不是,請繼續除錯你的程式,直到他們解決迷宮。為你的迷宮指令查詢和修復錯誤的過程有多困難?

  • 額外:計算機程式是用許多不同的“語言”編寫的,這些語言都有略微不同的格式,但都有非常相似的基本概念。例如,一些計算機程式在標點符號和拼寫方面有所不同——這稱為程式的“語法”。你能想出另一種“語言”來完成解決迷宮的相同任務嗎?例如,使用相對於紙上的絕對方向定義的命令怎麼樣,例如“向上移動”、“向下移動”、“向左移動”和“向右移動”;而不是像站在迷宮中的人一樣向左或向右轉?雖然這兩種語言不同,但你能看到它們是如何用於做同一件事的嗎?

  • 額外嘗試使用更復雜的迷宮進行此專案,包括對角線或曲線。如果你不再依賴矩形網格進行移動,你將如何編寫程式?你需要引入哪種語言?(提示:你也可以嘗試引入新命令,例如“向前移動直到到達十字路口”或“向前移動直到撞到牆壁”。)

  • 額外:不要在紙上使用迷宮,而是編寫一個程式來引導一個人穿過你的房子或學校。他們能否僅按照你的指示從一個房間移動到另一個房間而不撞到牆壁?

[中斷]
觀察和結果
你可能會發現,一個程式中早期的一個錯誤就可能導致崩潰。在解決迷宮時,幾乎沒有犯錯的餘地——如果轉錯一個彎,你可能會——字面意義上——撞到牆壁而崩潰,或者你可能會迷路!
 
你是否曾經使用過崩潰的計算機程式或玩過有故障的影片程式?你是否覺得這種體驗令人沮喪?這就是為什麼公司在向公眾釋出程式之前要進行大量的除錯和測試——即便如此,有時他們不得不在發現錯誤後釋出程式的“補丁”或“更新”。
 
更多探索 來自科學夥伴的適合所有年齡段的科學活動!
Scratch,麻省理工學院提供的兒童友好的學習程式設計方式
來自科學夥伴的計算機科學專案創意

這項活動與科學夥伴合作推出

© .