層次化程式設計思想(程式設計初學)-以C語言為例
阿新 • • 發佈:2020-12-15
層次化程式設計思想
本人學生,認知短陋之處,請海涵指正。
層次化
要設計程式必須要能精準的掌握自己程式碼的走向,要確保每一行程式碼都在掌控之中,但是,實際編寫程式碼時幾千幾萬行的程式碼,又如何能盡在掌控呢?
要回答這個問題,不妨先看看下面的情景:
假如現在學校要給同學們注射疫苗,讓需要注射疫苗的同學知曉如何到校醫院注射疫苗,如果你是副校長接管此工作,你該怎麼做?
方法一:你挨個同學挨個同學的詢問是否需要注射疫苗,然後告訴需要注射的同學何時何地注射疫苗。
方法二:集結全校6000名學生到操場集合,然後講明此事。
方法三:你把每個學院的副院長找來開會,講清楚工作要求,然後各副院長再回到自己學院,跟各專業輔導員開會講清楚工作要求,各輔導員再找各班班長開會講明工作要求,各班長然後通知各位同學注射疫苗的具體要求。
很顯然,你會採用方法三,這種層次化的控制結構。
那這和我們編寫程式碼有什麼關係呢?我們編寫程式碼,就好比我們上任一個新建學校的校長,什麼機構都沒有,只有學生和老師。現在我們要開展工作,是不是首先要設立好學院、專業、班級,我們設計程式也是如此,這樣才能最簡單的控制你的每一行程式碼。
例如下面一個列印一個等腰三角形
//列印n個字元 void printN(char c,int num){ int i=0; for(i=0;i<num;i++) printf("%c",c); } //在一行裡面列印兩段字元 void oneLineOnePoint(int len,char c1,char c2,int point1){ printN(c1,point1); printN(c2,len-point1); } //在一行裡面列印三段字元 void oneLineTwoPoint(int len,char c1,char c2,int point1,int point2){ printN(c1,point1); printN(c2,point2-point1); printN(c1,len-point2); } //列印三角形 void isoTria(char c,int height){ int lines=0; int length=2*(height-1)+1; for(lines=0;lines<height;lines++){ oneLineTwoPoint(length,' ','*',height-1-lines,height+lines); printf("\n"); } }
肯定有人覺得我在畫蛇添足,直接一個函式打印出來不就完事了嗎?
那要是再讓你列印一個矩形,一個菱形呢?你繼續一個一個幹嗎?
這前面三個函式就好比班級、專業、學院,列印三角形就是工作,下次再接手其他工作時就可以沿用前面三個函式。