編輯的話

 

  資訊學科中心科『課程教學優良示例徵選』活動已於七月截止投稿,感謝各位老師們不吝嗇地提供作品,學科中心將於九月舉辦實作課程教學優良示例甄選分享研習,並且邀請各位獲獎的老師們分享如何運用巧思來設計課程教學內容,豐富高中資訊科之教學品質,以達集思廣益之效。

  資訊學科中心檢送影片推薦表及高中領域專家推薦表,煩請各位資訊界的老師提供有關:(1)高中職領域專家推薦表(2)影片推薦及檢核表,並回傳w09391@mail.tnssh.tn.edu.tw, 感謝各位老師們的提供~
  本期電子報的經驗分享文章,感謝臺北市立建國高級中學 王鼎中老師撰寫的--「踩地雷遊戲」程式撰寫及教學應用分享,文章中 王老師在教導學生學習程式設計的過程中,學生學到了程式的概念與語法,但是如何能讓學生將內功發展出來,引導學生製作資訊專題是一個可以嘗試的方式,讓學生做出屬於自己的程式作品,對未來高三推甄大學也會有很大的助益。,歡迎老師閱讀。

  另外學科中心預告下期電子報主題是由台北市立大理高中 黃世隆老師所撰寫的--資訊科教師如何協助與融入學校專業學習社群,文章即將公開,敬請期待~


敬祝 暑假愉快

 

 

十二年國民基本教育中等學校

教師教學專業能力五堂課研習(北部)

《活動剪影》


種子教師教材研發第5次會議

暨種子教師第2次培訓研習

《活動剪影》

 

十二年國民基本教育中等學校教師教學專業能力研習五堂課《紀錄》

   學科中心已在7月9日(二)在新北市立板橋高中辦理最後一場教師教學專業能力五堂課研習(北區),早上課程很榮幸邀請到曾任高師大工業科技教育系 與高雄市教育局局長,現任龍華科大企業管理系暨碩士班 羅文基教授,羅教授以有趣且多元的談話來講授有關台灣教育教學與評量的理念與應用,讓與會老師了解到教學的重點不是學校或教師『教了什麼』,而是學生『學了什麼』並且如何把『教師為中心』的教學轉變為以『學生為中心』的學習, 經過羅教授解說後相信讓與會老師可以對往後教學的品質與效能大大的提升。
    下午的課程則是由資訊學科中心三位種子教師郭再興 老師、蕭嘉民 老師、高慧君 老師來與大家分享,希望啟發老師能以更加多元的角度來看待有效多元評量,並且知道如何運用的資訊技能,以建立過程多元、時機多元、人員多元等觀念之共識。

 

種子教師教材研發第5次會議暨種子教師第2次培訓研習《紀錄》

        學科中心於7月25日(四)、7月26日(五)在國立馬公高中舉行種子教師第二次培訓研習與種子教師教材研發第五次會議本次研習邀請到台北市立南港高級中學 高慧君老師以及台北市立華江高中退休主任 吳秉鋒老師說道有別於傳統的程式設計教學往往以與法做為學習切入點,反之Greenfoot則是採用物建概念優先的方法來進行學習,讓程式設計以淺顯易懂的方式呈現在課堂上,讓學生自我產生學習動機,提升學習成效經過兩位講師們的解說後相信讓與會老師可以對往後教學的品質與效能大大的提升。

  另外學科中心第五次會議邀請諮詢委員國立台灣師範大學資訊教育研究所 陳明溥教授蒞臨指導,會議針對教材研發、下半年的研習事項進行討論。

 

 

「2013年聯網嵌入式系統快速雛型化」聯盟技術研討會

國立中央大學辦理2013年聯網嵌入式系統快速雛型化」聯盟技術研討會
說明:
一、 為因應市場需求及人才培訓,國立中央大學特辦理「2013年聯網嵌入式系統快速雛型化」聯盟技術研討會。
二、 課程說明:

(一)招生對象:
1、有意了解微型低成本嵌入式系統開發平台者。
2、有意了解智慧物聯網產品及應用者。
3、想要培育第二專長者。
(二)課程時間:8/2(五)、8/16(五)、8/30(五)、13:00-17:00,共計12小時。
(三)上課地點:國立中央大學(桃園縣中壢市中大路300號)
(四)課程費用:1000元(報名送SIOC嵌入式系統開發板一套)
(五)報名方式:請傳真報名表至03-4205473或E-Mail:changtai@ncu.edu.tw

三、 課程聯絡人:03-4206951,陳先生。
大會網頁:點我連結

 

第九屆無線、隨意及感測網路研討會暨國科會無線網路計畫研究成果發表會

活動簡介:無線、隨意及感測網路研討會(簡稱WASN)為臺灣探究無線網路技術與應用的重要年會,由國內各大學輪流主辦。 2010年在國立臺灣大學 ,2011年在國立交通大學,2012年在國立台北大學。今年為第九屆WASN 2013,由清華大學資訊工程系主辦,在苗栗縣三義鄉西湖渡假村舉辦, 深盼諸位學者專家給予支持與愛護。
主辦單位:國立清華大學電腦與通訊科技研發中心
日期:102年8月27、28日 (星期二、三)
地點:苗栗三義 西湖渡假村-巨蛋多功能會議室
大會網頁:http://wasn2013.cs.nthu.edu.tw/agenda.php

 

第十八屆行動計算研討會

活動簡介:行動計算研討會(簡稱MC)為一個探究行動計算技術與相關應用之學術研討會。近年因為行動感測及雲端服務的普及,伴隨產生大量甚至非結構化之資料,這些「巨量資料(Big Data)」隱含許多有用的資訊,卻常無法以傳統技術進行儲存、管理與分析,因此本次大會特以「巨量資料」為主題,討論相關技術的最新發展及趨勢。此外,本次會議特別安排了巨量資料的論壇,將邀請重要產、學界代表,針對未來的產業需求與研究方向進行對話。除了上述主題之外,大會也歡迎其他行動計算相關研究成果的發表。本屆研討會將設置最佳論文獎,將於晚宴中公開頒獎表揚。
主辦單位:國立交通大學資訊工程系、國立台南大學資訊工程系
日期:102年8月27、28日 (星期二、三)
地點:苗栗三義 西湖渡假村(苗栗縣三義鄉西湖村西湖11號)
大會網頁:
http://www.csie.uch.edu.tw/cnis2013

 

  Google Play store發佈全新Web版,隨Android版重新設計

 蘋果已收購一家晶片製造商,將自產晶片

  4G看天下 影音更流暢

  Google 首度在台展示街景背包,將開放團體申請使用

  蘋果急請人 因為iWatch很頭痛

 iPhone/iPad變身3D體感? Apple想收購Kinect的技術公司

  三星承認投入可穿戴式設備,除了手錶還有健康監控設備


  可接iPhone的日本最新電動機車亮相

  Firefox OS 裝置正式推出!

  iPhone 5S始期供應或極之有限, 全因新部件

  Apple iTV電視機將會讓你從此不用看廣告

  Google 地圖導航功能正式支援台灣地區!

  為你找方向!SONY推出智能導航拐杖

 Google Glass眼鏡加入網頁瀏覽器功能
 

 

教育部國民電腦網

  我國行政院自2004年3月起,正式將「縮減數位落差」列為國家重要政策,2005年由教育部負責協調統合11個部會改善城鄉數位落差之資源,共同推動「縮減城鄉數位落差」,以有效落實對偏遠鄉鎮的社會關懷政策並逐年改善數位落差現象。2007年起教育部依據行政院國家資訊通信發展推動小組95年12月26日第18次委員會會議結論之二:推動「優質網路社會計畫」之創造公平數位機會,實施「推動國民電腦應用,照顧弱勢」。

網址:https://icare.moe.gov.tw/index.aspx



RobotEdu

       RobotEdu是台灣大學土木系康仕仲教授的機器人教學網站,網站教材教材是由康仕仲教授帶領的研究團隊所設計,為機器人初學者量身打造的入門工具書。著眼於網路影音的即時、快捷、互動性,康教授團隊將本教材推出網路影音版,期望能夠幫助更多對機器人有興趣的人 。
網址:http://140.112.12.21/site/robotedu/

 

 

  

 

 

 

 

 

 

 

 

 

 

 

台灣好創意-網路整合感測技術 導入LED植物工廠《影片》

 

台灣好創意-可撓面板手機加值/兩岸學生攜手打造孝心座椅《影片》

 

 
 

 

《資訊教育議題》
從憤怒鳥到知識管理-談數位公民之資訊素養與自我成就

撰文/臺北市立大理高中 黃世隆 教師
 

摘要

從資訊產業發展趨勢中,檢視企業成功的原因,並反思個人學習的模式與效益,並透過知識管理與資訊科技之輔助,建立自我學習的概念與方法,同時考量數位時代公民應具備之價值觀,以求得現代高中生自我學習與成就之展現。
《 精彩全文閱讀》

 

 

  

 「踩地雷遊戲」程式撰寫及教學應用分享

文/臺北市立建國高級中學 王鼎中 教師
 

緣起

    在程式語言的教學過程中,介紹完函數(Function)的用法後,接著就希望能將程式語言中相當強大、直觀的遞迴呼叫功能介紹給學生,最經典的範例便是「河內塔」,不論是三柱河內塔最少搬動次數的計算,或是列出三柱河內塔的最佳搬動步驟,都相當能引起學生的學習動機,甚至有些學生在學習過後,還會想知道遞迴呼叫除了用來計算加總、階層、組合數之外,是不是還有其他的應用,因此,筆者希望能找到另一個能展現遞迴呼叫功能的應用,在幾經嘗試之後發現,學生們經常在windows環境下玩的「踩地雷」遊戲是個不錯的選擇,只是不曉得有了小朋友齊打交、CS及candy crush之後,踩地雷是不是還那麼吸引人就是了。

 

遞迴呼叫的教學流程分享

        在開始介紹「踩地雷」遊戲的遞迴應用前,先分享一下筆者在介紹遞迴呼叫的教學流程:

1.      介紹在函數(Function)中呼叫另一個函數(Function)的用法

接著學生可能會問到那函數(Function)可不可以呼叫函數(Function)本身

2.      介紹函數呼叫函數本身的用法

詢問學生為什麼函數要呼叫函數本身,引導關注函數的遞迴關係

引導學生發現可能產生的遞迴無法終止的問題

3.      介紹遞迴函數呼叫的兩大要素:遞迴關係及終止條件

舉例介紹遞迴關係及終止條件

加總SUM:

遞迴關係式

終止條件

S(n) = 1 + 2 + 3 + … + (n-1) + n

S(n) =      S(n-1)      + n

        S(0) = 0

 

階層:

遞迴關係式

終止條件

 f(n) = n * (n-1) * (n-2) * … * 2 * 1

f(n) = n *     f(n-1)

        f(1) = 1

 

計算組合數

遞迴關係式

終止條件

        C(m,n) = m! / (n!*(m-n)!)

        C(m,n) =C(m-1,n) + C(m-1,n-1)

        C(m,m) = 1

        C(m,0) = 1

        C(0,n) = 0

 

4.      介紹三柱河內塔最少搬動次數的計算

遞迴關係式

終止條件

hanoi_step(n) = 2 * hanoi_step(n-1) + 1

 

        hanoi_step(1) = 1

 

 

5.      列出三柱河內塔的最佳搬動步驟

遞迴關係

終止條件

搬動n個盤子從A到C的步驟=

        搬動n-1個盤子從A到B

        搬動最下面的盤子從A到C

        搬動n-1個盤子從B到C

當搬動的盤子只有一個時

        則搬動該盤子從A到C

 

6.      以踩地雷」遊戲介紹遞迴呼叫的應用

  「踩地雷」遊戲應用到遞迴呼叫的部分,主要是在當使用者所”踩”的位置,周邊相鄰的八個位置的炸彈總數等於0,亦即周邊都沒有炸彈時,我們會應用遞迴呼叫的方式,分別去”踩”周邊的那八個位置,若去”踩”的那個位置又有同樣的狀況時,則繼續遞迴呼叫下去。而當周邊炸彈總數不等於0時,則僅需將炸彈數儲存在陣列中即可。

遞迴關係

終止條件

當周邊炸彈總數等於0時

去”踩”周邊的那八個位置

1

4

6

2

 

7

3

5

8

當周邊炸彈總數不等於0時

將炸彈數儲存在對應陣列中

 

     教學時若擔心整體程式複雜度可能較高,影響學生學習的話,建議可如以下分享的程式,將程式需用到的功能先用函數的方式撰寫好,提供給學生依所介紹的遞迴呼叫方式,完成遞迴部分的程式撰寫,對於程度較好的學生則可視其接受程度,斟酌提供所撰寫好的部分函數。

 

「踩地雷」遊戲撰寫實例分享

         以下為筆者所撰寫的一個簡易版「踩地雷」遊戲,程式的撰寫不見得最佳、最正確,但力求清楚、簡潔,希望能提供給大家做為教學上的一個參考。這一個版本的程式,僅是一個具核心功能的毛胚程式,主要是想強調周邊沒有炸彈時的遞迴展開動作,並沒有做炸彈標示、遊戲介面顯示、完成遊戲的判斷,以及輸入錯誤的偵測等功能的設計,這些部分可以作為學生延伸學習的課題,讓學生嘗試去解決。若您對以上功能的撰寫有興趣,請參閱另附的完整版程式。
 

      ◎    定義及宣告

定義踩地雷範圍的大小:調整行數及列數的數值即可改變盤面的大小       

        #define ROWS 9     //踩地雷範圍的列數

        #define COLS 9      //踩地雷範圍的行數

 

宣告儲存踩地雷資訊的陣列

int data[ROWS+2][COLS+2];    //儲存踩地雷相關資訊用

 

        data陣列是一個二維陣列,大小分別ROWS+2及COLS+2,亦即(列數+左右兩邊的邊界)以及(行數+左右兩邊的邊界),陣列資料型態為(整數),其內容標記大致有下列數種:(-8):邊界、(99):炸彈、(-1):尚未被踩的地方、(1-8的數字):該位置周邊的炸彈數。

            在踩地雷範圍的周邊多加一圈邊界(-8)的用意,在於遞迴展開時可省去邊界的偵測,並避免產生存取超出陣列範圍元素的錯誤,降低判斷的次數及程式的複雜性。

                                                 

 

◎    基本函數撰寫介紹

(1)   Init()函數:

功能:踩地雷盤面初始化

傳入參數:bombs為炸彈總數(整數型態)

函數設計的概念:

  先在列數為0或ROWS+1,或行數為0或COLS+1的陣列位置上填上(-8),代表邊界,其他的位置填上(-1),代表尚未被踩的地方,接著,每次隨機產生一組x、y座標值,在該陣列位置填上(99),代表炸彈,重複進行多次完成炸彈得隨機佈置,由於隨機產生出的座標值很有可能會重複,因此,實際產生的炸彈數量有可能會較預期的數量少,此部分在判定是否完成遊戲時須特別留意。

void init(int bombs)

{

  int i,j,temp1,temp2;

  for( i=0; i<=ROWS+1; i++)

  {

    for( j=0; j<=COLS+1; j++)

    {

      if( i==0 || j==0 || i==ROWS+1 || j==COLS+1 )

      {

         //設定邊界

         data[i][j]=-8;

      }

      else

      { 

         //設定盤面初始內容

         data[i][j]=-1;

      }

    }

  }

 

  //隨機產生bombs個炸彈

  for( i=1; i<=bombs; i++)

  {

    temp1=rand()%(ROWS) + 1 ;

    temp2=rand()%(COLS) + 1 ;

    data[temp1][temp2]=99;   

  }

}

 

(2)   display()函數:

功能:顯示踩地雷盤面

傳入參數:無

函數設計的概念:

  此函數主要是將data陣列的內容顯示出來,重點在於(印出盤面內容)的部分:在data[i][j]的內容為0時(“踩”過且周邊都沒有炸彈)印出空白,在data[i][j]的內容為-1時(該位置尚未“踩”過)印出底線” _”,其餘皆用data陣列中的原始內容輸出。

  若要將此程式改寫為遊戲版,則只要在函數中加入將炸彈隱藏起來的處理,亦即當data[i][j]的值(99)時顯示為”_”,以及處理炸彈標示顯示的部分即可。

void display()

{

  int i,j;

  system("cls");

  //印出Y橫軸的座標

  cout << "x/y";

  for( j=0; j<=COLS+1; j++)

  {

     if( j==0 || j==COLS+1 )

     {

        cout << " ";

     }

     else

     {

        cout << setw(2) << j;

     } 

  }

  cout << endl;

 

  //顯示所有盤面內容    

  for( i=0; i<=ROWS+1; i++)

  {

    //印出X縱軸的座標  

    if( i==0 || i==ROWS+1 )

    {

       cout << "  ";

    }

    else

    {

       cout << setw(2) << i;

    } 

   

    //印出盤面內容

    for( j=0; j<=COLS+1; j++)

    {

      if( data[i][j]==0 )

      {

        cout << "  ";

      }

      else

      {

        cout << setw(2) << data[i][j];

      } 

    }

    cout << endl;

  }

}

 

(3)   step_on(int x, int y)函數:

功能:進行X,Y座標處的踩地雷處理

傳入參數:int x, int y分別為X座標與Y座標值。

函數設計的概念:

  此函數主要是進行X,Y座標處的踩地雷處理,函數一開始會先以迴圈計算X,Y座標處周邊八個位置的炸彈總數,接著,若炸彈總數等於0,則依序以周邊八個位置的X,Y座標值為參數,遞迴呼叫step_on()函數進行踩地雷處理,若炸彈總數不等於0,則將周邊炸彈總數儲存在X,Y座標值對應的陣列中。

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

  for(i=-1;i<=1;i++)

                // i+x   j+y

(X-1,Y-1)

(X+0,Y-1)

(X+1,Y-1)

(X-1,Y+0)

(X+0,Y+0)

(X+1,Y+0)

(X-1,Y+1)

(X+0,Y+1)

(X+1,Y+1)

 

 

 

 

 

 

小技巧:

  計算周邊八個位置的炸彈總數,及對周邊八個位置進行遞迴呼叫的踩地雷處理,都單純的僅用到了兩層迴圈處理,且中間位置(X+0,Y+0)並不需要特別做處理,原因在於:

(1)    計算周邊八個位置的炸彈總數:由於在處理前已先檢查本身(X+0,Y+0)是不是炸彈,不是炸彈才會進入計算炸彈總數的處理,因此,加入本身(X+0,Y+0)的計算,並不會影響炸彈總數的計算。

(2)   對周邊八個位置進行遞迴呼叫的踩地雷處理:由於在周邊炸彈總數等於0時,才會進行遞迴呼叫,因此,在遞迴呼叫前先將data[x][y]設定為0,如此一來,只要在迴圈中加一個if( data[i+x][j+y]==-1 ),即該點仍未被”踩”過的判斷,即可避免掉中心位置(X+0,Y+0)呼叫到中心位置(X+0,Y+0),所產生的無窮遞迴的狀況。

void step_on(int x, int y)

{

  int i,j,count;

  count=0;

  //統計該位置周邊的炸彈總數

  for(i=-1;i<=1;i++)

  {

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

    {

      if( data[i+x][j+y] == 99 )

      {

        count = count + 1;

      }

    }

  }

 

  //若周邊炸彈數為0時,遞迴呼叫展開

      //每一輪呼叫的順序為 1 4 6

      //          2  7

      //          3 5 8  

  //否則  將周邊炸彈總數儲存在該座標的陣列中

  if( count==0 )

  {

    data[x][y]=0;

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

    {

      for(i=-1;i<=1;i++)

      {

          //取消下兩行註解  可顯示目前處理的座標位置

          //cout << i+x <<"  " << j+y << endl;

          //system("pause");

          if( data[i+x][j+y]==-1 )

          {

          //取消下兩行註解  可動態展示遞迴展開的狀況    

          //  display();             

          //  system("pause");

            step_on(i+x,j+y);

          } 

      }

    } 

  }

  else

  {

    data[x][y]=count;

  }

}

 

遞迴教學展示應用

        若要展示踩地雷的遞迴展開動作時,可以在每一次遞迴呼叫前,亦即在step_on()函數中,每次呼叫step_on()函數之前,加入以下兩行程式即可:

     display();             

     system("pause");

     step_on(i+x,j+y);

         

《 精彩全文下載》

 


::更多資訊請上 高中資訊學科中心::

用心  專業  熱忱  創新

您有任何問題需要協助或有好文章、網路資源要與大家分享,請洽:
高中資訊學科中心專任助理
 許雅婷高廷瑋 

感謝您的投入與支持,讓電子報的內容更加豐富!

發行單位:教育部高中資訊學科中心

承辦學校:國立臺南第二高級中學 

地       址:704臺南市北區北門路二段125號

電       話:06-2514526#608、06-2828059

發行人:王榮發校長

總編輯:陳美芳主任

編輯群:許雅婷小姐、高廷瑋先生

出刊日期:2013年7月