盧 萍,祝建華
(華中科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,湖北 武漢 430074)
“C語(yǔ)言程序設(shè)計(jì)”是高校計(jì)算機(jī)及相關(guān)專(zhuān)業(yè)的必修基礎(chǔ)課程,是數(shù)據(jù)結(jié)構(gòu)、編譯原理、算法分析、操作系統(tǒng)等課程的先導(dǎo)課程。該課程以C語(yǔ)言為工具,以培養(yǎng)學(xué)生計(jì)算機(jī)思維能力和編程解決實(shí)際問(wèn)題的能力為目標(biāo)。課程涉及的內(nèi)容多、知識(shí)使用靈活、實(shí)際問(wèn)題千變?nèi)f化,同一個(gè)問(wèn)題可有多種實(shí)現(xiàn)方法,具有很強(qiáng)的實(shí)踐性和創(chuàng)造性。
工程教育認(rèn)證標(biāo)準(zhǔn)對(duì)課程的實(shí)踐環(huán)節(jié)提出了更高要求[1-4]。針對(duì)C語(yǔ)言功能強(qiáng)且靈活的特點(diǎn),為了使學(xué)生準(zhǔn)確掌握每一個(gè)教學(xué)重難點(diǎn)知識(shí),提出“著眼能力、精準(zhǔn)訓(xùn)練”的實(shí)踐模式[5]。在設(shè)計(jì)實(shí)驗(yàn)任務(wù)時(shí),要依據(jù)教學(xué)內(nèi)容,梳理知識(shí)點(diǎn),細(xì)化目標(biāo),明確要求。例如,要求用位運(yùn)算實(shí)現(xiàn)數(shù)據(jù)壓縮,旨在掌握位運(yùn)算的應(yīng)用,為用C語(yǔ)言編寫(xiě)系統(tǒng)軟件打下基礎(chǔ)。
實(shí)驗(yàn)?zāi)繕?biāo)的達(dá)成有賴(lài)于有效的監(jiān)督和評(píng)價(jià)機(jī)制,傳統(tǒng)上往往采用加大檢查力度的方法。但由于學(xué)生在學(xué)習(xí)能力、自覺(jué)性、主動(dòng)性等方面存在差異,傳統(tǒng)的人工檢查方式不僅增加了教師的負(fù)擔(dān),檢查結(jié)果不能及時(shí)反饋給學(xué)生,而且隨著作業(yè)量的增大、學(xué)生人數(shù)的增多,很難檢查到每一個(gè)學(xué)生,沒(méi)有查到的學(xué)生難免出現(xiàn)應(yīng)付交差現(xiàn)象,影響了教學(xué)質(zhì)量的提高[6-8]。
如何創(chuàng)建有效的督促和激勵(lì)機(jī)制,推動(dòng)每個(gè)學(xué)生一步一個(gè)腳印地完成實(shí)驗(yàn),達(dá)到精準(zhǔn)訓(xùn)練、全面掌握知識(shí)點(diǎn)的目標(biāo),是C語(yǔ)言實(shí)踐教學(xué)中需著重考慮和解決的問(wèn)題。EduCoder實(shí)踐教學(xué)平臺(tái)的出現(xiàn),給程序類(lèi)課程實(shí)踐教學(xué)改革帶來(lái)了契機(jī)[9-11]。平臺(tái)提供的在線(xiàn)評(píng)測(cè)代碼、結(jié)果及時(shí)反饋、自動(dòng)統(tǒng)計(jì)成績(jī)和分析學(xué)生能力值等功能,以及類(lèi)似于游戲闖關(guān)挑戰(zhàn)的實(shí)驗(yàn)形式,極大地增強(qiáng)了與學(xué)生的互動(dòng)性,提高了學(xué)生的學(xué)習(xí)興趣和參與度。平臺(tái)支持的自主設(shè)計(jì)評(píng)測(cè)腳本機(jī)制,也給教師提供了很大的自由度和發(fā)揮空間。教師可以按需設(shè)置實(shí)驗(yàn)任務(wù),實(shí)現(xiàn)評(píng)測(cè)的智能化和精準(zhǔn)化,推動(dòng)學(xué)生全面掌握教學(xué)重點(diǎn)和難點(diǎn)知識(shí),并使他們變被動(dòng)學(xué)習(xí)為主動(dòng)學(xué)習(xí)。
從2019年秋季開(kāi)始,我們借助EduCoder平臺(tái),實(shí)施了以學(xué)生為中心、以能力培養(yǎng)為導(dǎo)向、以精準(zhǔn)訓(xùn)練為核心的C語(yǔ)言實(shí)踐模式,設(shè)計(jì)了與理論課教學(xué)同步的10個(gè)實(shí)驗(yàn)作業(yè)及其評(píng)測(cè)腳本,每個(gè)實(shí)驗(yàn)包括3~8個(gè)題目,取得了很好的效果。
本文將分析 EduCoder平臺(tái)的評(píng)測(cè)機(jī)制,并結(jié)合典型實(shí)例闡述如何根據(jù)訓(xùn)練目標(biāo)自行設(shè)計(jì)評(píng)測(cè)腳本,從而使學(xué)生能夠有針對(duì)性地進(jìn)行知識(shí)點(diǎn)練習(xí),促進(jìn)他們對(duì)知識(shí)點(diǎn)的精準(zhǔn)掌握,為綜合應(yīng)用所學(xué)知識(shí)解決實(shí)際工程問(wèn)題打下良好的語(yǔ)言基礎(chǔ)。
EduCoder 是一個(gè)面向計(jì)算機(jī)專(zhuān)業(yè)方向開(kāi)展教學(xué)、實(shí)驗(yàn)和實(shí)訓(xùn)活動(dòng)的工程教育平臺(tái)。該平臺(tái)將知識(shí)學(xué)習(xí)與動(dòng)手實(shí)踐相結(jié)合,支持教師按需自主創(chuàng)建實(shí)踐課程,并根據(jù)課程內(nèi)容設(shè)計(jì)并發(fā)布實(shí)驗(yàn)任務(wù)。學(xué)生通過(guò)登錄平臺(tái),可以隨時(shí)隨地在線(xiàn)編寫(xiě)代碼完成實(shí)驗(yàn)任務(wù)。平臺(tái)可自動(dòng)編譯、執(zhí)行和評(píng)測(cè)代碼,并立即反饋評(píng)測(cè)結(jié)果,學(xué)生可根據(jù)錯(cuò)誤信息提示修改代碼并繼續(xù)測(cè)試。在整個(gè)實(shí)驗(yàn)過(guò)程中,平臺(tái)會(huì)實(shí)時(shí)記錄每個(gè)學(xué)生的活動(dòng)軌跡,如提交評(píng)測(cè)的次數(shù)、每次評(píng)測(cè)存在的問(wèn)題、實(shí)驗(yàn)時(shí)間、是否查看參考答案、最近通過(guò)的代碼、最終成績(jī)等,并形成詳細(xì)報(bào)告和統(tǒng)計(jì)圖表,以便教師充分掌握學(xué)生的實(shí)驗(yàn)進(jìn)度、存在問(wèn)題和學(xué)習(xí)效果等,并據(jù)此分析教學(xué)難點(diǎn)、調(diào)整教學(xué)策略、改進(jìn)課堂教學(xué)方法等,從而進(jìn)一步提高教學(xué)質(zhì)量。
EduCoder平臺(tái)采用的評(píng)測(cè)方法是測(cè)試用例法,即用數(shù)據(jù)集測(cè)試程序的正確性。測(cè)試用數(shù)據(jù)集應(yīng)完備,應(yīng)能全方位檢測(cè)算法的正確性,應(yīng)覆蓋程序執(zhí)行的各種情況。比如閏年的判斷,有普通的非閏年,如2019;還有100的倍數(shù)的非閏年,如1900;有普通閏年,如2008;還有世紀(jì)閏年,如2000。如果考慮不全面,則會(huì)使錯(cuò)誤的程序也能夠通過(guò)。平臺(tái)將會(huì)用每組測(cè)試用例執(zhí)行程序,并將程序的實(shí)際輸出結(jié)果與正確輸出結(jié)果進(jìn)行對(duì)比,全部測(cè)試用例結(jié)果正確的將獲得通關(guān),否則會(huì)將失敗的測(cè)試用例反饋給學(xué)生。
EduCoder平臺(tái)用來(lái)測(cè)試的文件有學(xué)員任務(wù)文件和評(píng)測(cè)執(zhí)行文件兩類(lèi)。設(shè)置任務(wù)時(shí),應(yīng)為每一個(gè)題目建立一個(gè)文件夾,如 src/step1、src/step2等,每個(gè)題目的文件放在對(duì)應(yīng)的文件夾下。學(xué)員任務(wù)文件是學(xué)生編寫(xiě)代碼用的,里面的內(nèi)容(可以為空)將直接顯示在代碼區(qū)域,需要學(xué)生在其中編寫(xiě)代碼。評(píng)測(cè)執(zhí)行文件是需要執(zhí)行的平臺(tái)腳本,根據(jù)執(zhí)行結(jié)果判斷程序的正確性,學(xué)生對(duì)該文件只能查看,不能修改。評(píng)測(cè)執(zhí)行文件也可以是學(xué)員任務(wù)文件,也就是直接運(yùn)行學(xué)生寫(xiě)的程序,或者是由教師設(shè)計(jì)的用來(lái)測(cè)試學(xué)生代碼的腳本文件。通過(guò)自行設(shè)計(jì)評(píng)測(cè)文件可以精準(zhǔn)地達(dá)到訓(xùn)練某個(gè)知識(shí)點(diǎn)的教學(xué)目標(biāo)。
表達(dá)式是C語(yǔ)言一個(gè)非常重要的程序元素,它貫穿在C語(yǔ)言教學(xué)的各個(gè)章節(jié),各種流程控制語(yǔ)句的執(zhí)行條件都要用表達(dá)式來(lái)描述,表達(dá)式還可以單獨(dú)構(gòu)成表達(dá)式語(yǔ)句。C語(yǔ)言提供了34種運(yùn)算符,既能實(shí)現(xiàn)其他高級(jí)語(yǔ)言的運(yùn)算,也能實(shí)現(xiàn)匯編語(yǔ)言的底層位運(yùn)算,再加上一些特有的運(yùn)算符,使C語(yǔ)言的運(yùn)算能力非常強(qiáng),表達(dá)式類(lèi)型多樣化。靈活使用各種運(yùn)算符寫(xiě)出實(shí)現(xiàn)特定功能的表達(dá)式是一項(xiàng)重要的技能。
在講授運(yùn)算符和表達(dá)式后,就要訓(xùn)練學(xué)生寫(xiě)C語(yǔ)言表達(dá)式的能力。根據(jù)平臺(tái)的評(píng)測(cè)架構(gòu),可以設(shè)計(jì)兩種方式,第一種方式是學(xué)員任務(wù)文件是一個(gè)完整程序框架,學(xué)生在其中完成代碼填空(填寫(xiě)表達(dá)式),該文件作為評(píng)測(cè)執(zhí)行文件;第二種方式是學(xué)員任務(wù)文件用.h,文件內(nèi)容為空或者包含一些注釋?zhuān)ㄕf(shuō)明相關(guān)變量的類(lèi)型),只需要學(xué)生填寫(xiě)一個(gè)表達(dá)式,而評(píng)測(cè)執(zhí)行文件是針對(duì)該實(shí)驗(yàn)?zāi)繕?biāo)設(shè)計(jì)的一個(gè)完整程序,可以使用#include把學(xué)員任務(wù)文件包含進(jìn)來(lái)。相比較而言,后者效果更好,訓(xùn)練更精準(zhǔn)。
【示例1】任務(wù)描述:寫(xiě)一個(gè)表達(dá)式,求三個(gè)整數(shù)a、b和c中的最大值。
訓(xùn)練目標(biāo)是使學(xué)生掌握條件運(yùn)算符(?:)的使用,這是一個(gè)三目運(yùn)算符,可以用來(lái)代替if語(yǔ)句實(shí)現(xiàn)某些分支運(yùn)算。
將學(xué)員任務(wù)文件命名為 step1_stu.h,在 src/step1文件夾下,里面沒(méi)有任何語(yǔ)句,只有一些注釋?zhuān)瑢W(xué)生需填寫(xiě)一個(gè)條件表達(dá)式,通過(guò)設(shè)計(jì)評(píng)測(cè)腳本使得學(xué)生只能用條件表達(dá)式。將評(píng)測(cè)執(zhí)行文件命名為step1_main.c,也在src/step1文件夾下,它是針對(duì)該訓(xùn)練目標(biāo)而設(shè)計(jì)的腳本文件,里面包含變量聲明、輸入3個(gè)整數(shù)、輸出最大數(shù),中間用#include "step1_stu.h"把學(xué)生寫(xiě)的表達(dá)式嵌入進(jìn)來(lái),賦值給變量 x,其后加分號(hào)構(gòu)成一條賦值表達(dá)式語(yǔ)句,該文件內(nèi)容如圖1所示。
圖1 示例1的評(píng)測(cè)執(zhí)行文件內(nèi)容
學(xué)生是不能修改評(píng)測(cè)腳本的,該設(shè)計(jì)使得學(xué)生在學(xué)員任務(wù)文件中只能寫(xiě)一個(gè)表達(dá)式,因而不能使用 if語(yǔ)句,如果使用if語(yǔ)句,系統(tǒng)則會(huì)報(bào)語(yǔ)法錯(cuò),這樣就可以非常精準(zhǔn)地達(dá)到訓(xùn)練寫(xiě)條件表達(dá)式的教學(xué)目標(biāo)。
在C語(yǔ)言中實(shí)現(xiàn)模塊化程序設(shè)計(jì)的手段是編寫(xiě)函數(shù),即把每一個(gè)模塊設(shè)計(jì)成一個(gè)函數(shù),完成總?cè)蝿?wù)的程序是由一個(gè)主函數(shù)和若干其他函數(shù)組成的。主函數(shù)比較簡(jiǎn)單,起著任務(wù)調(diào)度的總控作用,其他函數(shù)將最終直接或間接被主函數(shù)調(diào)用,以解決總?cè)蝿?wù)。這種模塊化的程序結(jié)構(gòu)增強(qiáng)了程序的可讀性、可維護(hù)性和可擴(kuò)充性。學(xué)會(huì)設(shè)計(jì)和編寫(xiě)函數(shù)非常重要,在講授完函數(shù)后,需要訓(xùn)練學(xué)生用函數(shù)去實(shí)現(xiàn)特定的功能。
【示例 2】任務(wù)描述:定義函數(shù) digit(n,k),求n中從右端開(kāi)始的第k個(gè)數(shù)字的值(k從1開(kāi)始),如果k超過(guò)了n的位數(shù),則函數(shù)返回–1;否則返回n中第k個(gè)數(shù)字。例如:digit(345876,4)=5,digit(345,4)= –1。
訓(xùn)練目標(biāo)是掌握函數(shù)的定義,根據(jù)要求編寫(xiě)自定義函數(shù),包括return語(yǔ)句的使用。
將學(xué)員任務(wù)文件命名為 step2_stu.h,在 src/step2文件夾下,里面只有函數(shù)的頭部注釋?zhuān)瑢W(xué)生需按照規(guī)定的接口編碼實(shí)現(xiàn)函數(shù)功能。該文件內(nèi)容如圖2所示。
圖2 示例2的學(xué)員任務(wù)文件內(nèi)容
評(píng)測(cè)執(zhí)行文件命名為step2_main.c,也在src/step2文件夾下,里面包含變量聲明、函數(shù)調(diào)用和調(diào)用前后的數(shù)據(jù)輸入輸出,在 mian函數(shù)的前面用#include"step2_stu.h"嵌入學(xué)生定義的函數(shù),該文件內(nèi)容如圖3所示。
圖3 示例2的評(píng)測(cè)執(zhí)行文件內(nèi)容
這樣,學(xué)生在任務(wù)文件中就只能按要求編寫(xiě)函數(shù),從而達(dá)到訓(xùn)練目標(biāo)。
EduCoder的測(cè)評(píng)原理是運(yùn)行評(píng)測(cè)執(zhí)行文件,在程序執(zhí)行過(guò)程中讀入預(yù)設(shè)的測(cè)試數(shù)據(jù),通過(guò)將程序輸出結(jié)果與正確結(jié)果進(jìn)行對(duì)比來(lái)決定是否通關(guān)。
在針對(duì)授課知識(shí)點(diǎn)設(shè)計(jì)實(shí)驗(yàn)任務(wù)過(guò)程中,發(fā)現(xiàn)帶參main函數(shù)比較特殊,平臺(tái)無(wú)法直接測(cè)試其功能,學(xué)生即使定義了帶參main函數(shù),也被當(dāng)作無(wú)參main函數(shù)執(zhí)行。為此,提出了一種能夠在 EduCoder平臺(tái)下間接測(cè)試帶參main函數(shù)的方法,訓(xùn)練學(xué)生編寫(xiě)和使用帶參數(shù)的main函數(shù),并給予自動(dòng)評(píng)測(cè)。
表示和處理 main函數(shù)的參數(shù)是指針數(shù)組和二級(jí)指針的一個(gè)重要應(yīng)用。有些操作系統(tǒng),包括UNIX和MS-DOS,需要用戶(hù)在命令行界面輸入?yún)?shù)來(lái)啟動(dòng)一個(gè)程序的執(zhí)行,這些參數(shù)被傳遞給程序,供程序分析處理。命令行界面需要用戶(hù)記憶操作命令,不如圖形界面使用方便,但能節(jié)省計(jì)算機(jī)系統(tǒng)資源,在熟記命令的前提下,使用命令行界面的操作速度更快。所以,圖形界面的操作系統(tǒng)不僅保留了命令行界面,而且還加強(qiáng)了操作命令的功能[12]。帶參 main函數(shù)的定義形式為:
main函數(shù)具有兩個(gè)形參,第1個(gè)參數(shù)argc代表命令行中參數(shù)(即字符串)的個(gè)數(shù),第2個(gè)參數(shù)是字符指針數(shù)組 argv,argv[i]指向命令行中第 i個(gè)字符串。假定有一個(gè)名為copy的程序,在Windows下運(yùn)行該程序的命令行如下:
該命令行有3個(gè)參數(shù),第1個(gè)參數(shù)copy是可執(zhí)行程序名,其后的abc.txt和def.txt是程序執(zhí)行所需的參數(shù)。該命令行啟動(dòng)copy程序后,會(huì)將3傳給argc,argv[0]指向串“copy”,argv[1]指向串“abc.txt”,argv[2]指向串“def.txt”,然后執(zhí)行程序,實(shí)現(xiàn)將文件 abc.txt的內(nèi)容復(fù)制到文件def.txt中。
可見(jiàn),帶參main函數(shù)被系統(tǒng)調(diào)用時(shí),需要在命令行中輸入數(shù)據(jù)來(lái)啟動(dòng)程序的執(zhí)行,而這些數(shù)據(jù)被傳遞給main函數(shù)。命令行中輸入不同的參數(shù),程序?qū)?zhí)行不同的功能。在 EduCoder下設(shè)置實(shí)驗(yàn)任務(wù)時(shí),不能設(shè)置命令行的參數(shù),只能設(shè)置測(cè)試集數(shù)據(jù),測(cè)試數(shù)據(jù)是main函數(shù)執(zhí)行后由輸入函數(shù)(getchar、scanf等)讀取的,而命令行的參數(shù)是操作系統(tǒng)讀取并傳給main函數(shù)的,兩種獲取數(shù)據(jù)的方式截然不同。
根據(jù)帶參main函數(shù)的特點(diǎn),提出的這種通過(guò)設(shè)計(jì)評(píng)測(cè)腳本的間接測(cè)試方法,有助于學(xué)生精準(zhǔn)掌握命令行參數(shù)的作用、參數(shù)的傳遞機(jī)制以及帶參main函數(shù)的編寫(xiě)。
根據(jù)命令行參數(shù)傳遞原理,結(jié)合 EduCoder評(píng)測(cè)機(jī)制,提出如下在EduCoder下對(duì)帶參main函數(shù)功能的測(cè)試策略:①將命令行參數(shù)作為測(cè)試數(shù)據(jù);②學(xué)生編寫(xiě)等效于本地帶參main函數(shù)的main0函數(shù),即在本地環(huán)境調(diào)試時(shí)是main,提交平臺(tái)測(cè)試時(shí)將 main改為main0即可;③設(shè)計(jì)一個(gè)main函數(shù)作為測(cè)試腳本,模擬操作系統(tǒng)讀取和存儲(chǔ)命令行參數(shù),對(duì)main0進(jìn)行測(cè)試,命令行參數(shù)就是設(shè)置的測(cè)試數(shù)據(jù)。
main函數(shù)需要模擬命令行參數(shù)的整個(gè)處理過(guò)程,包括從測(cè)試數(shù)據(jù)(即命令行參數(shù))中讀取字符、識(shí)別出參數(shù)字符串、統(tǒng)計(jì)字符串個(gè)數(shù)、動(dòng)態(tài)分配內(nèi)存存儲(chǔ)字符串、記錄字符串的首地址等,再用獲取的參數(shù)個(gè)數(shù)和字符串?dāng)?shù)組作參數(shù),調(diào)用main0函數(shù)。main中聲明變量n保存字符串個(gè)數(shù),字符指針數(shù)組inputStr保存各字符串的首地址,將n傳給main0的形參argc,inputStr傳給argv,調(diào)用main0函數(shù)(即帶參main函數(shù)),從而啟動(dòng)main0的執(zhí)行(相當(dāng)于main函數(shù)被系統(tǒng)調(diào)用)。
main0函數(shù)等價(jià)于帶參main函數(shù),學(xué)生要在自己的編程環(huán)境中寫(xiě)帶參main函數(shù),即將main函數(shù)代碼粘貼到 EduCoder編輯器,當(dāng)測(cè)試腳本對(duì)其進(jìn)行自動(dòng)測(cè)試時(shí),把main函數(shù)的名字改為main0即可。因此,學(xué)生也可以先在本地環(huán)境實(shí)現(xiàn)帶參 main函數(shù)的功能并調(diào)試通過(guò)后,再將main修改為main0,提交平臺(tái)進(jìn)行自動(dòng)測(cè)試。
【示例3】任務(wù)描述:編寫(xiě)一個(gè)程序,名為strcat,用命令行參數(shù)實(shí)現(xiàn)至少兩個(gè)字符串的連接,命令行為:
strcat str1 str2 str3 ...
其中,strcat是命令名,即可執(zhí)行程序名,str1、str2、str3、 ...是被連接的字符串,每一個(gè)字符串的長(zhǎng)度不超過(guò)50,規(guī)定連接順序?yàn)橛疫叺拇来芜B接到左邊串的末尾。例如,
命令行輸入:strcat abc def gh
連接之后形成新串并輸出:abcdefgh
訓(xùn)練目標(biāo)是掌握帶參函數(shù)的定義和命令行參數(shù)的傳遞,并初步掌握動(dòng)態(tài)存儲(chǔ)分配的概念及其應(yīng)用,為后續(xù)結(jié)構(gòu)指針的應(yīng)用打下基礎(chǔ)。
編程要求:學(xué)生編寫(xiě)帶參main0函數(shù)(若在本地調(diào)試則為main函數(shù))來(lái)連接命令行中的多個(gè)字符串,連接之后的新串無(wú)冗余地存儲(chǔ)到用 malloc動(dòng)態(tài)分配的空間,并將該空間首地址賦值給外部指針p,指針p在評(píng)測(cè)腳本中定義,連接后的新串也在腳本文件中輸出。
評(píng)測(cè)執(zhí)行文件命名為 step3_main.c,文件內(nèi)容見(jiàn)圖 4和圖5。
圖4 示例3的評(píng)測(cè)執(zhí)行文件內(nèi)容之一
圖5為Begin ...End之間的代碼模擬命令行參數(shù)的讀入和參數(shù)串的存儲(chǔ)。
圖5 示例3的評(píng)測(cè)執(zhí)行文件內(nèi)容之二
因此,學(xué)生只有深入理解帶參main函數(shù)這一教學(xué)重點(diǎn)和難點(diǎn)知識(shí),并學(xué)會(huì)使用動(dòng)態(tài)存儲(chǔ)分配函數(shù),代碼才能通過(guò)測(cè)試。測(cè)試數(shù)據(jù)若為:strcat abc def gh,則輸出結(jié)果應(yīng)為:abcdefgh。
基于 EduCoder的實(shí)踐模式經(jīng)過(guò) 2019年秋季和2020年春季兩個(gè)學(xué)期的試行,取得了較好的效果,受到學(xué)生的歡迎??荚嚱Y(jié)果表明,經(jīng)過(guò)知識(shí)點(diǎn)的精準(zhǔn)訓(xùn)練,學(xué)生對(duì)一些難點(diǎn)知識(shí),如位運(yùn)算、二級(jí)指針、帶參main函數(shù)、動(dòng)態(tài)分配等掌握情況良好,成績(jī)得到明顯提高,達(dá)到了預(yù)期目標(biāo)。該項(xiàng)改革對(duì)教師來(lái)說(shuō),可以使他們從繁重的督促檢查中解脫出來(lái),能更好地研究教學(xué)教法和答疑解惑,提高教學(xué)質(zhì)量和教學(xué)效果;對(duì)學(xué)生來(lái)說(shuō),既可促進(jìn)他們?nèi)嬲莆战虒W(xué)重點(diǎn)和難點(diǎn),又可培養(yǎng)獨(dú)立思考和自主學(xué)習(xí)的習(xí)慣,提高分析和解決問(wèn)題的能力。