• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于C語(yǔ)言的自定制腳本語(yǔ)言設(shè)計(jì)方法初探

      2019-12-16 01:48苗金萍
      電腦知識(shí)與技術(shù) 2019年29期
      關(guān)鍵詞:設(shè)計(jì)方法C語(yǔ)言

      苗金萍

      摘要:人們?cè)谌粘5墓ぷ骱蜕町?dāng)中,經(jīng)常會(huì)遇到一些很復(fù)雜的問(wèn)題需要人們重復(fù)的去解決,當(dāng)遇到這類問(wèn)題時(shí),都可以借助編程來(lái)解決。隨著技術(shù)的不斷創(chuàng)新發(fā)展,當(dāng)前的編程語(yǔ)言雖然有了非常好的發(fā)展,但是很多的問(wèn)題還不能夠解決,有些問(wèn)題即使能夠解決,所用到的編程語(yǔ)言也非常的煩瑣。因此,需要在一些領(lǐng)域需要特定的語(yǔ)言來(lái)解決問(wèn)題。下文將針對(duì)c語(yǔ)言的自定制腳本語(yǔ)言設(shè)計(jì)方法展開探析。

      關(guān)鍵詞:c語(yǔ)言;自定制腳本語(yǔ)言;設(shè)計(jì)方法

      中圖分類號(hào):TP 文獻(xiàn)標(biāo)識(shí)碼:A

      文章編號(hào):1009-3044(2019)29-0054-02

      編程語(yǔ)言大致分為兩種,分別為編譯型語(yǔ)言和解釋型語(yǔ)言。這兩種編程語(yǔ)言當(dāng)中,目前使用較多的是編譯型語(yǔ)言,其中的C和C++是非常典型的兩種編譯型語(yǔ)言。利用這些語(yǔ)言能夠?qū)⒊绦騿T所編譯的語(yǔ)言以可執(zhí)行文件的形式輸出。C語(yǔ)言是程序員的入門語(yǔ)言,只有將基本的c語(yǔ)言掌握才能夠編譯出代碼。將自制的編程語(yǔ)言稱為Crowbar(杠桿)。C語(yǔ)言之所以得到了廣泛的應(yīng)用是因?yàn)檫@項(xiàng)語(yǔ)言在實(shí)際的運(yùn)行過(guò)程中,具有運(yùn)行速度快的有點(diǎn),因此,需要程序員對(duì)C語(yǔ)言有一定的掌握。采用c語(yǔ)言進(jìn)行編譯,相對(duì)來(lái)說(shuō)方便、簡(jiǎn)潔,并且c語(yǔ)言的應(yīng)用能夠讓讀者從模塊的名字或者文件的名字中了解到各個(gè)模塊或者文件的作用。隨著社會(huì)的不斷發(fā)展,對(duì)于編譯性語(yǔ)言的需求也將會(huì)越來(lái)越多,同時(shí)也將會(huì)有更多的新型的自制編程語(yǔ)言出現(xiàn),因此將自制編程語(yǔ)言進(jìn)行掌握也是變得非常重要。

      1Crowbar(杠桿)語(yǔ)言的基本介紹

      1.1程序的結(jié)構(gòu)

      Crowbar(杠桿)在實(shí)際的語(yǔ)言編譯過(guò)程中,可以在函數(shù)或者類的外側(cè)等這些頂層結(jié)構(gòu)中將代碼進(jìn)行書寫。在借助C語(yǔ)言進(jìn)行編程時(shí),即使是寫一句非常簡(jiǎn)單的C語(yǔ)句,也需要調(diào)用main()函數(shù)來(lái)書寫執(zhí)行語(yǔ)句,而在函數(shù)的外邊只能夠進(jìn)行變量的定義。因此,要想寫幾句簡(jiǎn)單的腳本具有一定的難度,特別是對(duì)于初學(xué)者來(lái)說(shuō),C語(yǔ)言的這一特點(diǎn),也增加了初學(xué)者學(xué)習(xí)的難度。在用Crowbar(杠桿)時(shí),可以借助print將簡(jiǎn)單的語(yǔ)句進(jìn)行顯示,這種方式下,不需要再包裹函數(shù)或者類。函數(shù)在定義時(shí),需要使用保留字function,書寫方式如下:#將c和d相加的值顯示,并且,作為返回值返回的函數(shù)

      Functionhoge(c,d){

      a=c+dtrtumal

      程序中的任何一個(gè)位置都可以進(jìn)行函數(shù)定義。當(dāng)程序開始執(zhí)行時(shí),會(huì)首先從程序的頂層結(jié)構(gòu)中的語(yǔ)句從上往下的開始運(yùn)行,在運(yùn)行的過(guò)程中,如果遇到函數(shù)定義,就會(huì)自動(dòng)跳過(guò)函數(shù)定義的部分,直到函數(shù)被調(diào)用時(shí),才會(huì)執(zhí)行函數(shù)定義的部分。如果程序中沒有編寫出return語(yǔ)句,那么將會(huì)返回特殊常量null。

      1.2數(shù)據(jù)類型

      c語(yǔ)言編譯中,使用的數(shù)據(jù)類型有四種,布爾型、整數(shù)型、實(shí)數(shù)型和字符串型。其中布爾型的數(shù)據(jù)類型可以是true或者是false;整數(shù)型數(shù)據(jù)實(shí)質(zhì)上就是Crowbar(杠桿)中底層的C語(yǔ)言中的int型數(shù)據(jù);實(shí)數(shù)型的數(shù)據(jù)也就是Crowbar(杠桿)中底層的c語(yǔ)言中的double型。如果整數(shù)型數(shù)據(jù)與實(shí)數(shù)型數(shù)據(jù)在一起進(jìn)行運(yùn)算,那么整數(shù)型數(shù)據(jù)將會(huì)直接被擴(kuò)充為實(shí)數(shù)型;字符串型數(shù)據(jù),在進(jìn)行編譯時(shí),可以直接用“+”進(jìn)行連接。除此之外,當(dāng)字符串與數(shù)值用“+”連接時(shí),如果字符串在左邊,數(shù)值在右邊,那么右側(cè)的數(shù)值也將會(huì)轉(zhuǎn)換成字符串型。

      1.3變量

      Crowbar(杠桿1是一種靜態(tài)無(wú)類型的語(yǔ)言,同Perl和Ruby這些語(yǔ)言相同。當(dāng)使用Crowbar(杠桿)進(jìn)行語(yǔ)言編譯時(shí),可以直接省去變量聲明的過(guò)程,以為在進(jìn)行變量初值的賦予時(shí),其中就包含了對(duì)變量的聲明。變量在引用時(shí)必須是賦值的變量,如果引用了沒有賦值的變量,那么將會(huì)出現(xiàn)錯(cuò)誤。

      對(duì)于變量的命名有一定的規(guī)則,規(guī)則基本上與C語(yǔ)言的變量命名是一樣的。在命名時(shí),開頭必須是字母,第二個(gè)字符可以是數(shù)字也可以是字母,也可以使用下劃線。Crowbar(杠桿1變量的命名中有些規(guī)則與Perl和Ruby等是有所不同的,不同的部分就是Crowbar(杠桿)變量的開頭不需要書寫$符號(hào)。函數(shù)中,存在著局部變量,而這個(gè)局部變量就是函數(shù)內(nèi)部首次進(jìn)行賦值的變量,這些變量就會(huì)變成函數(shù)內(nèi)部的局部變量,并且局部變量的使用也只是在當(dāng)前的函數(shù)當(dāng)中。C語(yǔ)言的函數(shù)中還可開辟出一個(gè)塊(Block),這個(gè)塊中含有這更小作用域的局部變量,這一功能是C語(yǔ)言特有的,Crowbar(杠桿)所不具有的。當(dāng)語(yǔ)句執(zhí)行時(shí),才進(jìn)行變量的聲明。下邊給出一個(gè)具體的例子:

      a只有為10時(shí),b才能夠被聲明,print語(yǔ)句可以正常顯示。如果a不是10,那么將會(huì)報(bào)出沒有進(jìn)行聲明的警告。global語(yǔ)句的使用有一定的方式,如下:global變量名,變量名...;比如函數(shù)內(nèi)用globala;當(dāng)變量進(jìn)行聲明之后,當(dāng)使用該函數(shù)時(shí),就能夠在函數(shù)的內(nèi)部使用全局變量a。如果全局變量a不存在時(shí),系統(tǒng)將會(huì)發(fā)出運(yùn)行錯(cuò)誤的警報(bào)。之所以采用global語(yǔ)句將變量進(jìn)行聲明之后再使用全局變量,有兩點(diǎn)原因。其中第一點(diǎn)是因?yàn)橐恍┖瘮?shù)在使用時(shí)強(qiáng)調(diào)高內(nèi)聚性,這也就要求全局變量在引用時(shí)需要有一定的約束性,如果沒有任何約束性就直接引用全局變量,那么就要求所編寫的函數(shù)必須掌握全局變量。如果沒有進(jìn)行變量的聲明,那么就會(huì)導(dǎo)致錯(cuò)誤出現(xiàn);第二個(gè)原因是因?yàn)槿肿兞吭谡麄€(gè)程序編寫的過(guò)程中,使用的頻率較低,因此,進(jìn)行聲明之后,就能夠避免全局變量帶來(lái)的不必要的麻煩,避免對(duì)程序的執(zhí)行產(chǎn)生影響。

      1.4語(yǔ)句與結(jié)構(gòu)控制

      Crowbarf杠桿)中的語(yǔ)句與結(jié)構(gòu)控制語(yǔ)句與C語(yǔ)言是一樣的,含有if、while等語(yǔ)句。但是Crowbar(杠桿)與c語(yǔ)言、Java語(yǔ)言等編譯語(yǔ)言存在一些較大的差別,其中,Crowbar(杠桿)中不可以出現(xiàn)懸空else,因?yàn)椴辉试S出現(xiàn)else語(yǔ)句,所以又引入了一種else if語(yǔ)句。當(dāng)程序中輸人break時(shí),可以直接從最內(nèi)層的循環(huán)中跳出。Continue能夠跳過(guò)最內(nèi)層循環(huán)中剩余的代碼。而return可以從函數(shù)中退出,并在返回時(shí)將函數(shù)后面的值作為返回值。

      1.5運(yùn)算符

      Crowbar(杠桿)中支持整數(shù)、實(shí)數(shù)字、字符串這些形式的常量可以作為操作數(shù)。不僅如此,Crowbar中的變量也可以作為操作數(shù)。將變量作為操作數(shù)能夠?qū)崿F(xiàn)與運(yùn)算符和括號(hào)的結(jié)合,與運(yùn)算符和括號(hào)進(jìn)行結(jié)合之后能夠組成更加復(fù)雜的表達(dá)式。

      2Crowbar的主要模塊和命名規(guī)則

      2.1模塊與命名規(guī)則

      Crowbar(杠桿)中包含三個(gè)模塊,分別為Crowbar主程序簡(jiǎn)稱CRB、內(nèi)存管理模塊,簡(jiǎn)稱為MEM,Debug模塊,簡(jiǎn)稱為DBG。這些模塊能夠完成一些特定的功能。每一個(gè)模塊中都包含著多個(gè)c.文件。MEM和DBG這兩個(gè)模塊能夠進(jìn)行通用,兩個(gè)模塊的代碼在Crowbar文件夾中的memory和debug的子文件夾中。

      對(duì)C語(yǔ)言進(jìn)行深入的分析和研究能夠看出,C語(yǔ)言中不含有C++和C#的命名空間,同時(shí),也不具有Java中的包機(jī)制,因此,需要制定相關(guān)的命名規(guī)則,來(lái)避免命名沖突問(wèn)題的出現(xiàn)。本文中所介紹的語(yǔ)言設(shè)計(jì)中所采用的命名規(guī)則如下:

      1)模塊在進(jìn)行命名時(shí),開頭的三個(gè)字符必須是英文字母的大寫,例如:DVF。

      2)進(jìn)行類的命名時(shí),也要使用三個(gè)大寫字母開頭,同時(shí),兩個(gè)英文單詞之間的連接需要使用大寫字母,例如DVF_Int。

      3)在進(jìn)行變量命名和函數(shù)命名時(shí),要使用小寫字母,如果出現(xiàn)兩個(gè)英文單詞的連接時(shí),也要全部使用小寫的英文字母。例如:alloc_expression。

      4)進(jìn)行宏命名時(shí),所涉及的英文字母要全部使用大寫,需要下劃線進(jìn)行連接的英文單詞也要全部使用大寫。例如:IDENTIFlER_TABLE_ALLOC_SIZE。如果宏定義中帶有參數(shù),那么就要遵循帶函數(shù)的命名規(guī)則。例如:small(a,b).

      5)模塊中會(huì)有一些函數(shù)時(shí)向外公開的,對(duì)于這些函數(shù)的命名,要使用模塊名+下劃線作為前綴,其中模塊名中的字母全部為大寫。例如:CRB_ereate_interpreter().

      61對(duì)于模塊中不向外公開的函數(shù)需要用模塊的名字+下劃線的方式作為前綴,并全部采用小寫的方式。例如:crb_al-loc_expression。

      7)用st_fV為函數(shù)外部的靜態(tài)變量名。

      2.2內(nèi)存管理模塊

      如果經(jīng)常使用c語(yǔ)言進(jìn)行編程,那么就會(huì)深刻地感受到c語(yǔ)言在進(jìn)行編程時(shí),很容易就會(huì)遇到電腦內(nèi)存損壞的額情況,有時(shí)會(huì)出現(xiàn)忘記釋放內(nèi)存而導(dǎo)致泄露等問(wèn)題。內(nèi)存會(huì)經(jīng)常出現(xiàn)一些BUG,讓人很苦惱。特別是在Crowbar編程中,還會(huì)涉及一些字符串型的變量,這些變量在進(jìn)行運(yùn)算時(shí)可以借助“+”進(jìn)行連接,這也就要求內(nèi)存管理模塊中必須設(shè)計(jì)一個(gè)垃圾回收機(jī)制。鑒于上述的這些理由,將內(nèi)存管理模塊的功能進(jìn)行了設(shè)計(jì)。MEM為模塊名,根據(jù)上文中對(duì)模塊的命名規(guī)則,所有的公共函數(shù)都以MEM_為開頭。

      1)借助MEM_malloc()能夠?qū)崿F(xiàn)內(nèi)存空間的配置,并且內(nèi)存空間開始處的默認(rèn)填充為oxCC。將OxCC作為開始處的默認(rèn)填充,能夠避免傳統(tǒng)的內(nèi)存空間出現(xiàn)遺漏初始化的現(xiàn)象。因?yàn)镺xCC是一個(gè)沒有意義的值,因此不會(huì)出現(xiàn)遺漏這一情況。

      2)當(dāng),MEM__reallocO作為擴(kuò)充內(nèi)存空間時(shí),默認(rèn)的擴(kuò)充值為OxCC。

      3)OxCC會(huì)隨著開辟的內(nèi)存空間釋放,這樣一來(lái)內(nèi)存空間釋放所引起的BUG就能夠被較早的發(fā)現(xiàn)。

      4)如果內(nèi)存空間采用malloe()開辟,那么就需要借助free()來(lái)進(jìn)行釋放。

      2.3調(diào)試模塊DBG

      調(diào)試時(shí)會(huì)用到DBG模塊,這一模塊具有非常多的功能,如果是在Crowbar的程序中使用,那么只需要調(diào)用宏DBG_assert()以及DBG_panic()就可以。當(dāng)DBG在輸出時(shí),可以借助DBG set debug_write fg()將輸出目標(biāo)進(jìn)行更改,盡管輸出目標(biāo)得到了更改,同樣stderr會(huì)保留一份相同的信息。如果輸出目標(biāo)不進(jìn)行更改,stderr將會(huì)輸出兩行一樣的信息。

      3結(jié)束語(yǔ)

      上文中借助C語(yǔ)言的語(yǔ)法特點(diǎn)以及程序編寫方式自定制了Crowbar(杠桿)的基本語(yǔ)法。對(duì)Crowbar(杠桿)中的程序結(jié)構(gòu)、數(shù)據(jù)類型、變量、語(yǔ)句與結(jié)構(gòu)控制、運(yùn)算符等多方面的內(nèi)容都進(jìn)行了設(shè)計(jì),特別是給出了一套模塊命名的規(guī)則以及內(nèi)存管理的方法。采用Crowbar語(yǔ)言,能夠?yàn)樽x者的使用帶來(lái)非常大的方便。

      猜你喜歡
      設(shè)計(jì)方法C語(yǔ)言
      基于Visual Studio Code的C語(yǔ)言程序設(shè)計(jì)實(shí)踐教學(xué)探索
      基于C語(yǔ)言的計(jì)算機(jī)軟件編程
      C語(yǔ)言程序設(shè)計(jì)課程教學(xué)與學(xué)科專業(yè)相結(jié)合的探索
      高職高專院校C語(yǔ)言程序設(shè)計(jì)教學(xué)改革探索
      淺析兒童家具模塊化設(shè)計(jì)方法
      淺析旅游景區(qū)公共設(shè)施的設(shè)計(jì)
      公路橋梁結(jié)構(gòu)橋梁抗疲勞設(shè)計(jì)方法應(yīng)用
      如何利用七年級(jí)新教材進(jìn)行英語(yǔ)課堂閱讀教學(xué)
      論子函數(shù)在C語(yǔ)言數(shù)據(jù)格式輸出中的應(yīng)用
      非計(jì)算機(jī)專業(yè)C語(yǔ)言教學(xué)探討
      青浦区| 蒲城县| 新晃| 东平县| 独山县| 彭阳县| SHOW| 昌邑市| 汉寿县| 天峻县| 肇州县| 垦利县| 中江县| 宿松县| 娱乐| 佛山市| 那曲县| 宜都市| 静安区| 米易县| 松滋市| 浮梁县| 会同县| 龙门县| 丹阳市| 甘孜| 本溪市| 南京市| 双柏县| 防城港市| 阿瓦提县| 潮州市| 游戏| 宜都市| 阿合奇县| 淄博市| 淮阳县| 保靖县| 淮滨县| 九江市| 肇庆市|