周雪芹
摘要:《C語言》是《Java語言》的前導課程,對于兩種編程語言中所涉及的語法規則中的差異性,運用五星教學法進行教學方法設計,分析從C語言語法規則(激活舊知),順利過渡到Java語言的語法規則和知識點(示證新知);在課前、課中和課后引導學生嘗試應用,達到融會貫通。多年的教學實踐證明,只有教師科學地進行教學設計并在教學實踐中合理布置實驗和練習任務,學生才能夠順利掌握Java面向對象的程序設計思想,解決現實世界的問題。
關鍵詞: 五星教學法;C語言;Java語言;教學設計
中圖分類號:G64? ? ?文獻標識碼:A
文章編號:1009-3044(2020)16-0161-02
1 《C語言》與《Java語言》關系
Java語言可用于開發桌面應用程序、網絡應用程序,也可以用于移動軟件開發,嵌入式軟件開發、微信小程序開發。它不僅僅是一門開發語言,更是一個開發平臺。它擁有龐大的類庫,功能非常強大,作為一門徹底的、完全的、面向對象的編程語言,應用非常廣泛。它與C語言是一脈相承的,吸收了C的許多優點,而摒棄了C里的goto語句、指針和多繼承等概念,在語法上比C更嚴格,使用起來更健壯。
C語言和Java語言都具有很強的實踐姓,強調學生的動手操作和編程能力。在高校里,一般先學C語言,然后學習Java語言。二者具有先后關系,教師如何做好教學設計,引導學生自然而然地從C語言過渡到Java語言,邊比較邊學習,學生印象深刻,基礎打得牢。
2五星教學法概述
戴維梅里爾于2003年提出的五星教學法是近年來教育領域非常推崇的教學理論,適合培養學生實際操作技能為重點。五星教學模式的核心主張是:在“聚焦解決問題”的宗旨下,教學應該由不斷重復的四階段循環圈:“激活舊知”、“示證新知”“嘗試應用”和“融會貫通”等構成。[1]
教師運用這個理論進行教學設計,通過深度揭示學習發生和教學設計的底層邏輯,可以讓課堂以學生產生為導向,授課效果好、效率高,參與度高。
3 運用五星教學法,順利實現從C語言到Java語言學習的過渡
“激活舊知”是老師帶學生回憶已經學過的知識。即:要完成一個任務,用C語言如何實現。“示證新知”是引導學生將新知識和原有知識相關聯,用Java語言怎么實現,與原先用C語言實現起來有什么不同,重在給學生交代二者實現起來的差異,使學生印象深刻,即復習了C語言的規則,又學會了Java語言的規則。“嘗試應用”是老師引導學生運用新的開發工具——Java語言來完成編程任務的功能。“融會貫通”是教師引導學生多加練習、不斷重復、舉一反三,直到熟能生巧的過程。
利用五星教學法上面的所介紹的4個步驟,重點應用在Java基本語法部分的教學上。因為《C語言》中《Java語言》的前導課,二者在基本語法上是很相似的。教師在教授Java語言語法的時候,不必從零起點開始授課,而在C語言的基礎上,重點比較差異,練習語法上的不同之處,可以節省Java基本語法部分的2/3的課時。如果學生基本語法掌握得比較扎實,有了學習興趣,相當于入了一個門檻,在學習后面的Java面向對象、Java應用的時候,就比較順利了。
4 從“激活舊知”到“示范新知”
下面以幾個案例來說明五星教學法在從C語言至Java語言的從“激活舊知”到“示范新知”、循序漸進、進行逐步過渡的教學設計過程。重點分析知識點之間的關聯與差異,使學生在比較中進行學習。
(1)條件語句if
C語言中的if語句的條件表達式或邏輯表達式,非0即為真。而Java語言中的表達式運算結果必須是布爾類型的值,這一點是不同的。程序舉例如下。
教師示范:判斷奇數(偶數);學生練習:判斷閏年、給某個成績確定等級(優、良、中、及格、不及格)。
(2)基本數據類型
C語言中的數據類型包括:有符號和無符號兩大類,數據在內存中占據的字節長度依據編譯系統的不同而有所不同,在一個編譯系統下編輯的程序移植到另一種編譯系統下運行,可能會產生嚴重的問題;Java的基本數據類型的數據在不同的操作系統都是確定的位數,正是由于這個原因,才使得Java程序移植性好,能夠一次編寫,處處運行;另外,Java語言中的數值型數據均為有符號數。
(3)標準輸入和輸出
C語言中使用標準庫函數scanf()函數和printf函數完成數據的輸入、輸出操作。Java語言是面向對象的語言,所有的功能都是由對象來調用,初學者可以用Java標準類庫中的java.util.Scanner類首先生成一個鍵盤輸入的工具對象reader:Scanner reader=new Scanner(System.in);下一步利用reader來調用next()、nextInt()、nextFloat()、nextDouble()等方法來完成從鍵盤輸入字符串、整數、浮點類型、雙精度類型等數據,輸入完成,再利用reader對象調用close()方法釋放系統資源。
此處學生初次使用類和對象,教師可以示范1-2種數據類型的輸入,然后由學生練習其他類型數據的輸入練習。在此基礎上,教師需要提醒學生next()方法和nextLine()方法的區別,前者數據的輸入以空格、TAB鍵、回車(換行)作為結束標志,后者只識別回車(換行)結束標記。
這樣,可以形成“激活舊知”(C語言scanf和printf函數)—“示范新知”(Scanner類對象next…)—“嘗試應用”(學生實操)—“融會貫通”(學生反復練習)的一個技能訓練的完整過程。
(4)C語言的結構體、函數與類的屬性與方法
C語言中,將一個目標的組成部分定義為結構體類型(struct),它是一個復合類型;將需要完成的功能的一組代碼定義為函數,函數的設計體現了面向過程的程序設計思想。面向過程就是分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。
Java語言是面向對象的。將一個對象的靜態屬性和動態的行為屬性抽取出來,定義為類。用類生成對象,每個對象的屬性值是不同的。類是抽象的,對象是具體的。用對象調用方法(動態屬性,或者函數),來完成功能。面向對象是把構成問題的任務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。
兩種編程語言都能描述靜態屬性和動態行為,但是Java語言實現了靜態屬性和動態行為的封裝,比C語言要更靈活,易維護、易復用、易擴展。另外,由于面向對象有封裝、繼承、多態性的特性,可以設計出低耦合的系統,使系統 更加靈活、更加易于維護。
在類的封裝的概念上,教師可以利用以下教學設計,方便學生理解面向對象的好處。教師可以示范如下程序案例:
1.求取直角坐標系下的2個點之間的距離,在C語言中通常寫一個函數:
(5)Java語言的優勢在于它強大的類庫,教師可以根據教學進度,在不同的章節設計如下案例讓學生進行體驗,以便于學生有切身體會,增加學生學習動力和學習積極性。
1.將一個整數值aInt變成其二進制形式,并輸出。
以C語言中通常按如下形式實現:將aInt除2取余,余0結束,然后將余數按逆序依次記錄下來,即是它的二進制數值;而在Java語言中利用Integer類的一個靜態方法:toBinaryString(aInt)即可得到它的二進制字符串。
2.字符及字符串處理
在C語言中,對于字符串的處理方式是比較原生態的,對其中的字符進行變換和查詢,通常采用循環方式,逐個對每個字符進行處理;而在Java中有String類對字符串對象進行查詢和管理,同時還有StringBuffer(StringBuilder)類非常方便地對字符串進行增、刪除、改操作。
3.數組的處理和操作
C語言中,數組的初始化為:int a[N]; N為常量;直接分配個整數類型且連續存放的內存空間, a作為該數組的首地址, 不可變。二維數組必須是行列的方陣。
Java語言中的數組,初始化形式:int a[]=new int[n];n是變量。a在棧內存空間的一個引用變量, 保存了該數組的首地址,該數組的n個元素處于堆內存空間。二維數組被看成是一維數組的數組,一維數組可以不等長。在Java類庫中,有一個工具類Arrays,能夠對一維數組、多維數組進行各種操作,如:批量填充元素值、排序、二分查找、快速輸出數組元素值等等。
5 “嘗試應用”和“融會貫通”
學院建立了山東理工大學程序在線檢測平臺SDUTOJ(https://acm.sdut.edu.cn/),其中有3762個題目可供學生練習和考試,平臺支持Java語言提交程序代碼。經過多年的教學實踐,本課程準備了300余題目,對眾多的知識點,如:Java基本語法的語句、運算符和表達式、數據類型、類和對象、繼承和多態、異常處理、常用類(字符串、日期類、數學類等)、集合框架之數據結構(List、Set和Map)等都有大量的題目供學生練習。計算機科學與技術和軟件工程專業的《Java語言程序設計》課程均用此平臺布置作業、安排實驗和課堂練習。該平臺配備專用考試服務器,在中期安排2次在線檢測。
SDUTOJ平臺的題目均有一定的應用場景,需要學生從現實問題中分析、抽取其中的數據,建立模型,然后編程實現功能,解決實際問題。在學生反復練習的過程中,就訓練了“嘗試應用”。該門課程的最大特點在于應用性,只有進行大量的、扎實的練習和編程實踐,才能做到“融會貫通”。教師在教學中,要做好這方面的要求和引導,使學生順利從C語言到Java語言的過渡,熟練掌握各知識點,建立面向對象的程序設計思想,解決生活實際和生產實際中的問題。
6 小結
Java類庫的功能非常強大,我們基于Java語言進行編程,相當于站在巨人的肩膀上進行操作。只有教師加強教學設計,合理引導,學生能夠從C語言的語法順利過渡到Java語言的學習上來,學生能夠溫故而知新,以舊知激活新知,保持了較強的學習動力和學習興趣,才能達到良好的教學效果。
參考文獻:
[1]百度百科:五星教學模式.https://baike.baidu.com/item/%E4%BA%94%E6%98%9F%E6%95%99%E5%AD%A6 %E6%A8%A1%E5%BC%8F/3089195?fr=aladdin
【通聯編輯:光文玲】