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