999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于“信息學奧林匹克競賽”培養程序設計習慣的研究

2009-01-20 01:55:54李軍玲邵洪艷
計算機教育 2009年24期
關鍵詞:習慣

李軍玲 邵洪艷

摘要:本文針對NOIP競賽中學生普遍不重視養成良好程序設計習慣的問題,通過以競賽試題中閱讀程序為例,分析說明培養程序設計習慣的措施,提出正確使用程序設計工具,以達到養成良好的程序設計風格、加強良好程序設計習慣養成的目的,這對提高學生的程序設計能力具有較好的現實指導意義。

關鍵詞:信息學;奧林匹克競賽;程序設計;習慣

中圖分類號:G642 文獻標識碼:B

1現狀與對策

全國青少年信息學奧林匹克聯賽(National Olympiad in Informatics in Provinces,簡稱NOIP)是全國信息學奧林匹克競賽(NOI)系列活動中的一個重要組成部分,旨在向中學生普及計算機基礎知識。從早期只考核學生對程序設計語言的理解、熟悉程度以及編程技巧發展到模型設計、離散數學、動態規劃的思想及算法,由單純的培養學生學習興趣轉變為創造性地運用程序設計知識解決實際問題的能力。然而學生在程序設計習慣方面普遍重視不夠,為軟件項目開發埋下了巨大隱患。

1.1現實中存在的問題

信息學奧林匹克競賽上由于教學單位出現急功近利的思想,造成學生不能較好地正確掌握計算機程序設計過程,沒有養成良好的程序編程習慣。在現實中,程序設計普遍存在以下一些共性問題:

(1) 不愿意讀別人的程序。強調自己程序設計方法的優點,不愿意學習和借鑒他人的設計思路。

(2) 不畫流程圖。程序流程圖本來是程序設計的最簡單最直白書面表達,然而沒有得到足夠的重視與平時養成,學生不樂意用流程圖來表達設計思想與過程,實際上往往導致程序邏輯交叉,當程序出錯時排除費時費力。

(3) 不寫程序功能說明。程序設計過程中普遍存在只寫源代碼的語句,對程序實現的功能沒有描述,別人閱讀程序很難,有時編程者自己對程序的處理技術方法也遺忘。

(4) 不寫代碼的注釋。不對程序進行必要的注釋,造成閱讀困難,程序可讀性差。

(5) 忽視出錯處理。只完成程序功能的單一實現過程,對程序可能的具體出錯處理分析不夠。

(6) 忽視程序算法分析。程序算法對程序運行的效率影響是非常大的,程序算法的復雜度直接影響程序的時間和空間。

(7) 忽視程序設計過程中文檔資料的積累。普遍認為編程就是寫程序和調試過程,忽視文檔的書寫,其后果導致程序維護困難。

1.2對策

信息學奧林匹克競賽注重學生終生學習能力的培養,而不停留在唯競賽而學。在平時的教學中培養學生良好的程序設計習慣,使學生學會準確運用程序設計工具,養成良好的程序設計風格,將達到事半功倍的效果。

(1) 勤于思考、克服困難的習慣。由于學生對知識層次理解的深度有限,思維是發散而新穎,學生所編寫的程序必然有別于專業人員,但是要培養其具有專業人員的素養,要養成解決問題的好習慣,從解決方法和基本原理上勤于推敲。

(2) 與人協作的習慣。NOIP考試形式上看是學生個人的行為,而真實的軟件工程是多人合作、信息共享的活動,互學互助、取長補短、與人溝通、信息交流的好習慣將使學生受益終身。

(3) 培養全局規劃習慣。不論是程序語言的學習例題還是NOIP的考試命題,題目功能典型,學生要善于從短小的程序代碼中分析計算機解決問題的方式、途徑,將小代碼功能擴充完善,利用程序設計工具對問題從全局角度進行分析處理。

(4) 良好的代碼編寫習慣。包括程序流程圖、變量命名、代碼標注、功能注釋、捕獲代碼異常、測試樣例、文檔記錄等多個環節。如果在軟件開發和程序編寫過程中養成良好的習慣,那么程序中存在的漏洞就易于發現,為將來大型軟件項目的開發打下良好基礎。

(5) 養成善于總結分析、勤于記錄文檔資料的習慣。建立自己的知識庫,不僅有源程序代碼,還要有完備的文檔資料記錄。

2培養正確程序設計習慣的措施

學生在學習過程中主要接觸的是以掌握基本算法為主的程序例題和NOIP獨立命題題目,而軟件開發過程是一系列活動,包括方法、工具和過程三個要素。因此,如何讓學生以小見大,培養良好的程序設計習慣才是學習的根本。以第14屆NOIP提高組C++初賽題目閱讀程序4為例題,說明如何借助程序設計工具,養成良好的程序設計風格,培養良好的程序設計習慣,例題的源程序如下。

#include

#include

using namespace std;

int i,j,len;

char s[50];

int main()

{ cin>>s;

len=strlen(s);

for(i=0;i

{if (s[i]>='A'&&s[i]<='Z') s[i]- ='A'-'a';}

for(i=0;i

{if(s[i]<'x') s[i]+=3;else s[i]+= -23;}

cout<

for(j=1;j<4;j++)

{ for(i=0;i

{s[i]=s[i+j];}

}

cout<

return 0;

}

2.1準確使用程序工具的習慣

學生在學習程序設計過程中不要過分強調上機調試運行,學會正確運用程序設計工具是根本。程序設計工具不僅能正確將程序分析過程轉變為程序實現,而且還能夠幫助學生快速分析源程序的語句功能,生成程序設計過程中所需要的文檔資料。

2.1.1數據字典

數據字典以字典式順序組織精確嚴格地定義了每個數據元素。通過讀例題源程序,得到例題的數據變量的數據字典,具體變量描述如表1所示,這有助于理解各變量在程序中的輸入、輸出、存儲和中間計算。

2.1.2N-S圖

N-S圖是適應結構化程序設計特點,逐步求精模塊化程序設計方法的有力工具。閱讀例題源程序語句可以快速畫出它的N-S圖(圖1),從而確定例題的程序順序結構功能,如圖2所示。

2.2良好程序書寫風格的養成

程序不僅要保證運行正確,也是讓別人讀的。程序書寫設計風格包括4個方面:源程序文檔化、數據說明、語句結構和輸入輸出方法。針對NOIP命題特點,學會從編碼原則提高程序的可讀性著手。由于例題已具有完好的縮進格式,只需要加入相關的序言性和語句注釋。程序部分修改內容如下。

/* 4.cpp 程序功能: */

/*首先,大小寫混合字母的字符串變成小寫字母;然后以26字母循環形式,逐個字符替換為其位置后的第3個字符;最后,重新賦值指定位置字符。*/

....

int main()

{ cin>>s; //字符串s初始化

len=strlen(s); //求s長度

for(i=0;i

...

//逐字符轉換為其后面的第3個字符

for(i=0;i

...

cout<

//3次循環將s指定字符s[i]重新賦值s[i+j]

for(j=1;j<4;j++)

...

cout<

return 0; //返回

}

2.3程序算法分析的習慣

算法的空間復雜度和時間復雜度是分析一個程序算法的執行效率與存儲需求,可以有效避免只強調偏僻技巧而忽略算法復雜性。

int main()

{ cin>>s; //執行次數1

len=strlen(s); //執行次數1

for(i=0;i

...

for(i=0;i

...

for(j=1;j<4;j++) //執行次數4

for((i=0;i

s[i]=s[i+j] //執行次數4*n

cout<

}

通過對例題的基本語句執行次數分析,得出程序的時間復雜度為O(n2)。

2.4面向對象程序設計的習慣

目前面向對象的程序設計技術在軟件開發中占據主導地位,是指導學生學習軟件的發展方向。根據例題程序的功能實現,通過定義一個obj類,含有實現程序功能的4個成員函數,將例題的面向過程編程改寫為面向對象的程序設計,使數據和操作具有封裝性。改寫后的程序源代碼如下。

#include

#include

using namespace std;

class obj //定義obj類

{public: //定義公有成員函數

obj( ) {*s=NULL;len=0;} //定義構造函數

void input( ); //輸入函數

void change( ); //字符轉換函數

void setvalue( ); //字符重賦值函數

//定義輸出函數

void print(){cout<<"s="<

private: //定義私有成員變量

char s[50]; //字符串s

int len; //字符串長度len

};

void obj::input( ) //定義輸入函數

{cout<<"inputs=";

cin>>s;

len=strlen(s);

}

void obj::change( ) //定義轉換函數

{ for(int i=0;i

{if (s[i]>='A'&&s[i]<='Z') s[i]- ='A'-'a';}

for(i=0;i

{if(s[i]<'x') s[i]+=3;else s[i]+= -23;}

}

void obj::setvalue ( ) //定義字符重賦值函數

{ for(int j=1;j<4;j++)

{ for(int i=0;i

s[i]=s[i+j];}

}

int main( ) //主函數

{ obj x; //obj類的對象x

x.input ( );

x.change ( );

x.setvalue ( );

x.print ( );

return 0;

}

3結語

NOIP重點是培養學生學習計算機的興趣,使學生對信息技術的一些核心內容有更多的了解,提高創造性地運用程序設計知識解決實際問題的能力,而不是一味學習專業教材。因此,只有開始養成一個良好的程序設計習慣,才能為將來的軟件開發打下好基礎,而不是追求唯競賽而學的短期效果。

參考文獻:

[1] 馬苗,田紅鵬. “面向對象程序設計與C++”教學中的問題與思考[J]. 計算機教育,2008(6):81-82.

[2] 楊顯霞. 信息學奧林匹克競賽教學模式初探[J]. 西南農業大學學報:社會科學版,2008(4):169-171.

[3] 林小華. 計算機程序設計風格探討[J]. 軟件導刊,2006(17):33-35.

[4] 譚浩強. C++程序設計[M]. 北京:清華大學出版社,2004.

[5] 覃征,何堅,高洪江,等. 軟件工程與管理[M]. 北京:清華大學出版社,2005.

猜你喜歡
習慣
如何養成好的睡眠習慣?
中老年保健(2021年7期)2021-08-22 07:43:14
習慣(外二首)
四川文學(2021年6期)2021-07-22 07:50:16
在思考習慣之上進行表達
讓思考成為一種習慣
習慣
幽默大師(2019年6期)2019-01-14 10:38:13
當你不喜歡,你就不習慣
文苑(2018年20期)2018-11-09 01:36:02
你總要習慣一個人
文苑(2018年19期)2018-11-09 01:30:18
讓優秀成為習慣
好習慣
好習慣,“約”嗎
主站蜘蛛池模板: 特黄日韩免费一区二区三区| 一级毛片免费播放视频| 88国产经典欧美一区二区三区| 国产乱人伦AV在线A| 国产精品爽爽va在线无码观看| 久久婷婷人人澡人人爱91| 黄色国产在线| 国产精品香蕉在线| 欧美a√在线| 色天天综合| 99精品一区二区免费视频| 久久青青草原亚洲av无码| 免费黄色国产视频| 精品色综合| 欧美午夜在线视频| 欧美精品另类| 亚洲欧美日韩成人高清在线一区| 欧美h在线观看| 真人免费一级毛片一区二区 | 老司机精品一区在线视频| 国产永久在线观看| 国产一区亚洲一区| 人妻无码中文字幕第一区| 欧美日韩国产成人高清视频| 欧美三级视频网站| 欧美日韩第三页| 久久天天躁狠狠躁夜夜2020一| 亚洲国产无码有码| 91蝌蚪视频在线观看| 97精品久久久大香线焦| 久久这里只精品国产99热8| 国产欧美日韩资源在线观看 | 国产精品永久在线| 国产欧美高清| 成人国产一区二区三区| 午夜无码一区二区三区在线app| 中文字幕资源站| 欧美午夜性视频| 福利视频久久| 久久semm亚洲国产| 国产一区二区精品福利| 欧美午夜在线视频| 亚洲国产在一区二区三区| 高h视频在线| 国产精品久久久免费视频| 亚洲手机在线| aa级毛片毛片免费观看久| 一级不卡毛片| 国产高清自拍视频| 亚洲激情区| 亚洲无码视频一区二区三区| 青青青国产视频| 99激情网| 久久精品波多野结衣| 色综合日本| 一级毛片在线播放免费观看| 国产呦精品一区二区三区下载| 国产男女免费完整版视频| 国产jizzjizz视频| 亚洲福利片无码最新在线播放 | 亚洲第一视频区| 精品福利视频网| 日本成人一区| 亚洲五月激情网| 香蕉视频国产精品人| 九九热视频精品在线| 天天色综网| 99re在线免费视频| 成年人视频一区二区| 亚洲成人播放| 成人精品在线观看| 99视频在线免费| 国产91蝌蚪窝| 国内黄色精品| 不卡国产视频第一页| 亚洲精品福利视频| 女人18毛片一级毛片在线 | 91亚洲影院| 91丨九色丨首页在线播放 | 夜夜拍夜夜爽| 亚洲色欲色欲www在线观看| 久青草国产高清在线视频|