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
讓優秀成為習慣
好習慣
好習慣,“約”嗎
主站蜘蛛池模板: 精品日韩亚洲欧美高清a| 亚洲性色永久网址| 日韩中文字幕免费在线观看| 日韩成人在线一区二区| 午夜福利免费视频| 8090成人午夜精品| 欧美在线国产| 99青青青精品视频在线| 免费一级无码在线网站| 久久免费观看视频| 国产精品999在线| 欧美亚洲一区二区三区导航| 一级福利视频| 中文字幕一区二区人妻电影| 黄片一区二区三区| 亚洲国产成人超福利久久精品| 午夜免费小视频| 欧美国产日韩在线播放| 国产幂在线无码精品| 国产精品99r8在线观看| 国产一区在线视频观看| 一级一级特黄女人精品毛片| 青青草原国产av福利网站| 欧美日韩高清在线| 三上悠亚一区二区| 日韩大片免费观看视频播放| 亚洲福利一区二区三区| 国产18页| 国产第一福利影院| a色毛片免费视频| 国产欧美日韩精品综合在线| 91亚瑟视频| 香蕉久人久人青草青草| 亚洲日韩精品欧美中文字幕| 2021国产精品自产拍在线| 亚洲中文字幕国产av| 欧美精品一区在线看| 国产在线精品网址你懂的| 国产老女人精品免费视频| 午夜毛片免费观看视频 | 久久午夜夜伦鲁鲁片无码免费| 亚亚洲乱码一二三四区| 亚欧成人无码AV在线播放| 国产午夜一级毛片| 人妻无码AⅤ中文字| 色丁丁毛片在线观看| 久久福利网| 亚洲第一视频网站| 日本成人精品视频| 一级福利视频| 免费国产无遮挡又黄又爽| www中文字幕在线观看| 综合天天色| 欧美a级在线| 久久精品国产999大香线焦| 亚洲中文字幕av无码区| 国产黑丝一区| 成人无码一区二区三区视频在线观看| 免费国产高清精品一区在线| 国产精品成人第一区| 亚洲精品va| 国产精品无码翘臀在线看纯欲| 人妻无码一区二区视频| 2024av在线无码中文最新| 国产69精品久久久久孕妇大杂乱| 99热国产这里只有精品无卡顿" | 久热中文字幕在线| 日本三级黄在线观看| 激情無極限的亚洲一区免费| 毛片手机在线看| 69综合网| 久久婷婷五月综合97色| 国产在线精彩视频论坛| 好吊色妇女免费视频免费| 国产va在线观看| a毛片基地免费大全| 精品久久国产综合精麻豆| 91精品啪在线观看国产91| 久久精品午夜视频| 国产欧美日韩视频一区二区三区| 91免费观看视频| 国产丰满成熟女性性满足视频|