摘要:循環結構是C語言學習的重點和難點之一,比較抽象,不易掌握。作者從事多年的C語言教學,對這部分內容的教學也不斷進行探索。在實踐中發現從熟悉的圖形入手,可以變抽象為具象,化難為易,學生易于接受和理解,效果較為理想。
關鍵詞:C語言 循環結構 圖形
C語言是一種結構化的程序設計語言。循環結構是結構化程序設計中非常重要的一環,相比其他2種結構來講,難度大、應用廣。n!的計算,累加計算等都要用到循環;循環還與數組的使用密不可分;可以說,循環在整個程序設計中的作用非常重要,循環結構要貫穿在大部分C程序中。
循環結構的教學也是C語言的重點和難點。如何能讓這部分的教學形象、易懂,讓學生印象深刻?作者在多年的教學中不斷摸索總結,認為把循環結構與點陣圖形結合,可以變抽象為具象,使學生更容易理解和掌握循環的本質。
一、通過對比體會循環的意義
如:打印“**********”
在學習printf( )函數時,一定要做這道習題。
Main()
{
Printf(“**********\”);
}
這是一個最簡單的C程序。
在講到for語句時,通過構造循環來做這個題目,前后對比體會循環的意義。
Main()
{
Int I;
For (i=1;i<=10;i++)
Printf(“*”);
Printf(“\”);
}
二、循環嵌套的學習
循環嵌套比單循環更抽象,需要學生邏輯分明、思維清晰,這是一個難點。這一部分的例題很關鍵,要通過循序漸進、由易到難的例題逐步掌握嵌套的使用,尤其是學會循環控制變量的取值。
1、打印點陣圖形
*****
*****
*****
先介紹程序段
For (j=1;j<=10;j++)
Printf(“*”);
的功能是打印5個連續星號 ,即 *****
在此基礎上,講下面程序。
Main()
{
Int I,j;
For (i=1;i<=3 ;i++)
{Printf(“\”);
For(j=1;j<=5;j++)
Printf(“*”);
}
}
I 表示外循環控制變量,j表示內循環控制變量;I同時代表點陣圖形的行數,j同時代表點陣圖形的列數。因為圖形是3行5列的矩陣。所以i的取值從1到3,j的取值從1到5。
因為學生已經明白以j為循環控制變量的for循環的作用是輸出*****,所以把以j為循環控制變量的for循環當做一個整體,充當外循環的循環體,學生很容易理解整個程序的功能是i=1時,輸出第一行*****,i=2時,輸出第二行*****,i=3時,輸出第三行*****,即整個程序的功能是輸出題目要求的3×5的星型矩陣。
2、打印點陣圖形
*
* *
* * *
* * * *
這個圖形比例1的圖形要復雜。先分析行號與每一行列數的關系
I表示行號, j表示每一行的“*”數
11
22
33
44
所以i的取值從1到4,對應每一個i值,j 的取值從1到i
程序如下:
Main()
{
Int I,j;
For (i=1;i<=4 ;i++)
{Printf(“\”);
For(j=1;j<=i;j++)
Printf(“*”);
}
}
這個題目的關鍵是理解內循環控制變量j的取值。當i=1時要輸出第一行星號,j的取值是1,所以j<=1;當i=2時要輸出第二行星號,j的取值是1,2,所以j<=2;當i=3時要輸出第三行星號,j的取值是1,2,3,所以j<=3;當i=4時要輸出第四行星號,j的取值是1,2,3,4,所以j<=4。看得出,j 的取值是隨i變化的,即j<=i。通過這個題目,讓學生熟悉內循環控制變量的取值及表達。
3、打印九九乘法表
“九九乘法表”也是我們都非常熟悉的一個圖形,在前2例的基礎上,設計“九九乘法表”對理解循環嵌套有很大幫助。
Main()
{
Int i,j;
For (i=1;i<=9 ;i++)
{Printf(“\”);
For(j=1;j<=i;j++)
Printf(“%d*%d=%d ”,i,j,i*j);
}
}
因為我們的頭腦中已經有“九九乘法表”的印象了,所以很容易想到i表示第一個乘數,j表示第二個乘數,i的取值從1到9,j的取值從1到i。理解了這個題目后,再作其他循環嵌套時,對循環控制變量取值,會變得比較容易。
在循環結構的教學中,從熟悉的圖形入手,化繁為簡易于被學生掌握。邏輯思維的建立是一個漸進的過程。教師先把抽象思維化解為形象思維,再引導學生由形象思維逐步建立抽象思維,順利完成這部分的教學。