1.程式設計面向的問題
一切可計算問題都可以用程式的方法解決。ps:這樣程式與計算有關了
1.1程式設計的五個步驟:
a.確定問題可以計算;(問題是可計算)
b.建立問題的數學模型;(不懂)
c.設計演算法和資料結構;(好奇啊)
d.選擇合適的計算機語言編寫程式;
e.除錯執行程式分析結果。
1.2學習程式設計的目的
a.培養基於計算機進行計算思維的意識;
b.培養用計算機語言求解問題的能力;
2.關於計算
計算機就是乙個資料加工廠,如何加工便是通過計算完成的。
2.1什麼是計算
程式設計就是依據問題來選擇我們要進行的計算。
計算是基於規則的符號集合的變換過程。
詳細的解釋是:從乙個按規則組織的符號集合開始,再按照既定的規則一步步地改變這些符號集合,經過有限步驟之後得到乙個確定的結果。
2.2可計算與不可計算
如果輸入引數與輸出引數是對應關係是明確的,則說明這個問題是可計算的。
也有不可計算的問題,比如(圖靈機停機問題,旅行家問題……)
計算機只能完成可計算問題。
2.3計算複雜性
衡量計算的複雜性,從時間複雜度和空間複雜度兩個方面。
計算機只適合可計算並且有限步驟能夠結束的計算
所以,實際問題中比較複雜的問題要分解,分解到計算機可有限步驟內完成的程度。
3.關於演算法
3.1什麼是演算法
是有窮規則的集合,規則規定了解決某一特定型別問題的運算序列。ps:計算的方法,哈哈
運算序列是解決問題的有限步驟。
對實際問題的抽象和形式化表達,或者對複雜問題要分解;
一般問題:分析--抽象--建立模型
事例(兩杯水交換問題)
3.2演算法的特性
演算法是人的思維,不是計算機的思維。
a.有窮性:有限步驟
b.確定性:含義確切,不要有二義性
c.有效性:比如不要0除什麼
d.輸入:有時候可以沒有,但很少
e.輸出:必須要有輸出。
事例(三個套娃),人排序套娃和計算機排序套娃是思維不一樣的,計算機得每個都要比。這樣可以引出對演算法的描述問題
3.3演算法的表示方法
演算法的描述問題是程式設計中非常重要的方面
演算法的描述方法有六種,分別是自然語言、程式語言、偽**、流程圖、n-s圖和pad圖
通常描述演算法的方式有兩種,一種是流程圖,另一種是n-s圖。
偽**隨意但不嚴謹的方法
3.3.1流程圖
流程圖算是比較好的。ps:老大之前也這樣說過,他有不少經驗,所以建議畫流程圖
流程圖通用的符號有,起止框,輸入輸出框,處理框,判斷框,注釋框和流程限,還有連線線。ps:沒有遇到過連線線啊!
3.3.2畫流程圖
任何程式的三部曲:輸入--處理--輸出,而且還必須有開始和結束,所以,開始--輸入--處理--輸出--結束。往往處理框的內容是最多,而且要分解。
3.3.3一定要畫流程圖
流程圖即使演算法的設計,正確的表達演算法。對於複雜問題,不可能拿上**就寫程式。ps:這點對我來說,很有啟示,一定要畫流程圖,在寫**之前,無論是什麼問題
演算法是解題步驟,設計取決於人的創造;
實際問題需要首先分析--抽象--建模,才能有設計算計,那麼抽象和建模怎麼理解呢?問題一
3.4演算法的優化
演算法有很大的優化空間,而優化體現了人的聰明才智。
4.結構化程式設計方法
什麼是好的程式,第一是可讀性好,第二是效率高,這裡著重說第一點,畢竟排得第一。
4.1可讀性好
讓別人看得清晰,過段時間便於讀懂,而且容易擴充套件。
4.2如何做到可讀性好
用三種基本結構、取消goto和結構化設計方法。
任何簡單或複雜的演算法都可以由順序結構、選擇結構和迴圈結構這三種基本結構組合而成,每一種結構都是乙個入口和乙個出口,即單入口單出口。
程式設計方法:
要自頂而下,逐步求精(一步一步分解)
上面的三個結構,然後結構都是獨立存在,任何結構只能有乙個輸入和乙個輸出,這要好好理解。
尤其是對複雜問題分解的時候,要分解分解再分解,細化到程式可以執行的程式,然後每一步的分解都能用三種基本結構去描述
5總結用計算機求解問題的一般方法
過程:問題-程式-指令序列-結果
從問題到程式,應該是先對實際問題抽象、建模,然後再是程式設計。
回答問題一,抽象、建模=可計算+計算複雜性
程式設計=資料結構+演算法+方法
演算法=問題分解+演算法表達+程式實現
程式實現=語言+環境
如果想真正使用計算機,就需要學習程式設計;程式設計的結果最終是需要計算機語言來實現的
問題二:為啥cpu對判斷和賦值的執行不同?要看那本教材?
UML學習 第一節
1 uml的基本組成部分 uml主要有圖 元模型組成,主要包括三個基本構造快 事務 things 關係 relationship 和圖 diagram 主要是設計4種事物,4中關係,10種圖。1.1 四種事物 四種事物分別是 結構事物 行為事物 分組事物 注釋事物。結構事物有七中,分別為 類 介面 ...
iOS UI學習 第一節
day1 檢視程式設計入門 什麼是ui command line dos user inte ce 使用者介面 ios7.0 之後,扁平化 之前,擬物化 ios7.0之後ui發生了扁平化的變化 ios座標體系 ui uikit 是乙個framework框架 1.uiwindow 2.uiview u...
LVS學習 第一節
lvs學習 一.centos 6.8 初始化 lvs直接 壓力較小 虛擬機器基礎配置 配置ip位址段 設定主機模式 6臺虛擬機器 cpu 2u 記憶體 1g 硬碟 20g 網絡卡 2塊 網路型別 主機模式 作業系統安裝 desktop安裝 centos6.8初始配置 1.安裝gui介面,啟動改為 預...