《遞歸》

《遞歸》

遞歸做為一種算法在程式設計語言中廣泛套用.是指函式/過程/子程式在運行過程中直接或間接調用自身而產生的重入現象.遞歸是計算機科學的一個重要概念,遞歸的方法是程式設計中有效的方法,採用遞歸編寫程式能使程式變得簡潔和清晰.。

【說明】:此教學設計任務由南京曉莊學院現代教育技術課程老師yqiong參與教師-維基星光計畫進行wiki教學而發布。此詞條為範例詞條,由孟星祥選定主題並負責、參與現代教育技術課程的所有同學協作共同完成!

基本信息:

科目:信息技術教學對象:大學一年級
課時:2教學環境:計算機網路教室

學習者特徵分析:

在第一章的學習中,學生已經經歷了利用計算機解決問題的基本過程,領略了用計算機解題的奇妙之道,感悟了程式設計是其中的關鍵環節,對程式設計已經產生一定興趣,但由於在程式設計過程中,涉及數學、英語學科知識點較多,學生還沒有足夠的相關知識儲備且我校學生基礎薄弱,這樣主、客觀兩方面的因素造成在進行“設計算法”、“編寫程式”環節教學,會存在一定困難,難以深入開展下去。

學習內容分析:

本節課的教學內容是高等教育出社版、普通高等教育“十一五”國家級規劃教材《c語言程式設計教程》(第三版)
中的第4章4.15節《遞歸函式》,是在學習了c語言的基本數據類型、常量、變數、函式表達式等程式設計語言和程式順序結構的基礎上,了解了函式結構、聲明、調用後學習的,其中包括遞歸函式的特點和如何設計遞歸函式。

教學目標分析

1、知識與技能:

掌握c語言的遞歸語句的格式、功能、執行過程;能夠利用遞歸函式編寫簡單的遞歸的程式;
掌握c語言的關係表達式、邏輯表達式等程式設計語言的基本知識。

2、過程與方法:

通過任務引導學生經歷分析問題、設計算法、編寫程式、調試程式等用計算機解決問題的過程,讓學生初步學會使用遞歸語句來實現控制項結構。
進一步掌握程式調試運行的方法。

3、情感態度與價值觀:

程式設計選取的題目都是生活中遇到的例子,加強學生利用本學科解決日常生活中的問題的意識。
通過解決生活中的實筆法問題,體驗成功的快樂

教學重點與難點 :

重點:

1.理解c語言遞歸語句的格式、功能、執行過程。
2.掌握c語言的關係表達式、邏輯表達式等程式設計語言的基本知識。

難點:

在理解條件語句的基礎上,如何利用計算機來解決生活中的實際問題。

教學策略的選擇與設計

本節課主要採用了講授法小組合作式,自主探究學習方法,任務驅動法,強化練習法,交流討論法等。
從學生日常生活問題入手,快速自然的引導學生走進主題,明確本節課的學習目標,引發學生積極思考;講授新課內容,以醒目的方式將遞歸語句的格式、功能和執行過程呈現給學生;以小組合作的方式,在討論與探究中完成任務;把滑鼠還給學生,自己動手實踐,通過漢諾塔問題驅動學生完成任務,課程安排形成循序漸進的梯度,充分挖掘學生潛力;展示評價環節,讓學生在交流討論中明確條件選擇語句的執行流程及使用方法,逐步建構規範合理的利用計算機解決日常生活中問題的意識。在結束環節,以課後作業強化練習法結束本節課,使學生對遞歸語句的暫時記憶轉化為長期記憶。
《遞歸》-教學過程與媒體資源

教師活動:

教師提出古代的漢諾塔遊戲一起學深興趣,講解遊戲規則。

漢諾塔模型漢諾塔模型

漢諾塔:

在印度,有這么一個古老的傳說:在世界中心貝拿勒斯(在印度北部)的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有一個僧侶在按照下面的法則移動這些金片:一次只移動一片,不管在哪根針上,小片必須在大片上面。僧侶們預言,當所有的金片都從梵天穿好的那根針上移到另外一根針上時,世界就將在一聲霹靂中消滅,而梵塔、廟宇和眾生也都將同歸於盡。
不管這個傳說的可信度有多大,如果考慮一下把64片金片,由一根針上移到另一根針上,並且始終保持上小下大的順序。這需要多少次移動呢?這裡需要遞歸的方法。假設有n片,移動次數是f(n).顯然f(1)=1,f(2)=3,f(3)=7,且f(k+1)=2*f(k)+1。此後不難證明f(n)=2^n-1。n=64時,
f(64)=2^64-1=18446744073709551615
假如每秒鐘一次,共需多長時間呢?一年大約有31536926秒,計算表明移完這些金片需要5800多億年,比地球壽命還要長,事實上,世界、梵塔、廟宇和眾生都早已經灰飛煙滅。

學生活動:

學生觀察漢諾塔遊戲模型,找出其規律。

設計意圖:

用一個遊戲提起學生興趣,讓學生自己找規律,能提高其興趣。

媒體資源:

幻燈片,漢諾塔模型。

新課探究—遞歸的格式

教師活動:

(1)分析問題:要解決這個問題,用我們上三節課學的程式語句能解決嗎?我們可以引到學生,有一個盤子時需要最少幾步,兩個時,三個時分別是需要幾步,然同學們找出其規律。
(2)指導學生設計算法,
檢查學學生設計的算法,讓兩個小組的代表到黑板前析書他們的算法設計,組織學生討論各組算法的合理性。
(3)編寫程式代碼:詳細講解程式代碼的編寫,通過程式介紹遞歸語句的格式。
longrfact(intn)
{
if(n<0)
{..............}
elseif(n<=1)
return(1);
else
return(n*rfact(n-1));
(4)調試程式,指導學生上機調試運行程式,將兩種格式的條件語句都上機運行,加深學生對遞歸語句的理解的。

學生活動:

(1)學生分析問題,然後試著設計算法。
(2)兩組學生代表到黑板板書他們的算法設計。學生討論算法的可行性。
(3)學生仔細聽講,掌握遞歸語句的基本格式
(4)學生上機高度運行程式,體驗解決問題的快樂。
設計意圖:通過與學生分析問題,引導學生經歷分析問題,設計算法、編寫程式,高度程式的過程中,讓學生體驗解決問題的快樂。
媒體資源:幻燈,黑板,粉筆,計算機
新科探究—變數的儲存屬性

教師活動:

(1)引導學生通過探究學習變數的存儲屬性。
(2)結合剛才的例子,引導學生理解變數作用域。
(3)布置學生自學變數屬性。
(4)演示變數與局部變數現象:
#include<stdio.h>
inyn=3;
intmain(void)
{
intn=5;
printf("n=%d\n",n);
return0;
}
結果:
n=0

學生活動:

(1)學生自行探究,了解變數的作用域。
(2)學生在教師引導下理解變數的存儲屬性。
(3)學生自學變數作用域,然後回答小測試
(4)學生按照分析問題,設計算法,編寫屬牟步驟試著為小練習設計算法和編寫程式代碼。

設計意圖:

(1)通過探究,培養學生的自學習慣,提高學生自主探究的能力
(2)將變數作用範圍放在例題中進行講解,讓學生更容易理解條件語句的執行過程。
(3)小測試的目的是為了加深學生對變數作用域的理解
(4)通過一個小練習,加深學生對條件語句的理解,提高學生以知識解決問題的能力。
媒體資源:幻燈,黑板,粉筆,計算機

拓展學習:

教師活動:

(1)布置自學:通過剛才的例題,我們知道了變數的不同作用域會導致不同結果。如果我們只用一個變數,如何做出兩個不同結果。
(2)檢查學生自學情況
(3)請某小組代表介紹小組的學習情況,並演示程式運行效果。請其他小組評價該小組學習效果。
(4)小結該小組學習效果。
學生活動:
(1)學生以小組形式按分析問題,設計算法,編寫程式,調試運行。
(2)某小組代表講解自己小組的學習經驗,展示算法和程式代碼,並調試運行。
(3)學生對該小組學習形成、效果進行評價。
設計意圖:
(1)通過對變數作用域的理解,明白函式調用過程。
(2)通過循序漸進的方式,讓學生在已有基礎上學習新知識,培養學生的自主學習能力。

教學流程圖:

教學流程圖教學流程圖

教學評價

1、學生自評表:

知識評價:
我知道了遞歸函式的特點。
我掌握了用遞歸函式解決簡單問題的方法。
學生課堂表現評價
認真、積極、自信、善於與人合作、思維的條理性、思維的創造性
能力評價:
和自己比,這節課我能拿個“”(A、B、C、D)。

2、教師評價:

課堂表現評價:

評價我的學生A(優秀)B(良好)C(合格)選答
學生對條件語句形式的理解表達清晰能基本描述不能描述
學生練習的完成情況全部能完成大部分能完成少部分完成
學生對討論交流的態度非常投入較積極應付式
學生們小組合作情況分工明確,合作有效有合作,但分
工不盡合理
分工合作不合理

知識內容掌握程度評價:
編寫一個程式,求10的階乘。

備註與反思

本課時從找出漢諾瑪遊戲規則出發,通過講授法、自主探究、小組合作學習法等,讓學生經歷分析問題,設計算法,編寫程式,調試運行的過程,學習遞歸函式的基本格式和運用。設定的問題簡單,能幫助學生克服胃難情緒論,又從最貼進學生的成績入手,提高學生的學習興趣。
在教學的實施過程中要注重個體差異,學生程式不一,接收能力也會不一,對學生的評價要求就不能一樣。當個別學生因能力問題不能及時完成學習任務時,也要根據學生的進度給予適當的肯定,以增加學生的自信。

相關詞條

相關搜尋

熱門詞條

聯絡我們