摘 要:通過分析C程序設計語言傳統教學模式中的弊端,結合目前發展成熟的案例教學法的特點,將案例教學法應用在C程序設計語言教學中,并以一個簡單的案例九九乘法表為例,探討了案例教學法在對本課程基礎知識的掌握以及算法設計能力提高上的作用。實踐表明,教學中使用簡單案例,能充分調動學生的積極性和主動性,激發學生的學習興趣,培養學生的動手能力和創新能力,有效提高C程序設計語言的教學質量與教學效果。
關鍵詞:C語言; 簡單案例; 九九乘法表; 算法設計能力
中圖分類號:TN91934; TP312 文獻標識碼:A 文章編號:1004373X(2012)22002702
C語言程序設計是高校理工科教學中一門重要的基礎課,學習該課程旨在使學生掌握C語言的基本語法、結構化程序設計的方法,培養學生熟練使用C語言編程解決實際問題的能力[1]。C語言教學采用“課堂理論+上機實驗”的教學模式,教師按照章節順序,理論講授知識點,然后上機做實驗,各章節孤立;學生將學習的重點集中在語法點上,語法點多,掌握困難,無法從整體上把握課程的結構,編程能力普遍較低,最后以學生突擊背題,應付考試來結束這樣一門重要課程的學習[23]。本文分析了如何使用簡單案例[410]幫助學生更好地掌握知識,設計算法進而提高編程解決實際問題的能力。
九九乘法表是C程序設計中講循環嵌套時引入的例子,講到此處,數據類型,運算符以及3種基本結構這3大框架已經為學生建立起來,學生已經具有初步的使用C語言進行編程的能力,可以以此為例,講知識如何在程序設計中應用。
1 初步的設計
算法:九九乘法表是二維的結構,表中的每一個數據是它所在行列號的乘積,行列在1~9的范圍內變化,因此要用到兩重的循環,分別對應行列的變化。
程序1:#include\"stdio.h\"
void main()
{int i,j;
for(i=1;i<=9;i++)
for(j=1;j<=9;j++)
printf(\"%d\",i*j);}
輸出結果截屏如圖1所示。
圖1 輸出結果截屏(一)分析:結果可以滿足題目的要求,但是所有的結果連在一起,難以分辨,能否用所學知識解決這個問題,提示學生用格式輸出函數的功能解決這個問題。
2 改進的程序
printf(\"%d\",i*j);中%d控制的是每個輸出數據的格式,后面加空格,就可以將數據分隔開,并且對每一行進行換行,而行對應的是外層的循環控制變量,特別注意printf(\"\n\");是外層循環的內嵌語句。
改進的程序1:
#include\"stdio.h\"
void main()
{int i,j;
for(i=1;i<=9;i++)
{for(j=1;j<=9;j++)
printf(\"%d \",i*j);
printf(\"\n\");}}
輸出結果截屏如圖2所示。
圖2 輸出結果截屏(二)分析:雖然進行了換行操作,并且數據之間也用空格分開,但是不夠整齊,能否用所學知識進行修改以滿足要求,引導學生分析對不齊的原因是兩位數據和一位數據所占的列數不同,用所學的格式輸出函數的功能可以解決這個問題。printf(“%d”,i*j);中%d改為%4d,去掉空格,%4d中的4代表數據占據固定的列寬。
改進的程序2:
#include\"stdio.h\"
void main()
{int i,j;
for(i=1;i<=9;i++)
{for(j=1;j<=9;j++)
printf(\"%4d\",i*j);
printf(\"\n\");}}
輸出結果截屏如圖3所示。
圖3 輸出結果截屏(三)3 根據不同的應用可得變形后的程序
3.1 變形的程序一:下三角
算法:下三角限制條件是和列相關的循環控制變量的終值,變化范圍是1~i。
#include\"stdio.h\"
void main()
{int i,j;
for(i=1;i<=9;i++)
{for(j=1;j<=i;j++)
printf(\"%4d\",i*j);
printf(\"\n\");}}
輸出結果截屏如圖4所示。
圖4 輸出結果截屏(四)3.2 變形的程序二:上三角
算法:上三角限制條件是和列相關的循環控制變量的初值,變化范圍是i~9。
#include\"stdio.h\"
void main()
{int i,j;
for(i=1;i<=9;i++)
{for(j=i;j<=9;j++)
printf(\"%4d\",i*j);
printf(\"\n\");}}
輸出結果截屏如圖5所示。
圖5 輸出結果截屏(五)結果分析:結果正確,但是對齊有問題,分析可知每行應該先輸出i-1個空格,并且每個空格占4列。
改進的程序:
#include\"stdio.h\"
void main()
{int i,j;
for(i=1;i<=9;i++)
{for(j=1;j
printf(\"%4c\",' ');
for(j=i;j<=9;j++)
printf(\"%4d\",i*j);
printf(\"\n\"); }}
輸出結果截屏如圖6所示。
圖6 輸出結果截屏(六)4 結 語
本文以九九乘法表為例,由淺入深的向學生呈現程序設計過程的細節,在講解的過程中注意引導學生對已學知識點的應用,并教會學生重視算法的設計環節,程