定義

一個有限大小的指令集。

  • 輸入: 外界提供輸入,或不需要輸入.
  • 輸出: 至少產生一個輸出.
  • 明確性: 指令清楚不含糊
  • 有限性: 逐行有限數目的步驟之後停止
  • 有效性: 指令需基本到可實行.

Algorithm exercise

SelectSort

1
2
3
4
5
6
7
8
9
10
11
void SelectSort(int *a, const int n){
for(int i=0; i<n; i++){
int j=i;
for(int k=i+1; k<n; k++>){
if(a[k] < a[j]){
j=k;
}
}
swqp(a[i],a[j])
}
}
閱讀全文 »

介紹

C 和 C++ 有許多共同的特色,並且 改良C 的資料抽象化與繼承

C++ 有效範圍

  • 檔案的有效範圍
    不是在函式定義、類別定義、名稱空間裡出現的宣告,都屬於此範圍。

  • 名稱空間的有效範圍
    標準資料庫(standard-library) 定義在一個 std 的名稱空間裡。

  • 區域有效範圍
    區域 {} 內所宣告的名稱有效範圍僅止於此區塊。

  • 類別有效範圍
    類別相關定義的宣告就屬於該類別的有效範圍。

閱讀全文 »

資料封裝化(data abstraction)

資料封裝化或資訊隱藏(information hiding) 是指 將資料物件的內部程式碼之細節與外界隔絕

資料抽象化(data encapulation)

資料抽象化是 將一個資料物件的規格與它內部實作分開

資料型態(data type)

資料型態是 一些物件以及一組處理這些物件的運算所組成的集合

抽象化資料型態(abstract data type. ADT)

組織過的資料型態,得以將物件、物件之運算兩者的規格,跟物件的實際表示法、運算的實作方法分開

閱讀全文 »

定義

是結構化程式設計(structured programming design) 的一個根本改變,相似處在於,都相信發展一個複雜系統的好方式是各個擊破法 (divide and conquer)。

  • 物件是基本的組成單元。

  • 每一格物件都是某一種型態(type) 或類別(class)。

  • 類別透過繼承(inheritance) 關係與其他類別產生關連。

不使用繼承關係的程式設計就不被視為物件導向程式設計 !!!

演算法分解(algorithmic decomposition)

將軟體視為一個程序(process),並分解成好幾個模組(module),每一個模組代表程序中的一個步驟。

物件導向分解(Object - oriented decomposition)

將軟體視為一個 「定義完整」的物件(objects),該物件所描述的是一個實體(entity)。
物件互動組成一個軟體系統,主要優點是鼓勵軟體的「再使用(reuse)」,形成更富有彈性的軟體。

閱讀全文 »

需求(requirements)

設立一些規格定義任意程式專案的目標。這些規格描述給定的輸入、產出的輸出為何

分析(analysis)

仔細描述出系統需求,把問題分析成數個容意處理的小工作

  • 由下而上(bottom-up)
    沒有結構化的方法,結構鬆散或容易有錯誤的程式片段。

  • 由上而下(top-down)
    規劃完全後將程式分成數個可處理的片段,再針對每個片段進行更低階的細節。

設計(design)

觀察程式需要哪些資料物件(data object) 與運算(operations)

  • 資料物件(data object) => 抽象化資料型態(abstract data type)
  • 運算(operation) => 演算法(algorithm) 規格以及設計策略

改良與編碼

為資料物件(data object) 選擇一種表示法,替處理資料物件的運算設計演算法。

資料物件的表示法會直接決定演算法之效率

閱讀全文 »

前言

Frontend

前端框架的選擇對於項目的成功至關重要。在探索過程中發現, Vue 和 React 兩者都受到廣泛推薦。

React 在開發社群中享有廣泛的支持和擁護,並且擁有龐大的生態系統。這些因素表明 React 是一個穩固、成熟且可靠的選擇。

雖然有部分人認為 React 的學習曲線較陡峭,但對技術的學習充滿熱情,並相信這將是一個有益的挑戰。

  • 學習 React 將提供更多靈活性和創造力,有助於將來開發更複雜的應用程序。

  • Vue 和 React 在某些方面有相似之處,日後如需轉向 Vue ,這些共通點將使過渡變得更加容易。

Backend

選擇後端框架時,希望找到一個功能豐富且強大的解決方案,以滿足比價網站的複雜需求。

經過對不同框架的評估,最終選擇了 Django 作為後端框架。

  • 成熟且廣受歡迎的 Python Web 框架,提供了強大的功能,如內建的數據庫 ORM 、管理後台、用戶身份驗證等。

  • 優雅設計和易於擴展的特性將帶來更高效且流暢的開發體驗。

    閱讀全文 »

SlashCommand (/)指令

SlashCommand 優點

  • 直觀易用:簡單且直觀的方式,可以輕鬆地定義和處理斜線指令
  • 增強互動性:使用者只需在聊天中輸入斜線指令,即可觸發特定功能或操作
  • 減少誤操作:由於斜線指令具有明確的語法,有助於減少誤操作和提供更一致的使用體驗
  • 自動完成和參數驗證:Discord 平台提供自動完成和參數驗證的功能,確保輸入的正確性
  • 支援互動元件:可以與 Discord 的互動元件(例如按鈕、下拉選單等)結合使用

總結而言,SlashCommand 提供了直觀易用、增強互動性、減少誤操作、自動完成和參數驗證,以及支援互動元件等優點,使得開發者能夠更輕鬆地實現功能豐富且交互性強的機器人應用

SlashCommand 範例圖片

Embed 嵌入式訊息 請見 Discord Bot v14 ep.2 (Embed 嵌入式訊息)
閱讀全文 »

Embed 嵌入式訊息

Embed 優點

  • 美觀和結構化的訊息呈現
  • 能夠包含圖像、超連結和字段等多種元素
  • 支援按鈕、反應和選單等互動元素
  • 提供多種自定義選項,如顏色、作者資訊和時間戳
  • Discord.js 提供了方便的 EmbedBuilder 類別,簡化了 Embed 的創建和設置過程

總結來說,Embed 嵌入式訊息在 Discord 中提供了結構化、美觀且具有豐富內容和互動性的訊息展示方式

Embed 範例圖片

如何創建屬於自己的 Discord 機器人 請見 Discord Bot v14 ep.1 (建立一個屬於自己的Discord Bot)
閱讀全文 »

Next主題

優點和特色

  • 美觀的外觀和現代化設計
  • 響應式設計,適應不同尺寸的設備和屏幕
  • 高度可定製性,提供豐富的配置選項和自定義功能
  • 支持多種插件和功能,如內容搜索、社交媒體分享和站點統計
  • 靜態網站生成,快速載入速度,提供更好的用戶體驗和SEO效果
    閱讀全文 »