1. 程式人生 > 其它 >層次化程式設計思想(程式設計初學)-以C語言為例

層次化程式設計思想(程式設計初學)-以C語言為例

技術標籤:c語言函數語言程式設計程式設計

層次化程式設計思想

本人學生,認知短陋之處,請海涵指正。

層次化

要設計程式必須要能精準的掌握自己程式碼的走向,要確保每一行程式碼都在掌控之中,但是,實際編寫程式碼時幾千幾萬行的程式碼,又如何能盡在掌控呢?
要回答這個問題,不妨先看看下面的情景:

假如現在學校要給同學們注射疫苗,讓需要注射疫苗的同學知曉如何到校醫院注射疫苗,如果你是副校長接管此工作,你該怎麼做?
方法一:你挨個同學挨個同學的詢問是否需要注射疫苗,然後告訴需要注射的同學何時何地注射疫苗。
方法二:集結全校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");
	}
}

肯定有人覺得我在畫蛇添足,直接一個函式打印出來不就完事了嗎?
那要是再讓你列印一個矩形,一個菱形呢?你繼續一個一個幹嗎?
這前面三個函式就好比班級、專業、學院,列印三角形就是工作,下次再接手其他工作時就可以沿用前面三個函式。