在线观看av毛片亚洲_伊人久久大香线蕉成人综合网_一级片黄色视频播放_日韩免费86av网址_亚洲av理论在线电影网_一区二区国产免费高清在线观看视频_亚洲国产精品久久99人人更爽_精品少妇人妻久久免费

首頁(yè) > 文章中心 > c語(yǔ)言編程

c語(yǔ)言編程

前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇c語(yǔ)言編程范文,相信會(huì)為您的寫作帶來(lái)幫助,發(fā)現(xiàn)更多的寫作思路和靈感。

c語(yǔ)言編程

c語(yǔ)言編程范文第1篇

摘要:現(xiàn)在單片機(jī)的程序設(shè)計(jì),C51已經(jīng)得到廣泛的推廣和應(yīng)用,算是單片機(jī)的主流設(shè)計(jì)程序,甚至可以說(shuō)作為單片機(jī)開(kāi)發(fā)人員必須要掌握的一門語(yǔ)言了。本文簡(jiǎn)要介紹了Franklin C51交叉編譯器的特點(diǎn),較詳細(xì)地討論了C51語(yǔ)言程序設(shè)計(jì)的基本技巧及其與匯編語(yǔ)言程序的混合編程、中斷處理過(guò)程等實(shí)際問(wèn)題。

關(guān)鍵詞:C51;C語(yǔ)言;編程

在研制單片機(jī)應(yīng)用系統(tǒng)時(shí),匯編語(yǔ)言是一種常用的軟件工具。它能直接操作硬件,指令的執(zhí)行速度快。但其指令系統(tǒng)的固有格式受硬件結(jié)構(gòu)的限制很大,且難于編寫與調(diào)試,可移植性也差。隨著單片機(jī)硬件性能的提高,其工作速度越來(lái)越快,因此在編寫單片機(jī)應(yīng)用系統(tǒng)程序時(shí),更著重于程序本身的編寫效率。而Franklin C51交叉編譯器是專為80C51系列單片機(jī)設(shè)計(jì)的一種高效的C語(yǔ)言編譯器,使用它可以縮短開(kāi)發(fā)周期,降低開(kāi)發(fā)成本,因此目前它已成為開(kāi)發(fā)80C51系列單片機(jī)的流行工具。

一、C51的編程規(guī)范

(一)注釋

1.開(kāi)始的注釋:

文件(模塊)注釋內(nèi)容:

公司名稱、版權(quán)、作者名稱、修改時(shí)間、模塊功能、背景介紹等,復(fù)雜的算法需要加上流程說(shuō)明;

函數(shù)開(kāi)頭的注釋內(nèi)容:

函數(shù)名稱、功能、說(shuō)明 輸入、返回、函數(shù)描述、流程處理、全局變量、調(diào)用樣例等,復(fù)雜的函數(shù)需要加上變量用途說(shuō)明 ;

2.程序中的注釋內(nèi)容:

修改時(shí)間和作者、方便理解的注釋等。注釋內(nèi)容應(yīng)簡(jiǎn)煉、清楚、明了,一目了然的語(yǔ)句不加注釋。

(二)命名:

命名必須具有一定的實(shí)際意義。

1.常量的命名:全部用大寫。

2.變量的命名:

3.結(jié)構(gòu)體命名:

4.函數(shù)的命名:

函數(shù)名首字大寫,若包含有兩個(gè)單詞的每個(gè)單詞首字母大寫。

函數(shù)原型說(shuō)明包括:引用外來(lái)函數(shù)及內(nèi)部函數(shù),外部引用必須在右側(cè)注明函數(shù)來(lái)源: 模塊名及文件名, 內(nèi)部函數(shù),只要注釋其定義文件名 ;

1.縮進(jìn):縮進(jìn)以Tab為單位,一個(gè)Tab為四個(gè)空格大小。預(yù)處理語(yǔ)句、全局?jǐn)?shù)據(jù)、函數(shù)原型、標(biāo)題、附加說(shuō)明、函數(shù)說(shuō)明、標(biāo)號(hào)等均頂格書寫。語(yǔ)句塊的“{”“}”配對(duì)對(duì)齊,并與其前一行對(duì)齊;

2.空格:數(shù)據(jù)和函數(shù)在其類型,修飾名稱之間適當(dāng)空格并據(jù)情況對(duì)齊。關(guān)鍵字原則上空一格,如:

if ( ... ) 等,運(yùn)算符的空格規(guī)定如下:“->”、“[”、“]”、“++”、“--”、“~”、“!”、“+”、“-”(指正負(fù)號(hào)),“&”(取址或引用)、“*”(指使用指針時(shí))等幾個(gè)運(yùn)算符兩邊不空格(其中單目運(yùn)算符系指與操作數(shù)相連的一邊),其它運(yùn)算符(包括大多數(shù)二目運(yùn)算符和三目運(yùn)算符“?:”兩邊均空一格,“(”、“)”運(yùn)算符在其內(nèi)側(cè)空一格,在作函數(shù)定義時(shí)還可據(jù)情況多空或不空格來(lái)對(duì)齊,但在函數(shù)實(shí)現(xiàn)時(shí)可以不用。

3.空行:程序文件結(jié)構(gòu)各部分之間空兩行,若不必要也可只空一行,各函數(shù)實(shí)現(xiàn)之間一般空兩行

4.修改:版本封存以后的修改一定要將老語(yǔ)句用/* */ 封閉,不能自行刪除或修改,并要在文件及函數(shù)的修改記錄中加以記錄。

二、C51語(yǔ)言程序設(shè)計(jì)的基本技巧

C語(yǔ)言是一種高級(jí)程序設(shè)計(jì)語(yǔ)言,它提供了十分完備的規(guī)范化流程控制結(jié)構(gòu)。因此采用C51語(yǔ)言設(shè)計(jì)單片機(jī)應(yīng)用系統(tǒng)程序時(shí),首先要盡可能地采用結(jié)構(gòu)化的程序設(shè)計(jì)方法,這樣可使整個(gè)應(yīng)用系統(tǒng)程序結(jié)構(gòu)清晰,易于調(diào)試和維護(hù)。對(duì)于不同的功能模塊,分別指定相應(yīng)的入口參數(shù)和出口參數(shù),而經(jīng)常使用的一些程序最好編成函數(shù),這樣既不會(huì)引起整個(gè)程序管理的混亂,還可增強(qiáng)可讀性,移植性也好。

在程序設(shè)計(jì)過(guò)程中,要充分利用C51語(yǔ)言的預(yù)處理命令。對(duì)于一些常用的常數(shù),如TRUE,F(xiàn)ALSE,PI以及各種特殊功能寄存器,或程序中一些重要的依據(jù)外界條件可變的常量,可采用宏定義"#define"或集中起來(lái)放在一個(gè)頭文件中進(jìn)行定義,再采用文件包含命令"#include"將其加入到程序中去。這樣當(dāng)需要修改某個(gè)參量時(shí),只須修改相應(yīng)的包含文件或宏定義,而不必對(duì)使用它們的每個(gè)程序文件都作修改,從而有利于文件的維護(hù)和更新。

三、C51語(yǔ)言與匯編語(yǔ)言程序的混合編程

C51編譯器能對(duì)C語(yǔ)言源程序進(jìn)行高效率的編譯,生成高效簡(jiǎn)潔的代碼,在絕大多數(shù)場(chǎng)合采用C語(yǔ)言編程即可完成預(yù)期的目的。但有時(shí)為了編程直觀或某些特殊地址的處理,還須采用一定的匯編語(yǔ)言編程。它們必須有完整的約定,否則數(shù)據(jù)的交換就可能出錯(cuò)。下面就以力源公司的10位串行A/D轉(zhuǎn)換器TLC1549 為例說(shuō)明C語(yǔ)言程序與匯編語(yǔ)言程序的調(diào)用。

四、C51中斷處理過(guò)程

C51編譯器支持在C源程序中直接開(kāi)發(fā)中斷過(guò)程,因此減輕了使用匯編語(yǔ)言的繁瑣工作,提高了開(kāi)發(fā)效率。中斷服務(wù)函數(shù)的完整語(yǔ)法如下:

void函數(shù)名(void)[模式]

[再入]interrupt n [using r]

其中n(0~31)代表中斷號(hào)。C51編譯器允許32個(gè)中斷,具體使用哪個(gè)中斷由80C51系列的芯片決定。r(0~3)代表第r組寄存器。在調(diào)用中斷函數(shù)時(shí),要求中斷過(guò)程調(diào)用的函數(shù)所使用的寄存器組必須與其相同。"再入"用于說(shuō)明中斷處理函數(shù)有無(wú)"再入"能力。C51編譯器及其對(duì)C語(yǔ)言的擴(kuò)充允許編程者對(duì)中斷所有方面的控制和寄存器組的使用。這種支持能使編程者創(chuàng)建高效的中斷服務(wù)程序,用戶只須在C語(yǔ)言下關(guān)心中斷和必要的寄存器組切換操作。

四、結(jié)語(yǔ)

C51編譯器不但可以縮短單片機(jī)控制系統(tǒng)的開(kāi)發(fā)周期,而且易于調(diào)試和維護(hù)。此外,C51語(yǔ)言還有許多強(qiáng)大的功能,如提供豐富的庫(kù)函數(shù)供用戶直接調(diào)用,完整的編譯控制指令為程序調(diào)試提供必要的符號(hào)信息等等??傊?,C51語(yǔ)言是廣大單片機(jī)開(kāi)發(fā)人員的強(qiáng)有力的工具。

參考文獻(xiàn):

[1]周立功.單片機(jī)實(shí)驗(yàn)與實(shí)踐教程(三)[M].北京:北京航天航空大學(xué)出版社.2006

[2]柴鈺.單片機(jī)原理及應(yīng)用[M].北京:西安電子科技大學(xué)出版社.2009

c語(yǔ)言編程范文第2篇

關(guān)鍵詞:計(jì)算機(jī)C語(yǔ)言 計(jì)算機(jī)編程 實(shí)驗(yàn)教學(xué) 改革措施 分析 探討

中圖分類號(hào):TP312.1-4 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2012)11-0229-01

1、計(jì)算機(jī)C語(yǔ)言教學(xué)特點(diǎn)分析

計(jì)算機(jī)C語(yǔ)言是進(jìn)行計(jì)算機(jī)程序編寫設(shè)計(jì)使用的一種計(jì)算機(jī)程序代碼語(yǔ)言,在進(jìn)行計(jì)算機(jī)程序編寫設(shè)計(jì)應(yīng)用中,C語(yǔ)言具有語(yǔ)言簡(jiǎn)練、數(shù)據(jù)類型豐富以及邏輯性強(qiáng)、完全結(jié)構(gòu)化的特征,在計(jì)算機(jī)程序編寫設(shè)計(jì)中應(yīng)用十分廣泛和普遍。同時(shí),計(jì)算機(jī)C語(yǔ)言是高等院校計(jì)算機(jī)專業(yè)的基礎(chǔ)學(xué)科中的一門基本語(yǔ)言,也是進(jìn)行計(jì)算機(jī)數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)庫(kù)部分知識(shí)內(nèi)容教學(xué)的重要基礎(chǔ)教學(xué)部分,是進(jìn)行計(jì)算機(jī)程序設(shè)計(jì)學(xué)習(xí)的入門學(xué)習(xí)課程。在進(jìn)行計(jì)算機(jī)C語(yǔ)言教學(xué)過(guò)程中,由于C語(yǔ)言的基礎(chǔ)入門學(xué)科特點(diǎn)以及數(shù)據(jù)類型豐富、多樣特征,對(duì)于C語(yǔ)言教學(xué)的實(shí)踐性要求尤其高,對(duì)于計(jì)算機(jī)C語(yǔ)言課程知識(shí)的教學(xué)以及對(duì)于學(xué)生掌握情況的檢查,都需要通過(guò)學(xué)生上機(jī)的實(shí)際編程操作進(jìn)行實(shí)現(xiàn)。因此,對(duì)于計(jì)算機(jī)C語(yǔ)言教學(xué)來(lái)講,在進(jìn)行C語(yǔ)言理論性教學(xué)過(guò)程中,也應(yīng)注意加強(qiáng)對(duì)于C語(yǔ)言實(shí)驗(yàn)的教學(xué)開(kāi)展,以培養(yǎng)學(xué)生C語(yǔ)言課程的相關(guān)能力和素質(zhì)。

2、計(jì)算機(jī)C語(yǔ)言實(shí)驗(yàn)教學(xué)中存在的問(wèn)題

在進(jìn)行計(jì)算機(jī)C語(yǔ)言實(shí)驗(yàn)教學(xué)中,由于計(jì)算機(jī)C語(yǔ)言實(shí)驗(yàn)教學(xué)內(nèi)容比較難以理解和掌握,而對(duì)于C語(yǔ)言實(shí)驗(yàn)教學(xué)的模式不當(dāng),導(dǎo)致初學(xué)者對(duì)于C語(yǔ)言實(shí)驗(yàn)教學(xué)部分逐漸失去學(xué)習(xí)興趣,或者是學(xué)習(xí)興趣不大。比如,一些C語(yǔ)言初學(xué)者,在進(jìn)行實(shí)驗(yàn)教學(xué)內(nèi)容部分的學(xué)習(xí)過(guò)程中,由于缺乏相應(yīng)的對(duì)于C語(yǔ)言實(shí)驗(yàn)教學(xué)內(nèi)容學(xué)習(xí)的思維模式,導(dǎo)致在學(xué)習(xí)過(guò)程中無(wú)法進(jìn)行C語(yǔ)言與實(shí)踐解決問(wèn)題之間的轉(zhuǎn)換與描述,導(dǎo)致C語(yǔ)言編程設(shè)計(jì)任務(wù)無(wú)法完成,從而逐漸形成一定的學(xué)習(xí)問(wèn)題與壓力,逐漸失去C語(yǔ)言實(shí)驗(yàn)教學(xué)的學(xué)習(xí)興趣。其次,在進(jìn)行C語(yǔ)言實(shí)驗(yàn)教學(xué)開(kāi)展過(guò)程中,由于進(jìn)行C語(yǔ)言實(shí)驗(yàn)教學(xué)的教學(xué)應(yīng)用設(shè)備比較落后,導(dǎo)致實(shí)驗(yàn)教學(xué)開(kāi)展中,設(shè)備無(wú)法滿足一些實(shí)驗(yàn)教學(xué)的需求,從而對(duì)于正常的計(jì)算機(jī)C語(yǔ)言實(shí)驗(yàn)教學(xué)活動(dòng)的開(kāi)展造成不利影響,從而對(duì)于C語(yǔ)言實(shí)驗(yàn)教學(xué)目標(biāo)以及教學(xué)效果造成影響。再次,進(jìn)行計(jì)算機(jī)C語(yǔ)言實(shí)驗(yàn)教學(xué)開(kāi)展過(guò)程中,由于進(jìn)行C語(yǔ)言實(shí)驗(yàn)教學(xué)的方式比較單一,也是目前計(jì)算機(jī)C語(yǔ)言實(shí)驗(yàn)教學(xué)中存在一個(gè)重要問(wèn)題,對(duì)于實(shí)驗(yàn)教學(xué)的效果以及教學(xué)目標(biāo)、任務(wù)等的實(shí)現(xiàn),都有很大的不利影響和作用。最后,在進(jìn)行計(jì)算機(jī)C語(yǔ)言實(shí)驗(yàn)教學(xué)過(guò)程中,主要是為了通過(guò)上機(jī)的計(jì)算機(jī)編程設(shè)計(jì)實(shí)驗(yàn),鍛煉與培養(yǎng)學(xué)生的實(shí)踐動(dòng)手能力與解決實(shí)際問(wèn)題的能力,對(duì)于學(xué)生掌握知識(shí)情況進(jìn)行檢測(cè)。但是,目前C語(yǔ)言的實(shí)驗(yàn)教學(xué)中,存在著對(duì)于C語(yǔ)言教學(xué)上機(jī)實(shí)踐的考核措施與機(jī)制,這也對(duì)于老師進(jìn)行實(shí)驗(yàn)教學(xué)成果的檢驗(yàn)以及學(xué)生對(duì)于實(shí)驗(yàn)教學(xué)的真正掌握情況了解,有很大的不利影響,從而對(duì)于實(shí)驗(yàn)教學(xué)計(jì)劃與教學(xué)開(kāi)展設(shè)計(jì)、教學(xué)效果等都有很大的影響。

3、計(jì)算機(jī)C語(yǔ)言實(shí)驗(yàn)教學(xué)改革的有效措施

針對(duì)上述計(jì)算機(jī)C語(yǔ)言教學(xué)過(guò)程中存在的問(wèn)題,以及對(duì)于C語(yǔ)言實(shí)驗(yàn)教學(xué)的影響作用,在進(jìn)行計(jì)算機(jī)C語(yǔ)言實(shí)驗(yàn)教學(xué)的開(kāi)展過(guò)程中,應(yīng)注意從以下幾個(gè)方面對(duì)于C語(yǔ)言實(shí)驗(yàn)教學(xué)的方式以及內(nèi)容進(jìn)行改革推進(jìn),以提高C語(yǔ)言實(shí)驗(yàn)教學(xué)的效果與水平。首先,在進(jìn)行計(jì)算機(jī)C語(yǔ)言的實(shí)驗(yàn)教學(xué)過(guò)程中,可以通過(guò)合適實(shí)驗(yàn)教學(xué)方式,來(lái)提高學(xué)生對(duì)于C語(yǔ)言實(shí)驗(yàn)教學(xué)的學(xué)習(xí)興趣。比如,通過(guò)錯(cuò)誤案例的分析教學(xué)法,將學(xué)生編程設(shè)計(jì)中容易出現(xiàn)的錯(cuò)誤問(wèn)題,提前進(jìn)行教學(xué)設(shè)計(jì),并通過(guò)教學(xué)分析,在吸引學(xué)生興趣同時(shí),加深學(xué)生對(duì)于知識(shí)內(nèi)容的記憶、理解。其次,應(yīng)注意結(jié)合現(xiàn)代多媒體信息技術(shù),開(kāi)展多媒體網(wǎng)絡(luò)的計(jì)算機(jī)C語(yǔ)言實(shí)驗(yàn)教學(xué),并且主要在實(shí)驗(yàn)教學(xué)過(guò)程中改進(jìn)教學(xué)方法,提高計(jì)算機(jī)C語(yǔ)言教學(xué)的效果,培養(yǎng)學(xué)生計(jì)算機(jī)C語(yǔ)言編程設(shè)計(jì)的相關(guān)實(shí)踐能力與水平,推進(jìn)計(jì)算機(jī)C語(yǔ)言的教學(xué)發(fā)展。

如下,是使用計(jì)算機(jī)C語(yǔ)言進(jìn)行循環(huán)冗余校驗(yàn)碼的實(shí)驗(yàn)教學(xué)應(yīng)用過(guò)程。在進(jìn)行這一部分的教學(xué)中,首先使用計(jì)算機(jī)C語(yǔ)言進(jìn)行多項(xiàng)式除法的程序模擬設(shè)計(jì),具體設(shè)計(jì)過(guò)程如下:

計(jì)算機(jī)程序的函數(shù)名稱:polydiv;

計(jì)算機(jī)程序函數(shù)原型位置:CRC.H;

所屬計(jì)算機(jī)數(shù)據(jù)庫(kù):CRC.LIB

在使用C語(yǔ)言進(jìn)行函數(shù)計(jì)算設(shè)計(jì)過(guò)程中,會(huì)產(chǎn)生一個(gè)余數(shù),余數(shù)存放在remainder文件中。

其中,計(jì)算機(jī)C語(yǔ)言多項(xiàng)式除法模擬設(shè)計(jì)中,頭文件為siodef.h

USHORT polydiv?。║SHORT data,USHORT divisor,USHORT remainder)

{

static USHORT quotient,i;

for(i=8;i>0;I-)

return remainder

}

在進(jìn)行上述應(yīng)用計(jì)算機(jī)C語(yǔ)言進(jìn)行多項(xiàng)式除法程序的模擬設(shè)計(jì)基礎(chǔ)上,在使用CRC函數(shù)進(jìn)行CRC測(cè)試程序設(shè)計(jì)實(shí)現(xiàn),就可以實(shí)現(xiàn)計(jì)算機(jī)C語(yǔ)言對(duì)于循環(huán)冗余校驗(yàn)碼的設(shè)計(jì)實(shí)現(xiàn),并在教學(xué)過(guò)程中通過(guò)學(xué)生的實(shí)驗(yàn)操作,進(jìn)行教學(xué)實(shí)現(xiàn)。

4、結(jié)語(yǔ)

總之,計(jì)算機(jī)C語(yǔ)言課程教學(xué)是一門實(shí)踐性比較強(qiáng)的教學(xué)課程,教學(xué)過(guò)程中尤其重視對(duì)于學(xué)生實(shí)踐動(dòng)手以及實(shí)驗(yàn)設(shè)計(jì)能力的培養(yǎng)鍛煉,因此,進(jìn)行計(jì)算機(jī)C語(yǔ)言實(shí)驗(yàn)教學(xué)改革的分析與探討,有利于對(duì)于當(dāng)前實(shí)驗(yàn)教學(xué)中存在的問(wèn)題進(jìn)行避免與控制,取得較好的C語(yǔ)言實(shí)驗(yàn)教學(xué)效果。

參考文獻(xiàn)

[1]卜登立,彭嵩松,唐衛(wèi)東,龍侃.“匯編語(yǔ)言程序設(shè)計(jì)”課程教學(xué)改革研究與探討.井岡山大學(xué)學(xué)報(bào),2009(5).

[2]方艷紅,趙海龍.計(jì)算機(jī)高級(jí)語(yǔ)言程序設(shè)計(jì)類課程實(shí)踐教學(xué)改革研究.中國(guó)科技信息,2008(19).

[3]朱旻如,郭劍,朱立華.計(jì)算機(jī)語(yǔ)言課程中案例實(shí)驗(yàn)教學(xué)法的實(shí)施探討.計(jì)算機(jī)教育,2008(18).

c語(yǔ)言編程范文第3篇

關(guān)鍵詞:c語(yǔ)言;計(jì)算機(jī);軟件編程;技巧

中圖分類號(hào):TP311

文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2017)10-0071-01

1.C語(yǔ)言概述

c語(yǔ)言是經(jīng)由B語(yǔ)言不斷完善、發(fā)展而來(lái)的。隨著現(xiàn)代信息技術(shù)的發(fā)展,原有的計(jì)算機(jī)語(yǔ)言系統(tǒng)逐漸無(wú)法滿足計(jì)算機(jī)編程的需求,因此,人們開(kāi)始對(duì)原有的B語(yǔ)言進(jìn)行不斷的豐富和完善,于1972年推出了C語(yǔ)言,自1978年以后,C語(yǔ)言逐漸被移植到計(jì)算機(jī)中,成為計(jì)算機(jī)編程系統(tǒng)語(yǔ)言,為計(jì)算機(jī)軟件編程提供了條件。

2.c語(yǔ)言環(huán)境下計(jì)算機(jī)軟件編程技巧

C語(yǔ)言具有模塊化的特點(diǎn),在計(jì)算機(jī)軟件編程工作中,應(yīng)當(dāng)注重軟件編程的技巧性,充分發(fā)揮C語(yǔ)言的便捷性和靈活性特點(diǎn),不斷優(yōu)化軟件編程,提高軟件的質(zhì)量和使用效率。

2.1計(jì)算機(jī)軟件編程函數(shù)運(yùn)用技巧

在C語(yǔ)言計(jì)算機(jī)軟件編程中,還會(huì)涉及函數(shù)的運(yùn)用。事實(shí)上,每個(gè)函數(shù)都有其相應(yīng)的功能,函數(shù)的功能可暮數(shù)的名稱上進(jìn)行判斷。在編程工作中,需要程序員定義函數(shù)參數(shù)值、返回值以及函數(shù)名稱,但事實(shí)上,C語(yǔ)言系統(tǒng)自帶函數(shù)數(shù)據(jù)庫(kù),程序員只需要充分利用"#include指令和頭文件,即可調(diào)用數(shù)據(jù)庫(kù)中的函數(shù),提高軟件編程效率。例如,在實(shí)際編程工作中,需要運(yùn)用到sqrt函數(shù),其調(diào)用函數(shù)的指令如下:#include"string.h"。

2.2變量存儲(chǔ)類型定義和設(shè)置技巧

變量存儲(chǔ)器的選取和操作,會(huì)對(duì)軟件編程代碼的執(zhí)行效率產(chǎn)生一定影響。只有實(shí)現(xiàn)變量存儲(chǔ)器的合理定義,軟件的執(zhí)行效率才能得以提高。程序在定義變量存儲(chǔ)器時(shí),應(yīng)當(dāng)在充分考慮編程實(shí)際情況的前提下,采用內(nèi)部直接尋址存儲(chǔ)器。另外,在c語(yǔ)言編程中,函數(shù)變量的正確傳遞也非常重要,子程序模塊和整個(gè)程序模塊在選擇變量時(shí),有一定的區(qū)別。整個(gè)程序應(yīng)當(dāng)選取全局變量,而子程序則選取局部變量。

2.3設(shè)計(jì)合理的c語(yǔ)言和軟件編程的接口

C語(yǔ)言的執(zhí)行速度快,還可實(shí)現(xiàn)對(duì)硬件的直接操作。在實(shí)際操作中,可將C語(yǔ)言運(yùn)用到計(jì)算機(jī)軟件的編程操作中,實(shí)現(xiàn)對(duì)數(shù)據(jù)的采集、處理服務(wù)器中斷、實(shí)時(shí)控制等操作,實(shí)現(xiàn)數(shù)據(jù)傳遞和控制的自動(dòng)化,進(jìn)而提高控制任務(wù)的操作準(zhǔn)確性,加速程序的實(shí)時(shí)響應(yīng)。

3.C語(yǔ)言和匯編語(yǔ)言的結(jié)合

C語(yǔ)言雖然能夠產(chǎn)生快速又緊湊的目標(biāo)代碼,但是若要產(chǎn)生高質(zhì)量的目標(biāo)代碼,仍需要借助匯編語(yǔ)言來(lái)實(shí)現(xiàn)。在某些方面,匯編語(yǔ)言比C語(yǔ)言更具優(yōu)勢(shì),但是對(duì)某些程序的編程又不得不使用C語(yǔ)言。因此,在計(jì)算機(jī)軟件編程中,兩種語(yǔ)言經(jīng)常會(huì)混合使用。匯編語(yǔ)言和C語(yǔ)言的混合,通??刹捎靡韵聝煞N方法實(shí)現(xiàn):第一,在C語(yǔ)言編程中嵌入?yún)R編語(yǔ)言。第二,分別編輯c語(yǔ)言和匯編語(yǔ)言,再進(jìn)行目標(biāo)模塊的鏈接。

3.1在c語(yǔ)言中嵌入?yún)R編語(yǔ)言

匯編語(yǔ)言的AMS指令在c語(yǔ)言中為合法指令,因此,在c語(yǔ)言中嵌入?yún)R編語(yǔ)言主要利用這一指令進(jìn)行操作。在C語(yǔ)言中嵌入?yún)R編語(yǔ)言的格式如下:”ASMf“匯編語(yǔ)句”)”,即將匯編語(yǔ)句用雙引號(hào)和括號(hào)括起,并在括號(hào)前加上關(guān)鍵字ASM,需要強(qiáng)調(diào)的是,匯編指令與前一雙引號(hào)之間要預(yù)留空格。比如,在C語(yǔ)言中嵌入?yún)R編語(yǔ)言INTM指令(中斷指令),其指令為"ASMf“INTM”)”。在C語(yǔ)言中嵌入?yún)R編語(yǔ)言時(shí),應(yīng)當(dāng)遵守以下原則:第一,被嵌人的匯編指令在結(jié)束時(shí)不需要輸入(;)。第二,ASM塊中的分號(hào)(;)是匯編代碼的注釋。第三,在ASN塊中返回指令為return。第四,在嵌入c語(yǔ)言時(shí),應(yīng)用匯編語(yǔ)言中所使用的C語(yǔ)言進(jìn)行初始化處理,并明確匯編的類型。第五,匯編語(yǔ)言中如db等偽指令被禁止嵌入C語(yǔ)言中。事實(shí)上,在C語(yǔ)言中嵌入?yún)R編語(yǔ)句的方式,雖然較為簡(jiǎn)單便捷,但是在嵌入的過(guò)程中,有可能導(dǎo)致C語(yǔ)言本身的語(yǔ)言環(huán)境受到破壞,導(dǎo)致程序運(yùn)行結(jié)果出錯(cuò)。因此,不建議在C語(yǔ)言中嵌入大段功能完整的匯編語(yǔ)言。

c語(yǔ)言編程范文第4篇

關(guān)鍵詞 可視化編程環(huán)境;人機(jī)交換界面;詞法分析;語(yǔ)法糾正

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-7597(2014)01-0042-01

計(jì)算機(jī)的普及過(guò)程中,為了讓計(jì)算機(jī)程序更好的服務(wù)于公眾,對(duì)于程序的語(yǔ)言的要求就尤為突出,合理有效的建立起良好的語(yǔ)言環(huán)境是研究者的任務(wù),也是在本文中著重提出的議題。我們通過(guò)在使用C語(yǔ)言環(huán)境下的人機(jī)交換系統(tǒng)來(lái)實(shí)現(xiàn)計(jì)算機(jī)系統(tǒng)程序的可視化管理,在對(duì)程序設(shè)計(jì)的過(guò)重中將設(shè)計(jì)的方案確實(shí)的實(shí)現(xiàn)出來(lái),有效的體現(xiàn)出程序化進(jìn)程管理的優(yōu)勢(shì)。

1 人機(jī)交換模式的意義

在系統(tǒng)的交流過(guò)程中,以往是采取人為發(fā)出指令,使用計(jì)算機(jī)的匯編語(yǔ)言和更為完善的C語(yǔ)言進(jìn)行命令的編輯,改變了機(jī)器和人之間存在的間隙。這套人機(jī)交換模式最為主要的就是可視化技術(shù),技術(shù)在現(xiàn)有的環(huán)境中實(shí)現(xiàn)了可視化的操作模式,對(duì)于人直接命令機(jī)器起到了關(guān)鍵的作用。人機(jī)交換模式在使用中的原理是:可視化系統(tǒng)在程序運(yùn)行的過(guò)程中,將數(shù)據(jù)整理編程成結(jié)構(gòu)化的模式,由抽象的數(shù)字概念轉(zhuǎn)換為具體形象的可視化模型結(jié)構(gòu)?;讷@取計(jì)算機(jī)模型信息在使用中較為復(fù)雜,完全可以考慮使用二維圖像對(duì)于圖像可視化生產(chǎn),這些都需要通過(guò)計(jì)算機(jī)對(duì)于數(shù)據(jù)進(jìn)行采集,利用視覺(jué)信息定位處理的加工方法,對(duì)編程可視化進(jìn)行完善,這就在很大程度上解決了在可視化圖像采集中出現(xiàn)程序混亂的現(xiàn)象。

在所提到的計(jì)算機(jī)編程可視化圖像采集裝置中最為主要的電腦原件就是高靈敏度的光學(xué)構(gòu)件,它使用的是光學(xué)的耦合技術(shù),在QQSDE模式下快速的采集圖片,形成的還原圖像與真實(shí)的圖像像素大致相同。再把光學(xué)原件收集的檢測(cè)信息發(fā)送到信號(hào)轉(zhuǎn)換裝置當(dāng)中,利用信號(hào)發(fā)射的原理將圖像轉(zhuǎn)變成圖像信號(hào)。在計(jì)算機(jī)程序接收信號(hào)的同時(shí),對(duì)于信號(hào)進(jìn)行分析,把原有的加密進(jìn)行破解,快速的從信號(hào)當(dāng)中需找圖像信息,并將破解出的信息提取出來(lái)再次轉(zhuǎn)換成模型,對(duì)于目標(biāo)表征較為明顯的圖片可以直接進(jìn)行直接的編程處理。如果遇到較為輔復(fù)雜的表征形式,可以將數(shù)據(jù)的格式存儲(chǔ)記錄到數(shù)據(jù)庫(kù)中,與原有數(shù)據(jù)進(jìn)行比對(duì),得出最為相似的數(shù)據(jù)進(jìn)行分析提取,并將最終得到的數(shù)據(jù)指令下達(dá)到每一個(gè)數(shù)據(jù)終端當(dāng)中。

2 可視化編程環(huán)境設(shè)計(jì)的內(nèi)容

直觀有效的可視化系統(tǒng)是在程序設(shè)計(jì)中提高效率的重要方式,對(duì)于計(jì)算機(jī)程序后期的檢測(cè)也起到了關(guān)鍵的作用,對(duì)于圖像的界面設(shè)置,在程序的整體結(jié)構(gòu)中,減少了操作人員在交流中的成本,縮短了操作的時(shí)間,降低了操作的復(fù)雜性,同時(shí)C語(yǔ)言的介入可以使得程序中的語(yǔ)言內(nèi)容更加的完善,改變了以往語(yǔ)言出現(xiàn)的細(xì)節(jié)上的錯(cuò)誤,完全實(shí)現(xiàn)了設(shè)計(jì)的可視化模式。

C語(yǔ)言的在編程過(guò)程中,會(huì)在錯(cuò)誤的狀態(tài)下有系統(tǒng)的提示,這就是可視化的作用,在語(yǔ)言的編輯程序中,將設(shè)置和編輯形成連接關(guān)系,最后在關(guān)系的確立后形成具體的操作過(guò)程。在實(shí)施的每個(gè)階段C語(yǔ)言的源代碼程序會(huì)發(fā)生一定的規(guī)律性轉(zhuǎn)變,在表示方式的不同中,會(huì)出現(xiàn)一定的語(yǔ)言語(yǔ)法錯(cuò)誤和語(yǔ)言意思的不明確,對(duì)于在可視化編程的中的C語(yǔ)言環(huán)境可分為語(yǔ)言的分析判斷、代碼的轉(zhuǎn)換和命令的執(zhí)行三個(gè)過(guò)程。對(duì)于語(yǔ)言的判斷中,設(shè)計(jì)者在非操作的狀態(tài)下,由計(jì)算機(jī)自身的識(shí)別方式上的工作狀態(tài),對(duì)于編程環(huán)境中的語(yǔ)言出現(xiàn)的問(wèn)題和錯(cuò)誤及時(shí)的糾正,在發(fā)現(xiàn)系統(tǒng)無(wú)法解決的問(wèn)題時(shí),系統(tǒng)會(huì)發(fā)出對(duì)話框提示對(duì)于編程語(yǔ)言進(jìn)行人工的處理。數(shù)據(jù)源中的信息在讀取過(guò)程中直接傳送到緩沖接收裝置中,這就進(jìn)行第二相內(nèi)容,就是代碼的轉(zhuǎn)換過(guò)程,原有的信號(hào)源會(huì)在轉(zhuǎn)換器中經(jīng)過(guò)變換,生成新的數(shù)據(jù)形式,在正確的語(yǔ)法的指示下,系統(tǒng)記錄下代碼生成的具體標(biāo)記。再結(jié)合原有的C語(yǔ)言的環(huán)境模式進(jìn)行比對(duì),對(duì)于無(wú)關(guān)的代碼進(jìn)行刪除的預(yù)處理,剔除一些無(wú)關(guān)錯(cuò)位的信息,并保留和存儲(chǔ)新生成的文字、標(biāo)點(diǎn)和符號(hào)。最后一個(gè)階段就是根據(jù)新生成的編程代碼設(shè)計(jì)在計(jì)算機(jī)程序中實(shí)現(xiàn)操作指令的過(guò)程,完成整個(gè)可視化編程操作環(huán)境的使用。

3 可視化編程的實(shí)例介紹

在可視化編程的實(shí)現(xiàn)中,對(duì)于數(shù)據(jù)的分析是設(shè)計(jì)中的關(guān)鍵項(xiàng)目,對(duì)于語(yǔ)言的掃描器會(huì)根據(jù)C語(yǔ)言的具體規(guī)則(如關(guān)鍵字、運(yùn)算符、數(shù)據(jù)類型和程序語(yǔ)句結(jié)構(gòu)等)從詞法預(yù)處理器產(chǎn)生的原始Token中依次讀取原始Token信息進(jìn)行分析,產(chǎn)生最終給語(yǔ)法分析器使用的記號(hào)流信息,并為每一個(gè)Token定義相應(yīng)的類型信息。Token的數(shù)據(jù)結(jié)構(gòu)設(shè)置如下根據(jù)系統(tǒng)設(shè)計(jì)的原理。根據(jù)原理的改變方式構(gòu)建程序代碼的可視化可以實(shí)現(xiàn)計(jì)算機(jī)指令系統(tǒng)和運(yùn)行機(jī)制研究的可視直觀性,為研究提高計(jì)算機(jī)的性能提供了一個(gè)可靠的虛擬平臺(tái)。通過(guò)數(shù)字模擬圖形的結(jié)構(gòu)方式將程序虛擬運(yùn)行的內(nèi)部工作過(guò)程進(jìn)行現(xiàn)實(shí)展示,可以大大提高C語(yǔ)言環(huán)境下對(duì)計(jì)算機(jī)系統(tǒng)內(nèi)部結(jié)構(gòu)優(yōu)化的研究,對(duì)于語(yǔ)言環(huán)境中的技術(shù)和語(yǔ)法的檢驗(yàn)在程序內(nèi)部進(jìn)行,可以有效的講計(jì)算機(jī)程序完善。并且考慮到關(guān)于可編程環(huán)境下的語(yǔ)義的詮釋,以及提供對(duì)系統(tǒng)的可擴(kuò)展能力的研究,真正做到研究CPU程序中關(guān)于C語(yǔ)言技術(shù)的提高。

語(yǔ)法分析階段是整個(gè)編譯過(guò)程中繼詞法分析后的第二個(gè)階段,該過(guò)程是實(shí)現(xiàn)可視化的關(guān)鍵階段。它與編譯程序中的語(yǔ)法分析器略有不同,區(qū)別主要在算法和輸出結(jié)果上。編譯程序的語(yǔ)法分析是在詞法分析得出的單詞序列的基礎(chǔ)上得出相應(yīng)的語(yǔ)法樹(shù),進(jìn)而為下階段的語(yǔ)義分析做準(zhǔn)備,確保可編程環(huán)境下的語(yǔ)義完整。

在對(duì)于語(yǔ)法的判別和解釋的過(guò)程中,尤其是對(duì)于代碼和單詞符號(hào)的辨別,分析出已有的單詞的語(yǔ)境和構(gòu)詞方式,將已有的單詞符號(hào)串聯(lián)起來(lái)。在通過(guò)規(guī)范中的分析方法形成分析樹(shù),并通過(guò)語(yǔ)法分析器具體的表現(xiàn)出來(lái),其具體的過(guò)程為:利用CParser相關(guān)聯(lián)的詞語(yǔ)對(duì)詞法分析產(chǎn)生的Token進(jìn)行分析判斷(也即調(diào)用CScaner相關(guān)聯(lián)詞語(yǔ)),然后通過(guò)單詞的使用方式及相應(yīng)規(guī)則建立語(yǔ)法樹(shù)。在語(yǔ)法分析中,根據(jù)傳入的Token值情況進(jìn)行分析,調(diào)用相應(yīng)的執(zhí)行函數(shù)進(jìn)行分析判斷,每個(gè)函數(shù)產(chǎn)生相應(yīng)的語(yǔ)法樹(shù),直到最后所有的Token處理完成以后,整個(gè)C語(yǔ)言程序產(chǎn)生一棵總體的語(yǔ)法樹(shù)。

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

在計(jì)算機(jī)的可視化環(huán)境中,實(shí)現(xiàn)人機(jī)的交流是提高計(jì)算機(jī)運(yùn)行效率的關(guān)鍵手段,在提供這樣的交流平臺(tái)的過(guò)程中實(shí)現(xiàn)圖像的可視化,將虛擬狀態(tài)下的數(shù)據(jù)資源系統(tǒng)的轉(zhuǎn)變?yōu)榭梢暬木唧w操作過(guò)程,其中結(jié)合有C語(yǔ)言的環(huán)境設(shè)置,對(duì)于在程序編程過(guò)程中出現(xiàn)的錯(cuò)誤和優(yōu)化檢測(cè)中,了解和發(fā)現(xiàn)語(yǔ)言語(yǔ)義和語(yǔ)法的正確與否是實(shí)現(xiàn)結(jié)構(gòu)自身優(yōu)化的一種方式,在對(duì)于編程環(huán)境的不斷優(yōu)化設(shè)計(jì)中,完善程序內(nèi)部的環(huán)境狀態(tài),在實(shí)現(xiàn)程序化設(shè)計(jì)的過(guò)程中更加的順利,借此來(lái)達(dá)到計(jì)算機(jī)程序智能化、方便操作的目的。

參考文獻(xiàn)

[1]蔡勇,劉學(xué)慧,吳恩華.基于圖像繪制的虛擬現(xiàn)實(shí)系統(tǒng)環(huán)境[J].軟件學(xué)報(bào),2007,8(10):721-728.

c語(yǔ)言編程范文第5篇

關(guān)鍵詞:圓曲線;主點(diǎn)放樣;c#語(yǔ)言

中圖分類號(hào):TP文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1672-3198(2008)08-0359-03

無(wú)論是采用傳統(tǒng)光學(xué)儀器放樣圓曲線主點(diǎn),還是采用全站儀放樣圓曲線主點(diǎn),圓曲線要素、圓曲線主點(diǎn)里程均是必須計(jì)算出來(lái)的,它們的數(shù)學(xué)模型分別為:

圓曲線要素切線長(zhǎng):T=Rtgα2

曲線長(zhǎng):L=π180•α•R

外矢距:E=R(secα2-1)

切曲差:q=2T-L

圓曲線主點(diǎn)里程計(jì)算:

ZY里程=JD里程-T

YZ里程=ZY里程+L

QZ里程=YZ里程-L2(假設(shè)JD里程已知)

JD里程=QZ里程+q2(檢核)

各點(diǎn)平面坐標(biāo)的計(jì)算:x=Li-li36R2+li5120R4(QZ點(diǎn):Li=L2;YZ點(diǎn):Li=L)y=li22R-Li424R3+L6i720R5

假定我們?cè)谶M(jìn)行圓曲線放樣時(shí),建立如下坐標(biāo)系統(tǒng)(圖1)。

圖1

I――測(cè)站點(diǎn)

JD――交點(diǎn)

ZY――直線段公路與曲線段公路的轉(zhuǎn)折點(diǎn)

QZ――圓曲線中點(diǎn)

YZ――曲線段公路與直線段公路的轉(zhuǎn)折點(diǎn)

α――曲線轉(zhuǎn)角(實(shí)測(cè)或已知)

R――圓曲線設(shè)計(jì)半徑(已知)

下面是圓曲線主點(diǎn)放樣要素計(jì)算基于c#語(yǔ)言編程實(shí)現(xiàn)的主要源代碼,考慮到文章的篇幅,對(duì)于窗口通用的最大化、最小化、關(guān)閉的代碼就沒(méi)有再一一列出。

namespace 測(cè)量計(jì)算器 //程序命名空間

{

public partial class Form1 : Form

{

private void button1_Click(object sender, EventArgse)

{

//主要的計(jì)算過(guò)程就在這里了

//按照計(jì)算要求,輸入各已知量,已知量包括:

//轉(zhuǎn)向角,轉(zhuǎn)向方向,曲線半徑,曲線主點(diǎn)里程和測(cè)站點(diǎn)坐標(biāo)。

//首先輸入主點(diǎn)里程

int DisMiles;

double DisMeters;

double Distance;

DisMiles = Convert.ToInt32(txtmiles.Text);

DisMeters = Convert.ToDouble(txtmeters.Text);

Distance = 1000 * DisMiles + DisMeters;//得到已知里程

//輸入角度,包括度、分、秒;

int drg = 0, mnt = 0, snd = 0;

drg = int.Parse(txtdeg.Text);

mnt = int.Parse(txtmin.Text);

snd = int.Parse(txtsec.Text);

double vbanjing = double.Parse(txtrd.Text); //輸入曲線半徑

//角度換成弧度:

double grdvalue = ((drg + mnt / 60.0 + snd / 3600.0) / 180.0) * Math.PI;

double valueIX, valueIY;//IY,IX分別是I點(diǎn)的坐標(biāo),這個(gè)坐標(biāo)一般已經(jīng)給出

double valueT,valueL,valueE,valueq; //表示各曲線要素

double valueZY,valueYZ,valueQZ,valueJD; //表示各主點(diǎn)里程

double valueXQZ, valueYQZ, valueXYZ, valueYYZ, valueXJD, valueYJD;//QZ,YZ,JD 3點(diǎn)的坐標(biāo)

valueIX = Convert.ToDouble(txtx.Text);

valueIY = Convert.ToDouble(txty.Text);

valueT = vbanjing * Math.Tan(grdvalue/2);//算出T

txtT.Text = Math.Round(valueT,3).ToString();

valueL = grdvalue * vbanjing;//算出L;

txtL.Text =Math.Round( valueL,3).ToString();

valueE=vbanjing*((1/Math.Cos(grdvalue/2))-1);//算出E

txte.Text =Math.Round( valueE,3).ToString();

valueq = 2 * valueT - valueL;//算出q;

txtq.Text =Math.Round( valueq,3).ToString();

//接下來(lái)計(jì)算各主點(diǎn)里程里程

valueZY = Distance + valueL-valueL/2 + valueq/2-valueT;

valueYZ = valueZY + valueL;

valueQZ = valueYZ - valueL/2;

valueJD = valueQZ +valueq/2;

// 定義中間量方便計(jì)算轉(zhuǎn)換

int vzy, vyz, vqz, vjd;

vzy = (int)valueZY / 1000;

vyz = (int)valueYZ / 1000;

vqz = (int)valueQZ / 1000;

vjd = (int)valueJD / 1000;

txtzy1.Text = vzy.ToString();

txtzy2.Text = Convert.ToString(Math.Round((valueZY - 1000 * vzy),3));

txtyz1.Text = vyz.ToString();

txtyz2.Text = Convert.ToString(Math.Round((valueYZ - 1000 * vyz),3));

txtqz1.Text = vqz.ToString();

txtqz2.Text = Convert.ToString(Math.Round((valueQZ - 1000 * vqz),3));

txtjd1.Text = vjd.ToString();

txtjd2.Text = Convert.ToString(Math.Round((valueJD - 1000 * vjd),3));

//首先確定JD點(diǎn)的坐標(biāo)

valueXJD = valueT;

valueYJD = 0;

//接下來(lái)計(jì)算4個(gè)坐標(biāo)值:

//注意,在計(jì)算4個(gè)坐標(biāo)時(shí),Y坐標(biāo)的正負(fù)由轉(zhuǎn)向角方向決定,假如向左,Y為負(fù),否則,為正

//所以先定義一個(gè)這樣的標(biāo)量:

int leftORright;

leftORright =left.Checked? -1 : 1; //判斷是否為向左

double LQZ = valueL / 2; //這是計(jì)算的之間量!

valueXQZ=LQZ-(LQZ*LQZ*LQZ)/(6*vbanjing*vbanjing)+Math.Pow(LQZ,5)/(120*Math.Pow(vbanjing,4));

txtxqz.Text = Math.Round(valueXQZ,3).ToString(); //計(jì)算坐標(biāo)值

valueYQZ=leftORright*((LQZ*LQZ)/(2*vbanjing)-Math.Pow(LQZ,4)/(24*Math.Pow(vbanjing,3))+Math.Pow(LQZ,6)/(720*(Math.Pow(vbanjing,5))));

txtyqz.Text=Math.Round(valueYQZ,3).ToString();

valueXYZ=valueL-(valueL*valueL*valueL)/(6*vbanjing*vbanjing)+Math.Pow(valueL,5)/(120*Math.Pow(vbanjing,4));

txtxyz.Text = Math.Round(valueXYZ,3).ToString();

valueYYZ=leftORright*((valueL*valueL)/(2*vbanjing)-Math.Pow(valueL,4)/(24*Math.Pow(vbanjing,3))+Math.Pow(valueL,6)/(720*(Math.Pow(vbanjing,5))));

txtyyz.Text=Math.Round(valueYYZ,3).ToString();

//最后進(jìn)行各點(diǎn)放樣數(shù)據(jù)的計(jì)算,主要包括了方位角計(jì)算

//,水平角計(jì)算以及三個(gè)距離的計(jì)算。

//在計(jì)算過(guò)程中,需要判斷曲線書左向還是右向,因?yàn)榉较虻牟煌瑫?huì)導(dǎo)致計(jì)算結(jié)果的不一樣。

//首先定義水平角AIZY:

double AIZY;

if (left.Checked)

AIZY = (270 / 180.0) * Math.PI;

else

AIZY =( 90 / 180.0) * Math.PI;

//下面。根據(jù)轉(zhuǎn)向角的方向確定方位角:

//三個(gè)方位角:αIJD, αIQZ, αIYZ,分別是I點(diǎn)到JD、QZ、YZ的方位角

double αIJD, αIQZ, αIYZ;

//在確定方位角后,就可進(jìn)行放樣要素的計(jì)算了,這主要包括2個(gè)內(nèi)容:距離D,以及夾角β:

//首先求得夾角B:βIJD,βIQZ,βIYZ:

double βIJD, βIQZ, βIYZ;

//假如為左:

if (left.Checked)

{

αIJD = 2 * Math.PI - Math.Atan(Math.Abs((valueYJD - valueIY) / (valueXJD - valueIX)));

αIQZ = 2 * Math.PI - Math.Atan(Math.Abs((valueYQZ - valueIY) / (valueXQZ - valueIX)));

αIYZ = 2 * Math.PI - Math.Atan(Math.Abs((valueYYZ - valueIY) / (valueXYZ - valueIX)));

βIJD = αIJD - αIZY;

βIQZ = αIQZ - αIZY;

βIYZ = αIYZ - αIZY;

}

//假如為右

else

{

αIJD = Math.Atan(Math.Abs((valueYJD - valueIY) / (valueXJD - valueIX)));

αIQZ = Math.Atan(Math.Abs((valueYQZ - valueIY) / (valueXQZ - valueIX)));

αIYZ = Math.Atan(Math.Abs((valueYYZ - valueIY) / (valueXYZ - valueIX)));

βIJD = -(αIJD - αIZY);

βIQZ = -(αIQZ - αIZY);

βIYZ = -(αIYZ - αIZY);

}

//轉(zhuǎn)換成角度(包含度,分,秒)

//定義度,分,秒以及弧度的中間量

//利用Converting()函數(shù)實(shí)現(xiàn)角度轉(zhuǎn)變

TXTαIJD.Text = Converting(αIJD / Math.PI * 180.0);

TXTαIQZ.Text = Converting(αIQZ / Math.PI * 180.0);

TXTαIYZ.Text = Converting(αIYZ / Math.PI * 180.0);

//轉(zhuǎn)換成角度(包含度,分,秒)

βIJD = βIJD / Math.PI * 180.0;

βIQZ = βIQZ / Math.PI * 180.0;

βIYZ = βIYZ / Math.PI * 180.0;

TXTβIJD.Text = Converting(βIJD);// βIJD.ToString();

TXTβIQZ.Text = Converting(βIQZ); //βBIQZ.ToString();

TXTβIYZ.Text = Converting(βIYZ);// βIYZ.ToString();

//最后,計(jì)算出點(diǎn)間距離:

double DIJD, DIQZ, DIYZ;

DIJD=Math.Sqrt((valueYJD-valueIY)*(valueYJD-valueIY)+(valueXJD-valueIX)*(valueXJD-valueIX));

DIQZ=Math.Sqrt((valueYQZ-valueIY)*(valueYQZ-valueIY)+(valueXQZ-valueIX)*(valueXQZ-valueIX));

DIYZ=Math.Sqrt((valueYYZ-valueIY)*(valueYYZ-valueIY)+(valueXYZ-valueIX)*(valueXYZ-valueIX));

TXTDIJD.Text = Math.Round(DIJD,3).ToString();

TXTDIQZ.Text = Math.Round(DIQZ,3).ToString();

TXTDIYZ.Text = Math.Round(DIYZ,3).ToString();

}

private string Converting(double jiao)//轉(zhuǎn)換函數(shù)

{

intdu, fen, miao;

string jiaodu;

du =(int) Math.Floor(jiao);

fen =(int) Math.Floor((jiao - du) * 60);

miao =(int)( Math.Round ((((jiao - du) * 60 - Math.Floor((jiao - du) * 60)) * 60),1));

jiaodu = Convert.ToString(du) + ”?“ + Convert.ToString(fen) + ”\'“ + Convert.ToString(miao) + ”\””;

return jiaodu;

}

}

}

據(jù)此源代碼,進(jìn)行窗口設(shè)計(jì)的最終效果圖(如圖2),可供讀者進(jìn)行參考設(shè)計(jì)。

尚义县| 康乐县| 鄂尔多斯市| 苗栗县| 宜宾市| 习水县| 龙口市| 洪泽县| 章丘市| 茂名市| 海伦市| 金山区| 昌乐县| 临沭县| 治多县| 牙克石市| 阳谷县| 营山县| 堆龙德庆县| 衡东县| 蓬安县| 阳泉市| 汤原县| 涿州市| 穆棱市| 民和| 井陉县| 西藏| 甘德县| 普兰县| 大港区| 论坛| 沙田区| 弥勒县| 禹城市| 甘洛县| 皮山县| 册亨县| 百色市| 宜兴市| 西林县|