• 
    

    
    

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

      計(jì)算思維與C語言程序設(shè)計(jì)

      2018-01-25 10:52:38韋萍萍崔忠偉
      物聯(lián)網(wǎng)技術(shù) 2018年1期
      關(guān)鍵詞:計(jì)算思維程序設(shè)計(jì)邏輯

      韋萍萍 崔忠偉

      摘 要:針對(duì)計(jì)算思維培養(yǎng)問題以及C語言程序設(shè)計(jì)教學(xué)現(xiàn)狀,通過分析計(jì)算思維的關(guān)鍵內(nèi)容及表述體系,提出了如何在C程序設(shè)計(jì)教學(xué)中培養(yǎng)計(jì)算思維的一般方法。

      關(guān)鍵詞:C語言;程序設(shè)計(jì);計(jì)算思維;邏輯

      中圖分類號(hào):TP311.1 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2018)01-0-03

      0 引 言

      目前,提出的人類認(rèn)識(shí)、改造世界的思維方式有以下三種:

      (1)以數(shù)學(xué)學(xué)科為代表的采用演繹、推理方法的邏輯思維;

      (2)以實(shí)驗(yàn)、觀察、數(shù)據(jù)收集、分析、歸納為主要研究形式的實(shí)證思維;

      (3)以利用計(jì)算技術(shù)通過構(gòu)建系統(tǒng)進(jìn)行問題求解為主要研究形式的計(jì)算思維(以計(jì)算學(xué)科為代表);

      (4)目前還存在爭議的以大數(shù)據(jù)背景下的數(shù)據(jù)計(jì)算為主要研究形式的數(shù)據(jù)思維[1]。

      計(jì)算思維的概念由麻省理工大學(xué)Seymour Papert教授于1996年提出[2],但真正讓計(jì)算思維概念引起學(xué)者關(guān)注的代表人物是美國卡內(nèi)基梅隆大學(xué)(CMU)的周以真教授[3]。多年來,眾多學(xué)者不僅定義了計(jì)算思維概念,更在計(jì)算機(jī)教育中多次探討了其實(shí)現(xiàn)、挑戰(zhàn)等。周以真教授認(rèn)為,計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念求解問題、設(shè)計(jì)系統(tǒng),及人類行為理解等涵蓋了計(jì)算機(jī)科學(xué)的一系列思維活動(dòng)。計(jì)算思維雖然擁有諸多計(jì)算機(jī)科學(xué)的特征,但其本身卻并非是計(jì)算機(jī)科學(xué)的專屬[4]。工作、生活中的問題及解決方法也可用計(jì)算機(jī)思維的概念來描述。

      1 計(jì)算思維的關(guān)鍵內(nèi)容

      1.1 計(jì)算思維的思路

      對(duì)于計(jì)算思維的內(nèi)涵定義,學(xué)者們目前并未達(dá)成共識(shí),周以真教授給出其特征,并建議大家對(duì)其進(jìn)行擴(kuò)展。

      作為人類認(rèn)識(shí)世界、改造世界的科學(xué)思維,各種思維方式必須具備不同的區(qū)分依據(jù),確立一種思維模式的主要依據(jù)是它產(chǎn)生結(jié)論的方式和判斷結(jié)論的標(biāo)準(zhǔn)[5]。邏輯思維以三段式推理規(guī)則和重言式公理作為工具,對(duì)已知進(jìn)行演繹,通過推理得到結(jié)論。而判斷結(jié)論的合理性只在乎推導(dǎo)過程的正確性、合理性,無論是否符合事實(shí)。因此符合邏輯推理是邏輯思維判定結(jié)論的標(biāo)準(zhǔn)。實(shí)證思維以觀察、實(shí)驗(yàn)得到的結(jié)論為假設(shè)(定律或原理),再經(jīng)過新的實(shí)驗(yàn)、觀察或推理得出新的結(jié)論,且該結(jié)論必須與以往的實(shí)驗(yàn)結(jié)論不矛盾,要經(jīng)得起實(shí)驗(yàn)的驗(yàn)證。因此,實(shí)驗(yàn)是實(shí)證思維判斷結(jié)論的標(biāo)準(zhǔn)。

      隨著科技的進(jìn)步,人類認(rèn)識(shí)世界的能力大大提升,也極大地推進(jìn)了人類改造世界的能力。人們?cè)噲D構(gòu)造、實(shí)現(xiàn)自然界不存在的事物,但自然界不存在的事物既不同于由實(shí)證思維得到的自然規(guī)律,也不同于依靠邏輯推導(dǎo)得到的結(jié)論,它具有可構(gòu)造、可實(shí)現(xiàn)、可重復(fù)、可驗(yàn)證、可表達(dá)等特性,比如建筑設(shè)計(jì)。以自然界知識(shí)為前提,設(shè)計(jì)可行的方案,創(chuàng)造自然界原本不存在的事物,這就是計(jì)算思維。

      計(jì)算思維的標(biāo)志是有限性、確定性和機(jī)械性[3]。計(jì)算思維通過對(duì)問題進(jìn)行描述、規(guī)劃,對(duì)處理對(duì)象進(jìn)行抽象、資源調(diào)配、算法設(shè)計(jì)等操作而得到結(jié)論(實(shí)施方案),判斷結(jié)論的標(biāo)準(zhǔn)為方案的可行性。只要方案滿足計(jì)算思維的三個(gè)標(biāo)志,即視為可行。而如何求解問題,將理論實(shí)現(xiàn)的過程轉(zhuǎn)換為現(xiàn)實(shí)可實(shí)現(xiàn)的過程是計(jì)算思維的核心。計(jì)算機(jī)的出現(xiàn),使該核心得以實(shí)現(xiàn)和發(fā)展。從思維的角度看,計(jì)算機(jī)科學(xué)主要研究計(jì)算思維的概念、方法和內(nèi)容,并發(fā)展成為解決問題的一種思維模式[4]。

      1.2 計(jì)算思維的表述體系

      前ACM主席Denning為了方便各學(xué)科理解計(jì)算原理,提出“偉大的計(jì)算原理”,并將其歸納為7個(gè)類別,陳國梁等在此基礎(chǔ)上增加了“抽象”類,提出了表1中基于“偉大的計(jì)算原理”構(gòu)建的計(jì)算思維表述體系框架[6]。

      2 計(jì)算思維在C語言中的案例分析

      2010年9月發(fā)表的九校聯(lián)盟(C9)計(jì)算機(jī)基礎(chǔ)教學(xué)發(fā)展戰(zhàn)略聯(lián)合聲明指出:把“計(jì)算思維能力的培養(yǎng)”作為計(jì)算機(jī)基礎(chǔ)教學(xué)的核心任務(wù)[7]。表明計(jì)算思維能力已成為當(dāng)今復(fù)合型創(chuàng)新人才不可或缺的基本素質(zhì)。

      在計(jì)算機(jī)學(xué)科中,計(jì)算機(jī)程序設(shè)計(jì)語言用以描述問題求解的實(shí)現(xiàn)步驟,學(xué)習(xí)程序設(shè)計(jì)語言是培養(yǎng)計(jì)算思維能力的有效方法。以下以C語言為例討論其支持計(jì)算思維體系框架的知識(shí)點(diǎn)。

      2.1 C語言基本知識(shí)點(diǎn)

      C語言作為算法描述語言,初學(xué)者需掌握數(shù)據(jù)存儲(chǔ)基本結(jié)構(gòu)、結(jié)構(gòu)化程序設(shè)計(jì)、模塊化等知識(shí)點(diǎn)。

      2.1.1 數(shù)據(jù)存儲(chǔ)基本結(jié)構(gòu)

      需要解決某個(gè)問題必定會(huì)涉及其所要處理的數(shù)據(jù),組織數(shù)據(jù)形成一定的邏輯關(guān)系,使其對(duì)應(yīng)不同的數(shù)據(jù)結(jié)構(gòu)。但無論多復(fù)雜的數(shù)據(jù)結(jié)構(gòu),均可以由一些基本的數(shù)據(jù)結(jié)構(gòu)單元所組成。

      以數(shù)據(jù)存儲(chǔ)位置的連貫性進(jìn)行分類,C語言中的基本數(shù)據(jù)結(jié)構(gòu)單元如圖1所示。

      2.1.2 結(jié)構(gòu)化程序設(shè)計(jì)

      結(jié)構(gòu)化程序設(shè)計(jì)方法指出,任何一個(gè)程序均可用三種基本控制結(jié)構(gòu)(順序、選擇、循環(huán))來構(gòu)造,其采用的原則為“自頂向下,逐步求精”,模塊化與計(jì)算思維的方法一致。在C語言中,用if語句來實(shí)現(xiàn)選擇結(jié)構(gòu),用while、do…while、for語句來實(shí)現(xiàn)循環(huán)結(jié)構(gòu)。

      2.1.3 模塊化

      龐大的系統(tǒng)伴隨著冗長的代碼,給閱讀、修改帶來了困難。將項(xiàng)目任務(wù)分成多個(gè)能獨(dú)立完成某項(xiàng)功能的模塊,可提供模塊間的通訊方式,使系統(tǒng)的結(jié)構(gòu)規(guī)劃更加清晰,契合培養(yǎng)計(jì)算思維的表述體系。

      2.2 案例分析示例

      在程序設(shè)計(jì)教學(xué)中,應(yīng)將計(jì)算思維的訓(xùn)練滲透到解題步驟中,遵循“問題分析及抽象——算法設(shè)計(jì)——程序設(shè)計(jì)——測試”過程。在該過程中,問題分析及抽象是關(guān)鍵,對(duì)問題的分解、建模將直接影響問題的可解性、高效性。下文為案例的部分解題分析,旨在體現(xiàn)計(jì)算思維的部分訓(xùn)練過程。

      案例1 從鍵盤輸入一個(gè)數(shù)a,在屏幕上輸出一個(gè)由星號(hào)組成的菱形,星號(hào)之間空一個(gè)空格,最長一行星號(hào)數(shù)量為a,比如a=7,則輸出圖案如圖2所示。

      解題分析:

      (1)問題分析及抽象

      此問題只輸出星號(hào),且每行星號(hào)數(shù)量不同??刹捎肈OS系統(tǒng)和圖形界面兩種模式在屏幕上顯示圖形。在DOS系統(tǒng)下,字符按照從上到下,從左到右的順序輸出;在圖形模式下,字符按照給定的坐標(biāo)輸出。此例采用DOS系統(tǒng)模式輸出。

      (2)算法設(shè)計(jì)

      此例并不做復(fù)雜的數(shù)據(jù)處理,無需采用聚類等算法,只需觀察其輸出規(guī)律,控制輸出的行數(shù)、每行的星號(hào)數(shù)及第一個(gè)星號(hào)前的空格數(shù)即可。其中輸出行數(shù)采用一個(gè)外層循環(huán)控制,輸出的每行星號(hào)數(shù)及第一個(gè)星號(hào)前的空格數(shù)分別用兩個(gè)同級(jí)的循環(huán)來控制。

      其中,a表示最長行星號(hào)數(shù),即總行數(shù);i表示外層循環(huán)的控制變量,以控制輸出行數(shù);m表示每行第一個(gè)星號(hào)前的空格數(shù),初始值為a,變化規(guī)律為先遞減2,在a/2+1行后遞增2;n表示每行輸出的星號(hào)數(shù),初始值為1,變化規(guī)律為先遞增2,在a/2+1行后遞減2;j表示兩個(gè)內(nèi)層循環(huán)的循環(huán)控制變量。算法見表2所列。

      表2 菱形星號(hào)圖輸出算法

      算法1:菱形星號(hào)圖輸出算法

      輸入:無 輸出:菱形圖

      1. 輸入a

      2. i=1; m=a; n=1

      3. for i=1 to a

      4. for j=1 to m 輸出1個(gè)空格

      5. for j=1 to n 輸出”* ”

      6. 如果i<=a/2+1 那么m=m-2; n=n+2

      7. 否則m=m+2; n=n-2

      案例2 設(shè)計(jì)一個(gè)能夠和小孩玩撲克接龍游戲的機(jī)器。游戲規(guī)則:將一副撲克平均分成兩份,每個(gè)人將牌面反扣。兩個(gè)人依次從上到下取牌放到接牌區(qū),如圖3所示。當(dāng)手上取到的牌與接牌區(qū)的任一張牌相同時(shí),兩張相同牌之間的所有牌歸出牌人,擁有牌數(shù)為零者則輸。

      問題分析及抽象:

      程序界面可采用圖形模式,通過檢測按鍵或鼠標(biāo)的動(dòng)作出牌。

      此問題需要處理54張牌面數(shù)據(jù)。將牌面數(shù)據(jù)分成機(jī)器區(qū)、孩子區(qū)、接牌區(qū)三類。機(jī)器區(qū)和孩子區(qū)的撲克牌初始化后隨機(jī)抽取平分,每一份牌的順序與初始化的順序有關(guān),接牌區(qū)牌的順序與牌本身出現(xiàn)的順序有關(guān)。由上述描述可知,可采用三個(gè)隊(duì)列存儲(chǔ)撲克牌數(shù)據(jù),通過一維數(shù)組實(shí)現(xiàn)。程序模塊如圖4所示。

      設(shè)數(shù)組a[]、b[]、c[]分別代表機(jī)器、孩子、接牌區(qū)的撲克牌。

      初始化牌:54張撲克牌位置隨機(jī)排列,將前27張分給a數(shù)組,后27張分給b數(shù)組。模塊的輸入、輸出參數(shù)是兩個(gè)數(shù)組名。

      出牌:對(duì)每個(gè)出牌方取當(dāng)前隊(duì)列(數(shù)組a或b)中的第一個(gè)元素。模塊的輸入?yún)?shù)是數(shù)組名,輸出參數(shù)是第1張牌。

      接牌檢測:將通過出牌操作拿到的牌與數(shù)組c中的元素自后往前進(jìn)行比對(duì),若均不同則加至數(shù)組c尾部,當(dāng)有相同的牌面時(shí),將相同元素位置及其后的所有牌移動(dòng)到出牌方隊(duì)列的尾部。接牌區(qū)數(shù)組名、出牌方數(shù)組名、出牌方第1張牌是模塊的輸入?yún)?shù),無輸出參數(shù)。

      3 結(jié) 語

      程序設(shè)計(jì)是培養(yǎng)計(jì)算思維的重要方法,就如何使用計(jì)算機(jī)科學(xué)的基本概念、基本方法來解決問題進(jìn)行訓(xùn)練。無論采用哪種策略來教學(xué),都應(yīng)將計(jì)算思維的訓(xùn)練貫穿其中,重點(diǎn)在于問題的分解、模塊化、模塊間的通訊方式等,因此案例的選擇應(yīng)具有代表性、典型性。

      當(dāng)然,計(jì)算思維的養(yǎng)成需要一段時(shí)間的積累,更需要計(jì)算思維的熟練使用,直至擁有移植此方法來處理除計(jì)算機(jī)問題之外問題的能力,因此程序設(shè)計(jì)教學(xué)任重而道遠(yuǎn)。

      參考文獻(xiàn)

      [1]蔣宗禮.計(jì)算思維之我見[J].中國大學(xué)教學(xué),2013(9):5-10.

      [2] Seymour Papert.An Exploration in the Space of Mathematics Educations[J]. International Journal of Computers for Mathematical Learning, 1996,1(1):95-123.

      [3] Jeannette M Wing. Computational Thinking[J].Communications of the ACM, 2006, 49(3):33-35.

      [4]李廉.計(jì)算思維——概念與挑戰(zhàn)[J].中國大學(xué)教學(xué),2012(1):7-12.

      [5]李廉.關(guān)于計(jì)算思維的特質(zhì)性[J].中國大學(xué)教學(xué),2014(11):7-14.

      [6]陳國良,董榮勝.計(jì)算思維的表述體系[J].中國大學(xué)教學(xué),2013(12):22-26.

      [7]九校聯(lián)盟(C9)計(jì)算機(jī)基礎(chǔ)教學(xué)發(fā)展戰(zhàn)略聯(lián)合聲明[J].中國大學(xué)教學(xué),2010(9):4.

      [8]黃磊,傅籬,申壽云.基于AT89C51的C語言實(shí)驗(yàn)與實(shí)踐教學(xué)改革與探索[J].物聯(lián)網(wǎng)技術(shù),2016,6(6):119-120.

      猜你喜歡
      計(jì)算思維程序設(shè)計(jì)邏輯
      刑事印證證明準(zhǔn)確達(dá)成的邏輯反思
      法律方法(2022年2期)2022-10-20 06:44:24
      邏輯
      創(chuàng)新的邏輯
      基于Visual Studio Code的C語言程序設(shè)計(jì)實(shí)踐教學(xué)探索
      從細(xì)節(jié)入手,談PLC程序設(shè)計(jì)技巧
      電子制作(2019年9期)2019-05-30 09:42:04
      女人買買買的神邏輯
      37°女人(2017年11期)2017-11-14 20:27:40
      高職高專院校C語言程序設(shè)計(jì)教學(xué)改革探索
      程序設(shè)計(jì)課程中計(jì)算思維和應(yīng)用能力培養(yǎng)問題研究
      民族高校C語言程序設(shè)計(jì)課程教學(xué)改革的研究
      軟件工程(2016年8期)2016-10-25 16:03:32
      算法的案例教學(xué)探析
      家居| 磴口县| 进贤县| 宜兰县| 波密县| 施秉县| 芷江| 呼玛县| 灵璧县| 介休市| 桐城市| 平谷区| 福鼎市| 磴口县| 衡山县| 墨脱县| 眉山市| 色达县| 临颍县| 长白| 呼图壁县| 富宁县| 绥滨县| 临沭县| 革吉县| 荥阳市| 新邵县| 邓州市| 杂多县| 南康市| 蒲江县| 五台县| 淮滨县| 岳阳市| 乌拉特前旗| 若尔盖县| 汤原县| 休宁县| 襄垣县| 开原市| 仪征市|