崔孝鳳
摘要:對于C語言的初學(xué)者來說,三種程序結(jié)構(gòu)的學(xué)習(xí)既是重點又是難點,本文從初學(xué)者的角度出發(fā)由順序結(jié)構(gòu)到循環(huán)結(jié)構(gòu)采用滲透式漸進案例的形式依次設(shè)計了3個案例,通過這3個案例依次清楚描述了C語言中的三種結(jié)構(gòu),對于C語言的初學(xué)者能夠起到很好的入門引導(dǎo)作用。
關(guān)鍵詞:C語言;三種結(jié)構(gòu);滲透式;漸進;案例教學(xué)
中圖分類號:G642 文獻標(biāo)識碼:A
文章編號:1009-3044(2019)08-0095-02
1 引言
對于C語言的初學(xué)者來說,三種程序結(jié)構(gòu)的學(xué)習(xí)和掌握既是重點又是難點,如何用淺顯易懂的程序案例幫助初學(xué)者理解并應(yīng)用好這三種結(jié)構(gòu)是擺在每一位C語言任課教師面前的一項艱巨的任務(wù)。本文從初學(xué)者的角度出發(fā),遵從由易到難的自然學(xué)習(xí)規(guī)律,采用滲透式漸進案例的方法設(shè)計出3個案例,依次清楚描述了C語言中的三種結(jié)構(gòu),對于C語言的初學(xué)者能夠起到很好的入門引導(dǎo)作用。
2 具體案例
2.1 順序結(jié)構(gòu)案例
【例題1】請設(shè)計一個程序,功能是輸入一個人的年齡和性別并輸出結(jié)果。
算法分析:這是一個順序結(jié)構(gòu)的程序,功能很簡單,首先輸入一個人的年齡和性別,然后再依次輸出即可,為了使程序簡單化好理解,此處設(shè)定如果是男性輸入字母m,如果是女性輸入字母f。目的是考慮到C語言初學(xué)者知識有限,所以盡可能地把程序簡單化,首先調(diào)動起學(xué)習(xí)者的興趣,這是至關(guān)重要的一項。
源代碼如下:
#include
int main(void)
{int age; //用age存儲年齡
char sex; //用sex存儲性別
printf("請輸入您的年齡:\n");
scanf("%d",&age);
getchar(); //取消上一個輸入最后輸入的回車符
printf("請輸入您的性別(如果是男性請輸入m,如果是女性請輸入f):\n");
sex=getchar();
printf("您的年齡是:%d\n",age);
printf("您的性別是:%c\n",sex);
return 0;
}
2.2 選擇結(jié)構(gòu)案例
【例題2】請設(shè)計一個程序,功能是輸入一個人的年齡和性別并輸出相應(yīng)結(jié)果,如果性別是m則輸出“您是一位男士!”的信息,如果性別是f則輸出“您是一位女士!”的信息。
算法分析:與例題1一樣首先輸入一個人的年齡和性別信息,然后根據(jù)輸入的性別信息做出不同的處理,如果性別輸入的是m,則輸出“您是一位男士!”的信息,如果性別輸入的是f,則輸出“您是一位女士!”的信息。這是一個比較簡單的兩分支的選擇結(jié)構(gòu),當(dāng)然可以設(shè)計更復(fù)雜的判斷,比如根據(jù)年齡大小分別輸出與年齡更加相符合、更加人性化的信息,此處我們首要的目的仍然是引起學(xué)習(xí)者的興趣,然后再逐步加深難度。
源代碼如下:
#include
int main(void)
{int age; //用age存儲年齡
char sex; //用sex存儲性別
printf("請輸入您的年齡:\n");
scanf("%d",&age);
getchar(); //取消上一個輸入的回車符
printf("請輸入您的性別(如果是男性請輸入m,如果是女性請輸入f):\n");
sex=getchar();
printf("您的年齡是:%d\n",age);
if(sex=='m')
printf("您是一位男士?。躰");
else
printf("您是一位女士?。躰");
return 0;
}
請讀者思考:如果程序運行時用戶輸入的性別既不是字母m也不是f,程序會輸出什么結(jié)果?結(jié)果對嗎?程序應(yīng)該如何改進呢?還有如果想根據(jù)年齡的不同輸出更加人性化的信息,比如如果年齡在12歲以內(nèi)而且是女性則輸出“您是一位可愛的小女孩兒!”,等等,應(yīng)該對程序如何修改呢?教師可逐步引導(dǎo)學(xué)生對程序進行修改,把選擇結(jié)構(gòu)的各種復(fù)雜情況逐步引出。
2.3 循環(huán)結(jié)構(gòu)案例
【例題3】請設(shè)計一個程序,功能是可以輸入多個人的年齡和性別,并且根據(jù)性別不同輸出不同的信息,如果性別是m則輸出“您是一位男士!”的信息;如果性別是f則輸出“您是一位女士!”的信息。
算法分析:這個程序是在例題2的基礎(chǔ)上的一個滲透和擴展,目的是引導(dǎo)學(xué)生進入循環(huán)結(jié)構(gòu)程序設(shè)計的應(yīng)用。該程序需要首先輸入人數(shù),然后用一個循環(huán)結(jié)構(gòu)來控制人數(shù),在循環(huán)體中完成相應(yīng)的要求即可。
源代碼如下:
//循環(huán)結(jié)構(gòu),程序運行一次,可以輸入多人的信息
#include
int main(void)
{int age; //用age存儲年齡
char sex; //用sex存儲性別
int i,num; //用i控制循環(huán)執(zhí)行次數(shù),用num 存儲人數(shù)
printf("請輸入人數(shù):\n");
scanf("%d",&num);
for(i=1;i<=num;i++) //循環(huán)num次
{printf("請輸入您的年齡:\n");
scanf("%d",&age);
getchar(); //取消上一個輸入的回車符
printf("請輸入您的性別(如果是男性請輸入m,如果是女性請輸入f):\n");
sex=getchar();
printf("您的年齡是:%d\n",age);
if(sex=='m')
printf("您是一位男士?。躰");
else
printf("您是一位女士?。躰");
} //循環(huán)結(jié)束
printf("程序運行結(jié)束,謝謝您的使用!\n");
return 0;
}
請讀者思考一下,如果事先不知道具體的人數(shù),程序該如何修改?還有此程序是使用for語句實現(xiàn)循環(huán)的,如果用while或者do-while語句,程序該如何修改呢?學(xué)習(xí)程序設(shè)計必須能夠做到舉一反三才能熟練掌握。
3 結(jié)束語
以上3個案例采用滲透式漸進案例的方式具體展示了C語言中的3種程序結(jié)構(gòu)的一種應(yīng)用,目的是拋磚引玉,引起學(xué)生的學(xué)習(xí)興趣,從而逐步深化下去,取得更好的學(xué)習(xí)效果。這3個案例對初學(xué)者有極好的引導(dǎo)作用,在此基礎(chǔ)上初學(xué)者可以很容易地完成更復(fù)雜的程序設(shè)計。
參考文獻:
[1] 李娟,張燕. C 語言循環(huán)結(jié)構(gòu)教學(xué)的設(shè)計與實踐[J]. 計算機教育, 2018-03-10.
[2] 郝蕊潔,李妮. “情境-問題-探究”式教學(xué)法在C 語言教學(xué)中的應(yīng)用[J]. 現(xiàn)代計算機,2017-11.
[3] 辛凌潔,賈玉寧,楊穎.C 語言程序設(shè)計學(xué)習(xí)興趣和方法[J]. 中國教育技術(shù)裝備, 2017(22).
[4] 許金蘭,徐崗. “興趣驅(qū)動+案例教學(xué)模式”在C語言教學(xué)中的應(yīng)用[J]. 中國信息技術(shù)教育,2018-03-23.
[5] 王亮.《C 語言程序設(shè)計》循環(huán)結(jié)構(gòu)教學(xué)案例研究[J]. 科技視界, 2018-01-05.
[6] 劉芝怡. “項目引領(lǐng),任務(wù)驅(qū)動,案例主導(dǎo)”的 C 語言程序設(shè)計教學(xué)改革[J]. 教育現(xiàn)代化,2018-02-12.
【通聯(lián)編輯:王力】