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

?

基于可解釋的C語言程序設計教學案例分析

2019-09-10 07:22:44余紅宴
衛(wèi)星電視與寬帶多媒體 2019年24期
關鍵詞:教學案例程序設計

【摘要】C語言程序設計是計算機專業(yè)的核心專業(yè)平臺課程,掌握C語言程序設計的設計思想是關鍵。從一個教學案例出發(fā)提出可解釋的C語言程序設計的教學思路,希望對C語言程序設計的教學得到一些交流和啟發(fā)。

【關鍵詞】可解釋性;C語言;程序設計;教學案例

前言:當前,作為人工智能技術核心內容的機器學習、深度學習已經成為學術界和工業(yè)界的一個熱門話題。然而,一直以來,基于機器學習、深度學習的模型可解釋性很差。因此,僅僅考慮機器學習、深度學習所遵循的 “輸入輸出滿足”原則對某些問題而言可能是遠遠不夠的。追求因果關系是科學研究的一個持續(xù)動力,我們應該考慮模型對問題世界的可解釋性。

C語言程序設計的課程教學不僅要充分考慮與計算機組成原理(硬件)、算法、數據結構(軟件)的緊密聯(lián)系,還要注重每個概念、問題背后的可解釋性,不讓學生陷入“計算機是一個黑匣子”學習誤區(qū)。本文從一個教學案例出發(fā),提出可解釋的C語言程序設計的教學思路,希望對C語言程序設計的教學得到一些交流和啟發(fā)。

1. 案例提出

例題求方程ax2+bx+c+=0的實數解。

編程如下:

01 #include<stdio.h>

02 #include<math.h>

03 void main()

04 {

05 float a,b,c,x1,x2,disc;

06 printf(“input a,b,c: ”);

07 scanf(“%f%f%f”,&a,&b,&c);

08 if (fabs(a)<1e-6)

09? ? printf(“The question is not a quadratic”);

10 else

11 {disc=b*b-4*a*c;

12 if(disc<0)

13 printf(“The question has not real root”);

14 else

15 if(fabs(disc)<1e-6)

16 printf(“The equation has two equal roots:%8.4f,-b/(2*a)”);

17 else

18 {x1=(-b+sqrt(disc)/(2*a);

19 x2=(-b-sqrt(disc)/(2*a);

20 printf(“The question has distinct real roots:%8.4f,%8.4f,x1,x2”);

21 }

22 }

23 }

學生提出問題,程序的第08和15行,好像跟自己的理解不一樣。學生認為第08行是表示a=0,判別是否為一元二次方程。第15行是判別式disc=0,判別是否有兩個相等的實數根,為什么要寫成fabs(a)<1e-6和fabs(disc)<1e-6呢?這是一個好問題。

2. 案例解釋:C語言中“0”的認識

這個問題可以歸結為C語言中的“0”的認識問題。作為“0”,在計算機的內存中、輸入、輸出時將以怎樣的形式存在?首先,我們思考一下,計算機是一個資源有限的機器。因此,對于僅有的CPU、內存等資源管理十分嚴格。其次,我們先前定義了變量int m;這是給變量m定義一個變量類型,給變量x分配內存空間大小;還有變量名m是給變量一個存取的地址。

接下來,我們看第05行我們定義了變量a,disc是float類型變量,輸出是%f格式。再看一下%f對應的輸出格式表示什么?表示按小數形式輸出十進制實數(單精度),并輸出6位小數。

總之,在C語言中“0”的存在形式是這樣的,絕對值小于10-6 的實數是被認定為“0.000000...”。這就是對變量的值在計算機的內存中如何存、如何取、如何輸入、如何輸出的解釋。

3. 解釋的循環(huán)

實驗設計 在Dev_C++6.0平臺驗證“0”的輸入輸出及其表示。

編寫程序:

#include<stdio.h>

void main(? )

{float a,b,c,d;

printf(“print a,b,c,d:”);

scanf(“%d%d%f%f”,&a,&b,&c,&d);

printf(“%d%d%f%f”,a,b,c,d);

}

驗證輸入:0.0001,0.00001,0.000001,0.0000001

驗證輸出:0.000100,0.000010,0.000001,0.000000

正如我們所思考的一樣。絕對值小于10-6 的實數是被認定為“0.000000...”也即是“0.000000”。

4. 解釋再循環(huán)

我們似乎達到了完美的理解,得到很好的解釋,可是我們還是看看“0”表示的邊界在哪里?于是我們又做了一次驗證設計。

驗證實驗1:

驗證輸入:0.0000004,0.0000005,0.0000006,0.0000009

驗證輸出:0.000000,0.000000,0.000000,0.000000

似乎再一次驗證了我們的想法??梢援斘覀冞M行下面的驗證時,情況變得不可解釋了。

驗證實驗2:

驗證輸入:0.0000009,0.0000009,0.0000009,0.0000009

驗證輸出:0.000001,0.000000,0.000000,0.000000

這又變得不可解釋了,我們繼續(xù)討論,最后決定換一個開發(fā)平臺實驗。

5. 換個開發(fā)平臺實驗

我們換到開發(fā)平臺Eclipse+MinGW GCC上驗證實驗。

驗證實驗3:

驗證輸入:0.0000009,0.0000009,0.0000009,0.0000009

驗證輸出:0.000001,0.000001,0.000001,0.000001

這個結果讓我們覺得可以理解,四舍五入就可以解釋了。而且這與條件限制相互也不矛盾。反思在浮點類型的數據里,計算機的平臺不同,對于浮點型數據的表示不同。

6. 教后反思:基于可解釋的課程教學

從這個案例出發(fā),我們可以看出基于可解釋的教學是可能的。特別是計算機的課程,不能把計算機變成一個不可解釋的“黑匣子”,變成一個神秘所在。運用解釋學的方法,在教師與課程文本之間建立理解、師生之間建立理解和對話的關系。教師與課程設計者之間不應該是單獨的課程工作者,而是以合作者身份共同參與課程的開發(fā)和實施。解釋一直是人類存在的方式,其根本特征是對為什么(Why)問題的解答。當構成問題和解答的命題具有經驗可檢驗性并且為真,而解答與問題之間在科學上具有解釋相關性時,這才能稱之為科學理解,相應的解釋稱為科學解釋。教師要與學生一起“對話”,共同承擔科學理解的任務,一起來體驗、認識和理解計算機的局限性,人的局限性,課程文本教材的局限性,更加深刻的理解人類創(chuàng)造的艱辛和偉大。教師作為反思性的實踐者,在科學文本教學時,可以參考可解釋的哲學,把教學改革推向一個新的科學高度。

參考文獻:

[1]張長水.機器學習面臨的挑戰(zhàn)[J].中國科學:信息科學,2013,43(12):1612-1623.

[2]楊路明.C語言程序設計教程(第3版)[M].北京:北京郵電大學出版社,2015.

[3]張志林.科學解釋與理解類型[J].科學技術與辯證法,2003(03):29-31+43.

[4]王凌超,吳樂嬌.理解與對話:從哲學解釋學視角透析教師與課程的關系[J].淄博師專論叢,2019(01):15-18.

作者簡介:余紅宴(1971— ),男,湖北黃岡,副教授,博士?,F(xiàn)主要從事工程教育方向的研究。

猜你喜歡
教學案例程序設計
基于Visual Studio Code的C語言程序設計實踐教學探索
計算機教育(2020年5期)2020-07-24 08:52:56
從細節(jié)入手,談PLC程序設計技巧
電子制作(2019年9期)2019-05-30 09:42:04
教學案例的內涵及其應用意義
文學教育(2016年11期)2016-12-15 19:15:06
充分整合教材資源 優(yōu)化歷史課堂教學
高職高專院校C語言程序設計教學改革探索
小學數學課堂導入技巧及案例分析
考試周刊(2016年88期)2016-11-24 13:49:44
反轉課堂模式與數學教學案例
促進初中化學定量觀建構的教學案例
小學數學“反思型” 教學的探索與實踐
考試周刊(2016年76期)2016-10-09 09:08:16
OBE理念下基于Greenfoot的Java程序設計課程教學改革
邹平县| 乡城县| 开江县| 全椒县| 格尔木市| 温宿县| 双柏县| 江安县| 乐安县| 宝兴县| 左权县| 新绛县| 错那县| 荣成市| 三江| 松江区| 洞口县| 定结县| 贵港市| 文山县| 临洮县| 离岛区| 华宁县| 水城县| 高唐县| 岢岚县| 乌鲁木齐县| 延边| 六盘水市| 秭归县| 通化市| 开阳县| 涞源县| 蓬安县| 北票市| 奉新县| 禄丰县| 岳普湖县| 定远县| 临颍县| 那坡县|