子程序范文

時(shí)間:2023-04-09 08:11:39

導(dǎo)語:如何才能寫好一篇子程序,這就需要搜集整理更多的資料和文獻(xiàn),歡迎閱讀由公務(wù)員之家整理的十篇范文,供你借鑒。

子程序

篇1

本文簡介了子程序編程的基礎(chǔ)知識,以實(shí)例形式論述了子程序在模具平面、凸模和多腔銑削加工編程中的具體應(yīng)用。實(shí)踐表明,使用子程序編程解決了因平面銑削走刀次數(shù)多、分層銑削層數(shù)多、多腔銑削腔數(shù)多而導(dǎo)致的無法進(jìn)行的手工編程的問題,并能夠克服數(shù)控自動編程程序可讀性差、柔性差的缺點(diǎn),縮短編程時(shí)間和工作量。

數(shù)控編程是模具加工的關(guān)鍵環(huán)節(jié),編制高質(zhì)量的加工程序?qū)ぜ|(zhì)量、效率和成本有重要的影響。在模具加工中,經(jīng)常會遇到平面銑削走刀次數(shù)多、分層銑削層數(shù)多、多腔銑削腔數(shù)多而導(dǎo)致的手工編程繁瑣問題,甚至若不采用子程序無法進(jìn)行手工編程的問題。因此,本文探討利用子程序以簡化模具加工手工編程具有重要的意義。

一、FNUAC 0i 系統(tǒng)子程序編程基礎(chǔ)

1. 子程序的概念

數(shù)控機(jī)床的加工程序分為主程序和子程序兩種。主程序是一個(gè)完整的零件加工程序,或是零件加工程序的主體部分,它和加工零件是一一對應(yīng)的關(guān)系。在編制零件加工程序中,如果其中有些加工內(nèi)容完全相同或相似,為了簡化程序,可以把程序中某些重復(fù)出現(xiàn)的程序單獨(dú)抽出來,按一定格式編成一個(gè)單獨(dú)的程序,以供調(diào)用,這個(gè)程序即是子程序。

2. 子程序的調(diào)用

在FANUC 0i 系統(tǒng)中,子程序的調(diào)用可通過M98 指令進(jìn)行,且在調(diào)用格式中將子程序的程序號地址O 改為P,其常用的子程序調(diào)用格式為:M98 P L。

其中地址P 后面的四位數(shù)字為子程序號,地址L 的數(shù)字表示重復(fù)調(diào)用的次數(shù)。若只調(diào)用1 次子程序,在地址L及其后的數(shù)字可省略不寫。

3. 子程序的嵌套

在編程時(shí)讓程序調(diào)用另一個(gè)子程序,這一功能稱為子程序的嵌套。當(dāng)主程序調(diào)用子程序時(shí),該子程序被認(rèn)為是一級子程序,為一級嵌套,一級子程序再調(diào)用子程序時(shí),該子程序被認(rèn)為是二級子程序,為二級嵌套,依次類推,F(xiàn)ANUC 0i 系統(tǒng)中,子程序可以嵌套4 級。

主程序在運(yùn)行過程中若需要執(zhí)行某一級子程序,通過M98 調(diào)用指令來調(diào)用該一級子程序,如果該一級子程序需要執(zhí)行某二級子程序,也是通過M98 指令來調(diào)用該二級子程序,依次類推。子程序返回時(shí)與調(diào)用次序相反,最終一級子程序運(yùn)行結(jié)束后又返回到主程序調(diào)用程序段處,繼續(xù)執(zhí)行下面的程序段。

二、子程序的編程應(yīng)用

1. 模具平面的編程

模具主要是由板類零件組成的,平面是典型加工表面,下面以某模板平面長、寬尺寸為300×250為例進(jìn)行銑削編程。

(1)編程分析。

刀具選用直徑為30mm 的平底立銑刀,以刀位點(diǎn)進(jìn)行編程,銑削平面走刀路線由單向行切和雙向行切,為保證加工表面質(zhì)量采用單向不對稱逆銑行切,步距一般為刀具直徑的0.85 倍,故步距取26mm,工件寬度為250 除以步距26,得循環(huán)次數(shù)為9.6 次,而次數(shù)須為整數(shù),因此,循環(huán)走刀次數(shù)確定為10 次。

(2)確定編程原點(diǎn),設(shè)計(jì)走刀路線。

編程零點(diǎn)確定在工件上表面中心,所設(shè)計(jì)的每次走刀路線如圖1 所示,即P1 P2 P3。

(3)確定基點(diǎn)坐標(biāo)值。

考慮刀具半徑15mm、刀具X 軸方向讓刀距離3mm和步距26mm,采用CAD 尺寸標(biāo)注法確定P1 點(diǎn)絕對坐標(biāo)為P1(-18,11),P2、P3 點(diǎn)增量坐標(biāo)為P1(336,0)、P2(-336,26)。

(4)編寫加工程序源代碼。

綜合上述分析及設(shè)計(jì),編寫參考子程序如O6001 所示,編寫主程序如O1 所示,根據(jù)加工平面尺寸只需修改所編程序中基點(diǎn)P1、P2、P3 坐標(biāo)值,即可用于加工。

O6001;(子程序名)

G90G00Z5;(切換為絕對編程,刀具快速下降到Z坐標(biāo)值5mm 處)

G01Z-1.5F50;(刀具切削進(jìn)給至Z 值-1.5mm 處)

G91G01X336Y0F120;( 切換為增量編程,刀具切削進(jìn)給從P1 到P2 點(diǎn))

G90G00Z50;(切換為絕對編程,刀具快速抬刀至Z坐標(biāo)值為50mm 處)

G91G00X-336Y26;(切換為增量編程,刀具快速至下一個(gè)下刀點(diǎn))

M99;( 子程序結(jié)束)

O1;( 主程序名)

G91G28Z0;(刀具Z 軸回零)

G54G90G00X-18Y11S600M03;(建立XY 工件系,刀具快速至下刀點(diǎn),主軸正轉(zhuǎn),轉(zhuǎn)速600r/min)

G00Z50;(刀具快速至Z 坐標(biāo)值50mm 處)

M98P6001L10;(調(diào)用O6001 子程序10 次)

G00Z200;(刀具快速至Z 坐標(biāo)值200mm 處)

M30;(主程序結(jié)束)

2. 模具零件的分層銑削編程

某模具零件圖如圖2 所示,毛坯長、寬、高尺寸為:100×100×110。

(1)編程分析。

在模具實(shí)際加工中,特別高速加工,為減小切削抗力,避免機(jī)床負(fù)載的劇烈變化,刀具每次的切削深度必須限定在一定范圍內(nèi)。使用子程序編程可實(shí)現(xiàn)刀具Z 向的分層加工。一般要求加工高度和每層切削深度為整數(shù)倍關(guān)系,該沖模型芯高80mm,確定每層切削深度2mm,則需調(diào)用子程序40 次。刀具選用直徑16mm 的合金刀具。

(2)確定編程零點(diǎn),設(shè)計(jì)走刀路線。

編程零點(diǎn)確定在工件上表面中心,設(shè)計(jì)走刀路線時(shí)注意以下4 點(diǎn):①走刀路線下刀點(diǎn)和返回點(diǎn)盡量重合,以簡化編程;②精加工刀具要切向切入切出工件,防止接刀痕; ③ 刀具XY 下刀點(diǎn)盡量在工件以外, 必要時(shí)預(yù)加工工藝孔, 保護(hù)刀具; ④ 走刀路線盡量短, 有利于基點(diǎn)坐標(biāo)計(jì)算。所設(shè)計(jì)的每層走刀路線如圖3 所示,即P P1 P2 P3 P4 P5 P6 P2 P7 P。

(3)確定基點(diǎn)坐標(biāo)值。

圖3 中的刀具每層走刀路線圖為精確設(shè)計(jì),使用CAD軟件查詢法順次確定基點(diǎn)坐標(biāo)為:P(0,-60)、P1 (12,-52)、P2(0,-40)、P3(-30,-40)、P4(-30,10)、P5(30,10)、P6(30,-40)、P7(-12,-52)。

(4)編寫加工程序源代碼。

基于上述分析及設(shè)計(jì),編寫參考子程序如O6002 所示,編寫主程序如O2 所示,以供參考。值得注意的是:①分層銑削子程序編程Z 向須用G91 編程;②主程序中程序段G01Z0F20,刀具須切削進(jìn)給至Z 坐標(biāo)值0 處,才能保證工件的加工高度尺寸。

O6002;(子程序名)

G91G01Z-2F20;(刀具每次切削深度-2mm)

G90G41G01X12Y-52D01F200;( 刀具從P 點(diǎn)切削進(jìn)給到P1 點(diǎn),建立刀具半徑左補(bǔ)償)

G03X0Y-40R12;( 刀具從P1 點(diǎn)切削進(jìn)給到P2 點(diǎn),圓弧切向切入工件)

G01X-30;( 刀具從P2 點(diǎn)切削進(jìn)給到P3 點(diǎn))

G01Y10;( 刀具從P3 點(diǎn)切削進(jìn)給到P4 點(diǎn))

G03X30R30; ( 刀具從P4 點(diǎn)切削進(jìn)給到P5 點(diǎn))

G01Y-40; ( 刀具從P5 點(diǎn)切削進(jìn)給到P6 點(diǎn))

G01X0; ( 刀具從P6 點(diǎn)切削進(jìn)給到P2 點(diǎn))

G03X-12Y-52R12;( 刀具從P3 點(diǎn)切削進(jìn)給到P7 點(diǎn),圓弧切向切出工件)

G40G01X0Y-60F1000;( 刀具從P7 點(diǎn)切削進(jìn)給到P 點(diǎn),取消刀具半徑左補(bǔ)償)

M99; ( 子程序結(jié)束)

O2;( 主程序名)

G91G28Z0;( 刀具Z 軸回零)

G54G90G00X0Y0S2000M03;( 建立工件系,刀具快速至下刀點(diǎn)P,主軸正轉(zhuǎn),轉(zhuǎn)速2000r/min)

G00Z50;( 刀具快速下降到離工件頂面50mm)

G00Z5;( 刀具快速下降到離工件頂面5mm)

G01Z0F20;( 刀具切削進(jìn)給到Z 坐標(biāo)值0 處)

M98P6002L40;( 調(diào)用O6002 子程序40 次)

G00Z50;( 刀具快速抬刀至離工件頂面50mm)

G00Z200;( 刀具快速抬刀至離工件頂面200mm)

M30;( 主程序結(jié)束)

3. 模具的多腔銑削編程

假設(shè)刀具一次能加工深度為10mm,對圖4 所示零件各腔進(jìn)行精銑編程。

(1)編程分析。

刀具選用直徑8mm 的鍵槽銑刀,零件各腔為精加工,為避免刀痕,設(shè)計(jì)走刀路線時(shí),刀具圓弧切向切入切出工件,編寫輪廓子程序使用G91 增量編程,實(shí)現(xiàn)工件輪廓形狀編程與位置的無關(guān)。

(2)確定編程零點(diǎn),設(shè)計(jì)走刀路線。

編程零點(diǎn)確定在工件上表面中心, 所設(shè)計(jì)的走刀路線如圖5 所示, 各腔的加工順序?yàn)棰佗冖邰堍蔻撷啖?,所設(shè)計(jì)的每腔走刀路線為O A1 A2 A3 A4 A5 A6 A2 A7 O。

(3)確定基點(diǎn)坐標(biāo)值。

為使刀具加工形狀與其位置無關(guān),需采用G91 方式編程,因此,使用CAD 尺寸標(biāo)注法確定各基點(diǎn)坐標(biāo)增量坐標(biāo)為:O(0,0)、A1(5,5)、A2(-5,5)、A3(-15,0)、A4(0,-20)、A5(30,0)、A6(0,20)、A7(-5,-5)、O(5,-5)。

(4)編寫加工程序源代碼。

根據(jù)以上分析及設(shè)計(jì),編寫子程序如O6003 所示,編寫主程序如O3 所示,以供參考。

O6003;(子程序名)

G00Z5;(刀具快速下降到離工件頂面5mm 處)

G01Z-10F20;(刀具切削進(jìn)給到切削深度-10mm)

G91G41G01X5Y5D01F60;( 切換為增量編程,建立刀具半徑補(bǔ)償左刀補(bǔ),刀具從O 點(diǎn)進(jìn)給到A1 點(diǎn))

G03X-5Y5R5; ( 刀具從A1 點(diǎn)進(jìn)給到A2 點(diǎn))

G01X-15Y0,R5; ( 刀具從A2 點(diǎn)進(jìn)給到A3 點(diǎn))

G01X0Y-20,R5; ( 刀具從A3 點(diǎn)進(jìn)給到A4)

G01X30Y0,R5; ( 刀具從A4 點(diǎn)進(jìn)給到A5 點(diǎn))

G01X0Y20,R5; ( 刀具從A5 點(diǎn)進(jìn)給到A6 點(diǎn))

G01X-15Y0;( 刀具從A6 點(diǎn)到進(jìn)給A2 點(diǎn))

G03X-5Y-5R5; ( 刀具從A2 點(diǎn)到進(jìn)給A7 點(diǎn))

G40G01X5Y-5F500;( 取消左刀補(bǔ),刀具從A7 點(diǎn)進(jìn)給到O 點(diǎn))

G90G00Z50;( 切換為絕對編程,刀具快速抬刀至離工件頂面50mm)

M99;( 子程序結(jié)束)

O3;( 主程序)

G91G28Z0;(刀具Z 軸回零)

G54G90G00X0Y0S800M03;(建立工件坐標(biāo)系,刀具快速定位至第1 個(gè)腔體中心)

G00Z50;( 刀具快速下降到離工件頂面50mm)

M98P6003L1;( 調(diào)用O6003 子程序1 次)

G00X35Y0;( 刀具快速至第2 個(gè)腔體中心)

M98 P6003L1; ( 調(diào)用O6003 子程序1 次)

……(刀具順次定位至腔中心,調(diào)用子程序加工)

G00X35Y-25; ( 刀具快速至第9 個(gè)腔體中心)

M98 P6003L1;( 調(diào)用O6003 子程序1 次)

G00Z200;( 刀具快速抬刀至離工件頂面200mm)

M30;( 主程序結(jié)束)

篇2

關(guān)鍵詞:子程序調(diào)用 M98、M99指令 簡化編程

中圖分類號:TG519.1 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2014)02-0014-01

Abstract:the numerical control lathe in guangzhou M98instructions for subroutine calls,and from the subroutine return instructions M99(end with M99)come in pairs. Through examples on how to use programming subroutineM98,M99.

Key Words:Subroutine call M98,M99instruction Simplify programming

數(shù)控車床的編程方法有自動編程和手動編程,而手動編程用得比較多。手動編程時(shí)有很多方法和技巧,其中運(yùn)用子程序來編程就是一種方法。在數(shù)控車床的加工編程中利用子程序編程可以簡化編程、節(jié)約數(shù)控統(tǒng)內(nèi)部資源、提高加工效率、降低生產(chǎn)成本。具有很靈活實(shí)用的特點(diǎn),在實(shí)際的加工生產(chǎn)中具有重要的意義。

1 子程序的定義與作用

在編制加工程序時(shí),如果需要加工的零件有些加工部位完全相同或相似,為了簡化程序,可以把這些重復(fù)的程序段單獨(dú)列出,并按一定的格式編寫成子程序。主程序在執(zhí)行過程中如果需要某一子程序,通過調(diào)用指令來調(diào)用該子程序,子程序執(zhí)行完后又返回到主程序,繼續(xù)執(zhí)行后面的程序段。另外在一次定位裝夾中需要加工多個(gè)相同的零件時(shí),也可以利用子程序來編程實(shí)現(xiàn)循環(huán)加工,以達(dá)到節(jié)省加工時(shí)間和提高加工效率的目的。

廣州數(shù)控車床系統(tǒng)的M98指令用于子程序調(diào)用,通常與從子程序返回指令M99(以M99結(jié)束)成對出現(xiàn)。

M98指令格式:

M98 P

被調(diào)用的子程序號(0000~9999)。當(dāng)調(diào)用次數(shù)未輸入時(shí),子程序號的前導(dǎo)0可省略;當(dāng)輸入調(diào)用次數(shù)時(shí),子程序號必須為4位數(shù);調(diào)用次數(shù)(1-999),調(diào)用1時(shí),可不輸入。指令功能:當(dāng)前程序段的其它指令執(zhí)行完成后,系統(tǒng)不執(zhí)行下一程序段,而是去執(zhí)行P指定的子程序,子程序最多可執(zhí)行999次。

從子程序返回M99

指令格式:M99 P

返回主程序執(zhí)行的程序段號(0000~9999),前導(dǎo)0可以省略。

2 利用子程序指令M98、M99編程加工實(shí)例

采用廣州GSK980TB數(shù)控系統(tǒng)車床加工零件(如圖1所示)。該零件的毛坯材料采用φ20的PVC棒料。

2.1 對該零件進(jìn)行加工工藝分析

由于該零件結(jié)構(gòu)比較簡單,尺寸精度要求不高,所以加工時(shí)只需要兩把車刀,一把外圓車刀,一把切斷刀(刀寬為2mm)。如果采用單件加工的方法編程加工,用于對刀和裝夾、換刀的輔助加工時(shí)間大大增加,降低生產(chǎn)效率;如果采取夾位不變,一次裝夾就可以加工多個(gè)零件。這樣,我們可以利用子程序指令來編程進(jìn)行加工,既節(jié)省時(shí)間、材料,又提高了加工效率。

2.2 利用子程序指令M98、M99編制該零件的加工程序

O0001(主程序)

M03 S1

GOO X100 Z50

T0101(外圓車刀)

G00 X22 Z2

GO1 X18 F0.2 G99

Z-81

G00 X20

Z0

M98 P80002

G00 X100 Z50

M30

O0002(子程序)

G01 X18 F0.2 G99

G02 W-8 R10

G00 X100 W58

T0202 (切斷刀,刀寬2mm)

G00 X20 W-60

G01 X0 F0.1

X20 F0.2

G00 X100 W50

T0101

G00 X20 W-50

M99

3 子程序在數(shù)控車床實(shí)訓(xùn)課中的應(yīng)用

學(xué)生在課室上編程課時(shí)總會覺得枯燥乏味,很難理解和掌握子程序的編制及運(yùn)用。因此我們要充分利用實(shí)訓(xùn)課的時(shí)間讓學(xué)生自己動手編程和操作,進(jìn)一步加深了解子程序的作用。由于學(xué)校的設(shè)備有限,在上數(shù)車實(shí)訓(xùn)課時(shí),我們可以把學(xué)生分為兩組。一組學(xué)生用單件加工的方法編程加工(上圖所示的零件);另一組學(xué)生用子程序指令來編程加工(上圖所示的零件)。兩組同一時(shí)間開始,每組加工8件。加工完畢后,通過比較,看看哪一組做得更快、更好。讓學(xué)生們自己作對比和總結(jié),這樣做不但使他們對M98、M99指令有更深刻的認(rèn)識和理解,而且能夠提高他們學(xué)習(xí)數(shù)控編程的興趣,進(jìn)一步提高他們手工編程的能力和動手操作的能力。

4 結(jié)語

綜上所述,利用子程序編程加工在實(shí)際應(yīng)用中,執(zhí)行一次加工程序可以加工多個(gè)零件,這樣既節(jié)省了系統(tǒng)資源,又節(jié)省了每個(gè)零件的加工時(shí)間,提高了加工效率。而且在數(shù)控車床實(shí)訓(xùn)教學(xué)中,通過這樣簡單實(shí)用的例子,讓學(xué)生在“做中學(xué),學(xué)中做”,最大限度地激發(fā)學(xué)生的學(xué)習(xí)主動性、積極性和創(chuàng)新意識,把實(shí)際的工作狀態(tài)和課堂教學(xué)融為一體,從而加強(qiáng)了實(shí)訓(xùn)效果,提高了學(xué)生的綜合素質(zhì)。

參考文獻(xiàn)

[1]GSK980TB車床數(shù)控系統(tǒng).使用手冊(第一版),2006.

篇3

引言

“匯編語言與微機(jī)原理”是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的必修基礎(chǔ)課程。該課程融合了匯編語言程序設(shè)計(jì)和微機(jī)原理與接口技術(shù)兩門課程的內(nèi)容,要求學(xué)生重點(diǎn)掌握匯編語言程序設(shè)計(jì)的方法和微型計(jì)算機(jī)系統(tǒng)各個(gè)部件的工作原理。掌握匯編語言是掌握微機(jī)原理的基礎(chǔ),因?yàn)閷?shí)現(xiàn)和驗(yàn)證微機(jī)系統(tǒng)各個(gè)部件的工作過程需要用到匯編語言,并且更高層次的綜合系統(tǒng)設(shè)計(jì)也離不開匯編語言。

匯編語言與微機(jī)原理課程中,匯編語言子程序設(shè)計(jì)這部分內(nèi)容的知識掌握起到承上啟下的作用。其“承上”的作用體現(xiàn)在:作為一個(gè)獨(dú)立的模塊,子程序設(shè)計(jì)涵蓋之前所學(xué)的匯編語言的指令系統(tǒng)、偽指令、數(shù)據(jù)類型及三種基本控制結(jié)構(gòu)(順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu))。其“啟下”的作用體現(xiàn)在:①后續(xù)接口芯片的功能應(yīng)用基本上都是以子程序的形式實(shí)現(xiàn);②中斷系統(tǒng)中的中斷服務(wù)程序就是一種子程序,中斷系統(tǒng)是微機(jī)系統(tǒng)中非常重要的組成部分,可以說不理解中斷系統(tǒng)就不能理解計(jì)算機(jī)的工作原理[1],而掌握子程序設(shè)計(jì)是本文由收集整理理解和應(yīng)用中斷系統(tǒng)的基礎(chǔ)之一;③子程序設(shè)計(jì)是開發(fā)大型程序的基礎(chǔ),對于培養(yǎng)編程能力十分重要[1]。因此,匯編語言子程序設(shè)計(jì)這部分內(nèi)容無論在教學(xué)上還是在實(shí)驗(yàn)中都必須給予足夠的重視。但目前鮮有文獻(xiàn)涉及這方面的問題,本文針對目前匯編語言與微機(jī)原理課程中匯編語言子程序?qū)嶒?yàn)設(shè)計(jì)中普遍存在的問題給出相應(yīng)的對策,并給出一個(gè)實(shí)驗(yàn)設(shè)計(jì)實(shí)例。lw881.com

1 實(shí)驗(yàn)設(shè)計(jì)存在的問題及對策

⑴ 實(shí)驗(yàn)學(xué)時(shí)安排不夠。據(jù)粗略調(diào)查,大多數(shù)院校匯編語言與微機(jī)原理課程的實(shí)驗(yàn)學(xué)時(shí)為18個(gè)學(xué)時(shí)[1],有一些院校還附加一個(gè)課程設(shè)計(jì)。對于這18個(gè)實(shí)驗(yàn)學(xué)時(shí)普遍的分配方式如表1所示。

表1 匯編語言與微機(jī)原理實(shí)驗(yàn)項(xiàng)目及學(xué)時(shí)安排表

[類別\&項(xiàng)目\&學(xué)時(shí)\&匯編語言程序設(shè)計(jì)部分

(12學(xué)時(shí))\&匯編語言上機(jī)過程及debug的使用\&2\&dos系統(tǒng)功能調(diào)用\&2\&三種基本程序結(jié)構(gòu)\&6\&子程序\&2\&接口芯片部分

(6學(xué)時(shí))\&可編程中斷控制器8259\&2\&并行接口芯片8255\&2\&可編程定時(shí)/計(jì)數(shù)器8253\&2\&]

從表1可以看出,子程序?qū)嶒?yàn)僅安排了2個(gè)學(xué)時(shí),學(xué)時(shí)太少,難以取得良好的訓(xùn)練效果,可以考慮將實(shí)驗(yàn)“dos系統(tǒng)功能調(diào)用”融合到“三種基本程序結(jié)構(gòu)”中,騰出2個(gè)學(xué)時(shí)給子程序?qū)嶒?yàn),有助于學(xué)生深刻全面的理解子程序的相關(guān)知識。

⑵ 實(shí)驗(yàn)內(nèi)容“片面”。對于匯編語言子程序?qū)嶒?yàn),大多數(shù)院校的實(shí)驗(yàn)內(nèi)容只涉及到兩方面的知識:①子程序的類型(近子程序和遠(yuǎn)子程序);②三種參數(shù)傳遞方式(寄存器傳遞、內(nèi)存單元傳遞、堆棧傳遞)[2]。這并不全面,與子程序密切相關(guān)的知識應(yīng)該還包含宏和中斷服務(wù)程序,所以有必要在實(shí)驗(yàn)中安排相應(yīng)的內(nèi)容讓學(xué)生理解子程序與宏的區(qū)別,以及如何把一個(gè)子程序“注冊”為中斷服務(wù)程序,然后通過軟中斷指令(int n)調(diào)用該程序的過程,這樣做有助于后面對中斷系統(tǒng)的學(xué)習(xí)。中斷是學(xué)習(xí)匯編語言的重點(diǎn)、難點(diǎn)部分,能否真正掌握匯編語言對中斷的理解和掌握至關(guān)重要,中斷也是匯編語言的魅力所在[3]。

2 實(shí)驗(yàn)設(shè)計(jì)的一個(gè)實(shí)例

針對前面提到的問題,在此給出一個(gè)匯編語言子程序?qū)嶒?yàn)設(shè)計(jì)實(shí)例,主要內(nèi)容如下:

⑴ 實(shí)驗(yàn)學(xué)時(shí):4學(xué)時(shí)。

⑵ 實(shí)驗(yàn)?zāi)康模?/p>

① 掌握子程序的編寫及調(diào)用方法;

② 掌握近子程序和遠(yuǎn)子程序的區(qū)別;

③ 掌握三種參數(shù)傳遞方式的差別;

④ 掌握子程序與宏的區(qū)別;

⑤ 掌握編寫中斷服務(wù)程序的方法以及通過軟中斷指令。

⑶ 實(shí)驗(yàn)內(nèi)容:

① 編寫一個(gè)近子程序?qū)崿F(xiàn)將一個(gè)字節(jié)的數(shù)據(jù)以十六進(jìn)制的形式輸出,采用寄存器參數(shù)傳遞方式;

② 編寫一個(gè)遠(yuǎn)子程序,功能與①相同,采用堆棧參數(shù)傳遞方式;

③ 變量str中存有一個(gè)以’$’作為結(jié)束符的字符串,編寫一個(gè)子程序?qū)崿F(xiàn)將str中所有的大寫字母全部改為小寫字母,采用內(nèi)存單元參數(shù)傳遞方式;

④ 用宏實(shí)現(xiàn)①中的功能;

⑤ 編寫一中斷服務(wù)程序?qū)崿F(xiàn)①中功能。提示:利用dos系統(tǒng)功能調(diào)用的35h號功能和25h號功能提取和設(shè)置中斷向量,具體如表2所示。

表2 dos系統(tǒng)功能調(diào)用的35h號和25h號功能說明[4]

[功能號\&功能\&入口參數(shù)\&出口參數(shù)\&25h\&設(shè)置中斷向量\&ds:dx=所設(shè)置中斷向量的段基址:偏移量al=欲設(shè)置中斷向量所對應(yīng)的中斷號\&無\&35h\&取中斷向量\&al=欲取中斷向量所對應(yīng)的中斷類型號\&es:bx=取得的中斷向量的段基址:偏移量\&]

該實(shí)驗(yàn)設(shè)計(jì)實(shí)例特點(diǎn)鮮明,首先實(shí)驗(yàn)所要求完成的功能都是匯編語言中簡單而又常用的功能,這一方面可以使學(xué)生不必花太多功夫在算法實(shí)現(xiàn)上,而把主要精力集中在子程序本身的語法上,另一方面實(shí)驗(yàn)中所完成的程序在后續(xù)的實(shí)驗(yàn)中可以直接調(diào)用,減輕了學(xué)生在后續(xù)實(shí)驗(yàn)中的負(fù)擔(dān),同時(shí)加強(qiáng)了各實(shí)驗(yàn)之間的有機(jī)聯(lián)系。我們的實(shí)驗(yàn)內(nèi)容涵蓋了與子程序相關(guān)的各種知識,特別是子程序與中斷服務(wù)程序的關(guān)系,這也是本實(shí)驗(yàn)設(shè)計(jì)的創(chuàng)新之處。

篇4

關(guān)鍵詞:PLC;順序控制;SFC;梯形圖

中圖分類號:TP312文獻(xiàn)標(biāo)識碼:A文章編號:16727800(2012)007002601

作者簡介:劉景東(1980-),男,山東菏澤人,鄂東職業(yè)技術(shù)學(xué)院機(jī)電工程系教師,研究方向?yàn)橛?jì)算機(jī)控制技術(shù)、電氣自動化生產(chǎn)線安裝與調(diào)試;張蓮花(1982-),女,山東菏澤人,鄂東職業(yè)技術(shù)學(xué)院機(jī)電工程系教師,研究方向?yàn)橛?jì)算機(jī)控制技術(shù)、PLC教學(xué);孫寶蘭(1982-),男,山東菏澤人,鄂東職業(yè)技術(shù)學(xué)院機(jī)械工程系教師,研究方向?yàn)閿?shù)控加工技術(shù)。

0引言

PLC編程語言很多,其中梯形圖是PLC的一種主要編程語言,設(shè)計(jì)好梯形圖程序是用好PLC的關(guān)鍵。對于一些簡單的程序,許多人采用經(jīng)驗(yàn)法,這種方法沒有普遍的規(guī)律可循,具有很大的試探性和隨意性。對于復(fù)雜的控制系統(tǒng), 需要大量的中間單元來完成記憶、互鎖、聯(lián)鎖等功能。由于要考慮的因素很多,它們往往又交織在一起,分析起來非常困難, 并且容易遺漏掉一些應(yīng)加以考慮的問題。修改某一局部電路時(shí), 可能對系統(tǒng)產(chǎn)生意想不到的影響。另外,用經(jīng)驗(yàn)法設(shè)計(jì)程序較為復(fù)雜,同行也難以讀懂,更不用說維修人員了, 這給PLC控制系統(tǒng)的維護(hù)和改進(jìn)帶來了很大的困難。本文采用SFC圖進(jìn)行PLC編程來解決以上問題。

1順序功能圖的基本約定

順序功能圖簡稱SFC圖。所謂順序控制設(shè)計(jì)就是按照生產(chǎn)工藝預(yù)先規(guī)定的順序,在各個(gè)輸入信號的作用下,根據(jù)內(nèi)部狀態(tài)和時(shí)間順序,在生產(chǎn)過程中各個(gè)執(zhí)行機(jī)構(gòu)自動有順序地進(jìn)行操作。

SFC圖主要包含3要素:狀態(tài)、動作和切換。在畫SFC圖時(shí),一定體現(xiàn)出這3個(gè)要素,這樣才是一個(gè)完整的系統(tǒng)流程圖,如圖1所示。

說明:①SFC圖的初始步用雙方框來表示;②在SFC圖中,步0狀態(tài)S0.0轉(zhuǎn)換步1狀態(tài)S0.1時(shí),必須保證T100成立,才能轉(zhuǎn)移S0.1,同時(shí)必須保證S0.0狀態(tài)復(fù)位,也就是說對下步狀態(tài)轉(zhuǎn)換時(shí),不僅保證它們之間的切換條件成立,而且必須保證上一步的狀態(tài)為開啟狀態(tài),才允許切換;③每步的動作必須有當(dāng)前步作為驅(qū)動條件,即S0.1—Q0.1、T101動作的輸入條件。

2基于SFC圖的二種編程方法

2. 1S/R切換編程法

案例一:設(shè)計(jì)3盞燈的依次循環(huán)閃爍控制,要求每盞燈亮1秒。根據(jù)控制要求,繪出本程序的SFC圖,并用“切換編程法”編寫梯形圖程序。設(shè)計(jì)思路是建立子程序的設(shè)計(jì)方法,把單獨(dú)具有某一功能的程序塊放在一起,作為一個(gè)子程序來處理,分別建立SBR_0初始化、SBR_1步切換//定時(shí)、SBR_3步定時(shí)3個(gè)子程序,如圖2所示。

2.2步進(jìn)編程法

利用步進(jìn)開始指令SCR、步進(jìn)轉(zhuǎn)移指令SCRT和步進(jìn)結(jié)束指令SCRE,讓每一步的負(fù)載驅(qū)動、轉(zhuǎn)換條件和轉(zhuǎn)換目標(biāo)均在一步之內(nèi)完成。針對案例一的控制要求,采用步進(jìn)編程,如圖3所示。

在使用順序控制指令時(shí)應(yīng)注意:①步進(jìn)控制指令SCR只對狀態(tài)元件S有效,為了保證程序的可靠運(yùn)行,驅(qū)動狀態(tài)元件S的信號應(yīng)采用短脈沖;②當(dāng)輸出需要保持時(shí),可使用S/R指令;③不能把同一編號的狀態(tài)元件用在不同的程序中,例如,如果在主程序中使用了S0.1,則不能在子程序中再使用S0.1;④在SCR段中不能使用JMP和LBL指令,即不允許跳入或跳出SCR段,也不允許在SCR段內(nèi)跳轉(zhuǎn),可以使用跳轉(zhuǎn)和標(biāo)號指令在SCR段周圍跳轉(zhuǎn);⑤不能在SCR段中使用FOR、NEXT和END指令。

3結(jié)語 

PLC作為工業(yè)自動化的首選控制工具已廣泛應(yīng)用于各種場合。PLC控制設(shè)計(jì)的主要問題是編程,采用子程序設(shè)計(jì)思路,在主程序完成調(diào)用后,SFC流程圖使程序結(jié)構(gòu)清晰,易于閱讀與維護(hù),尤其是SFC 的使用可以大大減輕編程的工作量,縮短系統(tǒng)設(shè)計(jì)時(shí)間。

總之,我們在熟練掌握以上兩種方法的基礎(chǔ)上,應(yīng)根據(jù)不同的順序控制系統(tǒng),并結(jié)合PLC的響應(yīng)速度,系統(tǒng)的復(fù)雜程度以及設(shè)計(jì)的效率等因素,來選擇合適的設(shè)計(jì)方法。

參考文獻(xiàn):

\[1\]胡漢文,丁如春.電氣控制與PLC應(yīng)用[M].北京:人民郵電出版社,2009.

\[2\]呂景泉.自動化生產(chǎn)線安裝與調(diào)試[M].北京:中國鐵道出版社,2011.

\[3\]冀建平.PLC原理與應(yīng)用[M].北京:清華大學(xué)出版社,2010.

\[4\]周萬珍,高鴻斌.PLC分析與設(shè)計(jì)應(yīng)用[M].北京:電子工業(yè)出版社,2004.

\[5\]廖常初.PLC基礎(chǔ)及應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2006.

篇5

【關(guān)鍵詞】自編測井繪圖程序 地質(zhì)報(bào)告 應(yīng)用

中圖分類號: P24文獻(xiàn)標(biāo)識碼:A 文章編號:

CorelDRAWGraphicsSuite是加拿大Corel公司的平面設(shè)計(jì)軟件;該軟件是Corel公司出品的矢量圖形制作工具軟件,這個(gè)圖形工具給設(shè)計(jì)師提供了矢量動畫、頁面設(shè)計(jì)、網(wǎng)站制作、位圖編輯和網(wǎng)頁動畫等多種功能。

該軟件圖像軟件是一套屢獲殊榮的圖形、圖像編輯軟件,它包含兩個(gè)繪圖應(yīng)用程序:一個(gè)用于矢量圖及頁面設(shè)計(jì),一個(gè)用于圖像編輯。這套繪圖軟件組合帶給用戶強(qiáng)大的交互式工具,使用戶可創(chuàng)作出多種富于動感的特殊效果及點(diǎn)陣圖像即時(shí)效果在簡單的操作中就可得到實(shí)現(xiàn)——而不會丟失當(dāng)前的工作。通過Coreldraw的全方位的設(shè)計(jì)及網(wǎng)頁功能可以融合到用戶現(xiàn)有的設(shè)計(jì)方案中,靈活性十足。

該軟件套裝更為專業(yè)設(shè)計(jì)師及繪圖愛好者提供簡報(bào)、彩頁、手冊、產(chǎn)品包裝、標(biāo)識、網(wǎng)頁及其它;該軟件提供的智慧型繪圖工具以及新的動態(tài)向?qū)Э梢猿浞纸档陀脩舻牟倏仉y度,允許用戶更加容易精確地創(chuàng)建物體的尺寸和位置,減少點(diǎn)擊步驟,節(jié)省設(shè)計(jì)時(shí)間。

一CorelDRAW12使用技巧

1、快速拷貝色彩和屬性。在CorelDraw軟件中,給其群組中的單個(gè)對象著色的最快捷的方法是把屏幕調(diào)色板上的顏色直接拖拉到對象上。同樣地道理,拷貝屬性到群組中的單個(gè)對象的捷徑是在用戶拖拉對象時(shí)按住鼠標(biāo)右鍵,而此對象的屬性正是用戶想要拷到目標(biāo)對象中去的。當(dāng)用戶釋放按鈕時(shí),程序會彈出一個(gè)右鍵顯示菜單,在菜單中用戶可以選擇自己想要拷貝的屬性命令。

2、讓漸變效果更平滑。漸變效果是圖象制作過程中常用的一種效果,如何把這種效果的漸變層次處理得更平滑、更自然一點(diǎn),就變得非常重要了。在CorelDraw中,獲得平滑的中間形狀的最好方法是以漸變控制物件作為開始,此漸變控制物件使用相同節(jié)點(diǎn)數(shù)量,并且是在相同的繪圖順序(順時(shí)針或者逆時(shí)針方向)下建立的。這樣做的話,需要通過修改第一個(gè)物件的拷貝來建立你的第二個(gè)物件。在第一個(gè)物件被選擇后,在數(shù)字鍵盤上按+鍵來復(fù)制它。把復(fù)制件放在一邊,選擇Shape工具,并且開始重新安排節(jié)點(diǎn)。如果你需要在這兒或那兒添加額外的節(jié)點(diǎn)來制造第二個(gè)物件(在CorelDraw中,你能在曲線上雙擊以添加節(jié)點(diǎn)),請同時(shí)在第一物件中添加相對應(yīng)的節(jié)點(diǎn)。如果你的形狀有許多節(jié)點(diǎn),你可以放置一個(gè)臨時(shí)性如圓圈一樣的標(biāo)識器在第一物件中鄰近節(jié)點(diǎn)的地方,也放置另一個(gè)標(biāo)識器在第二物件中鄰近對應(yīng)的節(jié)點(diǎn)的地方。

3、快速輸出結(jié)果。有人說,輸出結(jié)果不就是單擊一下“打印”按鈕就可以了,其輸出速度是不由人控制的。這話沒錯(cuò),不過在使用CorelDraw制作圖象,在列印輸出之前最好先檢查一下頁面,在非列印區(qū)的頁面上是否存放了很多暫存的物件,這些物件在列印輸出時(shí),雖然沒有實(shí)際被列印出來,但依舊會被計(jì)算處理,這樣計(jì)算機(jī)就要多花時(shí)間來處理,為此我們只要刪除掉這些暫存的物件,就能大大提高輸出的速度了。

二、技術(shù)方案

1、數(shù)據(jù)庫轉(zhuǎn)換。“CLGIS煤田測井綜舍解釋程序“所生成的DAT數(shù)據(jù)文件,包含有涮井參數(shù)曲線、砂泥孔隙百分比曲線、巖性柱狀等數(shù)據(jù)信息。經(jīng)過加密處理,只能由該系統(tǒng)讀取。CLGIS的DAT文件具有特廉的數(shù)據(jù)存儲方式及繁雜的數(shù)據(jù)結(jié)構(gòu)。據(jù)有關(guān)資料和實(shí)際操作可知,該文侔阻字節(jié)方式展開有以下特點(diǎn):(1)按結(jié)構(gòu)可分為兩大部分,第一部分為數(shù)據(jù)頭部分,定長數(shù)據(jù),主要存放數(shù)據(jù)庫名稱、曲線條數(shù)、各曲線名稱,曲線采樣開始結(jié)束潦度、數(shù)據(jù)存放起始指針等。第二部分為數(shù)據(jù)存放區(qū),該部分字節(jié)數(shù)由數(shù)據(jù)量的多少來確定。(2)按存取方式分類,為順序文件。以ASCII碼儲存文本。同時(shí)用二進(jìn)制形式、壓縮格式存儲教據(jù)。(3)數(shù)據(jù)依照深度順序連續(xù)存儲。沒有深度數(shù)據(jù)和分隔標(biāo)志。不論其文件類型,結(jié)構(gòu)如何,如果我們知道其每一我們所需信息,在文件中確切的儲存位置、存儲形式,可以用控制二進(jìn)制文件的方法,將其轉(zhuǎn)換為可供任意誦用的文車格式。

2、砂泥孔隙百分比含量繪圖。砂、泥、孔隙數(shù)據(jù)是百分比數(shù)據(jù),只需繪出砂泥曲線即可。泥曲線的橫向幅值應(yīng)為*.DAT數(shù)據(jù)文件中砂與泥幅值之和。由于砂泥含量圖形是不規(guī)則圖形,砂泥符號須用充填方法,曲線繪圖設(shè)計(jì)要將起止點(diǎn)閉合才能充填砂或泥符號。

測井巖性柱狀繪圖CI GIS解釋系統(tǒng)所生成的巖性文件(LYER),依次包含有柱狀起止深度、總層數(shù);每層的起止深度、巖性代碼(阿拉伯?dāng)?shù)字)。每一層數(shù)據(jù)用“0”隔開。每種巖性用VBA語言代碼編寫成子程序,以在繪制柱狀巖性時(shí)調(diào)用。

自編數(shù)字測井繪圖程序在地質(zhì)報(bào)告中的應(yīng)用

我們還編寫了“編制測井曲線柱狀圖”、“繪制測井曲線對比圖”;“繪制測井曲線煤層成果圖”;“繪制地質(zhì)、測井綜合柱狀圖”等程序。其中“繪制地質(zhì)、測井綜合柱狀圖”,是直接調(diào)用地質(zhì)野外記錄的電子文檔數(shù)據(jù),繪制地質(zhì)部分的巖芯描述,深度厚度,巖性名稱等。本程序人機(jī)交流界面方便靈活、繪制的圖件美觀,繪圖效率高,簡單易學(xué),實(shí)用性強(qiáng),有一定的推廣和實(shí)用價(jià)值。下圖是“繪制地質(zhì)、測井綜合柱狀圖”程序在《紅陽三礦深部勘探地質(zhì)報(bào)告》中繪制的“紅陽三礦深部1505號鉆孔綜合柱狀圖”的頭尾部分圖形。

四、以繪測井曲線成果圖”程序?yàn)槔喗槔L圖程序結(jié)構(gòu)

1、主控窗體。“繪測井曲線成果圖”程序由兩級窗體組成,第一級為主控窗,可分別點(diǎn)擊“數(shù)據(jù)庫文件轉(zhuǎn)換”,“繪測井曲線”“繪砂泥孔隙百分比”、“繪測井柱狀”按鈕,就可顯示第二級窗體,(圖略)若需終止程序運(yùn)行,點(diǎn)擊“退出”按鈕。

2、數(shù)據(jù)庫轉(zhuǎn)換程序窗體。當(dāng)點(diǎn)擊主控窗體“數(shù)據(jù)庫文件轉(zhuǎn)換”按鈕時(shí),則顯示相應(yīng)窗體,本程序設(shè)計(jì)每次可選擇轉(zhuǎn)換1~ 10 條曲線,“數(shù)據(jù)庫文件路徑”、“文本文件保存目錄”等文本框輸入的參數(shù)均可按所需改寫。轉(zhuǎn)換*.DAT 文件時(shí),如果庫中文件曾有被刪除,則必須用CLGIS 系統(tǒng)的PACK 命令壓縮數(shù)據(jù)文件后再轉(zhuǎn)換。

測井曲線繪圖窗體。當(dāng)點(diǎn)擊主控窗體“繪測井曲線”按鈕時(shí),則顯示相應(yīng)窗體。測井曲線繪圖是整個(gè)繪圖的關(guān)鍵,為適應(yīng)對比圖煤層成果圖,等不同圖件的需要,對曲線繪圖控制比較細(xì)致。繪制靈活方便,基本能滿足多種圖件的繪制需求。

砂泥孔隙百分比繪圖程序窗體。當(dāng)點(diǎn)擊主控窗體“繪砂泥孔隙百分比”按鈕時(shí),則顯示相應(yīng)窗體。同樣,窗體文本框輸入的參數(shù)可根據(jù)需要更改。程序運(yùn)行結(jié)束后,將砂泥區(qū)分別用作好的砂、泥圖形充填。

繪成果柱狀圖窗體。當(dāng)點(diǎn)擊控窗體“繪測井柱狀”按鈕時(shí),則顯示相應(yīng)窗體。文本框內(nèi)容修改完畢,點(diǎn)擊“開始”按鈕,程序?qū)⒄{(diào)用設(shè)計(jì)好的各種巖性子程序,按數(shù)據(jù)庫解釋時(shí)輸入的巖性代碼、繪制巖性柱狀;巖性名稱;底板深度;厚度。

參考文獻(xiàn):

[1] 孫宏利.測井曲線繪制系統(tǒng)[J]. 油氣田地面工程. 2007(03)

[2] 楊克敬,毛寶安,劉軍祥.自編測井繪圖程序在地質(zhì)報(bào)告中的應(yīng)用[J]. 地下水. 2007(05)

[3] 胡菊艷,郭鴻.測井曲線在許疃井田煤巖層對比中的應(yīng)用[J]. 中國煤炭地質(zhì). 2008(12)

[4] 常東,高占華,彭鴻鵠,張景考,靳彥彬.測井曲線在準(zhǔn)東煤田大井礦區(qū)一井田煤層對比中的應(yīng)用[J]. 中國煤炭地質(zhì). 2008(12)

篇6

辦公室里,小宇耷拉著腦袋站在我面前。我歷數(shù)他的不是。為什么不聽話?小宇一句話也不說。這時(shí),班長舉著一件作品趕來:“快看,這是在小宇書包里找到的,這哪算書法作品?簡直就是垃圾!”我一愣。“既然有作品,那為何不按時(shí)交上來?”我疑惑地問?!拔遥遗?,怕同學(xué)們笑話――”他的聲音在喉嚨里打轉(zhuǎn)??刹皇菃??字大小不一、歪歪扭扭的,筆畫也很不到位。我翻開欣怡的書法作品,我說:“你和欣怡是好朋友,仔細(xì)瞧瞧吧!為何人家的作品能獲得第一名,而你卻把字寫成這個(gè)樣子?這就叫差距!”“因?yàn)?,因?yàn)樗淖质羌议L幫他寫的――”小宇漲紅了臉。我愕然了?!八淖质羌议L幫他寫的,這是我親眼看到的。欣怡還說讓家長也給我寫一幅,保證能得獎的,我沒有要――”小宇慢慢地說。我疑惑地望著他?!拔覍?shí)在不想撒謊拿別人的作品冒充是自己的,那樣即使得了獎我心里也不踏實(shí)的!老師,您不是經(jīng)常教導(dǎo)我們要做一個(gè)誠實(shí)的人嗎?我做到了……”我沒想到會這樣。我呆呆地望著小宇,心中五味雜陳。

我想起當(dāng)初捧著作品時(shí)的贊不絕口,我說:“同學(xué)們真是太厲害了,恐怕老師也要苦練好多年才能達(dá)到這種水平呢!”我問,“是自己寫的嗎?”他們作謙虛狀:是別人指導(dǎo)的!其實(shí)我心里明白:三年級軟筆書法剛剛起步,在很多同學(xué)甚至連握筆姿勢都成問題的情況下,別人又該如何“指導(dǎo)”呢――關(guān)于這一點(diǎn),不光我明白,所有老師,包括作品展的組織者們也心中有數(shù),可是大家都默許這么做。組織領(lǐng)導(dǎo)們愿意這樣,因?yàn)閷脮r(shí)可以向社會、向上級展示,這就是我校藝術(shù)教育成果,連小學(xué)三年級的軟筆也有書法家的樣兒;老師們愿意這樣,別人都這樣,如果你不這樣,到時(shí)候眼瞅著大摞大摞的獲獎都流向別的班級,那豈不是自討沒趣;家長們也愿意這樣,別的孩子在“指導(dǎo)”后都拿出了像樣的作品,那自己也得跟上,哪怕是讓它變成“家長作業(yè)”又何妨;當(dāng)然,孩子們更愿意這樣,如果能輕輕松松得個(gè)獎,何樂而不為呢?于是,一年又一年,作品展上的軟筆精品數(shù)不勝數(shù)。我想起上午作品展上,別說三年級,就連小學(xué)二年級,甚至一年級學(xué)生不是都有絕妙的書法作品展示嗎?

可是,就偏偏有一個(gè)人不愿意這樣――小宇?!皩α?,家長讓我把這個(gè)交給您――”小宇說著,從衣兜里摸出一張小紙條――

老師,首先我替小宇向您表達(dá)深深的歉意――他總是與這個(gè)班級格格不入,以至于給您帶來了不少麻煩。這次軟筆書法作品展可能又讓您不愉快。本來,我是可以承擔(dān)責(zé)任幫助他的,可是他太固執(zhí),說什么也不讓,還說如果拿著家長的作品參展那是欺騙老師。我一再勸他別人都是這么做的,可他就是聽不進(jìn)去,他一定要自己完成。他的作品完成得太辛苦,每寫好一幅,他總是不滿意,于是又重寫一次,反反復(fù)復(fù),他一連寫了幾十幅。昨天,他一直寫到深夜,可是,早晨他還是沒有勇氣交上去……他一直都是這么特別,就說平時(shí)的家庭作業(yè)吧!有時(shí)候我們不在家,我們無法給作業(yè)簽名。我們叮囑他,讓他代替我們簽一下,可是他說那是欺騙老師,他不愿意那樣,他要做誠實(shí)的孩子;還有前幾天搜集花的事,我們一家人打著手電筒到小區(qū)里找花,結(jié)果一無所獲。最后我們說去花店買幾株花,可是他不愿意。他說寧可被老師批評,也不愿意欺騙老師……唉,他就是這樣一個(gè)孩子,真拿他沒辦法!

篇7

充分賞識孩子的優(yōu)點(diǎn)和進(jìn)步

成就感是怎樣形成的呢?人要看清楚自己,必須有一面鏡子。而孩子也一樣,他們需要一面鏡子及時(shí)將自己的狀況清楚準(zhǔn)確地反饋給他們,即獲得評價(jià)。積極的評價(jià)讓他們充滿自信,獲得成就感,消極的評價(jià)讓他們形成壓力,喪失成就感。

父母需要做一個(gè)有心人,注意觀察孩子在學(xué)習(xí)過程中的每一個(gè)進(jìn)步,小進(jìn)步小激勵(lì),大進(jìn)步大獎勵(lì),并及時(shí)作出表示,或者是一個(gè)眼神,一句贊揚(yáng)的話,一張表揚(yáng)性質(zhì)的紙條,等等。

為孩子提供充分的展現(xiàn)機(jī)會

個(gè)體的成就感,最根本的還是來自于對自我能力的認(rèn)識。當(dāng)孩子從實(shí)際活動中感受到自己能夠很好地完成任務(wù)時(shí),就能真切體會到一種”我能”的感覺。這種積極、愉悅的感受,即是獲得成就感,父母可以通過組織一些戶外活動,或者鼓勵(lì)孩子適當(dāng)參加社區(qū)活動等方式,為孩子提供展現(xiàn)自己能力的機(jī)會。另外,在孩子展現(xiàn)自己能力的過程中,也要善于引導(dǎo)他認(rèn)識到自己努力的方向,避免演變?yōu)椤皞儆馈笔降撵乓?/p>

對兒童的評價(jià),要依據(jù)兒童的標(biāo)準(zhǔn)

對孩子的要求和給予孩子完成的任務(wù)要符合孩子的發(fā)展水平,循序漸進(jìn)。例如,雖然孩子的曲目彈得不夠流暢,但對于一個(gè)7歲的孩子來說,已經(jīng)是很不錯(cuò)了。如果家長用成人的標(biāo)準(zhǔn)去評價(jià)、要求孩子,就必然導(dǎo)致指責(zé)多于表揚(yáng),并最終導(dǎo)致孩子的退縮甚至放棄。只有每次給予的任務(wù)都是孩子有所準(zhǔn)備的,讓孩子“跳一跳就能摘到蘋果”,這樣,孩子才會有信心。

注重過程,淡化結(jié)果,努力為孩子減少消極壓力

篇8

對不起。我不能再保護(hù)你們了。

因?yàn)?,我是冰族的二皇子?/p>

我是櫻空釋。

夢魘•星舊•星移

當(dāng)我來到刃雪城下時(shí),王和一個(gè)擁有很長的紅頭發(fā)的人,已經(jīng)倒在了地上。他們的身邊,開滿了紅蓮。 溫暖如春。

我明白了。

那個(gè)人就是那個(gè)勇猛的火族皇子。

就是櫻空釋。

王把他所有的靈力都給了櫻空釋。他只剩下短短的,可憐的頭發(fā)。櫻空釋的紅頭發(fā)間,也摻雜著一些銀發(fā)。

可是沒用了。他們都死了。

我絕望地走到他們面前。卻驚人地發(fā)現(xiàn),櫻空釋,他還沒死,他還擁有微弱的生命。

火族精靈已經(jīng)攻進(jìn)了刃雪城??墒撬麄?,望著倒下的櫻空釋,他們的首領(lǐng),呆住了。沒有了櫻空釋,他 們就沒有了一切。

刃雪城內(nèi)只剩下可憐的幾個(gè)弱小的巫師和劍士。可在現(xiàn)在卻是如此強(qiáng)大。因?yàn)闆]有了櫻空釋?;鹱寰` 們一個(gè)個(gè)倒下,倒下。我也用我所學(xué)會的最厲害的幻術(shù),對抗他們。

他們馬上就被我們消滅了。因?yàn)闆]有了櫻空釋。

誰都不會想到,是這些微不足道的巫師劍士,擊退了火族的攻擊。而靈力高強(qiáng)的月神、皇柝、潮涯、蝶澈,還有離鏡和剪瞳,卻全部滅亡。

多么可笑。就因?yàn)闆]有了櫻空釋。

我把王的遺體安葬在了皇宮的最底層。

望著此時(shí)的刃雪城,我想起了他的名字,黑色之城。

櫻空釋被我?guī)У搅搜╈F森林里。

櫻空釋依然昏迷不醒?,F(xiàn)在已經(jīng)是圣戰(zhàn)后的第三年了。

為什么會這樣?難道,櫻空釋就跟凡世里的人們說的,植物人一樣了嗎?

我登上了祭星臺。舉起我的落星杖。

星象混亂,混亂。我用我所有的靈力去解答這個(gè)問題。

占星中,我不斷地吐血,直到祭星臺上濺滿了我的血跡。

三天三夜的占星后,我終于知道了櫻空釋昏迷不醒的原因。

用隱蓮復(fù)活的人,見到把他復(fù)活的人時(shí),就會昏迷,昏迷。一直昏迷十年。十年之后,他將醒來。這時(shí),他就會忘記他今生所經(jīng)歷的一切,只記得他的前世所發(fā)生的事情。

刃雪城里,現(xiàn)在已經(jīng)沒有了王。雖然它只是一個(gè)水晶宮殿,淵祭的玩具,但也不能沒有人來管。這是王說的。在照顧櫻空釋的同時(shí),我管理著這個(gè)幾乎已經(jīng)破滅的帝國。我告訴臣民們,他們的王已經(jīng)死去。不過,王的弟弟,櫻空釋,在幾年之后,便會回來,繼承王位,管理這個(gè)帝國。他就是我們新的王。在他沒有回來之前,請讓我暫時(shí)管理。請讓我做個(gè)暫時(shí)的王。

我統(tǒng)領(lǐng)著全城人們,指揮他們重建自己的家園。刃雪城一天天回復(fù)原來的樣子……

在雪霧森林的一天天里,櫻空釋的紅頭發(fā)漸漸掉落。他的銀白色頭發(fā)漸漸露出來。他的瞳仁顏色漸漸變淡。

我知道,這意味著他的火系幻術(shù)正在漸漸消失。他的記憶正在漸漸消退。

他那精純的幻術(shù),就這樣一點(diǎn)點(diǎn)不見。不見。多么的悲哀。

十年終于過去了。櫻空釋已經(jīng)只剩下了銀白色的頭發(fā),長長的,非常純凈。只有我知道,這是他的哥哥 ,王留下的。他的瞳仁也變得像王一樣的清澈。像極了他的前世。沒有人會相信,他是火族的人。他是冰族 的幻術(shù)師。本來就是。

我知道,他現(xiàn)在只記得,他是櫻空釋,幻雪帝國的二皇子。他只會用那些冰族的幻術(shù),和 一點(diǎn)點(diǎn)火族的幻術(shù)。這個(gè)秘密只有我知道。

而這時(shí),刃雪城已經(jīng)如大戰(zhàn)之前,一樣的宏偉,壯觀。人們也恢復(fù)了平靜的生活,一切像什么都沒發(fā)生過。

櫻空釋蘇醒的那一天終于到了。

篇9

關(guān)鍵詞: 病毒 進(jìn)程間通信 程序自我保護(hù)

1.引言

在計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)日益發(fā)展的今天,病毒這個(gè)字眼越來越多地出現(xiàn)在了媒體和人們的言論中。計(jì)算機(jī)病毒的發(fā)展必然會促進(jìn)計(jì)算機(jī)反病毒技術(shù)的發(fā)展,新型病毒的出現(xiàn)向以行為規(guī)則判定病毒的預(yù)防產(chǎn)品、以病毒特征為基礎(chǔ)的檢測產(chǎn)品,以及根據(jù)計(jì)算機(jī)病毒傳染宿主程序的方法而消除病毒的產(chǎn)品提出了挑戰(zhàn),致使原有的反病毒技術(shù)和產(chǎn)品在新型的計(jì)算機(jī)病毒面前無能為力。這樣,勢必使人們認(rèn)識到現(xiàn)有反病毒產(chǎn)品在對抗新型的計(jì)算機(jī)病毒方面的局限性,迫使人們在反病毒的技術(shù)和產(chǎn)品上進(jìn)行新的更新和換代。要打敗對手,就要從了解對手開始,本文從模擬病毒隱藏性和寄生性的角度出發(fā),以進(jìn)程通信、進(jìn)程快照、多線程等技術(shù)基礎(chǔ),利用Visual C++的MFC窗口界面設(shè)計(jì)了一組程序自我保護(hù)軟件,經(jīng)過測試實(shí)現(xiàn)了程序的穩(wěn)定運(yùn)行。

2.進(jìn)程的概念

當(dāng)一個(gè)程序開始運(yùn)行時(shí),它就是一個(gè)進(jìn)程,進(jìn)程所指包括運(yùn)行中的程序和程序所使用到的內(nèi)存和系統(tǒng)資源。因此定義進(jìn)程(Process)是具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。程序只是一組指令的有序集合,它本身沒有任何運(yùn)行的含義,只是一個(gè)靜態(tài)實(shí)體。而進(jìn)程則不同,它是程序在某個(gè)數(shù)據(jù)集上的執(zhí)行,是一個(gè)動態(tài)實(shí)體。它因創(chuàng)建而產(chǎn)生,因調(diào)度而運(yùn)行,因等待資源或事件而被處于等待狀態(tài),因完成任務(wù)而被撤銷,反映了一個(gè)程序在一定的數(shù)據(jù)集上運(yùn)行的全部動態(tài)過程。

進(jìn)程由兩個(gè)部分組成:

(1)操作系統(tǒng)用來管理進(jìn)程的內(nèi)核對象。內(nèi)核對象也是系統(tǒng)用來存放關(guān)于進(jìn)程的統(tǒng)計(jì)信息的地方。

(2)地址空間。它包含所有可執(zhí)行模塊或DLL模塊的代碼和數(shù)據(jù)。它還包含動態(tài)內(nèi)存分配的空間,如線程堆棧和堆分配空間。

目前常用的操作系統(tǒng)都是并行的,就是多個(gè)進(jìn)程可以同步運(yùn)行,這時(shí)就會牽扯到進(jìn)程間通信這個(gè)概念。所謂進(jìn)程通信,就是不同進(jìn)程之間進(jìn)行一些“接觸”,這種接觸有簡單,也有復(fù)雜。機(jī)制不同,復(fù)雜度也不一樣。通信是一個(gè)廣義上的意義,不僅僅指傳遞一些信息。舉個(gè)例子來說明:比如說在使用IE上網(wǎng)時(shí),你想將網(wǎng)頁上的一段文字保存至你的電腦上,這時(shí)有一種簡單的方法,就是復(fù)制粘貼。將你想保存的文字選中,然后將其復(fù)制,接下來將所復(fù)制的文字粘貼到.TXT文檔中,這時(shí)就形成了兩個(gè)進(jìn)程之間的通信,這里的通信媒介是剪貼板。

3.線程的概念

為了對線程模式有一定的理解,我們可以將其想象為把一所屋子里的東西搬到另一所屋子。如果采用單線程方法,則需要自己完成從打包到扛箱子再到拆包的所有工作。如果使用單元線程模式,則表示邀請了好朋友來幫忙。每個(gè)朋友在一個(gè)單獨(dú)的房間里工作,并且不能幫助在其他房間工作的人。他們各自負(fù)責(zé)自己的空間和空間內(nèi)的物品搬運(yùn)。如果采用自由線程方法,仍然邀請相同的朋友來幫忙,但是所有朋友可以隨時(shí)在任何一個(gè)房間工作,共同打包物品。與此類似,房子就是運(yùn)行所有線程的進(jìn)程,每個(gè)朋友都是一個(gè)代碼實(shí)例,搬運(yùn)的物品為應(yīng)用程序的資源和變量。

有了上面的例子,便能容易理解線程(Thread)是一個(gè)能獨(dú)立于程序的其他部分運(yùn)行的作業(yè),是進(jìn)程的一個(gè)實(shí)體,是CPU調(diào)度和分派的基本單位。線程不能夠獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。線程是程序中的一個(gè)執(zhí)行流,每個(gè)線程都有自己的專有寄存器(棧指針、程序計(jì)數(shù)器等),但代碼區(qū)是共享的,即不同的線程可以執(zhí)行同樣的函數(shù)。一個(gè)線程可以執(zhí)行應(yīng)用程序代碼的任一部分,包括正在由另一線程執(zhí)行的代碼。

線程由兩個(gè)部分組成:

(1)線程的內(nèi)核對象,操作系統(tǒng)用它來對線程實(shí)施管理。內(nèi)核對象也是系統(tǒng)用來存放線程統(tǒng)計(jì)信息的地方。

(2)線程堆棧,它用于維護(hù)線程在執(zhí)行代碼時(shí)需要的所有參數(shù)和局部變量。

線程屬于一個(gè)過程,操作系統(tǒng)為每一個(gè)運(yùn)行線程安排一定的CPU時(shí)間――時(shí)間片,線程是操作系統(tǒng)分配CPU時(shí)間的基本單位。系統(tǒng)通過一種循環(huán)的方式為線程提供時(shí)間片,線程在自己的時(shí)間內(nèi)運(yùn)行,因時(shí)間片相當(dāng)短,因此,給用戶的感覺,就好像線程是同時(shí)運(yùn)行的一樣。如果計(jì)算機(jī)擁有多個(gè)CPU,線程就能真正意義上同時(shí)運(yùn)行了。

4.進(jìn)程與線程的關(guān)系

根據(jù)操作系統(tǒng)的定義,進(jìn)程是系統(tǒng)資源管理的最小單位,線程是程序執(zhí)行的最小單位。進(jìn)程是不活潑的,進(jìn)程可以理解為是線程的容器。若要使進(jìn)程完成某項(xiàng)操作,它必須擁有一個(gè)在它的環(huán)境中運(yùn)行的線程,此線程負(fù)責(zé)執(zhí)行包含在進(jìn)程的地址空間中的代碼。單個(gè)進(jìn)程可能包含若干個(gè)線程,這些線程都“同時(shí)”執(zhí)行進(jìn)程地址空間中的代碼。每個(gè)進(jìn)程至少擁有一個(gè)線程,來執(zhí)行進(jìn)程的地址空間中的代碼。當(dāng)創(chuàng)建一個(gè)進(jìn)程時(shí),操作系統(tǒng)會自動創(chuàng)建這個(gè)進(jìn)程的第一個(gè)線程,稱為主線程。此后,該線程可以創(chuàng)建其他的線程。

線程是屬于進(jìn)程的,它沒有自己的獨(dú)立的數(shù)據(jù)地址空間,線程運(yùn)行在進(jìn)程空間內(nèi),因此線程的切換速度比較快。同一進(jìn)程所產(chǎn)生的線程共享同一內(nèi)存空間,而這些線程的執(zhí)行由系統(tǒng)調(diào)度程序控制,調(diào)度程序決定哪個(gè)線程可執(zhí)行以及什么時(shí)候執(zhí)行線程。線程有優(yōu)先級別,優(yōu)先權(quán)較低的線程必須等到優(yōu)先權(quán)較高的線程執(zhí)行完后再執(zhí)行。當(dāng)進(jìn)程退出時(shí)該進(jìn)程所產(chǎn)生的線程都會被強(qiáng)制退出并清除。線程可與屬于同一進(jìn)程的其他線程共享虛地址空間、全局變量,以及該進(jìn)程所擁有的全部資源,包括打開的文件、信號標(biāo)志及動態(tài)分配的內(nèi)存等。但是其本身基本上不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的信息(如程序計(jì)數(shù)器、一組寄存器和棧)。

線程有點(diǎn)像進(jìn)程身體內(nèi)的細(xì)胞,我們通常聽過多進(jìn)程多線程,單進(jìn)程多線程。這就是說,一個(gè)系統(tǒng)內(nèi)有幾個(gè)進(jìn)程,如果進(jìn)程是多個(gè),就是多進(jìn)程的,如果進(jìn)程內(nèi)有多個(gè)線程,那就是多線程的,多進(jìn)程多線程的系統(tǒng)比單進(jìn)程多線程的系統(tǒng)速度慢,但是可靠性高。

5.程序的設(shè)計(jì)與實(shí)現(xiàn)

程序的自我保護(hù)是一個(gè)大的概念,其中有多種方式和手段來實(shí)現(xiàn)自身的保護(hù)。比如隱藏、自我復(fù)制、注冊為服務(wù),等等。我們實(shí)現(xiàn)的程序自我保護(hù)實(shí)際上是一個(gè)相互監(jiān)督的過程。其中包括了程序之間的監(jiān)督和報(bào)警,監(jiān)聽程序的隱藏與保護(hù)。

5.1監(jiān)督

所謂監(jiān)督,是利用進(jìn)程枚舉的方法,讓所有程序在運(yùn)行同時(shí)不停地對進(jìn)程列表進(jìn)行快照,并檢查目標(biāo)進(jìn)程是否存在的過程。

在Windows環(huán)境下可以通過調(diào)用ToolHelp API函數(shù)來達(dá)到枚舉系統(tǒng)進(jìn)程的目的。微軟的Windows NT開發(fā)小組因?yàn)椴幌矚gToolHelp函數(shù),所以沒有將這些函數(shù)添加給Windows NT,所以開發(fā)了自己的Process Status函數(shù),就是PSAPI。但是后來微軟已經(jīng)將ToolHelp函數(shù)添加給了Windows 2000。ToolHelp32庫函數(shù)在KERNEL32.dll中,它們都是標(biāo)準(zhǔn)的API函數(shù)。

ToolHelp32庫中有各種各樣的函數(shù)可以用來枚舉系統(tǒng)中的進(jìn)程、線程,以及獲取內(nèi)存和模塊信息。其中枚舉進(jìn)程只需用如下三個(gè)的函數(shù):CreateToolhelp32Snapshot()、Process32First()和Process32Next()。

使用ToolHelp32函數(shù)的第一步是用CreateToolhelp32Snapshot()函數(shù)創(chuàng)建系統(tǒng)信息“快照”。這個(gè)函數(shù)可讓你選擇存儲在快照中的信息類型。如果你只是對進(jìn)程信息感興趣,那么只要包含TH32CS_SNAPPROCESS標(biāo)志即可。CreateToolhelp32Snapshot()函數(shù)返回一個(gè)HANDLE,完成調(diào)用之后,必須將此HANDLE傳給CloseHandle()。

接下來是調(diào)用一次Process32First函數(shù),從快照中獲取進(jìn)程列表,然后重復(fù)調(diào)用Process32Next,直到函數(shù)返回FALSE為止。這樣將遍歷快照中進(jìn)程列表。這兩個(gè)函數(shù)都帶兩個(gè)參數(shù),它們分別是快照句柄和一個(gè)PROCESSENTRY32結(jié)構(gòu)。

調(diào)用完P(guān)rocess32First或Process32Next之后,PROCESSENTRY32中將包含系統(tǒng)中某個(gè)進(jìn)程的關(guān)鍵信息。它的具體內(nèi)容如下:

typedef struct tagPROCESSENTRY32{

DWORD dwSize;

DWORD cntUsage;

DWORD th32ProcessID;

DWORD th32DefaultHeapID;

DWORD th32ModuleID;

DWORD cntThreads;

DWORD th32ParentProcessID;

LONG pcPriClassBase;

DWORD dwFlags;

TCHAR szExeFile;

DWORD th32MemoryBase;

DWORD th32AccessKey;

}PROCESSENTRY32;

其中進(jìn)程ID就存儲在此結(jié)構(gòu)的th32ProcessID。此ID可以被傳給OpenProcess()API以獲得該進(jìn)程的句柄。對應(yīng)的可執(zhí)行文件名及其存放路徑存放在szExeFile結(jié)構(gòu)成員中。在該結(jié)構(gòu)中還可以找到其他一些有用的信息。

5.2報(bào)警

這里的報(bào)警就涉及了進(jìn)程間通信的概念。本文中涉及的進(jìn)程間通信是用剪貼板的方法,剪貼板在我們實(shí)際應(yīng)用中是用得比較多的,它實(shí)際上是系統(tǒng)維護(hù)管理的一個(gè)內(nèi)存區(qū)域,當(dāng)我們在一個(gè)程序中復(fù)制數(shù)據(jù)的時(shí)候,實(shí)際上是將這些數(shù)據(jù)放入了內(nèi)存,相反,當(dāng)我們在另一個(gè)程序中粘貼數(shù)據(jù)時(shí)實(shí)際上是從內(nèi)存取出數(shù)據(jù)。下面介紹一下使用剪貼板時(shí)的主要函數(shù):打開剪貼板OpenClipboard(),不管是對剪貼板的讀還是寫,都要首先調(diào)用此函數(shù),以判斷是否可以對剪貼板進(jìn)行操作。此函數(shù)是BOOL型的,如果調(diào)用成功就返回非零,否則返回零。清空剪貼板EmptyClipborad(),每次對剪貼板的寫入操作之前,都應(yīng)該調(diào)用此函數(shù),這個(gè)函數(shù)的作用不僅是清空剪貼板,而且起到獲得剪貼板的使用權(quán)的作用。同樣,這個(gè)函數(shù)也是BOOL型的,如果調(diào)用成功就返回非零,否則返回零。對剪貼板寫入SetClipboardData(UINT uFormat,HANDLE hMem),這個(gè)函數(shù)有兩個(gè)參數(shù),第一個(gè)參數(shù)用來表示寫入剪貼板數(shù)據(jù)的格式,第二個(gè)參數(shù)接收一個(gè)句柄值,在這里它接收一個(gè)指向內(nèi)存對象的句柄,這個(gè)內(nèi)存對象中存放著準(zhǔn)備寫入剪貼板的數(shù)據(jù)內(nèi)容。在調(diào)用SetClipboardData(UINT uFormat,HANDLE hMem)之前還需要調(diào)用GlobalAlloc(UINT uFlags,SIZE_T dwSytes)這樣一個(gè)函數(shù),它專門用來為將要寫入的數(shù)據(jù)分配一塊內(nèi)存空間。這個(gè)函數(shù)接收兩個(gè)參數(shù),第一個(gè)參數(shù)表示如何來分配內(nèi)存空間,這里我們將它設(shè)置為GMEM_MOVEABLE,表示動態(tài)分配內(nèi)存。第二個(gè)參數(shù)是表示分配內(nèi)存空間的大小。GlobalAlloc(UINT uFlags,SIZE_T dwSytes)返回一個(gè)句柄,我們無法使用句柄來間接的將數(shù)據(jù)放入內(nèi)存,這時(shí)就需要調(diào)用另一個(gè)函數(shù)GlobalLock(HGLOBAL hMem),這個(gè)函數(shù)獲得一個(gè)內(nèi)存對象的句柄,將這塊內(nèi)存加鎖,返回一個(gè)指針,這時(shí)我們就可以給指針?biāo)赶虻倪@塊內(nèi)存寫入數(shù)據(jù)了。這個(gè)函數(shù)使用一個(gè)內(nèi)存計(jì)數(shù),計(jì)數(shù)器基數(shù)為零,每調(diào)用一次計(jì)數(shù)器加一,所以每調(diào)用一次的同時(shí)還需要調(diào)用另外一個(gè)函數(shù)GlobalUnlock(HGLOBAL hMem)來給計(jì)數(shù)器減一,相當(dāng)于取消對這塊內(nèi)存的鎖定。本文設(shè)計(jì)的程序?qū)崿F(xiàn)報(bào)警功能就是在枚舉進(jìn)程之后發(fā)現(xiàn)目標(biāo)進(jìn)程被終止,從而在剪貼板中寫入信息的過程。

5.3監(jiān)聽

所謂監(jiān)聽,就是報(bào)警的反方向,即從剪貼板中讀出信息。從剪貼板讀取數(shù)據(jù)的函數(shù)GetClipboardData(UINT uFormat)。這個(gè)函數(shù)只接收一個(gè)參數(shù),參數(shù)指定讀取的格式。讀取信息之后,我們還要對信息進(jìn)行if判斷,如果信息是我們預(yù)留的某個(gè)進(jìn)程被結(jié)束的話,我們就啟動保護(hù)措施。

5.4保護(hù)和隱藏

這里的保護(hù)是指監(jiān)聽程序?qū)ζ渌绦虻谋Wo(hù),方法非常簡單,只需要利用WinExec函數(shù)來實(shí)現(xiàn)目標(biāo)進(jìn)程的啟動就可以。而隱藏是指監(jiān)聽程序自身的隱藏,只要在OnPaint()函數(shù)里調(diào)用ShowWindow(SW_HIDE)函數(shù)就可以了,同時(shí)將監(jiān)聽程序命名為smss,就可以避免其被強(qiáng)行終止。

6.結(jié)語

本文中程序的設(shè)計(jì)是模仿病毒的一些特性而做成的。它實(shí)現(xiàn)了程序的隱藏,并且利用了系統(tǒng)的漏洞實(shí)現(xiàn)了不被終止。對我們了解病毒的特征提供了良好平臺,同時(shí)對一般程序自我保護(hù)的設(shè)計(jì)有很好的現(xiàn)實(shí)意義。

參考文獻(xiàn):

[1]吳倩.一種進(jìn)程通信劫持技術(shù)的實(shí)現(xiàn)與應(yīng)用研究[J]中央民族大學(xué)學(xué)報(bào)(自然科學(xué)版),2007,(1).

[2]徐江峰,張戰(zhàn)輝,楊有.基于VC~(++)的進(jìn)程通信技術(shù)研究[J]計(jì)算機(jī)科學(xué),2007,(9).

[3]郭江平.Windows進(jìn)程通信技術(shù)分類[J]電腦編程技巧與維護(hù),2010,(2).

[4]馮德旺,蘭建容,寧正元.基于VC的剪貼板應(yīng)用程序[J]計(jì)算機(jī)應(yīng)用研究,2002,(7).

篇10

摘 要:針對地方院校程序設(shè)計(jì)課程存在的問題,在廣泛評估學(xué)生差異的基礎(chǔ)上,闡述該課程常規(guī)教學(xué)模式的缺陷,提出具有多個(gè)教學(xué)目標(biāo)的“自分類教學(xué)”教改方案。目前該課程被設(shè)置成雙平臺教學(xué)系統(tǒng),其教學(xué)效果經(jīng)權(quán)威考試評價(jià),都要優(yōu)于同期未試系統(tǒng),教學(xué)對一部分學(xué)生無效的狀況得到改善。

關(guān)鍵詞:自分類教學(xué);差異;平臺

作者簡介:朱騏,男,副教授,研究方向?yàn)橛?jì)算應(yīng)用與教學(xué);陳瑾,女,講師,研究方向?yàn)橛?jì)算應(yīng)用與教學(xué);張宏,男,講師,研究方向?yàn)橛?jì)算應(yīng)用與教學(xué)。

程序設(shè)計(jì)課程是我國高校理工科專業(yè)普遍開設(shè)的一門公共基礎(chǔ)課程,在經(jīng)歷二十多年的發(fā)展后,課程的模式已經(jīng)基本固定,但課程的魅力反而正在失去。近年各種質(zhì)疑接踵而來,如該課程“學(xué)以致用”嗎?“學(xué)而能用”嗎?鹽城工學(xué)院計(jì)算中心關(guān)于“大學(xué)計(jì)算機(jī)”課程的畢業(yè)調(diào)查顯示,這些質(zhì)疑來自各方,有畢業(yè)生,也有其他學(xué)科教師,另外,在校學(xué)生學(xué)習(xí)熱情普遍降低,這些情況在地方院校表現(xiàn)得非常明顯。

筆者認(rèn)為要挽回目前的頹勢,必須重新認(rèn)識該課程,引入更符合學(xué)生實(shí)際、操作性更強(qiáng)的自分類教學(xué)模式。自分類教學(xué)與在特殊教育中經(jīng)常采用的分類教學(xué)相似,但它更尊重學(xué)生的自主性。

1 自分類教學(xué)的科學(xué)依據(jù)

分類教學(xué)源于學(xué)生差異,自分類教學(xué)同樣如此。

1.1 學(xué)生差異的普遍性及評估

1.1.1 在校生的差異

資料顯示,目前人們討論學(xué)生差異,多針對于基礎(chǔ)教育和職業(yè)教育。而對于高等教育中的學(xué)生差異,比較完善的論述很少,局部性的討論偶見,且多著眼于人格、人生觀、城鄉(xiāng)等方面差異[1-2]。可是,筆者在教學(xué)實(shí)踐中強(qiáng)烈地感受到高等教育大眾化以來,地方院校普通本科生的差異正在逐年擴(kuò)大,這深刻地影響著教學(xué)活動與教學(xué)效果。

在學(xué)習(xí)程序設(shè)計(jì)課程時(shí),學(xué)生表現(xiàn)得最強(qiáng)烈的差異可以歸納為以下幾方面。

第一,能力差異。程序設(shè)計(jì)課程有三個(gè)特點(diǎn)。其一,邏輯性強(qiáng),需要數(shù)學(xué)知識和各種常識支持;其二,實(shí)踐性強(qiáng),需要高強(qiáng)度的上機(jī)練習(xí);其三,語法性強(qiáng),需要在理解基礎(chǔ)上強(qiáng)化記憶。因此邏輯能力、實(shí)踐能力、記憶能力俱佳的學(xué)生在學(xué)習(xí)這門課程時(shí)將會得心應(yīng)手??墒强陀^上學(xué)生的能力發(fā)展并不一致,能力差異既反映在能力綜合水平上,也反映在能力結(jié)構(gòu)上;隨著進(jìn)入高校就讀的學(xué)生一年年地增加,他們的能力綜合水平整體呈下降趨勢,能力結(jié)構(gòu)存在缺陷的學(xué)生也越來越多。

第二,興趣差異。“程序設(shè)計(jì)”是一件新事物,開始學(xué)習(xí)時(shí),多數(shù)學(xué)生對它都有一定興趣??墒菑慕逃睦韺W(xué)來理解,這種興趣屬于間接興趣,即對學(xué)習(xí)結(jié)果有所期待,它需要轉(zhuǎn)化為直接興趣才有意義。而直接興趣是在教學(xué)過程中產(chǎn)生的,是對所學(xué)材料的興趣;隨著其他差異造成學(xué)習(xí)效果的不同,一個(gè)人的直接興趣會朝著兩個(gè)方向變化:一個(gè)方向是激發(fā)、維持、增長;另一個(gè)方向是未產(chǎn)生、或無法維持、衰退;直接興趣差異因此出現(xiàn),反過來它再影響學(xué)習(xí)效果,形成循環(huán)。

第三,目標(biāo)差異。地方院校學(xué)生學(xué)習(xí)目標(biāo)差異近年來也在擴(kuò)大,一方面一部分學(xué)生積極進(jìn)取,學(xué)習(xí)上有所追求;另一方面校園內(nèi)廣泛存在“心不在焉一族”,課堂教學(xué)對之沒有效果。從宏觀來看,目標(biāo)差異是當(dāng)前地方院校教學(xué)活動大環(huán)境的構(gòu)成因素之一,從中觀、微觀來看,它又是一門具體課程間接興趣差異的主要來源。

面對較大差異而無對策,最終必然造成優(yōu)生、中等生和差生的全面分化。NCRE①二級是一種比較權(quán)威的考試,難度適中,可借用它來評估學(xué)生的分化。評估標(biāo)準(zhǔn)不妨設(shè)定為:首次參加考試即取得注有“優(yōu)秀”字樣合格證書的是優(yōu)生,取得一般合格證書的是中等生,而沒有取得合格證書的是差生。如果一個(gè)地方院校NCRE二級通過率位于同類院校上游水平,一般首次通過率會在60%~70%,按照上面的設(shè)定標(biāo)準(zhǔn),差生比例將高達(dá)30%~40%!可見在差異背景下常規(guī)教學(xué)模式效率不理想。

1.1.2 畢業(yè)生的差異

筆者曾經(jīng)對70位從事技術(shù)工作的畢業(yè)生進(jìn)行問卷調(diào)查,考察程序設(shè)計(jì)知識的應(yīng)用情況,調(diào)查顯示畢業(yè)生可以分成三種人群。

第一類人群:由需要應(yīng)用并能應(yīng)用的人組成;

第二類人群:由有機(jī)會應(yīng)用但沒有能力應(yīng)用的人組成;

第三類人群:由沒有機(jī)會應(yīng)用的人組成。

三類人群數(shù)量比例大約是5:8:7,能夠做到學(xué)以致用的只占25%,如果再考慮應(yīng)用的程度,則能做到深度應(yīng)用的畢業(yè)生將少之又少。這一比例也說明了:常規(guī)教學(xué)模式存在缺陷。

1.2 常規(guī)教學(xué)模式的缺陷

綜上所述,常規(guī)教學(xué)模式對地方院校普通本科學(xué)生存在著不適用性,追根溯源,它的缺陷有兩個(gè)。

第一,程序設(shè)計(jì)課程多年來一直都采用合班教學(xué),一個(gè)教師面對的學(xué)生通常有幾十到一百多個(gè)。如果集體中只有個(gè)別差生,教師會有精力依靠因材施教來解決他們的問題,但是實(shí)際情況并非如此,差生人數(shù)往往很多,在學(xué)進(jìn)度下,差生群體問題根本無法通過因材施教來解決。因材施教在合班教學(xué)中缺乏可操作性。

第二,長期以來,理工科專業(yè)程序設(shè)計(jì)課程的教學(xué)目標(biāo)是培養(yǎng)(業(yè)余)程序員,教學(xué)活動一廂情愿地追求編程能力的培育。由于沒有考慮學(xué)生的客觀差異和主觀需求,因此也就沒有區(qū)別教學(xué),結(jié)果欲高而不就,反而落得許多學(xué)生在該課程學(xué)習(xí)上一無所成。一方面,差生和部分中等生由于技術(shù)領(lǐng)悟力不足而未能登堂入室;另一方面,該課程在思維方式上對其他課程、學(xué)生未來也沒有任何給予。單一教學(xué)目標(biāo)與分化的學(xué)生之間存在著矛盾。

1.3 教學(xué)目標(biāo)需要多元化

從尊重學(xué)生主體地位出發(fā),解決問題必須從改革教學(xué)目標(biāo)入手。

首先,應(yīng)該改變觀念,承認(rèn)學(xué)生差異的普遍性及客觀存在性;承認(rèn)了這一點(diǎn),就意味著差異教學(xué)的必要性;否認(rèn)這一點(diǎn),則有效教學(xué)可能淪為空談。多種多樣的差異造就教學(xué)的生態(tài)環(huán)境,差異具有潛在性、不確定性和豐富性[3],這些特征保障了教師開展創(chuàng)造性教學(xué)活動所必須的可用資源[3]。

其次,加強(qiáng)學(xué)生的主體地位,溶入多元理念。常規(guī)教學(xué)目標(biāo)適用于綜合能力較強(qiáng)、興趣較大的學(xué)生,但是如果學(xué)生的某些能力不足、或?qū)W習(xí)目標(biāo)未及、或?qū)W習(xí)興趣未至,教學(xué)目標(biāo)可以退一步,把課程作為通識教育的一個(gè)平臺,致力于使學(xué)生利用不同的思維方式發(fā)展思辨能力。課程擁有多個(gè)教學(xué)平臺,對應(yīng)于不同教學(xué)目標(biāo),讓學(xué)生自由選擇,這就是自分類教學(xué)。因?yàn)閷W(xué)生擁有了相當(dāng)?shù)淖?,自分類教學(xué)相比特殊教育中的分類教學(xué)有更大的靈活性;與分層教學(xué)(分層操作通常采取學(xué)習(xí)水平分層,而不是自愿,因此對學(xué)生心理易造成不良影響[1])也完全不同。自分類教學(xué)不是在課堂教學(xué)中才承認(rèn)差異,而是在課堂教學(xué)前就承認(rèn)差異,預(yù)見性、針對性比自然分材教學(xué)也要高。

2 自分類教學(xué)的操作思路

2.1 雙平臺教學(xué)系統(tǒng)

程序設(shè)計(jì)課程擁有三到五個(gè)教學(xué)平臺,因材施教的可行性將極大提升,可取得非常好的教學(xué)效果;但是兼顧資源配置,并考慮積累經(jīng)驗(yàn)也是實(shí)驗(yàn)的目的之一,所以為課程設(shè)置下面兩個(gè)教學(xué)平臺是比較合適的:能力型平臺、通識型平臺。

教學(xué)平臺不同,價(jià)值取向、內(nèi)容重點(diǎn)隨之不同。能力型平臺的算法邏輯性特征明顯,以求得對實(shí)際問題的技術(shù)性解決能力;而通識型平臺的基礎(chǔ)邏輯性特征明顯,立足于掌握編程知識內(nèi)含的思維方式。

2.2 學(xué)生擁有自

人才培養(yǎng)是高校與學(xué)生在充分溝通的基礎(chǔ)上雙向選擇、共同適應(yīng)、雙向努力的過程,學(xué)生在教學(xué)中必須擁有一定的自,即對教學(xué)過程中那些事關(guān)自己成長過程、職業(yè)基礎(chǔ)、前途命運(yùn)的教學(xué)要素享有一定程度的知情權(quán)、參與權(quán)、選擇權(quán)。程序設(shè)計(jì)課程改革中學(xué)生“三權(quán)”應(yīng)有如下含義。

知情權(quán):學(xué)生首先應(yīng)該了解課程的基礎(chǔ)價(jià)值、職業(yè)價(jià)值;其次應(yīng)該知道為什么要設(shè)立兩個(gè)教學(xué)平臺,以及它們在教學(xué)目標(biāo)、內(nèi)容特征、教學(xué)方式上的差異。教師有義務(wù)告知學(xué)生課程的這些基本信息。

參與權(quán):學(xué)生在學(xué)習(xí)過程中的要求、學(xué)習(xí)結(jié)束后的意見應(yīng)被尊重并處理。

選擇權(quán):在知情權(quán)得到保障情況下,學(xué)生根據(jù)自己意愿自由選擇平臺,在教學(xué)過程中可以調(diào)換平臺。

2.3 能力型平臺方案

在教學(xué)目標(biāo)上追求應(yīng)用能力發(fā)展、培養(yǎng)業(yè)余程序員。能力的核心是“四會”,所謂“四會”就是:會思考、會運(yùn)用、會借鑒、會查資料。會思考就是掌握分析方法,能夠舉一反三;會運(yùn)用則是掌握實(shí)現(xiàn)方法,通過學(xué)習(xí)與模仿,能夠創(chuàng)新;會借鑒指的是有能力利用一切已有的、成熟的或不成熟的設(shè)計(jì)成果,來構(gòu)建自己的系統(tǒng);會查資料指的是有能力通過查閱各種資料來解決實(shí)際問題,并且查閱資料成為一種工作習(xí)慣。

在教學(xué)內(nèi)容上強(qiáng)調(diào)算法邏輯性特征,圍繞實(shí)際問題開展教學(xué)。這是因?yàn)椋簩?shí)際問題往往規(guī)模大,需要多方把握,能拓寬視野,提高掌控全局的能力;實(shí)際問題也比較真實(shí)、直觀,學(xué)生能找到應(yīng)用價(jià)值,易產(chǎn)生興趣和成就感;實(shí)際問題伸縮性強(qiáng)、挖掘潛力大,能鍛煉學(xué)生的創(chuàng)新能力。

教學(xué)方式采用任務(wù)驅(qū)動。在計(jì)算機(jī)領(lǐng)域的一些課程教學(xué)中,任務(wù)驅(qū)動方式的教學(xué)實(shí)驗(yàn)已進(jìn)行了十余年,不乏成功的案例[4]。“四會”能力培育必須依賴實(shí)踐,教學(xué)內(nèi)容與實(shí)踐內(nèi)容是同一的。任務(wù)驅(qū)動尤其適用于實(shí)踐途徑的能力型教學(xué)目標(biāo),每一個(gè)實(shí)際問題都通過任務(wù)驅(qū)動方式在實(shí)踐中加以解決。任務(wù)驅(qū)動的教學(xué)必須達(dá)到:第一,合理設(shè)計(jì)任務(wù),激發(fā)學(xué)生興趣,將驅(qū)動學(xué)生的外動力轉(zhuǎn)變成學(xué)生自己內(nèi)在的求知欲望;第二,細(xì)節(jié)因問題而存在,無關(guān)當(dāng)前問題的細(xì)節(jié)可以暫時(shí)忽略,這樣抓大放小的策略有利于學(xué)生快速入門,也能保護(hù)學(xué)生的初始興趣;第三,通過閱讀程序逐步進(jìn)入了發(fā)現(xiàn)問題、解決問題的學(xué)習(xí)模式。

開卷考試??荚噧?nèi)容同樣也立足于實(shí)際問題,是設(shè)計(jì)型的;考試用時(shí)要寬松,讓學(xué)生有充裕的時(shí)間思考、規(guī)劃、設(shè)計(jì)與調(diào)試;在考試中,允許查閱資料和借鑒已有成果;在評分上向創(chuàng)新傾斜,讓考試更像是一場創(chuàng)新競賽。

2.4 通識型平臺方案

教學(xué)的主要目標(biāo)是讓學(xué)生掌握課程特有的思維方式?!霸谕ㄗR教育模式下,學(xué)生需要綜合、全面地了解人類知識的總體狀況(包括主要知識領(lǐng)域的基本觀點(diǎn)、思維方式和歷史發(fā)展趨勢)[5]?!庇?jì)算機(jī)科學(xué)是新興科學(xué),其知識堪稱人類最新思維成果。作為計(jì)算機(jī)科學(xué)最重要的基本課程,程序設(shè)計(jì)思維方式內(nèi)涵豐富,向?qū)W生介紹這些思維方式,并不直接為學(xué)生將來的職業(yè)活動做準(zhǔn)備,只是要提高科學(xué)素養(yǎng)。

教學(xué)內(nèi)容強(qiáng)調(diào)基礎(chǔ)性邏輯特征。旨在宏觀把握課程的基礎(chǔ)原理、中觀掌握課程的基本方法,至于微觀的技術(shù)細(xì)節(jié)則適當(dāng)了解。因此理論教學(xué)只求邏輯通曉,不求技術(shù)深入;實(shí)驗(yàn)教學(xué)只求簡單驗(yàn)證,不求復(fù)雜應(yīng)用。

在教學(xué)方式上,以概念為中心開設(shè)專題,強(qiáng)調(diào)討論。具體做法是:第一,將課程分解成若干專題,每一專題針對于一個(gè)或一組宏觀或中觀問題,專題之間通過邏輯演進(jìn);專題不是任務(wù),任務(wù)是實(shí)際案例的分解,而專題是概念體系的分解。第二,采用“征引加討論”的教學(xué)手段,即通過與日常生活中的事理進(jìn)行類比,把抽象的邏輯搞清楚,它應(yīng)該由教師先做,然后再交給學(xué)生討論,集思廣益。第三,可廣泛采用觀摩方法實(shí)施案例教學(xué),這樣既能深化理解,又能激發(fā)興趣。但是觀摩一定要控制細(xì)節(jié)講解,否則便會陷入技術(shù)的泥流之中,違背教學(xué)目標(biāo)。第四,在各專題的實(shí)驗(yàn)教學(xué)中,驗(yàn)證也應(yīng)該圍繞邏輯,技術(shù)細(xì)節(jié)的展開要適可而止。

考試內(nèi)容要體現(xiàn)基礎(chǔ)邏輯性高這一特征。

3 自分類教學(xué)實(shí)驗(yàn)

3.1 實(shí)驗(yàn)步驟

以我校化生學(xué)院2008級5個(gè)班為實(shí)驗(yàn)班級,參與學(xué)生155人,任課教師3人。工作周期分為五個(gè)階段:宣講、試聽、選擇、教學(xué)、評價(jià)。

宣講:教師告知學(xué)生關(guān)于課程的基本信息;試聽:提供10節(jié)課的時(shí)間讓學(xué)生試聽,權(quán)衡比較,分析自己的趣向和適應(yīng)性,教師也根據(jù)實(shí)際情況提供參考意見;宣講、試聽都是學(xué)生知情權(quán)的落實(shí)。選擇:讓學(xué)生選擇一個(gè)平臺;教學(xué):開展教學(xué)活動,此時(shí)學(xué)生依然能夠重新選擇平臺;選擇與教學(xué)都是學(xué)生選擇權(quán)、參與權(quán)的落實(shí)。評價(jià):分為二步,首先,組織校內(nèi)考試,檢驗(yàn)教學(xué)效果;其次,與校外考試接軌,組織能力型平臺的學(xué)生參加NIT②C類模塊考試、通識型平臺的學(xué)生參加NCRE二級考試,通過與未實(shí)驗(yàn)教學(xué)系統(tǒng)的對比,取得教學(xué)效果的權(quán)威評價(jià)。

3.2 實(shí)驗(yàn)情況及效果

兩個(gè)平臺實(shí)驗(yàn)情況見表1。綜述如下:第一,能力型平臺“最終人數(shù)”比“選擇人數(shù)”減少8人,退出的原因是不適應(yīng)該平臺的學(xué)習(xí)強(qiáng)度與節(jié)奏。第二,能力型平臺NIT(C類VB模塊)考試成績優(yōu)異,為省內(nèi)歷年罕見,有關(guān)學(xué)生普遍反映收獲大、信心足。第三,通識型平臺NCRE二級考試一次通過率較高,優(yōu)于同期未試教學(xué)系統(tǒng)(同期全體普通本科生一次通過率為63.1%)。第四,筆者必須提示:通識型平臺促進(jìn)貫通,只能依靠潛移默化,遠(yuǎn)期成果更具有價(jià)值,但考試不能反映出這一點(diǎn)。第五,在各平臺的實(shí)驗(yàn)教學(xué)中,都廣泛開展了互助學(xué)習(xí),能力型平臺還開展了研究性學(xué)習(xí)活動,“共振效應(yīng)”普遍顯現(xiàn),有力地推動了教學(xué)。

4 結(jié)語

在學(xué)生差異較大的背景下,地方院校程序設(shè)計(jì)課程常規(guī)教學(xué)模式已經(jīng)暴露出不適用性,從尊重學(xué)生的主體地位出發(fā),多個(gè)教學(xué)目標(biāo)的自分類教學(xué)模式勢在必行。經(jīng)權(quán)威考試評價(jià),雙平臺教學(xué)系統(tǒng)的各平臺教學(xué)效果都要優(yōu)于同期未試系統(tǒng),教學(xué)對一部分學(xué)生無效的狀況得到了改善。

參考文獻(xiàn):

[1] 周光明,彭. 尊重差異因材施教構(gòu)建“和諧”教學(xué)新模式[J]. 中國大學(xué)教學(xué),2007(6):69-71.

[2] 錢軍平. 論基于生源差異的高等教育有效質(zhì)量保障策略[J]. 河北科技大學(xué)學(xué)報(bào):社會科學(xué)版,2009(1):89-95.

[3] 程向陽. 論學(xué)生差異資源的教育學(xué)價(jià)值[J]. 當(dāng)代教育科學(xué),2005(15):14-17.

[4] 祁云嵩,華偉. 任務(wù)驅(qū)動式教學(xué)方法應(yīng)用研究[J]. 教材與教法研究,2008(12):119-120.

[5] 陳向明. 對通識教育有關(guān)概念的辨析[J]. 高等教育研究,2006(3):64-68.

The Self-Assorting Teaching of the Programming Course

ZHU Qi, CHEN Jin, ZHANG Hong

(Computer Center, Yancheng Institute of Technology, Yancheng 224002, China)