最近中文字幕2018免费版2019,久久国产劲暴∨内射新川,久久久午夜精品福利内容,日韩视频 中文字幕 视频一区

首頁 > 文章中心 > c語言函數

c語言函數

前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇c語言函數范文,相信會為您的寫作帶來幫助,發現更多的寫作思路和靈感。

c語言函數

c語言函數范文第1篇

關鍵詞:函數指針,指針函數,地址

 

1.引言

一個程序由兩部分組成:代碼部分和數據部分。當在程序中定義變量時,編譯系統就會為變量分配相應的存儲單元,由此就形成了地址的概念。數據在內存中是存放在某一地址上的,代碼同樣也是存儲在內存中的某一地址上,因此指針即可向內存中存儲的數據也可以指向程序中的代碼,這就是函數指針。而指針函數則是指返回值是一個指針的函數。

2.函數指針

可以用指針變量指向整型變量、字符串、數組,也可以指向一個函數。在C語言中規定,一個函數總是占用一段連續的內存區,而函數名就是該函數所占內存區的首地址。我們可以把函數的這個首地址(或稱入口地址)賦給一個指針變量,使該指針變量指向該函數。然后通過指針變量就可以找到并調用這個函數。論文參考網。我們把這種指向函數的指針變量稱為“函數指針變量”。

函數指針變量定義的一般形式為:

類型說明符(*函數指針變量名)(形式參數表);

例如: int(*pf)( );

表示pf是一個指向函數入口地址的指針變量,該函數的返回值(函數值)是整型。

下面通過例子來說明用函數指針形式實現對函數調用的方法。在我們沒有學習指針變量之前,我們調用函數時是通過函數名來完成的。

2.1用函數名實現函數的調用

源程序代碼如下:

#include<stdio.h>

int max(inta,int b)

{if(a>b)return a;

elsereturn b;}

void main()

{ int max(inta,int b);

int a,b,c;

printf('inputtwo numbers:');

scanf('%d,%d',&a,&b);

c=max(a,b);/*用函數名調用*/

printf('max=%d ',c);

}

程序運行結果如下:

2.2用函數指針來實現函數的調用

源程序代碼:

int max(inta,int b)

{if(a>b) returna;

else return b;}

void main()

{ int max(inta,int b);

int (*pmax)(int ,int ); /*定義了一個指向整型函數的指針*/

int a,b,c;

pmax=max;/*使函數指針指向該函數的入中地址*/

printf('inputtwo numbers:');

scanf('%d,%d',&a,&b);

c=(*pmax)(a,b);/*通過指針調用max函數*/

printf('max=%d ',c);}

程序運行結果如下:

實例說明:

(1) 本實例中“int (*pmax)( int ,int );”用來定義pmax是一個指向函數的指針,該函數有兩個整型參數,函數值為整型。

(2) 賦值語句“pmax=max;”的作用是將函數max的入口

地賦給指針變量pmax(函數名代表該函數的入口地址)。

這時,pmax就是指向函數max的指針變量,此時pmax

和max都指向函數的開頭,見右圖。調用*pmax就是調

用max。

(3) 請注意:pmax是指向函數的指針變量,它只能指向函數

的入口處而不能指向函數中間的某一條指令處,因此不能

用 *(pmax+1)來表示函數的下一條指令。

(4) 在main函數中有一個賦值語句:

c=(*pmax)(a,b);與實例2.1中c=max(a,b);等價。這就是用指

針形式實現函數的調用。以上用兩種方法實現函數的調用,結果是一樣的。論文參考網。

2.3使用函數指針

問題:編寫程序,根據用戶的選擇分別調用sin 、cos、 tan函數計算一個角度的三角函數值。角度值從鍵盤輸入。

源程序代碼如下:

#include<stdio.h>

#include<math.h>

main()

{double(*p[3])(double)={sin,cos,tan};

intchoice,angle;

printf('Pleaseinput angle=?');

scanf('%d',&angle);

printf('Pleaseinput choice(0-sin,1-cos,2-tan)=?');

scanf('%d',&choice);

printf('%lf ',(*p[choice])(angle*3.14159/180));

}

實例說明:

(1)在本實例中“double (*p[3])(double)={sin,cos,tan};”定義了一個具有3個元素的函數指針數組p,其中3個元素分別指向數學函數sin、cos、tan。

(2)當程序運行時給angle賦值30,給choice賦值0。則:

程序中“priintf('%lf ',(*p[choice])(angle*3.14159/180));”

轉換為:

“printf('%lf ',(*p[0])(30*3.14159/180));”(與“printf('%lf ',sin(30*3.14159/180));”等價)。

程序運行結果如下:

3. 指針函數

一個函數可以返回一個整型值、字符值、實型值等,也可以返回指針型的數據,即地址。指針函數則是指返回值是一個指針的函數。在C語言中允許一個函數的返回值是一個指針(即地址),這種返回指針值的函數稱為指針函數。論文參考網。

定義指針型函數的一般形式為:

類型說明符 *函數名(形參表)

{

…… /*函數體*/

}

如: int *pf(int x,int y)

{

...... /*函數體*/

}

pf是函數名,調用它以后能得到一個指向整型數據的指針(地址)。x、y是函數pf的形參,為整型。請注意在*pf 兩側沒有括號,在pf的兩側分別為*運算符和()運算符。而()優先級高于*,因此pf先與()結合。顯然這是一個函數形式。這個函數前面有一個*,表示此函數是指針型函數(函數值是指針)。最前面的int表示返回的指針指向整型變量。對C的這種定義形式,用時要十分小心。

例:有若干個學生的成績(每個學生有4門課程),要求在用戶輸入學生序號后,能輸出該學生的全部成績。

源程序代碼如下:

#include<stdio.h>

void main()

{floatscore[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};

float*search(float(*pointer)[4],int n);

float *p;

int i,m;

printf('inputthe number of student:');

scanf('%d',&m);

printf('Thescores of No.%d are: ',m);

p=search(score,m);

for(i=0;i<4;i++)

printf('%5.2f ',*(p+i));

printf(' ');

}

float*search(float(*pointer)[4],int n)

{float*pt;

pt=*(pointer+n);

return(pt);

}

程序運行結果如下:

4.結束語

特別注意的是函數指針和指針函數這兩者在寫法和意義上的區別。如int(*p)()和int *p()是兩個完全不同的量。int(*p)()是一個變量說明,說明p 是一個指向函數入口的指針變量,該函數的返回值是整型量,(*p)的兩邊的括號不能少。int *p() 則不是變量說明而是函數說明,說明p是一個指針型函數,其返回值是一個指向整型量的指針,*p兩邊沒有括號。作為函數說明, 在括號內最好寫入形式參數,這樣便于與變量說明區別。 對于指針函數定義,int *p()只是函數頭部分,一般還應該有函數體部分,這樣才能構成一個完整的函數結構。

參考文獻:

[1] 陳強.C語言核心開發技術從入門到精通[M].北京:電子工業出版社,2009.

[2] 匡松.C語言程序設計[M] .北京:中國鐵道出版社,2008.

[3] 李俊杰.C語言復習指南與題解[M] .北京:清華大學出版社,2003.

[4] 譚浩強.C程序設計[M] .北京:清華大學出版社,2005.

c語言函數范文第2篇

關鍵詞:C語言;函數說明;返回值

函數的一般形式是:type-specifier function_name(parameter list)parameter declarations{body of the function}類型說明符定義了函數中return語句返回值的類型,該返回值可以是任何有效類型。如果沒有類型說明符出現,函數返回一個整型值。參數表是一個用逗號分隔的變量表,當函數被調用時這些變量接收調用參數的值。一個函數可以沒有參數,這時函數表是空的。但即使沒有參數,括號仍然是必須要有的。參數說明段定義了其中參數的類型。當一個函數沒有明確說明類型時,C語言的編譯程序自動將整型(int)作為這個函數的缺省類型,缺省類型適用于很大一部分函數。當有必要返回其它類型數據時,需要分兩步處理:首先,必須給函數以明確的類型說明符;其次,函數類型的說明必須處于對它的首次調用之前。只有這樣,C編譯程序才能為返回非整型的值的函數生成正確代碼。

一、函數的類型說明可將函數說明為返回任何一種合法的C語言數據類型

類型說明符告訴編譯程序它返回什么類型的數據。這個信息對于程序能否正確運行關系極大,因為不同的數據有不同的長度和內部表示。返回非整型數據的函數被使用之前,必須把它的類型向程序的其余部分說明。若不這樣做,C語言的編譯程序就認為函數是返回整型數據的函數,調用點又在函數類型說明之前,編譯程序就會對調用生成錯誤代碼。為了防止上述問題的出現,必須使用一個特別的說明語句,通知編譯程序這個函數返回什么值。下例示出了這種方法。

第一個函數的類型說明sum()函數返回浮點類型的數據。這個說明使編譯程序能夠對sum()的調用產生正確代碼。函數類型說明語句的一般形式是:type_specifier function_name(;)即使函數使用形參,也不要將其寫入說明句。若未使用類型說明語句,函數返回的數據類型可能與調用者所要求的不一致,其結果是難以預料的。如果兩者同處于一個文件中,編譯程序可以發現該錯誤并停止編譯。如果不在同一個文件中,編譯程序無法發現這種錯誤。類型檢查僅在編譯中進行,鏈接和運行時均不檢查。因此,必須十分細心以確保絕不發生上述錯誤。當被說明為整型的函數返回字符時,這個字符值被轉換為整數。因為C語言以不加說明的方式進行字符型與整型之間的數據轉換,因而多數情況下,返回字符值的函數并不是說明為返回字符值,而是由函數的這種字符型向整型的缺省類型轉換隱含實現的。

二、返回語句

返回語句return有兩個重要用途。第一,它使得內含它的那個函數立即退出,也就是使程序返回到調用語句處繼續進行。第二,它可以用來回送一個數值。本章將說明這兩個用途。

(一)從函數返回函數可以用兩種方法停止運行并返回到調用程序

第一種是在執行完函數的最后一個語句之后,從概念上講,是遇到了函數的結束符“}”(當然這個花括號實際上并不會出現在目標碼中,但我們可以這樣理解)。例如,下面的函數在屏幕上顯示一個字符串。

一旦字串顯示完畢,函數就沒事可做了,這時它返回到被調用處。在實際情況中,沒有多少函數是以這種缺省方式終止運行的。因為有時必須送回一個值,大多數函數用return語句終止運行,有時在函數中設立了多個終止點以簡化函數、提高效率。切記,一個函數可以有多個返回語句。如下所示,函數在s1、s2相等時返回1,不相等時返回-1。

(二)返回值所有的函數

c語言函數范文第3篇

關鍵詞:傳遞方式;數據類型;值傳遞;指針;數組

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2012)07-1688-02

The Discussion on Function Parameters Passing in the C Language Teaching

DONG Xin-zheng

(Department of Computer Science and Technology, Zhuhai College of Jilin University, Zhuhai 519041, China)

Abstract:The function parameter-passing modes are usually divided into“value passing”and“address passing”in some textbooks, which brings some difficulty for the beginners to understand. This paper makes a clear distinction between parameter-passing mode and data type, which are two basic concepts related with function parameter passing; analyzes three cases: general data type as function parameters, pointer data type as function parameters and array name as function parameters; gets the summary that“pass-by-value”is the only function parameter-passing mode in C language, the difficulty about data type is to distinct between the pointer data type and non-pointer data type.

Key words:parameter-passing mode; data type; pass-by-value; pointer; array

1概述

函數是C語言程序的基本構成模塊,通過使用函數,不僅可以省去重復代碼的編寫,還可以使程序更加模塊化,從而有利于程序的閱讀、修改和完善。對于C語言的初學者來說,準確理解函數參數的傳遞方式是難點之一。一些C語言程序設計教材[1][2]中把函數間的參數傳遞分為“數值傳遞”和“地址傳遞”兩種方式,這種分類很容易使初學者混淆概念,更不能抓住參數傳遞的本質。

2傳遞方式和數據類型

“值傳遞”[3]是函數參數的唯一傳遞方式。函數的參數分為實際參數(簡稱實參)和形式參數(簡稱形參),在定義函數時使用的參數叫形參,在調用函數時使用的參數叫實參。實參可以是常量、變量或表達式,但要求它們有確定的值。實參與形參的結合只有一種方式,即“值傳遞”,把實參的值賦給形參變量。“值傳遞”具有單向性,只能把實參傳給形參,而不能由形參回傳給實參。

不同數據類型的函數參數對主調函數中變量的作用有所不同。函數參數可取的數據類型為基本類型、構造類型、指針類型或空類型,如圖1[3]所示。空類型表示該函數為無參函數,在此不作介紹。其余數據類型又可分為三類:普通類型,包括基本類型、結構體類型和共用體類型;指針類型;數組類型。函數參數為普通類型時,對函數的調用不用影響到主調函數中變量的值;函數參數為指針類型或數組類型時,對函數的調用可以修改主調函數中有關變量的值。

圖1

3普通類型變量作為函數參數

普通變量作為函數參數時,對形參的修改不會影響到實參。如下例所示,通過“值傳遞”,形參x保存了實參a的值,形參y保存了實參b的值,因為形參和實參是相互獨立的不同變量,所以在swap函數中對形參x和y進行的交換不會反映到實參a和b中。

#include

void swap(int x, int y)

{

int temp;

temp=x; x=y; y=temp;

}

void main()

{

int a, b;

scanf("%d%d", &a, &b);

swap(a, b);

printf("%d %d\n", a, b);

}

輸入:1 2

輸出:1 2

4指針作為函數參數

變量的指針就是變量的地址,存放變量地址的變量叫指針變量,定義指針變量的一般形式為:

基類型*指針變量名;

通過指針變量訪問其所指向的變量的方式稱為間接訪問方式。如下例所示。

int age;

a=10; //直接訪問方式

int* p=&a;

*p=11; //間接訪問方式

指針類型作為函數參數時,參數傳遞方式仍然是“值傳遞”,即把實參的值傳遞給形參。不同的是參數為指針變量,可以通過形參的間接訪問方式來讀取或修改主調函數中有關變量的值。

如下例所示,通過“值傳遞”,形參x保存了變量a的地址,形參y保存了變量b的地址,即x指向變量a,y指向變量b,在swap函數中通過間接訪問方式交換了變量a和b的值。

#include

void swap(int* x, int* y)

{

int temp;

temp=*x; *x=*y; *y=temp;

}

void main()

{

int a, b;

scanf("%d%d", &a, &b);

swap(&a, &b);

printf("%d %d\n", a, b);

}

輸入:1 2

輸出:2 1

5數組名作為函數參數

數組元素和數組名也可以作為函數參數,數組元素作為函數參數與普通變量用法相同,數組名作為函數參數與指針變量相同。

用數組名作函數形參時,指定數組大小是不起任何作用的。因為C語言編譯對形參數組大小不做檢查,只是將實參數組的首地址傳遞給形參數組。實參數組名即是實參數組的首地址,相當于指針常量;形參數組名相當于指針變量。實際上,C編譯都是將形參數組名作為指針變量來處理的[3]。所以,數組名作為函數參數可以按指針作為函數參數來理解。

如下例所示,數組名array代表數組array的首地址,通過“值傳遞”,形參數組名a,也可以理解為形參指針變量a,保存了數組array的首地址,因此,在swap函數中對形參數組a的操作即是對實參數組array的操作。

#include

void swap(int a[])

{

int temp;

temp=a[0]; a[0]=a[1]; a[1]=temp;

}

void main()

{

int array[2];

scanf("%d%d", &array[0], &array[1]);

swap(array);

printf("%d %d\n", array[0], array[1]);

}

輸入:1 2

輸出:2 1

6結論

綜上所述,C語言函數參數問題主要涉及兩個概念:傳遞方式和數據類型。實參與形參的傳遞方式只有一種,即“值傳遞”。參數的數據類型可以為普通類型、指針類型和數組類型,數組類型實際上是按指針類型來處理的,所以,主要是指針類型與非指針類型的區別。對初學者來說,問題的難點在于數據類型的不同而非傳遞方式,即指針類型變量與非指針類型變量的區別。

參考文獻:

[1]田祥宏.C語言程序設計[M].西安:西安電子科技大學出版社,2007.

c語言函數范文第4篇

關鍵詞:C語言 函數 參數傳遞

中圖分類號:TP312 文獻標識碼:A 文章編號:1674-098X(2014)11(a)-0135-02

“C語言程序設計”課程是信息類專業的一門非常重要的基礎課程,這門課程的主要目的就是讓學生以C語言為例了解高級程序設計語言的結構,掌握程序設計的基本思想,具備初步的分析問題和用計算機解決問題的能力。函數是C語言程序設計課程的重點和難點,它體現了模塊化程序設計的思想,將一個復雜的問題分解成一個個小而簡單的問題,通過解決一個個小問題進而實現大的復雜問題的求解。在函數的教學中,經常會有教師不好教學生學不懂的現象,學生學完函數后,基本概念和結構語法都清楚,但是針對具體的問題就無從下手,教學效果一直不是太好。筆者在多年C語言教學的實踐基礎上,結合我校學生的具體情況,對函數部分的內容組織和教學方法做了一些探討。

1 教學內容和安排

函數部分一般按以下內容進行教學。

(1)函數的作用和分類:標準庫函數和自定義函數。

(2)函數定義的基本格式:無參函數、有參函數和空函數。

(3)函數的參數傳遞:值傳遞和地址傳遞。

(4)函數的返回值:無返回值、一個返回值和多個返回值。

(5)函數的調用:作為單獨語句、作為表達式和作為函數參數。

(6)函數的遞歸調用和嵌套調用。

(7)函數的聲明:聲明的位置、格式和省略情況。

(8)變量的作用域:全局變量和局部變量。

(9)變量的存儲類型及生存期:自動變量、靜態變量、外部變量和寄存器變量。

可以看出,函數部分的內容非常多,而且會有許多新的概念突然介入,有相當一部分教材,以譚浩強教授的《C程序設計》(第四版)為代表,將函數作為單獨一章放在選擇控制結構和數組之后,把函數相關的上述所有內容都放在這一章中介紹,然后在后續的指針、結構體和文件等章節中又幾乎沒有函數的蹤影,程序的主體仍然放到main()函數中去講解,筆者認為這樣的內容編排結構不利于學生對函數的把握,它會導致函數和其他內容脫節,給學生造成這是專門的一章,不學或學不好對其它內容不會產生多大影響的印象,結果到課程結束時仍然對函數知之甚少,平時也幾乎沒用函數來編寫過程序,導致到了學期末學生在編程時仍然習慣把所有程序都放到一個main()函數中去編寫,很少有模塊化程序設計的思想,為以后編寫復雜程序或者參加團隊合作埋下了隱患。

該文作者在講授函數這一部分時,參考了哈爾濱工業大學蘇小紅教授的高教版《C語言程序設計》(第二版)的內容編排,把函數提到了數組之前介紹,而且從函數這一章開始,后面幾乎所有的程序都是按模塊化思想將程序分成一個個小函數,再通過main()函數調用這些函數來實現主體功能,并且在后續內容的講解中,不斷強化學生對函數的把握,強化學生模塊化程序設計的思想,學生在學習的過程當中,不斷地復習鞏固著函數的知識,不斷地感受著模塊化程序設計的思想,也逐漸養成了用函數設計程序的習慣,實踐表明,到學期末的時候,大多數學生都可以寫一些簡單的函數并通過main()函數調用來進行程序設計。

2 函數的設計思想和設計方法

在進行程序設計時,很多學生感到困惑、難以理解和掌握的是什么時候需要設計函數和該設計什么樣的函數,形參和返回值該如何設置。對這個問題,筆者認為在講解的時候要著重把握幾點。

首先,在確定什么時候該設計函數時,需要先對整個程序的過程有個把握,確定程序的主體功能,這樣,對需不需要設計函數及對哪些部分可以設計函數就有了較為明確的答案。例如:從鍵盤上輸入一個整數n(n>1且n<10),輸出1!+2!+3!+...+n!的值。

對程序進行分析后,可以得出程序主體可以分成兩個步驟:

輸入一個整數n;

輸出1!+2!+3!+...+n!的值。

在第2) 步驟中,由于重復用到了求階乘的功能,所以如果把求階乘這部分設計成一個函數,將會對第2) 步的編程起到簡化的作用。這樣,經過初步分析,可以確定需要設計一個函數,此函數的功能是對給定的一個整數m,求出其階乘。

函數的功能確定后,接著就可以著手設計函數了。具體到函數設計時,很多學生的疑惑是怎么設計函數的參數和返回值,在這里,筆者建議學生采用“黑匣子”的方法設計函數,即不需要管函數的內部結構,把它看做一個“黑匣子”,只從外部的功能要求來確定函數應該具備什么樣的功能,進而確定主函數在調用該函數時需要傳遞給它什么參數,它在返回主調函數時又需不需要返回值或需要返回幾個值。在上個例子中,函數的功能確定是求階乘,在主函數調用它時需要告訴它對誰求階乘,即傳遞給該函數階乘的階數m,函數調用結束后,需要m的階乘返回主調函數,即只需要返回一個值,如圖1所示。

由此,我們得出此函數的相關內容:

函數功能:求出整數m的階乘m!

函數入口參數:一個形參,整形變量m表示階乘的階數

函數返回值:一個返回值,返回m!的值

這段信息可以作為注釋放在函數的開頭以便讓其他程序員有足夠的信息了解如何使用該函數。然后根據C語言中函數的定義格式可以寫出求階乘函數定義:int fact(int m);考慮到m!的范圍,我們可以將其修改定義為:long fact(int m);

至此,函數的第一個難點就解決了。

3 函數的參數傳遞

在函數需要有多個返回值時,僅僅一個return就很難滿足要求了,這里就需要利用指針或全局變量將函數中的多個值傳遞到主調函數中,這屬于函數的參數傳遞問題。函數的參數傳遞是函數部分的又一個難點,可以分為值傳遞和地址傳遞,因為還關系到指針的應用,學生一時間很難理解和掌握。鑒于這一點,筆者采用形象類比法結合內存空間講解了值傳遞和地址傳遞的區別。

函數在被調用時新開辟了一段內存空間,所有形參和函數內部變量都在這個內存空間中被訪問或修改,一旦返回主調函數這段內存空間也就被釋放掉,形參的值不會傳遞給實參,影響到主調函數。即在進行值傳遞時相當于有一個復制操作,即將實參的值賦給函數空間的形參,這是一個單向傳遞,因此,對形參的改變不會影響到實參。而地址傳遞的實質是將主調函數中的某個或多個地址放到被調函數中進行訪問,此操作間接訪問到了主調函數中的變量,因而影響到了主調函數中的變量值。

上述講法需要學生建立內存空間的概念,要對程序的存儲空間有所認識,相當一部分同學表示難以理解。筆者結合大一學生都學過計算機引論的實際情況,將值傳遞比喻為將計算機中的某一文件file1.doc拷貝給別人,別人拷走后可以隨便修改這個文件的內容,這些修改都不會影響到原來的文件file1.doc。當傳遞的是地址的時候,即使用指針變量作函數參數時,相當于把機器密碼、要修改的文件路徑及文件名(如d:\project\file1.doc)告訴了別人,別人在修改時直接針對file1.doc,進行修改后,file1.doc的內容肯定也會發生改變,這就是地址傳遞。經過這樣形象的比喻后,學生多表示容易理解,在寫程序時會有意識地考慮需要進行的是值傳遞還是地址傳遞,形參該設置成普通變量還是指針變量,教學效果有所改善。

4 結語

實踐證明,在筆者進行的函數教學中,相當一部分同學對函數有了形象的認識,更深地理解了模塊化程序設計的思想,取得了良好的學習效果。學無止境,教亦無止境。除了以上幾點,只函數部分就還有很多可以繼續深入挖掘的東西,比如從函數有無參數方面,函數有無返回值或是否有多個返回值方面,變量的存儲類型和生存期方面等等,這些都值得我們教師不斷地研究不斷地探討。但歸根結底,如何讓學生容易掌握要點,如何讓學生發自內心地喜歡學習、愛上學習并善于主動學習,筆者認為才是教師的最終目的。

參考文獻

[1] 蘇小紅.C語言程序設計[M].2版.高等教育出版社,2013.

[2] 譚浩強.C程序設計[M].4版.清華大學出版社,2011.

c語言函數范文第5篇

【關鍵詞】ICT專業 學術漢語 教學模式

【基金項目】本文的研究受到重慶郵電大學社會科學基金項目支持(K2015-08)和國際化教育教學研究項目支持(GJJY15-2-07)。

【中圖分類號】G64 【文獻標識碼】A 【文章編號】2095-3089(2016)35-0015-02

一、前言

隨著我國“一帶一路”戰略的實施和“留學中國計劃”的開展,來華留學生規模不斷擴大,留學生結構和層次也開始發生變化[1][2]。目前,重慶郵電大學有來自50多個國家和地區的長期留學生400多人在校學習,其中研究生比例超過50%。隨著高水平漢語留學者的出現,越來越多的留學生選擇以漢語作為學術研究的工具,部分留學生已在我校開始攻讀博士學位,這給傳統對外漢語教學帶來了新的機遇和挑戰。

學術漢語是借鑒ESP(English for Special Purpose,專門用途英語)理論創造的一個術語,其目的是為專業學習服務[2][3]。目前,進入專業學習的重慶郵電大學留學生漢語水平一般要求在HSK4級以上,這一漢語水平的學生在進入到ICT專業課堂學習的時候,面對大量的通信編碼、信令、存儲器等ICT領域的專業詞匯時仍存在大量無法理解的現象。造成這些問題的主要原因包括:(1)缺少具有針對性的學術漢語教材學習。(2)專業術語理解障礙,對專業術語的掌握和理解上綴蹺零。(3)不熟悉ICT專業學術漢語文獻寫作規則,缺少專業漢語教師與學術導師的聯合指導。(4)缺乏ICT學術論文文體知識、論文思維,沒有經過系統、科學的科研能力培養。

二、留學生教育教學模式探索

形成重視學術漢語教學的意識和氛圍。在意識上重視學術漢語教學,突出本、碩、博階段專業素養的培養和訓練,區分留學生學歷教育和短期漢語進修學習,圍繞計算機、通信領域的漢語學術論文面向留學生舉辦“讀論文、做實驗”的科技競賽活動。

設置相應的課程并加強相關課程研究。制定分階段的學術漢語課程,從一般漢語教學的高級漢語階段開始,延伸到本碩博學歷教育階段,幫助留學生順利銜接到專業學習和研究。通過學習一些基本的專業詞匯,掌握基本的句法結構,為學歷生以及從事科學研究的漢語學習者進入專業學習、研究階段打下語言基礎。

探索留學生學術漢語導師聯合制。在留學生進入漢語學習高級階段初期、即將進入專業學習的前期,建立留學生學術漢語導師聯合制,由對外漢語教師配合留學生的指導教師共同培養學生準確運用漢語進行科學研究的能力。傳授用漢語進行學術寫作的學術規范知識,訓練用漢語進行學術研究的方法,包括搜集資料的方法、開展實驗的方法、撰寫論文的方法,逐步培養漢語學術思維和科研意識。

三、留學生教育教學實踐

為進入專業學習的留學生開設過渡性學術漢語課程和學術能力培養課程。在過渡性課程上,通過講授計算機導論、通信原理等專業課程的基本詞匯、句法,為學生補充專業學習的基礎知識,使其掌握如何運用漢語學習專業課程的技能。在學術能力培養課程上,講授用漢語進行ICT學術寫作的學術規范知識、學術研究方法。培養留學生掌握通過軟件學報、計算機研究與發展、電子學報等中文學術期刊和知網等學術工具進行資料搜集的方法。培養留學生掌握提出問題、分析問題、解決問題逐層推進的科技寫作方法。

傳統的教材式的對外漢語教學方法因教材出版周期較長,不能及時反應學術漢語的進展;另一方面,以慕課為主的網絡教學資源良莠不齊,詞法、句法使用隨意,術語準確性差,不適合直接引入校園作為知識進行傳授。在課程資源建設上,我校結合學校辦學特色、專業特長和留學生專業分布特點,由對外漢語教師、ICT專業教師等組成了專門的課程資源建設團隊,借助互聯網手段及時獲取最新的、權威的學術成果。通過篩選、匯編、整理等環節,嚴格遵循學術文章中的專業詞匯、術語和寫作特點,以詞匯銜接、語法銜接作為切入點,按照計算機、通信專業設置分類,結合學術漢語教學特點,對資源進行認定、注解,并最終形成教學講義供學生使用。

四、結語

在來華留學生漢語水平不斷提高、學歷需求不斷提升、專業技能學習目的不斷明確的情況下,留學生運用漢語開展科學研究時亟需學術專業教師的指導。本文以重慶郵電大學ICT專業留學生為例,探討了我校在學術漢語教育教學方面的現狀和創新,希望借此吸引更多的學術專業教師關注留學生學術漢語的指導與教學。

參考文獻:

[1]單韻鳴.專門用途漢語教材的編寫問題――以《科技漢語閱讀教程》系列教材為例[J].暨南大學華文學院學報,2008,(2).

[2]高增霞,劉福英.論學術漢語在對外漢語教學中的重要性,云南師范大學學報(對外漢語教學與研究版),2016,14(2).

[3]張明月,科技漢語的文體研究及其在科技漢語教材編寫中的應用.南京師范大學,碩士論文.

作者簡介:

相關期刊更多

忻州師范學院學報

省級期刊 審核時間1個月內

忻州師范學院

徐州師范大學學報

省級期刊 審核時間1個月內

江蘇省教育廳

贛南師范學院學報

省級期刊 審核時間1個月內

贛南師范大學

主站蜘蛛池模板: 彩票| 唐海县| 定陶县| 千阳县| 桃园市| 张家口市| 皋兰县| 腾冲县| 陆丰市| 湖北省| 西乡县| 绥江县| 凤冈县| 彰化市| 大荔县| 河津市| 松阳县| 垦利县| 蓬莱市| 河间市| 临城县| 伊通| 丁青县| 新津县| 汝南县| 方城县| 黑河市| 新营市| 烟台市| 台东市| 吴川市| 台州市| 莫力| 六枝特区| 桐柏县| 花莲县| 兴化市| 贵德县| 汝阳县| 综艺| 淮阳县|