李勇
摘? ?要:C語言作為一種程序設(shè)計語言,在大數(shù)據(jù)組成的物聯(lián)網(wǎng)和云計算中應(yīng)用廣泛,具有強大的適應(yīng)性和兼容性,是大數(shù)據(jù)時代下,在IT行業(yè)中起到關(guān)鍵作用的程序設(shè)計語言。文章分析了基于大數(shù)據(jù)的C語言程序設(shè)計的必然性和應(yīng)用策略,為C語言在大數(shù)據(jù)上的應(yīng)用方向提供了參考依據(jù)。以漢字的應(yīng)用為例,提出了解決C語言應(yīng)用問題的思路。
關(guān)鍵詞:大數(shù)據(jù);C語言;程序設(shè)計
大數(shù)據(jù)是指利用新的處理模式來進行決策和處理具有海量信息、增長速度極快的多樣化的信息資產(chǎn)。這些信息資產(chǎn)往往無法在短時間內(nèi)利用常規(guī)的軟件工具進行捕捉,也沒有辦法管理和處理這些數(shù)據(jù)集合。
1? ? 基于大數(shù)據(jù)的C語言程序設(shè)計的必然性
1.1? C語言程序設(shè)計研究的現(xiàn)狀
基于大數(shù)據(jù)的C語言是一種計算機程序設(shè)計語言,不僅有高級計算機語言的特點,也有匯編類語言的特點。所以,它可以同時應(yīng)用編匯系統(tǒng)設(shè)計和編寫應(yīng)用系統(tǒng)兩個工作層面[1]。在編寫應(yīng)用程序時,能夠做到不依賴計算機硬件的效果,是一種應(yīng)用廣泛的計算機設(shè)計語言。在當今IT行業(yè)中,C語言程序設(shè)計具有廣泛的使用人群和使用方向,是推動計算機發(fā)展進步的重要支柱技術(shù)。但是,因為C語言入門較為容易,學習縱向深度難度較高,所以聘用的C語言程序設(shè)計師,往往無法達到理想的技術(shù)水平。而且,與C語言程序設(shè)計配套相關(guān)的信息系統(tǒng)建設(shè)不健全,導(dǎo)致C語言程序設(shè)計工作在很多情況下無法達到預(yù)想效果,抑制了C語言程序設(shè)計的創(chuàng)新力。因此,需要從新的環(huán)境中尋找改進措施。
1.2? 基于大數(shù)據(jù)的C語言程序設(shè)計的應(yīng)用
大數(shù)據(jù)是指利用新的處理模式來進行決策和處理具有海量信息、增長速度極快的多樣化的信息資產(chǎn),這些信息資產(chǎn)往往無法在短時間內(nèi)利用常規(guī)的軟件工具進行捕捉,這些數(shù)據(jù)集合也沒有辦法進行管理和處理。大數(shù)據(jù)技術(shù)的實現(xiàn),其根本不是要去掌握這些龐大的數(shù)據(jù)信息,而是要對這些復(fù)雜的、海量的、種類繁多的信息進行專業(yè)化的處理,提取出有用的信息,實現(xiàn)無用信息再加工的價值性。
例如,當人們?yōu)g覽淘寶時,淘寶后臺的大數(shù)據(jù)分析軟件就會匯總分析人們?yōu)g覽時所輸入的名稱、選擇的分類、在某一個界面停留時間的長短,判斷出人們的喜好,并在接下來的瀏覽中,向用戶推薦符合數(shù)據(jù)分析喜好的商品,促進交易的達成,這就是大數(shù)據(jù)的功用。
C語言目前在大數(shù)據(jù)應(yīng)用領(lǐng)域的開發(fā)主要體現(xiàn)在數(shù)據(jù)采集端。大數(shù)據(jù)的來源依賴于物聯(lián)網(wǎng)技術(shù),大量的非結(jié)構(gòu)化數(shù)據(jù)出自物聯(lián)網(wǎng)系統(tǒng),而C語言在物聯(lián)網(wǎng)開發(fā)領(lǐng)域有廣泛地應(yīng)用。C語言是嵌入式設(shè)備的關(guān)鍵編程語言。由于在嵌入式開發(fā)設(shè)備中安裝大型操作系統(tǒng)和語言不方便,C語言已成為物聯(lián)網(wǎng)上物聯(lián)網(wǎng)棧中最受歡迎的語言之一。
在云計算的應(yīng)用上面,C語言程序設(shè)計也是主要構(gòu)成要素。眾所周知,云計算是大數(shù)據(jù)最常用的信息處理方法,云計算得出的資源是大數(shù)據(jù)進行挖掘的重要服務(wù)支持。上文提到大數(shù)據(jù)需要對海量數(shù)據(jù)進行查詢、歸類、分析、處理,所以對計算能力的要求極高,這就需要云計算作為平臺來支持大數(shù)據(jù)的運作。而云計算也依托瀏覽器的應(yīng)用而存在。沒有瀏覽器,云計算就難以普及。瀏覽器是云計算收集數(shù)據(jù)信息的一個重要渠道,而瀏覽器的內(nèi)核就是C語言程序設(shè)計實現(xiàn)的。絕大多數(shù)瀏覽器界面采用的都是C++程序語言,以Web服務(wù)器為基礎(chǔ)。
常用的Java虛擬機也是通過C語言程序設(shè)計實現(xiàn)的,C語言的發(fā)展促進了Java語言的進步。Java同樣也是物聯(lián)網(wǎng)的常用語言,是大數(shù)據(jù)的重要組成部分之一。再加上大數(shù)據(jù)所應(yīng)用到的所有通信協(xié)議都是通過C語言來實現(xiàn)的,可以看出,基于大數(shù)據(jù)進行C語言程序設(shè)計是大數(shù)據(jù)時代下不可缺少的重要組成內(nèi)容。
1.3? 基于大數(shù)據(jù)的C語言程序設(shè)計優(yōu)勢
1.3.1? 適用范圍廣
C語言程序設(shè)計使用范圍廣,主要體現(xiàn)在以下兩個方面:第一,C語言可以適用于大多數(shù)操作系統(tǒng),具有極強的兼容性。無論是微軟的Windows還是Dos,又或者是UNIX,Linux等系統(tǒng),都可以很好地兼容C語言程序設(shè)計應(yīng)用,對機型的要求很低[2]。第二,C語言所適用的場合也遠遠多于其他程序設(shè)計語言。因為C語言既有高級程序設(shè)計語言的編程特性,又有匯編語言的編程特性,所以可以很好地兼容兩種不同情況的語言編程需求。C語言在程序設(shè)計語言中起到最底層、最基礎(chǔ)的編輯作用,卻又可以依靠這種基礎(chǔ)的全面性,滿足各種創(chuàng)新性的高階編程需求,是一種適用方向極為廣泛的編程語言。
1.3.2? 基于大數(shù)據(jù)的C語言程序設(shè)計的功能繁多
傳統(tǒng)C語言程序設(shè)計功能在大數(shù)據(jù)時代來臨之前,較之新興編程語言較少。但是,基于大數(shù)據(jù)的C語言,在程序設(shè)計時已經(jīng)可以展現(xiàn)出各種各樣的數(shù)據(jù)類型。并且在引入指針的概念后,能夠大幅提升程序的運行效率,讓C語言程序設(shè)計展示出更強的生命力。再加上自身所具備的強大的計算功能和縝密的邏輯判斷功能,C語言在功能設(shè)計上已經(jīng)走向了語言程序設(shè)計的前端,不落后于任何一種程序設(shè)計語言。
2? ? 基于大數(shù)據(jù)的C語言程序設(shè)計的應(yīng)用策略分析
2.1? 熟練掌握C語言特有函數(shù)
在計算機程序設(shè)計語言中,針對每一個功能都有相應(yīng)的函數(shù)進行編輯。同樣的,在C語言的程序設(shè)計中,也需要運用到一些特定的函數(shù),通過函數(shù)的名字輕松了解函數(shù)的功能。所以,在進行C語言編程時,程序員應(yīng)該對函數(shù)的名字、參數(shù)的名字以及返回值的類型進行定義。因為C語言提供的編譯系統(tǒng)自帶庫函數(shù),所以程序員要想調(diào)用這些函數(shù)的名字,就要利用include指令,運用頭文件的方式,將相關(guān)內(nèi)容插入到這些文件當中,從而實現(xiàn)對函數(shù)程序的調(diào)用。比如,當需要用到sqrt函數(shù)時,可以設(shè)置includ"string.h",就可以讓這個函數(shù)程序正常運行。
2.2? 熟練掌握指針的運用
指針的應(yīng)用是C語言發(fā)展過程中最重要的一環(huán),極大地提升了C語言程序的運行效率。因此,在C語言程序設(shè)計中,必須要熟練掌握指針的用法。指針在C語言程序設(shè)計中起控制實現(xiàn)賦值的作用,為變量關(guān)系的建立提供基礎(chǔ)[3]。指針是一種特殊的類型變量,對解決程序設(shè)計中出現(xiàn)的各種問題可以起到很大作用。指針的組成包括指針的名、值和所對應(yīng)的類型。在使用指針的過程中,需要利用科學的方法定義指針的名字和類型,為指針賦予正確的數(shù)值,以便能夠區(qū)分指針和變量的功能。
指針的大小還決定了編程的難度。指針的大小由當前CPU運行模式的尋址位數(shù)決定。在調(diào)用指針時要熟練利用C語言的函數(shù)特性,通過流程圖來表現(xiàn)算法里面的內(nèi)容。這不僅需要對函數(shù)有極為精準的定義,還要熟練掌握C語言的函數(shù)科學,才能進行算法編程。在C語言程序設(shè)計的過程中,要對函數(shù)所擁有的名字、參數(shù)所擁有的名字以及返回值的類型設(shè)置具體類型和指令,確定具體的位運算和文件知識,以便能夠保證滿足程序在最初設(shè)定時的具體要求,確定二進制的行為對象。同時,還要設(shè)定好文件中有關(guān)程序文件和數(shù)據(jù)文件的步驟,為數(shù)據(jù)的查找工作提供便利。
2.3? 位運算及算法技巧
C語言程序設(shè)計具有高級程序設(shè)計語言的特性,而在運算方法當中,C語言主要采用位運算。位運算是通過二進制來實現(xiàn)的,是一種具有獨特性和唯一性的計算方式。因此,C語言程序設(shè)計也是計算機軟件編程和程序運行最基礎(chǔ)的組成部分。在進行C語言程序編程時,一定要按照相關(guān)的程序要求進行符合規(guī)定的運算。程序文件也是C語言程序設(shè)計當中必不可少的一部分,在編程的過程中需要不斷地在文件中儲存相關(guān)的程序,以便能夠簡化數(shù)據(jù)的查找流程,進而起到提高運行效率的作用。
在所有的C語言程序設(shè)計中,最核心的部分就是算法,算法的技巧掌握是程序設(shè)計的靈魂所在。算法的表現(xiàn)形式多種多樣,既可以用自然語言來表現(xiàn),也可以通過流程圖來表達。如果是利用流程圖來表示算法,就需要程序員熟練掌握流程圖當中需要運用到的符號。C語言的應(yīng)用還少不了數(shù)學知識的參與,所以要掌握牢固的數(shù)據(jù)知識體系,才能提升C語言程序設(shè)計的編程效率。
3? ? 基于大數(shù)據(jù)的C語言程序設(shè)計中的文字問題
在C語言程序設(shè)計的應(yīng)用中,經(jīng)常會出現(xiàn)漢字運用的問題。比如,如何用變量存儲漢字以及對其進行操作。目前,許多C語言參考書都沒涉及這個問題,程序中多為處理英文變量和英文字符串,涉及漢字的情況也大都是在printf語句中輸出提示信息或結(jié)果[4]。如:
1.printf(“請輸入a,b的值:\n”);
2.printf(“輸出功率為%s千瓦。\n”,power);
可以在計算機上用strlen( )函數(shù)測試一下,如:
1.printf(“%d”,strlen(“計算機”));
若輸出為6,則每個漢字占兩個字節(jié);若輸出12,則每個漢字占4個字節(jié)。大多數(shù)系統(tǒng)是每個漢字占兩個字節(jié)的,即上述語句輸出值為6。應(yīng)當注意的是,一個全角字符(包括標點符號)同漢字占據(jù)相同的字節(jié)。本研究假定每個漢字占兩個字節(jié)。這樣就可以成功地用字符數(shù)組存儲漢字。因為在C語言中,字符串通過'\0'作為結(jié)束標記,系統(tǒng)會自動加上這個標記符,利用strlen( )函數(shù)進行測試的返回值不包括'\0',在定義和初始化字符數(shù)組時應(yīng)當使數(shù)組長度最小為實際字符串長再加1,如:
1.static char name[7]="孫悟空"; /*數(shù)組長度為7說明最多可存放3個漢字*/
如果把數(shù)組長度定義為6,如:
2.static char array[]={“中國計算機軟件專業(yè)技術(shù)水平考試”};
同樣可以定義二維數(shù)組,下面這個二維數(shù)組可以存放10個人名:
1.char member[10][8]; /*10個元素,每個元素中最多能放3個漢字*/
因為二維數(shù)組member[10][8]可以看成特殊的一維數(shù)組member[0],member[1],…,member[9]。這一維數(shù)組分別表示各行,而一行就表示了一個人名。因此,如果想操作每個人名,只需寫成member[0]、member[1],下面給出一個實例程序,它的功能是計算出輸入年份的天干地支。
2.#include “string.h”
3.#define HANZI_ZIJIE
4.3 //所選漢字編碼每個占3字節(jié).
5.int main()
6.{
7.int a,b,year;
8.char gz[ HANZI_ZIJIE*2+1]; /*用來表示干支的字符變量*/
9./*注意:下面兩個語句中{}內(nèi)的引號和逗號不能為全角字符*/
10.static char tg[10][ HANZI_ZIJIE+1]={“甲”,”乙”,”丙”,”丁”,”戊”,”己”,”庚”,”辛”,”壬”,”癸”};
11.static char dz[12][ HANZI_ZIJIE+1]={“子”,”丑”,”寅”,”卯”,”辰”,”巳”,”午”,”未”,”申”,”酉”,”戍”,”亥”};
12.printf(“請輸入一個年份:”);
13.scanf(“%d”,&year);
14.a=(year-1804)%10; /*以1804年為參考年份,1804年是甲子年*/
15.b=(year-1804)%12;
16.strcpy(gz,tg[a]);
17.strcat(gz,dz[b]);
18.printf(“%d年的干支為:%s\n”,year,gz);
19.}
正確的運行結(jié)果:
請輸入一個年份:1999
1999年的干支為:己卯
若數(shù)組大小小于漢字所占字節(jié)數(shù)可能會出現(xiàn)如下結(jié)果:
己庚辛壬癸卯辰巳午未申酉戍亥 //
這是存儲該漢字時空間不夠?qū)е挛擦銇G失所致。
4? ? 結(jié)語
C語言程序設(shè)計自身所具備的優(yōu)越性可以完全適應(yīng)大數(shù)據(jù)時代所帶來的新需求。但是,對程序員的技能水平提出了更高的要求。程序員要更加熟練地掌握C語言函數(shù)的運用、指針的運用以及算法的運用,才能不被時代所淘汰,為不斷提升C語言程序設(shè)計水平、推進大數(shù)據(jù)時代快速發(fā)展進步做出貢獻。