SlideShare a Scribd company logo
1 of 26
Download to read offline
程式設計概論
 運算思維與程式設計
 程式語言導論
 編譯連結工具
 基本程式邏輯
 程式開發流程
 體驗程式設計
Revised on July 20, 2021
Make
each
day
count
 電腦是⼀種硬體 (hardware);程式是軟體 (software),軟體使用電腦
硬體資源執行特定作業
 軟體與硬體是相輔相乘的。沒有硬體,軟體沒有可執行的平台,有如
英雄無用武之地;少了軟體,也會大大降低了硬體的實用性與方便性
 依軟體的用途和特性,可概分為系統軟體和應用軟體
 系統軟體是指用於對電腦資源的管理、監控和維護,以及對各類應用軟體
進行解釋和運行的軟體,例如作業系統
 文書處理、試算表、電子郵件、臉書等則屬於應用軟體類
軟體與硬體
Make
each
day
count
 具備運用運算工具之思維能力,藉以分析問題、發展解題方法,並進
行有效的決策,是⼀種普世思維方法與技能
運算思維 (Computational Thinking) 1/3
3
圖片來源 https://www.bbc.co.uk/bitesize/guides/zp92mp3/revision
化整為零
問題拆解
尋找規律性
異中求同
抽象化
化繁為簡
按部就班
演算法
將一個任務或問題拆解成數個步驟或部分
探索問題的規律,並找出模式做測試
設計出能夠解決類似問題並能夠被重複
執行的程序
找出最主要導致此模式的原則或因素
Make
each
day
count
 自動找錢機
 問題拆解
 找多少錢
 如何找錢
 模式辨別
 錢幣面額組合
 面額最大的優先
 抽象化
 找錢程序為⼀系列比較與減法運算
運算思維 (Computational Thinking) 2/3
4
Make
each
day
count
 演算法:陳述問題解決之步驟 (想法)
 資料:消費金額、付錢金額、找錢金額、幣值類型
 運算:數值四則運算
 判斷
運算思維 (Computational Thinking) 3/3
5
商品價格
NT324
找錢?
NT676
計算500元數量
676/500=1餘額176
計算100元數量
176/100=1餘額76
計算50元數量
76/50=1餘額26
計算10元數量
26/10=2餘額6
計算5元數量
6/5=1餘額1
計算1元數量
1/1=1餘額0
Make
each
day
count
 運算思維是程式設計課程要培養的重要核心能力
 程式設計 (programming) 是給出解決特定問題之程式的過程,學習如
何應用程式語言,根據你的想法,完成特定作業
 找出年紀最小的同學?
 兩兩比對生日,年紀小的繼續兩兩比對
 分成幾組,先找出各組年紀最小的同學,再出來比對
 設臨界值篩選,調整臨界值再篩選
 …
 程式設計只是輔助工具,領域知識才是核心競爭力
程式設計
6
可使用不同的程式語言 領域知識 滿足功能需求
Make
each
day
count
 程式語言 (programming language) 顧名思義就是設計程式時所使用的
語言
 針對不同應用需求,各種程式語言不斷被設計出來
 List of Programming Languages
https://en.wikipedia.org/wiki/List_of_programming_languages
 直譯式 (Interpreted language) vs. 編譯式 (Compiled language)
 程序式 (Procedural language) vs. 物件導向式 (Object-oriented language)
https://en.wikipedia.org/wiki/List_of_programming_languages_by_type
 本文式 vs. 圖控式程式語言
程式語言
7
Make
each
day
count
 語言是⼈與⼈之間主要的溝通工具,每⼀款 CPU 也有它懂的語言,
稱為機器語言 (machine language),所以,要讓電腦執行工作,我
們必須使用它懂的機器語言來告訴它要作什麼
 機器語言是以 0 和 1 二進位組成的指令碼,稱為機器碼 (machine
code),即是驅動硬體電路的數位訊號組合
80 3E 0000 R 0A
73 04
FE 06 0000 R
機械語言 1/2
8
Make
each
day
count
 早期電腦運用打孔卡當做電腦程式和資料的主要輸入媒介
機械語言 2/2
9
Make
each
day
count
 機器碼對於電腦來說是它的⺟語,但是,對於我們來說,這和天書
並沒有什麼不同
 使用輔助記憶碼 (mnemonics) 來表示特定機器語言的操作,與機器
語言指令集是⼀⼀對應的,也稱為低階語言
cmp a, 10
jnc @f
inc a
@@:
組合語言
10
Make
each
day
count
 以⼈類的日常語言為基礎的⼀種編程語言,使用⼀般⼈易於接受的
文字來表示,使程式編寫更容易,亦有較高的可讀性
 由於早期電腦產業的發展主要在美國,因此⼀般的高階語言都是以
英語為藍本
 C 語言
int a=0;
if (a<10) a++;
 Python 語言
if (a<10):
a += 1
高階語言
11
Make
each
day
count
 透過拖曳、組合各種「指令積木」就能完成程式
 初學者可專注於訓練邏輯思考,不需先學習語言語法便能設計程式
 Scratch
 App Inventor
積木式程式語言
12
Make
each
day
count
 Portability (可攜性)
 要將軟體移植到不同平台時,需多少時間及⼈力成本
 Efficiency (執行效能)
 程式作業時間⻑短
 Readability (易讀性)
高階語言 vs. 低階語言
13
Make
each
day
count
 機器碼是硬體唯⼀能執行的指令碼,其它形式的程式語言都必須轉換
成機械碼
 組譯器 (Assembler) 是將組合語言轉換為機械碼的工具程式
 編譯器 (Compiler) 與直譯器 (Interpreter)是將高階語言轉換為機械碼
的工具程式
機械語言 組合語言 高階語言
80 3E 0000 R 0A cmp a, 10 int a=0;
73 04 jnc @f if (a<10) a++;
FE 06 0000 R inc a
@@:
編譯器、直譯器與組譯器
Compiler + Linker
Assembler + Loader
14
Make
each
day
count
 循序 (sequence)
依先後順序,⼀個步驟接著⼀個步驟依序執行
基本程式邏輯 1/3
15
Make
each
day
count
 反覆 (iteration)
部分解題步驟需要反覆執行,直到符合或是不符合某⼀條件式時,才
會離開重複執行的部份;也常被稱為「迴圈 (Loop)」
基本程式邏輯 2/3
16
Make
each
day
count
 分支選擇 (branch)
依據不同的條件值,選擇不同的解題步驟執行
基本程式邏輯 3/3
17
Make
each
day
count
Define the
program
objectives
Analysis
Design the
program
Write the
code
Compile
Test &
debug the
program
Maintain
& modify
the
program
程式開發流程
 定義問題
 分析問題
 設計演算法
 開發程式
 測試與維護
Make
each
day
count
 開始/結束
 程序處理
 輸入或輸出
 連結符號
 儲存資料
 判斷比較
 工作流向符號
 預設處理作業
 文件
 磁碟
 流程圖是使用不同的圖形、線條及箭頭來描述問題的解決步驟及進行
的順序
流程圖
19
Make
each
day
count
 https://scratch.mit.edu
程式設計體驗 - 打磚塊遊戲 1/6
20
Make
each
day
count
 設計舞台
 刪除貓咪角色
 畫新角色
 名稱 block
 ⻑方形 75 * 30
 4 種顏色造形
程式設計體驗 - 打磚塊遊戲 2/6
21
Make
each
day
count
 畫新角色
 名稱 ball
 圓形 25 * 25
 藍色
 畫新角色
 名稱 bar
 圓形 60 * 10
 黑色
 在背景底部畫⼀條⽔平紅線
程式設計體驗 - 打磚塊遊戲 3/6
22
Make
each
day
count
 bar程式碼
程式設計體驗 - 打磚塊遊戲 4/6
23
Make
each
day
count
 block 程式碼
程式設計體驗 - 打磚塊遊戲 5/6
24
Make
each
day
count
 ball 程式碼
程式設計體驗 - 打磚塊遊戲 6/6
25
Make
each
day
count
 Blockly Games
 https://blockly-games.appspot.com/?lang=zh-hant
 Code Studio
 https://studio.code.org/courses
訓練邏輯思考能力
26

More Related Content

Similar to 程式設計概論

计算机软件系统
计算机软件系统计算机软件系统
计算机软件系统lnptao
 
计算机软件系统
计算机软件系统计算机软件系统
计算机软件系统lnptao
 
[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階Simen Li
 
An overview of virtual machine architectures
An overview of virtual machine architecturesAn overview of virtual machine architectures
An overview of virtual machine architecturesLishi He
 
作業系統與硬體元件的驅動軟體開發法則 (Operating Systems and Software Design Principles for Har...
作業系統與硬體元件的驅動軟體開發法則 (Operating Systems and Software Design Principles for Har...作業系統與硬體元件的驅動軟體開發法則 (Operating Systems and Software Design Principles for Har...
作業系統與硬體元件的驅動軟體開發法則 (Operating Systems and Software Design Principles for Har...William Liang
 
Computer
ComputerComputer
Computeryao6263
 
教學投影片01_Vb2005
教學投影片01_Vb2005教學投影片01_Vb2005
教學投影片01_Vb2005洋夫 葉
 
第1課常用的作業系統
 第1課常用的作業系統 第1課常用的作業系統
第1課常用的作業系統何 承謙
 
软件工程 第七章
软件工程 第七章软件工程 第七章
软件工程 第七章浒 刘
 
Se2009 ch8
Se2009 ch8 Se2009 ch8
Se2009 ch8 浒 刘
 
软件工程 第八章
软件工程 第八章软件工程 第八章
软件工程 第八章浒 刘
 
ICT-old-ch14-converted.pptx
ICT-old-ch14-converted.pptxICT-old-ch14-converted.pptx
ICT-old-ch14-converted.pptxliutommy1
 
什麼是API
什麼是API什麼是API
什麼是APICloud Wu
 

Similar to 程式設計概論 (20)

计算机软件系统
计算机软件系统计算机软件系统
计算机软件系统
 
计算机软件系统
计算机软件系统计算机软件系统
计算机软件系统
 
[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階
 
An overview of virtual machine architectures
An overview of virtual machine architecturesAn overview of virtual machine architectures
An overview of virtual machine architectures
 
C++
C++C++
C++
 
作業系統與硬體元件的驅動軟體開發法則 (Operating Systems and Software Design Principles for Har...
作業系統與硬體元件的驅動軟體開發法則 (Operating Systems and Software Design Principles for Har...作業系統與硬體元件的驅動軟體開發法則 (Operating Systems and Software Design Principles for Har...
作業系統與硬體元件的驅動軟體開發法則 (Operating Systems and Software Design Principles for Har...
 
Test
TestTest
Test
 
Computer
ComputerComputer
Computer
 
Jobforcompal
JobforcompalJobforcompal
Jobforcompal
 
教學投影片01_Vb2005
教學投影片01_Vb2005教學投影片01_Vb2005
教學投影片01_Vb2005
 
第1課常用的作業系統
 第1課常用的作業系統 第1課常用的作業系統
第1課常用的作業系統
 
软件工程 第七章
软件工程 第七章软件工程 第七章
软件工程 第七章
 
软件工程2010
软件工程2010软件工程2010
软件工程2010
 
第1章 概论
第1章 概论第1章 概论
第1章 概论
 
Eb131 ch05
Eb131 ch05Eb131 ch05
Eb131 ch05
 
Se2009 ch8
Se2009 ch8 Se2009 ch8
Se2009 ch8
 
软件工程 第八章
软件工程 第八章软件工程 第八章
软件工程 第八章
 
ICT-Core-Ch1
ICT-Core-Ch1ICT-Core-Ch1
ICT-Core-Ch1
 
ICT-old-ch14-converted.pptx
ICT-old-ch14-converted.pptxICT-old-ch14-converted.pptx
ICT-old-ch14-converted.pptx
 
什麼是API
什麼是API什麼是API
什麼是API
 

More from 吳錫修 (ShyiShiou Wu)

mbot2.0教學-陀螺儀與三軸加速計應用.pdf
mbot2.0教學-陀螺儀與三軸加速計應用.pdfmbot2.0教學-陀螺儀與三軸加速計應用.pdf
mbot2.0教學-陀螺儀與三軸加速計應用.pdf吳錫修 (ShyiShiou Wu)
 
mbot2.0教學-四路顏色感測器應用.pdf
mbot2.0教學-四路顏色感測器應用.pdfmbot2.0教學-四路顏色感測器應用.pdf
mbot2.0教學-四路顏色感測器應用.pdf吳錫修 (ShyiShiou Wu)
 
mbot2.0教學-mblock5開發mBot 2.0應用程式.pdf
mbot2.0教學-mblock5開發mBot 2.0應用程式.pdfmbot2.0教學-mblock5開發mBot 2.0應用程式.pdf
mbot2.0教學-mblock5開發mBot 2.0應用程式.pdf吳錫修 (ShyiShiou Wu)
 

More from 吳錫修 (ShyiShiou Wu) (20)

mbot2.0教學-陀螺儀與三軸加速計應用.pdf
mbot2.0教學-陀螺儀與三軸加速計應用.pdfmbot2.0教學-陀螺儀與三軸加速計應用.pdf
mbot2.0教學-陀螺儀與三軸加速計應用.pdf
 
mbot2.0教學-使用makeblock雲服務.pdf
mbot2.0教學-使用makeblock雲服務.pdfmbot2.0教學-使用makeblock雲服務.pdf
mbot2.0教學-使用makeblock雲服務.pdf
 
mbot2.0教學-局域網路傳輸應用.pdf
mbot2.0教學-局域網路傳輸應用.pdfmbot2.0教學-局域網路傳輸應用.pdf
mbot2.0教學-局域網路傳輸應用.pdf
 
mbot2.0教學-四路顏色感測器應用.pdf
mbot2.0教學-四路顏色感測器應用.pdfmbot2.0教學-四路顏色感測器應用.pdf
mbot2.0教學-四路顏色感測器應用.pdf
 
mbot2.0教學-聲光控制應用.pdf
mbot2.0教學-聲光控制應用.pdfmbot2.0教學-聲光控制應用.pdf
mbot2.0教學-聲光控制應用.pdf
 
mbot2.0教學-光感測器與LED應用.pdf
mbot2.0教學-光感測器與LED應用.pdfmbot2.0教學-光感測器與LED應用.pdf
mbot2.0教學-光感測器與LED應用.pdf
 
mbot2.0教學-超音波感測應用.pdf
mbot2.0教學-超音波感測應用.pdfmbot2.0教學-超音波感測應用.pdf
mbot2.0教學-超音波感測應用.pdf
 
mbot2.0教學-移動控制.pdf
mbot2.0教學-移動控制.pdfmbot2.0教學-移動控制.pdf
mbot2.0教學-移動控制.pdf
 
mbot2.0教學-mblock5開發mBot 2.0應用程式.pdf
mbot2.0教學-mblock5開發mBot 2.0應用程式.pdfmbot2.0教學-mblock5開發mBot 2.0應用程式.pdf
mbot2.0教學-mblock5開發mBot 2.0應用程式.pdf
 
mbot2.0教學-組裝與測試.pdf
mbot2.0教學-組裝與測試.pdfmbot2.0教學-組裝與測試.pdf
mbot2.0教學-組裝與測試.pdf
 
Python元組,字典,集合
Python元組,字典,集合Python元組,字典,集合
Python元組,字典,集合
 
Python函式
Python函式Python函式
Python函式
 
Python串列資料應用
Python串列資料應用Python串列資料應用
Python串列資料應用
 
Python 迴圈作業
Python 迴圈作業Python 迴圈作業
Python 迴圈作業
 
Python分支作業
Python分支作業Python分支作業
Python分支作業
 
Python基本資料運算
Python基本資料運算Python基本資料運算
Python基本資料運算
 
建置Python開發環境
建置Python開發環境建置Python開發環境
建置Python開發環境
 
micro:bit加速度感測應用
micro:bit加速度感測應用micro:bit加速度感測應用
micro:bit加速度感測應用
 
C語言檔案處理
C語言檔案處理C語言檔案處理
C語言檔案處理
 
C語言列舉與聯合
C語言列舉與聯合C語言列舉與聯合
C語言列舉與聯合
 

程式設計概論