亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        程序設計語言中較難理解算法的課堂教學方法

        2013-04-29 00:00:00周汝雁韓彥嶺張明華王令群李凈
        計算機教育 2013年6期

        摘要:針對c語言程序設計課程中較難理解和掌握的知識點的授課方法,以計算思維理念為導向,進行思考和分析,探索出一種先給出問題描述,讓學生參與問題解決,歸納總結解決方法和過程,得到算法,并用c語言程序實現算法的講授方法。文章介紹這種教學方法的實施過程。關鍵詞:程序設計語言;算法;歸納總結;計算思維;教學方法

        1、計算思維理念指導的計算機程序語言教學

        由于C語言是一種既可作為系統(tǒng)描述,又可編寫系統(tǒng)軟件和應用軟件的計算機高級語言。因此,“C語言程序設計”是初學計算機語言的一門重要的程序設計語言課程。許多高校都將“C語言程序設計”課程作為計算機專業(yè)及其他專業(yè)學習計算機語言的第一門必修課。該門課程的開設不僅可以培養(yǎng)學生利用計算機解決問題的能力,還是后續(xù)計算機專業(yè)相關課程甚至非計算機專業(yè)一些課程的重要基礎。

        目前,語言程序設計課程的教學方法主要是基于案例或程序,利用多媒體輔助教學方法為主,任務驅動教學法和項目教學法也同時使用。課程的教學過程一般是按照教材編排的章節(jié)順序進行講授,即先介紹變量定義,再逐條介紹指令語句的語法,然后針對某—條指令列舉一段簡單程序,甚至_段不完整的程序。這樣安排教學內容,會使學生很快就感到厭倦,造成看似明白某種問題要用某些指令語句或某種算法,但在實際解決問題或編程時,便不知如何下手的情況,特別是在講授c語言程序設計中的一些相對較難的算法時,例如函數的遞歸調用方法以及建立動態(tài)鏈表,在講授過程中,一般是按照為了解決某個問題,需要采用某種算法或方法,并直接給出算法案例或程序,用于解決該問題。這種講授方法會讓學生覺得算法很抽象,編寫出的程序較死板,甚至會死記硬背,將程序代碼與應用硬性結合,而不是將算法與應用結合,不懂得程序由算法而來,導致當遇到類似問題時,只會套用死記硬背的代碼,而不能正確地寫出解決新問題的程序代碼。另外,這種課堂教學模式由于過于注重語句語法,不能突出解決問題的思路和方法,更沒有讓學生參與問題的思考,難以調動學生學習的積極性。學生甚至認為在學習語法和算法的過程中只要跟著老師或課本上講授的方法學就可以了,不需要有自己的思考。

        立足于培養(yǎng)創(chuàng)新型人才的需求,程序設計課程重要的是培養(yǎng)學生利用計算機技術解決實際問題的綜合能力,體現的是知識運用的綜合性、靈活性和探索性,這恰好符合周以真教授提出的計算思維的理念:運用計算機科學的基礎概念進行問題求解、系統(tǒng)設計以及人類行為理解等涵蓋計算機科學之廣度的一系列思維活動。因此,程序設計課程可以運用計算思維的理念,講授基本概念和編程的基本思路及方法,重點是對問題進行符合邏輯地、科學地分析,找出解決問題的抽象方法。在講授程序語言基本概念、語法和算法的過程中使學生體會計算思維的理念,掌握如何通過約簡、嵌入、轉化和仿真等方法,把一個看似困難的問題重新闡釋成一個我們知道問題怎樣解決的思維方法等。

        筆者在教學實踐過程中發(fā)現,在學生有了最基本的編程基礎后:①當給出明確的算法時,由算法寫出程序代碼是沒有太大問題的。即便要用到新的語句,只要在編程前講解新語句,學生就會使用新的語句將算法用程序語句編寫出來。②在不講授算法和解決方法的情況下,如果學生遇到需要采用遞歸方法或建立鏈表來解決的實際問題時,自行解決是沒有任何問題的,而且能很清晰地描述解決過程,只是缺少對過程的歸納和總結,從而形成某種算法。

        因此,筆者結合培養(yǎng)計算思維能力的思路和方法,通過對c語言中較難知識點講授方法的思考和分析,探索出一種給出實際問題,讓學生自行解決,然后對問題解決過程歸納總結,并在教師引導下進行完善,得到算法,進而編寫出程序代碼的方法。在采用該方法講授時,學生可以輕松地理解算法,快速寫出程序,并能靈活運用算法,將算法用于解決類似問題,收到了較為理想的課堂教學效果。

        2、函數遞歸調用算法的講授方法

        2.1 問題描述

        給每位學生發(fā)一張紙條,紙條上給出該學生的x語言課程成績的計算方法,讓學生根據紙條上的方法計算出自己的成績。紙條上的成績計算方法有兩種:一種是明確寫出成績,如“你的成績是90分”;另一種是“你的成績是你右側學生的分數加3分”。

        根據學生當時的座次情況,教師將第1種寫有明確成績的紙條發(fā)給每一排坐在最右側的學生,將寫有第2種成績計算方法的紙條發(fā)給其余學生,再請各位學生算出自己x語言課程的成績。

        2.2 教學引導

        學生拿到紙條后,會詢問自己右側的同學,但大部分同學還要再向坐在更右側的學生詢問,因此不少學生暫時安靜下來等待回復,當回復從右到左慢慢傳回來后,每個學生都會算出自己的成績。在等待和計算的過程中,坐在教室靠近左側,距離最右側學生較遠的學生會發(fā)現其右側學生,以及右側的右側的學生的紙條上寫的成績計算方法都是“你的成績是你右側學生的分數加3分”,要想算出自己的成績必須知道最右側學生的分數。于是部分學生會離開座位去詢問與其同一排的最右側那位學生的成績,然后數其所坐位置的右側共有多少個學生。假設有n個學生,便用公式:最右側學生的成績+3+……+3,共加n-1個3”,來計算自己的成績;而距離最右側學生比較近的學生在詢問的過程中也會了解到本排最右側學生的成績。之后,每位學生都會計算出自己的成績。

        2.3 算法分析及知識點講授

        根據學生計算成績的過程,歸納總結出成績計算有以下兩種方法,并引入知識點——函數的遞歸算法。

        ①第1個學生(最右側學生)的成績已知;

        ②其余成績按照固定算法:前一個學生的成績+3。

        該問題的解決算法可歸納為:若假設計算第n個(n≠1)學生的成績的函數為s(n),則有s(n)=s(n-1)+3。該算法用C語言函數編寫可描述為:

        int s(int n)

        {

        int y;

        y=s(n-1)+3;

        return(y);

        }

        算法在使用函數s(n)計算學生的成績時還要調用函數s(n)本身,這種函數調用方法就是函數的遞歸調用。

        以上對函數s(n)的描述歸納總結出了計算成績的第2種情況,其中還缺少當n=1的情況:若沒有此條件,就如同沒有給出最右側學生的成績,這樣遞歸是不能得出最終結果的。因此遞歸算法能得到結果的前提是必須給出當n=l時函數s(n)的確切數據。假如最右側學生的紙條上寫著“你的成績是90分”,則遞歸算法用c語言函數編寫的完整描述為:

        int s(int n)

        {

        inty;

        if(n==1)

        y=90;

        else

        y=s(n-1)+3;

        return(y);

        }

        算法分析及程序語言描述結束后,請坐在每一排最右側的學生念出自己紙條上寫的成績,請學生們寫出自己所坐位置的計算成績的函數s(n)。

        2.4 問題解決方案

        給出以上遞歸算法函數后,讓學生書寫主函數mainO調用函數s(n),并根據自己的座位情況,帶入n的值,計算出自己的成績,并分析調用s(n)的次數和調用過程。

        這樣,學生們能很迅速地寫出如下主函數:

        #Include

        intmainO

        {

        int s(int n);

        im score:

        score=s(4);//我是本排右起第4個學生

        prinff(\"My score is:%d\n\",score);

        return O:

        }

        然后結合“2.2教學引導”中計算自己成績時的過程分析出調用s(n)的次數和調用過程,從而明白在每一次遞歸調用s(n-1)是得不到成績值的,直到n=1的那次調用后才能依次倒著計算得到s(n-1)的值,最終算出自己的成績。

        采用此方法講解遞歸算法后,學生們會發(fā)現問題的解決過程跟自己開始計算自己成績的過程完全相同,只需將解決問題的過程進行歸納,總結成算法,就能輕松地寫出程序。學生們再遇到遞歸方面的問題時,就會先找出問題求解的幾種情況或相應過程,再將問題進行梳理總結成算法,編寫出相應的遞歸函數,并寫出正確的遞歸函數調用程序。漢諾塔問題也可以用此方法解決。

        3、“建立單向動態(tài)鏈表”的講授方法.

        3.1 問題描述

        在講述了鏈表的節(jié)點、頭指針、表尾等相關概念,以及單向鏈表的組成(如圖1所示)后,給出如下問題,要求學生建立一個鏈表。

        ①鏈表由學號相鄰的5個學生組成1組而建立,學號01-05的學生為一組,06-10的學生為一組,依次類推;鏈表的節(jié)點成員有num、name、score(自己擬定值)、next(下一個學號學生的地址,即座位號)。

        ②在每組中,若學號%5=1,該學號學生的地址(座位號)放在鏈表的頭指針head中。

        ③在每組中,若學號%5=0,則該學生的信息放在鏈表表尾。

        ④若本組有學生請假未到,也將該學號學生的節(jié)點加在表中,但其中的數據和地址(座位號)是空白的。

        教師在黑板上畫出整個教室的座位編號,每個學生可以明確自己的座位號,即地址。如1-5排的學生座位號如圖2所示。

        3.2 問題解決過程

        學生看到問題后,會根據問題描述分別畫出head,并詢問其他同學相關信息,填寫head的值,然后依次畫出連同自己的學號、座位號節(jié)點在內的本小組5位學生的信息節(jié)點,并詢問與其學號相鄰的學生的相關信息,填寫節(jié)點中的信息,完成整個鏈表。

        3.3 鏈表的建立及知識點講授

        每個學生都能根據問題描述和要求,畫出相應的鏈表,并且每個小組5位學生的鏈表相同。圖3所示為第3小組學生畫出的單向鏈表。

        讓學生根據建立鏈表的過程,歸納總結出鏈表建立的方法及過程,學生能清晰地給出如下過程:

        ①畫head;

        ②畫鏈表中第一個節(jié)點,填寫該學生信息,并將該學生的座位號填寫在head中;

        ③重復過程②,將后一節(jié)點學生的座位號填寫在前一節(jié)點的地址處,直到某種情況結束鏈表。

        只需將學生給出的過程稍加解釋,作出補充,便可得到如下算法:

        ①畫head,即建立頭指針head,并賦初值NULL;

        ②畫鏈表中第一個節(jié)點,即建立一個新節(jié)點,并填寫節(jié)點數據,將新節(jié)點的地址賦值給頭指針head;

        ③重復過程②,將后一節(jié)點的地址賦值給前一節(jié)點的next,直到某種情況結束鏈表。

        然后再將算法用相應的程序代碼書寫,或對相應的程序代碼進行講解,學生就很容易理解并掌握單向鏈表的建立。

        圖3中第2個節(jié)點的座位號為空,分析得出其下一個節(jié)點學號為10313的學生請假未到,因此可將后面學號為10314的同學的座位號填寫在第2個節(jié)點空白的座位號中,然后將學號為10313的同學的節(jié)點從鏈表中刪除。刪除學號為10313后的鏈表如圖4所示。如果該學生在下一節(jié)課來到教室上課,還可以將其節(jié)點再插入到鏈表中。

        通過以上分析,學生能很好地理解單向鏈表的組成與建立,以及鏈表節(jié)點的插入與刪除,特別是動態(tài)鏈表的。之后再進行用指針方法進行建立靜態(tài)鏈表或動態(tài)鏈表的程序的講述和分析就非常輕松了,學生也能很快掌握用指針進行鏈表的處理方法和程序的編寫。

        4、結語

        通過實際教學過程可以發(fā)現,采用有效的講授方法不僅能充分調動學生上課的參與性,更能培養(yǎng)學生歸納總結解決問題的方法的能力,以及將算法用程序語言代碼實現的能力,從而進一步提高了學生綜合運用基本概念和知識解決實際問題的能力,提高了學生學習的熱情和自主學習能力。該方法運用在c語言程序設計課程課堂教學中收到了滿意的效果。

        99久久精品无码专区无| 97久久精品人妻人人搡人人玩| 免费人成视频xvideos入口| 麻豆国产高清精品国在线| 国产后入内射在线观看| 国产成人大片在线播放| 精品久久久久久无码中文字幕| 亚洲国产精品一区二区第四页| 国产一区二区三区免费精品| 91精品国产九色综合久久香蕉| 日韩av无码久久一区二区| 欧美成人看片黄a免费看| 国产精品国产午夜免费福利看 | 国产av精品一区二区三区不卡| 精品厕所偷拍一区二区视频| 久久和欧洲码一码二码三码| 亚洲午夜福利精品久久| 国产成人自拍视频视频| 日韩性爱视频| 丰满人妻在公车被猛烈进入电影| 国产精品丝袜美女在线观看| 亚洲精品国产av成拍| 免费欧洲毛片a级视频老妇女| 九九99无码精品视频在线观看 | 久久无码高潮喷水抽搐| 人人爽人人爱| 亚洲一区二区在线视频播放| 国产精品麻豆一区二区三区| 在办公室被c到呻吟的动态图 | 狠狠色综合7777久夜色撩人ⅰ| 99视频一区| 免费av在线视频播放| 尹人香蕉久久99天天拍| 国产在线精品欧美日韩电影| 国产思思久99久精品| 最新国产激情视频在线观看| 99精品国产一区二区三区不卡 | 台湾佬综合网| 久久洲Av无码西西人体| 青青河边草免费在线看的视频 | 午夜福利影院不卡影院|