新世紀版信息技術八年級下冊第十課傳遞信息 教案.doc
新世紀版信息技術八年級下冊第十課傳遞信息教學設計課題 傳遞信息單元第一單元學科信息技術年級八年級學習目標知識目標:進一步學習列表;進一步學習字典,熟悉前面學過的編程知識。技能目標:學習列表和字典;理解程序。情感目標:培養學生分析理解程序的能力。重點學習列表和字典難點理解程序教學過程教學環節教師活動學生活動設計意圖導入新課micro:bit可以發送和接收信息,這節課讓我們用micro:bit來玩一個傳遞信息的游戲。一塊 micro:bit負責發送信息,另一塊micro:bit負責接收信息。思考激發學生學習興趣并快速進入學習狀態講授新課一、發送信息【例題1】發送信息。micro:bit上沒有鍵盤,如果用micro:bit發送信息,如何輸入要發送的信息呢?想一想,你 有什么好辦法?我們用下面的方法輸入信息:在micro:bit上顯示字母,用按鈕B循環翻頁,按下按鈕A選 定并發送點陣屏幕上顯示的字母。用變量code存儲字母(還可以加入標點符號等),code是一個列表,用n表示code中元素的序號。在點陣屏幕上顯示code中的字符。輸入符號 “#”表示信息發送完畢。用變量message存儲所有已發送的信息。程序如下:仔細閱讀上面的程序,你能看明白嗎?怎樣利用 micro:bit 的兩個按鈕發送信息呢?【例題 1】的辦法是:用按鈕B翻頁顯示字符,用按鈕A發送點陣屏幕上顯示的字符。怎樣在屏幕上顯示字符呢?用列表 code 存儲需要顯示的字符: code = A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V, W,X,Y,Z,#用 n 表示列表中元素的序號,每按一下按鈕 B,序號 n 就增加 1,屏幕上 顯示 coden 這個字符。由于 n 會不斷增加,但 n 的最大值不能超過“列表的長度 -1”,當 n 的值 達到列表的長度時,應該重新將 n 的值設置為 0。if button_b.is_pressed(): if n len(code) - 1: n = n + 1 else : n = 0上面這些功能可以用求余函數簡化:if button_b.is_pressed(): n = n + 1 n=n%len(code)或者進一步簡化為:if button_b.is_pressed(): n = (n + 1)%len(code)按下按鈕 A 就將 coden 這個字符發送出去:radio.send(coden)為了確定按下按鈕 A 時屏幕上的字符是真的發送出去了,我們讓屏幕上的 字符閃爍一下。具體的實現方法是:先清屏:display.clear()然后進入下一輪循環后再重新顯示字符coden : display.show(coden)于是,按下按鈕 A,屏幕上的字符就閃爍了一下,如果沒有閃爍,說明按下按鈕 A 不成功,需要重新按。當所有的字符發送完畢,需要發送一個結束信號“#”,然后程序就退出 循環:if coden = #: break最后屏幕上將顯示所有已發送的字符。小博士len()函數的使用方法。語法:len(str)其中變量str可以是字符串、列表、字典等類型。作用:返回字符串、列表、字典等的長度。二、接收信息【例題2】接收信息。由于發送端(【例題1】)是逐個字符發送信息因此在接收端也逐個顯示接收到的字符(message_received),并用變量message將所有接收到的字符記錄下來。當接收到結束 符號“#”,在點陣屏幕上顯示所有接收到的信息message。程序如圖:在上面的程序中,為了確信信息的實時發送和接收是成功的,加入了讓屏幕產生閃動效果的命令:display.clear() sleep(50)交流與協作相鄰的兩個同學一組,就可以玩發送和接收信息的游戲了。為了讓傳送信息的游戲更有趣,可以開展 4 人小組之間的信息傳遞:相鄰的兩個同學為一端,遠處的兩個同學為另一端,每一端有兩塊 micro:bit,一個 用于發送信息,另一個用于接收信息。例如,傳遞如下信息:1Whats your birthday? 7/92Who is your idol?Jack Ma通過玩傳遞信息的游戲,發現程序存在的缺陷,然后改進程序,提高信息 傳送的效率。三、傳遞加密信息在上一個學期,我們學習了如何用愷撒密碼加密信息。現在,讓我們用micro:bit來傳遞 用愷撒密碼加密的信息。【例題3】發送加密信息。修改【例題1】程序,用字典類型的變量book來存儲愷撒密碼。首先建立一個字母列表 code,一個加密字典 book,字典 book 中的“鍵” 是明碼,“鍵值”是密碼。用按鈕 B 翻頁顯示要發送的信息 coden,然后按下 按鈕 A 將 coden 對應的密碼 bookcoden 發送出去:if button_a.is_pressed(): radio.send(bookcoden)修改后的程序如下:將以上程序保存并復制到一塊micro:bit上,然后繼續編寫接收和解密信息的程序。【例題4】接收和解密信息。將接收到的字符解密,需要查密碼字典book,我們先編寫一個解密的函數decode(),然后調用該函數對接收到的字符解密。程序中需要設計一個解密函數:def decode(letter, book): for x in book.keys(): if (bookx = letter): return x信息傳遞完畢,按下按鈕A,顯示接收到的加密信息;按下按鈕B,顯示解密了的信息。程序如下:decode(letter,book)函數有兩個參數,letter代表接收到的密碼,book為密碼字典,該函數的功能就是在密碼字典book中找密碼 letter 對應的明碼。明碼將作為函數 decode(letter, book) 的值返回出來。交流與協作兩個micro:bit一組,設計一套加密規則,然后編寫程序讓一個 micro:bit發送加密消息,另一個接收加密消息并能通過按鈕切換顯示密文和明文。通過教師的講解,以小組合作的方式,開展探討交流,完成任務。通過老師演示學生動手操作,提高動手能力。小組交流、分享學生動手實踐操作,學生小組間討論,共同完成任務。通過老師演示學生動手操作,提高動手能力。小組交流、分享學生動手實踐操作,學生小組間討論,共同完成任務通過教師的講解,以小組合作的方式,開展探討交流,完成任務。學生動手實踐操作,學生小組間討論,共同完成任務通過小組合作,加強學生組內團結、加強學生組內團結、共同完成任務,培養學生動手操作能力,并且鍛煉學生的語言組織能力和表達的能力。加強學生組內團結、共同完成任務,培養學生動手操作能力,并且鍛煉學生的語言組織能力和表達的能力。培養學生組間合作能力,并且煉動手能力 培養學生動手操作能力,并且鍛煉學生的語言組織能力和表達的能力。課堂小結分小組總結歸納,教師補充。各組匯報總結,其他小組成員做補充。鍛煉學生的總結能力,邏輯思維、語言表達能力。板書一、發送信息二、接收信息三、傳遞加密信息