秦春娣
摘要:2017年7月,國務院印發(fā)的《新一代人工智能發(fā)展規(guī)劃》明確指出要逐步開展全民智能教育項目,在中小學階段設置人工智能相關課程、逐步推廣編程教育,培養(yǎng)復合型人才。實際上,在基礎教育階段進行AI教育提前布局的不止中國,2016年初美國前任總統奧巴馬曾投入40億美金,稱要讓每個美國學生在小學具備最簡單的編程能力?!熬幊探逃币嬲M入了每一個學生的學習中。
關鍵詞:學生;C++編程世界;面向對象程序設計
中圖分類號:TP3 文獻標識碼:A 文章編號:1009-3044(2018)18-0086-02
現在很流行的一句話:“學好程序和算法,走遍天下也不怕”編程本身應該是一項創(chuàng)造性極強的思維活動,而在如今國內大多數培訓機構僅僅是使用Scratch這個工具來開發(fā)對應的編程課程,并未有在創(chuàng)新性、邏輯性、趣味性上去下功夫(很多教育機構沒有能力在Scratch進行二次開發(fā)),其結果導致了整個少兒編程教育的生態(tài)成為門檻低、同質化嚴重、課程單調無味的一個課外教學。我們的編程教學還處于一個探索階段,那么我們如何來引導學生走進編程的世界呢?
1 面向對象程序設計
面向對象程序之所以可以滿足軟件的可靠性和復雜性,是因為面向對象程序它具有自身獨特的優(yōu)勢,首先,具有可功能擴充的優(yōu)勢。對于一些應用比較好的軟件來講,可以在最大程度上對軟件的系統進行有效的擴充和改進[1]。隨著科學技術地不斷發(fā)展與進步,推動了現代科技產品的發(fā)展,使軟件在更新方面、功能擴充頻率方面都得到了有效的發(fā)展,并且得到了廣泛的應用,而且對代碼的可擴展性提出更高的要求和標準。比如:要想在家具店添加“盤點”的功能,只需要在該家具店類的類體定義中加入一個方法[2]。這個方法就是面向對象編程思想下的功能,改程序非常的簡單,在整個系統中不需要改變原來代碼,但是如果應用面向對象編程思想進行有效的設計,在一般情況下添加一個功能,就會使這個系統進行最大程度的改進,對于一些本身規(guī)模比較大的程序來講,需要的對此付出非常大的代價。
其次,可重用性非常強??芍赜眯詮娭饕且驗槊嫦驅ο缶幊叹哂幸欢ǖ睦^承性,所以可以代碼重用,在很大程度上提高了軟件開發(fā)的工作效率。上世紀人們在聽廣播的時候,出現了電視機,電視也只是黑白兩個顏色,之后彩色電視就開始相繼出現[3]。彩電在繼承黑白電視的基礎上,還可以顯示不同色彩的圖像,在很大程度上沖擊了人們視覺。在黑白電視的基礎上增加了矩陣色電路,把三種基本顏色進行有效的組合,從而電視機播出的圖像就是彩色的,所以,彩電是繼承了黑白電視。繼承其實簡單來說就是借鑒和利用,在原有的基礎上增加新型的屬性和特效,從而構成一個全新的過程,切記并不是重新定義,也不是重新創(chuàng)新,這樣就充分體現了它的可重用性。
最后, 可管理性非常強。面向過程編程思想主要是以函數為基礎,或者是以過程為基本單位從構建一個全新的系統,一旦對項目進行開發(fā)時,或者是擴大規(guī)模時,就會大量需要函數和過程的數量,數量的急劇增多,在很大程度上不利于嚴格的控制和全面的管理。而面向對象編程思想主要是以類為單位進行系統的全面的構造,不管是在項目開發(fā)時,還是擴大規(guī)模時,都極大地降低了開發(fā)的難度和工作量,使項目在實際實施過程中更加方便、有效。
由于面向對象程序設計的種種優(yōu)點,已經成為當今軟件設計的主流思想,并在社會各界得以廣泛的應用,它的應用在很大程度上推動了軟件技術的發(fā)展,并創(chuàng)立了新的里程碑。而C++編程是面向對象程序中最為關鍵、不可忽視的一部分,因此,要積極引導學生走進C++編程,從而激發(fā)學生對學習和探究的積極性和主動性。
2 C++ 編程的概述
C++ 之所以具有良好的效果和優(yōu)點,是在不斷探索和研究中成長的,并不是一朝一夕完成的。在20世紀70 年代,由Dennis Ritchie創(chuàng)建的C語言,也就標志程序設計要進行根本上的轉變。C 語言是一種計算機語言,級別屬于初級,它與匯編語言有些相似,不僅可以直接對機器硬件的指令進行調用,還具有高級語言的所有特性。在C 語言創(chuàng)建不久之后,面向對象程序設計就脫穎而出,在當時情況來看,開發(fā)的程序越大,復雜程度也就高,需要采用有效的方案進行解決。恰恰面向對象程序設計就可以將復雜的程序進行有效的劃分,劃分為功能性的對象,雖然可以進行有效的管理,但是 C 語言不支持對象的概念,所以,由開創(chuàng)了 C++ 語言。C++ 是與 C語言之間是相互兼容的。C++為程序員們提供非常大的功能性。
C++ 在功能上也非常的突顯,第一,C++ 的語法非常豐富、簡潔,對于C++ 語法的簡潔性僅僅定義了 63 個關鍵字。C++ 的語法在豐富上可以表現在以下方面,不僅可以提供控制語句、運算符,還可以提供數據的類型,以及任何現代語言所需要的面向對象的特征。第二,C++具有強大的各種庫。C++通過標準庫進一步提供了這些強大的功能。在采用 C++對軟件進行開發(fā)時,必須要使用面向對象方法學的知識,從實際項目中確定確定不同的類和對象,在確定的時候要具有一定的科學性和合理性。
3 如何引導學生走進編程世界
(1)選擇合適的編譯器
俗話說:“工欲善其事,必先利其器”,在學習C++之前,我們需要找一款好的編譯器。我們知道最常用的C++編程環(huán)境有微軟的VS系列、C++Builder、DEV C++、Turbo C以及C-Free5。學習C或者C++階段就用Cfree,這個小巧,練習用很方便,專業(yè)版有調試功能。C-Free中集成了C/C++代碼解析器,能夠實時解析代碼,并且在編寫的過程中給出智能的提示。C-Free提供了對目前業(yè)界主流C/C++編譯器的支持,你可以在C-Free中輕松切換編譯器??啥ㄖ频目旖萱I、外部工具以及外部幫助文檔,使你在編寫代碼時得心應手。完善的工程/工程組管理使你能夠方便的管理自己的代碼[4]。
(2)加強對計算機題目進行審題
第一、定義變量,考慮有幾個輸入,有幾個輸出。在這里我們可以把定義變量,形象的生動的定義為申請小房子,我們需要申請什么樣的房,int型還是char型,或者其他類型。
第二、我們要考慮本程序有幾個輸入,利用C++里面的cin語句。
第三、我們主要要做什么,怎么做。
第四、我們有幾個輸出,格式是怎么樣的,利用C++里面的cout語句。
接下來我們通過講解例子來講述上面四步驟。
某幼兒園里,有5個小朋友編號為1,2,3,4,5,他們按自己的編號順序圍坐在一張圓桌旁。他們身上都有若干個糖果,現在他們做一個分糖果游戲。從1號小朋友開始,將他的糖果均分三份(如果有多余的,則他將多余的糖果吃掉),自己留一份,其余兩份分給他的相鄰的兩個小朋友。接著2號、3號、4號、5號小朋友也這樣做。問一輪后,每個小朋友手上分別有多少糖果。
分析題目:題目中有5位小朋友,他們剛開始的糖果數目不確定,我們可以用a,b,c,d,e分別存儲5個小朋友的糖果數,初始值由鍵盤輸入。根據題目要求,我們可以得出這里的5個變量是數值型的,所以我們定義它為int型,用cin語句把初始糖果值輸入。下面我們主要來分析一下題目的編程思想,我們主要要做什么,怎么做的問題。我們通過畫圖的方式把五個小朋友圍坐在一個圓桌上,他們編號分別為1,2,3,4,5,對應的初始糖果數分別為a,b,c,d,e。我們從1號小朋友開始,將他的糖果分成三份,多余的自己吃掉,我們可以考慮用整除符號“/”,a=a/3 余數舍棄,自己留一份,相鄰的二個小朋友分別得到一份a糖果,b=b+a,e=e+a;依此類推,把2號小朋友的b糖果按上述方法處理,b=b/3,a=a+b,c=c+a;
把3號小朋友的c糖果按上述方法處理,c=c/3,b=b+c,d=d+c;把4號小朋友的d糖果按上述方法處理,d=d/3,c=c+d,e=e+d;把5號小朋友的e糖果按上述方法處理,e=e/3,d=d+e,a=a+e;
第三步:具體編程的實施
接下來我們就啟動C-Free軟件,采用編輯菜單中的插入代碼模板,找到相應的c++ template2模板,插入相應的框架代碼,根據上述分析寫出具體代碼:
#include
using namespace std;
int main(int argc, char *argv[])
{
int a,b,c,d,e;
cin>>a>>b>>c>>d>>e;
a=a/3;b=b+a;e=e+a;
b=b/3;c=c+b;a=a+b;
c=c/3;d=c+d;b=c+b;
d=d/3;c=d+c;e=d+e;
e=e/3;d=e+d;a=e+a;