可视化编程的概念与方法》教学设计

2024-04-12

可视化编程的概念与方法》教学设计(通用8篇)

篇1:可视化编程的概念与方法》教学设计

《可视化编程的概念与方法》教学设计

执教:北京市顺义区第一中学 屈海方 指导:北京市顺义区教研中心 马志忠 刘秀旺

【导读】

在VB教学过程中,教师往往为了传授知识而设计一些与学生生活实际脱离的任务,学生普遍反应对所学的内容不感兴趣,学习热情不高。本课的教学任务精心设计,由学生的学习生活中提炼出来,大大激发了学生的学习欲望。本课在培养学生的学习兴趣有所突破。

【教材内容分析】

本课使用的教材是广东教育出版社出版的《算法与程序设计》信息技术(选修1)。

本节内容为该书的第三章第一节课,但在实际教学过程中将其调整为第二章第一节课。主要内容是对可视化编程中的对象、属性、方法事件等概念的讲解。在学习了这些概念后学生在上课时不仅知道了这些专业术语,同时也能掌握代码的书写位置和书写格式。为后面的教学奠定坚实的基础。

【学生情况分析】

本课教学对象为高一学生。经过第一章的学习,学生已经熟悉Visual Basic 6.0的环境界面,对代码的书写有简单认识。另外高一学生具有思维活跃、想象力丰富、学习欲望强的学习特点,【教学设计思路】

依据新课标中提出“强调问题解决,倡导运用信息技术进行创新实践活动”的理念。以学生为主体,结合高中学生的生活和学习实际设计问题,让学生在感受与体验的过程中构建知识结构,掌握程序设计中的概念,并将所学的知识积极地应用到解决学习、生活等实际问题中。

【教学方法】

任务驱动、演示法、讲解法。

【教学资源】

教学演示文稿(PPT)、记事本小程序(EXE)和源代码

【教学目标】

一、知识与技能目标

1.能够结合日常生活中的具体事例分析说出它的属性、方法、事件,从而加深对属性、方法、事件概念和关系的理解。

2.能够利用控件工具在窗体上创建命令按钮、文本框等对象,并学会通过属性窗口修改对象的Caption、Text属性值。

3.能够正确书写鼠标单击事件过程的程序代码(书写位置和书写格式)。

二、过程与方法

1.通过教师以生活中的手机为例进行讲解,明白对象、属性、方法、事件的概念。

2.通过制作简单记事本小程序,体会VB中对象、属性、方法、事件之间的关系。

三、情感态度与价值观

1.由日常生活中的具体实例的讲解引出计算机中的概念,形成运用已有知识领悟新知识的习惯。

2.通过制作简单记事本实例,体验编程带来的成就感,激发学生学习VB编程的兴趣。

【教学重点】

1.对象、属性、方法、事件等概念。

2.属性、方法代码的语法格式和书写方法。

【教学难点】

对象、属性、方法、事件概念之间的关系。

【教学过程设计】

环节一 引入环节

教师:同学们都用过word软件进行文字编辑,word软件具有很强大的编辑功能。比如,点击加粗命令按钮,文字就加粗了,点击倾斜命令按钮,文字就变倾斜了。本节课的任务就是和老师一起编写一个记事本小程序。

教师:这是我用VB编写的一个小程序,请看大屏幕。如果单击这个命令按钮(显示文字为B的命令按钮)文本框中的文字会加粗。如果单击这个命令按钮(显示文字为I的命令按钮)文本框中的文字会„„(让学生自己说)

学生:文字变倾斜(同学表现出很新奇的样子)

教师:单击这个命令按钮(显示文字为颜色的命令按钮)可以改变文字的颜色。在制作之前,大家先来学习几个概念。

环节二 讲解对象的属性、方法、事件概念

教师:在现实生活中把这种看得见摸得着的物体叫做什么?(教师同时指着黑板,课桌椅)

学生:实物„„物体„„东西„„(学生列举了很多种称呼)

教师:我们也可以把它们称之为对象。对象是人们要进行研究的任何事物,从最简单的整数到复杂的物体均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件等等。(写板书:对像──研究的事物)

教师:这个手机(两款手机之一)是不是一个对象?

学生:是。

教师:这个手机(另一款式的手机)也是一个对象。尽管都是对象,我们还是可以区分它们,请大家仔细观察一下这两个对象,从外观上描述一下这两个对象有什么不同?

学生:手机的颜色不同,样式不同一个翻盖的另一个是直板的,品牌也不同„„。(写板书:颜色、样式、品牌„„)

教师:手机的颜色、样式、品牌等等这些被称之为对象的属性。换句话说也就是它的性质。(写板书:属性──性质)

教师:在购买手机的时,不仅关注它的外观,还会关心手机的„„(让学生接着往下说)

学生:功能

教师:这个手机都有什么功能 ?

学生:发短信、接电话、打电话、拍照„„(写板书:发短息、接打电话、拍照„„)

教师:把对象具有的功能被称之为对象的方法。(写板书:方法──功能)

教师:(演示)如果我用这个手机给它(另一款手机)打电话,它会有什么反应?(教师现场操作,其中一手机响铃了)

学生:手机铃响了。

教师:它为什么响铃了?因为有电话打入了。还可以这样描述:手机在来电这件事情的刺激,做出了响铃的反应。把对象受到的外部给它的刺激称之为对象的事件。(写板书:事件──刺激)

教师:举个例子,(从背后轻拍了某位同学的肩膀,同学回头看了我一眼)在他被拍了回头看了我一眼这个过程中,谁受到了刺激谁作出了反应?

学生:张扬(学生名)受到了刺激,张扬作出了反应。

教师:刚才的这两个例子都是同一个对象受到刺激作出反应。再举一个例子,开关被按下去了,灯亮了。不考虑开关和灯之间的联系,从表面上看谁受到了刺激,谁作出了反应。(举这个例子是为了帮助学生理解后面的鼠标单击按钮,文本框中的文字发生改变过程中,事件作用在哪个对象上,哪个对象做出反应)

学生:手„„灯„„开关(学会回答不准确)

教师:从刚才的现象分析,我们看到的效果是灯亮了。如果开关不被按下去灯是不会亮的,灯亮了只是一个结果。所以在刚才这个过程中应该是开关受到了刺激,灯做出了反应。(空几秒钟给学生思考)

通过对这两个例子的分析,可以归纳出:可以同一个对象受到刺激作出反应;还有可能是一个对象受到刺激,另一个对象作出反应,但是两个对象之间有关联的。例如,开关和灯之间就是有电线连接的。

环节三 结合小程序理解概念

教师:刚才结合生活中的例子对对象、属性、方法、事件的概念有了一定的了解,下面结合本节课任务进一步学习这些概念在VB中是如何体现的。请把Visual Basic打开。

打开VB以后,首先看到这个灰色窗体就是一个对象。除了窗体对象外,还可以利用左侧的工具箱中的工具创建新的对象。结合今天的任务,我们还需要创建一个文本框对象和三个命令按钮对象。

教师:首先选中控件工具箱中的工具,然后将指针放到窗体上,会发现指针变成了十字形,按住鼠标左键不要松手拖动鼠标,就创建了相应的对象。请大家按照此方法,依次在窗体中创建所需要的四个对象。

学生:(按照教师说的方法完成四个对象的创建)

教师:对象是有属性的,我们可以通过右下角的属性窗口来修改对象的属性值。

教师:目前一共有五个对象。而属性窗口只有一个,属性窗口究竟从属于哪个对象?

教师:在VB中遵循这样一个原则,要修改哪个对象的属性值就先选中这个对象,属性窗口就会对应的显示选中对象的属性。命令按钮上一般都有一些文字,对使用者有提示作用,可以通过修改命令按钮的Caption属性值来修改命令按钮上面显示的文字。

学生:(学生修改三个命令按钮的Caption属性值,做的快的同学尝试修改文本框中显示的内容)

教师:(小结)可以通过修改文本框的text属性值来修改文本框显示的文字。

教师:(运行程序发现不能达到想要效果)需要添加代码后才能达到预想的效果。进入代码编辑状态。分析任务,我们的愿望是单击这个命令按钮(显示文字为B的命令按钮),文本框中的文字就变粗体了。这个命令按钮叫什么?

学生:B、B按钮(此时,学生还不知道对象的名称)。

教师:这个命令按钮是叫B吗?在VB中每个对象都有自己的名称。怎样知道每个对象的名称呢?首先要选中这个命令按钮,<名称>属性后面的值就是它的名字。这个命令按钮的名称是Command1。牢记每个对象的名称,对编写代码是非常重要的,现在我们来看下每个对象的名称都是什么。

学生:(和老师一起逐一查看每个对象的名称并牢记对象的名称)

教师:我们的愿望是单击Command1命令按钮后文本框中的文字就变粗体了。在这个过程中,谁受到了的刺激,谁做出了的反应?(这样问的目的是使学生跟前面的问题相联系)

学生:Command1受到了刺激,text1做出了反应。

教师:Command1受到了怎样的刺激,text1做出了怎样的反应?

学生:Command11被鼠标单击了,text1中的文字变粗了。

教师:这个过程如何通过代码来实现?首先在通用菜单下找到Command1。在英文中表示“单击”的单词是Click。然后在声明菜单中找到click事件,在这里默认的就是Click事件。Text1中的文字做出了加粗的反应,通过修改Text1的一个属性值实现文字变粗的效果。对象的(重音强调)属性,“的”我们用“.”来代替。在英文中“字体”的单词是Font,“加粗”单词是Bold合在一起就是FontBold。现在明白为什么在word中为什么用B来表示文字加粗了吧,表示文字倾斜的是那个属性?(同时在教师机上写代码,当按下“.”后悬浮菜单展开)

学生:FontItalic(学生可能不清楚表示倾斜的单词,但是知道Word软件中I按钮来控制文字是否倾斜,所以对照着悬浮菜单学生知道是FontItalic属性)

教师:现在体现出学习英语的重要性了。代码写完整Text1.FontBold=True。请分别完成Command1_Click事件过程代码和Command2_Click事件过程代码。

学生:(积极地编写代码,很快就有人写完了,写的快的同学尝试写Command3的Click事件过程代码但未成功)

学生甲:(在讲台前展示自己写的代码,并讲解)

教师:学生甲做的非常好,看来这两个按钮的事件过程代码大家都会写了。巡视中发现很多同学都在尝试写Command3_Click事件过程的代码了,要想实现打开颜色对话框改变字体颜色的效果目前拥有的五个对象都不具备这个功能,换句话说这五个对象都不具备打开颜色对话框的方法,要实现弹出颜色对话框还需要添加另外一个对象。

教师:首先找到Microsoft Common Dialog Control 6.0控件,在控件工具箱上单击鼠标右键在弹出的对话框中选择“部件”,接着在弹出的窗口中选择“Microsoft Common Dialog Control 6.0”。单击确定,完成控件的添加。第二,在控件工具箱中选中该控件,在窗体上创建新的对象──CommonDialog1。

学生:(跟着教师的讲解,一步步完成操作)

教师:利用CommonDialoge1的showcolor方法来打开颜色对话框,代码如何书写呢?同样用“.”来连接对象名和方法名。CommonDialog1.ShowColor。

学生:(按照教师的讲解添加代码commdialog1.ShowColor,并观察运行结果,发现虽然颜色对话框可以打开,但是文本框中的文字却不改变颜色)

教师:大家在运行程序后发现文字的颜色并没有改变,为什么呢?CommonDialog1的ShowColor方法只是实现了打开颜色对话框,而要想Text1中文字颜色的改变,还需要修改Text1的ForeColor属性值。代码如下:

CommonDialog1.ShowColor

Text1.ForeColor= CommonDialog1.Color

学生:(按照讲解完成代码编写,并运行程序查看是否正确,完成快的同学帮助未完成的同学)

教师总结(幻灯片):

1.对象。

在VB中除了窗体对象外,还可以通过控件工具箱创建新的对象。

2.属性。

今天这节课上我们学习了两种修改属性值的方法。

①可以在属性窗口中修改对象的属性值

②可以在编写代码后程序运行时修改属性值。格式为:对象名.属性名=属性值()

3.事件。一般就是指鼠标或键盘等事件,可以在过程的下拉命令按钮中找到。格式为:对象名_事件名

4.方法。指对象所具有的功能。语法格式为:对象名.方法名[参数]

5.属性和方法的语法格式的区别。虽然属性名和方法名与对象名之间都用“.”来连接,但属性名后面有“=”。而方法名后面一般会有参数而没有“=”。

环节四 细节完善(提高任务)

教师:巡视时有人问我,“为什么我们按钮上面显示的文字样式怎么和您的不一样呢?”可是我看到咱们班安顿同学和我制作的样式是一样的,我们请安顿同学给大家讲讲他是怎么做的?

安顿同学:除了需要修改命令按钮的Caption属性外,我们还要修改命令按钮Font属性的属性值。单击Font属性右侧的按钮,在弹出的对话框中修改字体样式。

学生:(同学按照安顿的讲解,完善自己的小程序)

【课后反思】

本节课紧紧围绕记事本小程序展开,以手机为例使学生对对象、属性、方式、事件等概念有了感性的认识,然后在进入到VB的世界,进一步加深对这些概念的理解。

1.兴趣是最好的老师

新课程的一个重要理念是改变以往课堂结构中单纯以教师的教为主,学生只是被动接受的教学格局,教学的关键是调动学生学习的积极性、主动性,主动的去学习、思考和探究。本节课中的任务大大调动了学生的积极性。本节课上一开始就给学生展示了一个记事本小程序,在展示完程序所具有的“神奇”功能后,学生对此产生了浓厚的学习兴趣。由教学实践来看,本节课上学生表现出了很强的求知欲。写完Command1_Click和Command2_Click事件过程的代码后,学生积极主动的开始思考写下个过程代码如何书写,尤其是更改文本框字体颜色这部分代码,动作快的学生主动尝试代码的编写,并在课堂上就要求老师快点讲,快点讲。本节课上充分展现了学生的自主学习,由被动学习变为了主动学习。

2.知识讲解也采用“任务驱动”

本节课中对对象的Caption属性和名称属性的讲解有了小小的尝试。由于他们默认的属性值是相同的,为了将他们加以区别在以往的上课时我总是对比着讲这两个属性,结果事与愿违,学生反而将这两个属性混淆起来了。而这次我做了小小的改进:首先在界面设计时,我强调一般命令按钮上会显示一些提示性文字,我们可以通过修改他的Caption属性来修改这些提示性文字。对象的名称属性并没有马上讲解,而是在需要写代码时我才提问“鼠标单击那个命令按钮„„”学生一般会用命令按钮上显示的文字来称呼这个命令按钮,这时我紧紧的抓住他们的回答反问到“这个命令按钮上显示的文字是‘B’,那它就叫B吗?每个对象都有自己的名字,„„”此时才引出对象的名称属性。通过这样的改进不仅将名称属性和Caption属性的含义表述清楚了,而且学生很容易的将两者区分出来了。

3.将抽象的概念通俗化

概念的讲解一直是我多年来对头痛的事情,对概念的理解是一个自身领悟的过程。

上课时我总是为了能让学生明白某个概念的含义而冥思苦想我应该用什么样的语言来描述这个概念的含义。上完本次课后,我体会到由学生易懂的知识入手,然后在迁移到枯燥难懂的知识上来。不仅便于学生对概念的理解和掌握,而且也能烘托课堂气氛,将复杂问题简单化,大大提高了学生的学习效率。

4.不足之处

在本次课中我忽视了一个重要环节,就是让学生来展示一下制作成果。这节课上学生积极踊跃,而我确没有能够给学生搭建一个平台来展示他们的学习成果,很多同学在制作完程序后都很兴奋,不断的举手告诉我说自己已经做完了。而我也没能给学生及时的鼓舞,学生的积极性还没有充分发挥出来。

【评析】

本节课将通过身边熟悉的事物──手机,把枯燥难懂的概念进行简单的诠释,并通过VB本身的可视化编程环境,让学生在模仿教师完成任务的过程中获得小小成功的喜悦,激发他们想进一步学习的兴趣。

本节课的两外一个亮点在于教师的任务的选取。上课伊始,教师刚刚展示完这个程序后,学生就表现出了强烈的学习欲望和学习热情。事实上,整节课上学生都持有积极学习的态度,由以往的被动学习转变为主动学习。

另外本节课上教师对细节的把握比较到位。过渡比较流畅,一节课的内容很自然完成一环扣一环,而且从学生的认知规律出发,提问方式前后呼应,符合学生的思维习惯,便于学生分析和掌握。

篇2:可视化编程的概念与方法》教学设计

#TRS_AUToADD_1257211039132{mARGIN-ToP:0px;mARGIN-BoTTom:0px}#TRS_AUToADD_1257211039132P{mARGIN-ToP:0px;mARGIN-BoTTom:0px}#TRS_AUToADD_1257211039132TD{mARGIN-ToP:0px;mARGIN-BoTTom:0px}#TRS_AUToADD_1257211039132DIV{mARGIN-ToP:0px;mARGIN-BoTTom:0px}#TRS_AUToADD_1257211039132LI{mARGIN-ToP:0px;mARGIN-BoTTom:0px}/**---jSoN--{“":{”margin-top“:”0“,”margin-bottom“:”0“},”p“:{”margin-top“:”0“,”margin-bottom“:”0“},”td“:{”margin-top“:”0“,”margin-bottom“:”0“},”div“:{”margin-top“:”0“,”margin-bottom“:”0“},”li“:{”margin-top“:”0“,”margin-bottom“:”0“}}--**/DIV.myFav_1256697668270P.msoNormal{TEXT-jUSTIFy:inter-ideograph;FoNT-SIZE:10.5pt;mARGIN:0cm0cm0pt;FoNT-FAmILy:”TimesNewRoman“;TEXT-ALIGN:justify}DIV.myFav_1256697668270LI.msoNormal{TEXT-jUSTIFy:inter-ideograph;FoNT-SIZE:10.5pt;mARGIN:0cm0cm0pt;FoNT-FAmILy:”TimesNewRoman“;TEXT-ALIGN:justify}DIV.myFav_1256697668270DIV.msoNormal{TEXT-jUSTIFy:inter-ideograph;FoNT-SIZE:10.5pt;mARGIN:0cm0cm0pt;FoNT-FAmILy:”TimesNewRoman“;TEXT-ALIGN:justify}DIV.myFav_1256697668270P.msoFooter{FoNT-SIZE:9pt;mARGIN:0cm0cm0pt;LAyoUT-GRID-moDE:char;FoNT-FAmILy:”TimesNewRoman“}DIV.myFav_1256697668270LI.msoFooter{FoNT-SIZE:9pt;mARGIN:0cm0cm0pt;LAyoUT-GRID-moDE:char;FoNT-FAmILy:”TimesNewRoman“}DIV.myFav_1256697668270DIV.msoFooter{FoNT-SIZE:9pt;mARGIN:0cm0cm0pt;LAyoUT-GRID-moDE:char;FoNT-FAmILy:”TimesNewRoman"}DIV.myFav_1256697668270DIV.Section1{page:Section1}DIV.myFav_1256697668270oL{mARGIN-BoTTom:0cm}DIV.myFav_1256697668270UL{mARGIN-BoTTom:0cm}

一、教学指导思想与理论依据

依据新课标中提出“强调问题解决,倡导运用信息技术进行创新实践活动”的理念。以学生为主体,结合高中学生的生活和学习实际设计问题,让学生在感受与体验的过程中构建知识结构,掌握程序设计中的概念;并将所学的知识积极地应用到解决学习、生活等实际问题中。

二、教学背景分析

1.教材内容分析

本课使用的教材是广东教育出版社出版的《算法与程序设计信息技术(选修1)》。

本节内容为该书的第三章第一节课,主要内容是对可视化编程中的对象、属性、方法事件等概念的讲解。本节课为一节起始课,在学习了这些概念后学生不仅在上课时知道了这些专业术语,同时也能够知道了代码的书写位置和书写格式。为后面的教学奠定坚实的基础。

本节课将通过身边熟悉的事物手机,把枯燥难懂的概念进行简单的诠释,并通过VB本身的“所见即所得”的编程环境,让学生在模仿教师完成任务的过程中获得小小成功的喜悦,激发他们进一步学习的兴趣。

2.学生情况分析

本课教学对象为高一学生。在学习本课之前,学生已经对程序代码的编写有一定体验,并熟悉visualbasic6.0的环境界面。

高一年级的学生思维活跃,想象力丰富,求知欲强,所以在教学中应抓住学生这一生理特点,采用问题解决的教学策略。由学生自主发现问题、解决问题,在问题的解决过程中熟悉并掌握VB的可视化编程的概念与方法。

3.教学方法

任务驱动、演示法、讲解法。

4.教学资源

教学演示文稿(PPT),记事本小程序(EXE)和源代码。

三、教学目标框架设计

1.教学目标

知识与技能目标:

1)能够结合日常生活中的具体事例分析说出它的属性、方法、事件,从而加深对属性、方法、事件概念的理解;

2)能够利用控件工具在窗体上创建按钮、文本框等对象,并学会通过属性窗口修改对象的caption、text属性值;

3)通过分析简单笔记本小程序,能够判断出鼠标单击事件是作用在那个对象上,并且事件过程是什么;

4)通过编写程序代码,加深对对象的属性、事件、方法的语法格式的记忆。

过程与方法:

1)以生活中的手机为例,理解对象的属性、方法、事件概念的含义;

2)通过制作简单记事本小程序,加深对对象的属性、方法、事件概念的理解,进一步体会三者之间的关系。

情感态度与价值观:

1)由生活中的事例讲解,提高学生知识迁移的能力;

1)通过制作简单记事本实例,体验VB语言带来的成就感,激发学生学习VB编程的兴趣。

2.教学重点

1)对象、属性、方法、事件等概念。

2)代码的语法格式和书写方法。

3.教学难点

代码的语法格式和书写方法。

四、教学流程图

五、教学过程设计

环节一

引入环节 教师活动 学生活动 设计意图

引入:大家都用过word进行编辑,它具有很强大的功能。我们可以利用VB平台也可以编写出类似word这样的文字编辑器。

认真听讲。

展示:教师已经编写好的小的文本编辑器。

过渡:为完成这个任务我们需要了解对象、属性、事件、方法等概念。

认真听讲。

观看小文本编辑器所具有的功能。

用一个学生看似很神奇的软件引入,并告诉他们我们自己也可以编写出来,激发学生学习的兴趣,并能够满足学生的自豪感。

并引出了本节课的任务。环节二

讲解对象的属性、方法、事件概念 提问:

生活中我们把这种看得见摸得着的物体叫做什么? ──引出对象的概念。

1.对象──实体

根据对象的概念,同学们判断出教师展示的两个手机分别是两个对象。

提问:

这两个对象(手机),他们从外观上看有什么不同?

引出手机的颜色、重量、形状、样式是手机的属性。

2.属性──性质

过渡:我们在购买手机时,不仅关心它的外观还会关注它所具有的功能,引出对象的方法概念。

3.方法──本领或技能

过渡:教师用其中的一部手机给另外一个手机大电话,另外一个手机在“来电”事情的刺激下,做出了响铃的反应。

引出“来电”事情称之为对象的事件。

4.事件──事情

举例:

1)教师从背后拍一名学生肩膀,学生回头。

提问:在这个过程中,谁受到了刺激,谁作出了反应?

2)提问:“开关被按下去了,灯亮了”在这个过程中,谁受到了刺激,谁作出了反应?

归纳为:有可能受到刺激和作出反应的是同一个对象,还有可能是一个对象受到刺激,另一个对象作出反应。

思考教师提出的问题,回答问题。

认真听讲。

仔细观察手机外观上的不同,回答问题。

注意观察其中一个手机的变化。

回答教师提问。引出对象概念。

学生从手机的颜色、形状等方面说出手机的不同,引出属性的概念。

考察学生对事件的理解。强化学生对概念的理解。环节三

结合小程序理解概念

过渡:理解了对象、属性、方法、事件这些概念以后,如何运用VB来实现我们的小任务呢?我们将在任务的完成过程中,进一步加深对这几个概念的理解。

1.对象

除了窗体对象外,我们还可以利用控件工具箱中控件创建新的对象。

教师根据任务的需要,带领学生创建了一个textbox对象和三个commandbutton对象。

2.属性

过渡:我们都知道对象是有属性的,我们有两种方法来修改对象的属性值。

通过属性窗口来修改对象的属性值。

讲解1:属性窗口与对象之间的对应关系。

讲解2:如何修改对象显示的文字(修改caption、text属性)。

①带领学生修改按钮的caption属性(显示的文字对使用者提示作用)。

②学生自己尝试修改text1的中显示的文字,知道是修改text属性。

过渡:现在已经完成了界面的设计,我们来运行下看看,能否达到我们预期的效果(不能)还需要来添加代码?──引出如何添加代码。

3.带领学生分析程序,并完成任务。

铺垫:每个对象都是有名字的,知道他们的名字很重要。选中每个对象,属性窗口中的<名称>项后的值是对象的名字。带领学生将每个对象的名称熟记一遍。)分析得出:command1被鼠标单击后,text1中的字作出了反应。

2)带领学生将代码完成。

PrivateSubcommand1_click

Text1.FontBold=True

EndSub

3)学生自己完成command2被单击后字体变倾斜这个过程的代码。

PrivateSubcommand2_click

Text1.FontItalic=True

EndSub

过渡:commmand3被鼠标单击后弹出了颜色对话框。目前我们所拥有的对象都不具备这个功能,我们需要创建另外一个对象,它具有打开颜色对话框的功能。

4.带领学生添加commondialog1对象

1)在工具控件箱中添加microsoftcommondialogcontrol6.0控件。

2)创建commondialog1对象。

5.告诉学生commondialog1的showcolor方法可以实现打开颜色对话框

6.学生自己运行程序,发现文字的颜色并不能改变。带领学生分析原因。

commondialog1的showcolor方法只是实现了打开对话框的功能,而要想text1中文字颜色的改变,还需要修改text1的forecolor属性值

PrivateSubcommand3_click

commondialog1.showcolor

text1.forecolor=commondialog1.showcolor

EndSub

和老师一起创建四个对象。

在老师的带领下修改对象的caption属性值。

并独立发现修改text属性值可以改变文本框中显示的内容。

认真听讲。

运行程序发现并不能实现预期的效果。

和老师一起牢记每个对象的名字。

和老师一起分析程序。

自己写代码。

认真听讲。

听教师讲解,逐步完善自己的程序

提高学生的动手操作能力。

提高学生的模仿能力。

知道对象名称的重要性。

使学生对方法有了更深刻的认识。小结

结合VB总结

1.对象。在VB中除了窗体对象外,我们还可以通过控件工具箱创建新的对象。

2.属性。我们可以在属性窗口中修改对象的属性,也可以在编写代码后程序运行后修改属性值格式为:对象名.属性名=属性值(提问:用什么方法来修改对象的属性值?)。

3.事件。一般就是指鼠标或键盘等事件,我们可个在过程的下拉按钮中找到。格式为:对象名_事件名。

4.方法。指对象所具有的功能。语法格式为:对象名.方法名[参数]

六、课后反思

本节课紧紧围绕记事本小程序展开,以手机为例使学生对对象、属性、方式、事件等概念有了感性的认识,然后在进入到VB的世界,进一步加深对这些概念的理解。

本节课上我最满意的地方是例子的选取,本节课一开始就给学生展示了一个记事本小程序,在展示完程序所具有的“神奇”后告诉学生我们也能自己自作一个文本编辑器,学生产生了浓厚的学习兴趣。通过教学实践来看,本节课上学生表现出了很强的求知欲。写完一个事件过程的代码后,不用教师多说学生就开始思考写下个过程代码,尤其是更改文本框字体颜色这部分代码,动作快的学生主动尝试代码的编写,并在课堂上就要求老师快点讲,快点讲。本节课上体现了学生的自主学习,由被动变为了主动。

另外一点就是对对象的caption属性和名称属性的讲解有了小小的尝试。由于它们默认的属性值是相同的,为了将它们加以区别,在以往上课时我总是对比着讲这两个属性,结果事与愿违,学生反而将这两个属性混淆起来了。而这次我做了小小的改进:首先在界面设计时,我强调一般按钮上会显示一些提示性文字,我们可以通过修改它的caption属性来修改这些提示性文字。然后,在写代码前的分析时我问到“鼠标单击那个按钮„„”学生一般会用按钮上显示的文字来称呼这个按钮,这时我紧紧的抓住他们的回答反问到“这个按钮上显示的文字是‘B’,那它就叫B吗?每个对象都有自己的名字,„„”通过这样的改进不仅将名称属性和caption属性的含义表述清楚了,而且很容易将两者区分出来了。

在本次课中我忽视了一个重要环节,就是让学生来展示自己的操作过程。这节课上学生积极踊跃,而我却没有能够给学生搭建一个平台来表现他们的表现欲望,没能给学生及时的鼓舞,不免会打消学生的积极性。

篇3:可视化编程的概念与方法》教学设计

MATLAB是由Math Works公司开发的通过高级语言--M语言来解决数学问题的软件, MATLAB集成了数学运算和图像可视化处理, 广泛运用于数值分析、图像处理、系统仿真等领域, 并且具备程序简单、数值运算仿真能力强等优点[1]。但是由于MTALAB是以解释的方式运行程序, 程序的执行率低, MATLAB自带的界面设计落后, 且其对子设备的控制能力差, 不适合做界面开发。

.NET平台是基于.NET Framwork框架的程序开发平台, 访问平台所需内存小, 数据访问效率高且对设备具有操作能力。而C#语言是基于.NET平台而开发的程序语言, 其具备程序简单、执行效率高、具备界面友好性、对外围设备操作能力强等优点, 但是C#语言在进行庞大的数学计算和数值分析与绘图上存在不足[2]。

由于MATLAB语言和C#语言是基于C语言的高级语言, 因此可以实现MATLAB与C#的混合编程, 由具有界面友好性的C#语言实现界面的开发, 由MATLAB提供用于庞大的数学运算和图像生成的函数, 充分运用两者自身的优点, 弥补对方的不足, 使得程序适用性得到提升。

1 潮流算法

1.1 潮流算法的选择

在潮流计算中比较基础的电力系统计算机潮流计算算法有高斯-塞德尔迭代法、牛顿-拉夫逊迭代法和PQ分解法 (快速解耦法) 。而在潮流算法的选择中, 应当充分考虑到算法的收敛特性、对初值的敏感性和对计算机的内存容量要求等因素。收敛精度不在考量的范围中, 一般的潮流算法精度还是可以保证的。在这三种算法中, 高斯-塞德尔迭代法对初值的选取不敏感, 占用内存不大, 但缺点是收敛缓慢, 运行效率不高。牛顿-拉夫逊迭代法具有平方收敛特性, 收敛速度很快, 但是缺点是对初值选取敏感, 很容易出现不收敛的情况, 并且每次迭代都需要更新Jacobian矩阵, 占用大量运算内存。一般可以用高斯-塞德尔法迭代一两步后用牛顿-拉夫逊法迭代, 可以互相弥补对方的缺点。PQ分解法 (快速解耦法) 是对牛顿-拉夫逊法的改进, 该法只考虑电压相角对有功的影响和电压幅值对无功的影响, 常数化Jacobian矩阵。该法具有直线收敛特性, 收敛快, 占用内存小, 但缺点是在配电网中电阻部分往往不能忽略, 故本文不讨论该法, 本文仅以全极坐标下的牛顿-拉夫逊迭代法为例。

1.2 牛顿-拉夫逊潮流算法

1.2.1 带变压器支路的处理

牛顿-拉夫逊潮流算法是基于节点电压方程的一种算法, 首先需要生成节点导纳矩阵, 普通的线路可以转换成与线路阻抗和电纳等值的π型模型, 若一条线路首端连变压器, 变比为首端:末端=k:1, 串联导纳为Y, 那么等值后的π型模型为:串联导纳为Y/k, 首端对地电纳为 ( (1-k) /k2) *Y, 末端对地电纳为 ( (1-k) /k) *Y。经过处理后, 变压器支路也可以等效转换成普通线路。

1.2.2 修正方程

在全极坐标下, 牛顿-拉夫逊潮流算法将PV节点和平衡节点全部看作是PQ节点进行处理, 故雅可比矩阵有2*n阶并且在每次迭代中, 不断利用更新的电压幅值相角获得新的功率不平衡量和更新雅可比矩阵, 并通过修正方程求得下一次的电压幅值相角, 最终使不平衡量达到目标精度以内即完成收敛。

2 C#与MATLAB混合编程

2.1 MATLAB与C#混合编程方式选择

由于MATLAB和C#语言都是基于C语言的高级语言, 所以目前有多种方式可以实现MATLAB和C#的混合编程:

(1) MATLAB的函数文件是.m文件, 可以用MATLAB的mcc编译器生成C共享库, 再调用。

(2) C#调用MATLAB工作区计算并返回结果。

(3) C#使用MATLAB的Deploy Tool函数生成COM组件再由C#调用。

(4) C#使用MATLAB的Deploy Tool函数生成.NET组件再由C#调用。

文献[2,3]分别对第一种和第三种方式作了详细的阐述, 但本文从程序的各方面考虑后, 本文选用第四种方式进行混合编程。

2.2 MATLAB的环境设置和.dll文件的生成

本文所用的MATLAB的版本是自带mcc编译器的2014a, C#是使用的VS2013。由于潮流程序较复杂, 函数过多。本文以简单具有代表性的自加一函数为例。文件名为add1.m, 函数为:f (x) =x+1。写好函数后, 须设置MATLAB的编译环境, 在命令行中输入mbuildsetup指令选用适当编译器编译。随后在命令行中输入deploytool命令, 在弹出的窗口中选择第二项Library Compiler命令会弹出设置窗口。在类选项中选择.NET Assembly类, 点击加号添加刚刚生成的add1.m文件, 在名字文本框中, 输入fun_add1作为组件名, Settings用于设置文件保存路径, 完成后点击Package打包。打包文件中的fun_add1.dll将会在C#中被引用。

2.3 在C#中调用组件

在添加fun_add1.dll前找到MATLAB目录下的MWArray.dll文件, 将其和fun_add1.dll一起添加到一个文件夹中, 并将这个文件夹用于存放C#工程。接着在VS2013中新建Windows窗体应用程序项目, 选择.NET Framwork 4的环境。项目生成后在引用栏中添加MWArray.dll和fun_add1.dll, 并在代码区命名空间中添加命名空间:using Math Works.MATLAB.NET.Utility、

using Math Works.MATLAB.NET.Arrays和using fun_add1;

2.4 MATLAB与C#间的运算转换

若要在C#中生成矩阵传值到MATLAB中运算并返回C#, 必然不能缺少中间类, 我们可以通过MWNumeric Array强制转换到需要的类型, 而这个中间类既可以转换至MWArray格式, 也转换至int, double, float等格式。矩阵可以使用数组生成, 只需要输入代码:MWNumeric Array矩阵名=new MWNumeric Array (MWArray Complexity.Real, a, b) ;就可以生成一个a行b列的实数矩阵, 而将.Real换成.Complex可生成复矩阵。我们输入如下代码检验可行性:

Class1dr=new Class1 () ;

MWNumeric Array Value1=new MWNumeric Array (MWArray Complexity.Real, 1, 2) ;

Value1[1, 1]=3;Value1[1, 2]=7;MWNumeric Array result1;

result1= (MWNumeric Array) dr.add1 (Value1) ;

text Box1.Text=result1.To String () ;

在C#中使用循环生成矩阵时的循环应从1开始。

结果如图1, 实践证明可行。

3 C#中设计串口通信功能

针对本文编写的应用软件可通过串口进行通信, 获取并发送数据, 大致拥有普通串口助手的功能。C#的通信功能提供了软件与硬件之间沟通的桥梁, 可通过人为设置标准实现下位机动作, 也可以作为电力系统通信的桥梁。由于文献众多, 本文对此功能不再作详细介绍。

4 结语

本文在研究了几种潮流计算计算机算法的基础上, 通过整合MATLAB的科学计算能力和C#.NET的界面设计功能, 通过混和编程的技术, 将两者的优点整合到一起。混编后目标机上只需安装MATLAB的MCRInstaller.exe组件即可运行, 极大地减少了软件正常运行所需要的内存占用。系统操作简洁, 上手简单, 对科学计算窗体化具有实际意义。

摘要:电力网络的安全稳定运行和电能的经济调度运行离不开对电力参数的潮流计算。由于.NET组件对MATLAB的良好支持性, C#与MATLAB混合编程的潮流计算可视化窗体的设计具有开发周期短、移植性好、便于修改和能够实现实时性信息传递的优点。本文就采用这种混合编程的设计原理进行阐述。

关键词:MATLAB,C#,混合编程,潮流计算,可视化窗体

参考文献

[1]肖伟, 刘忠, 曾新勇等.MATLAB程序设计与应用[M].北京:清华大学出版社, 2005:8-9.

[2]姚光强, 陈立平.基于COM技术的C#与Matlab混合编程[J].计算机工程, 2008, 34 (14) :87-94.

篇4:计算机专业可视化编程课教学浅谈

传统的程序设计是算法加数据结构。而可视化编程语言有所不同,它的特点是操作对象化、可视化,但使用起来较为复杂,学习难度也有所增加。针对可视化语言的特点、难点和传统教学的缺陷,笔者经过多年的教学实践,建议在可视化教学过程中可以采用以下几种方案。

1.利用多媒体,教学效果事半功倍

可视化编程语言,窗口操作所占比例较多,代码片段也都是在窗口中完成的,因此利用多媒体教室。可为学生提供资料共享。学生可以接收老师的操作界面,并有当场实验的环境,老师在教师机上一边讲解一边操作,学生在自己面前的学生机上不仅可同步看到老师的操作过程,还可以马上自己动手操作,体验操作过程,得到操作结果。因此与传统教学方式相比,可以在不增加课时的情况下,使学生快速有效地学到更多有用的知识,从而达到事半功倍的教学效果。

2.巧用比喻,辨别基本概念清晰明确

可视化编程语言中的概念很多,比如“类”“对象”“属性”“消息”“继承”“封装”等等,对中职学生来说是很难理解的。而要学好可视化编程并能在实践中应用,这些基本概念是必须要掌握的。为了让学生更快更好地掌握这些概念,就得用形象的比喻,让他们有一个直观的认识。如“类”“对象”“属性”,这是比较容易混淆的三个概念。可以这样比喻,汽车相当于“类”,只是泛指,没有指哪辆汽车,是抽象的:我校的那辆帕萨特是具体存在的实体,是特指,相当于“对象”;帕萨特所使用的颜色、轮胎、内饰品等是可以更改的,就相当于“对象”的“属性”。

3.把握教材,设计贯穿教程的应用系统

现在有一些可视化语言教材是按功能分类来划分章节的,这种教材就像是系统自带的使用说明书,教学效果可想而知。还有些教材各章节的小例子很多,但各个例子之间没什么联系,学生只能学到零碎的知识点,应用能力得不到提高。不管哪类教材,我们要把各章节的知识串起来,设计出一个能贯穿整个课程的大的应用系统。这样可以帮助学生对课程有整体的理解,对各章节的内容有一个系统的消化。

4.重构教程,项目教学引领高效课堂

在可视化编程教学中,项目教学效果是比较明显的。进行项目教学,一般都要重新组织教学内容。关键是要根据知识点,按照预先设计的应用系统,设计出一个个功能模块(相当于一个个项目)。要让学生学习掌握可视化语言的应用,而不是只学到可视化语言有哪些功能。以项目为引领,知识要点容易被接受,效果更好,使学生学过了就能做,轻松达到学以致用的目的。

5.注重纽带,发挥表单特殊角色作用

表单是应用程序的界面,可以说是可视化编程语言特点的集中表现。可视化编程语言中面向对象的功能也多在表单中体现,同时表单也是联系各个对象的纽带,是连接各个子功能模块的桥梁。因此在教学过程中应以表单制作为中心和重点,使学生充分体会和理解可视化编程的特点。把表单制作当做纽带可以使学生掌握用可视化语言进行实际开发的过程。把课堂教学与实际应用联系起来,进而达到培养学生分析问题和解决问题的能力。因此,在进行可视化语言编程时,不管表单这一章节在教材的哪个位置,都应该把表单作为首先学习的内容,把其他内容作为表单的各个模块来学习。

6.综合实验,巩固知识能力体系

篇5:可视化编程的概念与方法》教学设计

《可视化编程》双语教学与实践探索

随着我国高等教育的发展,外语学习已成为高校教育的.重点.双语教学也越来越受到各大高校的重视,笔者就<可视化编程>双语教学情况和实践效果进行总结.

作 者:张爱民 张鹏 作者单位:石家庄铁道学院四方学院刊 名:中国科技财富英文刊名:FORTUNE WORLD年,卷(期):“”(12)分类号:G71关键词:可视化编程 双语教学

篇6:可视化编程心得

学习心得

姓名 学号 专业 班级 日期

计算机科学与技术

《可视化编程》学习心得

本次可视化编程课程已经全部结束了,在这次课程学习中,我获益匪浅。在课程结束,我总结一下对可视化编程的认识和心得。但这不是完结,对可视化编程还有很多很多需要去了解,去学习,我们刚刚了解认识了可视化编程,这才是一个开始。

在课程开始之际,老师先给我们讲述了可视化编程的定义以及优缺点。能进行可视化程序设计的集成开发环境很多,比较常用的有微软的Visual Basic、Visual C++、中文Visual Foxpro、Borland公司的Delphi等。这次课程,老师给我们教学采用的是Visual C++。这个环境我们在大一学习C++语言的时候也有接触过,对此并不陌生,也许是班主任老师对我们有所了解,能让我们能更快上手,也选取了Visual C++作为首选环境。我们不必再重新学习一个集成环境,这样对我们首次接触可视化编程是一个很大的帮助。

在开始的两节课,老师教我们从简单开始,老师用他调试好的代码先让我们熟悉什么是可视化,怎么才能可视化。从简单的单击画圆,双击画椭圆,画多边形,并且在菜单栏添加项目。让我们真正的接触到可视化编程。但是学完这些,我自己也在想,这些代码是老师调试好的,看起来很简单,但是让我自己来设计呢,我还不是很了解到底有哪些函数可以直接调用,哪些函数要自己设计。我想这是我接下来应该加强学习的地方。

接下来,老师给我们带来了大家比较感兴趣的设计——24点游戏。我们先学习了游戏界面的设计,老师是教我们可以直接拖控件的方法自己布局,这让我们一直使用代码设计界面的方法有了另一种选择,设计好界面对我们并不难。接下来我们要设计出能随机抽取4张纸牌,并设计这个游戏的算法,虽然在课堂上老师并没有要求我们把这个游戏的算法都要设计出来,但是课下我跟同学也有谈论这个算法的复杂性,因为这个游戏设计我们之前在学习算法时也有所接触,我深知它算法的复杂和多种情况。老师也说他在课下也想了几十种情况,我想,这就是编程的魅力和复杂之处吧,可视化虽然带给我们很多方便和直观的视觉,但是也解决不了每个设计中的算法复杂和情况的多种考虑。这也是课下我思考的最多的地方。

为了更进一步的了解可视化编程,老师给我们带来了中国象棋人机对弈系统来进行开发,老师先介绍了Windows程序及其编译,因为这次的系统设计需要声音图片,而编写Windows程序不仅仅是代码,还有对各种资源的编写,包括各种控件的编写、声音、菜单、图标资源的编写。所以在人机对弈系统开发之前,我们先了解了Windows程序,这对我也是一个对VC的补充,同时学会了怎样在VC添加声音并循环,怎样画图,画直线多边形可以直接调用函数,收获颇多。在最后的课程中,老师又介绍了中国象棋对弈系统图形交互部分,从装载图标作为应用程序的新的图标到棋盘的呈现,再到绘制棋子,同时载入声音,让我们一步一步的了解这个系统的开发,但是由于任务量较大课程时间相对较短,我没有跟上老师的讲解,我想这是我对本次课程的一个入口点,我可以从这个系统继续老师的讲解课件,把剩下的部分自己思考解决。

由于在大一的时候学习C++接触过VC,但是接下来我并没有继续用C++多为首选语言进行开发,而是用java语言,这让我应用起来虽熟悉,但并不是那么熟练了,但是我们知道,从某种意义来说,各种语言都有很多类似的地方,我想这次课程不仅是新的学习,也是对我大一学习内容的回顾。

篇7:可视化编程的概念与方法》教学设计

消除思想顾虑,激发学习兴趣

近几年来,技工学校的学生数学基础普遍较差,缺乏空间想象力与逻辑推理能力,由平面几何转入立体几何,学生会感到很不适应,总是习惯于用平面图形的思维来考虑空间图形,对学好立体几何信心不足。针对这些情况,在教学中首先要鼓起学生学好立体几何的勇气,向学生介绍立体几何的研究对象、学习方法,指出立体几何与平面几何是紧密相联的,很多立体几何的问题,都可以转化为平面几何的问题来解决,鼓励学生只要认真学习,抓住每个概念的本质,做到深刻地理解就能学好立体几何,从而消除学生学习中的顾虑。为了引起学生的学习兴趣,充分认识学习立体几何知识的现实意义,可以列举一些现实生活中的实例,并提出一些有启发性的问题,如三条腿的凳子为什么是平稳的?怎样判定墙面与地面垂直?怎样检验钻床的钻头是否与工作面垂直?等等,使学生认识到立体几何知识在日常生活中无处不在,原理无时不用,从而产生学习兴趣,激发求知欲望。

用生动、形象、有趣的语言讲清概念

教师的语言要直观、生动、形象,既活泼有趣,又浅显易懂、深入浅出。这样才能把抽象的事物具体化,把深奥的理论形象化,使学生易于理解、易于产生联想。例如“平面”是一个原始的概念,无法下定义,只能举实例给出“平面”的形象。数学中的平面在空间是无限延展的,让学生体会到平面的延展性往往很难。有的学生总会误认为桌面、镜面等就是数学中的平面,把生活中的平面与几何中的平面混为一谈。教师可以先从“直线”的概念讲起,提出类似“直线有端点吗?你能否画出一条完整的直线?”等问题,引起学生的兴趣,接着教师可进一步指出:直线是没有端点的,一个人从生下来就开始,直到死为止,也画不出一条完整的直线。画不出完整的直线那么我们怎么表示直线呢?只能用直线上的一段来表示,决不能认为直线就是这么长,直线是向两方无限延伸的。趁学生的兴趣正浓,教师可紧接着指出:“平面”的概念也是如此,数学中的平面在空间是向各个方向无限延展的,它很平,没有厚薄、没有边界。而日常生活中常见到的玻璃面、黑板面、平静的水面等,只是数学里“平面”的一部分。既然平面是无限的,它也无法画出来,只能用有限的图形——平行四边形来表示。生动有趣的教学语言,调动了学生学习的积极性,加深了对平面概念延展性的理解与记忆。

抓住关键性的词汇

在学生作业中,常会看到这样的推理:

∵AB在平面α内,AC在平面β内

∴∠BAC是二面角α-MN-β的平面角。

这位同学推理错误,对二面角的平面角的概念没有理解,缺少条件“AB⊥MN,AC⊥MN”。每个定义中都存在着关键性的词语,抓住了关键词就抓住了事物的本质属性。因此,在讲述概念的过程中,要着重分析定义中的关键词,使学生明确地掌握概念。如二面角的平面角定义,经过分析,可以分解为三个要点:(1)过棱上一点;(2)在两个面内;(3)垂直于棱。并指出这三个条件必须同时满足,只要有一条不满足,就不是二面角的平面角。随后画出各种图形或举实例,让学生判定哪些是二面角的平面角,学生在充分理解的基础上按照上述三条可以做出正确答案。

用反例图形澄清错误的.认识

图形是用来描述几何原理最直观的形象语言,几何中多以图形的正面形式来刻画点、线、面之间的结构关系,而反面形式不易被人们重视。反例图形就是用来说明某种关系或结论不成立的特殊图形。恰当地举出反例,对明辨是非、纠正错误会起到重要作用。例如“不共面的两条直线称为异面直线”,学生会误认为不同在某个特定平面内的直线是异面直线,为了让学生理解“不共面”的含义,教师可以提出问题:“分别画在两个平面内的直线是异面直线吗?”部分学生会认为答案是肯定的,当教师画出反例图1时,学生会立刻明白,画在两个平面内的直线不一定是异面直线。又如针对学生立体几何与平面几何容易混淆的知识,可以通过反例图形加强它们性质的比较,使学生加深对知识本质的区别,强化对知识的理解。如“平行于同一条直线的两条直线互相平行”在平面几何中成立,在立体几何中也成立。“垂直于同一直线的两条直线互相平行”,在平面几何中成立,而在立体几何中不成立,要说明这一点画一个反例图形就可以了。可见指出错误最有力也是最有效的办法就是画出反例图形。

借助模型和实物

数学中的许多概念都是从实际生活、生产中抽象出来的,但数学化了的概念与实际感受有较大距离,所以在立体几何教学开始阶段困难很大。克服困难的办法是遵循教学规律,使立体几何的教学尽可能与学生的认知过程靠近,注重直观思维的作用,逐步把直观思维引导到分析思维。因此,教学中充分利用模型与实物,为学生获取知识创造条件。例如要讲清楚公理“不在同一条直线上的三点确定一个平面”,可以举例:一扇门有两个合页和一把锁,门可以看作一个平面,两个合页和锁看作三个点,当打开时门转动一个位置,就可以看作是一个平面,可见经过两点有无数个平面,当门锁上时门被固定不能转动了,观察这三点是不在同一直线上的三点,因此得到:经过不在同一直线上的三点能作也只能作一个平面。这样,学生对公理容易理解与接受。再如公理“如果两个平面有一个公共点,那么它们有且只有一条经过这个点的公共直线。”学生对两平面相交为什么会是条直线不易理解,可以用硬纸板演示给学生看,如图2,就可使学生明白了这一道理。接着可以提问学生,若平面有两个公共点A、B,是否它们有两条公共直线呢?突出强调两个平面相交只有一条交线,这条交线就是通过A、B的直线,从而使学生加深了对公理的理解。

善于归纳总结找出规律

篇8:可视化编程的概念与方法》教学设计

相比传统的二维超声, 三维超声具有图像形象直观、测量精确、空间定位准确、多角度观察、数据采集效率高等优点。然而, 由于超声成像和计算机技术的限制, 从1961年, Baun和Greewood提出了三维超声成像的概念后, 三维超声一直局限于实验室研究的范围, 直到上世纪90年代中后期, 全数字超声成像技术和计算机软硬件技术发展到一定的高度后, 才真正开始有三维超声的商用产品面世[2]。经过近二十年的发展和临床实践, 超声三维成像技术得到了长足的发展, 已广泛应用于临床诊断领域。

超声三维可视化即通过软件运算的方法将采集到的三维超声体数据重新构建成一个三维体进行显示, 它是三维超声成像中的关键核心技术。本文将对三维超声可视化技术进行描述, 并介绍一种以GPU编程实现快速体绘制的三维超声可视化方法。

1. 三维超声可视化

三维超声可视化目前主要通过两大类方法实现:第一类是通过几何单元拼接拟合物体表面来描述物体三维结构, 称为基于表面的三维面绘制, 又称为面绘制;第二类是直接将体素投影到显示平面, 常被称为体绘制;

常见的面绘制方法有连接轮廓线法 (Contours Connection) 、立方体法 (Cuberille) 、移动立方体法 (Marching Cubes) 和分解立方体法 (Dividing Cubes) 等多种算法。其中最为经典的是移动立方体法 (Marching Cubes) , 又称MC算法, 由Lorensen和Cline于1987年提出。该算法先确定一个表面阈值, 计算每一体素内的梯度值, 并与表面阈值进行比较判断, 找出那些含有表面的立方体, 利用插值的方法求出这些表面。

常见的体绘制方法有脚印法 (Footprint Algorithm) 、光线追踪法 (Ray Tracing Algorithm) 、剪切形变法 (Shear-Warp Factorization Algorithm) 等算法, 其中最为经典的是光线追踪法 (Ray Tracing Algorithm) , 由Levoy M.于1998年提出。该算法假设从屏幕上的每一像素点发出1条视线, 这条视线穿过三维数据的体元矩阵, 沿这条视线等距离设置采样点, 并将距离采样点最近的8个体元数据点的颜色值及不透明度进行3次线形插值, 求出该采样点的颜色值及不透明度, 然后对这些采样点进行处理, 得到这个像素点在最终的图像中应该显示的结果, 最后依次对所有像素进行上述处理后, 即得到三维立体图像。

面绘制所涉及的几何单元数量相对较少, 可以利用传统的图形硬件实现绘制, 使得图像生成和变换的速度加快, 但由于它只是将原始数据中的部分属性映射成几何单元, 因此构造出的可视化图形并不能反映整个原始数据场的全貌及细节。而体绘制则刚好相反, 体绘制中每一个像素点就可以认为是一个几何单元, 因此它涉及的几何单元数据非常多, 无法利用传统的图形硬件实现绘制, 以往只能借助CPU进行计算, 消耗的计算资源和存储资源都非常大, 计算时间也很长, 但由于原始数据中的所有属性均被映射为几何图元, 因此这种方法能产生三维数据场的整体图像, 包括每一个细节, 并具有图像质量高、便于并行计算的特点。

图1展示了面绘制和体绘制的成像效果, 左侧为面绘制, 右侧为体绘制。

2. 基于GPU编程的体绘制的可视化方法

近几年来, 许多图形硬件厂商都推出了包含大量可编程流处理器的图形处理器 (GPU) , 使得借助GPU强大的并行能力实现快速的三维体绘制成为可能。

使用GPU编程实现体绘制的处理流程包括预处理、分类、赋值、三维坐标变换、重采样、图像合成, 共六个步骤, 其中前三个步骤在CPU中完成, 后三个步骤在GPU中完成, 如图2所示。

(1) 数据预处理

本步骤是对采集到的三维超声数据进行预处理, 获得重建图像所需的体积图像数据。首先对原始体积图像数据进行预处理, 包括原始体积图像数据的格式转换、剔除冗余数据, 并导出所需的体积图像数据。例如, 根据感兴趣区域ROI的位置, 将ROI内的数据保留, 剔除ROI外的数据。这样做可以减少数据量, 节省后续的计算、传输和存储资源。

(2) 数据分类

本步骤是对预处理后的体数据中的采样数据点进行分类, 将反映同一物质的采样数据点归入同一类。

数据分类可采用下述方法:根据体积图像数据所在应用领域的背景知识, 或者对全部采样数据点进行统计, 设定若干阈值dm (i=1, 2…, n) ;如果各采样数据点以f (xi, yj, zk) 表示, 则将满足条件dm≤f (xi, yj, zk) <dm+1的采样数据点归入同一类。

(3) 采样点赋值

本步骤对根据上一步骤的分类结果, 对采样点进行赋值, 由于采样点本身具备灰度信息而不具备颜色信息, 并且需要显示体积图像数据内部的信息, 因此需要给采样点赋颜色值与不透明度值。

对采样点赋值可通过转换函数来进行, 从而给采样点赋上颜色值与不透明度值。从采样点的灰度值转换到颜色值, 其实质是对一个预先设定好的颜色对照表进行查找, 例如一个最简单的线性查找表Color[i]=i (i=0, 1…, 255) , 则体积图像数据中的最小值对应查找表中的Color[0]=0, 最大值对应查找表中的Color[255]=255, 其余的值则按线性插值进行查找;赋不透明度值的方法也是对一个预先设定好的不透明度表进行查找。

(4) 三维坐标变换

通过三维超声传感器采集得到的体数据一般是由超声原始线数据构成, 需要类似二维超声一样进行数据扫描变换才能真实反映被探测物体的实际形态。本步骤对体数据进行三维坐标变换, 经过三维坐标变换, 对每个二维切片都进行了顶点坐标变换, 并重新组织了二维切片之间的位置关系, 使最终在屏幕上形成的图像与被测物体相符合。 (如图3所示)

本步骤在GPU中完成, 利用多个流处理器对多个采样点进行并行的坐标变换运算。

(5) 重采样

经过三维坐标变换, 采样点的坐标发生了变化, 也就是说, 采样点变换后的坐标与其原先的坐标不同, 那么根据采样点的原始坐标也就不能在坐标变换后的体数据中找到相应采样点的数据值 (包括颜色值和不透明度值) , 因此必须进行重采样。重采样也是在图形处理器 (GPU) 的流处理器中进行的, 流处理器根据采样点的原始坐标计算得到采样点在坐标变换后的新的体数据中对应的新坐标, 并一一对应地用采样点在新的体数据中的坐标替换原始坐标。每个采样数据点对流处理器来说相当于一个运算核, 流处理器对各运算核进行并行计算, 从而提高运算速度。

(6) 图像合成

图像合成一般采用光线投射法的原理进行, 其目的是沿某一像素点发出一条射线, 计算该射线上各采样点的颜色值及不透明度值, 并进行合成, 形成该像素点的最终颜色与最终透明度。合成的原理是:体数据可以看成是多个二维切片组成的, 这些二维切片经过坐标变换后投影到显示屏幕上, 则多个切片上的点会映射到显示屏幕上的同一个点, 显示屏幕上的这个点的最终显示颜色与最终透明度由多个二维切片上的点来混合决定。

经过图像合成后, 可在显示屏幕上显示图像, 该图像能够反映被探测物体的实际形态。

3. 其他可选的处理

为了使屏幕上显示的图像能够较逼真地模拟出自然界的光照效果, 可以通过GPU编程构建光照模型, 在步骤 (3) 对采样点赋值后, 进行光照量的计算, 并将光照量与采样数据点进行混合, 从而模拟出较逼真的光照效果。光照计算处理流程如图4所示。

为了增强图像的真实感, 在上述光照量的计算中还可再明暗计算, 利用明暗计算突出显示不同物质之间的边界面。明暗计算的步骤如下:

(a) 计算各采样点的梯度值;

梯度值可由以下中心差分公式求出, 其中f (xi, yi, zi) 表示源采样点的灰度值, Gf (xi, yi, zi) 表示目标采样点的梯度值:

(b) 在对采样数据点赋值时, 将步骤 (a) 得到的梯度值作为颜色值赋予采样数据点;

(c) 在计算光照量时, 用纹理点的表面法向量来代替项点的表面法向量。

为了使图像根据需要得到平滑或边缘增强等视觉效果, 进行重采样的同时还可以进行图像后处理。平滑、增强的实现有多种方法, 可以在空间域或频域上进行, 可以针对不同的组织采用不同的方法, 比较常用的三种方法是:中值法, 最小方差法, 低通/高通滤波法。在重采样的时候, 不仅对当前点进采样, 还需对其周边相关的点进行采样, 这样得到一系列与当前点相关的点, 然后通过各种算法对其进行运算, 达到平滑或边缘增强的效果;这些后处理算法本身并不复杂, 但计算量很大, 因此需要将其放到GPU里进行计算, 达到实时平滑/边缘增强的效果。

4. 总结

本文介绍了一种以GPU编程实现快速体绘制的三维超声可视化方法, 采用该方法开发成功的实时三维超声成像软件系统已应用与临床诊断, 成像效果及质量均已充分满足临床需求。

图形处理器GPU因其包含大量可编程流处理器, 在类似三维超声这种运算量庞大且可以并行计算的场合有其独到的优势。

相信随着GPU性能的不断提高和GPU编程技术的不断进步, GPU运算将在三维数据可视化、图像和型号处理等领域中发挥越来越大的作用。

参考文献

[1]郝晓辉, 高上凯, 高小榕。三维超声成像的发展现状及若干关键技术分析[J]。生物医学工程学杂志, 1998, 5 (13) :311-316

[2]霍健。基于二维面阵的三维超声成像的关键技术研究[D]。北京:清华大学机械工程系, 2004

[3]高上凯, 高小榕, 张志广, 吴雅峰, 郝晓辉。三维超声成像方法的研究[J]。中国医疗器械信息, 2000, 6 (3) :29-31

[4]黄志远。三维超声成像的新技术及发展趋势[J]。武汉科技学院学报, 2006, 19 (10) :5-8

[5]高少佳, 潘佚。三维医学超声技术及展望[J]。医疗装备, 2007, 20 (4) :7-9

[6]杨金耀, 李德来, 郭境峰, 王海潮, 蔡泽杭。基于GPU编程的超声试试三维成像系统[J]。中国医疗器械信息, 2012, 18 (4) :34-37

[7]李德来, 杨金耀。三维超声成像技术及其进展[J]。世界医疗器械, 2010, 16 (11) :15-19

[8]郭境峰, 蔡泽杭, 王海潮。一种超声回波数据数字扫描变换的处理方法:中国, ZL 2008 1 0028277.X[P].2010-2-24

[9]郭境峰, 王海潮, 蔡泽杭。实时三维医学超声图像的重建方法:中国, ZL 2008 1 0030233.0[P].2010-9-1

[10]郭境峰, 王海潮, 蔡泽杭。基于图形处理器的实时三维图像的光照模拟方法:ZL 2008 1 0198571.5[P].2011-6-1

[11]郭境峰, 王海潮, 蔡泽杭。基于图形处理器的实时三维图像平滑处理方法:ZL 2008 1 0198570.0[P].2010-9-22

上一篇:做普洱茶百度推广方案下一篇:大学校长开学致辞