


高中信息技術(shù)教科版 (2019)選修1 數(shù)據(jù)與數(shù)據(jù)結(jié)構(gòu)4.2 基數(shù)排序教案設(shè)計
展開
這是一份高中信息技術(shù)教科版 (2019)選修1 數(shù)據(jù)與數(shù)據(jù)結(jié)構(gòu)4.2 基數(shù)排序教案設(shè)計,共4頁。教案主要包含了考勤,課前測評,引入,總結(jié)等內(nèi)容,歡迎下載使用。
課堂教學(xué)設(shè)計課 題4-2基數(shù)排列課時安排1課型 素養(yǎng)目標課程標準要求:1.理解隊列的概念及其特征。理解基數(shù)排序的基本過程。了解排隊取號模擬系統(tǒng)的基本功能。信息意識:信息意識:能夠根據(jù)解決問題的需要,自覺、主動地尋求恰當?shù)姆绞将@取與處理信息;在合作解決問題的過程中,愿意與團隊成員共享信息,實現(xiàn)信息的更大價值。計算思維:針對給定的任務(wù)進行需求分析,明確需要解決的關(guān)鍵問題。能提取問題的基本特征,進行抽象處理,并用形式化的方法表述問題。運用隊列結(jié)構(gòu)設(shè)計解決問題的方案,結(jié)合隊列的相關(guān)操作,編程實現(xiàn)。數(shù)字化學(xué)習(xí)與創(chuàng)新:1.理解隊列結(jié)構(gòu)及其現(xiàn)實。 2.熟練運用數(shù)據(jù)結(jié)構(gòu)解決生活中的真實問題,并在此過程中自主或協(xié)作探究;能夠評估常見的數(shù)字化資源與工具對學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的價值,根據(jù)需要合理選擇。信息社會責任:能夠分析數(shù)據(jù)與社會各領(lǐng)域間的關(guān)系,自覺遵守相應(yīng)的理論道德和法律法規(guī)。教學(xué)重點1.理解隊列的概念及其特征。2.理解基數(shù)排序的基本過程。教學(xué)難點了解排隊取號模擬系統(tǒng)的基本功能。教學(xué)方法講解法、互動法學(xué)習(xí)方法互動、討論教學(xué)過程個別化教案一、考勤。二、課前測評。三、引入日常生活中,我們經(jīng)常會遇到排隊的情況,如在食堂排隊買飯、在電影院排隊買票、在超市排隊結(jié)賬等。排隊的過程會形成一個隊列,排在隊列最前面的優(yōu)先處理,后來的必須排在隊尾。在計算機解決問題的過程中也經(jīng)常會用到隊列。本節(jié)主要學(xué)習(xí)隊列的概念及其特征、隊列抽象數(shù)據(jù)類型的定義、隊列的實現(xiàn)方法。任務(wù)一:認識生活中的隊列。 隊列:隊列是一種操作受限的線性結(jié)構(gòu),數(shù)據(jù)元素只能在一端進,在另一端出,且具有“先進先出”的特征。隊列出現(xiàn)在日常生活各類“排隊”活動中,如影院排隊入場、商店排隊付款和餐廳排除就餐就時都會形成隊列。另外,計算機科學(xué)中的很多功能,如打印隊列、進程調(diào)度和鍵盤緩沖等也都是利用隊列結(jié)構(gòu)來實現(xiàn)的。 1.本單元通過“排隊買票”項目,理解隊列結(jié)構(gòu)的基本概念及特征,學(xué)習(xí)隊列的兩種實現(xiàn)方法。隊列(queue)是一種操作受限制的線性結(jié)構(gòu),只允許在表的前端(隊首)進行數(shù)據(jù)元素刪除操作,在表的后端(隊尾)進行插入操作。在隊列中插人一個數(shù)據(jù)元素稱為人隊,從隊列中刪除一個數(shù)據(jù)元素稱為出隊。因為隊列只允許在隊尾插人、在隊首刪除,所以先進入隊列的元素先從隊列中刪除,故隊列又稱為先進先出(First In First Out,F(xiàn)IFO)線性表。隊列抽象數(shù)據(jù)類型:
為了在程序中使用隊列結(jié)構(gòu)來解決問題,我們需要定義隊列抽象數(shù)據(jù)類型(ADT Queue)。根據(jù)問題解決需要,我們?yōu)殛犃谐橄髷?shù)據(jù)類型定義了如下接口。
·Queue():創(chuàng)建一個空隊列,返回值是一個空的隊列。
·enQueue(item):將數(shù)據(jù)元素 item添加到隊尾,無返回值。
·deQueue():從隊首刪除數(shù)據(jù)元素,返回隊首數(shù)據(jù)元素。
·size():返回隊列中數(shù)據(jù)元素的個數(shù)。
·isEmptyO:判斷是否為空隊列,返回布爾值。基數(shù):十進制記數(shù)是逢十進一,從零開始計數(shù),數(shù)到十的時候,就要進一位,即變成10,個位數(shù)上是0,十位數(shù)上是1。一個十進制數(shù)的每個數(shù)位上可能的數(shù)字是0,1,2,…,9中的某一個。十進制的基數(shù)是10。二進制記數(shù)是逢二進一,從零開始計數(shù),數(shù)到二的時候,就要進一位,即變成10(2)。一個二進制數(shù)的每個數(shù)位上可能的數(shù)字是0,1。二進制的基數(shù)是2。同理,一個N進制數(shù)是逢N 進一,它的基數(shù)是N,采用N個不同的數(shù)字符號來表示。例如,十六進制的基數(shù)是16,采用0~9和A~F這16個符號來記數(shù)。基數(shù)排序的基本思路:
分發(fā)過程:
分發(fā)的過程是按照數(shù)據(jù)的某個數(shù)位上的數(shù)字依次把隊列 mainQueue中的各個數(shù)據(jù)分發(fā)到相應(yīng)的基數(shù)隊列中,最先人隊的數(shù)據(jù)處于隊列的隊首位置。
收集過程:
收集的過程是按照基數(shù)隊列下標從小到大的順序,將所有基數(shù)隊列中的數(shù)據(jù)移出隊列,放人隊列 mainQueue,最先人隊的數(shù)據(jù)處于隊列的隊首位置。迭代次數(shù):
因為要從低位到高位對數(shù)據(jù)的每一位進行一輪分發(fā)和收集,所以整個排序過程要進行k次分發(fā)和收集。k是需要排序的所有數(shù)據(jù)中最大值的位數(shù),它可以通過以下表達式得到:K=len(str(max(alist)))排隊取號模擬系統(tǒng):
餐館排隊取號包括取號和叫號兩個部分。取號就是根據(jù)所選餐桌類型生成排隊號碼等信息將顧客人隊。叫號就是根據(jù)空閑餐桌類型,將排在該餐桌類型隊列隊首的顧客出隊。class Queue: def __init__(self): self.items = [] def enQueue(self, item): self.items.append(item) def deQueue(self): return self.items.pop(0) def isEmpty(self): return self.size() == 0 def size(self): return len(self.items)class Guest: # 客人 def __init__(self, tableType): self.tableType = tableType #顧客所選餐桌類型 self.stayTime = random.randrange(20, 60) #隨機生成顧客用餐時間 def takeTicket(self, number,order, timeTick): #生成顧客取號信息 self.ticket = '%s%03d 前面還有%d位' % (self.tableType,number,order) #生成排號單 self.tableTypeNum='%s%03d' % (self.tableType,number) #排隊序號 self.arriveTime = timeTick #顧客取號時間class Table: # 餐桌 def __init__(self, id, type): self.id = id # 桌號 self.type = type # 類型'A','B','C',容量分別是(2,4,8) self.status = 'free' # 狀態(tài)(free, busy) self.remain = 0 # 顧客占用時長 def setBusy(self, remain): # 設(shè)置餐桌狀態(tài) self.status = 'busy' #設(shè)置桌子為“在用”狀態(tài) self.remain = remain #設(shè)置占用時長 def tickRemain(self): # 餐桌用餐狀態(tài)檢測 if self.remain > 0: #判斷是否還有占用時長 self.remain -= 1 #占用時長減少1 if self.remain == 0: #判斷占用時長是否為零 self.status = 'free' #設(shè)置桌子為“空閑”狀態(tài)class QueueSystem: # 排號機 def __init__(self): self.guestQueues = {'A': Queue(), 'B': Queue(), 'C': Queue()} #顧客隊列 self.guestCount = {'A': 0, 'B': 0, 'C': 0} #排隊號碼 self.totalWaitTime = 0 #總等待時間 self.totalGuest = 0 #總就餐人數(shù) def assignTicket(self, guest, timeTick): # 有顧客來,排隊取號 table = guest.tableType #顧客餐桌類型 queue = self.guestQueues[table] #顧客所排的餐桌隊列 self.guestCount[table] += 1 #生成排隊號碼 guest.takeTicket(self.guestCount[table],queue.size(),timeTick) #顧客取號 queue.enQueue(guest) #顧客入隊 # 顯示信息 print('顧客取號:', guest.ticket,'取號時間:',timeTick) def arrangeTable(self, table, timeTick): #叫號函數(shù) # 有空桌,看看是否有顧客等候 if not self.guestQueues[table.type].isEmpty(): guest = self.guestQueues[table.type].deQueue() #顧客出隊 table.setBusy(guest.stayTime) #設(shè)置就餐狀態(tài)為占用 # 計入等待時間 self.totalGuest += 1 #累計用餐總?cè)藬?shù) self.totalWaitTime += timeTick - guest.arriveTime #累計總等待時間 # 顯示信息 print('叫號:', guest.tableTypeNum, '到桌號:', table.id) def showResult(self, totalTime): print('*' * 40) print('本次模擬一共', totalTime, '分鐘') print('共有', self.totalGuest, '桌顧客用餐') print('每桌顧客在用餐前平均等待時間為', round(self.totalWaitTime / self.totalGuest), '分鐘') print('模擬結(jié)束時各隊列情況如下:') for q in self.guestQueues: print('桌型:', q, '還有', self.guestQueues[q].size(), '桌顧客在排隊') print('*' * 40)import random# 變量randomBox用于設(shè)定模擬來客的概率,20%概率2人桌,10%概率4人桌,5%概率8人桌randomBox = [None] * 65 + ['A'] * 20 + ['B'] * 10 + ['C'] * 5# 餐桌設(shè)置,5張2人桌,3張4人桌,2張8人桌tableSetting = 'AAAAAAABBBBC'# 生成餐桌對象列表tableList = [Table(i + 1, tableSetting[i]) for i in range(len(tableSetting))]qsys = QueueSystem() # 生成一個排號機對象totalTime = 4 * 60 # 模擬時間長度為4小時,最小單位分鐘for timeTick in range(totalTime): # 1,以設(shè)定概率隨機模擬來客 dice = random.choice(randomBox) if dice is not None: # 有客人來 guest = Guest(dice) qsys.assignTicket(guest, timeTick) # 顧客取號 # 2,讓餐桌用餐時間減1,查看餐桌是否有空閑 for table in tableList: table.tickRemain() if table.status == 'free': qsys.arrangeTable(table, timeTick) # 叫號入桌# 顯示模擬統(tǒng)計信息qsys.showResult(totalTime) 四、總結(jié)1.理解隊列的概念及其特征。2.理解基數(shù)排序的基本過程。3.了解排隊取號模擬系統(tǒng)的基本功能。 作 業(yè) 板書設(shè)計1.理解隊列的概念及其特征。2.理解基數(shù)排序的基本過程。3.了解排隊取號模擬系統(tǒng)的基本功能教 學(xué)反思 教案查閱簽字
相關(guān)教案
這是一份粵教版 (2019)必修1 數(shù)據(jù)與計算3.2.2 算法的描述教學(xué)設(shè)計
這是一份高中信息技術(shù)教科版 (2019)選修1 數(shù)據(jù)與數(shù)據(jù)結(jié)構(gòu)第3單元 數(shù)據(jù)的排序與查找3.1 迭代與遞歸教案及反思,共4頁。教案主要包含了考勤,課前測評,導(dǎo)入,新課內(nèi)容,小結(jié)等內(nèi)容,歡迎下載使用。
這是一份高中教科版 (2019)第2單元 線性表及其應(yīng)用2.2 隨機抽取問題教案設(shè)計,共3頁。教案主要包含了考勤,課前3分鐘等內(nèi)容,歡迎下載使用。

相關(guān)教案 更多
- 1.電子資料成功下載后不支持退換,如發(fā)現(xiàn)資料有內(nèi)容錯誤問題請聯(lián)系客服,如若屬實,我們會補償您的損失
- 2.壓縮包下載后請先用軟件解壓,再使用對應(yīng)軟件打開;軟件版本較低時請及時更新
- 3.資料下載成功后可在60天以內(nèi)免費重復(fù)下載