吳 陽
(無錫太湖學院 智能裝備工程學院,江蘇 無錫 214064)
隨著信息時代的到來,計算機技術已經深入生活的方方面面,學習計算機編程語言十分重要。在計算機編程語言中,C語言是程序設計基礎課程中不可或缺的一環。尤其對應用類本科院校非計算機類專業的學生,C語言課程的學習非常必要[1-3]。但是,對于很多初學者而言,由于C語言本身的特點,語法和概念難以理解,加上許多初學者難以及時轉換漢語和計算機編程的不同思維模式,學習吃力,事倍功半。
在學習C語言過程中,學生需要掌握基本的語法規則、程序結構和編程思路等,同時還需要掌握一定的算法思想和代碼能力[4]。然而,在傳統的“C語言程序設計”教學中存在很多問題,如學生的語言思維能力較差、計算機編程能力與日常應用能力脫節等,這些問題都給教學工作帶來了不小的挑戰。為此,本文剖析C語言教學過程,引導學生基于漢語思維的角度轉換為編程思想學習C語言,從而用計算機語言來告訴計算機如何去做。通過改變傳統教學方式,引導學生積極主動參與到學習中來,達到更好的教學目的。本文探討基于漢語思維學習C語言的方法,旨在幫助初學者更好地理解C語言,為學生的可持續發展打下基礎,尤其對應用型本科院校學生的培養具有重要意義。
計算機語言是一種用于與計算機進行交流的方式,是一種人與計算機之間的溝通工具,用于編寫和運行計算機程序。計算機語言發展至今經歷了機器語言(由0和1組成的指令)、符號語言(用英文字母和數字表示指令)、高級語言(接近于人的自然語言和數學語言)等階段,其中,C語言是一種廣泛使用的計算機編程語言[5],被廣泛應用于系統編程和應用程序開發。C語言具有簡潔、高效、靈活和可移植等特點,使得它成為編寫操作系統、嵌入式系統和各種應用程序的首選語言之一。掌握C語言的基礎概念和語法后,開發者可以更加深入地理解計算機系統和算法,并且能夠編寫出高效、可靠的程序。
C語言是一種計算機編程語言。在C語言的學習過程中,除了基本的編譯器使用之外,更重要的是用計算機可以理解的程序思維來編寫程序[6]。學生需要理解和掌握大量的編程概念和術語,如變量、循環結構、條件判斷等,這就需要較強的語言思維能力。但是,當前很多學生的語言思維能力并不強。另外由于C語言是以英美西方國家人們的思維方式來定義的,而英語和漢語在表達順序上差異較大,對于首次接觸C語言的人來說就難以理解,思維轉換不過來,導致力不從心,因而影響了對C語言的理解和掌握。
傳統的教學方式缺乏結合學生的實際生活情景,主要采用“滿堂灌”的方式,通常,教師先講解理論,然后讓學生上機操作,將教師作為知識的源泉,而將學生作為被動的接受者。這種方式并不能充分發揮學生的主體性和思維能力,也不利于學生對知識的理解和應用,主體性難以發揮,并不能真正地理解問題及背后的思維,不能對知識進行遷移[7]。
另一方面理論和實踐脫節。在C語言學習過程中,存在過于注重理論知識,而忽視實踐環節。因此,在實際應用中,學生可能會遇到各種問題,很難真正掌握C語言的使用技巧。雖然掌握C語言的基本概念和語法是重要的,但是理論知識無法真正體現實踐能力。學習C語言時,需要結合實踐任務進行學習,讓學生在具體的應用場景下進行編碼和調試,加深對知識的理解和掌握,才能更好地掌握語言的運用。
評價體系不完善。由于知識的多樣性,C語言評價過程過于借助分數來評分,容易忽略學生技能和實踐經驗的維度,而且由于評價方法單一,會導致學生追求分數而不是真正的技能。因此,對于C語言的學習,應該重視多樣化的評價方法。例如:學生的缺陷評價,成果和項目提交評價,綜合各項評價因素。
C語言的語法和概念十分復雜,許多初學者都會遇到以下問題。語法過于復雜:初學者難以理解C語言的結構,例如:程序的入口、組成部分。理念難以掌握:對一些抽象概念的理解困難重重,例如:變量和指針。學習效率低下:學生的學習進度和接受程度較慢。難以理解邏輯思維:在一個新語言學習中,從邏輯角度去掌握程序結構也是非常難的。這些問題的根源在于程序語言的本質是一種計算機語言,其編寫思想源自于英語或其他西方文化背景,而中文式的思維模式則往往富有詩意和情感,在此基礎上,可以嘗試從漢語角度學習C語言,來更好地理解它的語法和概念。
另外,學生在學習中還存在以下問題。沒有良好的編程習慣:編程習慣是每個程序員都需要養成的一個良好習慣。在學習C語言的過程中,應該注重代碼的可讀性、可維護性和可擴展性。缺乏耐心和毅力:C語言的學習需要耐心和毅力,因為學習過程中可能會遇到一些困難和挫折,需要有足夠的毅力和決心堅持下去。C語言是一門需要不斷實踐和練習才能掌握的語言。因此,學生應該在學習的同時,不斷練習和實踐,將所學的理論知識轉化為實際應用的能力。沒有學習C語言的實際應用:在學習C語言過程中,很多學生通常只關注語言本身,而忽略了C語言在現實生活中的應用價值,從而影響了學習的積極性。因此,對于學生來說,應重點強調C語言在實際應用中的廣泛性以及對應用的幫助。
計算機中的程序是一組指令的集合,用于告訴計算機完成特定的任務或操作。程序由編程語言編寫而成,根據特定的語法規則和語義含義來表達和控制計算機的行為。計算機執行程序時,會按照指令的順序逐步執行,以完成所需的任務[8]。對于初學者,首先要了解C語言程序的組成。
C語言程序是由實現程序功能的源文件(后綴為.c 的文件,指明是C語言開發的)以及頭文件(后綴為.h的文件,h是header的縮寫,包含源文件用到的一些聲明,如函數的聲明、全局變量的聲明、宏定義、類型的聲明)兩部分組成。
C語言程序由一個main函數和多個其他函數組成。一個C語言程序中有且僅有一個main函數。函數是程序的基本單位,用來實現特定的操作。每個函數是一段可以重復使用的代碼,可以接收用戶傳遞的數據或不接收數據。程序設計是解決特定問題的過程,使用計算機可理解的語言來告訴計算機如何進行操作。計算機只認0、1等數字代碼,因此需要編譯器將高級語言程序解釋成計算機需要的機器語言指令集。采用編譯器的好處在于可以將同一高級語言程序轉換為各種不同的機器語言程序進行適應。圖1顯示了高級語言程序到計算機能識別的機器語言程序的過程。通過介紹,學生對“C語言程序設計”的整體有了直觀的了解。

圖1 高級語言程序到計算機能識別的機器語言程序過程
由于中文和英語的語言特點存在巨大的差異,因此,從漢語的角度分析C語言的語言特點,可以讓學生更好地理解和掌握C語言。將C語言的語法規則和漢語的語法規則進行對比,尋找二者的相似之處和不同之處,以提高學生的語言思維能力。圖2顯示了C語言程序的基本構成。

圖2 C語言程序基本構成
3.2.1 對C語言的術語進行中英文對照
對C語言的術語進行中英對照,以方便學生建立中英語言對應的概念體系。C語言中的術語大都是以英文單詞及縮寫組成的,例如下面所示的C語言程序“hello world!”中。
#include
/*int表示整個函數返回值的類型與下面的return 0相呼應 */
int main() //main為程序運行的入口,也叫主函數
{
/*一對大(花)括號即包含代碼段,為實現程序的主體*/
printf("hello world!");//打印出hello world!
return 0; //返回0,與main前面的int相呼應
}
在這個程序里,包含以下單詞include(包含)、main(主要的)、return(返回)等,還包括int(整形),它是integer的縮寫。另外,還有一些組合單詞,如stdio.h是由standard(標準的)、input(輸入)、output(輸出)、header(頭文件)組成的,printf是由print(打印)、format(格式化)組成的。從這里也可以看出,C語言非常注重語法規則,在scanf及printf中也都體現了格式化,也就是要嚴格按照設定的格式來輸入輸出對應的信息。另外,其他術語的對應關系如下所示。
void空 true真 false假
print輸出 scan掃描 format格式 long長的 short短的
float浮點數 double雙 char字符 unsigned無符號的
if如果 else否則 get獲取 string字符串
switch開關 case示例 default 默認
for使得 while當 do…while做…當
3.2.2 借用漢語的思維增加代碼可讀性
在使用語言時,可以多運用象征性的漢字代替英文,這樣更有助于理解程序的結構。雖然這種方式顯得有些略顯幼稚,但當需要表述的內容超出了初學者的邏輯思維范疇時,可以較好地幫助初學者理解代碼。另外,多采用注釋,這是思維轉換的一種有效方式。
int max(int x,int y) //返回x,y中最大的,由于x和y為整型,函數值也為整型
{
if(x>y) return x; //return用來返回較大者
else return y;
}
如上述代碼中,max函數是返回兩個整數中的大者,可以直接用漢語的思維方式來進行判斷,如果x和y兩個整數x大,那應該返回x(if(x>y) return x;),如果y大,應該返回y(else return y;),從而更好地理解上述代碼。
3.2.3 將程序的邏輯和漢語類比
通過將程序和漢字相對應,可以更好地理解程序的邏輯,從而提高學習效率。例如:
在C語言中,if語句通常有3種用法,單獨使用,和else配合使用以及多分支時使用。以if…else配合使用為例,如下
if (age >= 18)
printf("成年 "); //如果年齡大于等于18,輸出“成年”
else
printf("未成年 ");//否則,輸出“未成年”
在上述代碼中,通過判斷年齡是否大于等于18歲,從而輸出“成年”還是“未成年”。此時就可以將程序的邏輯和漢語漢字進行類比。在漢語中,如果一個人的年齡大于等于18歲,那他就是成年人,對應程序
if (age >= 18) printf("成年 ");
如果不滿足這個條件,那就是未成年人,對應程序
else printf("未成年 ");
通過類比,可以讓初學者更好地理解C語言邏輯的抽象性質。
3.2.4 采用中文語義解析概念
可以采用中文翻譯方式來解釋C語言的概念和常用函數,向初學者詳細地解析C語言的語法和概念。例如:
printf("hello world!");//printf函數 輸出 hello world !
其中,printf為輸出函數,用于輸出字符串或者是數值。而"hello world"即為所要輸出的內容。
這種中文翻譯方式可以把C語言的概念用最簡單的語言舉例闡述,并且可以幫助學生更好地理解相關原理。
C語言是計算機程序設計中非常重要的一門課程,但在傳統教學中存在一些問題,針對這些問題,本文提出基于漢語思維的學習方法,將漢語轉換為計算機語言,提高學生的編程能力和思維能力?;跐h語思維方式,初學者可以更好地理解抽象概念,理解C語言的語法和概念,從而更好地理解和掌握C語言。這為初學者更快地掌握C語言編程奠定了基礎,也提高了學生的學習效率和動力。總之,這些方法都可以為“C語言程序設計”的教學提供新思路和新方法。