狠狠撸

狠狠撸Share a Scribd company logo
程式设计概论
? 運算思維與程式設計
? 程式語言導論
? 編譯連結工具
? 基本程式邏輯
? 程式開發流程
? 體驗程式設計
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

程式设计概论