mdecourse / vecp2018

車輛工程系大一計算機程式 (課程已經結束)
GNU Affero General Public License v3.0
0 stars 0 forks source link

vecp-week3 #5

Closed mdecourse closed 6 years ago

mdecourse commented 6 years ago

學哪一種計算機程式語言都好

在學習一套程式語言的過程, 了解各種程式語言各有其適用情境, 應該是個不錯的開始, 無論您從大一就開始學習 C 或 C++ 或 C# 或 Python 或 Java 或 Javascript 或 Ruby 或 swift 或 Lua 或其他計算機程式語言, 其終極目的應該只有一個, 就是逐步認清, 未來將會有更多的事物是必須仰賴計算機程式完成, 單單一種程式語言無法滿足所有工作 (當然 http://www.red-lang.org/ (源自 rebol快速瀏覽 red 程式語言) 的開發群可能不太同意這種論調), 但是就在 2018 年第一季, 「單單一種程式語言無法滿足所有工作」這句話, 應該還算適用的.

因此, 假如您得知其他同年的計算機程式課程, 正在教導上述其他各種程式語言, 要記住, 只要能夠用來解題的程式語言, 都值得學習, 在本課程, 我們先設法學會使用 Lua 程式語言.

有興趣的話, 也可以參考一下: https://haxe.org/ (還有 https://en.wikipedia.org/wiki/Haxe)

有人用 Javascript 重寫 Lua

http://lua.space/webdev/why-we-rewrote-lua-in-js, 我們也知道, https://fengari.io/ 利用 Javascript 重寫了 Lua 程式語言, 讓我們可賴以在瀏覽器中直接執行 Lua 程式. 意思是說 ,假如我們會配置 https://fengari.io/, 就可以直接在 web based 環境 ,直接練習 Lua 程式語法.

安裝的方法: https://github.com/fengari-lua/fengari-web

參考資料: https://youtu.be/xrLIgmd8xik

真的要好好感謝 David Choo

因為 David Choo 已經在一個月前完成 https://github.com/davchoo/SchoolProject, 我們只要將這個專案配置到課程倉儲中, 大家就可以直接在 http://mde.tw/vecp2018/lua/SchoolProject/ 中練習簡單的 Lua 程式語法了.

第三週的分組練習題目

第二週的課程內容中, 我們已經知道 Lua 基本重複迴圈用法, 如下:

-- lua test
--[[ 這是 Lua 程式的多行註解
Sc1.exe 是以副檔名 .lua 辨識程式語法, 將本程式放入編輯器後, 以 Tools->Go 執行
]]
for i = 1,10 do
  print(i .. "沒有問題")
end

那麼, 各組應該可以利用 http://mde.tw/vecp2018/lua/SchoolProject/ 寫一個能夠從 1 累加到 10, 並將結果印出的程式吧!

mdecourse commented 6 years ago

程式執行過程取輸入變數

-- 此範例不是標準的原生 Lua 程式
-- 而是透過 https://fengari.io/ 以 Javascript 重寫 Lua 程式後
-- 利用導入 js 模組, 讓 Lua 程式在瀏覽器環境中, 可以使用 Javascript 的 prompt 方法

local js = require "js"
local window = js.global
local input = window:prompt("請輸入數值或字串!")

print("您所輸入的內容為: "..input)

以 Javascript 的 prompt 方法取值

上述程式可以取得使用者執行過程的輸入, 請各組將從 1 累加到 10 的程式加以修改, 使能累加 1 到 n, 但是 n 值由使用者決定, 執行結束後印出累加數值.

接下來請利用 20 分鐘快速瀏覽 Lua 程式語言, 直接在線上 Lua 程式環境中練習.

mdecourse commented 6 years ago

設法導入 Fengari

安裝可攜 node.js

下載 https://nodejs.org/download/release/ 中最新版本的 Windows .7z 檔案後解開, 假設目錄名稱為 node-v9.8.0-win-x64, 則在原先可攜系統中的搜尋路徑加入:

%Disk%:\node-v9.8.0-win-x64;%Disk%:\node-v9.8.0-win-x64\node_modules\npm\bin;

之後重新啟動可攜系統後, 以

npm install npm@latest -g 

更新 npm 套件.

之後再根據 https://fengari.io/ 說明, build 出 fengari-web.js

參考資料:

https://s40523119.github.io/cd2018/2018/03/10/nodejs/

直接在網頁中使用 fengari-web.js

<html>
<head>
<script src="fengari-web.js" type="text/javascript"></script>
</head>
<body>
<script type="application/lua">
local js = require "js"
local window = js.global
document =window.document

global_var = "hello world!"
for i=1, 5 do 
    document:write(global_var.."<br />")
end
</script>
</body>
</html>
jmscsl commented 6 years ago

end print(sum)

40628408 commented 6 years ago

LUA (1)從1加到10 sum = 0 for i = 1,10 do sum = sum + i end print(sum)

(2)利用公式解從1加到10 (1)i = 55 print( (1 + i)*i/2)

(2)i=55 a1=1 print((i(2a1)+(i-1)*i)/2)

(3)按下執行後跳出視窗輸入數字 local js = require "js" local window = js.global local n = window:prompt("請輸入由 1 累加到 n 的 n 數值!")

sum = 0

for i=1, n do sum = sum + i end print(sum)