第一篇:语言讲座
语言活动的小秘密
一、幼儿园语言教育活动的设计
要组织好语言教育活动,重要的是要设计语言教育活动方案。在设计方案时,教师要制定语言教育活动的目标,要选择能实现目标的具体内容,要选择考虑与内容相适应的活动方式等。因此,可以说,教师设计语言教育活动,就是将一定的目标、内容和活动方式转化成一个个具体方案的过程,也是对幼儿有计划、有组织、有目的地施加教育影响的具体体现。它应遵循以下五个原则。
1、设计原则
(1)注重幼儿获得经验的原则
设计任何一组或一个语言教育活动,教师都必须注重幼儿的语言经验。只有以儿童语言经验为出发点,才能保证设计出来的活动符合幼儿语言发展的需要,才能使设计的活动对儿童语言发展真正起到促进作用。
①考虑教育对象现有的发展水平,即他们已经获得的经验。如果不掌握本班幼儿已有的语言发展水平,设计的活动就可能成为无的放矢的活动。如组织小班幼儿进行情境谈话“做客”,教师就需要观察了解这个班幼儿已有的经验,是否已掌握了一般做客时所用的礼貌语言等。
②考虑根据幼儿原有经验再为幼儿提供一些什么新的经验,这些新的语言学习经验内容应当建立在幼儿已经获得经验的基础上。如当幼儿参与情境谈话“做客”这个活动时,教师可引导他们进一步理解和掌握“做客”的交往方式和语言运用方式,原有经验和新的内容会引发幼儿较强烈的学习兴趣。因此,新的语言学习经验内容对参与活动的幼儿来说,是“跳一跳,够得着”的果实,有一定的挑战意味。当幼儿积极参与活动时,他们可以通过学习,将这部分的经验内容再次吸收转化为已经获得的经验。
(2)教师与幼儿互相作用的原则
在设计语言教育活动时,教师要考虑幼儿主动活动与教师参与活动的比例关系。实际上,这也是幼儿在活动中的主体地位和教师在活动中主导作用的具体化问题。当然,幼儿和教师在活动中的主体和主导关系是相互作用的,会根据具体活动内容、活动要求而发生变化。当需要的时候,教师在活动中参与主导作用发挥得多一些;不需要时,教师参与主导作用就发挥得少一些。如何才能做到教师与幼儿相互作用发生适度的影响呢?主要应注意以下几点:
①了解幼儿的发展水平。由此,教师决定自己在活动中参与组织成份的多少。
②找出语言教育活动中出现的新的技能、新的语言要求。由此,教师策划自己参与指导 1 的重点和难点。
(3)活动内容与方式相适应的原则
在语言教育活动中,各种活动内容和方式之间存在一定的关系。不同的活动内容可以选择相同的活动方式;同一个活动内容也可以选择不同的活动方式。因此,教师在设计语言教育活动时,应注意活动内容和方式相适应的问题。
①根据具体的内容决定采取适当的活动方式。如学习童话《金色的房子》,教师可以考虑采用表演游戏的方式来帮助4~5岁幼儿理解童话内容,体会作品角色的情感心理。若是一首短小的儿歌或学习某个讲述内容,就不能用表演方式进行了。
②根据教育对象选择活动方式。如有的故事内容很适宜进行表演,但表演对参加活动的某个年龄班幼儿有较大难度,这时教师应考虑改用其他活动方式来进行。
(4)不同领域相互渗透的原则
在语言教育活动中,幼儿学习吸收的主要是语言信息材料,但也包括那些与语言有关的其他信息材料。如活动中除了有语言,还可能有音乐、美术、动作等不同发展领域活动因素并存。
作为语言活动的设计,应坚持从语言角度来设计活动。在设计活动时,应注意以下几点。
①教育活动的要求、内容和形式应从语言角度进行思考,为幼儿提供适宜其语言发展需要的学习机会。
②在语言教育活动中,其他领域活动因素的参与(如什么时候要辅之以音乐或美术的活动手段),要根据活动内容的要求而定,要从如何帮助幼儿更好地理解学习内容、主动积极地学习、完成学习任务来定。
③教师在设计活动时,从语言角度出发,经过其他方式、符号的共同参与,最后仍应回到语言上。既不要简单盲目地把活动搞成语言、音乐、美术等的大拼盘,也不要忘记落实到语言教育的根本点上,不能喧宾夺主。(5)面向全体,重视个别差异的原则
在设计语言活动时,教师应具有正确的儿童观和教育观,要使设计的活动既面向全体儿童,又重视个别差异。
面向全体幼儿,是指教师要了解全体参加活动儿童的需求,教师要站在教育对象的角度去思考这个问题,把握活动设计的尺度,使活动设计能照顾到面。如组织谈话活动,教师应注意本班幼儿已有的谈话经验和他们可能共同感兴趣的话题,以及他们的语音、语义、语法和语用水平。如让本班幼儿谈论去商店买东西,将主题定在“买玩具”、“买食品”上,就比较适合孩子的普遍需要,也能较好地引发儿童的兴趣和运用他们自身的经验。
在面向全体的同时,教师要注意个别幼儿的差异。教师对那些有可能超越一般活动要求或有可能在活动中出现困难的幼儿都要予以帮助,既要为能力强的幼儿准备发挥他的能力的机会,又要为能力较弱的幼儿或不具备这方面经验的幼儿提供补偿的机会。
2、制定活动目标
幼儿语言教育活动目标制定,是语言教育活动设计中最重要的一环。订得恰当与否,将对整个活动设计产生决定性的影响,包括影响活动设计的方向、范围和程度。
(1)活动目标要着眼于幼儿的发展,包含两层意思。其一是目标的制定要适应幼儿的需求、兴趣与已有的发展水平,符合幼儿语言发展的规律。其二是目标的制定应将促进幼儿的语言发展作为落脚点,也就是要落实到幼儿对语言内容、语言形式和语言技能的掌握上。(2)活动目标的内容和要求,在方向上要与终期目标、阶段目标相一致。活动目标要为阶段目标和终期目标服务,而终期目标和阶段目标正是通过一个个具体的活动目标落实在每个幼儿身上。因此,在制定具体目标时,要根据幼儿的年龄特征和发展水平,注意由浅到深、循序渐进地提出目标,使幼儿能从具体到抽象、从直接到间接地获得语言经验。(3)目标的内容应包括认知、情感态度和能力三个方面。
(1)知识概念的学习,包括所获知识的数量和种类,以及操作这些知识的技能和能力。如要幼儿掌握多少词汇、句式,以及懂得在什么样的语言情境上运用这些词汇和句式。(2)情感态度的学习,包括兴趣、态度和价值观等方面的变化。如形成幼儿耐心而有礼貌地倾听别人说话的态度,产生乐意在集体面前讲述自己经历的事和图片内容的兴趣,懂得并遵守语言交往中的一般规则。
(3)能力的学习,包括组词成句的能力和在具体语言情境中运用语言的能力。如能根据不同的听者和不同的情境,恰当地运用有关的词汇、语法和语调;能用连贯的语句说清楚自己所要表达的意思,也能听懂别人所表达的意思。
虽然教师们都掌握了相关的理论,但在实际制订中特别是在表述中常常存在一些问题:(4)活动目标制订中常见的几个问题: ①目标陈述混乱、针对性不强
案例:中班语言活动“我喜欢的书” 活动目标:
1、在看看、讲讲的交流活动中,丰富与阅读有关的经验;
2、体验在阅读中发现的快乐,激发阅读的兴趣。
分析目标第一条中所提到的“与阅读有关的经验”过于宽泛,空洞无物。教师对幼儿在阅读 3
方面的经验已有初步的了解,在本次活动中可以对哪些具体的阅读经验进行归纳、梳理和提升,同时又可以丰富哪些新经验,都应该在目标中予以较清晰的表述。这样才能帮助教师在设计活动过程时有针对性地围绕目标层层展开。改进建议:
1、在看看、猜猜、讲讲的过程中,进一步了解书的结构和特征,知道不同的人喜欢看不同的书;
2、提高阅读的兴趣,能积极地参与自主阅读并有初步的理解。②目标关注知识技能,淡化能力 案例:小班儿歌《伞》
老:在感受、理解儿歌的基础上,初步学念儿歌,并能大胆表现。
新:运用已有经验帮助小动物寻找合适的伞,尝试用儿歌表现,体验帮助小动物的快乐。分析:老目标指向儿歌的学习,重在知识的获得。新目标关注幼儿表现技能的提升。关注幼儿能否运用在主题中积累的已有经验。儿歌表现是一种载体,活动不特别强调学会具体的儿歌。应关注活动中幼儿的情感体验,关注幼儿的和谐发展。
③目标超难度,以长效目标代替具体活动目标。如培养语言表达能力、发展想象力等。需要长时间培养,不可能一次活动就能完成。
二、幼儿园语言教育活动的组织
活动设计的结果是一份完整的静态计划。而活动的组织实施,则由于幼儿的参与,成了一系列动态发展的进程。整个活动过程中,需要解决好不少问题,如怎样把握重点,突破难点,也就是如何将一个高层次目标准确地转化为多个低层次目标。在教学过程中如何由浅入深、由易到难,一步一步递进。还有就是时间段的分配怎样做到科学、合理。一般来说,每一个教学内容可以是一节课完成,可以是两节课完成,还可以是三节课完成,老师要根据课的内容的深浅、小朋友接受能力来看。在教学中,课的引入部分要较精彩,能吸引孩子们很快进入学习的状态,所占时间很短。课的重点、难点的教学,老师的提问要到点,才能启发和引导幼儿清晰明了了解课的重点、难点,语言太多,提问太杂、没有主次、条理不清,会把孩子们弄糊涂了,自己的思路也不清晰。这部分所占时间较多,课的结束部分自然、合理,所占时间较短。如果时间段分配地不科学、不合理,衔接的不自然,那你事先备出那么优秀的课也没有用,教学效果肯定达不到预期效果。这也是为什么有的老师,备课备的很好,但上起课来总觉得哪里欠缺,孩子掌握的不好的原因。
提问是一种最直接、最常用的师幼交流的方式,是一种重要的教学组织手段。西方学者德加默提出这样一个观点“提问得好即教得好。”这种看法不无道理,教师提问的成功与否,4
直接影响幼儿语言活动的兴趣,巧妙设问可以调动幼儿的积极性。可见,提问在语言教学中起着至关重要的作用。(1)面向全体,引发思考。
一个班级中幼儿的发展水平会有差异,个性也不同。教师设计问题时要以调动全班幼儿的兴趣与积极主动性为目标。如在故事《小猴卖0圆》的教学中,可在故事前提问“小猴要卖0,谁会来买呢?”这样的问题会让每个幼儿都能主动地参与到活动中来,且都有话可说、有话想说。在这个故事的结尾有个问题“它们的o各是什么?”根据幼儿的发展水平,我们可以把它分解,如“小鸭买的o是什么?”“小猫买的o是什么?”在幼儿回答问题后,对能力强的幼儿要适时追问,引发进一步思考。如当幼儿回答出“小鸭要买的o是游泳圈”时,可追问“你是怎么知道的?”而对能力弱的幼儿要及时给予辅助提示,如当幼儿回答不出小老虎买的是足球时,可辅助提问:“什么球可以让很多人在草地上踢来踢去?”这样可以让每个幼儿都能在自己的水平上得到发展又能体验到成功。又如《鸟窝里的树》第一个问题:封面上有什么?就是面向全体幼儿所提。(2)简洁明了,目的明确。
教师要根据幼儿的年龄特点和思维特点来设计问题,尽量避免诸如“你是不是不能同意他不这样做?”之类的拐弯抹角、深奥难懂的问题.另外,还要避免太长的陈述,有的教师怕幼儿听不清楚问的是什么,先说一大堆的话再提问题,或提出问题后,又马上加了很多说明,让幼儿不能专注思考。好的问题应能为教学目标服务,能紧扣重点和难点,由浅入深逐层展开,帮助幼儿梳理经验,使其得到多方面的发展。如故事《小猫钓鱼》中问题设计就比较简练:小猫第一次钓到鱼了吗?为什么?后来钓到鱼了吗?为什么?猫妈妈是怎么说的?等等。又如:《鸟窝里的树》,小动物想了什么办法帮助鸟先生和鸟太太,它们同意吗?为什么?
(3)一问多答,激发创造。
故事中的答案往往只有一个,但教师不能拿唯一的答案去束缚幼儿的想象、类比、推理等能力的发展,所以,教师应多设计一些能引发幼儿积极思考的开放性问题,使问题的答案多元化,尽量避免单一的选择性问题,如:“是不是?”“对不对?”。以《小猴卖0》故事为例,教师不仅要让幼儿知道小猴卖给小伙伴的是什么东西,还要问一问“如果你是小猴,会卖给小伙伴什么东西?”引导幼儿积极思考,想象出相应的物体,培养他们的发散性思维。又如《鸟窝里的树》,书中虽然告诉了幼儿答案,但教师为了培养幼儿的发散思维,引导幼儿讨论:你有什么好办法,即保护鸟窝又保护小树苗?(4)以问带问,发展语言。
设计这种问题主要是引导幼儿根据自己的理解发表观点,展开讨论。如:“你还有什么地方没有听懂?”“你喜欢故事里的谁?喜欢他什么?为什么喜欢?”这些问题可促使不同发展水平的幼儿积极思考,使他们有问题可提,有话可说。
(5)适时提问,留有余地。
提问时要注意选择适当的时机,能在开始问的不留到后面,需要在最后问的也不能提到前面来问,也可以边讲边问。但无论哪种问题都需要给幼儿预留充分思考和回答问题的空间、时间,尽可能地发挥幼儿的自主性。
(6)积极评价,提升经验问题问了并不是完事了,教师要认真倾听幼儿的回答,并给予积极的评价。教师对幼儿的答案往往有一定的期待。对与自己期待一致的答案往往会充分肯定,对其他的答案则容易出现“请你再想想吧!”“噢”“恩”等模糊的评价,有的教师还喜欢重复幼儿的答案,还有的教师对幼儿的回答一律用不同程度的肯定给予回应,全是诸如“很好”、“真不错”、“你真棒”之类的回答,这是教师对幼儿回答的不恰当的反馈,这都不利于培养幼儿的概括能力和表达能力。教师可根据幼儿的生活经验进行追问,应加强有指导性地评价,以帮助幼儿梳理和提升经验。
综上所述,一个有效的“好问题”,可以使幼儿的学习高效,更好的促进幼儿的发展。而什么问题是“好问题”却没有固定答案和标准,教师要根据特定的课堂教学情境,从整体上去把握课堂教学,只有这样,才能保证教学过程真正成为发现、分析、解决问题的过程,教师与幼儿才有可能真正对话。
第二篇:视频教程:C语言讲座全集视频
视频教程:C语言讲座全集视频
C语言讲座01 C语言讲座02 C语言讲座03 C语言讲座04 C语言讲座05 C语言讲座07 C语言讲座08 C语言讲座09 C语言讲座10 C语言讲座11 C语言讲座12 C语言讲座13 C语言讲座14
C语言讲座全集视频内容简介:
C语言是一种面向过程的计算机程序设计语言,它是目前众多计算机语言中举世公认的优秀的结构程序设计语言之一。学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法,就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识,这是我们学生最不易做到的,然而却又是最重要的。
C语言是Combined Language(组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。
C语言是由美国贝尔研究所的D.M.Ritchie于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。
C语言发展如此迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的系统软件,如DBASE Ⅳ都是由C 语言编写的。用C 语言加上一些汇编语言子程序,就更能显示C 语言的优势了,像PC-DOS、WORDSTAR等就是用这种方法编写的。
第三篇:如何学习C语言(讲座稿)
如何学习C语言(讲座稿)
今天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了所有的数字化信息,不论是一段程序,一封email,一部电影都是用一连串的1和0进行编码的;是他们发现了我们可以利用一个预先编写好的程序控制机器,并使之完成我们期望它完成的动作。建议大家在心里默念三遍他们的名字,以示仰慕。当然,如果让你们带着现在的知识回到他们的那个时代,那么就没有什么图灵奖了。
C语言程序设计是我们的专业基础课,但是C语言本身却是一个非常强大的工具,它是到目前为止最为广泛使用的工具,并且在可以预见的将来,它仍然是皈依为程序员的人们心中的神器。这个工具作什么的呢?它在人和机器之间建立了一个交流的平台。
某天,你需要完成一个求100的阶乘的作业,于是你搬来一个最新的电脑,为它安装了最新的windows vista操作系统,然后坐在它的身前,喊“喂电脑,给我计算100的阶乘”,电脑说“ok, wait a moment”; 过了一会,一盘香菇小白菜端了上来!呵呵,电脑不是waiter, 你喂它它是不会有反应的,如果你真的wait a moment, 恐怕你就需要wait one more moment了!一万年后,人们就把你命名成“望夫崖”。
既然电脑不是伺应生,听不懂我们的话,那么我们要怎么控制它呢?如果你们给我装聋作哑,我会告诉你期末挂了你,哦,你立马老实了!对于电脑,我要怎么才能使唤它,让它为我工作呢?不错,我们有个强力工具,C语言!好,我们把上面的场景复习一下:你要我算100的阶乘,于是我去机房上机,编写了一个程序:
运行程序,哦,结果出来了!
有人认为,现在是java和.net的时代,有谁还需要C以及汇编呢?孰不知,java和.net是建立在软件之上的,是为了垄断市场而建立起来的体系,犹如挖好一个金壁辉煌的坑,请你往下跳,还自以为站在巨人的肩膀上,事实上成了坑底之蛙。要成为一个真正的程序员,并期望成为一个程序员高手,必须从机器出发,从cpu到操作系统,再到软件体系,高手的境界就是悟道后的明镜灵台,软件设计出神入化,我就是程序,程序就是我。
听完我讲高手的境界,于是乎你很受感动,说:我要努力学习,向高手学习!隔天就买了一堆MFC, VB, JAVA以及.NET的书回来,早上五点钟起来背书!这样是不行的,正确的入门方法只有一个,要证大道,唯有此法!同学们,从C语言入手,努力学好C语言!
旁观者李四说:此人大笨也!我用鼠标随便拖几个控件,就是一个xxx管理系统了,你用C语言怕是一年也写不出来吧!好吧,我要承认,讲这话的都已经是mS的奴才了,别的我不了解,MFC本身就是一个封闭的架构,从MFC入手学习,你只会形成一种封闭的思维模式,因为MS希望很多人只学会表面的东西,不致成为高手,所以它大力推荐所谓的可视化的程序开发工具,也真有很多人愿意上他的当,最后真正迷失方向。说他坐不了程序吧,他也可以作,但是如果程序复杂一点,出现问题时,问题出再哪里就搞不清楚了,反正是不清楚!
梁肇新,大牛啊,他说:“我就搞不懂了,用鼠标怎么写程序呢?在我的公司里,高手的键盘响个不停,鼠标偶尔响一下,新手是鼠标响个不停,键盘偶尔响一下,他们的薪水相差的就不是一倍那么多了!”
C语言是各大操作系统的基础,Unix、Linux、Windows其内核都清一色是C语言开发的,(某些地方是和汇编语言混合开发的),君不见Windows API都是C语言函数的接口?Unix/Linux绝大多数应用都是C语言开发的;Windows应用程序用纯API开发已然不多,大多都是依靠某种Application Framework,比如所谓的VC++,其实就是指VC IDE + C++语言 + MFC(现在重点已转向ATL、WTL),但是Windows服务、网络、驱动程序等底层软件,还是C语言开发的。各种语言的编译器,包括java虚拟机,都是用C语言开发的。各种嵌入式设备,如手机、PDA也都是C语言开发的。C语言历史悠久,其内容也绝非谭浩强老师的《C语言程序设计(第二版)》所描述的那么简单——那本书只是针对中国国情的教学入门书而已。
学生总喜欢问:那种语言好?学那种语言有前途?这种问题天天在讨论,永无休止。其实我觉得大家所关心的,无非是那种语言更有“钱途”,学习那种语言毕业后能够轻松找到高薪的工作——当年我也是这么想。那么,我告诉你,如果你精通C语言,请你去华为,不要在小池塘里浪费青春了!
OK, 听了我苦口婆心的劝告,你准备从C语言入手,开始攀登程序员高手这座山峰了,在你出发之前,你的行囊中需要准备什么呢?
第一个要装进行囊和你一起前进是“规范的格式”,有很多教科书,参考书,不太注重程序的格式的问题,写出的程序就象一堆堆的垃圾一样,这也导致了现在很多人写的程序中有很多的废码,垃圾代码,这和那些入门的书有非常大的关系,要把那些作者都拿来打打PP。真正的商业程序绝对是规范的,张三写的程序和李四的程序格式大致相同,各种标识符的命名规则一样,否则谁也看不懂你写的程序。如果写出来的代码谁也看不懂,那绝对是垃圾。如果要把那些垃圾翻半天,勉强才把金子找出来,那这样的程序不如不要,还不如重新写过,这样,思路会更清楚一点。所以说,规范的格式是入门的基础。那这个规范的格式包括什么呢?不少啊,要坚持才能做到!长标志符命名,代码缩进,一对大括号范围不超过一屏幕,等等。
第二个要装进行囊的是耐心,所谓工欲善其事,必先利其器。要想成功,没有一个相对平淡的过程是不可能的。这不仅仅指你在学习过程中要有耐心,要循序渐进,而起也说的是另一个重要的方面:调式程序。调试是写程序过程中一个重要的方面,如果有人能一次写成程序,牛啊,而且是大牛,不光是大牛,还是老子骑的那头青牛,凡人是做不道的!调试是每个程序必定经历的历程。经常有同学问我:老师,我的程序完全没错误啊,都是照书抄的啊!怎么就运行不出来呢?对于这个问题我也看不出来!你们有问题可以找我,找其他的老师,老师找谁啊?李师父?那是很荒谬的!我就只好坐下来调试,这个说实话,调试是很枯燥的,所以有同学抱怨说XXXXX作太快,不理解为什么要这样,为什么要那样,我的脾气不太好,一烦躁就会骂人地,所以,这个就需要你们自己修炼内功了!
有了这两个就可以了,可以出发了,估计有人说了,英语和数学不要了?大家都说大学生了,这种问题就不要问了嘛!你已经用早晨和傍晚的时光学习了英语了,我这个没有要去,计算机专业英语超简单,小学水平而已,记住一些专业词汇就可以了!关于数学,说数学好,写程序就好是没有科学根据的!我就有个同学,数学回回100分,写程序也就是hello world的程度,不过人家现在是数学博士了!惭愧啊!做为的大学生,而且是我们这个专业的大学生,已经完全具备了写程序所需要的数学素养了!所以这个不是我们要担心的,Ready? Go!
第一招,学什么呢?打狗棍法!呵呵有一个伟人说过:“重复权威是成熟的必经之路”,这是站在巨人的肩膀上的做法,习武之人首先要学的都是各种套路,比方说辟邪剑法,然后才能融会贯通,开宗流派;我们学习写程序也要这样来,这是一个捷径,帮你走得更远得捷径。
看书,看好书!书中所写,是前人数十年经验所写,看十本书,就相当于汲取了前人数十年的功力,那么你的内功也会迅速上升1甲子。:)书当然要看好书,只有好书才营养丰富。要做到读书破万卷,编程如有神;枯燥的看书是很郁闷的,很容易变成化石!现在很多是书都是用源码说明问题的,源码就像是动画、就像是幻灯片,把书中的招式一一演练给你看。可以说高手的经验大都是源自代码,最后也都化成源码展现在大家面前,把书上的程序一个一个的输入(用键盘,用你的手指)到电脑中,编译运行。自己手工输入这一步不能省略,现在很多书有配套源码,很多同学或者成年人学习的时候都耍小聪明,直接把源码复制过去编译运行,hoho, 这是没有效果的。
自然,我让你输入程序不是让你练习盲打,你在输入的过程就可以品出程序的好坏来了,如果发现自己输入了很多重复代码,那至少这个程序的结构就不好了,穷则变,变则通嘛,你就想改进它啊,这不是很好吗?
当然,程序输得多了,盲打功力也上了一个台阶,键盘敲得快了,薪水也跟着涨上去了!^_^
不过,键盘敲得快不代表你的程序就写得好,否则学校只要每个学生发一份盲打联系软件,四年毕业后,个个都是程序高手了!
好了,你输了一个程序进电脑了,锻炼了手部肌肉,也运行出了结果,愉悦了身心,就此满足了?那离高手还远呢,要变成高手,你还要锻炼一下你得脑部肌肉!拿起你得笔,拿起你得纸,用你得大脑,这号称世界上最精密的机器来运行你输入的程序,记录下不同运行时刻变量的值,记录下程序的运行分支,最后发现,这个程序被你解剖到了纸上,我相信也解剖到了你的心里!这是捷径的核心,一定要记住,输入的程序不是说正确运行就完事了,要去阅读一下代码,利用笔和纸做辅助工具,做一下笔记,这就是重复权威,当然,如果你是天才,那请你塞上耳朵,你不在我们讨论的范围之内!
为什么这一步很重要呢?
大家刚开始学习的时候,是不是有种感觉,如果让你写一个程序,你从哪里下手呢?前面?后面?上面?下面?为了解决这个问题,我的程序该如何写呢?抓耳挠腮,好烦啊,于是乎干脆睡觉去,不写了,你看,这种行为是要打PP的!练武功,总是先重复师父的动作,才能有自己的动作,所以也让我们重重复别人写的程序开始,然后再写自己的程序吧!遵循这个方法,你们就跟着组织走上了通往罗马的大路了!
接下来,你得走啊,不走怎么到罗马呢? 把你学会的程序设计方法应用到你写的程序中去啊!
某天,你看到这里有个问题,你有了想法,怎么办?上机去,和键盘奋战去!stop, stop!暂停一下,上机之前,不要忘记了你的笔和纸,勇敢地把你的想法写下来,如果写不出来,就不要去机房浪费爸爸妈妈的血汗钱了!
当然,你不能乱写啊,写出来的东西怎么样才叫不是乱写的呢?实践是检验真理的唯一标准!用你的大脑去运行一边啊,不是叫“人程序合一”嘛?,这就是了!学武功就要学绝世武功!虽然号称最精密,实际效果上,人脑还是没有电脑的准确度的,如果你的大脑能马马虎虎地运行出来之后,那么OK,带上规范的格式和耐心,去上机吧!
自然,我们说一天到晚面对字符界面的TC是有些郁闷,大家都习惯了windows,微软的客户体念设计中心可不是吹出来的!windows多好,色彩斑斓的。当你修炼到我这个程度的时候,非要听这京剧才文思泉涌的写程序的时候,当然要用windows下的集成开发环境了。但是对大家来说,不是现在,windows是很危险地,程序员还是回到TC中去吧!TC至少有一个好处,可以锻炼我们使用组合键的习惯,可以锻炼我们使用键盘编程的习惯,回想我们刚刚说的梁某说的话“用鼠标怎么编程呢?”有同学不免要提出疑问了,我是80年代甚至是90年代生人,你还让我面对那么枯燥的输入输出界面?我跟你有代沟!我期待有更丰富更吸引人的交互手段哦,这个问题问得好,C语言中也有图形啊,完全可以满足大家寓教于乐得心理!让我们来看这个程序,很简单,就是在屏幕上话一个周期得正弦波!
(参见ppt......)运行效果是不是很好?你学数据结构的时候,树啊,图啊,你都可以这样输出啊,很多地方你都可以做的更好呢!
好了,到这里,我们基本解决了在学习C语言程序设计时的一些方法论的东西,关于具体的学习过程,如果你要我在这里给你们讲指针要如何学习?函数要如何学习?那我讲的内容也不会多于任课老师的内容,或者开个专题叫“如何学好指针”,当然,如果你愿意和我探讨一下指针的本质和高级应用的话,课后,课后啊!
现在,我们要谈最后一个问题!我们这个专业的女生的比例较其他的工科专业还是要高一些的,不知道为什么经常到如下的说法:1,我是女生,我不适合写程序啊;2,我的性格比较外向,不适合坐下来安静的写程序呢!
性格外向不适合写程序?你们看我啊,觉得我是性格内向的任吗?程序员也非常需要发散的外向型思维,老比,地球上最富裕的人说,他招程序员更愿意招原来是学物理的人,因为学物理的人的思维可以从极大(宇宙)到极小(原子)。所有,说性格外向不适合写程序的话是懒惰的借口,是要掩盖他不可告人的目的的接口!狂打PP!
女生又为什么不适合写程序呢?我到知道一个理由,对皮肤不好啊!你们看我这满脸沧桑的,就知道了!除此之外,还会又其他的理由吗?英国科学家早就证明了男女的区别完全不是人们想象的那样,很多方面女性是要超过男性的!想想以前的母系社会,现在的惠安女!我就见过一个上市公司的研发二部全是女性!,从软件工程师到硬件工程师再到部门经理都是女性,业绩根本不输其他的研发部门,这个公司在湖南,不是我瞎掰的!
同学们,问大家一个问题,“二十一世纪最贵是什么?”,不错,是人才,所以,我可以负责任地告诉大家,“不学好C语言,老师很生气”,老师很生气,后果怎么样啊?是很严重!That’s all, thank you!
第四篇:C语言高级程序设计讲座1(转)
C语言高级程序设计讲座1 C语言程序设计
2009-07-27 08:44
阅读153
评论0
字号: 大大
中中
小小
第一讲
C语言图形方式下的编程 前言
一年前我刚刚接触网站制作,正值我学C语言,便做了一个鹏程C语言教学网站,虽说取了这么一个大名,但是其实当时我也不会什么。
一年转眼就过去了,对于C语言我倒没什么深入的研究,但是我的网站却是一而再的改版,算来现在已经第六版了。
时代的飞速发展提醒我们,停滞不前就是退步!所以我们还要前进,目前我在学习ASP.net,下一个目标就是把鹏程C语言教学网站用ASP.net建成真正的学习乐园,走进千万C语言爱好者的心中!
本次讲座参考了一些教材以及网上的一些资料,如有侵权,请立即给我发信通知我:pch1982cn@yahoo.com.cn 因种类繁多,在此不能一一列出,请见谅!
如果您对本教程感兴趣,如要转载,也请通知我!
现在我们就开始第一讲:C图形方式下的编程 学习目标
·了解PC显示系统的结构
·C语言图形初始化的一般方法
·C语言常用的图形处理函数 显示系统简介
PC机显示系统一般是由显示器和显示卡组成。显示器(Monitor)是独立于主机的一种外部设备。显示卡(Adapter)是插在Pc主机上的一块电路板。PC机对显示屏幕的所有操作都是通过显示卡来实现的。
显示系统的主要特性
1.显示分辨率
显示分辨率是指屏幕上所能显示的像素点数,通常用列数和行数的乘积宋表示。为了获得良好的显示效果,要求显示器的分辨率与对应分辨率的显示卡相匹配。通常,高分辨率的显示效果比低分辨率的效果好。但是,显示分辨率的提高对显示器与显示卡的硬、软件要求更高。特别是分辨率的提高在很大程度上受到显示器的显示尺寸和扫描频率的限制,也受到显示卡的显存的限制。
根据应用情况的不同,在不超过显示器最高分辨率的条件下,可以通过对显示卡的设置而使用不同的分辨率。
2.显示速度
显示速度是指在屏幕上显示图形和字符的速度。显示速度与显示分辨率和显示器的扫描频率密切相关。显示分辨率越高,整个屏幕上的像素点数就越多,显示速度就越慢。在这种情况下,为了提高显示速度,就需要提高扫描频率。
如果显示器只有一种扫描频率,则它只能与一种显示卡相匹配使用。随着显示技术的发展,目前一般的显示器可以适应具有多种分辨率与显示速度的显示卡。
颜色与灰度是衡量显示系统的重要参数。单色显示器只有亮和暗两种灰度;彩色显示器的颜色和灰度要受显示内存的限制,分辨率越高,颜色越丰富,所需要的显示内存就越多。
4.图形显示能力
图形显示能力是显示系统对屏幕上的每一个像素点都可以设置成不同的值的能力。通常,图形显示对硬件的要求比字符显示要求高得多,同时,图形显示对显示缓冲区的要求也比字符显示时高得多。显示卡的种类
常用的显示卡有以下几种 1.MDA卡
MDA卡(Monochrome Display Adapter——单色字符显示器适配卡)与单色字符显示器配接,它只支持字符显示功能,无图形功能。
2.HGC卡
HGC卡(Hercules GraphicsCard——单色显示图形卡)不仅支持字符显示,而且支持单色图形功能。在图形方式下,其图形显示分辨率最高可达720~348点阵。通过软件的设置,还可以支持640~400单色图形显示以及模拟CGA卡图形方式。
3.CGA卡
CGA卡(ColorGraphicsAdapter--彩色图形显示卡)支持字符/图形两种方式。
在字符方式下,它支持80列、25行及奶列、25行的方式,颜色可选16种。但是字符的质量比较差,只有8X8点阵。在图形方式下,它支持最大为640~200分辨率,但只有黑、白两种颜色。此外,它还支持320~200的分辨率,每个像素点可以有四种颜色。CGA卡有16K的显示缓冲区,用于显示字符及属性或图形方式下的图形数据。
4.EGA卡
EGA卡(Enhanced GraphicsAdapter——增强型图形显示卡)的字符显示能力和图形显示能力都比CGA卡有了较大的提高,显示分辨率达到640~350,最高分辨率图形方式的颜色达到了16种。EGA卡的显示模式也比CGA卡丰富,并且兼容CGA卡及MDA卡的显示模式。
5.VGA卡
VGA卡(Video GraphicsArray一一视频图形阵列)是一种功能十分强大、颜色丰富的显示卡。VGA的标准分辨率可达到640~480,并且具有16种颜色。一些兼容的VGA卡(如TVGA卡、EVGA卡)的分辨率可达640~480(256种颜色)、800~600(16种颜色)或1024~768(16种颜色)。VGA卡兼容MDA卡、CGA卡、EGA卡的所有显示模式。
随着显示技术的发展,目前的显示卡的分辨率一般都可以达到1024X768,显示32位真彩(232种颜色)。
视频BIOS 视频BIOS(BasicI/OSystem基本输入/输出系统)是与显示卡配套的一个重要组成部分。用户通过调用它可以完成一些与显示有关的控制功能。对于要用到显示系统的一般程序设计都可以通过调用视频BIOs或视频函数库来完成。但要想获得更高性能的显示程序,还需要对显示卡的寄存器和显示内存直接进行编程。显示模式
显示模式按功能可以分为字符模式和图形模式两大类。
字符模式也称为字母数字模式,即A/N模式(A1phaNumbermode)。在这种模式下,显示缓冲区中存放的是显示字符的代码和属性,而显示屏幕被分为若干个字符显示行和列。图形模式(Graphics mode)也称为APA模式(A1l Points Addressablemode)。在这种模式下,显示缓冲区中存放的是显示器屏幕上的每个像素点的颜色或灰度值,而显示屏幕被划分为像素行和像素列。
由于显示卡的种类很多,其中有些显示模式在不同类型的显示卡及不同厂家的显示卡之间是通用的,这类显示模式称为标准模式。还有些模式是专用的,称为非标准模式。通常,显示模式号小于14H的是标准模式;其他则为非标准模式。图形模式的初始化
不同的显示器适配器有不同的图形分辨率。即使是同一显示器适配器,在不同模式下也有不同分辨率。因此,在屏幕作图之前,必须根据显示器适配器的种类将显示器设置成为某种图形模式。在未设置图形模式之前,微机系统默认屏幕为文本模式(80列,25行字符模式),此时所有图形函数均不能工作。
设置屏幕为图形模式,可用下列图形初始化函数:
void far initgraph(int far* gdriver,int far *gmode,char *path);
其中gdriver和gmode分别表示图形驱动器和模式,path是指图形驱动程序所在的目录路径。图形驱动程序由TurboC出版商提供,文件扩展名为.BGI。根据不同的图形适配器有不同的图形驱动程序。例如对于EGA、VGA图形适配器的图形驱动程序为EGAVGA.BGI。
有时编程者并不知道所用的图形显示器适配器种类,而且我们为了将编写的程序可以用于不同图形驱动器,增强程序的通用性,我们通常不指定图形显示器适配器种类,而使用Turbo C提供了一个自动检测显示器硬件的函数,其调用格式为:
void far detectgraph(int *gdriver, *gmode);
其中gdriver和gmode意义同上。
例1:自动进行硬件测试后进行图形初始化
#include “graphics.h”
main()
{
int gdriver, gmode;
detectgraph(&gdriver, &gmode);
/*自动测试硬件*/
printf(“driver is %d, mode is %dn”, gdriver,gmode);
/*输出结果*/
getch();
initgraph(&gdriver, &gmode, “");
/* 根据测试结果初始化图形*/
circle(320,240,50);
circle(320,240,80);
circle(320,240,110);
getch();
closegraph();
} 上例程序中先对图形显示器自动检测,然后再用图形初始化函数进行初始化设置。其中,closegraph()为退出图形状态的函数,其调用格式为:voidfarclosegraph(void);调用该函数后可退出图形状态而进入文本方式,并释放用于保存图形驱动程序和字体的系统内存。同时TurboC提供了一种更简单的初始化图形的方法,即用gdriver=DETECT语句后再跟initgraph()函数就行了。比如,上例可改为例2的样子。例2:
#include ”graphics.h“
main()
{
int gdriver=DETECT, gmode;
initgraph(&gdriver, &gmode, ”“);
circle(320,240,50);
circle(320,240,80);
circle(320,240,110);
getch();
closegraph();
} 屏幕颜色的设置
对于图形模式的屏幕颜色设置,同样分为背景色的设置和前景色的设置。在Turbo c中分别使用以下两个函数:
void far setbkcolor(int color);设置背景色
void far setcolor(int color);设置作图色
其中color为图形方式下颜色的规定数值,符号常数及数值如下所示。符号常数
数值
含义
字符或背景 BLACK
0
黑
两者均可 BLUE
兰
两者均可 GREEN
绿
两者均可 CYAN
青
两者均可 RED
红
两者均可
MAGENTA
洋红
两者均可 BROWN
棕
两者均可
LIGHTGRAY
淡灰
两者均可 DARKGRAY
深灰
只用于字符 LIGHTBLUE
淡兰
只用于字符 LIGHTGREEN
淡绿
只用于字符 LIGHTCYAN
淡青
只用于字符 LIGHTRED
淡红
只用于字符
LIGHTMAGENTA
淡洋红
只用于字符 YELLOW
黄
只用于字符 WHITE
白
只用于字符 BLINK
128
闪烁
只用于字符
清除图形屏幕内容使用清屏函数,其调用格式如下 void far cleardevice(void);有关颜色设置、清屏函数的使用请看例3。例3:
#include ”stdio.h“
#include ”graphics.h“
main()
{
int gdriver, gmode, i,j;
gdriver=DETECT;
initgraph(&gdriver, &gmode, ”“);/*图形初始化*/
setbkcolor(0);
/*设置图形背景*/
cleardevice();
for(i=0;i<=15;i++)
{
setcolor(i);
/*设置不同作图色*/
circle(319, 239, 20+i*15);
/*画半径不同的圆*/
delay(3000);
/*延迟3000毫秒*/
}
for(i=0;i<=15;i++)
{
setbkcolor(i);
/*设置不同背景色*/
cleardevice();
for(j=0;j<=15;j++)
{
setcolor(j);
/*设置不同作图色*/
circle(319, 239, 20+j*15);
/*画半径不同的圆*/
delay(3000);
}
}
getch();
closegraph();
}
另外,TURBO C也提供了几个获得现行颜色设置情况的函数。
int far getbkcolor(void);返回现行背景颜色值。
int far getcolor(void);返回现行作图颜色值。
int far getmaxcolor(void);返回最高可用的颜色值。基本图形函数
基本图形函数包括画点,线以及其它一些基本图形的函数。本节对这些函数作一全面的介绍。
画点
1.画点函数 void far putpixel(int x, int y, int color);该函数表示有指定的象元画一个按color 所确定颜色的点。对于颜色color的值可从上表中获得而对x,y是指图形象元的坐标。在图形模式下,是按象元来定义坐标的。对VGA适配器,它的最高分辨率为640x480,其中640为整个屏幕从左到右所有象元的个数,480为整个屏幕从上到下所有象元的个数。屏幕的左上角坐标为(0,0),右下角坐标为(639, 479),水平方向从左到右为x轴正向,垂直方向从上到下为y轴正向。TURBO C的图形函数都是相对于图形屏幕坐标,即象元来说的。关于点的另外一个函数是: int fargetpixel(int x, int y);它获得当前点(x, y)的颜色值。
2.有关坐标位置的函数
int far getmaxx(void);返回x轴的最大值。
int far getmaxy(void);返回y轴的最大值。
int far getx(void);返回游标在x轴的位置。
void far gety(void);返回游标有y轴的位置。
void far moveto(int x, int y);移动游标到(x, y)点,不是画点,在移动过程中亦画点。
void far moverel(int dx, int dy);移动游标从现行位置(x, y)移动到(x+dx, y+dy)的位置,移动过程中不画点。
画线与线型设定
1.画线函数
TURBO C提供了一系列画线函数,下面分别叙述:
void far line(int x0, int y0, int x1, int y1);画一条从点(x0, y0)到(x1, y1)的直线。
void far lineto(int x, int y);画一作从现行游标到点(x, y)的直线。
void far linerel(int dx, int dy);画一条从现行游标(x,y)到按相对增量确定的点(x+dx, y+dy)的直线。
void far circle(int x, int y, int radius);以(x, y)为圆心,radius为半径,画一个圆。
voidfar arc(int x, int y, int stangle, int endangle,int radius);以(x,y)为圆心,radius为半径,从stangle开始到endangle结束(用度表示)画一段圆弧线。在TURBO C中规定x轴正向为0度,逆时针方向旋转一周,依次为90,180, 270和360度(其它有关函数也按此规定不再重述)。
voidellipse(int x, int y, int stangle, int endangle,int xradius,intyradius);以(x, y)为中心,xradius,yradius为x轴和y轴半径,从角stangle开始到endangle结束画一段椭圆线,当stangle=0,endangle=360时,画出一个完整的椭圆。
void far rectangle(int x1, int y1, int x2, inty2);以(x1, y1)为左上角,(x2, y2)为右下角画一个矩形框。
voidfar drawpoly(int numpoints, int far *polypoints);画一个顶点数为numpoints,各顶点坐标由polypoints给出的多边形。polypoints整型数组必须至少有2倍顶点数个无素。每一个顶点的坐标都定义为x,y,并且x在前。值得注意的是当画一个封闭的多边形时,numpoints的值取实际多边形的顶点数加一,并且数组polypoints中第一个和最后一个点的坐标相同。
2.设定线型函数
在没有对线的特性进行设定之前,TURBO C 用其默认值,即一点宽的实线,但TURBO C 也提供了可以改变线型的函数。线型包括:宽度和形状。其中宽度只有两种选择:一点宽和三点宽。而线的形状则有五种。下面介绍有关线型的设置函数。
void far setlinestyle(intlinestyle,unsigned upattern,int thickness);该函数用来设置线的有关信息,其中linestyle是线形状的规定,见下表:
有关线的形状(linestyle)━━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数 数值 含义
─────────────────────────
SOLID_LINE 0 实线 DOTTED_LINE 1 点线 CENTER_LINE 2 中心线 DASHED_LINE 3 点画线
USERBIT_LINE 4 用户定义线
━━━━━━━━━━━━━━━━━━━━━━━━━ 有关线宽(thickness)thickness是线的宽度,见下表。
━━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数 数值 含义
─────────────────────────
NORM_WIDTH 1 一点宽 THIC_WIDTH 3 三点宽
━━━━━━━━━━━━━━━━━━━━━━━━━
对于upattern,只有linestyle选USERBIT_LINE 时才有意义(选其它线型,uppattern取0即可)。此进uppattern的16位二进制数的每一位代表一个象元,如果那位为1,则该象元打开,否则该象元关闭。void far getlinesettings(struct linesettingstypefar *lineinfo);该函数将有关线的信息存放到由lineinfo 指向的结构中,表中linesettingstype的结构如下:
struct linesettingstype { int linestyle;unsigned upattern;int thickness;}
例如下面两句程序可以读出当前线的特性 struct linesettingstype *info;getlinesettings(info);void far setwritemode(int mode);该函数规定画线的方式。如果mode=0,则表示画线时将所画位置的原来信息覆盖了(这是TURBO C的默认方式)。如果mode=1,则表示画线时用现在特性的线与所画之处原有的线进行异或(XOR)操作,实际上画出的线是原有线与现在规定的线进行异或后的结果。因此,当线的特性不变,进行两次画线操作相当于没有画线。
封闭图形的填充
填充就是用规定的颜色和图模填满一个封闭图形。
1.先画轮廓再填充
TURBO C提供了一些先画出基本图形轮廓,再按规定图模和颜色填充整个封闭图形的函数。在没有改变填充方式时,TURBO C 以默认方式填充。下面介绍这些函数。void far bar(int x1, int y1, int x2, int y2);确定一个以(x1, y1)为左上角,(x2, y2)为右下角的矩形窗口,再按规定图模和颜色填充。说明:此函数不画出边框,所以填充色为边框。void far bar3d(int x1, int y1, int x2, int y2,int depthint topflag);当topflag为非0时, 画出一个三维的长方体。当topflag为0时,三维图形不封顶,实际上很少这样使用。说明: bar3d()函数中,长方体第三维的方向不随任何参数而变,即始终为45度的方向。
void far pieslice(int x,int y,int stangle,int endangle,int radius);画一个以(x, y)为圆心,radius为半径,stangle为起始角度,endangle 为终止角度的扇形,再按规定方式填充。当stangle=0,endangle=360 时变成一个实心圆,并在圆内从圆点沿X轴正向画一条半径。
void far sector(int x, int y,int stanle,intendangle,int xradius, int yradius);画一个以(x, y)为圆心分别以xradius, yradius为x轴和y轴半径,stangle 为起始角,endangle为终止角的椭圆扇形,再按规定方式填充。
2.设定填充方式
TURBO C有四个与填充方式有关的函数。下面分别介绍:
void far setfillstyle(int pattern, int color);color的值是当前屏幕图形模式时颜色的有效值。pattern的值及与其等价的符号常数如下表所示。关于填充式样pattern的规定: ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数 数值 含义
─────────────────────────── EMPTY_FILL 0 以背景颜色填充 SOLID_FILL 1 以实填充 LINE_FILL 2 以直线填充
LTSLASH_FILL 3 以斜线填充(阴影线)SLASH_FILL 4 以粗斜线填充(粗阴影线)BKSLASH_FILL 5 以粗反斜线填充(粗阴影线)LTBKSLASH_FILL 6 以反斜线填充(阴影线)HATCH_FILL 7 以直方网格填充 XHATCH_FILL 8 以斜网格填充
INTTERLEAVE_FILL 9 以间隔点填充 WIDE_DOT_FILL 10 以稀疏点填充 CLOSE_DOS_FILL 11 以密集点填充 USER_FILL 12 以用户定义式样填充
━━━━━━━━━━━━━━━━━━━━━━━━━━━
除USER_FILL(用户定义填充式样)以外,其它填充式样均可由setfillstyle()函数设置。当选用USER_FILL时,该函数对填充图模和颜色不作任何改变。之所以定义USER_FILL主要因为在获得有关填充信息时用到此项。
void far setfillpattern(char * upattern,int color);设置用户定义的填充图模的颜色以供对封闭图形填充。其中upattern是一个指向8个字节的指针。这8个字节定义了8x8点阵的图形。每个字节的8位二进制数表示水平8点,8个字节表示8行,然后以此为模型向个封闭区域填充。
void far getfillpattern(char * upattern);该函数将用户定义的填充图模存入upattern指针指向的内存区域。
void far getfillsetings(struct fillsettingstypefar * fillinfo);获得现行图模的颜色并将存入结构指针变量fillinfo中。其中fillsettingstype结构定义如下: struct fillsettingstype { int pattern;/* 现行填充模式 * / int color;/* 现行填充模式 * / };
3.任意封闭图形的填充
截止目前为止,我们只能对一些特定形状的封闭图形进行填充,但还不能对任意封闭图形进行填充。为此,TURBO C 提供了一个可对任意封闭图形填充的函数,其调用格式如下: void far floodfill(int x, int y, int border);其中:x, y为封闭图形内的任意一点。border为边界的颜色,也就是封闭图形轮廓的颜色。调用了该函数后,将用规定的颜色和图模填满整个封闭图形。注意:
1.如果x或y取在边界上,则不进行填充。
2.如果不是封闭图形则填充会从没有封闭的地方溢出去,填满 其它地方。
3.如果x或y在图形外面,则填充封闭图形外的屏幕区域。
4.由border指定的颜色值必须与图形轮廓的颜色值相同,但填充色可选任意颜色。下例是有关floodfill()函数的用法,该程序填充了bar3d()所画长方体中其它两个未填充的面。
有关图形窗口和图形屏幕操作函数
1、图形窗口操作
象文本方式下可以设定屏幕窗口一样,图形方式下也可以在屏幕上某一区域设定窗口,只是设定的为图形窗口而已,其后的有关图形操作都将以这个窗口的左上角(0, 0)作为坐标原点,而且可为通过设置使窗口之外的区域为不可接触。这样,所有的图形操作就被限定在窗口内进行。
void far setviewport(int xl,int yl,int x2, int y2,int clipflag);设定一个以(xl,yl)象元点为左上角,(x2,y2)象元为右下角的图形窗口,其中x1,y1,x2,y2是相对于整个屏幕的坐标。若 clipflag为非0,则设定的图形以外部分不可接触,若clipflag为0,则图形窗口以外可以接触。
void far clearviewport(void);清除现行图形窗口的内容。
void far getviewsettings(struct viewporttypefar * viewport);获得关于现行窗口的信息,并将其存于viewporttype定义的结构变量viewport中,其中viewporttype的结构说明如下: struct viewporttype { int left, top, right, bottom;int cliplag;};注明:
①窗口颜色的设置与前面讲过的屏幕颜色设置相同,但屏幕背景色和窗口背景色只能是一种颜色,如果窗口背景色改变,整个屏幕的背景色也将改变这与文本窗口不同。
②可以在同一个屏幕上设置多个窗口,但只能有一个现行窗口工作,要对其它窗口操作,通过将定义那个窗口的setviewport()函数再用一次即可。
③前面讲过图形屏幕操作的函数均适合于对窗口的操作。
2、屏幕操作
除了清屏函数以外,关于屏幕操作还有以下函数:
void far setactivepage(int pagenum);void far setvisualpage(int pagenum);这两个函数只用于EGA,VGA 以及HERCULES图形适配器。setctivepage()函数是为图形输出选择激活页。所谓激活页是指后续图形的输出被写到函数选定的 pagenum页面,该页面并不一定可见。setvisualpage()函数才使pagenum所指定的页面变成可见页。页面从0开始(Turbo C默认页)。如果先用setactivepage()函数在不同页面上画出一幅幅图像,再用setvisualpage()函数交替显示,就可以实现一些动画的效果。
void far getimage(int xl,int yl, int x2,int y2,void far *mapbuf);void far putimge(int x,int,y,void * mapbuf, int op);unsined far imagesize(int xl,int yl,int x2,int y2);这三个函数用于将屏幕上的图像复制到内存,然后再将内存中的图像送回到屏幕上。首先通过函数imagesize()测试要保存左上角为(xl,yl),右上角为(x2,y2)的图形屏幕区域内的全部内容需多少个字节,然后再给mapbuf分配一个所测数字节内存空间的指针。通过调用getimage()函数就可将该区域内的图像保存在内存中,需要时可用putimage()函数将该图像输出到左上角为点(x, y)的位置上,其中getimage()函数中的参数op规定如何释放内存中图像。关于这个参数的定义参见下表: putimage()函数中的op值
━━━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数 数值 含 义
────────────────────────── COPY_PUT 0 复制
XOR_PUT 1 与屏幕图像异或的复制 OR_PUT 2 与屏幕图像或后复制 AND_PUT 3 与屏幕图像与后复制 NOT_PUT 4 复制反像的图形 ━━━━━━━━━━━━━━━━━━━━━━━━━━
对于imagesize()函数,只能返回字节数小于64K字节的图像区域,否则将会出错,出错时返回-1。这在图像动画处理、菜单设计技巧中非常有用。图形模式下的文本输出
在图形模式下,只能用标准输出函数,如printf(),puts(),putchar()函数输出文本到屏幕。除此之外,其它输出函数(如窗口输出函数)不能使用,即是可以输出的标准函数,也只以前景色为白色,按80列,25行的文本方式输出。
Turbo C2.0也提供了一些专门用于在图形显示模式下的文本输出函数。下面将分别进行介绍。
1.文本输出函数 void far outtext(char far *textstring);该函数输出字符串指针textstring所指的文本在现行位置。
void far outtextxy(int x, int y, char far *textstring);该函数输出字符串指针textstring所指的文本在规定的(x, y)位置。其中x和y为象元坐标。说明:
这两个函数都是输出字符串,但经常会遇到输出数值或其它类型的数据,此时就必须使用格式化输出函数sprintf()。sprintf()函数的调用格式为: int sprintf(char *str, char *format, variable-list);它与printf()函数不同之处是将按格式化规定的内容写入str 指向的字符串中,返回值等于写入的字符个数。
例如:
'C110F1sprintf(s, ”your TOEFL score is %d", mark);这里s应是字符串指针或数组,mark为整型变量。
2.有关文本字体、字型和输出方式的设置
有关图形方式下的文本输出函数,可以通过setcolor()函数设置输出文本的颜色。另外,也可以改变文本字体大小以及选择是水平方向输出还是垂直方向输出。
void far settexjustify(int horiz, int vert);该函数用于定位输出字符串。
对使用outtextxy(int x, int y, char far *str textstring)函数所输出的字符串,其中哪个点对应于定位坐标(x,y)在TurboC2.0中是有规定的。如果把一个字符串看成一个长方形的图形,在水平方向显示时,字符串长方形按垂直方向可分为顶部,中部和底部三个位置,水平方向可分为左,中,右三个位置,两者结合就有9个位置。
settextjustify()函数的第一个参数horiz 指出水平方向三个位置中的一个,第二个参数vert指出垂直方向三个位置中的一个,二者就确定了其中一个位置。当规定了这个位置后,用outtextxy()函数输出字符串时,字符串长方形的这个规定位置就对准函数中的(x,y)位置。而对用outtext()函数输出字符串时,这个规定的位置就位于现行游标的位置。有关参数 horiz和vert的取值参见下表: 参数horiz和vert的取值
━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数 数值 用于
────────────────────────
LEFT_TEXT 0 水平RIGHT_TEXT 2 水平BOTTOM_TEXT 0 垂直 TOP_TEXT 2 垂直
CENTER_TEXT 1 水平或垂直
━━━━━━━━━━━━━━━━━━━━━━━━ void far settextstyle(int font, int direction,int charsize);该函数用来设置输出字符的字形(由font确定)、输出方向(由direction确定)和字符大小(由charsize确定)等特性。
Turbo C2.0对函数中各个参数的规定见下列各表所示: font的取值
━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数 数值 含义
────────────────────────
DEFAULT_FONT 0 8*8点阵字(缺省值)TRIPLEX_FONT 1 三倍笔划字体 SMALL_FONT 2 小号笔划字体
SANSSERIF_FONT 3 无衬线笔划字体 GOTHIC_FONT 4 黑体笔划字
━━━━━━━━━━━━━━━━━━━━━━━━ direction的取值
━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数 数值 含义
────────────────────────
HORIZ_DIR 0 从左到右 VERT_DIR 1 从底到顶
━━━━━━━━━━━━━━━━━━━━━━━━ charsize的取值
━━━━━━━━━━━━━━━━━━━━━━━━ 符号常数或数值 含义
──────────────────────── 8*8点阵 2 16*16点阵 3 24*24点阵 4 32*32点阵 5 40*40点阵 6 48*48点阵 7 56*56点阵 8 64*64点阵 9 72*72点阵 10 80*80点阵
USER_CHAR_SIZE=0 用户定义的字符大小
━━━━━━━━━━━━━━━━━━━━━━━━
3.用户对文本字符大小的设置
前面介绍的settextstyle()函数,可以设定图形方式下输出文本字符这字体和大小但对于笔划型字体(除8*8点阵字以个的字体),只能在水平和垂直方向以相同的放大倍数放大。为此Turbo C2.0又提供了另外一个setusercharsize()函数,对笔划字体可以分别设置水平和垂直方向的放大倍数。该函数的调用格式为:
void far setusercharsize(int mulx, int divx,int muly, int divy);该函数用来设置笔划型字和放大系数,它只有在settextstyle()函数中的charsize为0(或USER_CHAR_SIZE)时才起作用,并且字体为函数settextstyle()规定的字体。调用函数setusercharsize()后,每个显示在屏幕上的字符都以其缺省大小乘以 mulx/divx为输出字符宽,乘以muly/divy为输出字符高。小结
这一讲我们首先介绍了PC机的图形显示结构和原理,然后介绍了图形初始化,然后讲了一些图形处理函数。
这一讲我们共举了三个例子,对于图形处理函数由于时间原因不能举太多的例子了,希望大家自己实际操作一下,会有很大收获的
第五篇:讲座如何体会散文精妙的语言
如何体会散文精妙的语言
从本质而言,阅读过程其实就是一个多向的对话过程,其中主要的一个方面是阅读者与文本、与作者的对话。鉴于此,在散文阅读教学中,关键的一点就是“读”。教师指导学生采取多种形式反复朗读文本,在读中挖掘作者运用语言的褒贬色彩,品味语言的格调、情调,揣摩语言的内涵、内蕴,联想语言的文外之意,想像语言的空白形象,从语言中吸取营养,以提高语言的鉴赏力。而且,还要学会“披文入情”,善于从作者寄情的事物中捕捉诗意,以求与作者的思维碰撞,心灵交汇和感情沟通。在此基础上,调动自己的生活体验,形成个性化的自我感悟,促进情感、态度和价值观的转化、升华。可见,散文阅读教学不同于其他文体。教师对此要有充分的认识和理解,要以新的教学理念作指导,针对文体特点和学生实际安排教学。
然而,由于种种因素影响,在实际的散文阅读教学中,不少教师仍是以讲析代替学生的阅读。零乱肢解,架空分析,剥夺了学生走进文本、对话文本的机会,使充满人文情趣的散文教学索然寡味。学生的感受都是教师的感受,更可悲者是教材编写者的感受。能力来自于实践,感情来自于体验。《语文课程标准》强调说:“阅读是学生的个性化行为,不应以教师的分析来代替学生的阅读实践。应让学生在主动积极的思维和情感活动中,加深理解和体验。”就一些教师的做法看,不用说学生难形成“独特的感受、体验、理解”,恐怕连基本的读书能力和口头表达能力也难培养。这不能不说是对现代文化的糟蹋,不能不说是散文教学的失败。为此,我们在实际的散文阅读教学中对其进行了较为细致地研究,将操作过程概括为“读——感——品——悟”四个环节。
也是品味感受的过程;朗读还是充满诗意的文学活动。语文新课标要求“反复朗读”,就是因为朗读是一门艺术,朗读是一种能力。
1.要读得正确、流畅。这是朗读文本的最基本要求。教师要训练学生面对生疏文本就能准确把握语音、语流顺畅的阅读能力。
2.要读出韵味。一篇优美的散文在内在的神韵上、意境上,以及外在的结构组成上、语言形式上都有丰富的内涵。学生朗读,就要掌握好语调、语速、语气、节奏、停顿等方面的技能。仅仅依靠标准的普通话是很难达到这一要求的。3.要读出情致。散文是一种文学体裁,描绘的是作者的情感世界和思索过程,但重在冶情。面对这一感情物,学生就应带着感情去读,用声音传达出文本内蕴的丰富细腻的情感。平淡无味无情趣,“新闻播音员式”的朗读不是真正的散文朗读,不是艺术性的朗读,更不是创造性的朗读。“感”。这是对文本的深入,是对文本的总体认识。能“感”的人,视文本为一个整体;会“感”的人,能及时筛选出有关信息,捕捉到重要信息点。
1.感知文本内容。这是整体阅读的一个方面,即首先要知道文本“写了什么”。在此基础上,能流利地复述出内容,能简练地概括出内容。同时,能准确定位文本内容的重点所在。
2.感受作者思路。思路是作者结构文章的思维程序。感受思路、理清思路是阅读理解的前提。其实,感受思路的过程,是学生与作者心灵对话的过程,是对文本解读的过程。在阅读教学中,教师要通过具体的例子教会学生善于探寻作者的思维方向,达到与作者思维的契合。“品”。这是揣摩、品味,是对重点内容的琢磨、感受、体验。
1.品味文本语言。散文属于文艺语体,具有形象性与生动性的特点。作者在行文时,往往会采用各式各样的修辞方法,采用一些富有表现力的词语和颇具特色的句式。而这些语言一般除具有表层的具象外,常常还隐藏着深刻的含义,内在的意蕴。学生在阅读中就要抓住重要的语段和关键的词句,把握字里行间蕴含着的意义,品析其巧处,体会其妙处,从而达到“悟意审美”的目的。
2.品悟作者感情。散文无不蕴含着作者的感情。在阅读教学中,教师就要侧重引导学生以审美的视觉深入挖掘文本的内涵,品悟、感受文本的情感美。同时,这反过来又能加深对文本的理解,达到“以情解文”之目的。“悟”。悟即领悟、觉悟。这是在对文本内容理解之上的阅读联系、阅读发现,更是一种创造性阅读形式。
1.悟人生。“文以载道。”学生在阅读中要认真学“文”,把握“文”的意义、内涵;同时,还要从字里行间发掘出更深的东西,悟道明理,并运用这些道理去思考人生。
2.悟社会。文本在反映作者思维、情感的同时,自然会折射出社会。学生要在阅读活动中通过对文本的解读,跨越与社会的距离,间接认知古今中外的社会,贴近广远的世界,挖掘出文本的历史意义和现实意义。
3.悟自我。即学生通过阅读文本跨越“旧我”与“新我”的距离。具体来说,就是使自身的知识经验得以扩充,观点得以改变,思想感情得以升华,方法技术得以迁移,实现自我在量度上的增加,在本质上的提高,在价值上的飞跃,在能力上的练达。同时,还要学会将自我放进文本,与作者以及文中人物心灵沟通,确定自己的思维方向和认识价值。
总之,上述“四环节”散文阅读教学方式,注重了学生阅读能力的培养,也注重了人文精神的弘扬,遵循了学生认知规律,突出了学生的主体性,是行之有效的。当然,散文阅读教学的方法不止一种,教师们可根据文本特点和学生实际采取不同的方法。但无论怎样,教师们都要切实领会《语文课程标准》的精神,转换教学新理念,灵活处理教材,并将朗读作为贯穿始终的主线,引导学生品味赏析。在诵读实践中增加积累,发展语感,加深体验和领悟。指导学生在字里行间揣摩体会出强烈的情感和独到的见解。如此,才能真正全面提升学生的语文素养。
(四)植入,让作者站立在学生心头
“散文阅读与小说阅读有一个很大的不同:小说一般可以就文本来读文本。正如文学界流行的说法,作品完成了,作家就死了。散文是抒发作者独特感受的,散文的阅读往往需要与作者这个人联系起来:我们通过作品来了解、感受作家这个人,通过作家这个人来分享、领会他所写的散文这个作品。”所以散文教学必须适时适当地植入与作者、作品相关联的资料,如作者其他的文学作品、写作背景、作者的身世经历及创作风格、其他人的赏析、评论,丰厚和充盈作品内涵,引导学生透过含蓄蕴藉的文字,直视作品的内核,透过作者微妙的内心世界,审视作者,让作者在学生脑海里直立起来。
2.分享不是“占有”、“具有”。
作者与读者的经验不同,我们不能占有作者的人生经验。我们也不可能“具有”与作者等同的经验。所谓“分享”,是体察、认识和理解,在阅读中,我们突破自身直接生活经验的囿限,通过阅读,我们扩展、丰富对世界和他人的认识、理解,以此关照自我,触发或启迪对自己的生活和人生的思考。
3.体味精准的语言。
唯有通过对言语的体味,我们才能把握作者的独特经验,才能感受、体认、分享散文所传达的丰富而细腻的人生经验。
(1)体味必须细读。
(2)体味是仔细领会。一是品味作者言语表达的功力,阅读散文,不顾作者的言语表达,不能见识作者言语表达的功力,无异于买椟还珠。二是精准语言表达蕴含意味,发掘文学作品字里行间所蕴含的意思、意味。三是体味是体会、寻味,指语言的滋味,指作者的情调。
散文是阅读教学的主导文类。阅读散文,就是要体悟作者的所见所闻,分享作者的所感所悟。散文教学中,可以通过知人论世、还原情境、朗读品味,帮助学生深入体味散文精准的言语表达,分享作者独特的人生体验。
王荣生教授说:“散文阅读教学,要引导学生细读,体味作者言语表达的功力,体味精准的言语表达所蕴涵的意味,体味语言的滋味和作者的情调。”那么,我们在散文教学中如何深入文字的骨髓去敲打文字的内核,从而走进作者的心灵世界呢?下面笔者就结合自身教学实践来谈谈如何咂摸散文语言。