• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于“信息學(xué)奧林匹克競(jìng)賽”培養(yǎng)程序設(shè)計(jì)習(xí)慣的研究

      2009-01-20 01:55:54李軍玲邵洪艷
      計(jì)算機(jī)教育 2009年24期
      關(guān)鍵詞:信息學(xué)程序設(shè)計(jì)習(xí)慣

      李軍玲 邵洪艷

      摘要:本文針對(duì)NOIP競(jìng)賽中學(xué)生普遍不重視養(yǎng)成良好程序設(shè)計(jì)習(xí)慣的問(wèn)題,通過(guò)以競(jìng)賽試題中閱讀程序?yàn)槔?分析說(shuō)明培養(yǎng)程序設(shè)計(jì)習(xí)慣的措施,提出正確使用程序設(shè)計(jì)工具,以達(dá)到養(yǎng)成良好的程序設(shè)計(jì)風(fēng)格、加強(qiáng)良好程序設(shè)計(jì)習(xí)慣養(yǎng)成的目的,這對(duì)提高學(xué)生的程序設(shè)計(jì)能力具有較好的現(xiàn)實(shí)指導(dǎo)意義。

      關(guān)鍵詞:信息學(xué);奧林匹克競(jìng)賽;程序設(shè)計(jì);習(xí)慣

      中圖分類(lèi)號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B

      1現(xiàn)狀與對(duì)策

      全國(guó)青少年信息學(xué)奧林匹克聯(lián)賽(National Olympiad in Informatics in Provinces,簡(jiǎn)稱(chēng)NOIP)是全國(guó)信息學(xué)奧林匹克競(jìng)賽(NOI)系列活動(dòng)中的一個(gè)重要組成部分,旨在向中學(xué)生普及計(jì)算機(jī)基礎(chǔ)知識(shí)。從早期只考核學(xué)生對(duì)程序設(shè)計(jì)語(yǔ)言的理解、熟悉程度以及編程技巧發(fā)展到模型設(shè)計(jì)、離散數(shù)學(xué)、動(dòng)態(tài)規(guī)劃的思想及算法,由單純的培養(yǎng)學(xué)生學(xué)習(xí)興趣轉(zhuǎn)變?yōu)閯?chuàng)造性地運(yùn)用程序設(shè)計(jì)知識(shí)解決實(shí)際問(wèn)題的能力。然而學(xué)生在程序設(shè)計(jì)習(xí)慣方面普遍重視不夠,為軟件項(xiàng)目開(kāi)發(fā)埋下了巨大隱患。

      1.1現(xiàn)實(shí)中存在的問(wèn)題

      信息學(xué)奧林匹克競(jìng)賽上由于教學(xué)單位出現(xiàn)急功近利的思想,造成學(xué)生不能較好地正確掌握計(jì)算機(jī)程序設(shè)計(jì)過(guò)程,沒(méi)有養(yǎng)成良好的程序編程習(xí)慣。在現(xiàn)實(shí)中,程序設(shè)計(jì)普遍存在以下一些共性問(wèn)題:

      (1) 不愿意讀別人的程序。強(qiáng)調(diào)自己程序設(shè)計(jì)方法的優(yōu)點(diǎn),不愿意學(xué)習(xí)和借鑒他人的設(shè)計(jì)思路。

      (2) 不畫(huà)流程圖。程序流程圖本來(lái)是程序設(shè)計(jì)的最簡(jiǎn)單最直白書(shū)面表達(dá),然而沒(méi)有得到足夠的重視與平時(shí)養(yǎng)成,學(xué)生不樂(lè)意用流程圖來(lái)表達(dá)設(shè)計(jì)思想與過(guò)程,實(shí)際上往往導(dǎo)致程序邏輯交叉,當(dāng)程序出錯(cuò)時(shí)排除費(fèi)時(shí)費(fèi)力。

      (3) 不寫(xiě)程序功能說(shuō)明。程序設(shè)計(jì)過(guò)程中普遍存在只寫(xiě)源代碼的語(yǔ)句,對(duì)程序?qū)崿F(xiàn)的功能沒(méi)有描述,別人閱讀程序很難,有時(shí)編程者自己對(duì)程序的處理技術(shù)方法也遺忘。

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

      (5) 忽視出錯(cuò)處理。只完成程序功能的單一實(shí)現(xiàn)過(guò)程,對(duì)程序可能的具體出錯(cuò)處理分析不夠。

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

      (7) 忽視程序設(shè)計(jì)過(guò)程中文檔資料的積累。普遍認(rèn)為編程就是寫(xiě)程序和調(diào)試過(guò)程,忽視文檔的書(shū)寫(xiě),其后果導(dǎo)致程序維護(hù)困難。

      1.2對(duì)策

      信息學(xué)奧林匹克競(jìng)賽注重學(xué)生終生學(xué)習(xí)能力的培養(yǎng),而不停留在唯競(jìng)賽而學(xué)。在平時(shí)的教學(xué)中培養(yǎng)學(xué)生良好的程序設(shè)計(jì)習(xí)慣,使學(xué)生學(xué)會(huì)準(zhǔn)確運(yùn)用程序設(shè)計(jì)工具,養(yǎng)成良好的程序設(shè)計(jì)風(fēng)格,將達(dá)到事半功倍的效果。

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

      (2) 與人協(xié)作的習(xí)慣。NOIP考試形式上看是學(xué)生個(gè)人的行為,而真實(shí)的軟件工程是多人合作、信息共享的活動(dòng),互學(xué)互助、取長(zhǎng)補(bǔ)短、與人溝通、信息交流的好習(xí)慣將使學(xué)生受益終身。

      (3) 培養(yǎng)全局規(guī)劃習(xí)慣。不論是程序語(yǔ)言的學(xué)習(xí)例題還是NOIP的考試命題,題目功能典型,學(xué)生要善于從短小的程序代碼中分析計(jì)算機(jī)解決問(wèn)題的方式、途徑,將小代碼功能擴(kuò)充完善,利用程序設(shè)計(jì)工具對(duì)問(wèn)題從全局角度進(jìn)行分析處理。

      (4) 良好的代碼編寫(xiě)習(xí)慣。包括程序流程圖、變量命名、代碼標(biāo)注、功能注釋、捕獲代碼異常、測(cè)試樣例、文檔記錄等多個(gè)環(huán)節(jié)。如果在軟件開(kāi)發(fā)和程序編寫(xiě)過(guò)程中養(yǎng)成良好的習(xí)慣,那么程序中存在的漏洞就易于發(fā)現(xiàn),為將來(lái)大型軟件項(xiàng)目的開(kāi)發(fā)打下良好基礎(chǔ)。

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

      2培養(yǎng)正確程序設(shè)計(jì)習(xí)慣的措施

      學(xué)生在學(xué)習(xí)過(guò)程中主要接觸的是以掌握基本算法為主的程序例題和NOIP獨(dú)立命題題目,而軟件開(kāi)發(fā)過(guò)程是一系列活動(dòng),包括方法、工具和過(guò)程三個(gè)要素。因此,如何讓學(xué)生以小見(jiàn)大,培養(yǎng)良好的程序設(shè)計(jì)習(xí)慣才是學(xué)習(xí)的根本。以第14屆NOIP提高組C++初賽題目閱讀程序4為例題,說(shuō)明如何借助程序設(shè)計(jì)工具,養(yǎng)成良好的程序設(shè)計(jì)風(fēng)格,培養(yǎng)良好的程序設(shè)計(jì)習(xí)慣,例題的源程序如下。

      #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準(zhǔn)確使用程序工具的習(xí)慣

      學(xué)生在學(xué)習(xí)程序設(shè)計(jì)過(guò)程中不要過(guò)分強(qiáng)調(diào)上機(jī)調(diào)試運(yùn)行,學(xué)會(huì)正確運(yùn)用程序設(shè)計(jì)工具是根本。程序設(shè)計(jì)工具不僅能正確將程序分析過(guò)程轉(zhuǎn)變?yōu)槌绦驅(qū)崿F(xiàn),而且還能夠幫助學(xué)生快速分析源程序的語(yǔ)句功能,生成程序設(shè)計(jì)過(guò)程中所需要的文檔資料。

      2.1.1數(shù)據(jù)字典

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

      2.1.2N-S圖

      N-S圖是適應(yīng)結(jié)構(gòu)化程序設(shè)計(jì)特點(diǎn),逐步求精模塊化程序設(shè)計(jì)方法的有力工具。閱讀例題源程序語(yǔ)句可以快速畫(huà)出它的N-S圖(圖1),從而確定例題的程序順序結(jié)構(gòu)功能,如圖2所示。

      2.2良好程序書(shū)寫(xiě)風(fēng)格的養(yǎng)成

      程序不僅要保證運(yùn)行正確,也是讓別人讀的。程序書(shū)寫(xiě)設(shè)計(jì)風(fēng)格包括4個(gè)方面:源程序文檔化、數(shù)據(jù)說(shuō)明、語(yǔ)句結(jié)構(gòu)和輸入輸出方法。針對(duì)NOIP命題特點(diǎn),學(xué)會(huì)從編碼原則提高程序的可讀性著手。由于例題已具有完好的縮進(jìn)格式,只需要加入相關(guān)的序言性和語(yǔ)句注釋。程序部分修改內(nèi)容如下。

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

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

      ....

      int main()

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

      len=strlen(s); //求s長(zhǎng)度

      for(i=0;i

      ...

      //逐字符轉(zhuǎn)換為其后面的第3個(gè)字符

      for(i=0;i

      ...

      cout<

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

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

      ...

      cout<

      return 0; //返回

      }

      2.3程序算法分析的習(xí)慣

      算法的空間復(fù)雜度和時(shí)間復(fù)雜度是分析一個(gè)程序算法的執(zhí)行效率與存儲(chǔ)需求,可以有效避免只強(qiáng)調(diào)偏僻技巧而忽略算法復(fù)雜性。

      int main()

      { cin>>s; //執(zhí)行次數(shù)1

      len=strlen(s); //執(zhí)行次數(shù)1

      for(i=0;i

      ...

      for(i=0;i

      ...

      for(j=1;j<4;j++) //執(zhí)行次數(shù)4

      for((i=0;i

      s[i]=s[i+j] //執(zhí)行次數(shù)4*n

      cout<

      }

      通過(guò)對(duì)例題的基本語(yǔ)句執(zhí)行次數(shù)分析,得出程序的時(shí)間復(fù)雜度為O(n2)。

      2.4面向?qū)ο蟪绦蛟O(shè)計(jì)的習(xí)慣

      目前面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù)在軟件開(kāi)發(fā)中占據(jù)主導(dǎo)地位,是指導(dǎo)學(xué)生學(xué)習(xí)軟件的發(fā)展方向。根據(jù)例題程序的功能實(shí)現(xiàn),通過(guò)定義一個(gè)obj類(lèi),含有實(shí)現(xiàn)程序功能的4個(gè)成員函數(shù),將例題的面向過(guò)程編程改寫(xiě)為面向?qū)ο蟮某绦蛟O(shè)計(jì),使數(shù)據(jù)和操作具有封裝性。改寫(xiě)后的程序源代碼如下。

      #include

      #include

      using namespace std;

      class obj //定義obj類(lèi)

      {public: //定義公有成員函數(shù)

      obj( ) {*s=NULL;len=0;} //定義構(gòu)造函數(shù)

      void input( ); //輸入函數(shù)

      void change( ); //字符轉(zhuǎn)換函數(shù)

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

      //定義輸出函數(shù)

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

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

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

      int len; //字符串長(zhǎng)度len

      };

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

      {cout<<"inputs=";

      cin>>s;

      len=strlen(s);

      }

      void obj::change( ) //定義轉(zhuǎn)換函數(shù)

      { 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 ( ) //定義字符重賦值函數(shù)

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

      { for(int i=0;i

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

      }

      int main( ) //主函數(shù)

      { obj x; //obj類(lèi)的對(duì)象x

      x.input ( );

      x.change ( );

      x.setvalue ( );

      x.print ( );

      return 0;

      }

      3結(jié)語(yǔ)

      NOIP重點(diǎn)是培養(yǎng)學(xué)生學(xué)習(xí)計(jì)算機(jī)的興趣,使學(xué)生對(duì)信息技術(shù)的一些核心內(nèi)容有更多的了解,提高創(chuàng)造性地運(yùn)用程序設(shè)計(jì)知識(shí)解決實(shí)際問(wèn)題的能力,而不是一味學(xué)習(xí)專(zhuān)業(yè)教材。因此,只有開(kāi)始養(yǎng)成一個(gè)良好的程序設(shè)計(jì)習(xí)慣,才能為將來(lái)的軟件開(kāi)發(fā)打下好基礎(chǔ),而不是追求唯競(jìng)賽而學(xué)的短期效果。

      參考文獻(xiàn):

      [1] 馬苗,田紅鵬. “面向?qū)ο蟪绦蛟O(shè)計(jì)與C++”教學(xué)中的問(wèn)題與思考[J]. 計(jì)算機(jī)教育,2008(6):81-82.

      [2] 楊顯霞. 信息學(xué)奧林匹克競(jìng)賽教學(xué)模式初探[J]. 西南農(nóng)業(yè)大學(xué)學(xué)報(bào):社會(huì)科學(xué)版,2008(4):169-171.

      [3] 林小華. 計(jì)算機(jī)程序設(shè)計(jì)風(fēng)格探討[J]. 軟件導(dǎo)刊,2006(17):33-35.

      [4] 譚浩強(qiáng). C++程序設(shè)計(jì)[M]. 北京:清華大學(xué)出版社,2004.

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

      猜你喜歡
      信息學(xué)程序設(shè)計(jì)習(xí)慣
      習(xí)慣(外二首)
      雞NRF1基因啟動(dòng)子區(qū)生物信息學(xué)分析
      上課好習(xí)慣
      基于Visual Studio Code的C語(yǔ)言程序設(shè)計(jì)實(shí)踐教學(xué)探索
      從細(xì)節(jié)入手,談PLC程序設(shè)計(jì)技巧
      電子制作(2019年9期)2019-05-30 09:42:04
      初論博物館信息學(xué)的形成
      當(dāng)你不喜歡,你就不習(xí)慣
      文苑(2018年20期)2018-11-09 01:36:02
      好習(xí)慣
      高職高專(zhuān)院校C語(yǔ)言程序設(shè)計(jì)教學(xué)改革探索
      PLC梯形圖程序設(shè)計(jì)技巧及應(yīng)用
      长顺县| 成武县| 遂川县| 峨眉山市| 禹州市| 兴隆县| 文安县| 土默特右旗| 新乐市| 仁寿县| 泗阳县| 马边| 平泉县| 吉木萨尔县| 仁化县| 廊坊市| 古丈县| 额敏县| 东至县| 红原县| 东光县| 清徐县| 大余县| 蓝山县| 祁阳县| 湖南省| 濮阳市| 峨山| 南部县| 大足县| 福清市| 永修县| 达日县| 资中县| 固安县| 驻马店市| 双流县| 宝鸡市| 上犹县| 女性| 抚松县|