趙世琦
摘要:作為一門特別優秀且用途極為廣泛的結構化程序語言,C語言是中職電子技術、機電以及中職計算機等多個專業的需要實踐與理論相融合的課程。在教學實踐的過程中,大多數學生都會認為C語言晦澀難懂,不容易學習。造成不要讀寫程序的原因多種多樣,但是最為顯著的因素之一便是并能正確的掌握并理解C語言相關的編程知識與規定。在本文的研究中,我從將賦值預算符號視為等于號、在函數的遞歸調用之中只了解遞不知道歸等兩個方面的常見錯誤進行分析,以此來證實學生在實際學習程序以及編寫程序中最容易出現的錯誤與不足,引導學生在未來的工作與學習中,如何正確的結合編程的相關規定完成既定的讀寫程序。
關鍵詞:C語言;賦值預算;函數嵌套調用;遞歸調用
前言:C語言在實際應用的過程中,具備著靈活、緊湊、簡介以及強可移植性等特征優勢,備受編程工作人員的認可與喜歡,并能夠在社會發展的進程中得到充分的利用。作為熱門專業中的重點學科,無論是教師的講解還是學生的學習都應該以了解該知識內容基本理論的基礎上,對程序設計的基本問題、思想等進行深度的發掘,從而才能夠從多角度、多層次完成對問題的分析與思考。本文的研究能夠讓學生在掌握相關知識的基礎上,有效避免出現典型的錯誤與問題,并在出現問題時及時有效的給予相應的解決對策,對學生C語言能力的綜合發展具有理論性意義,對學生不斷完善自我強化自我具有指導性意義。
一、將賦值預算符號視為等于號
在以往的數學學習過程中,我已經習慣了將“=”看作為等于號,其含義為等式的兩邊是相等關系,兩邊可以是表達式也可以是變量。但是,在接觸C語言后,“=”的的含義則變化為賦值運算符號,其主要的作用也成為了將右邊表達式的值賦予給左邊的變量,其中“=”左側必然是變量,而右側則一定是表達式,我們學生如果在學習的過程中,依然將其視為等于號,那么在實際應用的過程中便必然會出現編程錯誤[1]。例如,為了能夠滿足用戶不斷增長的用水量需求,某市新建設了三個水廠分別為甲乙丙。三個水廠每天的供水量總共有11.8萬立方米,其中甲是乙的三分之一,甲是丙的二倍還少一萬立方米,利用編程實現“計算并輸出甲乙丙日供水量的分別數值?!痹谖覀兊膽T性思維中,大多所寫程序如下:
# include<stdio.h>
void main()
{ float x,y,z;
y=3*x;
Z=x+l;
x=11.8-y—z;
printf("%f %f %of",x,y,z);}
依據我們以往的思維慣性,上述的編程是沒有問題的,但在實際執行的過程會發現,最終所得結果為429496704.000000-32212528.000000-102374176.000000[2]。
但是這個結果明顯不是正確的,其主要得錯誤原因就在于我們在編程時將“=”視為等于號而非賦值號。但是在程序實際執行的過程中為:因為沒有賦予x,y,z的初值,那么x則為隨機數值,執行程序時會將隨機的x值的三倍賦予給y,又將x+1賦予了z,最后又在編程的運算中將11.8-y-z給予了x,而并不是我們編程過程中所認為的等于號,對方程求解[3]。為了修改程序,應該意識到在整個題目中,只有總水量的數值是確定的,其他的參與都為未知數,具體來說,設置總水量為m,則可以推算x=(m-1)/4.5,具體編程為:
# include<stdio.h>
void main()
{float x,y,z,m=11.8;
x=(m-1)/4.5;
y=3*x;
z=x+1;
printf("%of %f %f”,x,y,z);}
運行程序可以推導出:
2.400000 7.200000 3.4000000,可以看出該種程序的結果為正確的[4]。
二、在函數的遞歸調用之中只了解遞不知道歸
所謂的函數嵌套調用主要指的是在被調用函數實際執行的進程中,被調用的函數有調用了其他的函數。被調用函數在被主調用函數調用時,執行的函數時被調函數,被調函數在結束執行的過程中,返還到主調函數,被調函數處將繼續對主調函數的后續語句執行。而函數的遞歸調用則主要指的是某一函數在其函數體內,間接或者是直接的對其自身進行調用,我們在嵌套調用不同的函數過程中,大多數都明確對被調用函數執行之后,需要重新回到調用函數中繼續執行相應程序,但是,到了遞歸調用函數中,便容易出現錯誤,不知道需要歸回到哪一環節中,在本文的研究中,將會利用程序閱讀題對此問題進行系統的分析:
t#include<stdio.h>
int change(int n,int q){
if(n<q)
return n;
else
return change(n/q.q)*10+n%q;}
int main()
{int n=100,q=8;
printf(“%d.%d\n”,change(n,q));
return 0;}
該程序的全部執行過程應該是將n賦值為100,q賦值為8,并將二者視為傳出去的參數傳遞到change函數中的兩個等待接收的參數q和n,在int change(int n,int q)[5];在這一函數中,如果8<100,則應該執行return change(n/q.q)*10+n%q,當12等于n/q且8=q時,可以將兩個等待接收的參數q和n傳出去的參數傳遞給change函數。int change(int n,int q)當函數中,8<12時,可以執行return change(n/q.q)*10+n%q;語句q=8和n/q=1又可以重新作為傳出去的參與傳遞到change中兩個等待接收的參數n和q??梢宰C明,在實際編程工作進行的過程中,我們應該明確的掌握C語言的相關規定與要求,并結合具體的要求對程序進行讀寫,最終才能夠得到正確的答案與結果[6]。
結論:綜上所述,C語言是編程工作人員最為常用的工具之一,為了能夠讓中職院校的學生在步入社會時可以更好的融入團體、為所任職的企業創造效益,應該更好的掌握相關知識,并對常見的典型問題有所把握,從而才能夠在實際編程中有效避免,提高工作效率與工作質量,在本文的研究中,結合實際學習的進程與內容,可以總結出將賦值預算符號視為等于號、在函數的遞歸調用之中只了解遞不知道歸等兩方面問題。望本文的研究能夠有效引導學生,使其在學習C語言的進程中得以有效避免相關問題,并能夠快速、準確的掌握相關知識點,保障個人綜合能力的提升。
參考文獻:
[1] 何春元, 李林原, 杜鵬,等. 計算機專業課程思政內涵挖掘-以C++程序設計課程為例[J]. 教育研究, 2021, 4(2):55-56.
[2] 陳亭志. 疫期職業教育課程單元混合式教學設計——輸出式學習在C語言課程中的應用[J]. 武漢職業技術學院學報, 2020, 19(4):6.
[3] 方煒煒, 周淑一, 李桂芝,等. 基于OBE的自主學習型C語言程序設計公共課在線開放課程的建設與研究[J]. 高教學刊, 2021(3):4.
[4] 黃婕. 聯通主義下高職學生"C語言程序設計"課程在線學習能力的提升策略[J]. 西部素質教育, 2020, 6(3):3.
[5] 李晶. 任務驅動教學法在中職《C語言程序設計》課程教學中的應用[J]. 黑河教育, 2020(1):2.