摘 要:程序設(shè)計語言的入門教學(xué)常常會遇到學(xué)生基礎(chǔ)薄弱的問題,在課時不足的情況下導(dǎo)致教學(xué)的困難,或者因為例題艱深導(dǎo)致學(xué)生在入門前就已經(jīng)喪失了學(xué)習(xí)興趣。而Scratch程序因其對可視化操作、對結(jié)構(gòu)化程序設(shè)計的支持,能帶來程序設(shè)計的趣味性及可操作性。本文討論了程序設(shè)計教學(xué)的困境,Scratch程序作為前導(dǎo)課程的實踐以及可能會對教學(xué)帶來的幫助。
關(guān)鍵詞:教學(xué)探索;程序設(shè)計;Scratch
中圖分類號:G642 文獻標識碼:A
1 引言(Introduction)
1.1 基礎(chǔ)薄弱
目前,中小學(xué)的信息化教育內(nèi)容參差不齊,有的學(xué)??赡軙谐绦蛟O(shè)計的教學(xué),有的學(xué)校則以Word、Excel操作為主,對程序設(shè)計的入門不重視[1]。很多剛進入大學(xué)的學(xué)生在程序化的思維方式方面還比較弱,要入高級程序設(shè)計語言的門還有很長的路要走。
1.2 課時較少
通常程序設(shè)計入門以C語言或C++語言為教學(xué)內(nèi)容。作為一種實踐性較強的語言,在一個學(xué)期中要完成程序設(shè)計概念和語法的教學(xué),又要在有限的時間里完成編程調(diào)試訓(xùn)練。如果學(xué)生沒有一定的基礎(chǔ)和自學(xué)能力,就很難適應(yīng)這種節(jié)奏。
1.3 抽象帶來的問題
語法、算法等抽象的教學(xué)內(nèi)容將降低學(xué)生的學(xué)習(xí)興趣,而學(xué)習(xí)興趣對教授與學(xué)習(xí)兩方面都非常重要。有的學(xué)生不能通過考核經(jīng)常就跌入補考和重修的循環(huán)。程序設(shè)計入門作為核心課程,這個課程出了問題將給計算機專業(yè)的后續(xù)課程帶來很多不好的影響,比如本專業(yè)學(xué)生對程序設(shè)計和其他專業(yè)技能缺乏信心以及實踐能力。
2 程序設(shè)計課程的前導(dǎo)課程(Leading program of
programming classes)
學(xué)生在程序設(shè)計課程中,一方面要努力熟悉算法抽象、程序控制等一些全新的概念,一方面會遇到很多語法錯誤,必須要學(xué)習(xí)如何調(diào)試程序,理論加上實踐可能都是前所未有的挑戰(zhàn)。前導(dǎo)課程應(yīng)帶來有趣味的內(nèi)容,為學(xué)生補充各種必要的基礎(chǔ)概念,如抽象、邏輯、流程等,告訴學(xué)生如何在現(xiàn)實世界和計算機世界之間建立起一座橋梁。這樣的課程會對程序設(shè)計教學(xué)有很大幫助。
3 Scratch簡介(Introduction of scratch)
Scratch是美國麻省理工學(xué)院(MIT)媒體實驗室開發(fā)的一套“程序語言”,利用這個軟件可以輕輕松松地創(chuàng)造出互動式故事、動畫、游戲、音樂等令人驚嘆的作品,是一套簡單又有趣的軟件[2]。
Scratch采用拖曳、組合的方式來設(shè)計程序。它是可視化的程序語言,具有所見即所得的功能。設(shè)計Scratch作品的過程是學(xué)生學(xué)習(xí)用計算機進行思考、分析、解決問題的過程,還能進行團隊建設(shè)方面的實踐。
Scratch把程序命令歸為幾大部分:包括動作、外觀、聲音、畫筆、變量、事件、控制等,并用顏色來分類。學(xué)生只需要了解各部分模塊的功能,按照自己的想法拖到腳本窗口,并按一定規(guī)則堆積在一起,最后在瀏覽窗口就能根據(jù)命令腳本直接運行。通過可視化操作學(xué)生可以搭建起自己的程序,輕易地把自己的想法表達為計算機的程序。在這個抽象的過程中不用過分操心語法錯誤等問題。
圖1為Scratch設(shè)計界面,左上為程序運行場景,左下為程序中設(shè)計的主體對象。一個項目可以有多個動畫主體(可以是動物人物或其他一些對象),中間是可視化程序模塊,右邊是程序窗口,利用鼠標可以把中間的程序模塊拖入右邊的程序窗口,經(jīng)過修改參數(shù)、安排程序模塊的順序和嵌套等工作,就完成了程序編制,接著程序可以在瀏覽器中執(zhí)行。
4 Scratch對程序設(shè)計教學(xué)的支持(Supports to
programming classes)[3]
4.1 抽象
現(xiàn)實世界的問題如何抽象為計算機世界的模型?第一步可以從學(xué)習(xí)抽象為計算機里的對象開始。我們把需要處理的內(nèi)容抽象為Scratch的動畫主體,比如一個人物或一個物體。動畫主體可以具有各種行為,比如在平面中移動。如圖2是一個負責(zé)動作的程序模塊,能控制動畫主體平移到坐標(100,200)處,其中白色的部分為可以修改的坐標值。
4.2 結(jié)構(gòu)化程序
Scratch具有可以拖曳的結(jié)構(gòu)化模塊。設(shè)計時候只需要把模塊拖入場景中,就可以實現(xiàn)循環(huán)或選擇的程序結(jié)構(gòu),并且能實現(xiàn)循環(huán)和選擇的嵌套,制作需要的程序流程。圖3演示了循環(huán)結(jié)構(gòu)的程序模塊,repeat后面的循環(huán)次數(shù)可以修改,可以看到循環(huán)程序模塊和循環(huán)體中的其他程序模塊的顏色是不同的,它們屬于不同的功能分類。
Fig.4 Block to control choosing
其中使用的橙色模塊i是Scratch的變量模塊。Scratch程序能夠使用數(shù)字和字符串變量。變量可用來控制某個圖形的大小或個數(shù),變量還能具有不同的作用域。由此我們向?qū)W生展示了變量存儲值、變量值影響程序結(jié)果以及變量的作用域等概念。
Scratch具有列表的結(jié)構(gòu),列表可以存儲數(shù)值或字符串。列表可以具有作用域,可以獲得列表的長度。列表項具有添加、刪除、插入等操作,并能通過下標獲取特定的列表項。列表可以幫助學(xué)生學(xué)習(xí)數(shù)組的概念。
Scratch的結(jié)構(gòu)化程序設(shè)計是可視化的,調(diào)試簡單,能幫助學(xué)生把精力集中在程序結(jié)構(gòu)上,而不需要為語法錯誤分心。
4.3 面向?qū)ο?/p>
Scratch能夠設(shè)置動畫主體,可以視為對象模塊。不同的動畫主體具有獨特的屬性,可操作自己的變量,能完成獨特的任務(wù)。在后續(xù)課程中這些概念很容易引申為對象及其屬性和行為的概念,這是面向?qū)ο蟪绦蛟O(shè)計的基礎(chǔ)。圖5為迷宮程序的設(shè)計,其中球體是一個對象,而終點方塊的是另一個對象。我們可以利用鍵盤移動球體,當碰到方塊對象時后者能做出贏得游戲的反應(yīng)。球體對象在移動過程中碰到障礙則會產(chǎn)生反彈。
5 Scratch作為程序設(shè)計教學(xué)前導(dǎo)課程的實踐
(Experiments in programming classes)
在參考文獻[4]中提到的學(xué)校已經(jīng)嘗試使用Scratch平臺作為計算機專業(yè)課程的前導(dǎo)課程。學(xué)校把學(xué)生分為兩部分,一部分基礎(chǔ)薄弱的學(xué)生在第一個學(xué)期先參加Scratch課程,到第二個學(xué)期才開始學(xué)習(xí)高級程序設(shè)計語言。而另一部分基礎(chǔ)良好的學(xué)生則在第一個學(xué)期就開始學(xué)習(xí)高級程序設(shè)計。
最終學(xué)過Scratch的學(xué)生,盡管基礎(chǔ)薄弱,他們的最終成績在通過率和平均成績方面都超過基礎(chǔ)良好的學(xué)生,并且在精通程序、喜愛專業(yè)課程、參與專業(yè)實踐等方面都有更好的表現(xiàn)。這些學(xué)生專業(yè)成績更好,對專業(yè)更熱愛,對程序設(shè)計更有信心。
6 結(jié)論(Conclusion)
程序設(shè)計是一種具有創(chuàng)造性的工作,它具有一定的抽象性,而且需要使用數(shù)學(xué)的方法去描述一些問題。這使得在語言程序設(shè)計的課程教學(xué)中,必須打破原有的教學(xué)模式和知識體系[5]。我們探索不同的方式幫助學(xué)生入門,Scratch可能是一個良好的平臺,它的可視化特性,對結(jié)構(gòu)化程序設(shè)計的支持,都能幫助學(xué)生在實踐中培養(yǎng)計算機思維方式,為程序設(shè)計入門打下堅實基礎(chǔ),為后續(xù)課程的挑戰(zhàn)做好準備。另一方面程序設(shè)計教學(xué)的困境也要需要在考核模式方面進行改革,激勵學(xué)生重視創(chuàng)新和實踐。
參考文獻(References)
[1] 張傳科.如何讓抽象的設(shè)計變得精彩——LOGO程序設(shè)計與
Scratch[J].中國信息技術(shù)教育,2010,(5):29-31.
[2] 陳捷.Scratch語言簡介及應(yīng)用[J].電腦知識與技術(shù),2009,5(26):
7439-7440.
[3] 朱贇,鄭曉妹.C語言程序設(shè)計教學(xué)前導(dǎo)課程研究[J].軟件導(dǎo)
刊,2014,13(4):160-162.
[4] M.Rizvi,T.Humphries,D.Major,M.Jones,and H.Lauzun.A
NewCS0 Course for At-Risk Majors[C].The Proceedings of
the 24th IEEE-CS Conference on Software Engineering
Education and Training,Honolulu,Hawaii,May 2011: 314-323.
[5] 劉興林.大學(xué)工科C語言程序設(shè)計教學(xué)探索與實踐——以五
邑大學(xué)為例[J].軟件工程師,2014,17(5):39-40.
作者簡介:
朱 贇(1978-),女,碩士,講師.研究領(lǐng)域:計算機應(yīng)用.