文章編號(hào):1672-5913(2008)07-0075-02
摘要:本文探討了一種新式的C語言教學(xué)方法——階梯式教學(xué)法,并展示了在具體授課內(nèi)容中加入階梯式教學(xué)思想的兩個(gè)案例。
關(guān)鍵詞:階梯式教學(xué);C語言教學(xué);教學(xué)探索
中圖分類號(hào):G642
文獻(xiàn)標(biāo)識(shí)碼:B
1 階梯式教學(xué)法的基本概念
\"階梯式教學(xué)法\"是由程鴻勛老師首創(chuàng)的,它是指導(dǎo)學(xué)生一步一步地養(yǎng)成良好的學(xué)習(xí)習(xí)慣的方法。宗旨是使學(xué)生愛學(xué)、會(huì)學(xué),使不同程度的學(xué)生,尤其是學(xué)習(xí)有困難和問題較多的學(xué)生,都能得到提高和發(fā)展。主要特點(diǎn)是目標(biāo)具體,升級(jí)適度,符合學(xué)生的心態(tài),使學(xué)生有成就感,形成積極向上的人生態(tài)度。
下面介紹一下筆者將“階梯式教學(xué)法”與C語言教學(xué)相結(jié)合的具體步驟。
●備課時(shí),將同類型問題找出來
●將這些問題按難易程度排隊(duì)
●上課時(shí),先讓學(xué)生解決最簡(jiǎn)單的問題,按從易到難的順序,依次提高問題的難度
●注意提示學(xué)生由易到難的關(guān)鍵問題
這樣,通過教學(xué),學(xué)生們對(duì)于同類問題的解決就有了比較深刻的認(rèn)識(shí)。同時(shí)通過教師在教學(xué)過程中的不斷提問,每提問一次,問題的難度就加大一次,有利于培養(yǎng)學(xué)生主動(dòng)思考、創(chuàng)新性的思維能力。
2 具體實(shí)施案例
案例1:
問題:打印規(guī)則圖形
第1層問題:打印輸出由“*”組成的4*4矩陣
第2層問題:在上題基礎(chǔ)上,使輸出格式變?yōu)槠叫兴倪呅?/p>
第3層問題:在上題基礎(chǔ)上,使輸出格式變?yōu)槿切?/p>
第4層問題:在上題基礎(chǔ)上,使輸出格式變?yōu)榱庑?/p>
第1層問題的解決:
#include \"stdio.h\"
void main( )
{int i,j;
for(i=1;i<=4;i++)
{for(j=1;j<=4;j++)
printf(\"*\");
printf(\"\\");
}
}
第2層問題的解決:提醒學(xué)生注意,平行四邊形特點(diǎn)及每行第一個(gè)字符的起始位置!
#include \"stdio.h\"
void main( )
{int i,j,k;
for(i=1;i<=4;i++)
{for(k=1;k<i;k++)
printf(\" \");
for(j=1;j<=4;j++)
printf(\"*\");
printf(\"\\");
}
}
第3層問題的解決:提醒學(xué)生注意每行第一個(gè)字符的起始位置及該行的字符數(shù)目
#include \"stdio.h\"
void main( )
{int i,j,k;
for(i=1;i<=4;i++)
{for(k=1;k<i;k++)
printf(\" \");
for(j=1;j<=2*(4-i)-1;j++)
printf(\"*\");
printf(\"\\");
}
}
第4層問題的解決:提醒學(xué)生注意菱形是由兩個(gè)三角形構(gòu)成的(由一個(gè)兩重循環(huán)如何實(shí)現(xiàn)?)
#include \"stdio.h\"
void main( )
{int i,j,k;
for(i=-2;i<=2;i++)
{for(k=1;k<=abs(i);k++)
printf(\" \");
for(j=1;j<=5-2*abs(i);j++)
printf(\"*\");
printf(\"\\");
}
}
案例2:
問題:排序
第1層問題:任意給定10個(gè)數(shù),排序
第2層問題:任意給定n個(gè)數(shù),排序
第3層問題:任意給定n個(gè)字符串排序
第1層問題的解決:采用冒泡法進(jìn)行排序
#include \"stdio.h\"
main( )
{int i,j,t;
int a[10];
printf(\"請(qǐng)輸入要排序的數(shù)組\\");
for(i=0;i<10;i++)
scanf(\"%d\",a+i);
printf(\"\\");
for(i=0;i<9;i++)
{for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}}
printf(\"已排序的數(shù)組如下:\\");
for(i=0;i<10;i++)
printf(\"%d,\",a[i]);
printf(\"\\");
}
第2層問題的解決:如何由用戶決定每次排序的數(shù)據(jù)個(gè)數(shù),注意數(shù)組的特點(diǎn)。
#include \"stdio.h\"
main( )
{int number;
void sort(int n);
printf(\"請(qǐng)輸入要排序的數(shù)字個(gè)數(shù)\\");
scanf(\"%d\",number);
sort(number);
}
void sort(int n)
{int i,j,t;
int a[n];
printf(\"請(qǐng)輸入要排序的數(shù)組\\");
for(i=0;i<n;i++)
scanf(\"%d\",a+i);
printf(\"\\");
for(i=0;i<n-1;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
printf(\"已排序的數(shù)組如下:\\");
for(i=0;i<n;i++)
printf(\"%d,\",a[i]);
printf(\"\\");
}
第3層問題的解決:注意字符串存儲(chǔ)的特點(diǎn)。
#include \"string.h\"
#include \"stdio.h\"
main( )
{int number;
void sort(int n);
printf(\"請(qǐng)輸入要排序的字符串個(gè)數(shù)\\");
scanf(\"%d\",number);
sort(number);
}
void sort(int n)
{int i,j;
char str[n][30];
char string[30];
printf(\"請(qǐng)輸入要排序的字符串\\");
for(i=0;i<n;i++)
scanf(\"%s\",str[i]);
for(i=0;i<n-1;i++)
{for(j=0;j<n-1-i;j++)
if(strcmp(str[j],str[j+1])>0) {strcpy(string,str[j]);strcpy(str[j],str[j+1]);strcpy(str[j+1],string);}}
printf(\"已排序的字符串如下:\\");
for(i=0;i<n;i++)
puts(str[i]);
}
注:如果再更進(jìn)一步的話,可在此問題上可提出采用指針數(shù)組的方法來解決。在這里可以為后續(xù)章節(jié)的學(xué)習(xí)埋下一個(gè)伏筆。
3 結(jié)束語
除了上述兩個(gè)案例外,還有很多問題的教學(xué)可以采用階梯式教學(xué),例如求素?cái)?shù)、打印日歷、鏈表操作等。以上兩個(gè)案例的教學(xué)思想是我結(jié)合程鴻勛老師的“階梯式教學(xué)法”和個(gè)人在教學(xué)中的一些想法而提出的,希望能夠給讀者提供一定的幫助。由于C語言課程的地位比較突出,因此進(jìn)行課程設(shè)計(jì)是很必要的,而教學(xué)方法的革新又是至關(guān)重要的,這就需要我們?nèi)w教育工作者不斷努力探索,摸索出更多更好的適合C語言教學(xué)的教學(xué)方法。
參考文獻(xiàn)
[1] 譚浩強(qiáng). C程序設(shè)計(jì)(第三版)[M]. 北京:清華大學(xué)出版社,2005.