1. 程序的組成
程序 (program):(1)由一系列定義計算機如何執行計算的指令組成。(本質)
(2)程序(算法)由對象、表達式和語句組成。(元素)
1.1程序的指令類型
- 輸入 (input): 從鍵盤、文件、網絡或者其他設備獲取數據。
- 輸出 (output): 在屏幕上顯示數據,將數據保存至文件,通過網絡傳送數據,等等。
- 數學 (math): 執行基本的數學運算,如加法和乘法。
- 有條件執行 (conditional execution): 檢查符合某個條件后,執行相應的代碼。
- 重復 (repetition): 檢查符合某個條件后,執行相應的代碼。
1.2對象、表達式、語句
- 對象 (object): 變量可以引用的東西。數字、數據結構、函數、類等
- 表達式 (expression): 變量、運算符和值的組合,代表一個單一的結果。
- 語句 (statement): 代表一個命令或行為的一段代碼。賦值、輸入、輸出、打印、選擇/條件(if、else)、迭代/遍歷/循環(for、while)
1.3 數據結構
- 數據結構 (data structure): 一個由關聯值組成的數據集合,通常組織成列表(序列)、元組、字典(映射)等。
2. 程序的結構
順序結構、條件結構、循環結構。
2.1 順序結構
簡單的指令,依次執行程序語句,每條語句只執行一次。無條件判斷和循環重復語句。如賦值、打印等語句。
import math r=float(input('輸入圓的半徑:')) print('圓的面積是:{s: .4f}'.format(s=math.pi*pow(r,2)))
2.2 判斷/選擇(條件)結構
檢測條件,並相應地改變程序行為。
score = float(input('輸入分數(0至100之間):) if score>80: print('成績優秀') elif 70<score<80: print('成績良好') elif 70<score<80: print('成績及格') else: print('不及格')
2.3 判斷/選擇(判斷)結構
重復執行的代碼結構。
#1加到100 sum = 0 for x in range(1, 101): sum = sum + x print(sum) #1加到100 count = 0 result=0 while count<101: result=result+count count+=1 print(result) # 100以內偶數和 x=100 lis = [] result = 0 while x: x=x-1 if x%2 != 0: continue lis.append(x) for i in lis: result +=i #'+','='之間不能有空格 print(result)
3. 算法與程序
算法 (algorithm):算法是逐步解決一類問題或完成一項任務的方法。又或者算法是解決一類問題的通用過程(步驟)。
3.1 算法與程序的區別
- 程序是算法編碼的結果,同一算法通過不同的編程語言產生不同的程序。
4. 編程
編程 (programming):設計程序、編寫程序的過程。
5. 過程
過程 (procedure):涉及時間始末、次序先后,稱之為過程。主體發布動作、主體執行步驟,皆是過程。
6. 結構
結構(Structure): 涉及形狀、位置(前后左右)、布局稱之為結構。
7. 解釋器與編譯器
解釋器 (interpreter): 讀取另一個程序並執行該程序的程序。
編譯器(Compiler):將“一種語言(通常為高級語言)”翻譯為“另一種語言(通常為低級語言)”的程序。
8. 函數
在編程的語境下,函數 (function) 是指一個有命名的、執行某個計算的語句序列 (sequence of statements) 。
8.1 函數與方法
- 方法 (method): 與對象相關聯的函數,並使用點標記法 (dot notation) 調用。
8.2 語法
語法 (syntax) : 語言句子的組成規則,在編程中,語法規定了程序的結構規則
8.3 語句
語句(statement): 語法規定的語言句式,在編程中,語句聲明(statement)了需要做某件事情(判斷、遍歷、循環、迭代),實質是一些指令
9.類
類 (class): 一種程序員自定義的類型。
10.模塊
模塊 (module): 包含了一組相關函數及其他定義的的文件。
11.變量
變量 (variable):變量是指向某個值的名稱(符號)。
12. 條件
條件 (condition): 決定哪個分支會被執行的布爾表達式。
12.1 條件語句
- 條件語句 (conditional statement): 一段根據某個條件決定程序執行流程的語句。
13. 迭代(重復)
迭代 (iteration): 利用遞歸或者循環的方式來重復執行代一組語句的過程。
14. 遍歷(重復)(搜索)
遍歷 (traversal): 對一個序列的所有元素進行迭代,對每一元素執行類似操作。搜索意思與遍歷相近。
14. 1 搜索
搜索 (search): 一種遍歷模式,當找到搜索目標時就停止。
15. 循環(重復)
循環 (loop): 程序中能夠重復執行的那部分代碼。
16. 遞歸(重復)
遞歸 (recursion): 調用正在執行的函數本身的過程。
17.序列
序列 (sequence):一個有序的值的集合,每個值通過一個整數索引標識。
18.元素
元素 (item): 序列中的一個值
19.索引
索引 (index): 用來選擇序列中元素 (如字符串中的字符) 的一個整數值。在 Python 中,索引從 0 開始。
20. 封裝
封裝 (encapsulation): 將一個語句序列轉換成函數定義的過程。
21. 泛化
泛化 (generalization): 使用某種可以算是比較通用的東西 (像變量和形參),替代某些沒必要那么具體的東西 (像一個數字) 的過程。(形參)
22. 接口
接口 (interface): 對如何使用一個函數的描述,包括函數名、參數說明和返回值。
23. 重構
重構 (refactoring): 修改一個正常運行的函數,改善函數接口及其他方面代碼質量的過程。
24. 文檔字符串
文檔字符串 (docstring): 出現在函數定義頂部的一個字符串,用於記錄函數的接口。
25. 計算機科學
計算機科學(Computer Science)研究問題是否可計算,算法是否存在(解決問題的學科)。以抽象為工具來表現過程與數據。
25.1 解決問題的基本思路
-
將事物分類,將大問題分解為小單元(樹)。
26. 抽象
抽象( abstraction): 呈現界面( interface),隱藏事物不必要的細節。
27.引用
引用(reference): 變量和對象之間的關聯稱為引用。引用是一個值,指向某些數據。
參考:
《Python基礎教程》
《用Python解決數據結構和算法》
《計算機科學導論》
《程序員的數學》
《像科學家一樣思考Python》