第一篇:《C語言循環結構》課程教學設計研究(定稿)
《C語言循環結構》課程教學設計研究
作者簡介作者簡介:徐東(1972-),男,碩士,中國人民解放軍海軍大連艦艇學院講師、教研室主任,研究方向為計算機視覺與人工智能、計算機教育。0引言
C語言程序設計中,循環結構、順序結構和選擇結構共同作為各種復雜程序的基本構造單元。C語言中幾乎所有實用程序都包含循環,許多問題求解都可歸結為重復執行的操作,比如數值計算中的方程迭代求根、非數值計算中的樹的遍歷等等。循環的特征是:在給定條件成立時,重復執行某程序段,直到條件不成立為止。教學實踐證明,循環結構是整個C語言程序設計課程中的“拐點”,這個環節學好了,就有了進一步學習的興趣,反之,則會讓很多學生對C語言的深入學習望而卻步。因此熟練掌握循環結構的概念及使用方法是程序設計最基本的要求之一。筆者通過總結學生學習C語言循環結構的一般心理思維規律,結合國內外優秀的計算機語言教學方法和模式,在講授C語言循環結構程序設計環節的教學過程中,采取“雙主體教學模式”,充分運用了項目實例教學、問題驅動教學、多媒體輔助教學等多種教學方法,重視學生的學習主體作用,在課堂教學中,以創造性貫徹“啟發式教學原則”為基本特征,鼓勵學生積極主動學習,教師極盡啟發、誘導、調動學生學習的主動性,使學生在掌握知識、形成能力、開發智力等方面得到最大發展。
1C語言公共課教學中存在的問題
C語言公共課程的授課對象均為非計算機專業學生,C語言教學總課時數也偏緊。C語言相對于計算機基礎課程,它注重設計算法、書寫程序并進行調試的整個過程,內容較為抽象、復雜,教學方法和學習方法都有極大的不同。筆者通過觀察并與學生交流,發現很大一部分學生上課時能聽懂課程,但程序一旦稍有改變就便不知所措,學生獨立編程時更是無從下手,尤其到了循環結構設計階段。究其原因,在教學方面存在以下問題。
1.1傳統課堂教學方式存在一些弊端
通常,傳統的C語言教學方法是選用經典教材,教師在講解時先給出一般的語法格式,然后逐步講解語法要點,再給出例子。傳統教學方法比較適合基礎差的學生,但此方式的缺點也是顯而易見的,一方面不利于學生自學能力的培養;另一方面,對于基礎好的學生會覺得太羅嗦,甚至因此喪失學習興趣。多數學生對于這種按部就班講編程的傳統教學方式有厭倦心理,不愿意主動與教師在課后交流,依靠教師的現象比較嚴重。另外,很大一部分學生還在延續高中時的學習方法,缺乏自主學習的意識和能力。C語言畢竟是一門抽象、復雜的課程,知識點非常散。學生在學習C語言的過程中,在教學內容越來越多、編程越來越困難的情況下,很難自我保持學習的興趣和熱度。
1.2教與學比例不合理
教師在教學實施過程中,往往過于注重對知識的傳授,過于強調教學方法,而實際上,C語言是一門實踐性很強的課程,理論理解與實際演練密不可分,相輔相成,因而,整個C語言教學過程中如何分配教與學、理論與實踐的比例,是學生學好C語言的關鍵因素之一。
1.3上機實作課時偏少
由于總課時數的限定,目前計劃學時內安排上機實作學時不足以完成預訂目標,以計劃外形式安排課時,學生在自主學習能力較弱的情況下,學習效果不佳。
2雙主體教學法
經過多年實踐,我們在教學過程中采取了適合C語言公共課的“雙主體互動教學模式”。雙主體互動教學模式是新型的課堂教學理論,它突破傳統教學中的“雙主”理論,極其重視學生的學習主體作用,并引入“互動”觀念,教、學雙方相互影響,彼此促動。在課堂教學中,它以創造性貫徹“啟發式教學原則”為基本特征,鼓勵學生積極主動學習,提倡教師極盡啟發、誘導、調動學生主動性之能事,在授課過程中,采用講解、現場編程演示、幻燈片、提問、目光交流、練、學生自主學習相結合的方式,授課完畢后進行課堂小結,布置上機作業。
2.1采用實例教學法,提高學生對抽象概念的感觀認識
實例教學法打破了以教材為中心的傳統教學模式,不按教材的順序授課,在講課過程中,經常舉一些與實際生活相關的事例,以精選出的程序實例為中心,把學習的重點放在具體實例講述上,并引導學生自己去思考解決方案,從主觀上讓學生感受到成就感,從而保持他們的學習興趣。整個教學過程中強調學以致用,在應用中學習,從而避免了枯燥、繁雜的理論說教,不僅增強了學生的學習積極性,而且對提高學生綜合分析和解決實際問題的能力也大有幫助。
為了達到本課程的教學目的,讓學生能更加深刻地體會到軟件編程的實際作用,提高并保持對該課程的學習興趣,本文引例就從“實彈射擊訓練分析系統軟件”的編制任務開始,該軟件編制任務共分5個階段完成,編制過程將一直持續到本課程結束,并且會在后續章節中得到進一步完善。“實彈射擊訓練分析系統軟件”具體任務安排:
第一階段:能記錄一名學生的打靶成績(平均環數)。
說明:為簡單起見,規定每名學生打10發子彈,記平均成績。
第二階段:能記錄每個班的打靶總成績(總平均環數)。
第三階段:能對參訓學生進行成績排名;能對參訓單位進行成績排名。
第四階段:在前3個階段任務完成的情況下,進一步完善該軟件的功能,學生可以添加自定義功能模塊。
在簡單介紹“實彈射擊訓練分析系統軟件”的編制任務后,提出本次課的任務。運用實例啟發學生,明確本節課要解決的任務,即尋求一種循環機制,能夠自動循環地對10個成績求和。這樣,不僅激起了學生探究問題的興趣,而且輕松地引入了本節課的教學內容:循環結構。接下來,就按照軟件設計的步驟依次進行。
2.2采用進階式問題驅動法,提高上機效率
在C語言教學過程中,上機操作是非常必要的。通過上機,學生不但可以進一步理解和掌握知識,而且許多不清楚或不理解的問題也迎刃而解。但在上機過程中,教師不要總是要求學生按部就班地解決問題,要讓學生自己尋找解決方法,把學習的主動權還給學生,增強學生的自主學習能力,當然,教師的主導地位不能變。在組織學生上機實踐的過程中,教師可以適當地設計一些連續的作業。例如,學完循環結構后,在上機時先帶領學生分析一個程序,其功能是輸出四行六列并且是由星形符號構成的圖案[1,2]。教師可以通過以下步驟引導學生上機實踐:
步驟1:教師可用多種編程方法進行程序演示。①利用普通的輸出函數如何解決;②利用單循環如何解決;③利用雙重循環如何解決;④說明雙重循環的優點及特征,然后讓學生自行編寫并運行程序。
步驟2:待學生完成任務后,在原程序基礎上,進一步提出新問題,讓學生學會靈活編程。①若要輸出每行“#”與“*”相間的四行六列圖案應該如何修改程序;②若要輸出每行兩個連續的“#”和3個連續的“*”的四行五列圖案應該如何修改程序;③若要輸出用“*”組成的一個正三角形應如何修改程序;④行列數在這里是固定的,可否通過鍵盤隨機輸入,等等。
以上問題均可通過修改步驟1中編好的程序逐步解決,每次修改的幅度均不大,難度也是緩慢增加,學生在不知不覺中得到了編程的訓練,在很短的時間內掌握了所學知識并靈活運用,學生會擁有成就感,同時會意識到,只要自己肯動腦,問題就會很快解決,從而激發了學生的學習主動性。
2.3以項目為牽引,強化學生課后自主學習
在完成一定的教學任務后,及時布置項目作業,訓練學生對所學知識的靈活運用能力,并使每一階段的內容有足夠的焦點,讓學生輕松消化每個知識。
在布置項目時,除要包含所學內容的焦點問題外,還要特別注意對新知識的遷移,也就是說,可以在項目中涉及少量的學生沒有學過的知識點,促使學生主動探究、主動解決,教師在恰當的時候再給出解答方案,最后由學生自己總結得出項目結果。這么做不僅讓學生學習的心態更加主動,而且讓學生更具有成就感。
第二篇:C語言循環嵌套結構教學設計探究
C語言循環嵌套結構教學設計探究
摘 要:C程序循環嵌套結構設計是C程序循環結構教學一章的重點與難點內容,是后續數據結構課程算法實現中使用頻率最多的語句,是進行復雜程序設計的基礎。該文將針對初學者實際情況,通過教學實例的設計,由淺入深,采用類比、啟發等多種教學方法,分析循環嵌套結構程序的設計思路與設計方法,幫助學生掌握C語言循環嵌套結構設計的實質,提高利用循環嵌套結構解決實際問題的能力。
關鍵詞:C語言 循環嵌套 教學設計
中圖分類號:TP31 文獻標識碼:A 文章編號:1674-098X(2015)03(a)-0120-02
The Inquiry Teaching Design of Nested Loop Structure on C Language
Duan Hongyi,Wang Huihui
(Science Department of Hetao College,Bayannaoer,Inner Mongolia,015000,China)
Abstract:The C program nested loop structure design is the key and difficult points in chapter C program loop structure teaching,is the follow-up data structure course algorithm in the most frequently used sentence,is the basis for complex programming.This paper will according to the actual situation of beginners,by design,the teaching examples from the shallower to the deeper,by analogy,inspiration and so on many kinds of teaching methods,design analysis and design method of loop nesting structure of the program,to help the students to grasp the essence of C language nested loop structure design,improve the ability of using the nested loop structure to solve the practical problems.Key Words:C language;Loop nests;Teaching design
C語言是一門面向過程的結構化程序設計語言,其程序設計的基本結構單元主要由順序結構、選擇結構與循環結構三種基本結構組成。其中選擇結構與循環結構在程序設計中最為重要且使用較多,對于后續課程數據結構來說,其算法實現主要以這兩種結構為主,所以在學習數據結構之前,學生必須要通過C語言的學習打下良好的程序設計基礎,深入理解并掌握這兩種程序結構,并能夠正確設計與閱讀理解這兩種結構的程序。在循環結構程序設計中,循環的嵌套程序設計是一個重點與難點內容,該文結合作者從教以來教授C語言的教學經驗及心得體會,探討如何教會學生理解并掌握循環嵌套結構的設計,提高利用循環嵌套解決實際問題的能力。循環嵌套教學內容引入及設計
循環嵌套結構程序設計的基礎是循環結構,在學習循環嵌套結構程序設計之前需要掌握C語言中實現循環結構的三種語句,while語句、do...while語句以及for語句,在此基礎上學習循環的嵌套。首先需要知道循環嵌套的概念:一個循環的循環體內包含另外一個完整的循環結構,稱為循環的嵌套,內嵌的循環還可以繼續嵌套循環,構成多層循環。循環的嵌套結構本質上仍是一個循環語句,只不過其循環體為一個循環語句罷了。C語言中三種循環語句可以互相嵌套構成循環嵌套結構。由于for語句在C語言中最為靈活,下面以for語句為例來討論循環的嵌套結構。
1.1 循環嵌套結構程序的引入
為了便于理解循環嵌套,首先舉一個簡單的循環結構的例子來引入嵌套。
例1:輸出123456789。
該例子如果利用for循環設計,學生可以輕松寫出如下語句。
int i;
for(i=1;i<=9;i++)
printf(“%d”,i);
如果對該例進行修改,要設計以下程序。
例2:輸出5行123456789。對于該例來說,可以使用循環的嵌套來設計程序。
1.2 循環嵌套結構設計
我們可以利用循環語句的設計思路來解決這個問題,這個例子的關鍵在于循環體語句為輸出123456789及換行符,即要循環5次123456789以及換行符。這里我們先把上述代碼以及輸出換行符語句看成一個整體即一個語句塊。比如用語句塊一來表示,則可以寫出如下的程序代碼。
int j;
for(j=1;j<=5;j++)
{
語句塊一;
}
由于語句塊一的代碼為:
int i;
for(i=1;i<=9;i++)
printf(“%d”,i);
printf(“\n”);
所以將語句塊一用上述代碼進行替換,可以寫出例2完整代碼如下:
int j;
for(j=1;j
{
int i;
for(i=1;i<=9;i++)
printf(“%d”,i);
printf(“\n”);
}
通過這個例子看出,外循環決定內循環(把內循環看成一個整體)的執行次數,而內循環則控制每行內循環的次數。在這個例子中,內循環變量與外循環變量之間沒有關系,下面我們再來看一個稍微復雜一些的例子,內循環變量執行的次數取決于當前的外循環變量,來進一步理解循環嵌套結構程序。
例3:設計程序輸出如下的圖案數字。
2
3
4
5
這個例子要打印5行數字,故外循環次數為5,設外循環變量為i,取值為1~5,再看每一行要打印的數字的個數為1,2,3,4,5,即循環的次數為1,2,3,4,5,假設用j表示內循環變量,那么,內循環變量與外循環變量有什么關系?假設我們要打印的是第i行上的數字,可以發現其打印的數字j取值為1到i。找到了規律就可以寫出的循環嵌套程序段:
int i,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=i;j++)
printf(“%d ”,j);
printf(“\n”);
}
通過這個例子我們可以引導學生,寫出如下圖案的程序段。
例4:設計程序輸出如下的圖案數字。
3
5
7
9
提示學生這個程序可以有2種寫法。
第一種寫法:通過觀察,發現例3與例4只是每一行上輸出的數字不同,即需要修改例3的內循環語句printf(“%d ”,j);即可。顯然第i行上打印的是一個等差數列,其打印的第j個數字應為2*j-1。即例4對應的語句為printf(“%d ”,2*j-1);
第二種寫法:不改變例3的printf(“%d ”,j);輸出語句,則需要修改內循環for(j=1;j<=i;j++),分析可知第i行的內循環次數為i,而打印的數字最大值j為2*i-1,后一個打印的數比前一個數大2,即步長為2,則將例3的內循環語句改為for(j=1;j<=2*i-1;j+=2)即可。
通過上面例
3、例4兩個程序的設計,學生基本上能夠掌握循環的嵌套結構了,對循環的嵌套有了更深入的理解,并能利用循環嵌套結構設計并解決簡單的實際問題了。
例5:打印如下圖的九九乘法表。
這個例子與例3比較相似,一共要打印九行,故外循環為9次,假設用i來表示外循環變量,其值應為1到9;第i行打印輸出i個數,假設用j來表示內循環變量,即內循環變量j取值為1到i。并且能寫出第i行第j個要打印輸出的數為:printf(“%d×%d=%4d”,j,i,j*i);有了例3,例4的基礎可以寫出如下的程序:
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf(“%d×%d=%4d ”,j,i,j*i);
printf(“\n”);
}
結語
在循環嵌套結構設計教學中,教師要充分考慮學生的實際情況,要考慮不同專業、不同層次學生的理解能力,設計針對學生實際情況的教學用例,從淺顯易懂的例子出發,逐步引導學生思考,采用類比,啟發等多種教學方法,教學實踐證明,這種方法能夠很好的調動學生的學習積極性,學生的理解能力與程序設計能力有了明顯的提高。
參考文獻
[1] 譚浩強.C程序設計[M].4版.北京:清華大學出版社,2010.[2] 劉井蓮,趙衛績.C/C++循環嵌套教學實踐[J].電腦知識與技術,2012(25).[3] 唐紅杰.C語言循環結構教學探討[J].軟件工程師,2014(10):49-50.[4] 劉運,程家興.圖形打印案例在計算機高級語言教學中的應用研究[J].山東農業工程學院學報,2014(6):48-49,58.
第三篇:C語言循環結構教學設計方案
《C語言循環結構》教學設計方案
一、教學內容分析
循環結構是面向過程編程中三種結構中最重要的一種結構,學好它是學好這門課程的關鍵。循環結構的實質是重復執行一系列語句,這種重復性是在循環條件的有效控制之下完成的。程序的關鍵在于如何控制循環的條件,在恰當的時機執行循環或退出循環。
二、學習者分析
循環結構是一種比較復雜的結構,在C語言中,循環結構主要包括for、while和do-while三種語句,其中for語句的應用更為普遍一些。循環語句的用法對于有程序設計經驗的學生來說輕而易舉,但是對于那些沒有經驗的初學者來說,難度卻不小。在一堂課的設計過程中,引例的作用至關重要。一個好的引例能把抽象問題簡單化、具體化,有利于學生理解掌握。在學習循環結構時可先利用現實生活中的一些具體實例來說明什么是循環以及為什么要研究循環讓一名初學者盡快擺脫日常的思維定式,更加透徹地理解和掌握程序設計中的基本思想,領會程序設計的精髓,總結出程序設計中每一種程序設計結構的本質及適合解決的問題,是高級語言程序設計這門課程在講授過程中,應該時刻注意的問題。
三、教學目標
1.知識與能力
掌握循環構造的基本特點;區分多種不同類型循環結構的運行過程;掌握循環結構的格式及應用方法。
2.過程與方法
首先學會區分多種不同類型的循環結構,而后學會定義及應用方法,利用上機熟練應用技巧。
3.情感態度與價值觀
我們必須抱有自己想學習的心態,多去問老師一些問題,那么你的漏洞將會越來越少,程序量和代碼量才會越來越多。
四、重點難點及處理
1.循環語句的的分類和定義
For循環、while循環和do-while循環
特點:在一個程序中可以通過變換語句來使用不同的循環語句,而不改變程序的功能。
2.循環語句的引用
例如:要從1累加到100
使用For循環: for(sum,=0,i=1;i<=100;i++)sum=sum+i
使用while循環:while(i<=100)sum=sum+i
使用do-while循環:do {sum=sum+i;} while(i<=100)
五、教學準備
1.PPT教學課件
2.實驗操作:Visual C++6.0軟件平臺,PC電腦,教學機房,網絡課堂。
六、教學思路(教學策略等)
在一堂課的設計過程中,引例的作用至關重要。一個好的引例能把抽象問題簡單化、具體化,有利于學生理解掌握。在學習循環結構時可先利用現實生活中的一些具體實例來說明什么是循環以及為什么要研究循環。現在我們可以提出一個問題:在計算機程序設計的世界
里是否也有類似的這種相同操作重復出現的問題呢?利用最簡單累加求和的例子。
例:求1+2+3+4+5+?+100的和。
下面就可以引出本節課的重點,通過分別使用For循環、while循環和do-while循環來完成本程序,我們在整個過程中都做著重復的、相同的事情,也就是前面所說的循環,在試著寫出比較簡單的程序時,可以試著選擇素數或者奇數累加來增加難度,還可以使得讓學生接受和探究雙重循環。
七、教學過程 教學引入
掌握掌握循環結構的基本特點:for語句、while語句和do-while語句 如何計算1+2+3+4+?+100 知識點學習
1)for循環是循環的一種標準形式,通過for語句實現,其語法如下:
for(①;②;③)④
①表達式,通常用于循環的初始化。包括循環變量的賦初值、其他變量的準備等;
②表達式,循環的條件判斷式,如果為空則相當于真值;
③表達式,通常設計為循環的調整部分,主要是循環變量的變化部分; ④循環體,由一條或多條語句構成,多條語句需要用一對花括號括起來。
2)while循環通過while語句實現。while循環又稱為“當型”循環,其語法如下
while(①)②;①表達式,循環的條件判斷式,若值為0,則結束循環,退出while語句;若值為非0,則執行循環體
②循環體,由一條或多條語句構成,多條語句需要用一對花括號括起來。
3)do-while循環,又稱為“直到型”循環,用do-while語句來實現,其一般格式為:
do { ①;} while(②);do-while語句的執行過程為:
先執行循環體①,再判斷表達式②的值。若值為0,則結束循環,退出do-while語句;若值為非0,則繼續執行循環體
4)break語句、continue語句和goto語句
break語句不能用于循環語句和switch語句之外的任何其他語句中,功能為無條件退出循環。
continue語句只結束本次循環,判斷下一次循環環條件,滿足繼續循環,否則退出循環。
goto語句為無條件轉向程序中的某條語句。
思考與探究
分別使用For循環、while循環和do-while循環來累加出1-100之間的奇數和。
實踐與操作
不管是用or循環、while循環和do-while循環都好,核心算法是類似的,由于要累計出1-100之間的奇數,定義i從1開始,每次累加2即可,把i賦值給sum,直到i大于100即跳出,例使用while循環寫出如下語句:
#include
循環結構是面向過程編程中三種結構中最重要的一種結構,學好它是學好這門課程的關鍵。本章介紹的內容主要是For循環、while循環和do-while循環,同時也介紹了下break語句、continue語句和goto語句。while循環和do-while循環的條件判斷一個在前,一個在后,為導致循環體執行的次數不同,需要密切注意;for循環為標準的功能很強的循環,通常用于可控制的循環,對于程序的維護和閱讀都是最佳選擇。循環結構的實質是重復執行一系列語句,這種重復性是在循環條件的有效控制之下完成的。程序的關鍵在于如何控制循環的條件,在恰當的時機由“真”變“假”而退出循環。
八、形成性評價試題
如題所示計算表達式s=1+(1+2)+(1+2+3)+?+(1+2+3+4+?+10),請寫出程序并計算出S的值。
#include
第四篇:C語言循環結構實習報告 - 副本
認識(實習)報告 實驗(實習)名稱循環結構程序設計 日期得分指導教師系專業年級班次姓名學號
一、實驗目的(1)掌握在程序設計條件型循環結構時,如何正確地設定循環條件,以及如何控制循環的次數。
⑵了解條件型循環結構的基本測試方法。
⑶掌握如何正確地控制技術型循環結構的次數。
⑷了解對技術型循環結構進行測試的基本方法。
⑸了解在嵌套循環結構中,提高程序效率的方法。
二、實驗內容
1.輸入一個正整數,并將其顛倒過來,如12345對應54321.程序 :
#include
#include
int main()
{
int n,m,t=0;
scanf(“%d”,&n);
if(n<0)
{
printf(“數據輸入錯誤!n”);
exit(0);
}
while(n!=0)
{
m=n%10;
t=t*10+m;
n=n/10;
}
printf(“反序數為: %dn”,t);
return 0;
}
運行:
12345
反序數為: 54321
Press any key to continue
2.將一個長整型數s的每一位數位上的偶數依次取出來,構成一個新的數t,其高位仍在高位,低位仍在低位,如s=87653142時,t中的數為8642.程序:
#include
int main()
{
long s,t=0,p=1;
scanf(“%ld”,&s);
while(s!=0)
{
if((s%10)%2==0)
{
t=t+(s%10)*p;
p=p*10;
}
s=s/10;
}
printf(“%ld“,t);
return 0;
}
運行:
87653142
8642
Press any key to continue_
3.判斷101~200之間有多少個素數。
程序:
#include
#include
int isprime(int m);
int main()
{
int n,s=0;
for(n=101;n<=200;n++)
{
if(isprime(n))
s++;
}
printf(”%dn",s);
return 0;
}
int isprime(int m)
{
int i;
for(i=2;i<=sqrt(m);i++)
if(m%i==0)
return 0;
return 1;
}
運行:
Press any key to continue_
三、分析與討論
(1)總結條件循環結構的一般方法。
(一)for循環
for循環的一般形式為:
for(<表達式1>;<表達式2>;<表達式3>)
{
語句序列
}
(1)先求解表達式1,然后求解表達式2,若其值為真(true),則執行for語句中內嵌的循環語句;若其值為假(false),則結束循環轉到{ }后面的語句執行。
(2)求解表達式3。
(3)轉回上面求解表達式2,繼續執行。
(4)循環結束,執行for語句下面的一個語句。
(二)while語句
while(表達式)
{
語句序列
}
其語義是,首先計算表達式的值,當值為真(true)時,返回循環體語句;當值為假(false)時結束循環。直到表達式的值為0,則執行結構后面的語句。
特點:先判斷,后執行。
(三)do-while語句
do
{
語句序列
}while(表達式);
特點:先執行,后判斷。
當循環條件為真(true)時反復執行循環體,直到循環條件為假(false)終止循環。因此,其循環體將至少被執行一次。
如果for、while或do-while循環控制語句的循環體中又包含循環控制語句就構成了嵌套循環。這3種循環語句之間可相互嵌套,構成復雜的邏輯嵌套結構。
(2)如何測試計數型循環結構的控制表達式中的錯誤?
斷點,或使用try,catch拋出異常
(3)從實驗中你得到了哪些提高嵌套循環程序效率的啟示?
1.注意把循環次數大的循環放在嵌套語句的外層可以產生較好的效率.2.靈活、巧妙運用三種循環語句結構來實現嵌套。
第五篇:《循環結構》教學設計
《循環結構》教學設計
一、教學內容分析
《循環結構》是人民教育出版社課程教材研究所編著的《普通高中課程標準試驗教科書數學3(必修)》(A版)中§1.1.2的第二課時的內容。(1)算法是高中數學課程中的新內容,算法的思想是非常重要的,算法思想已逐漸成為每個現代人所必須具備的數學素養。(2)本節課的內容是循環結構,它與順序結構、條件分支結構是算法的三種基本邏輯結構,可以表示任何一個算法。并且循環結構是算法這一部分的重點和難點,它的重要性就是充分體現計算機的優勢,也即能以極快的速度進行重復計算。
二、學生學習情況分析
學生已經學習了有關算法和框圖的基礎知識。絕大多數同學對算法和框圖的學習有相當的興趣和積極性。但在探究問題的能力,應用數學的意識等方面發展不夠均衡,尚有待加強。
三、設計思想
建構主義學習理論認為,建構就是認知結構的組建,其過程一般是引導學生從身邊的、生活中的實際問題出發,發現問題,思考如何解決問題,進而聯系所學的舊知識,首先明確問題的實質,然后總結出新知識的有關概念和規律,形成知識點,把知識點按照邏輯線索和內在聯系,串成知識線,再由若干條知識線形成知識面,最后由知識面按照其內容、性質、作用、因果等關系組成綜合的知識體。也就是以學生為主體,強調學生對知識的主動探索、主動發現以及學生對所學知識意義的主動建構。基于以上理論,本節課遵循引導發現,循序漸進的思路,采用問題探究式教學,運用多媒體,投影儀輔助,倡導“自主、合作、探究”的學習方式。具體流程如下:
創設情景(課前準備、引入實例)→授新設疑(自主探索形成概念→理解概念能識別框圖)→質疑問難、論爭辯難(進一步加深對概念的理解→突破難點)→溝通發展(反饋練習→歸納小結)→布置作業。
四、教學目標
理解循環結構,能識別和理解簡單的框圖的功能,通過模仿、操作、探索,學習設計程序框圖表達,解決問題的過程,發展有條理的思考與表達的能力,提高邏輯思維能力;能運用循環結構設計程序框圖解決簡單的問題,感受和體會算法思想在解決具體問題中的意義,增強學生的創新能力和應用數學的意識。
五、教學重點與難點
重點:理解循環結構,能識別和畫出簡單的循環結構框圖。
難點:循環結構中循環條件和循環體的確定。
六、教學過程設計
(一)創設情境
引例:德國著名數學家高斯幼年時代聰明過人,上學時,有一天老師出了一道題讓同學們計算:
1+2+3+4+…+99+100=?
老師出完題后,全班同學都在埋頭計算,小高斯卻很快算出答案等于5050。(課本例6)你能否寫出求法,并用框圖表示你的算法。
此例由學生動手完成,投影展示學生的做法,師生共同點評。鼓勵學生一題多解。
【設計意圖】通過高斯求和的故事,復習順序結構,提出遞推求和的方法,導入新課。此環節旨在提升學生的求知欲、探索欲,使學生保持良好、積極的情感體驗。
(二)授新設疑
1.循序漸進,理解知識
(1)引進“計數變量”、“累加變量”。借助“計數變量”和 “累加變量”使學生經歷把“遞推求和”轉化為“循環求和”的過程,同時經歷初始化變量,確定循環體,設置循環終止條件3個構造循環結構的關鍵步驟。①將“遞推求和”轉化為“循環求和”的緣由及轉化的方法和途徑 引例“求的值”這個問題的自然求和過程可以表示為:
用遞推公式表示為:的值的一個算
直接利用這個遞推公式構造算法在步驟中使用了共100個變量,計算機執行這樣的算法時需要占用較大的內存。為了節省變量,充分體現計算機能以極快的速度進行重復計算的優勢,需要從上述遞推求和的步驟
中提取出共同的結構,即第步的結果=第(-1)步的結果+。若引進一個計數變量來表示計算到第幾步,一個累加變量則第步可以表示為賦值過程②“”、“
”的含義
來表示每一步的計算結果。
利用多媒體動畫展示計算機中計數器的工作原理,借助形象直觀對知識點進行強調說明 1)量。
2)賦值號“=”右邊的變量“”表示前一步累加所得的和,賦值號“=”左邊的“”表示該步累加所得的和,含義不同。3)賦值號“=”與數學中的等號意義不同。4)邊的變量的作用是將賦值號右邊表達式。(類比
理解)
在數學中是不成立的。的值賦給賦值號左的作用是將賦值號右邊表達式的值賦給賦值號左邊的變借助“計數變量”、“累加變量”既突破了難點,同時也使學生理解了“”、“
”的含義。
③初始化變量,設置循環終止條件 由的初始值為0,的值由1增加到100,可以初始化循環變量和設置循環終止條件。(2)循環結構的概念
從某處開始,按照一定條件,反復執行某一處理步驟的結構稱為循環結構。
教師學生一起共同完成引例的框圖表示,并由此引出本節課的重點知識循環結構的概念(循環變量、循環體、循環終止的條件)。
【設計意圖】這樣講解既突出了重點又突破了難點,同時學生在教師引導下,在已有探索經驗的基礎上,借助多媒體的形象直觀,共同完成問題的抽象過程和算法的構建過程。體現研究問題常用的“由特殊到一般”的思維方式。2.類比探究,掌握知識
例1:改造引例的程序框圖表示 ①求②求③求的值 的值 的值 此例可由學生獨立思考、回答,師生共同點評完成。
【設計意圖】通過對引例框圖的反復改造逐步幫助學生深入理解循環結構,體會用循環結構表達算法,關鍵要做好三點:
① 確定循環變量和初始值 ② 確定循環體 ③ 確定循環終止條件。
例2:根據程序框圖回答下面的問題
圖A
圖B(1)圖中箭頭指向①時,輸出=_____。
(2)該程序框圖的算法功能是_______________________。(3)去掉條件“
”按程序框圖所蘊含的算法,能執行到底嗎,若能
=______;指向②時輸出執行到底,最后輸出的結果是什么? 對比練習:(1)圖B輸出
=_____。(2)圖A指向②時與圖B有何不同?你能得到什么結論?
(3)對比“引例”與“例2”的程序框圖,試說明二者的區別和聯系? 可由學生小組討論,教師巡視,加強對學生的個別指導,再由學生分析。
例2是寫出程序框圖的運算結果,及其功能。
【設計意圖】設計此例的目的是讓學生通過類比意識到:
①循環結構不能是永無終止的死循環,一定要在某個條件下終止循環,這就需要條件結構來做出判斷,因此,循環結構一定包含條件結構。
②循環結構中語句的順序對算法的影響。③當型循環結構與直到型循環結構的區別。
(三)質疑問難、論爭辯難
例3 圖(1),圖(2),圖(3),圖(4)是為計算而繪制的程序框圖。根據程序框圖回答下面的問題:
圖(1)
圖(2)
圖(3)
圖(4)
①其中正確的程序框圖有哪幾個?錯誤的要指出錯在哪里。
②錯誤的程序框圖中,按該程序框圖所蘊含的算法,能執行到底嗎?若能執行到底,最后輸出的結果是什么?
③根據上面的回答總結出應用循環結構編制程序框圖應該注意哪幾方面的問題?
【設計意圖】通過類比,自主探究,幫助學生深入理解知識,完善知識結構,提升認知水平。通過小組討論,實現生生互動,師生互助,豐富情感體驗,活躍課堂氣氛。
(四)溝通發展、歸納小結 1.溝通發展
仿照本節課例題,同桌倆人一人編題一人解答。【設計意圖】通過練習進一步鞏固所學知識,培養和提升學生的認知水平。溝通發展,有助于及時查漏補缺,保持學生學習的熱情和信心。2.課后小節
①理解循環結構的邏輯。
②明確條件結構與循環結構的區別,聯系。③當型循環結構與直到型循環結構的區別。④數學思想方法:算法思想,類比方法。
【設計意圖】通過小結使學生對本節課的知識有一個全面的認識,掌握知識。為今后學習其它知識打基礎。
(五)布置作業
①課本P11習題1-1 A組 2
②課外拓展:寫出一個求滿足1×2×3×…×n>5000的最小正整數的算法并畫出相應的程序框圖。
【設計意圖】書面作業第一個層次要求所有學生完成,第二個層次,只要求學有余力的同學完成。體現了差異發展教學。
七、教學反思
循環結構這部分內容在算法中起著承上啟下的作用。本節施教過程中,基本完成設計構思,教學效果良好,但仍發現一些不足之處:
1、學生對循環終止條件的確定還存在一定困難,尤其循環體中“”、“”的順序對終止條件的影響。
”、“
”中滲透的函數思
2、教學過程中對循環體“想(數學本質)體現不夠。對算法教學的思考:教材將“算法與程序框圖”和“基本算法語句”分開處理。是否將這兩部分內容結合起來處理,在講基本結構的時候,通過基本算法語句在計算機上演示計算結果,是否會更生動,效果會更好。強調基本結構,適當降低程序框圖和算法語句的難度(學生反映其中的一些例題結構太復雜,理解比較吃力)。
算法作為數學與計算機技術的橋梁,體現了數學研究的一個新的方向,其作用是勿庸質疑的,但作為高中數學課程中的新內容,如何將其更完美地展現給學生,還需大家共同努力!