国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于計(jì)算思維的Python程序設(shè)計(jì)課程教學(xué)案例設(shè)計(jì)

2021-03-31 08:56張敏賈強(qiáng)
微型電腦應(yīng)用 2021年3期
關(guān)鍵詞:剪刀程序設(shè)計(jì)石頭

張敏, 賈強(qiáng)

(渭南師范學(xué)院 計(jì)算機(jī)學(xué)院, 陜西 渭南 714099)

0 引言

2006年3月,美國卡內(nèi)基·梅隆大學(xué)計(jì)算機(jī)科學(xué)系的系主任周以真(Jeannette M. Wing)教授在美國計(jì)算機(jī)權(quán)威期刊《Communications of the ACM》上給出,并定義了計(jì)算思維(Computational Thinking)。周教授認(rèn)為:計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問題求解、系統(tǒng)設(shè)計(jì)、以及人類行為理解等涵蓋計(jì)算機(jī)科學(xué)之廣度的一系列思維活動。

2007年,周以真教授在《中國計(jì)算機(jī)學(xué)會通訊》發(fā)表的文章中指出:“計(jì)算機(jī)科學(xué)的教授應(yīng)當(dāng)為大學(xué)新生開一門稱為“怎么像計(jì)算機(jī)科學(xué)家一樣思維”的課程,面向所有專業(yè),而不僅僅是計(jì)算機(jī)科學(xué)專業(yè)的學(xué)生。我們應(yīng)當(dāng)使入大學(xué)之前的學(xué)生接觸計(jì)算的方法和模型。”

在微軟公司2016年產(chǎn)學(xué)合作計(jì)劃發(fā)布之初,教育部和大中小學(xué)各方面的教育專家齊聚微軟亞洲研究院,共同商討計(jì)算思維教育全齡化普及之議題。會議認(rèn)為,“計(jì)算思維”理念在計(jì)算機(jī)基礎(chǔ)教育中的重要性不容忽視,應(yīng)作為培養(yǎng)目標(biāo)的核心素養(yǎng)進(jìn)行推廣,并對于在教學(xué)內(nèi)容建設(shè),完善社會評價(jià),推進(jìn)政府支持等幾方面開展后續(xù)工作達(dá)成共識。參會各方均表示:“將計(jì)算思維教育貫穿到大中小學(xué),我們要有這樣的遠(yuǎn)見!”

在中國知網(wǎng)中通過以下的檢索條件((主題=計(jì)算思維 或者 題名=計(jì)算思維 或者v_subject=中英文擴(kuò)展(計(jì)算思維)或者title=中英文擴(kuò)展(計(jì)算思維))(模糊匹配)),檢索到文獻(xiàn)總數(shù)4 843篇,運(yùn)用知網(wǎng)的統(tǒng)計(jì)工具進(jìn)行了初步統(tǒng)計(jì)分析,總體趨勢分析統(tǒng)計(jì)結(jié)果,如圖1所示。

圖1 中國知網(wǎng)計(jì)算思維研究總體趨勢分析

通過圖1我們可以看出,計(jì)算思維最早的研究開始于上世紀(jì)的80年代,但是在20世紀(jì)的研究都不溫不火,所以我們認(rèn)為當(dāng)時的計(jì)算思維還沒有被更多的大眾學(xué)者所重視,也沒有被作為重點(diǎn)研究問題。計(jì)算思維的快速發(fā)展則出現(xiàn)在21世紀(jì)初,從2010年到2020年的10年里,文獻(xiàn)研究的數(shù)量呈直線上升的趨勢,2019年達(dá)到了年論文發(fā)表數(shù)量900篇左右。此趨勢表明,近10年間社會和大眾研究者對計(jì)算思維的重視程度和研究熱度大幅度提升。主題分布統(tǒng)計(jì)結(jié)果,如圖2所示。

圖2 中國知網(wǎng)計(jì)算思維研究主題分別統(tǒng)計(jì)

通過圖2我們可以看出,計(jì)算思維相關(guān)的研究論文中包含“計(jì)算思維”主題的論文占總論文數(shù)量的34.59%,包含“計(jì)算思維能力”主題的論文占總論文數(shù)量的10.19%,其中包含“計(jì)算機(jī)基礎(chǔ)教學(xué)”“教學(xué)改革”和“大學(xué)計(jì)算機(jī)基礎(chǔ)”主題的論文占總論文數(shù)量的10.89%。這些數(shù)據(jù)表明,計(jì)算思維在計(jì)算機(jī)類課程的教學(xué)中起到舉足輕重的作用,教學(xué)改革更多的關(guān)注計(jì)算機(jī)課程中計(jì)算思維的運(yùn)用。東北師范大學(xué)于穎在2017年提交的博士論文《計(jì)算思維主導(dǎo)的高中信息技術(shù)教材結(jié)構(gòu)設(shè)計(jì)研究》中強(qiáng)調(diào):“計(jì)算思維是21世紀(jì)學(xué)習(xí)者的必備能力,各發(fā)達(dá)國家相繼把計(jì)算思維納入國家課程標(biāo)準(zhǔn),我國也將計(jì)算思維寫進(jìn)國家課程標(biāo)準(zhǔn),并將其列為信息技術(shù)學(xué)科核心素養(yǎng)之一”[1]。

隨著人工智能、大數(shù)據(jù)技術(shù)的發(fā)展,Python語言作為一種數(shù)據(jù)統(tǒng)計(jì)和分析的通用語言,應(yīng)用比較廣泛。目前Python的應(yīng)用熱度緊隨在C/C++語言和Java語言之后。多年前,Python語言開設(shè)在斯坦福等國外高校的程序設(shè)計(jì)課程中,近些年,清華大學(xué)等國內(nèi)學(xué)校也先后開設(shè)了Python程序設(shè)計(jì)課程,并向大中專院校推廣和普及[2]。

Python程序設(shè)計(jì)課程是計(jì)算機(jī)類專業(yè)的一門專業(yè)基礎(chǔ)課。通過Python課程的學(xué)習(xí),使學(xué)生系統(tǒng)地掌握Python編程的基本方法;通過對程序設(shè)計(jì)教學(xué)案例的設(shè)計(jì),使學(xué)生快速地積累編程經(jīng)驗(yàn),提高學(xué)生利用計(jì)算機(jī)解決實(shí)際問題的能力[3-4]。

將計(jì)算思維融入到程序設(shè)計(jì)中,不僅僅教授具體程序語言及應(yīng)用,而且強(qiáng)調(diào)程序設(shè)計(jì)的思想和方法,使學(xué)習(xí)者理解和運(yùn)用計(jì)算思維求解問題的思想和方法,從而,使學(xué)習(xí)者理解將計(jì)算思維融入不同學(xué)科領(lǐng)域的重要性,并將程序設(shè)計(jì)類課程從單純知識和技能的培養(yǎng)層面提高到意識和思維的培養(yǎng)層面[5-6]。

本文以Python語言程序設(shè)計(jì)為例,根據(jù)課程教學(xué)目標(biāo)和教學(xué)內(nèi)容,選擇合適的教學(xué)案例,以計(jì)算思維為導(dǎo)向的案例設(shè)計(jì),盡可能貼近實(shí)際解決問題的模式,讓學(xué)生體會到如何用計(jì)算機(jī)解決問題的方法來解決生活中的問題。

1 基于計(jì)算思維的教學(xué)案例設(shè)計(jì)原則

著名案例研究學(xué)者托爾(Towl A R)說:“一個出色的案例,是教師與學(xué)生就某一具體事實(shí)相互作用的工具,一個出色的案例,是以實(shí)際生活情境中肯定會出現(xiàn)的事實(shí)為基礎(chǔ)所展開的課堂討論。它是進(jìn)行學(xué)生探討的支撐點(diǎn),是關(guān)于某種復(fù)雜情境的記錄,它一般是在讓學(xué)生理解這個情境之前,首先將其分解成若干成分,然后將其整合在一起?!?/p>

依據(jù)托爾的觀點(diǎn),結(jié)合程序設(shè)計(jì)類課程的特點(diǎn),給出基于計(jì)算思維教學(xué)案例設(shè)計(jì)原則如下。

(1) 案例選題生活化:選取生活中的案例,學(xué)生容易理解,也很感興趣。

(2) 案例涵蓋知識點(diǎn)典型化:選取涵蓋程序設(shè)計(jì)課程中教學(xué)知識點(diǎn)的典型案例,容易在解決問題時掌握所學(xué)知識要點(diǎn)。

(3) 案例具有可分解性:一個完整的教學(xué)案例可以在求解時將其分為若干部分,對每個小問題求解后將其整合。

2 基于計(jì)算思維的教學(xué)案例設(shè)計(jì)流程

計(jì)算思維的四大基石:分解、模式識別、抽象和算法。其中分解是指將復(fù)雜的問題分解成更小、更簡單的問題;模式識別是指建立相似的問題和經(jīng)驗(yàn)之間的聯(lián)系;抽象主要是指識別重要的信息,忽略不相關(guān)的細(xì)節(jié);算法是指理清思路,設(shè)計(jì)步驟解決問題?;谟?jì)算思維的教學(xué)案例設(shè)計(jì)流程,如圖3所示。

圖3 基于計(jì)算思維的教學(xué)案例設(shè)計(jì)流程

3 基于計(jì)算思維的Python課程教學(xué)案例設(shè)計(jì)舉例

3.1 教學(xué)安排

教學(xué)內(nèi)容:選擇結(jié)構(gòu)、隨機(jī)函數(shù)、turtle庫。

教學(xué)目的:掌握選擇結(jié)構(gòu)、隨機(jī)函數(shù)、turtle庫的應(yīng)用。

教學(xué)重點(diǎn):選擇結(jié)構(gòu)、隨機(jī)函數(shù)、turtle庫的應(yīng)用。

教學(xué)難點(diǎn):選擇結(jié)構(gòu)的應(yīng)用。

3.2 問題提出

游戲:石頭、剪刀、布,編寫程序讓玩家與計(jì)算機(jī)玩經(jīng)典的石頭、剪刀、布游戲。

游戲規(guī)則:石頭可以磕碰剪刀;剪刀可以剪布;布可以包裹石頭

游戲結(jié)束條件:玩家贏為止。

為了增加游戲的趣味性,游戲結(jié)果用圖形的方式顯示,如圖4所示。

3.3 問題描述

玩家輸入石頭(1)、布(2)、剪刀(3),程序使用隨機(jī)數(shù)函數(shù)產(chǎn)生1-3的隨機(jī)數(shù),如果玩家輸入的數(shù)和隨機(jī)數(shù)相等,則為平局;如果玩家輸入的數(shù)減去隨機(jī)數(shù)的差為1或-2,則玩家贏,否則玩家輸。程序在玩家贏后結(jié)束。使用turtle庫實(shí)現(xiàn)顯示玩家和隨機(jī)數(shù)對應(yīng)的圖片,及結(jié)果對應(yīng)的圖片。

3.4 問題分解

① 玩家輸入石頭、剪刀、布,且圖片顯示。

② 機(jī)器隨機(jī)生成石頭、剪刀、布,且圖片顯示。

③ 比較玩家輸入的值與機(jī)器隨機(jī)生成的值。

④ 根據(jù)規(guī)則輸出結(jié)果,且圖片顯示。

3.5 模式識別

這個問題與我們?nèi)粘I钪械亩嘀剡x擇問題相似,也與我們初中學(xué)習(xí)過的求解分支函數(shù)的問題相似。程序設(shè)計(jì)問題中的選擇結(jié)構(gòu),分支函數(shù)公式,如圖5所示。

圖5 分支函數(shù)

3.6 抽象化

隨機(jī)函數(shù):random.randint()

格式:random.randint(a,b)

解釋:參數(shù)a和b是隨機(jī)數(shù)的下限和上限,必須要寫。

例如:random.randint(1,3) #隨機(jī)生成1-3的整數(shù)

Turtle庫:是Turtle繪圖體系的Python實(shí)現(xiàn)。

設(shè)置圖片:turtle.register_shape(“圖片名")

輸入框:Turtle庫中的textinput()方法為用戶提供一個輸入窗口。

多分枝選擇結(jié)構(gòu):if…elif…else

if 條件表達(dá)式: if 條件表達(dá)式1:

語句 語句1

if 條件表達(dá)式: elif 條件表達(dá)式2:

語句1 語句2

else: else:

語句2 語句3

3.7 算法分析

S1:用turtle庫的turtle.register_shape( )方法設(shè)置石頭、剪刀、布圖片。

S2:用turtle庫的turtle.register_shape( )方法設(shè)置輸、贏、平局圖片。

S3:創(chuàng)建用戶、計(jì)算機(jī)及結(jié)果三個turtle對象調(diào)用turtle.register_shape( )方法。

S4:設(shè)置三個圖片位置初始值。

S5:while True:循環(huán)語句控制程序循環(huán)執(zhí)行。

S6:用戶輸入(1)石頭、(2)布、(3)剪刀,根據(jù)用戶輸入結(jié)果顯示“石頭剪子布”圖片。

S7:計(jì)算機(jī)隨機(jī)給出(1)石頭、(2)布、(3)剪刀,根據(jù)隨機(jī)結(jié)果顯示相應(yīng)圖片。

S8:判斷選手和計(jì)算機(jī)的結(jié)果得出輸贏結(jié)果。如果玩家輸入的數(shù)和隨機(jī)數(shù)相等,則為平局;如果玩家輸入的數(shù)減去隨機(jī)數(shù)的差為1或-2,則玩家贏,否則玩家輸。

S9:重復(fù)S5-S8,直到玩家贏后結(jié)束。

3.8 代碼實(shí)現(xiàn)

import random

import turtle

#使用turtle的register_shape()方法設(shè)置石頭、剪刀、布的圖片

turtle.register_shape("布.gif")

turtle.register_shape("石頭.gif")

turtle.register_shape("剪刀.gif")

#使用turtle的register_shape()方法設(shè)置平局、輸、贏的結(jié)果圖片

turtle.register_shape("贏.gif")

turtle.register_shape("輸.gif")

turtle.register_shape("平局.gif")

#創(chuàng)建玩家、機(jī)器和結(jié)果三個turtle對象

gamer=turtle.Turtle()

machine=turtle.Turtle()

result=turtle.Turtle()

#開始先隱藏turtle圖片

gamer.hideturtle()

machine.hideturtle()

results.hideturtle()

#設(shè)置玩家、機(jī)器和結(jié)果三個圖片的位置初始值

gamer.penup()

gamer.goto(-110,60)

machine.penup()

machine.goto(110,60)

results.penup()

results.goto(0,-110)

while True:

#提示用戶輸入1,2,3其中 石頭(1),布(2),剪刀(3)

p=turtle.textinput("輸入","請出石頭剪子布-石頭(1),布(2),剪刀(3)")

#通過用戶輸入結(jié)果來顯示"石頭剪子布"的圖片

if p=='1':

gamer.shape("石頭.gif")

p=1

elif p=='2':

gamer.shape("布.gif")

p=2

elif p=='3':

gamer.shape("剪刀.gif")

p=3

else:

break

gamer.showturtle()

#計(jì)算機(jī)使用隨機(jī)函數(shù)產(chǎn)生隨機(jī)的"石頭剪刀布"

c=random.randint(1,3)

if c==1:

machine.shape("石頭.gif")

elif c==2:

machine.shape("布.gif")

else:

machine.shape("剪刀.gif")

machine.showturtle( )

#比較并判斷玩家和計(jì)算機(jī)的結(jié)果,并給出平局、輸、贏等結(jié)果

r=p-c

if r==1 or r==-2:

print("你贏啦!")

results.shape("贏.gif")

break

elif r==0:

print("平局")

results.shape("平局.gif")

results.showturtle()

else:

print("你輸啦!")

results.shape("輸.gif")

results.showturtle()

3.9 案例總結(jié)

基于計(jì)算思維的教學(xué)案例設(shè)計(jì)遵循以下步驟。

① 案例提出:課程內(nèi)容開始前提出案例,并對案例進(jìn)行一定的描述,因?yàn)榘咐x自生活化的問題,所以學(xué)生很容易明確本次課程需要解決的問題。

② 教學(xué)內(nèi)容的應(yīng)用:針對案例問題的解決所需要的理論知識,講解本節(jié)課的教學(xué)內(nèi)容,使學(xué)生掌握理論知識的應(yīng)用

③ 計(jì)算思維的四要素:按照計(jì)算思維的四要素來分析問題,引導(dǎo)學(xué)生運(yùn)用計(jì)算思維的的方法去思考和解決問題,培養(yǎng)學(xué)生的計(jì)算思維。

④ 問題解決:完成案例求解,鍛煉學(xué)生使用計(jì)算思維的方式思考和解決問題

4 總結(jié)

計(jì)算思維的思想出現(xiàn)在遠(yuǎn)古,真正的發(fā)展在21世紀(jì)初。對于21世紀(jì)的學(xué)習(xí)者,計(jì)算思維是必備的能力。在程序設(shè)計(jì)類課程中,運(yùn)用計(jì)算思維設(shè)計(jì)教學(xué)案例,選擇生活化、個性化、典型化的案例,強(qiáng)調(diào)程序設(shè)計(jì)的思想和方法,使學(xué)習(xí)者理解和運(yùn)用計(jì)算思維求解問題的思想和方法來解決生活中的問題。計(jì)算思維將程序設(shè)計(jì)類課程從單純知識和技能的培養(yǎng)層面提高到意識和思維的培養(yǎng)層面,提高學(xué)生解決問題的能力,也為學(xué)生綜合素質(zhì)的提升打下一定的基礎(chǔ)。

猜你喜歡
剪刀程序設(shè)計(jì)石頭
鈍剪刀
基于Visual Studio Code的C語言程序設(shè)計(jì)實(shí)踐教學(xué)探索
別小瞧了石頭
石頭里的魚
風(fēng)有一把剪刀
從細(xì)節(jié)入手,談PLC程序設(shè)計(jì)技巧
高職高專院校C語言程序設(shè)計(jì)教學(xué)改革探索
小小金剪刀
PLC梯形圖程序設(shè)計(jì)技巧及應(yīng)用
我可以向它扔石頭嗎