亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種基于可視化界面繪制圖形自動生成C語言代碼軟件的設(shè)計與實現(xiàn)

        2018-09-26 07:08:06宋雅娟
        計算機應(yīng)用與軟件 2018年9期
        關(guān)鍵詞:程序學(xué)生

        宋雅娟 馮 萍

        1(蘇州市職業(yè)大學(xué)計算機工程學(xué)院 江蘇 蘇州 215104)2(長春大學(xué)計算機科學(xué)技術(shù)學(xué)院 吉林 長春 130022)

        0 引 言

        C語言是一門被廣泛開設(shè),普遍使用的計算機程序設(shè)計語言,但由于C語言自身特點以及教師教學(xué)方法和學(xué)生基礎(chǔ)等各方面因素導(dǎo)致C語言課程在教學(xué)過程中存在很多問題,制約著課程教學(xué)質(zhì)量[1]。教學(xué)一線的教師為了提高課程教學(xué)質(zhì)量,進行了種種教學(xué)改革。從教學(xué)內(nèi)容的改革[2]到教學(xué)手段的改革[3-4]都做了大量的實踐。Internet上也提供大量的教學(xué)資源供學(xué)生學(xué)習(xí)下載。盡管如此,學(xué)生長期反復(fù)地學(xué)習(xí)基礎(chǔ)知識和經(jīng)典算法,雖然可以讀懂和編寫簡單的程序,但很難形成對編程的興趣,也沒有自主思維和實踐創(chuàng)新的意識[5]。圖形動畫和動畫游戲一直是青年學(xué)生的最愛,如果在C語言的教學(xué)中從編寫圖形動畫或者動畫游戲入手,讓學(xué)生可以用C語言設(shè)計出自己的圖形動畫或者是動畫程序[6],一定會激發(fā)學(xué)生學(xué)習(xí)C語言程序的極大興趣。EasyX圖形庫[7]融合了Visual C++開發(fā)平臺和簡單的繪圖功能,可以幫助C語言初學(xué)者快速上手圖形和游戲編程[8]。EasyX可以從網(wǎng)上下載,安裝簡單。為了更好地幫助學(xué)生快速學(xué)會EasyX來制作圖形程序,掌握EasyX開發(fā)圖形程序的方法,筆者結(jié)合教學(xué)實踐開發(fā)了一個C語言圖形化程序開發(fā)輔助軟件。軟件提供了可視化界面,借鑒Windows自帶畫筆的繪圖功能。學(xué)生啟動軟件后只要在界面上使用提供的繪圖工具欄中的繪圖工具即可在畫板上畫出自己需要的組合圖形,軟件自動根據(jù)學(xué)生繪制的圖形位置、大小、顏色生成對應(yīng)的基于EasyX庫C語言代碼,并可直接運行該代碼獲得其在C語言環(huán)境中的運行效果。學(xué)生可以通過此軟件,快速掌握C語言程序框架,EasyX函數(shù)庫的具體使用方法。在掌握C語言基本的圖形程序方法后,學(xué)生可自主學(xué)習(xí)C語言語法知識,開發(fā)更復(fù)雜的動畫程序。

        1 軟件功能簡介

        軟件提供了一個集繪圖工具欄、繪圖畫板、代碼面板為一體的可視化界面,如圖1所示。

        圖1 代碼自動生成器軟件運行效果圖

        軟件左側(cè)是仿Windows自帶畫筆程序的繪圖工具欄,其中有基本圖形工具如直線、矩形、橢圓等,線條粗細(xì)選擇工具欄及顏色設(shè)置工具欄。中間為繪圖界面,學(xué)生可選擇左側(cè)工具欄上的工具按鈕后在繪圖界面使用鼠標(biāo)自由繪圖。在繪圖過程中,右側(cè)的代碼面板會自動生成對應(yīng)的C語言程序代碼。學(xué)生可以邊繪制,邊體會C語言繪圖功能,為了感受語言程序的運行效果,學(xué)生可以把生成的代碼復(fù)制到自己的Visual C++環(huán)境中運行,也可以點擊圖1中的運行按鈕直接在軟件中查看實際的運行效果,如圖2所示。

        圖2 中自動生成代碼點擊運行后的實際運行效果

        2 軟件功能實現(xiàn)

        2.1 總體功能設(shè)計

        軟件的總體架構(gòu)圖如圖3所示。

        圖3 系統(tǒng)總體架構(gòu)圖

        2.2 繪圖工具欄與EasyX庫函數(shù)

        用戶進行繪圖首先需要在繪圖工具欄點選提供的基本圖形,如矩形、橢圓、直線、多邊形、三角形等,以單選按鈕方式實現(xiàn)。繪圖工具欄中提供了部分EasyX庫中有直接函數(shù)實現(xiàn)的基本圖形如直線、橢圓、矩形、圓角矩形及多邊形。三角形、菱形等圖形沒有直接直觀的對應(yīng)函數(shù),但在繪圖中又比較常見,所以也在工具欄上加以表示,這樣更有助于學(xué)生掌握EasyX中多邊形函數(shù)的功能。圖形工具與EasyX圖形庫函數(shù)的對應(yīng)關(guān)系如表1所示。

        表1 ToolPanel中的繪圖基本組件

        續(xù)表1

        軟件主要完成的是當(dāng)用戶選擇繪圖面板上的具體圖形進行繪畫時,根據(jù)鼠標(biāo)經(jīng)過途徑獲取相應(yīng)坐標(biāo)值,生成對應(yīng)的EasyX函數(shù)及參數(shù)。以圖形出現(xiàn)的先后順序安排代碼以順序結(jié)構(gòu)形式展現(xiàn)。

        2.3 線條選擇與顏色設(shè)置

        繪制圖形時,如果不特別選擇,則自動選擇最細(xì)的線條進行各種圖形的繪制。線條選擇面板只提供了四種尺寸的線條,可供學(xué)生了解線條的設(shè)置方法,之后便可以根據(jù)此規(guī)律自行修改代碼以使用其他尺寸的線條,更有助于學(xué)生自行設(shè)計自己的線條設(shè)置程序。

        上述四種線條在EasyX的設(shè)置函數(shù)調(diào)用分別是:

        (1) setlinestyle(PS_SOLID,1);

        (2) setlinestyle(PS_SOLID,3);

        (3) setlinestyle(PS_SOLID,7);

        (4) setlinestyle(PS_SOLID,11)。

        調(diào)色板面板是以不同顏色塊為圖形的按鈕集合,用于選擇線條顏色和填充顏色。如果填充顏色按鈕被按下則點選顏色作為填充顏色,否則作為線條顏色。顏色以按鈕方式展示常用的顏色,沒有提供自定義顏色是為了讓學(xué)生了解EasyX的設(shè)置顏色方法后自行修改代碼來完成其他顏色的設(shè)計。

        顏色設(shè)置的EasyX函數(shù)為setcolor();對應(yīng)填充顏色的圖形繪制方法有專門的函數(shù),見表2。

        表2 EasyX使用特定填充色繪制填充圖形的函數(shù)

        2.4 代碼自動生成及真實環(huán)境運行

        本部分面板有兩部分構(gòu)成,一個部分是JTextArea控件來存放生成的代碼,學(xué)生也可在此部分直接修改代碼,通過運行按鈕來查看運行結(jié)果,從而加深自己對EasyX圖形庫中函數(shù)及參數(shù)的理解。

        代碼生成時機在圖形繪制結(jié)束之時,安排在鼠標(biāo)事件MouseReleased之中,生成代碼流程見圖4。

        圖4 C語言程序生成過程流程圖

        為了能夠直接在軟件中感受到程序的實際運行效果,特設(shè)計實現(xiàn)了調(diào)用C語言環(huán)境運行C程序的功能,主要包括將生成代碼編譯成可執(zhí)行文件和執(zhí)行可執(zhí)行文件兩部分。

        C語言程序的編譯使用的是對應(yīng)的編譯器cl.exe,因此使用下述語句來調(diào)用Visual C++的動態(tài)鏈接庫來編譯生成的C語言源程序,形成可執(zhí)行文件。

        Process p=run.exec(″cl /defaultlib:

        kernel32.lib user32.lib gdi32.lib

        winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ″+filename+″.cpp″);

        調(diào)用Process q=run.exec(filename)來運行生成的可執(zhí)行文件。

        2.5 橢圓C語言代碼自動生成的實現(xiàn)

        為了完成不同基礎(chǔ)圖形的代碼自動生成的統(tǒng)一調(diào)用,程序中定義了基礎(chǔ)抽象類MyShape,類中設(shè)計抽象方法getCode。在不同類中重寫getCode方法,本節(jié)以橢圓為例來介紹重寫后的getCode方法。步驟如下:

        (1) 生成StringBuffer對象。

        (2) 提取橢圓對象的線條RGB顏色lR,lG,lB,并根據(jù)顏色值生成EasyX庫代碼:setcolor(RGB(″+lR+″,″+lG+″,″+lB+″))。

        (3) 提取橢圓對象的線條粗細(xì)成員變量lineWidth,并生成C函數(shù):

        setlinestyle(PS_SOLID,″+lineWidth+″)

        (4) 提取橢圓對象外接矩形的左上角坐標(biāo)left,top與右下角坐標(biāo)right和bottom,并生成C代碼:

        ellipse(″+Math.min(left, right)+″,″+Math.min(top, bottom)+″,″+(Math.min(left, right)+Math.abs(left-right))+″,″+(Math.min(top, bottom)+Math.abs(top-bottom))+″)

        (5) 將代碼按順序append入StringBuffer對象并設(shè)置入CodePanel中的JTextArea中。

        3 結(jié) 語

        隨著計算機的發(fā)展,計算機編程語言的學(xué)習(xí)已經(jīng)越來越普及,目前不只大學(xué)生學(xué)習(xí)計算機語言,中小學(xué)生的計算機編程課堂也越來越活躍。設(shè)計合適的教學(xué)方法,提高學(xué)生學(xué)習(xí)興趣并激發(fā)創(chuàng)作欲望是目前程序教學(xué)的最大需求。在研究基于EasyX圖形庫的C語言教學(xué)案例的應(yīng)用后,特開發(fā)了本軟件用以輔助學(xué)生方便快速地掌握EasyX庫的圖形開發(fā)方法。學(xué)生在可視化界面中使用鼠標(biāo)輕松繪圖,根據(jù)自動生成的C語言程序來自主學(xué)習(xí)。目前軟件還只能用來開發(fā)圖形程序,后續(xù)會繼續(xù)完善軟件,增加C語言程序結(jié)構(gòu)邏輯、動畫圖形及游戲的可視化開發(fā),幫助學(xué)生更加深入地掌握C語言功能。

        猜你喜歡
        程序學(xué)生
        快把我哥帶走
        試論我國未決羈押程序的立法完善
        《李學(xué)生》定檔8月28日
        電影(2018年9期)2018-11-14 06:57:21
        趕不走的學(xué)生
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        學(xué)生寫話
        學(xué)生寫的話
        創(chuàng)衛(wèi)暗訪程序有待改進
        亚欧国产女人天堂Av在线播放 | 国产亚洲日本人在线观看| 日韩一区二区三区人妻中文字幕| 一个色综合中文字幕人妻激情视频| 人妻少妇精品中文字幕av| 91在线精品老司机免费播放| 日本一区二区在线播放观看| 国产亚洲精品精品综合伦理| 97日日碰人人模人人澡| 亚洲妓女综合网99| 日韩国产自拍精品在线| 日本成人午夜一区二区三区| 综合色区亚洲熟妇另类| 日韩无码视频淫乱| 国产丝袜高跟美腿一区在线| 日本熟女人妻一区二区| 又色又爽又黄还免费毛片96下载| 啪啪免费网站| 在线日韩中文字幕乱码视频| 白白白在线视频免费播放| 中国老熟妇自拍hd发布| 国产精品亚洲专区在线播放| 国产偷国产偷亚洲高清| 特黄 做受又硬又粗又大视频| 婷婷色中文字幕综合在线| 国产精品久久久一本精品| 色婷婷亚洲精品综合影院| 亚洲人成精品久久久久| 精品无码国产污污污免费网站| 久久精品国产av大片| 麻神在线观看免费观看| 少妇无码av无码专区| 亚洲V在线激情| 日日噜噜噜夜夜狠狠久久蜜桃| 久久久久国产精品| 国产精品久久国产精麻豆99网站 | 中文字幕亚洲一区视频| 国产精久久一区二区三区 | 久久久久成人片免费观看蜜芽| 日日摸日日碰人妻无码老牲| 高潮av一区二区三区|