設計一整套能解決問題的程式就像蓋房子,要首先構建好房子的整體框架,然後再進行部分性的房間的布局規劃,最後進行細節的設計,這種設計方法就是自頂向下,逐步求精的設計思路。我們設計程式也要按照這種方式方法來設計,面對一項任務,先經過初步考慮,把整個任務細化為幾個子任務,如果這幾個子任務還不能一步實現完成任務,那就再把子任務進行細分,直到最後實現任務。這種分層解決問題的方式即嚴謹又方便。當設計好層次結構後,再對每個層級進行模組化的設計,完成每個層級的部分功能。最後再經過對層級及各模組進行結構化編碼、巢狀,最終實現整套程式的邏輯結構。
最後的結構化程式為了方便構建整體框架,把結構化程式分為了三種方式,順序結構、選擇結構、迴圈結構。顧名思義,順序化結構就是一種按照執行順序依次執行的一條線方式。選擇結構就是有判斷選擇的方式,判斷選擇一般只分為兩類,是或者否,根據判斷條件是否直接執行下一步操作。而迴圈結構則是根據條件判定是否要重新迴圈上一步操作,如果沒滿足條件則一直迴圈執行。為了更加深入的理解三種結構在程式設計中的具體表現,接下來對三種結構分別進行細化說明。
按順序結構執行的語句一般有以下幾種:
1.賦值語言,就是給乙個變數賦予相應的值,格式為:變數=表示式。例如:x=89。
2.函式呼叫語句,就是按照函式名對應的函式操作對括號裡面的引數進行相應的運算,得出結果。格式為:函式名(引數1,引數2...)。例如:printf()。意思是將()裡面的數值輸出顯示在標準輸出顯示器上。這裡要對函式的意義做一些補充知識點:函式是一種對應關係,有的函式(對應關係是已經寫好的成熟的)是被放在庫函式裡面的,只需要輸入函式名和()就能直接運用這種對應關係輸出結果,常用的簡單的函式都是放在庫函式裡面,一般直接用函式呼叫語句就可以,我們寫的一段段的**完成的模組化的功能用{}括起來的整體也可以理解為乙個函式,這種對應關係是新建立的自行編輯定義的函式。程式開頭一般都會寫到的乙個語句#include就是編譯預處理命令,它的作用就是把檔案stdio.h裡面的庫函式執行**先提前調出來,方便給程式裡面用到的所有庫函式語言對應使用,由此也就知道在安裝c語言執行軟體的時候安裝包會把所有的庫函式放在stdio.h這個檔案裡面。庫函式會有哪些了?下一章我會專門整理出前期可能需要用到各種表。
3.表示式語句,就是直接的乙個表示式,比如x+y。
4.復合語句,就是函式呼叫語句裡面提到過的模組化的功能用{}括起來的乙個整體,它是有許多語句組合而成能夠整體來看完成一項功能的一段程式。
5.字元輸入/輸出函式,就是能夠在這段程式裡將字元輸出顯示在標準顯示器上或者將字元從標準輸入裝置鍵盤上將字元輸入的函式。字元輸出函式就是putchar(),輸入函式就是getchar()。強調一點就是這兩個函式每次只能輸入輸出乙個字元,而且只是字元。
6.格式輸入/輸出函式,這個函式就是重點語句函式了,因為它用到的非常頻繁。他跟字元輸入輸出函式不一樣的地方就是字元函式只能輸入輸出字元,格式函式能夠輸入輸出所有資訊。格式輸出函式的格式:printf(格式控制字串,輸出項表),格式控制字串用來規定輸出資訊的格式,比如整數或者字元,輸出項表就是要輸出的內容了,它們兩個一一對應,比如有三個格式控制字串,就有三個對應的輸出項表。每乙個格式控制字串前面加乙個%號來表示它,不然搞混了,然後它們之間用,來隔開,所有的格式控制字串用雙引號「」括起來,比如printf("%d,%c,%f",x,y,z)。%號後面的d,c,f就代表要輸出的格式,下面我會列張表說出不同的格式表示的意思。前面的那個函式意思就是輸出x,y,z三個數值在顯示器上,輸出的格式分別是d,c,f。格式表示如下表
輸入函式和輸出函式類似,格式是:scanf(格式控制字串,輸入項首位址表),它和輸出函式不一樣的地方是它的輸入項首位址表前面要加乙個符號&,其他詳細的規則格式這裡就先不提了,現在能看懂輸入輸出函式的表示就可以。
選擇結構是通過對給定條件進行判斷決定所要執行的操作。分為三種選擇結構語句,單分支選擇語句,雙分支選擇語句,多分支選擇語句。
2.雙分支選擇語句的形式是:if(表示式) 語句1;
else 語句2;
意思就是如果()裡面的表示式是真的(非0),則執行語句1的操作,否則執行語句2的操作。再執行接下來的語句。這種語句可以實現巢狀,就是一層套一層的形式不斷判斷條件往下級判斷。這種雙分支選擇語句還有一種特殊情況,就是這樣一種形式:if(表示式) 語句1;
else if(表示式2) 語句2;
else if(表示式3) 語句3;
這種形式的意思是如果表示式成立,則執行語句1,否則判斷表示式2成立不,如果成立,則執行語句2,否則繼續往下判斷,當表示式成立則執行對應的語句後,結束整個判斷。
3.多分支選擇語句的形式是:switch(表示式)
case 常量表示式1:語句1;break;
case 常量表示式2:語句2;break;
case 常量表示式3:語句3;break;
[default:語句組;[break;]]
意思就是依次對比常量表示式1,2,3等等看是否和switch後面的表示式相同,相同的話就執行對應的後面的語句1,2,3。如果都不相同的話就預設執行default後面的語句組。這種形式也可巢狀,就是一層套一層的進行條件判斷。
迴圈結構同樣包括三種迴圈語句,當型迴圈語句,直到型迴圈語句,次數型迴圈語句。和選擇結構的三種不同語句不太相同,迴圈語句的三種結構相互之間基本都可以互通簡化,差別不是很大,只是簡化版或者複雜版的關係。
1.當型迴圈結構(while型語句)的格式:while(表示式)
語句表示式一般情況是乙個條件判斷,當條件成立時為真(非0),不成立時為假(0),意思就是當表示式條件成立時就執行下面的語句,然後再判斷表示式繼續迴圈,直到表示式條件為假則跳出迴圈。
2.直到型迴圈結構(do-while語句)的格式:do 語句;
while(表示式)
意思是先執行語句,然後再判斷表示式的條件是不是成立,如果成立,則繼續執行上面的語句,直到表示式條件不成立就跳出迴圈語句。它與當型迴圈結構的區別是它是先執行一遍語句,再判斷條件。
3.次數型迴圈語句(for語句)的格式:for(表示式1;表示式2;表示式3)
語句;意思是先執行表示式1,一般表示式1是先對乙個變數賦乙個初值,然後判斷表示式2是不是成立,表示式2一般是個判斷條件,如果表示式2成立,則執行語句,執行完語句後再執行表示式3(表示式3一般是對變數改變一定的數,讓迴圈趨近於結束),執行完表示式3後再執行語句之後再判斷表示式2,直到表示式2不成立,則迴圈結束,跳出迴圈。需要注意的是用for語句後面括號裡面的表示式1,2,3之間的;號不可以省略。
4.迴圈語句裡面還有兩種語句用於結束迴圈,break語句和continue語句。這兩種語句一般都在if語句後面,意思是當一定的條件成立的時候,就結束迴圈。它們兩個的區別在於當執行break語句時跳出的是整個迴圈語句,就是整個迴圈語句不再執行,而執行continue語句時跳出的只是當前迴圈語句裡面的迴圈而重新判斷一下迴圈條件。
結構化程式設計最主要的就是搞清楚這三種結構化設計方式以及具體執行它們的語句,本章學習結束。
結構化 半結構化和非結構化資料
在實際應用中,我們會遇到各式各樣的資料庫如nosql非關聯式資料庫 memcached,redis,mangodb rdbms關聯式資料庫 oracle,mysql等 還有一些其它的資料庫如hbase,在這些資料庫中,又會出現結構化資料,非結構化資料,半結構化資料,下面列出各種資料型別 結構化資料 ...
結構化 半結構化和非結構化資料
在實際應用中,我們會遇到各式各樣的資料庫如nosql非關聯式資料庫 memcached,redis。mangodb rdbms關聯式資料庫 oracle,mysql等 另一些其他的資料庫如hbase,在這些資料庫中。又會出現結構化資料。非結構化資料。半結構化資料,以下列出各種資料型別 結構化資料 可...
結構化 半結構化和非結構化問題
結構化程度 是指對某一決策問題的決策過程 決策環境和規律,能否用明確的語言 數學的或邏輯學的 形式的或非形式的 定量的或定性的 給予說明或描述清晰程度或準確程度。按照決策問題的結構化程度不同把決策問題分成結構化問題 半結構化問題和非結構化問題三種型別。1 結構化決策問題 結構化決策問題相對比較簡單 ...