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

What's hot

C Programming For Embedded Systems
C Programming For Embedded SystemsC Programming For Embedded Systems
C Programming For Embedded Systems
Ganesh Samarthyam
 
Voice Based Home Automation
Voice Based Home AutomationVoice Based Home Automation
Voice Based Home Automation
Sumukh Athrey
 
Periféricos No Estandarizados
Periféricos No EstandarizadosPeriféricos No Estandarizados
Periféricos No Estandarizados
Rosy Estrada
 
DTMF BASED MOBILE CONTROLL ROBOT SYSTEM
DTMF BASED MOBILE CONTROLL ROBOT SYSTEMDTMF BASED MOBILE CONTROLL ROBOT SYSTEM
DTMF BASED MOBILE CONTROLL ROBOT SYSTEM
iindranilsarkar
 

What's hot (20)

C Programming For Embedded Systems
C Programming For Embedded SystemsC Programming For Embedded Systems
C Programming For Embedded Systems
 
Closing the RISC-V compliance gap via fuzzing
Closing the RISC-V compliance gap via fuzzingClosing the RISC-V compliance gap via fuzzing
Closing the RISC-V compliance gap via fuzzing
 
Getting Started With Linux Administration
Getting Started With Linux AdministrationGetting Started With Linux Administration
Getting Started With Linux Administration
 
Embedded Systems using Microwave oven
Embedded Systems using  Microwave ovenEmbedded Systems using  Microwave oven
Embedded Systems using Microwave oven
 
Microprocessor-Based Automatic Door Opener
Microprocessor-Based Automatic Door OpenerMicroprocessor-Based Automatic Door Opener
Microprocessor-Based Automatic Door Opener
 
Device Drivers
Device DriversDevice Drivers
Device Drivers
 
Electronics Notice Board Notice board using Wi-Fi Report
Electronics Notice Board Notice board using Wi-Fi ReportElectronics Notice Board Notice board using Wi-Fi Report
Electronics Notice Board Notice board using Wi-Fi Report
 
Voice Based Home Automation
Voice Based Home AutomationVoice Based Home Automation
Voice Based Home Automation
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to Arduino
 
Periféricos No Estandarizados
Periféricos No EstandarizadosPeriféricos No Estandarizados
Periféricos No Estandarizados
 
AUTOMATIC BELL FOR COLLEGE
AUTOMATIC BELL FOR COLLEGEAUTOMATIC BELL FOR COLLEGE
AUTOMATIC BELL FOR COLLEGE
 
Embedded systems
Embedded systemsEmbedded systems
Embedded systems
 
Arduino程式除錯
Arduino程式除錯Arduino程式除錯
Arduino程式除錯
 
Arm processor
Arm processorArm processor
Arm processor
 
Arduino presentation by_warishusain
Arduino presentation by_warishusainArduino presentation by_warishusain
Arduino presentation by_warishusain
 
Latest ECE Projects Ideas In Various Electronics Technologies
Latest ECE Projects Ideas In Various Electronics TechnologiesLatest ECE Projects Ideas In Various Electronics Technologies
Latest ECE Projects Ideas In Various Electronics Technologies
 
Introduction to Embedded System
Introduction to Embedded SystemIntroduction to Embedded System
Introduction to Embedded System
 
DTMF BASED MOBILE CONTROLL ROBOT SYSTEM
DTMF BASED MOBILE CONTROLL ROBOT SYSTEMDTMF BASED MOBILE CONTROLL ROBOT SYSTEM
DTMF BASED MOBILE CONTROLL ROBOT SYSTEM
 
Linux Device Tree
Linux Device TreeLinux Device Tree
Linux Device Tree
 
Arduino & NodeMcu
Arduino & NodeMcuArduino & NodeMcu
Arduino & NodeMcu
 

Similar to 程式設計概論

计算机软件系统
计算机软件系统计算机软件系统
计算机软件系统
lnptao
 
计算机软件系统
计算机软件系统计算机软件系统
计算机软件系统
lnptao
 
An overview of virtual machine architectures
An overview of virtual machine architecturesAn overview of virtual machine architectures
An overview of virtual machine architectures
Lishi He
 
软件工程 第七章
软件工程 第七章软件工程 第七章
软件工程 第七章
浒 刘
 
Se2009 ch8
Se2009 ch8 Se2009 ch8
Se2009 ch8
浒 刘
 

Similar to 程式設計概論 (20)

系統程式 -- 第 1 章
系統程式 -- 第 1 章系統程式 -- 第 1 章
系統程式 -- 第 1 章
 
C+
C+C+
C+
 
C#
C#C#
C#
 
系統程式 -- 第 1 章 系統軟體
系統程式 -- 第 1 章 系統軟體系統程式 -- 第 1 章 系統軟體
系統程式 -- 第 1 章 系統軟體
 
计算机软件系统
计算机软件系统计算机软件系统
计算机软件系统
 
计算机软件系统
计算机软件系统计算机软件系统
计算机软件系统
 
[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階
 
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
 

More from 吳錫修 (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語言列舉與聯合
 

程式設計概論