20172330 2017-2018-2 《程序設計與數據結構》第一週學習總結

20172330 2017-2018-2 《程序設計與數據結構》第一週學習總結

教材學習內容總結

本週的學習內容爲是軟件工程,這是一門關於高質量軟件開發的技術和理論的學科,用來控制開發過程,實現高質量的軟件。html

概述

  • 軟件工程的目標包括如下:
    1.解決正確性問題
    2.按時並在預算以內給出解決方案。
    3.給出高質量的解決方案
    4.以合情合理的方式完成上面問題。
  • 高質量軟件的特徵:
    算法

  • 數據結構
    數據結構是計算機存儲、組織數據的方式。
    程序 = 數據結構 + 算法
    軟件 = 程序 + 軟件工程
  • 關鍵概念包括有:
    1.可靠的軟件不多發生故障,即便發生了故障,也能夠將該故障的影響降到最低。
    2.軟件系統必須通過精心設計、編碼和文檔說明,以便爲開發人員、維護人員和用戶提供支持。
    3.軟件必須有效使用諸如CPU時間和內存之類的資源。
    4.質量特徵必須優先考慮,並儘量的最大化。
    5.棧可用於顛倒數據集的順序。
    6.隊列能夠保持其數據的順序。數據結構

算法分析

  • 是對一個算法須要多少計算時間和存儲空間做定量的分析。算法是解題的步驟,能夠把算法定義成解一肯定類問題的任意一種特殊的方法。算法分析是計算機科學的一個基礎,並涉及多種技術和概念。
  • 算法效率是指算法執行的時間,算法執行時間需經過依據該算法編制的程序在計算機上運行時所消耗的時間來度量,一般是CPU的使用時間。
  • 增加函數表示問題(n)大小與咱們但願最優化的值之間的關係。該函數表示了該算法的時間複雜度(CPU的使用時間)或空間複雜度(內存空間)。
    函數

  • 大O記法:經常使用大O表示法表示時間複雜性,注意它是某一個算法的時間複雜性。大O表示只是說有上界,由定義若是f(n)=O(n),那顯然成立f(n)=O(n^2),它給你一個上界,但並非上確界,但人們在表示的時候通常都習慣表示前者。此外,一個問題自己也有它的複雜性,若是某個算法的複雜性到達了這個問題複雜性的下界,那就稱這樣的算法是最佳算法。學習

教材學習中的問題和解決過程

  • 問題1:軟件工程和程序設計關係?
  • 問題1解決:軟件工程包含程序設計,已經不僅僅是侷限於編寫代碼,而是應該考慮程序的簡潔性,實用性。簡單來講,軟件工程考慮的要更加全面具體。

課後做業

  • 習題2.1求階次

a.10n^2+100n+1000優化

解:階次是n^2。
b.10n^3-7編碼

解:n^3設計

c. 2^n+100n^33d

解:2^nhtm

d. n^2logn

解:n^2logn

  • 習題2.4

for(int count = 0 ; count < n ; count++)
for(int count2 = 0 ; count2 < n ; count2 = count2 + 2)
{
System.out.println(count,count2);
}
}
解:外層循環次數爲n,內層循環爲n/2,因此增加函數f(n) = n^2 /2,因此階次是O(n^2)。

  • 習題2.5

for(int count = 0 ; count < n ; count++)
for(int count2 = 1 ; count2 < n ; count2 = count2 * 2)
{
System.out.println(count,count2);
}
}
解:內層循環是log2n,外層循環是n,因此增加函數是nlog2n,因此階次爲O(nlog2n)。

其餘(感悟、思考等,可選)

新學期但願可以好好學習,繼續努力。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 0/0 1/1 10/10

參考:軟件工程軟件的估計爲何這麼難軟件工程 估計方法

  • 計劃學習時間:10小時

  • 實際學習時間:10小時

參考資料

  • <軟件結構與數據結構>
相關文章
相關標籤/搜索