【Lua 筆記】迴圈 - part 4
【Lua 筆記】迴圈 - part 4 由於有款遊戲叫做 CSO(Counter-Strike Online),內建模式創世者模式(Studio)新增使用 Lua 及其遊戲的 API,所以突發奇想製作這個筆記。 這個筆記會在一開始先著重純粹的程式設計自學,在最後的章節才會與 CSO 遊戲 API 進行應用。 迴圈(loop) 迴圈即一個循環。 很多時候我們會需要重複執行一個動作,以生活舉例,像是平時上廁所(無論小便、大便)會是一個迴圈,因為這是我們不斷持續在做的事情。又或者是在長跑時,跑了好幾圈操場,這也是一種迴圈。 回到正題,Lua 共支援以下幾種迴圈語法: while for repeat…until break goto while、for 一定是每個程式語言基本配備,接下來讓我們先來看看 while 迴圈: while 迴圈 while 是一種具有條件判斷的迴圈,格式如下: 123while (condition) do statementsend 當 condition 這個條件成立,也就是 condition = true 的時候,迴圈才會執行。 至於執行什麼...
【Lua 筆記】條件控制 - part 3
【Lua 筆記】條件控制 - part 3 由於有款遊戲叫做 CSO(Counter-Strike Online),內建模式創世者模式(Studio)新增使用 Lua 及其遊戲的 API,所以突發奇想製作這個筆記。 這個筆記會在一開始先著重純粹的程式設計自學,在最後的章節才會與 CSO 遊戲 API 進行應用。 條件控制(Condition) 條件控制,大多程式語言所用到的關鍵字為「if」。 if 就是如果的意思,為什麼要用到條件控制呢?舉個例子:"如果"今天下雨,那麼我就帶雨傘。 那"如果"今天不下雨,"否則"我就不帶雨傘。 如果是關鍵字,否則同屬之。-> if、else 關鍵字 從上面例子可以看出來,"如果"今天下雨這個條件不成立,也就是今天不下雨,則會觸發"否則"這個條件。 在進入正式的語法之前,先來個重要的觀念: 控制結構的條件式結果可以是任何值,Lua 認為 false 和 nil 為假,true 和非 nil 為真(非常重要!!!!)。要注意的是 Lua 中 0...
【Lua 筆記】運算子 - part 2
【Lua 筆記】運算子 - part 2 由於有款遊戲叫做 CSO(Counter-Strike Online),內建模式創世者模式(Studio)新增使用 Lua 及其遊戲的 API,所以突發奇想製作這個筆記。 這個筆記會在一開始先著重純粹的程式設計自學,在最後的章節才會與 CSO 遊戲 API 進行應用。 運算子(Operator) 運算子(Operator),是用來告訴直譯器來執行特定的數學或邏輯運算之符號。Lua 共有以下這幾種運算子: 算術運算子(Arithmetic Operator) 關係運算子(Relational Operator) 邏輯運算子(Logical Operator) 運算子,筆者用一個簡單的例子來讓你理解: 1 + 1 1 被稱為是運算元(operand),是要拿來被運算的單元。 + 被稱為運算子(operator),在上述例子中是拿來當作數學運算的符號。 1 + 1,整體被稱為是一種運算式(expression),運算式就是運算元+運算子,而運算式也有人叫做表達式,都可以。 算術運算子(Arithmetic Operator) 簡單來說,算術...
【Lua 筆記】簡介 / 基本語法及資料型態 / 變數 - part 1
【Lua 筆記】簡介 / 基本語法及資料型態 / 變數 - part 1 由於有款遊戲叫做 CSO(Counter-Strike Online),內建模式創世者模式(Studio)新增使用 Lua 及其遊戲的 API,所以突發奇想製作這個筆記。 這個筆記會在一開始先著重純粹的程式設計自學,在最後的章節才會與 CSO 遊戲 API 進行應用。 簡介(Introduction) Lua(葡萄牙語「月亮」)是一個簡潔、輕量、可擴充的手稿語言。Lua有著相對簡單的C語言API而很容易嵌入應用中。很多應用程式使用Lua作為自己的嵌入式手稿語言,以此來實現可組態性、可擴充性。 - Wekipedia Lua 建立日期:1993年。by 羅伯托·耶魯薩林斯希、Luiz Henrique de Figueiredo、Waldemar Celes 特性: Lua 是一種輕量語言,它的官方版本只包括一個精簡的核心和最基本的函式庫。這使得Lua體積小、啟動速度快。它用 ANSI C 語言編寫,並以原始碼形式開放,編譯後的完整參考直譯器只有大約247kB,到5.4.3版本,該體積變成 283kB(...
【C++ 筆記】迴圈(loop) - part 6
【C++ 筆記】迴圈(loop) - part 6 很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! 三大迴圈式 while 迴圈 while 迴圈語法: 1234while(condition){ statement(s);} while 迴圈可以帶有條件,條件成立(True)時才會執行 statement(s); 的區塊。 True 時,一直執行直到 False 停止,跳出 while 迴圈。 Image Source:While迴圈 - 維基百科,自由的百科全書 以下是一個簡單範例: 12345678910111213141516171819#include <iostream>using namespace std;int main() { int number, sum = 0, i = 1; cout << &qu...
【APCS】m932. 2. 蜜蜂觀察 - Python 解
【APCS】m932. 2. 蜜蜂觀察 - Python 解 詳細資訊:https://zerojudge.tw/ShowProblem?problemid=m932 身為一個高中程式小白,上次在APCS考場中遇到這題,我瞬間懵了一下,雖說最後有解出來,但似乎我的答案並不是 AC。 註:這篇文章其實很早就寫完了,只不過現在才發XD。這篇文只是純粹因為解出我不會的題目,感到欣喜若狂,所以藉此分享。 以下是程式碼: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556import sysm, n, k = map(int, sys.stdin.readline().split())mm, nn = m-1, n-1mat = [list(input()) for _ in range(m)]step = [int(i) for i in input().split()]result = []x, y = mm, 0for i in ...
【Python進階教學】進階排序法:快速排序法 / 合併排序法【part 17】
【Python進階教學】進階排序法:快速排序法 / 合併排序法【part 17】 哈囉大家好,很感謝你點進本文章,我是一名高中生,是電腦社社團的社長,由於我並不是 Python 這方面非常精通的專家,所以若文章有些錯誤請見諒,也可向我指正錯誤。另外本文章的用意是作為電腦社社團的教材使用而編寫的。 那麼,讓我們開始吧。 快速排序法(Quick Sort) (快速排序法概念圖)Image Source:Unraveling QuickSort: The Fast and Versatile Sorting Algorithm | by Nathal Dawson | Medium 快速排序法步驟: 序列中尋找一個基準值(pivot) 進行快速排序法,所有比基準值小的排左邊,比他大的排右邊。 使用遞迴式對左右兩邊的子序列作與 2. 相同排序。 註:基準值可使用隨機的抽取方式,或是自定義一個基準值。 看到這邊,或許你發現到快速排序法其實類似於二分法的步驟,只不過特別的是,快速排序法需要使用到遞迴式,這個概念使用到了所謂的 分治法(divide and conquer) 的其中一種。...
【C++ 筆記】運算子(下) - part 5
【C++ 筆記】運算子(下) - part 5 很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! 運算子(Operator) 讓我們回顧 part 3 內容, C++ 有支援以下運算子: 算術運算子 - part 3 已學過 關係運算子 - part 3 已學過 邏輯運算子 位元運算子 指定運算子 運算元(Operand):在運算式中,運算元是資料的值。在例子「1 + 1」當中,兩個「1」都是運算元,運算元是被操作、運算的物件。 運算子(Operator):運算子是一個進行操作的符號。在例子「1 + 1」當中,「+」就是一個運算子,表示加法操作、運算。 運算式(Expression):運算式是由運算元和運算子組成的結構,用於進行計算並回傳結果。在例子中,「1 + 1」就是一個運算式,進行加法運算並回傳結果為「2」。 算術運算子:就是數學運算子,+、-、*、/、%...
【C++ 筆記】條件判斷 - part 4
【C++ 筆記】條件判斷 - part 4 很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! 條件判斷(Condition) Image Source:Decision Making in C (if , if…else, Nested if, if-else-if ) - GeeksforGeeks Condition,表示一個情況,也可稱之為一個條件。 以上的圖中是 if 語句的流程圖,Condition 如果是 True 的話,則會經過 if Condition 判斷,直接進入到 username code,這個 username code 就是要由我們自己定義的執行內容。 如果 Condition 是 False,同樣也會進入到 username code,一樣是要由我們自己定義的執行內容。 回到正題,C++ 當中有四種條件語句的形式: if if-else else if switc...
【C++ 筆記】常數 / 運算子(上) - part 3
【C++ 筆記】常數 / 運算子(上) - part 3 很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! 回顧上集內容: C++ 常見常用資料型態:int、float、double、char,目前只要記得這些即可。 常數(Const) 常數就是不能變的數,被定義為常數後就是一個固定值,又稱實字(也可稱字面量:iteral)。 實字就是字面上的數值,1 就是 1,他固定不變,總之就是表示固定不變的量。 總之就把常數想像成是將一個人石化就對了! 常數定義如下: 1#define identifier value 或 1const type variable = value; type -> 資料型態 vairable -> 變數 value -> 數值 以下是一個範例: 123456789101112131415#include <iostream>using name...
【C++ 筆記】資料型態 / 變數 - part 2
【C++ 筆記】資料型態 / 變數 - part 2 很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! 資料型態(or 資料型別:Data Type) 資料型態,也有很多人稱資料型別,其實都一樣意思,都叫做 Data Type。 問題來了,啥是資料型態呢?簡單來說,就是資料的型態。 咳、咳(清嗓),正確來說,在數學上我們將實數分為有理數、無理數,有理數又可分為整數跟小數,就是差不多這個概念啦! 所以資料型態就是將資料分類成不同的類別。 那另外呢,因為我們程式在執行的時候,需要在記憶體空間當中運算並且儲存這些資訊,而每個資料型態都是不同的個體,每個資料型態的儲存容量也不太一樣,所以接下來資料型態你會看到有它的範圍所在。 好的,接下來是C++的基本內建型態: 內建型態(Built-in Type) bool - 布爾型態 or 布林型態 char - 字元型態 int - 整數型態 float - ...
【C++ 筆記】簡介 / 環境安裝 / 基本語法 - part 1
【C++ 筆記】簡介 / 環境安裝 / 基本語法 - part 1 很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,輕鬆的自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! 簡介(Introduction) C++ 是一種高階語言,它是由 Bjarne Stroustrup(比雅尼·史特勞斯特魯普 )於 1979 年在貝爾實驗室開始設計和開發的。C++ 進一步擴充並完善了 C 語言,是一種物件導向的程式設計語言。C++ 可運作於多種平台上,如 Windows、MAC 作業系統以及 UNIX 的各種版本。 而 Bjarne Stroustrup 又被稱為是 C++ 之父。 以上是 C++ 的簡短介紹,接著讓我們進入環境安裝的部分。 環境安裝(Environment) Visual Studio:目前普遍認為在 C++ 編寫上最方便的編輯器軟體。 另外推薦:Dev-C++、Code::Blocks 兩大軟體,其中最推薦使用的是 Code::Blocks,因為除...
【Python進階教學】BFS & DFS 廣度/深度優先搜尋【part-16】
【Python進階教學】BFS & DFS 廣度/深度優先搜尋【part-16】 哈囉大家好,很感謝你點進本文章,我是一名高中生,是電腦社社團的社長,由於我並不是 Python 這方面非常精通的專家,所以若文章有些錯誤請見諒,也可向我指正錯誤。另外本文章的用意是作為電腦社社團的教材使用而編寫的。 今天我們要講的演算法是鼎鼎大名、各位耳熟能詳的 BFS / DFS 廣度/深度優先演算法。那在深入 BFS / DFS 廣度/深度優先演算法之前呢,我們需要理解一下圖形理論的相關基礎知識,才能夠對 BFS / DFS 有更深入的了解。 接下來,讓我們進入正題(作者冒汗:因為這部份真的超難的): 圖形理論(Graph Theory) 圖形理論簡稱圖論(Graph Theory),一個圖形可以由多個節點(node),或說頂點(vertice),跟連接節點的「邊線」組成,如下圖: Image Source:From left to right the underlying cycle graph, the associated graphs L… | Download Scienti...
【Python基礎教學】佇列 & 堆疊【part-15】
【Python基礎教學】佇列 & 堆疊【part-15】 哈囉大家好,很感謝你點進本文章,我是一名高中生,是電腦社社團的社長,由於我並不是 Python 這方面非常精通的專家,所以若文章有些錯誤請見諒,也可向我指正錯誤。另外本文章的用意是作為電腦社社團的教材使用而編寫的。 上次我們談到鏈結串列資料結構的概念,上次的 Python 實作上面作者將其定位為進階教學,不過本次所講的資料結構為佇列、堆疊這兩種,那他們的概念其實都蠻基礎蠻簡單的,在實作上也沒有像鏈結串列那麼複雜。 接下來,讓我們進入正題: 佇列(Queue) 佇列(Queue),是一種線性的資料結構,具有先進先出(first in first out:FIFO)的特徵,特色為從一端插入資料至佇列(enqueue),然後在從另一端讀取資料(dequeue)。 Image Source:Python Stack and Queue - Javatpoint Image Source:Python Stack and Queue - Javatpoint 上圖為 enqueue,表示插入資料進入佇列裡面,我們可以看到...
【Python基礎教學】鏈結串列【part-14】
【Python基礎教學】鏈結串列【part-14】 哈囉大家好,很感謝你點進本文章,我是一名高中生,是電腦社社團的社長,由於我並不是 Python 這方面非常精通的專家,所以若文章有些錯誤請見諒,也可向我指正錯誤。另外本文章的用意是作為電腦社社團的教材使用而編寫的。 本次教學繼續替各位補充演算法的相關基礎知識,接下來的實作當中對同學們也許會變得越來越難,而作者將這些基礎演算法的定位、定位在 Python 進階教學當中,主要是因為結合 Python 進行實作。 APCS 實作題中的鏈結串列、佇列、堆疊會比較常出現於觀念題當中,若對於 Python 實作這些資料結構感到不 ok 的同學,或許你也可以理解這些資料結構的概念即可,不過到了動態規劃、貪心演算法等這些實作上常用到的演算法,那麼同學你也就想跑也跑不掉了XD。 接下來,讓我們進入正題: 鏈結串列(linked list) Image Source:Applications of linked list data structure - GeeksforGeeks 以上是鏈結串列(linked list)的結構圖,主要可分為 H...




