段紅義 王惠惠
摘 要:C程序循環(huán)嵌套結構設計是C程序循環(huán)結構教學一章的重點與難點內容,是后續(xù)數據結構課程算法實現中使用頻率最多的語句,是進行復雜程序設計的基礎。該文將針對初學者實際情況,通過教學實例的設計,由淺入深,采用類比、啟發(fā)等多種教學方法,分析循環(huán)嵌套結構程序的設計思路與設計方法,幫助學生掌握C語言循環(huán)嵌套結構設計的實質,提高利用循環(huán)嵌套結構解決實際問題的能力。
關鍵詞:C語言 循環(huán)嵌套 教學設計
中圖分類號:TP31 文獻標識碼:A 文章編號:1674-098X(2015)03(a)-0120-02
The Inquiry Teaching Design of Nested Loop Structure on C Language
Duan Hongyi,Wang Huihui
(Science Department of Hetao College,Bayannaoer,Inner Mongolia,015000,China)
Abstract:The C program nested loop structure design is the key and difficult points in chapter C program loop structure teaching, is the follow-up data structure course algorithm in the most frequently used sentence, is the basis for complex programming. This paper will according to the actual situation of beginners, by design, the teaching examples from the shallower to the deeper, by analogy, inspiration and so on many kinds of teaching methods, design analysis and design method of loop nesting structure of the program, to help the students to grasp the essence of C language nested loop structure design, improve the ability of using the nested loop structure to solve the practical problems.
Key Words:C language;Loop nests;Teaching design
C語言是一門面向過程的結構化程序設計語言,其程序設計的基本結構單元主要由順序結構、選擇結構與循環(huán)結構三種基本結構組成。其中選擇結構與循環(huán)結構在程序設計中最為重要且使用較多,對于后續(xù)課程數據結構來說,其算法實現主要以這兩種結構為主,所以在學習數據結構之前,學生必須要通過C語言的學習打下良好的程序設計基礎,深入理解并掌握這兩種程序結構,并能夠正確設計與閱讀理解這兩種結構的程序。在循環(huán)結構程序設計中,循環(huán)的嵌套程序設計是一個重點與難點內容,該文結合作者從教以來教授C語言的教學經驗及心得體會,探討如何教會學生理解并掌握循環(huán)嵌套結構的設計,提高利用循環(huán)嵌套解決實際問題的能力。
1 循環(huán)嵌套教學內容引入及設計
循環(huán)嵌套結構程序設計的基礎是循環(huán)結構,在學習循環(huán)嵌套結構程序設計之前需要掌握C語言中實現循環(huán)結構的三種語句,while語句、do...while語句以及for語句,在此基礎上學習循環(huán)的嵌套。首先需要知道循環(huán)嵌套的概念:一個循環(huán)的循環(huán)體內包含另外一個完整的循環(huán)結構,稱為循環(huán)的嵌套,內嵌的循環(huán)還可以繼續(xù)嵌套循環(huán),構成多層循環(huán)。循環(huán)的嵌套結構本質上仍是一個循環(huán)語句,只不過其循環(huán)體為一個循環(huán)語句罷了。C語言中三種循環(huán)語句可以互相嵌套構成循環(huán)嵌套結構。由于for語句在C語言中最為靈活,下面以for語句為例來討論循環(huán)的嵌套結構。
1.1 循環(huán)嵌套結構程序的引入
為了便于理解循環(huán)嵌套,首先舉一個簡單的循環(huán)結構的例子來引入嵌套。
例1:輸出123456789。
該例子如果利用for循環(huán)設計,學生可以輕松寫出如下語句。
int i;
for(i=1;i<=9;i++)
printf(“%d”,i);
如果對該例進行修改,要設計以下程序。
例2:輸出5行123456789。對于該例來說,可以使用循環(huán)的嵌套來設計程序。
1.2 循環(huán)嵌套結構設計
我們可以利用循環(huán)語句的設計思路來解決這個問題,這個例子的關鍵在于循環(huán)體語句為輸出123456789及換行符,即要循環(huán)5次123456789以及換行符。這里我們先把上述代碼以及輸出換行符語句看成一個整體即一個語句塊。比如用語句塊一來表示,則可以寫出如下的程序代碼。
int j;
for(j=1;j<=5;j++)
{
語句塊一;
}
由于語句塊一的代碼為:
int i;
for(i=1;i<=9;i++)
printf(“%d”,i);
printf(“\n”);
所以將語句塊一用上述代碼進行替換,可以寫出例2完整代碼如下:
int j;
for(j=1;j<=5;j++)
{
int i;
for(i=1;i<=9;i++)
printf(“%d”,i);
printf(“\n”);
}
通過這個例子看出,外循環(huán)決定內循環(huán)(把內循環(huán)看成一個整體)的執(zhí)行次數,而內循環(huán)則控制每行內循環(huán)的次數。在這個例子中,內循環(huán)變量與外循環(huán)變量之間沒有關系,下面我們再來看一個稍微復雜一些的例子,內循環(huán)變量執(zhí)行的次數取決于當前的外循環(huán)變量,來進一步理解循環(huán)嵌套結構程序。
例3:設計程序輸出如下的圖案數字。
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
這個例子要打印5行數字,故外循環(huán)次數為5,設外循環(huán)變量為i,取值為1~5,再看每一行要打印的數字的個數為1,2,3,4,5,即循環(huán)的次數為1,2,3,4,5,假設用j表示內循環(huán)變量,那么,內循環(huán)變量與外循環(huán)變量有什么關系?假設我們要打印的是第i行上的數字,可以發(fā)現其打印的數字j取值為1到i。找到了規(guī)律就可以寫出的循環(huán)嵌套程序段:
int i,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=i;j++)
printf(“%d ”, j);
printf(“\n”);
}
通過這個例子我們可以引導學生,寫出如下圖案的程序段。
例4:設計程序輸出如下的圖案數字。
1
1 3
1 3 5
1 3 5 7
1 3 5 7 9
提示學生這個程序可以有2種寫法。
第一種寫法:通過觀察,發(fā)現例3與例4只是每一行上輸出的數字不同,即需要修改例3的內循環(huán)語句printf(“%d ”, j);即可。顯然第i行上打印的是一個等差數列,其打印的第j個數字應為2*j-1。即例4對應的語句為printf(“%d ”, 2*j-1);
第二種寫法:不改變例3的printf(“%d ”,j);輸出語句,則需要修改內循環(huán)for(j=1;j<=i;j++),分析可知第i行的內循環(huán)次數為i,而打印的數字最大值j為2*i-1,后一個打印的數比前一個數大2,即步長為2,則將例3的內循環(huán)語句改為for(j=1;j<=2*i-1;j+=2)即可。
通過上面例3、例4兩個程序的設計,學生基本上能夠掌握循環(huán)的嵌套結構了,對循環(huán)的嵌套有了更深入的理解,并能利用循環(huán)嵌套結構設計并解決簡單的實際問題了。
例5:打印如下圖的九九乘法表。
這個例子與例3比較相似,一共要打印九行,故外循環(huán)為9次,假設用i來表示外循環(huán)變量,其值應為1到9;第i行打印輸出i個數,假設用j來表示內循環(huán)變量,即內循環(huán)變量j取值為1到i。并且能寫出第i行第j個要打印輸出的數為:printf(“%d×%d=%4d”,j,i,j*i);有了例3,例4的基礎可以寫出如下的程序:
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf(“%d×%d=%4d ”,j,i,j*i);
printf(“\n”);
}
2 結語
在循環(huán)嵌套結構設計教學中,教師要充分考慮學生的實際情況,要考慮不同專業(yè)、不同層次學生的理解能力,設計針對學生實際情況的教學用例,從淺顯易懂的例子出發(fā),逐步引導學生思考,采用類比,啟發(fā)等多種教學方法,教學實踐證明,這種方法能夠很好的調動學生的學習積極性,學生的理解能力與程序設計能力有了明顯的提高。
參考文獻
[1] 譚浩強.C程序設計[M].4版.北京:清華大學出版社,2010.
[2] 劉井蓮,趙衛(wèi)績.C/C++循環(huán)嵌套教學實踐[J].電腦知識與技術,2012(25).
[3] 唐紅杰.C語言循環(huán)結構教學探討[J].軟件工程師,2014(10):49-50.
[4] 劉運,程家興.圖形打印案例在計算機高級語言教學中的應用研究[J].山東農業(yè)工程學院學報,2014(6):48-49,58.