<?xml version="1.0" encoding="gb2312"?>

<!-- RSS generated by oioj.net on 4/16/2004 ; 感谢LeXRus提供 RSS 2.0 文档; 此文件可自由使用，但请保留此行信息 --> 
<!-- Source download URL: http://blogger.org.cn/blog/rss2.asp       -->
<rss version="2.0">

<channel>
<title>^_^</title>
<link>http://blogger.org.cn/blog/blog.asp?name=vain</link>
<description>vain的博客</description>
<copyright>blogger.org.cn</copyright>
<generator>W3CHINA Blog</generator>
<webMaster>webmaster@blogger.org.cn</webMaster>
<item>
<title><![CDATA[巧克力都化了]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=6560</link>
<author>vain</author>
<pubDate>2005/6/14 21:21:38</pubDate>
<description><![CDATA[天真热，巧克力都融化了。]]></description>
</item><item>
<title><![CDATA[6.11端午节]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=6510</link>
<author>vain</author>
<pubDate>2005/6/11 15:15:20</pubDate>
<description><![CDATA[<P>就是这样，很随机又来到这里。很久不来了的。。。</P>
<P>&nbsp;&nbsp; 成了VIP用户了，也不知道和原来普通用户有什么不同。也许是因为文章数多了成了VIP。就和BBS上的老站友或开国一样。。。忽然想写日记。</P>
<P>&nbsp;&nbsp; 写到这里忽然想起今天是端午节。哦。2005的端午节。想起妈妈昨晚给我打电话，说爸爸阑尾炎手术住院了，不过快好了。。。忽然伤心难过起来。晚上我只好让自己不想这事。今天终于抽空给拔打了电话问候了一下，才感觉心里好受点。今天很忙，我不想记住的忙碌，算是充实吗，倒也不算。一年来我一直在做着我不喜欢做的事情，我无精打采。我总是伤感。我近乎一年都不快乐，我想我必须做个决定，考研或工作，等等很烦啊。生活真是很不容易的事情。</P>
<P>&nbsp; 好好想想自己的定位吧，能去喜欢的公司吗？或者继续上学，等准备几年上学我也会同时失去很多其他东西。也许社会早以不同，公司倒是当初应该的选择。我现在很后悔没有去高新区，如果去了我的生活也许与现在是不同的。尽管这是还不到一年的事情，但我已感觉我失去很多。我不想再听家人的话了，我所有的一切都是他们帮我安排的，而我感觉这一切都是错的，我并不喜欢太稳定的工作，这一切让我没有兴趣。我得去做点自己喜欢的事情了。而现在也正在慢慢的失去勇气。。。</P>
<P>让我一直学习，在校园过安稳的生活我真的不适合啊。我真的不行，这种生活让人发疯。我不能这样。好好想想未来吧，我不喜欢读书当教授的生活，我不喜欢老学究的日子，想想未来真可怕啊。我要我想要的方式生活，我喜欢时尚的东西。</P>
<P>而现在我的选择很困惑。我不清楚我的下一步未来该走的方向。</P>]]></description>
</item><item>
<title><![CDATA[罗宾斯的<管理学>笔记]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=6049</link>
<author>vain</author>
<pubDate>2005/5/24 16:56:36</pubDate>
<description><![CDATA[职务说明书（Y201）<BR>职务名称 市场部经理 部 门 市场部<BR>直接上司 营销付总经理 直接下属 人员：5人<BR>职位：市场推广、公关助理、美工<BR>职务概述 市场信息网络的建设和管理；品牌推广；广告、宣传；客户接待；部门管理。<BR>工作目标 建立全国性市场信息网络，逐年提高本公司品牌的知名度和美誉度。<BR>工作职责 1） 根据公司营销策略，指导各区域办事处制订市场开发计划；<BR>2） 负责对各办事处在网络的建设、市场信息的收集、公关活动、广告宣传等方面进行专业性地指导和监督；<BR>3） 直接负责与国家级设计院、政府有关部门的关系的建立，并督促区域办事处与之进行日常沟通、联络；<BR>4） 指导并监督区域办事处区域合作网络（包括和单位与个人）的建立、维护与发展。并建立合作网络档案；<BR>5） 每月一次，向总经理提交市场总体分析报告；<BR>6） 根据各区域市场的情况，计划、指导、监督办事处开展区域的钢结构产品推广活动或品牌推广活动。<BR>7） 根据客户的重要程度分别制订接待方案，承担客户接待工作；<BR>8） 负责各区域广告、宣传计划的制订，并负责组织实施。<BR>9） 负责统一制作公关活动和广告宣传所需各类资料和物品；<BR>10） 负责各区域办事处新闻稿件的征集、汇编，并于每月的25日前向总部办公室传递。<BR>11） 负责对各区域对外发布的V I系统各要素进行管理。<BR>12） 负责对本部门员工的工作情况进行监督、考核；<BR>13） 在本部门人员编制范围内，提出人员招聘、解聘、调动等建议；<BR>14） 批准本部门员工的休假和1天以内的事假，但本人例外。<BR>任职资格 1）教育水平：营销或公关专业本科及以上学历<BR>2）工作经验：从事营销、公关或相关管理工作二年以上<BR>3）特殊技能和能力：思维活跃，富有创意；良好的人际交往能力和表达能力；<BR>4）个性品质：为人热情、开朗，热爱交际，有良好的修养和风度<BR>工作情况 1）工作时间： 每天8小时<BR>2）加班要求： 有时需要加班<BR>3）该岗位其他条件或要求： 经常需要出差<BR>]]></description>
</item><item>
<title><![CDATA[做事做到底吧]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=6048</link>
<author>vain</author>
<pubDate>2005/5/24 16:52:54</pubDate>
<description><![CDATA[<P>即使对这个BLOG已经很没兴趣，也要有好的心态来面对。</P>
<P>认真贴完笔记，认真做好每一件事。</P>
<P>这是我的态度，未来也应如此。</P>
<P>坚持一下，baby,come on</P>]]></description>
</item><item>
<title><![CDATA[blog一直发表不了文章，郁闷。]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=6047</link>
<author>vain</author>
<pubDate>2005/5/24 16:50:25</pubDate>
<description><![CDATA[笔记也懒得贴了，粘的还不到六章，反复了N次都粘贴不上，不想继续浪费时间了。下面的不贴了。]]></description>
</item><item>
<title><![CDATA[罗宾斯的<管理学>笔记 1]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=6046</link>
<author>vain</author>
<pubDate>2005/5/24 16:31:56</pubDate>
<description><![CDATA[斯蒂芬.p.罗宾斯的《管理学》笔记<BR>第一章&nbsp;&nbsp;绪 论<BR>一、管理的涵义<BR>人类的共同劳动资源（人、财、物、信息、时间）<BR>共同目标<BR>定义：<BR>&nbsp;&nbsp;为实现预定目标而进行的计划、组织、人员配备、领导、控制（孔茨）<BR>或 合理组织和有效利用有限资源以达到既定目标的过程。<BR>&#8226;管理的实质是一种手段、工具，不是目的。<BR>&#8226;管理的作用在于它的有效性，追求效率与效果的统一。<BR>&nbsp;&nbsp;效率是以较少的代价完成活动，涉及活动的方式。即正确地做事<BR>&nbsp;&nbsp;效果指目标达成度，涉及活动的结果。即做正确的事<BR>&nbsp;&nbsp;好的管理在于把对的事情做得更好。<BR>&nbsp;&nbsp;低水平的管理表现在：1）无效率（某些政府部门的办事程序）<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;2）无效果（某些企业的库存积压产品）<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;3）牺牲效率的效果<BR>[例] 90年代中期，国家进行了金融体制改革，国有银行开始向商业银行转变，在这种形势下，各行纷纷打算拓展自己的业务。某银行也制定了一个长远规划：通过不断增设营业部，在五年之内，把每年的储蓄额提高到20亿元。规划中的另一个目标是，一旦每年的储蓄额达到20亿，那么年利润要达到2亿元。经过几年的努力，该行在各地开设了20个营业部，而且在规定的时间内也达到了储蓄额为20亿元的目标，只有一件事出了差错：它不是赚了2亿元，而是亏了近5000万元，使自身陷入困境，连掉头的机会也微乎其微。<BR>------答：有效果，无效率<BR>二、管理的基本特征<BR>1、管理是一种社会现象。（只要有人类社会存在，就有管理活动）<BR>管理产生的二个条件：　二人以上的集体活动共同的目标<BR>管理是社会化劳动的产物，可追溯到原始社会。<BR>2、管理的载体是组织，管理总是存在于一定的组织之中。<BR>&nbsp;&nbsp;什么是组织？<BR>3、　操作者：<BR>管理者：有下属向其汇报工作。<BR>上层<BR>包括 中层　共同任务：设计和维持一种环境，使人们努力工作以<BR>基层&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;实现既定目标。<BR>4．管理的核心是处理各种人际关系。<BR>5、管理的职能<BR>法约尔：&nbsp;&nbsp;计划、组织、指挥、协调、控制<BR>孔 茨：&nbsp;&nbsp;计划、组织、人员配备、领导、控制<BR>6、管理工作的普遍性<BR>&nbsp;&nbsp;管理工作具有普遍性，无论他在何处，所履行的职责有内在共同性。<BR>&nbsp;&nbsp;&#8226;组织的类型（如企业、政府部门、学校）<BR>&nbsp;&nbsp;&#8226;组织的规模（如小公司与大公司）<BR>&nbsp;&nbsp;&#8226;组织中的层次<BR>&#8226;跨区域的可转移性<BR>&nbsp; &nbsp;计划&nbsp; &nbsp;组织&nbsp; &nbsp;领导&nbsp; &nbsp;控制<BR>基层管理者&nbsp; &nbsp;15%&nbsp; &nbsp;24%&nbsp; &nbsp;51%&nbsp; &nbsp;10%<BR>中层管理者&nbsp; &nbsp;18%&nbsp; &nbsp;33%&nbsp; &nbsp;36%&nbsp; &nbsp;13%<BR>高层管理者&nbsp; &nbsp;28%&nbsp; &nbsp;36%&nbsp; &nbsp;22%&nbsp; &nbsp;14%<BR>7、管理与经营<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;管理&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;经营&nbsp; &nbsp;<BR>&nbsp;&nbsp;条件：&nbsp;&nbsp;社会化劳动的产物&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;商品经济的产物<BR>&nbsp;&nbsp;背景：&nbsp;&nbsp;原始社会&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;奴隶社会末期<BR>&nbsp;&nbsp;目的：&nbsp;&nbsp;提高效率&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;提高效益 <BR>&nbsp;&nbsp;角度：&nbsp;&nbsp;内向性（资源的组织利用）&nbsp; &nbsp; 外向性（环境）<BR>&nbsp;&nbsp;适用：&nbsp;&nbsp;一切组织&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;企业<BR>三、管理的性质<BR>1．管理的二重性：<BR>自然属性：管理与生产力、社会化大生产相联系的性质。<BR>社会属性：管理与生产关系、社会制度相联系的性质。（体现所有者意志） （上层建筑、社会文化）<BR>学习意义：（1）明确管理是生产力和生产关系的辨证统一<BR>&nbsp; &nbsp;&nbsp; &nbsp;（2）大胆地引进吸收<BR>&nbsp; &nbsp;&nbsp; &nbsp;（3）批判地吸收<BR>&nbsp; &nbsp;&nbsp; &nbsp;（4）因地制宜，因时制宜<BR>2．管理的科学性和艺术性<BR>&nbsp;&nbsp;科学性：反映管理实践活动的客观规律。管理理论来自于实践，又指导实践，有一套分析、解决问题的方法论。<BR>&nbsp;&nbsp;艺术性：即实践性、创造性。是指在实践中创造性地运用管理理论知识的技巧，必须将管理理论与具体的实践活动相结合。<BR>&nbsp;&nbsp;到目前为止，管理是否是一门科学这一问题仍未得到回答。因为，管理面对的不是一次又一次可以设定完全相同条件的实验环境，而是分分秒秒都在变化着的内外环境，因而不存在可以一次又一次重复验证的规律。<BR>四、管理学<BR>&nbsp; &nbsp;研究管理活动的规律和一般方法。<BR>1．特点： 一般性、综合性、历史性、实践性<BR>2．学习方法：（1）唯物辨证法，克服形而上学。<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;（集权与分权、奖励与惩罚、民主与集中、自由与纪律等）<BR>&nbsp; &nbsp;&nbsp; &nbsp;（2）系统方法<BR>&nbsp; &nbsp;&nbsp; &nbsp;（3）理论联系实际<BR>*** 为什么要学习管理？<BR>当你开始职业生涯后：不是管理者，就是被管理者。<BR>&nbsp;&nbsp;对管理者：理解管理过程是培养管理技能的基础，可以使自己获得成为有效的管理者的系统知识。<BR>&nbsp;&nbsp;对被管理者：学习管理可以更好地理解上司的行为方式和组织的内部运作方式，适应组织的需要。<BR>思考题：<BR>1．如何理解管理和管理者这二个概念？<BR>2．如何理解管理的科学性和艺术性？<BR>例1-1 管理工作的特性<BR>&nbsp;&nbsp;A是某建筑公司安装部经理，B是安装部下属的管道安装队队长。上个月，A吩咐B带领一班人马去某工地安装一套管道系统。在工程验收时，发现这套管道存在严重的渗漏现象。公司经理认为A应该对此负责，哪怕管道安装时A正出差在外。同样，A会认为B必须对此负责，哪怕B已不拿扳头干活。<BR>&nbsp;&nbsp;请问：A和B为什么要对这一失误负责？他们究竟该负什么责任？<BR>第二章 管理学的形成与发展<BR>&nbsp; &nbsp; 管理实践活动&nbsp; &nbsp;管理思想&nbsp; &nbsp; 管理理论<BR>古代中国：“得民心者得天下”， 秦始皇：“车同轨，字同文”<BR>希伯莱人的领袖摩西：授权原则和例外原则<BR>一、管理学理论的萌芽 （18、19世纪，工厂制度早期）<BR>1776年，亚当&#8226;斯密的《国富论》：劳动分工理论。 200&nbsp;&nbsp;48000<BR>&nbsp;&nbsp;Specialization：专业化&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;提高劳动熟练程度<BR>&nbsp;&nbsp;Simplification：简单化&nbsp; &nbsp;3S’ 优点&nbsp;&nbsp;减少工作转换时间<BR>&nbsp;&nbsp;Standardization：标准化&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;利于发明专用工具、设备<BR>1800年，Jr.Watt &amp; Boulton： 苏霍铸造厂<BR>实行： 分工、专业化、成本核算、医疗、福利制度<BR>1810年，罗伯特&#8226;欧文： ---- “人事管理之父”<BR>&nbsp;&nbsp;缩短劳动时间、禁止雇佣童工、改善生产、生活条件等。<BR>1832年，查尔斯&#8226;巴贝奇：分工可减少工资支付<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;提倡利润分享制度<BR>二、古典管理理论（19世纪末～20世纪30年代）<BR>（一）科学管理<BR>&#8226;背景：美国的“管理运动”<BR>生产规模的扩大与传统管理之间的矛盾<BR>&nbsp; &nbsp;&nbsp;&nbsp;劳资矛盾<BR>&nbsp; &nbsp;&nbsp;&nbsp;效率低，生产能力利用率不到 60%<BR>&#8226;代表人物：泰罗（Frederick W．Taylor，1856～1915）<BR>&nbsp; &nbsp;（1911年发表《科学管理原理》，1915年去世）<BR>&#8226;科学管理的中心问题：如何提高效率<BR>&nbsp;&nbsp;泰罗认为，造成效率低的原因主要是：工作指派和劳动方法不合理；分配不合理；组织和管理原因。<BR>&#8226;科学管理的主要内容：<BR>1)&nbsp; &nbsp;标准化操作方法（并用这种标准化方法来大批量培训工人）<BR>2)&nbsp; &nbsp;工作定额原理（把按标准化方法完成的日工作量确定为工作定额）<BR>3)&nbsp; &nbsp;挑选、培训“第一流工人”<BR>4)&nbsp; &nbsp;差别计件工资制<BR>5)&nbsp; &nbsp;改进管理方法： 计划与执行职能分开<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;实行职能工长制<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;例外原则<BR>&#8226;科学管理的其他代表人物：亨利&#8226;甘特、福特、吉尔布雷斯夫妇等。<BR>&#8226;泰勒的科学管理主要有两大贡献：<BR>一是管理要走向科学；<BR>二是劳资双方的精神革命。<BR>（二）法约尔的一般管理理论<BR>&nbsp;&nbsp;法约尔（Henri Fayol，1841～1925），1916年发表《工业管理与一般管理》，他认为，应建立一套公认的普遍验证过的原则、方法。<BR>&#8226;主要内容：<BR>1．管理是经营的职能之一<BR>2．管理的五项职能：计划、组织、指挥、协调、控制<BR>3．十四条原则：<BR>（1）&nbsp; &nbsp;分工：用同样的劳动得到更多更好的成果。<BR>（2）&nbsp; &nbsp;权力和责任：凡行使职权的地方，就必须建立责任。<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;责权对等原则<BR>（3）&nbsp; &nbsp;纪律：纪律严明是有效开展组织活动的必要保证；纪律作为对协定的尊重，必须做到使劳资双方都清楚明了、并为双方接受。<BR>（4）&nbsp; &nbsp;统一指挥：一个下属只接受一个上司的命令。 A&nbsp; &nbsp;B C<BR>（5）&nbsp; &nbsp;统一领导：对于目标同一的活动只能在一个领导人和一项计划的指导下进行。<BR>（6）&nbsp; &nbsp;个人利益服从整体利益。 前提：二者一致！<BR>（7）&nbsp; &nbsp;人员的报酬。<BR>&nbsp; &nbsp;要求：a.劳资双方满意&nbsp;&nbsp;b.能激发热情&nbsp;&nbsp;c.公平<BR>（8）&nbsp; &nbsp;集中：权力的集中或分散无所谓好坏，只是尺度问题。<BR>（9）&nbsp; &nbsp;等级制度：下级服从上级（一般不能违反，但应与保持行动迅速相结合 ----“法约尔桥”）。<BR>（10）&nbsp; &nbsp;秩序：“有其位，在其位”。<BR>（11）&nbsp; &nbsp;公平：主管人员对其下属应仁慈、公平，才能使下属表现出热心、忠诚。<BR>（12）&nbsp; &nbsp;人员的稳定： 经验的积累需要时间<BR>（13）&nbsp; &nbsp;首创精神：鼓励、激发员工的主动性、创造性，使组织充满活力。<BR>（14）&nbsp; &nbsp;团结：交流有助于团结，禁止滥用书面联系的方式。<BR>（三）韦伯的组织理论<BR>[德]韦伯：（Max Weber，1864－1920） 终身是一个学者，研究范围涉及政治、经济、历史、宗教等。---“组织理论之父”<BR>贡献：提出所谓“理想的官僚组织体系”（Bureaucratic Model）<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;（行政、科层）<BR>核心：设立公职。<BR>&nbsp;&nbsp;（权力的承袭通过职位，而不是依靠世袭或个人魅力）<BR>特点：&nbsp;&nbsp;1）明确的分工<BR>&nbsp; &nbsp;&nbsp;&nbsp;2）清晰的等级<BR>&nbsp; &nbsp;&nbsp;&nbsp;3）详尽的规章：强调规则化<BR>&nbsp; &nbsp;&nbsp;&nbsp;4）非人格化的关系。理性意志代替个人情感<BR>&nbsp; &nbsp;&nbsp;&nbsp;5）管理人员职业化：固定的薪金和明确的升迁制度<BR><BR>优点： 1）稳定<BR>&nbsp; &nbsp; 2）高效<BR>&nbsp;&nbsp;（有助于杜绝任人唯亲、组织涣散、人浮于事等现象）<SPAN class=smalltxt><BR><BR></SPAN>三、行为科学阶段（30年代后）<BR>&#8226;背景：<BR>&#8226;梅奥及其霍桑试验：（George Elton Myao，1880－1949）<BR>&nbsp; &nbsp;（1933年发表《工业文明中的人类问题》）<BR>&#8226;人际关系学说的内容：<BR>（1）&nbsp; &nbsp;工人是“社会人”，非单纯的“经济人”<BR>（2）&nbsp; &nbsp;企业中存在着非正式组织。<BR>（3）&nbsp; &nbsp;新型的领导能力在于通过满足员工需求来达到组织目的。<BR>四、现代管理理论的丛林（二战后 --- 60年代）<BR>孔茨称其为“丛林”<BR>1、社会系统学派<BR>&#8226;创始人：巴纳德(chester 1．Barnard，1886－1961)，曾任新泽西贝尔电话公司总经理, 1938年发表《经理人员的职能》<BR>&#8226;观点： 组织是一个社会协作系统，有三个基本要素：<BR>&nbsp; &nbsp;&nbsp; &nbsp;共同的目标<BR>&nbsp; &nbsp;&nbsp; &nbsp;协作的意愿 ------ 取决于诱因与贡献的平衡<BR>&nbsp; &nbsp;&nbsp; &nbsp;信息沟通<BR>&#8226;经理人员的基本职能：<BR>&nbsp; &nbsp;&nbsp;&nbsp;确定目标、提供诱因、建立维持信息沟通网<BR>2、决策理论学派<BR>&#8226;代表：H&#8226;西蒙（Harbert A．Simen,卡内基&#8226;梅隆大学教授，1978年获得诺贝尔经济学奖）<BR>&#8226;主要观点和贡献：<BR>&nbsp; &nbsp; 1）管理就是决策，决策贯穿于管理全过程。<BR>&nbsp; &nbsp; 2）决策的准则------“令人满意”<BR>&nbsp; &nbsp; 3）程序化与非程序化决策<BR>3、经验主义学派<BR>&#8226;代表：德鲁克（Peter&#8226;F&#8226;Drucher, 杜拉克）<BR>&#8226;主要观点和贡献：<BR>&nbsp; &nbsp; 1）应以大企业的管理实践作为主要研究对象<BR>&nbsp; &nbsp; 2）目标管理<BR>4、行为科学学派<BR>&#8226;创始人：梅奥<BR>&nbsp;&nbsp;研究个体、群体、组织、领导行为。------ “激励5、管理科学学派<BR>&#8226;代表：伯法<BR>&#8226;理论基础： 运筹学 + 计算机 <BR>（模型 + 程序）<BR>**管理过程学派<BR>&nbsp;&nbsp;孔茨：Harald Kontz（ 60年代初 ）<BR>主要观点：管理是一个过程，包括计划、组织、人员配备、领导、控制等相互关联的职能组成。<BR>五、管理理论发展的新探索（60、70年代）<BR>—— 管理从分化走向统一。<BR>1、系统管理理论（ 60年代中期后 ）<BR>理论基础：一般系统论<BR>主要观点：组织是一个由许多相互依赖的因素组成的开放系统。<BR>2、权变理论（ 70年代后 ）<BR>&nbsp;&nbsp;管理思想和方法 = f（ 环境变量 ）<BR>比较： 古典理论：“假如X，那么Y”<BR>&nbsp; &nbsp; 权变理论：“假如X，那么Y，但只有在Z的情况下”<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; （其中，Z为环境变量）<BR>六、现代管理理论的主要特点<BR>1、&nbsp; &nbsp;强调系统化。<BR>2、&nbsp; &nbsp;重视人的因素。<BR>3、&nbsp; &nbsp;重视非正式组织。<BR>4、&nbsp; &nbsp;强调效率与效果的统一。<BR>5、&nbsp; &nbsp;强调创新。<BR>创新来自于矛盾和问题（单纯依赖过去的经验和方法解决不了时）<BR>事实上，管理从来就没有停止过创新。<BR>“今天的管理者越来越关心如何鼓励创新和变革，因为组织所处的环境已变得非常动态。” --- Robbins<BR>6、&nbsp; &nbsp;重视战略。预见能力和竞争定位。<BR><BR>***未来管理发展趋势<BR>&nbsp;&nbsp;&#8226;科技发展：技术更新速度加快、I T的发展<BR>&nbsp;&nbsp;&#8226;国际化：市场国际化、跨文化<BR>&nbsp;&nbsp;&#8226;竞争：基于资源和顾客&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;环境日趋<BR>&nbsp;&nbsp;&#8226;劳动日益以知识为基础：出现劳动雇佣资本现象&nbsp; &nbsp; 复杂、多变！<BR>&nbsp;&nbsp;&#8226; 人 ：价值观和工作态度、需求的个性化<BR>例2-1 如何进行管理？<BR>&nbsp;&nbsp;在一个管理经验交流会上，有二个厂的厂长分别论述了他们各自对如何进行有效管理的看法。<BR>&nbsp;&nbsp;A厂长认为，企业首要的资产是员工，只有员工们都把企业当成自己的家，都把个人的命运与企业的命运紧密联系在一起，才能充分发挥他们的智慧和力量为企业服务。因此，管理者有什么问题，都应该与员工们商量解决；平时要十分注重对员工需求的分析，有针对性地给员工提供学习、娱乐的机会和条件；每月的黑板报上应公布当月过生日的员工的姓名，并祝他们生日快乐；如果哪位员工生儿育女了，厂里应派车接送，厂长应亲自送上贺礼。在A厂，员工们都普遍把企业当成自己的家，全心全意地为企业服务，工厂日益兴旺发达。<BR>&nbsp;&nbsp;B厂长则认为，只有实行严格的管理，才能保证实现企业目标所必须的各项活动的顺利进行。因此，企业要制定严格的规章制度和岗位责任制，建立严密的控制体系；注重上岗培训；实行计件工资制等。在B厂，员工们都非常注意遵守规章制度，努力工作以完成任务，工厂发展迅速。<BR>&nbsp;&nbsp;请问：这两个厂长谁的观点正确，为什么？<BR>案例2-2 管理问题分析<BR>王中是一家冷冻食品厂厂长，该厂专门生产一种奶油特别多的冰淇淋。在过去的4年中，每年的销售量都稳步递增。但是，今年的情况发生了较大变化，到8月份，累计销量比去年同期下降17%，生产量比所计划的少15%，缺勤率比去年高20%，迟到早退现象也有所增加。王中认为这种情况的发生，很可能与管理有关，但他不能确定发生这些问题的原因，也不知道应该怎样去改变这种情景。他决定去请教管理学家。<BR>请问：具有不同管理思想（科学管理思想、行为管理思想、定量管理思想、权变管理思想）的管理专家，会认为该厂的问题出在哪里，并提出怎样的解决方法？<BR>思考题：<BR>1．管理学经历了一个怎样的发展过程？有何启示？<BR>2．你是否同意“管理思想的发展是由时代和当时的条件决定的”这一说法？<BR>3．你是否同意“重温管理思想的历史可以帮助一个人成为更好的管理者”这一说法？<BR>4．怎样才能预测管理的发展趋势？你认为今后管理的发展趋势会怎样？<BR>第三章&nbsp;&nbsp;计划工作<BR><BR>一、计划工作概述<BR>1、含义<BR>&nbsp; &nbsp;广义：计划的制定、执行、检查过程。<BR>&nbsp; &nbsp;狭义：计划的制定（主要涉及目标及途径）<BR>正式计划和非正式计划<BR>计划工作的必要性：<BR>&nbsp;&nbsp;&#8226;确定方向；<BR>&nbsp;&nbsp;&#8226;计划过程本身的价值： 明确干什么、怎么干？<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 计划意味着承诺、约束<BR>&nbsp;&nbsp;&#8226;便于控制<BR>2、计划工作的性质<BR>（1）目的性<BR>（2）首位性<BR>（3）普遍性<BR>（4）效率性<BR>（5）创造性<BR>3、计划的种类<BR>&#8226;按时间：<BR>&nbsp; &nbsp;长期、中期、短期计划（如何衔接、协调？）<BR>&#8226;按详细程度：具体计划与指导性计划<BR>&nbsp; &nbsp;&nbsp; &nbsp;（取决于任务的明确性和环境变化的可预见性）<BR>&#8226;按职能：<BR>销售计划、生产计划、供应计划、劳资计划、技改计划、新品开发、财务计划等<BR><BR>&#8226;按形式：<BR>（1）宗旨：组织存在的目的或使命。指向外部社会<BR>&nbsp; &nbsp;&nbsp; &nbsp;Drucker：创造顾客。<BR>（2）目标<BR>一定时期内要达到的具体成果。<BR>（企业 —— 利润、增长、稳定、生存）<BR>（3）战略<BR>为实现长远目标所选择的发展方向、行动方针及资源分配的总纲。&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;核心：<BR>&#8226;战略总是针对竞争对手而言的；（处在竞争环境中的组织）<BR>&#8226;制定战略的根本目的：取得竞争优势。 “田忌赛马”<BR>（4）政策<BR>&nbsp; &nbsp;指导和沟通决策思想的明文规定。<BR>&#8226;政策是用来指导决策的；<BR>&#8226;制定政策是鼓励（而不是约束）下级自由处置（在一定范围内）；<BR>&nbsp;&nbsp;—— 越是高层，自由处置权越大。<BR>&#8226;制定政策有助于授权；<BR>&#8226;政策应保持稳定性和连续性，否则会使下级在决策中导致短期行为。<BR><BR>（5）程序<BR>&nbsp; &nbsp;处理例行问题的步骤、方法、标准。<BR>&nbsp; &nbsp;—— 政策的实施往往要有相应的程序。<BR>（6）规则<BR>&nbsp;&nbsp;允许或不允许，必须或不必须等。<BR>&#8226;规则与程序的区别：规则不规定时间顺序，而程序可看作是一系列规则的总和。<BR>&#8226;规则、程序与政策的区别：<BR>&nbsp; &nbsp; 不具有自由处置权。（旨在抑制思考）<BR>（7）规划<BR>&nbsp;&nbsp;是综合性计划，包括目标、政策、程序、规则、资源分配等， 可大可小。 特点：系统性<BR>（8）预算<BR>&nbsp; &nbsp;数字化计划，使计划更精确。<BR>4、计划工作的任务 ------ 5W1H<BR>What----- 具体任务、要求&nbsp; &nbsp;Where----- 空间布局<BR>Why ----- 宗旨、目标、战略&nbsp;&nbsp;Who ------ 明确职责<BR>When---- 时间进度&nbsp; &nbsp;&nbsp; &nbsp;How ----- 政策、程序、规则<BR>二、目标与战略<BR>（一）目标的性质 --- 计划的基础<BR>1、目标的层次性： 总目标-----分目标-----子目标<BR>&nbsp; &nbsp;环境层目标：社会加于组织（公平竞争、环保、就业、纳税）<BR>&nbsp; &nbsp;组织层目标：作为一个利益共同体（利润、成长等）<BR>&nbsp; &nbsp;个人层目标：：职务升迁、收入、工作环境、成就感等<BR>2、目标的多样性（多重性）： 利润与市场份额<BR>3、目标的网络化：目标与目标之间相互联系，需要协调。<BR>4、目标的可考核性： 定性：<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 定量：<BR>（二）目标的作用<BR>1、指明工作方向：<BR>2、激励作用：关键：（1）符合需要； （2）目标的挑战性<BR>3、凝聚作用：关键：与个人目标一致，体现共同利益。<BR>4、考核作用：放弃主观判断。<BR>（三）目标管理（MBO）<BR>&nbsp; &nbsp;P&#8226;德鲁克1954在《管理的实践》一书中提出。它把泰罗的科学管理与梅奥的人本思想结合在一起，是一种综合的以工作为中心和以人为中心的管理方法。企业全体成员的工作均以目标为导向。<BR>&#8226;出发点：使个人目标与组织目标一致，并以目标激发热情。<BR>&#8226;特点：<BR>&nbsp;&nbsp;⑴ 强调自我参与：目标是共同商定的，不是“上级下指标，下级提保证”。<BR>&nbsp;&nbsp;⑵ 强调自我控制：业绩反馈<BR>&nbsp;&nbsp;⑶ 注重成果第一：避免主观<BR>&nbsp;&nbsp;⑷ 促使权力下放：使失去控制的担心成为多余！<BR>&#8226;目标管理既是一种管理方法，又是一种激励技术。<BR>&#8226;问题： ⑴ 目标难以确定。容易演变成数字游戏。<BR>&nbsp; &nbsp;&nbsp;&nbsp;⑵ 目标短期化。<BR>&nbsp; &nbsp;&nbsp;&nbsp;⑶ “伪参与”问题<BR>&nbsp; &nbsp;&nbsp;&nbsp;⑷ 什么条件下适用？（人的素质）<BR>（四）战略的制定（程序）<BR>&nbsp; &nbsp;—— 战略的重要性：<BR>案例 如果你从事机场租车业务，你怎么成功地与该行业的四巨头 ——Hertz公司、Avis公司、国民（National）公司和预算（Budget）公司竞争？迈克尔&#8226;伊根（Michael Egan）作出了令人钦佩的回答。作为Alamo租车公司的主席，伊根实施了一项战略，使Alamo公司在不到20年的时间里，成长为一家5亿美元的公司，净利润额在全行业名列第二，仅次于Avis公司。伊根的战略是集中于低价格和低成本—高营业额的经营定位，以及租车给那些精打细算的顾客，正是这种战略使Alamo公司领先于主要的竞争对手。<BR>&nbsp;&nbsp;为了在机场轿车出租市场中取得一席之地，Alamo公司将其投资倾注于低价格的抉择上，公司利用广告到处宣传它每日的租价低于竞争对手20%，并且不对行车里程额外收费。例如，周日在洛杉矶租Alamo公司的一辆雪弗莱Beretta牌轿车，日租金仅38美元且不收里程费。而在Hertz公司租用同一牌号的车，每天租金51.93美元，而且还要至少提前3天预定，此外，Hertz公司对超过100英里还要每英里加收32美分的费用。<BR>&nbsp;&nbsp;提供低价格的服务是一回事，但是怎么在如此低的价格下保持盈利呢？Alamo公司的回答是：将营业场所设置在高营业量和租金便宜的地点。Alamo公司在美国和英国只有105处营业场所，而Hertz公司的营业场所数量是Alamo公司的50倍，但Hertz公司出租的轿车数量仅为Alamo公司的4倍。所以，Alamo公司通过保持高营业额的方式使其成本保持在低水平上。此外，Alamo公司还将其管理费用的支出控制在低水平上，这主要是通过将大多数服务台设在机场大厅外面的临近地点，从而避免了机场大厅内天文数字般的租金。<BR>1、问题的提出和目标的确定<BR>Drucker： 我们的企业是个什么企业？<BR>&nbsp; &nbsp;&nbsp;&nbsp;我们的企业将是个什么企业？<BR>&nbsp; &nbsp;&nbsp;&nbsp;我们的企业应该是个什么企业？（谁是我们的顾客？他们到底需要什么？）<BR>&nbsp; &nbsp; —— 识别优势（Strengths）、劣势（Weaknesses）<BR>2、战略分析（环境分析）<BR>市场细分：发现市场机会，确定目标市场<BR>行业分析：行业集中度、行业壁垒（规模经济、专有技术、政府许可等）<BR>竞争对手分析：规模、资金、技术、战略等。（竞争对手是一面镜子，可看出本企业的优势和劣势）<BR>&nbsp;&nbsp;—— 发现机会（Opportunities）、威胁（Threats）<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;“SWOT分析”<BR>3、战略选择<BR>&nbsp;&nbsp;基本类型有三种：（迈克尔&#8226;波特：M&#8226;Porter）<BR>（1）总成本领先战略：<BR>&nbsp; &nbsp;美国有23%的企业采用这种战略，如生产起重机的Harnischfeger公司，开始时它的市场份额只有15%，公司重新设计了起重机，使之便于生产，另外采用模块化部件使之便于维修，同时降低材料消耗。公司采用大批量订货以节约成本。所有这些使公司生产出质量过关的产品，而价格下降了15%，市场份额则迅速增加到25%。<SPAN class=smalltxt><BR></SPAN>（2）差别化战略：在产品、服务、企业形象等方面独树一帜。成功地实施这种战略可以使顾客产生对名牌的信任，由此降低对价格的敏感程度，并使企业避开竞争。<BR>&nbsp;&nbsp;（3）专一化战略：集中资源于某一较小的细分市场。以更高的效率、更好的效果为某一狭窄的对象服务，每一项职能化方针都要考虑这一中心思想。<BR>4、战略规划<BR>&nbsp;&nbsp;将战略分析和战略选择的结果进一步落实到产品组合、功能战略、资源分配上。<BR>&nbsp; &nbsp;产品组合：广度、深度、关联度<BR>&nbsp; &nbsp;功能战略：针对行业中成功的关键因素<BR>&nbsp; &nbsp;资源分配：优先次序<BR>5、战略实施<BR>&nbsp;&nbsp;组织、人员保证。 Chandler：“结构跟着战略走”<BR><BR>○许多人认为，战略是大企业的事情，实际上，就是白手起家的小企业也同样需要战略。<BR>案例 迈克尔&#8226;德尔早在上初中时，就对计算机着了迷。1983年，年仅18岁的德尔是德克萨斯大学的一名新生，他开始销售磁盘驱动器和其他元器件，这些元器件是从有多余存货的经销商手中买来的。他的第一批顾客是他的朋友和大学同学，随后，德尔发现，他可以买到IBM-PC的机身，然后加装一些元器件就会大幅度提高其性能。到1984年初，德尔每月销售按顾客要求组装的计算机和元器件，营业额达到50000到60000美元。这年夏天，德尔决定退学专门从事计算机生意。他专为医生、律师和小企业组装完整的PC计算机系统，每月的销售额上升到18万美元，而且逐月递增。9个月后，德尔计算机公司的销售总额达到600万美元，而且雇佣了39位员工。<BR>&nbsp;&nbsp;德尔计算机公司与它的竞争者有哪些显著的不同之处？高质量的硬件、全方位的服务和技术支持，以及低廉的价格；德尔采用邮购和其他直销技术向顾客销售计算机，绕过了经销商；不仅如此，德尔可以严格地按顾客的要求设计和组装计算机，并且在3天以内送到顾客手中。1992年，德尔的雇员达到800人，每天处理8000多个销售和服务电话，年销售额接近2亿美元。德尔本人也成了富翁，手中持有公司价值1.5亿美元的股票。<BR>（五）战略制定的原则<BR>&nbsp;&nbsp;制定战略主要是一种管理艺术，是计划工作最困难的部分，但还是有一些规律可循、有一些原则可依。<BR>1、从社会需要出发<BR>&nbsp; &nbsp; 产品只是形式，是有寿命周期的，而需要则是永恒的。<BR>2、把握时机<BR>3、扬长避短： 重在扬长。<BR>——多元化经营：成功的关键是紧紧围绕核心技术和中心市场<BR>案例&nbsp;&nbsp;华立集团原是一家集体企业，从70年代的一家手工作坊起家，经过二十多年的发展，至90年代已发展成为我国机械行业的大型企业和电工仪器仪表行业骨干企业，尤其是主导产品电度表的产销量居同行业首位，有一支实力较强的技术开发队伍和经验丰富的营销队伍。<BR>&nbsp;&nbsp;为进一步拓展经营领域，扩大企业规模，华立集团从90年代初开始实施多角化经营战略，通过自筹资金和银行贷款等途径，先后投资建成铜箔板有限公司、家用电器有限公司、食品饮料厂、塑胶厂、卫星通信设备厂、房地产开发公司、汽车维修厂、空运代理有限公司等。经过几年的发展，集团经营规模迅速扩大，经营领域大大拓展，但一系列问题也随之出现，除铜箔板有限公司和家用电器有限公司取得成功外，其余大部分投资项目均告失败，尤其是食品饮料厂、卫星通信设备厂、房地产开发公司等出现严重亏损，汽车维修厂经营困难，同时，由于国家紧缩银根，银行贷款受到限制，每年高达2000多万元的利息使企业不堪重负，而且造成企业内部资金严重不足，影响了主导产品电度表的发展。这一切，是集团领导当初制定战略时所未能料到的。<BR>&nbsp;&nbsp;出现上述问题的原因何在？你认为应该怎么办？<BR>4、出奇制胜：创新，打破常规，与众不同。<BR>5、集中资源：以较多的资源支持较少的选择。取得局部优势，打歼灭战。<BR>6、量力而行：<BR>三、决 策<BR>1、含义<BR>&nbsp;&nbsp;按一定目标多方案选优的过程。<BR>&#8226;决策必须有明确的目标。“没有目标的决策是不存在的”<BR>&#8226;决策是一个过程，是时期行为，非时点行为。<BR>&#8226;决策必须以大量的信息为基础。<BR>&nbsp; &nbsp;“科学的决策 = 90%的信息 + 10%的判断”<BR>&#8226;决策必须要有决策者（人）。<BR>2、决策的程序<BR>（1）确定目标： 明确、尽可能量化<BR>（2）拟订方案： 可行、尽可能多<BR>（3）评价方案： “令人满意” ；强调可执行性<BR>（4）实施、评估： 把决策作为一个学习过程。<BR>3、 程序化决策：处理例行问题，有固定的程序、规则和方法<BR>&nbsp;&nbsp;非程序化决策：处理例外问题，无先例可循。<BR>&nbsp; &nbsp;&nbsp; &nbsp;依赖于决策者的经验、知识、价值观（风险观）、<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;决断能力<BR>○企业高层管理者面临的大多是非程序化决策，而中、基层面临的大多为程序化决策。<BR>&nbsp; &nbsp;结构不良&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 高层 <BR>&nbsp; &nbsp;&nbsp;&nbsp;非程序化决策<BR>&nbsp; &nbsp; 程序化决策<BR>&nbsp; &nbsp;结构良好&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 低层<BR>○只要有可能，管理决策都应该程序化。<BR>案例&nbsp;&nbsp;一家销售额达几十亿美元的公司，在遍布美国的40多家工厂中都设有一个主计员（总会计师），每位主计员有3～6个监督员向他汇报，并管理25～50个职员。你估计那些主计员能挣多少钱？如果你知道在1994年，大多数主计员的年薪仅为38000美元时，你会惊讶吗？这对那种责任的报偿似乎太低了，但公司已成功地把主计员的几乎全部决策高度程序化了。大多数的主计员仅受过高中教育，他们并非聪明过人。然而，他们能遵从指导。公司已制定了一份4000页的会计手册，并且不断更新。它告诉每一位主计员他遇到的绝大多数问题应如何处理。如果问题和处理问题的程序在手册里找不到的话，主计员就向总部请示。然后总部就会指导他该怎么做。总部在收到有关新问题的请示一个月后，原有手册就被增补， 以指导其他工厂可能会遇到同样问题的主计员，这是不足为奇的。<BR>&nbsp;&nbsp;在这家公司中，高代价的人才集中在总部制定所有的非程序化会计决策。 当这些问题变为重复性问题时，他们就制定标准作业程序并发给所有工厂的主计员。这样，该公司在无须雇佣取得过大学文凭、硕士文凭或注册会计师证书的有经验人员的情况下，就能够获得一致的、胜任的决策。否则那些人的年薪要付65000美元或更多。<BR>4、按决策主体：<BR>（1）个人决策： 优点：速度快、创造性好。<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;缺点：决策质量不高、可执行性差。<BR>（2）群体决策： 优点： 更多的知识、经验，<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 群体对个体的助长作用，<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 更易被接受、执行。<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;缺点：倾向于折衷、决策迟缓、责权分离。<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;问题：（可能）<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 个人控制、小群体意识（凝聚力过高）<BR>○ 一般，在需要对问题迅速作出反应时，个人决策是有效的；而在有关企业发展重大问题的决策上（往往不太急迫），群体决策更优越。<BR>○ 关于决策群体的大小，一般认为5～7人为宜（奇数），这样的群体大得足以使成员变换角色，却又小得使不善辞令者积极参与讨论。<BR>*** 作业思考题：<BR>1、有人认为，具体的、数量化的目标实际上是一种制约，会削弱对持续改进的追求。你是否赞成？为什么？<BR>2、制定战略的一般程序是怎样的？能否尝试制定你所在企业的战略？<BR>3、你是如何理解决策及决策过程的？<BR>4、什么是目标管理？它有哪些特点？<BR>第四章 组织工作<BR>一、组织工作概述<BR>1、组织<BR>人们为实现特定目标而形成的系统集合，共同目标是组织存在的前提。组织可实现个人力量所无法达到的目标<BR>特征：分工与合作，以获取专业化优势。 <BR>从本质上说，组织是一种工具或手段，用得好，有利于目标实现，反之，会阻碍目标实现。<BR>2、组织结构<BR>即组织的框架体系，是人们在组织内进行劳动分工和协调方式的总和。<BR>&#8226;复杂性：分工程度、对知识的依赖程度等。<BR>&#8226;正规化：组织依靠规则和程序引导员工行为的程度。<BR>&#8226;集权化：决策权的分布。<BR>3、组织工作<BR>将实现组织目标所必须的各项活动加以分类和归并，设计合理的组织结构，确定并维护组织内部关系的过程。<BR>&#8226;组织工作是一个过程：<BR>⑴ 确定目标；<BR>⑵ 确定实现目标所需的各项活动、业务，并且分类、归并；<BR>⑶ 部门化； <BR>⑷ 确定层次结构；<BR>⑸ 确定职权关系；<BR>⑹ 维护、调整、变革。<BR>&#8226;组织工作的最终成果： 组织结构图<BR>职务说明书<BR>&#8226;组织工作是动态的： 随组织内外环境的变化而变化。<BR>4．组织理论的发展<BR>4.1. 古典组织理论：<BR>以韦伯的官僚组织为代表。<BR>强调结构化、规则化、稳定性。 —— 官僚型结构<BR>4．2．行为组织理论：<BR>以利克特（R&#8226;Likert）的参与型组织为代表。强调组织设计应考虑人的因素，能力的发挥，建立一个符合人际关系原则的组织。<BR>松散、分权、民主 —— 参与型结构<BR>4．3．权变组织理论<BR>适用于所有情况的理想组织结构是不存在的。组织设计取决于各种权变因素：<BR>a. 战略：A&#8226;Chandler：“结构跟战略走”<BR>低成本战略 ----- 机械式结构<BR>多角化战略 ----- 有机式结构<BR>b. 规模： 小规模 ----- 集权化<BR>大规模 ----- 分权化 <BR>c. 技术： <BR>佩罗（Charles Perrow）： 采用常规技术 ------ 机械式<BR>非常规技术 ------ 有机式<BR>d. 环境： 稳定 ------- 机械式<BR>不稳定------- 有机式<BR>机械结构与有机结构的比较<BR>特点 机械结构 有机结构<BR>外部环境 稳定、简单、确定 变动、复杂、不确定<BR>专业化程度 高 低<BR>职权集中程度 集中于高层 集中于每一层中有能力的人<BR>如何解决冲突 由领导解决 由相互作用解决<BR>信息沟通 垂直沟通 横向沟通<BR>忠诚的对象 制度 任务和群体<BR>影响力的基础 建立在职权基础上 建立在个人能力基础上<BR>规章制度 多 少<BR>二、组织结构设计<BR>任何一个组织结构都必须解决三个相互关联的问题：<BR>—— 部门、层次、职权的划分。<BR>（一）部门化<BR>确定任务分配和责任的归属。<BR>1、按职能划分部门（有基本相似的专业知识）<BR>将相同性质的工作合并在一起。--- 传统、最普遍<BR>&#8226;优点： 使各部门充分发挥专业优势<BR>有利于维护组织统一<BR>&#8226;缺点：协调困难，各部门易产生“隧道视野”。<BR>&#8226;适用：组织规模较小、产品较少<BR>2、按产品划分部门<BR>&#8226;优点：有利于产品改进<BR>有利于部门内协调<BR>&#8226;缺点：部门化倾向（本位主义）<BR>管理费用高（机构重叠）<BR>&#8226;适用：规模大、产品多、产品之间差异大。<BR>&#8226;产品部门化也适用于服务业，如会计事务所：税务部、审计部、管理咨询部等。<BR>3、按地区划分： 把某一地区的业务集中于某一部门。<BR>原因：地理分散带来的交通不便和信息沟通困难------ 社会文化环境方面<BR>优点：针对性强，能对本地区环境变化迅速作出反应。<BR>缺点：与总部之间协调困难（不易控制）<BR>4、按顾客划分：<BR>前提：每个部门所服务的特定顾客有共同需求、且数量足够多。<BR>如：如一家办公用品公司的销售：零售部、批发部、政府部。<BR>5、按人数划分：容易控制<BR>6、综合标准：实践中往往几种划分方法结合在一起<SPAN class=smalltxt><BR></SPAN>（二）层次结构<BR>管理层次是随着组织规模的扩大和关系的复杂化而产生的，与规模、管理幅度密切相关。<BR>1、 管理幅度：一个主管人员能直接有效地管辖的下属人数。<BR>4-12<BR>&#8226;管理幅度与层次成反比关系。<BR>层 次<BR>1 1 1 <BR>2 4 8<BR>3 16 64<BR>4 64 512<BR>5 256 4096<BR>6 1024<BR>7 4096<BR>A B<BR>层次=7 层次=5<BR>管理人员=1365 管理人员=585（减少780人<BR>&#8226;影响管理幅度的因素：<BR>1）管理者的素质和能力<BR>2）下属的素质和能力<BR>3）工作相似性<BR>4）环境： 稳定--- 幅度大； 不稳定--- 幅度小<BR>5）计划的完善程度、授权、人员空间分布、配备助手……<BR>2、 锥型结构：tall structure<BR>扁平型结构： 优点：上下级关系密切、信息纵向流通快、 <BR>Flat structure 管理费用低、下属有较大自主性。<BR>缺点：监督不充分、协调困难。<BR>3、格拉丘纳斯的上下级关系理论<BR>管理幅度以算术级数增加时，面临的关系数将以几何级数增加。<BR>4、安东尼结构： 层次结构的特征描述<BR>（三）职权的划分<BR>职权：职务范围内的管理权限（核心是决策权）。<BR>职权是权力的一个子集。<BR>1、直线职权：上下级之间的指挥、命令关系。“指挥链”<BR>&#8226;各级主管都拥有直线职权。line<BR>&#8226;有时把组织对目标实现负有主要责任的管理者称为直线人员。<BR>2、参谋职权：组织成员向管理者提供咨询、建议的权力。<BR>&#8226;产生：源于直线人员对专业知识的需要，如财务、质量、人事、公关等。“参谋建议，直线指挥”<BR>3、职能职权：参谋部门或参谋人员拥有的原属直线人员的一部分权力。<BR>&#8226;其产生：直线人员由于专业知识不足而将部分指挥授予参谋人员，使他们在某一职能范围内行使指挥权。<BR>&#8226;职能职权只有在其职能范围内才有效。是一种有限指挥权<BR>厂长<BR>参谋职权<BR>直线职权 财务科长<BR>职能职权<BR>车间、科室 <BR>直线职权<BR>直线职权 <BR>员 工<BR>工人、一般员工<BR>边界、范围<BR>（四）组织结构类型<BR>1、直线型结构：（图示：P178）<BR>直线人员拥有全部职权，没有参谋部门或职能部门。<BR>&#8226;优点：权力集中，命令统一。<BR>&#8226;缺点：直线人员负担重。<BR>&#8226;适用：小型组织<BR>2、职能型结构（图示：P178）<BR>各职能部门直接向下级发布命令，由泰罗发明，主要问题：“多头领导”。<BR>3、直线参谋型（图示：P179）<BR>各参谋部门仅提供咨询建议，无指挥权。<BR>&#8226;优点：命令统一，专业优势<BR>&#8226;缺点：直线人员负担重，参谋部门积极性不高。<BR>4、直线职能型（图示：P180）<BR>职能部门拥有业务指导和部分指挥权。<BR>在中小型企业中应用较为普遍。<BR>5、事业部制（图示：P181）<BR>20年代美国通用汽车公司首创。<BR>&#8226;概念：各事业部有各自独立的产品和市场，实行自主经营、独立核算。 按地区<BR>&#8226;特点：集中决策，分散经营。走向分权（实际上是在公司内部创造一系列“自治”的小公司）<BR>&#8226;优点： 提高了组织的灵活性和适应性<BR>有利于高层摆脱日常事务<BR>有利于企业内部竞争<BR>有利于全面型管理人才的培养<BR>&#8226;缺点： 独立倾向<BR>管理费用高（机构重叠、资源重复配置）<BR>&#8226;特征：双重指挥链 —— 打破了“命令统一”原则。<BR>&#8226;优点：增强组织的机动性和灵活性（项目小组）<BR>实现各种专业知识的有效结合。<BR>&#8226;缺点：双重指挥，协调困难<BR>临时性，人心不稳<BR>&#8226;适用：创新任务较多、经营复杂多变的组织，如高科技企业、建筑公司等。<BR>7、其它：<BR>模拟分权制（大型化工企业，模拟事业部制以改善管理）<BR>多维立体结构（如道—科宁化学工业公司，按产品、职能、市场形成立体结构）<BR>网络结构（以合同为基础、只有很小的中心组织）<BR>经理小组<BR>案例 ----耐克公司和皮尔&#8226;卡丹公司<BR>（五）横向协调设计<BR>1．明茨伯格的协调方式发展三阶段<BR>过程标准化 <BR>相互调整 直接监督 成果标准化 相互调整<BR>技能标准化 <BR>在一个有相当规模的组织，往往多种协调方式同时并存。<BR>2．协调方式设计<BR>（1）结构性方式： &#8226;设立任务小组或委员会（TQC领导小组）<BR>&#8226;设置联络员<BR>&#8226;设立专职协调部门（综合计划办）<BR>（2）制度性方式：&#8226;管理工作标准化<BR>&#8226;例会制度（早会、周会、月度会、季度会等）<BR>&#8226;工序服从制度（上工序服从下工序、一般工序服从核心工序、辅助工序服从主体工序）<BR>跨部门直接沟通（需注意建立汇报制度）<BR>&#8226;联合办公或现场调度<BR>（3）人际关系方式： &#8226;大办公室制<BR>&#8226;领导接待日制<BR>&#8226;员工联谊组织<BR>案例 ----CMP、H.P<BR>三、组织结构的运行<BR>1、授权<BR>一个主管人员不可能承担所有的任务，正确地进行授权，有助于更好地实现目标。<BR>&#8226;授权的含义<BR>上级将部分权力授予下级，并行使监督权，下级负有汇报和完成任务之责。<BR>&#8226;益处： 使上级从日常事务中解脱出来；<BR>调动下级的工作热情；<BR>培养下级才能；<BR>发挥下属专长，弥补上级才能之不足。<BR>&#8226;授权的过程：<BR>①任务的指派；<BR>②权力的授予；<BR>③责任的明确；下级负工作责任，上级负最终责任。<BR>④监控权的确认。授权不等于授责！<BR>&#8226;有效的授权： 选好受权者： <BR>明确责权利：<BR>用好监控权： 既不能失控，又不能干预。 <BR>&#8226;授权不同于分权： 系统地授权<BR>可收回<BR>&#8226;授权与代理、助理、分工之间的关系<BR>2、集权与分权<BR>&#8226;集权与分权是相对的。<BR>&#8226;集权的好处：（1）政策的统一<BR>（2）行政高效率<BR>过分集权的弊端：（1）降低决策质量<BR>（2）降低组织适应能力<BR>（3）降低成员工作热情<BR>&#8226;影响集权与分权的因素：<BR>— 决策的重要性或代价<BR>— 组织规模<BR>— 组织形成的历史：<BR>— 下级管理人员的素质：<BR>— 控制技术的发展： 防止失控往往是集中的借口。<BR>— 组织领导人的个性：<BR>— 环境：困难时期和竞争加剧可能助长集权。<BR>&#8226;如何平衡？斯隆（A&#8226;Sloan）：“政策制定与行政管理相分离，集中控制与分散经营相结合”。<BR>3、正确处理直线、参谋、职能人员的关系：<BR>参谋多谋，直线善断。 职能权力应受到限制。<BR>4、委员会：（集体决策机构）<BR>&#8226;委员会管理的优点：<BR>缺点：<BR>—— “组织重大决策的委员会制和执行中的个人负责制”<BR>四、组织工作的基本原理（P183）<BR>*** 作业思考题：<BR>1、什么是组织工作？它包括哪些内容？<BR>2、什么是管理幅度？影响管理幅度的主要因素有哪些？<BR>3、什么是事业部制？有哪些优缺点？<BR>4、如何有效地授权？<BR>5、实践中如何处理集权与分权的关系？<BR>6、什么是职能职权？职能职权的出现是否违背组织内部命令统一性原则？<BR>7、试分析某公司的层次结构、管理幅度、部门化类型。<SPAN class=smalltxt><BR><BR></SPAN>]]></description>
</item><item>
<title><![CDATA[金融还是管理？]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=5976</link>
<author>vain</author>
<pubDate>2005/5/22 17:00:48</pubDate>
<description><![CDATA[
<P>今天和两位清华同学聊天。一位和我同岁，是学物理的。我们聊了很久，大半都在谈其它的话题。关于考研的正事，他问我:mm数学好吗？金融管理什么的对数学要求很严格的。同时他建议我考清华而不是北大。他说清华管理学院经常请国外教授多一些。这么说大概是出于对母校的热爱吧。呵呵</P>
<P>另一位是个大牛，很厉害的清华经管的研究生吧，我们只有五分钟的交流，他回答问题相当的简洁。他说他很忙，让我六月下旬左右再联系他，我说就五分钟，不需要讲太多。于是他说让我说。我问的很简单，他回答的很简洁，确实简洁但很清楚的说明了问题本质。他说经管基本考数一，前一个问题让我去图书馆查。</P>
<P>今天大概情况就是这样吧。还没有想好该怎么选择。财经方面分类也是很细的。我没想好究竟是选择金融还是选择管理？而且即使金融或管理任何一个其中也有细分的具体专业。究竟该如何选择，我该好好想想未来该走的方向...</P>]]></description>
</item><item>
<title><![CDATA[really?]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=5975</link>
<author>vain</author>
<pubDate>2005/5/22 16:56:37</pubDate>
<description><![CDATA[<BR>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
<TBODY>
<TR>
<TD>&nbsp;&nbsp;Quote:</TD></TR>
<TR>
<TD>
<TABLE cellSpacing=1 cellPadding=10 width="100%" bgColor=#3399cc border=0>
<TBODY>
<TR>
<TD style="WORD-BREAK: break-all" width="100%" bgColor=#f8f8f8>Originally posted by <I>撒旦的天堂</I> at 2005-1-31 06:05 PM:<BR>国际金融都学些什么东西啊？ </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></CENTER><BR>主要学习汇率的一些知识~~~~~<BR>将来毕业后的理想职业是各商业银行的外汇交易员<SPAN class=smalltxt><BR><BR></SPAN>]]></description>
</item><item>
<title><![CDATA[清华经管457微观经济学2005真题回忆版]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=5973</link>
<author>vain</author>
<pubDate>2005/5/22 16:02:06</pubDate>
<description><![CDATA[发信人:&nbsp;whjoutstand&nbsp;(乐乐&amp;水木),&nbsp;信区:&nbsp;AimGraduate<BR>标&nbsp;&nbsp;题:&nbsp;清华经管457微观经济学2005真题回忆版（应该是比较全的）<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Thu&nbsp;Jan&nbsp;27&nbsp;14:53:06&nbsp;2005),&nbsp;站内<BR><BR>共10道选择，5分/题，4道计算，25分/题。<BR><BR>一、选择题，要求选出答案并说明理由，没有理由不得分。<BR>1、企业面临的需求价格弹性为-2.4，收入弹性为3，今年企业的销售量为100万，那么据预测明年居民收入将下降10%，则要保持销售量不变，价格应该（）<BR>2、两条无差异曲线相交，那么下列哪一个假设不成立？A边际效用递减B单调性（越多越好）不成立&nbsp;C次序性不成立&nbsp;D都不成立E都成立<BR>3、（记不得怎么说的了）大体意思是下面各种效应（替代效应和收入效应）与价格变动的关系，答案比较简单。<BR>4、已知完全竞争企业的成本函数，C（Q）=。。。。。（关于Q的式子），请问企业生产的最低成本是多少？（具体数值忘记了，所以答案就没太大用了，反正也简单，就是求平均可变成本的最小值。<BR>5、已知垄断企业，。。。。当征税10美元的时候，企业的价格提高将（）A提高10&nbsp;&nbsp;B提高大于10&nbsp;&nbsp;C提高小于10&nbsp;&nbsp;D？<BR>6、已知厂商面临的市场需求曲线为Q=200-P，只用劳动作为生产要素，且生产1单位产品需1单位劳动，现在有工会，要求工资总额最大化，厂商要求利润最大化，那么下列正确的是？A&nbsp;&nbsp;P=100&nbsp;&nbsp;B&nbsp;Q=100&nbsp;&nbsp;C&nbsp;W=100&nbsp;&nbsp;D&nbsp;L=150<BR>7、垄断竞争达到长期均衡时，LAC是在？A&nbsp;下降&nbsp;B&nbsp;最低&nbsp;C上升&nbsp;D&nbsp;不一定<BR>8、在COURT古诺模型中，厂商的数量越多则？&nbsp;A&nbsp;B&nbsp;C行业产量上升，价格下降&nbsp;D&nbsp;行业产量下降，价格上升<BR>9、是一个博弈论矩阵，讨论产量决策问题，应该不难的。<BR>10、已知A的成本函数是CA=X*X，B的成本函数是CB=2Y*Y+XY那么：<BR>A&nbsp;&nbsp;A对B有生产外部性&nbsp;&nbsp;B&nbsp;&nbsp;B对A有生产外部性&nbsp;其他两个选项记不得了<BR>二、计算题<BR>1、已知消费者一天的时间为24小时，效用函数U（R，I）=48R+RI-R*R，其中R为休闲时间，I为消费者收入，那么求（1）消费者的劳动供给曲线（2）是不是工资率越高，那么工作时间越长？（3）消费者最大的工作时间是多长？<BR>2、已知企业面临的需求曲线为Q=600-50P，成本函数为C=2Q+300，在价格不变的情况下，企业做广告可以提高需求量，每X广告费用可以增加10乘以根号下X的需求，求（1）、企业不做广告时的利润最大化的产量（2）企业做广告时的利润最大化产量，广告费用？<BR>3、不记得具体数值了了，不过题目不难，就是古诺模型和斯塔克博格模型中厂商利润最大化的计算问题。只要知道模型就可以了。<BR>4、已知只有一个消费者，最大购买量为100，一个厂商，若消费者认为厂商生产的是低品质产品，那么将按照P=9V购买，如果认为是高品质，则按照P=15V购买，如果厂商生产低品质，则生产成本函数为C=0.05VQ*Q，如果生产高品质，则为C=0.1VQ*Q，那么（1）厂商如何限制自己的产量来说明自己生产的是高品质产品？<BR>（2）如果消费者最大购买量为50，那么答案又是什么？<BR><BR>--<BR>I&nbsp;am&nbsp;a&nbsp;small&nbsp;small&nbsp;boy&nbsp;dreaming&nbsp;in&nbsp;the&nbsp;big&nbsp;big&nbsp;tsinghua&nbsp;one&nbsp;day&nbsp;!<BR><BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;http://smth.org·[FROM:&nbsp;218.56.32.*]<BR>]]></description>
</item><item>
<title><![CDATA[微经试题，写给报考清华经管（企管和技经）的考生]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=5972</link>
<author>vain</author>
<pubDate>2005/5/22 15:59:58</pubDate>
<description><![CDATA[<P>发信人:&nbsp;shaonianfei&nbsp;(少年飞),&nbsp;信区:&nbsp;AimGraduate<BR>标&nbsp;&nbsp;题:&nbsp;微经试题，写给报考清华经管（企管和技经）的考生<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Sat&nbsp;Oct&nbsp;16&nbsp;12:06:01&nbsp;2004),&nbsp;站内<BR><BR>&nbsp;&nbsp;行胜于言——经管院训<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;去年专业课（微观经济学和经济学）比较容易，考分高的人非常多，企管招7人，16人参加复试（360&nbsp;&nbsp;分&nbsp;&nbsp;以上）。400分以上差不多就安全了（我认识清华本校一个380多分的兄弟复试被刷）&nbsp;技术经济学差不多也该要390才安全，招7人，21人参加复试。<BR><BR>&nbsp;&nbsp;&nbsp;还有去年招生简章说通过考试录取36人，实际似乎只招收32人（尚未得到严格证实），保送生加留学生共114人（即总共硕士新生144人）。所以考进来未必容易，大家不要掉以轻心。<BR><BR>&nbsp;&nbsp;&nbsp;去年的专业课试题比较容易，当时的企管系主任赵平教授对前来探问的学生直言——今年比去年热多了，你要是考的不够好，可以明年再来——同时有老师提意见，专业课试题太容易了，没有起到把关作用，也体现不出来清华的水准。所以明年的试题存在加大难度的可能性（鉴于今年招生分数高的离谱），请勿怠慢。<BR><BR>&nbsp;&nbsp;&nbsp;下面是我去年还能回忆起的试题－－－04年微观经济学试题&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;判断题（十道，每道五分），判断正确或者错误，或者条件不足无法判断。必须给出判断理由（文字说明，图形分析，或数理推导）。判断错误，无判断理由或理由错误均不得分。<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1。对于向右下倾斜的线性需求函数，当价格下降时，需求弹性下降<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2。按照帕累托最优的定义，当社会所有的财富集中到一个人身上是一种帕累妥最优。<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.纳什均衡是优势均衡的一种，反之则不对<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.现有出版商出版作家的著作,作家按照销售额按固定比例抽成。那么作家（追求最大化自己收入）希望的书籍市场定价要高于出版商出于自己利润最大化的市场定价<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其他记不清了<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;计算分析题（四道，每道25分）<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1。消费者偏好的基本假设是什么？试用无差异曲线表示其涵义。<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2。给出某人的效用函数U=lnx&nbsp;（x为收入）<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（1）判断分险偏好类型<BR>&gt;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（2）此人现在有固定薪水工作，每月500元，他面临一个新工作机会<BR>&gt;&nbsp;可能以概率a（具体数值忘记了比如0。5获得收入10000，以概率1-a获得收入2000元，请问他会选择此新工作吗？<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（3）承第二问，此人会为新工作购买保险吗，最大保险额是多少<BR>&gt;&nbsp;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3。给出香烟市场供给函数Q=F（p)&nbsp;需求函数Q=F（P）（题目给出了具体数值，只是我记不清楚了）<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（1）求市场出清价格与销量<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（2）现政府决定加征从量税T（具体数值忘记），求新市场出清价格与销量以及消费者与生产者分别负担的税量<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（3）求征税的社会静福利损失，政府该怎么向民众解释存在如此福利损失时征税的合理性。<BR>&gt;&nbsp;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4。现有某企业生产成本函数，TC=FC+VC，市场产品需求函数Q=F（p）（具体数值记不清楚了）&nbsp;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（1）市场只有一家企业时，问市场价格与销量，和企业利润<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（2）当市场有两家企业时，求古诺均衡解，企业利润<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（3）受利益吸引，更多企业进入此行业，进入垄断竞争局面，求市场长期均衡解。<BR><BR><BR>以上内容，仅供参考，从上面内容可以看出，基础性的内容为主，并不难，叶对复习没有太多参考价值，复习最踏实的就可以拿到高分了。（呵呵，我宿舍兄弟微经141，牛逼！）建议大家，没必要去买网上的那些兜售的试题，没有太多意义，最危险的情况是被人用假试题骗了钱后，还要受试题误导，影响复习与考试。<BR><BR><BR>&nbsp;&nbsp;大智若愚，大巧若拙，祝各位顺利！<BR><BR>--<BR><BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;http://smth.org·[FROM:&nbsp;219.224.118.*]<BR></P>]]></description>
</item><item>
<title><![CDATA[清华大学经济管理学院2003硕士研究生入学考试]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=5971</link>
<author>vain</author>
<pubDate>2005/5/22 15:57:06</pubDate>
<description><![CDATA[是某位大牛发的,大家看看吧,在此也再次向他致谢<BR>清华大学经济管理学院2003硕士研究生入学考试<BR>经济学（458）试题<BR>一：选择题（15’）<BR>1，&nbsp;PCC表示什么？A&nbsp;&gt;&gt;&gt;&gt;&nbsp;B&gt;&gt;&gt;&gt;&gt;&nbsp;C&gt;&gt;&gt;&gt;&gt;&nbsp;D&gt;&gt;&gt;&gt;&gt;<BR>2，&nbsp;恩格尔系数表示什么？A&gt;&gt;&gt;&gt;&gt;&nbsp;B&gt;&gt;&gt;&gt;&gt;&nbsp;C&gt;&gt;&gt;&gt;&gt;&nbsp;D&gt;&gt;&gt;&gt;<BR>3，&nbsp;阿五开了一个麻绳厂，他发现在一定限度内多雇佣工人麻绳的产量会增多。则这表<BR>明：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A:平均产量增加&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;边际替代率递减<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C&nbsp;边际产量大于零&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D&nbsp;边际产量小于零<BR>&nbsp;&nbsp;&nbsp;4，当规模报酬递减时，生产力弹性<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;,&nbsp;&nbsp;&nbsp;&gt;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B,&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C&nbsp;,&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D,&nbsp;&nbsp;不定<BR>&nbsp;&nbsp;&nbsp;5，一个桔子的边际效用为2，一个梨子边际效用为4，则桔子对梨子的边际替代率为<BR>：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;，&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;，&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C&nbsp;，0.5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D&nbsp;,&nbsp;0.25<BR>&nbsp;&nbsp;&nbsp;6,&nbsp;设一种商品的需求曲线为一直线，当价格超过１５０元时便无人购买，１５０元<BR>以下时便有人购买，现价格为５０元，若将价格提高到１００元，则需求量变化为：<BR>　　　　　　A，上升&nbsp;　　B，下降&nbsp;　　C，上升&nbsp;　　　D，下降<BR>　７，两条需求曲线在某点相切，则在该点价格需求弹性是否相等？<BR>　　　　　　A，是　　　　B，否　　　　C，不确定　　D<BR>　８，抱歉，记不起来了。<BR>　９，桔子价格为４，苹果价格为３。现在用２０元钱，他消费４个苹果，２个桔子。<BR>此时桔子边际效用为１６，苹果边际效用为１２。则该消费者应如何改进该计划。<BR>A，&nbsp;增加支出，同时增加苹果和桔子的消费。<BR>B，&nbsp;增加桔子的消费，减少苹果的消费使总支出保持为２０。<BR>C，&nbsp;增加苹果的消费，减少桔子的消费使总支出保持为２０。<BR>D，&nbsp;减少支出，同时减少苹果和桔子的消费。<BR>　１０，均衡市场上，一件衬衫的价格为２０元，一个麦当劳价格为５元，则卖当劳对<BR>衬衫的边际替代率为：<BR>　　　　　　A，４００％　　B，１００％　　C，５０％　　D，２５％<BR>　１１，消费者可以选择地铁和公交车作为交通工具。先假设地铁要价上涨，则地铁公<BR>司的收入变化如何？<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&gt;&gt;&gt;&gt;&nbsp;&nbsp;B&gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp;C&gt;&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp;D&gt;&gt;&gt;&gt;&gt;&gt;<BR>　１２，一个歌舞厅对顾客得A项，B项服务收取费用，其中A的价格需求弹性低，B的价<BR>格需求弹性高。由于人太挤，老板欲不影响收入而减少顾客，则应采用措施<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A，增加A，B两项的收费<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B，增加A的收费，减少B的收费<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C，增加B的收费，减少A的收费<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D，减少A，B两项的收费<BR>&nbsp;&nbsp;13，当完全竞争市场实现均衡时，则厂商的<BR>A，&nbsp;规模报酬递增&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B，规模报酬递减<BR>B，&nbsp;C，规模报酬不变&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D，不确定<BR>&nbsp;&nbsp;14，生产函数为Q=&nbsp;,其中工资为W=20，资本价格为R=30。在短期&nbsp;=10，则短期成本函<BR>数为：<BR>&nbsp;&nbsp;15，生产函数为Q=&nbsp;,其中工资为W，资本价格为R。则长期成本函数为：<BR>二，简答题（15’）<BR>1，&nbsp;当收入和价格发生变化时，无差异曲线是否会发生改变和移动？请说明理由。<BR>2，&nbsp;请说明连续性原理在经济分析中的意义和作用。<BR>3，&nbsp;萨伊说：“供给会自动创造需求”，请用经济学解释说明该原理。<BR>三，（15’）“人们追求效用最大化，会用自己所有的收入进行消费。”着就是所谓的<BR>瓦尔拉斯定律。然而现实中人们并没有花完自己所有的收入，这是否说明人们并非追求<BR>当期效用最大化？请阐述理由。<BR>四，（15’）我国房地产市场发展迅速，随着经济的增长，很多市民开始拥有第二套房<BR>子，而不卖掉第一套房子。同时由于地皮和原材料的原因，造房的成本也不断上涨。*&nbsp;<BR>*公司开发了191套住宅，售价为150万元，结果有1000名消费者要求购买，于是公司决定<BR>用抽签的方式决定谁购得住宅。<BR>１，&nbsp;试分析新住宅市场的均衡价格和均衡产量的变化。<BR>２，&nbsp;试分析旧住宅市场的均衡价格和均衡产量的变化。<BR>３，&nbsp;*&nbsp;*公司也可以用市场自由定价的方式分配住宅。试分析这两种方式的经济效率和<BR>收入效应。<BR>五，（１５’）试论博弈论在经济学中的应用。<BR>六，（１５’）国民经济中国民边际消费倾向为0.5，边际投资倾向为0.3，自发消费为<BR>1000，自发投资为1200，政府支出为8000，税收为8000，出口为7000，进口为5000，则<BR>该国国民收入为多少？<BR>七，（15’）我国实行的是“效率优先，兼顾公平”的收入分配原则，试用经济学原理<BR>来分析他的理论依据。<BR>八，（１５’）为什么国民经济仅仅依靠市场调节或政府调控都不行而需将市场调节和<BR>政府调控相结合？<BR>九，（１５’）凯恩斯和弗里德曼都注意到货币流通速度和国民经济有同周期性。即国<BR>民经济繁荣时，货币流通速度高，国民经济低迷时，货币流通速度低。请用他们的理论<BR>解释该现象。<BR>十，（１５’）现有十一种资产：（由于记不清，9，10，11，这三种资产的表述与原题<BR>可能有出入。而且十一种资产的顺序也不是这样。）<BR>１，&nbsp;通货&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2，活期存款&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3，旅行支票&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4，其他支票存款<BR>5，小额定期存款&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6，大额定期存款&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7，隔夜回购协议<BR>8，定期回购协议&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9，个人所持有的货币市场共同基金<BR>10，机构持有的货币市场共同基金&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11，在证券，货币市场机构的存款<BR>请划分M!,&nbsp;M2,&nbsp;M3.<BR><BR><BR><BR>--<BR>逃避不一定躲得过，面对不一定最难受<BR>孤独不一定不快乐，得到不一定能长久<BR>失去不一定不再有，转身不一定最软弱<BR><BR>]]></description>
</item><item>
<title><![CDATA[2004清华研究生入学考试807经济学]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=5970</link>
<author>vain</author>
<pubDate>2005/5/22 15:55:50</pubDate>
<description><![CDATA[发信人:&nbsp;brinkzone&nbsp;(雪域光芒),&nbsp;信区:&nbsp;AimGraduate<BR>标&nbsp;&nbsp;题:&nbsp;2004清华研究生入学考试807经济学<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Mon&nbsp;May&nbsp;&nbsp;3&nbsp;17:54:37&nbsp;2004),&nbsp;站内<BR><BR>2004清华研究生入学考试807经济学<BR>（下面没道题都是15分，可参照去年的试题，有几道是重复的）<BR>一．<BR>1、&nbsp;当消费者的收入或商品的价格发生变化时，无差异曲线本身是否会发生变化<BR>？<BR>2、&nbsp;怎样理解经济学中所说的成本？<BR>3、&nbsp;试论述萨伊定律背后的经济学原理<BR>二．经济学中经常将商品的需求曲线看作一条直线，这样做有没有什么理论依据<BR>和实践基础？<BR>三．为什么劳动力供给曲线向后弯曲？<BR>四．试证明：劳动和资本的产出弹性为常数当且仅当生产函数具有Cobb－Doulgo<BR>us的形式时即F（L，K）＝AKαLβ<BR>五、试论述囚徒困境对于经济学的意义<BR>六、某人有10万元的存款，存入银行可以获取2％的利率。他可以将一部分钱投入<BR>股票市场，现在假设股票市场仅仅存在一种股票，收益率和方差服从正态分布N（<BR>0.1，1），他对于均值和方差的偏好为U（μ，σ）＝10μ－σ2，他应该将多少<BR>钱投放到股票市场上？<BR>七、某国国内对于某产品的需求和供给具有如下形式：<BR>需求函数：Q＝16000/P^2<BR>供给函数：Q＝P^2/10<BR>（1）&nbsp;&nbsp;&nbsp;求完全竞争情况下的社会福利<BR>（2）&nbsp;&nbsp;&nbsp;如果政府对该产品实行P＝25元的最低限价，社会福利的损失是多少？<BR>（3）&nbsp;&nbsp;&nbsp;假设国际市场上该产品的价格是10元，其生产成本远远低于国内。该国政<BR>府为了保护国内的生产者，对于进口的每单位产品征收税收5元。与不征收关税相<BR>比，社会福利的损失为多少？<BR>八．经济中达到一般均衡是否意味着充分就业？为什么追求高就业目标会导致通<BR>货膨胀？<BR>九．论述税收和公债的挤出效应。<BR>十．一国财政支出为8000亿，税收8000亿，出口为7000亿，进口5000亿，边际消<BR>费倾向为0.5，自发消费为1000亿，边际投资倾向为0.3，自发投资为1200亿。试<BR>求该国的国民收入。<BR><BR><BR>--<BR><BR><BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;202.113.19.*]<BR>]]></description>
</item><item>
<title><![CDATA[[分享]经管05年专业课]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=5969</link>
<author>vain</author>
<pubDate>2005/5/22 15:54:43</pubDate>
<description><![CDATA[发信人:&nbsp;Amors&nbsp;(晴天仔仔),&nbsp;信区:&nbsp;AimGraduate<BR>标&nbsp;&nbsp;题:&nbsp;[分享]经管05年专业课<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Wed&nbsp;Jan&nbsp;26&nbsp;11:11:29&nbsp;2005),&nbsp;站内<BR><BR>1.瓦尔拉斯定律认为，人们为了满足当前效用的最大化，会花光所有的收入进行消费。然而现实生活中并非如此，如何解释这一现象？是否人们的消费决策不是按当前效用最大化原则作出的？<BR><BR>2.某地房地产市场十分兴旺，房价以逐月2%的速度上涨。原因是外来人口不断增加，当地居民也开始寻求拥有第二套住房，而建造新房的成本逐渐上涨，可供建房的土地也日益减少。某房地产开发商开发了191套新住房，打算以155万的价格出售，而在该价格下登记的欲购房者有1000人。该开发商采用抽奖的方式从中抽取191人，出售住房。请回答：<BR>（1）新房市场的均衡市场价格和数量会如何变化<BR>（2）旧房市场会受到怎样的影响<BR>（3）如果该开发商采用市场定价，和原先的定价方式相比，在效率和收入分配方面的效果有何差别<BR><BR>3.某人有收入R元，欲购买商品x，请分析他的购买决策是如何做出的，推导出x的需求曲线，如果坚持认为货币的边际效用不变，则他的效用函数具有什么形式<BR><BR>4.“谷贱伤农”，粮食丰收反而会带来农民收入的下降，请分析背后的经济学原因，并说明政府在农业领域可以发挥哪些作用<BR><BR>5.甲有300单位商品X，乙有200单位商品Y，二人的效用函数都是U(x,y)=xy，推导出所有满足Pareto最优的状态。二人通过交换达到Pareto最优，求出社会的价格体系，并求出最后的交换结果<BR><BR>6.为什么在经济调控中，光用市场或者政府手段都不行，要将二者有机结合起来<BR><BR>7.从1998年以来，我国一直实行积极的财政政策，而2004年12月底中央会议上首次提出，2005年将实行稳健的财政政策，你是如何看待这一转变的<BR><BR>8.凯恩斯和弗里德曼都注意到了货币流通速度的顺周期性，分别用他们的理论解释这一现象<BR><BR>9.分析税收和政府支出对IS曲线的影响，并分析其中隐含的政策意义<BR><BR>10.说明新古典主义和新凯恩斯主义的主要观点<BR>--<BR>西风烈马，把酒拈花，浪迹天涯<BR><BR><BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;162.105.43.*]<BR>]]></description>
</item><item>
<title><![CDATA[清华经管技术经济04年的招生情况]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=5968</link>
<author>vain</author>
<pubDate>2005/5/22 15:46:21</pubDate>
<description><![CDATA[<P>发信人:&nbsp;beambean&nbsp;(beambean),&nbsp;信区:&nbsp;AimGraduate<BR>标&nbsp;&nbsp;题:&nbsp;[求助]清华经管技术经济04年的招生情况<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Sun&nbsp;Dec&nbsp;12&nbsp;13:37:27&nbsp;2004),&nbsp;站内<BR><BR>请问清华经管技术经济专业04年招了多少人，有没有自费的？<BR><BR>附：03年经管招生情况（转载）<BR>03年考试录取情况：<BR>&nbsp;&nbsp;&nbsp;<BR>政治经济学，报名&nbsp;31人，&nbsp;面试&nbsp;6人，&nbsp;录取&nbsp;3人；<BR>西方经济学，报名&nbsp;15人，&nbsp;面试1人，&nbsp;&nbsp;录取&nbsp;3人；<BR>国际贸易学，报名&nbsp;64人，&nbsp;面试6人，&nbsp;&nbsp;录取2人；<BR>会计学&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;报名&nbsp;7人，&nbsp;&nbsp;面试1人，&nbsp;&nbsp;录取&nbsp;1人<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数学不低于&nbsp;78分，英语，政治不低于51分，专业课不低于90分；总分不低于330分。<BR><BR><BR><FONT color=#dd22dd>金融学，&nbsp;&nbsp;&nbsp;&nbsp;报名&nbsp;97人+1人（单考），&nbsp;面试10+1&nbsp;人，&nbsp;录取&nbsp;6人；<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数学不低于&nbsp;78分，英语，政治不低于51分，专业课不低于90分；总分不低于325分。<BR></FONT><BR><BR>数量经济学，报名&nbsp;21人，&nbsp;面试&nbsp;4人&nbsp;，录取&nbsp;3人<BR><FONT color=#dd22b8></FONT></P>
<P><FONT color=#dd22b8>企业管理，&nbsp;报名79人+7人（单考），面试9+2，&nbsp;录取&nbsp;8+2；<BR>&nbsp;&nbsp;&nbsp;&nbsp;数学不低于&nbsp;78分，英语，政治不低于51分，专业课不低于90分；总分不低于310分。<BR></FONT><BR><BR>技术经济及管理，报名&nbsp;86+2人（单考），面试&nbsp;11+2人，&nbsp;录取9+2人；<BR>&nbsp;&nbsp;&nbsp;&nbsp;数学不低于&nbsp;78分，英语，政治不低于51分，专业课不低于85分，总分不低于310分。<BR><BR><BR>管理科学与工程，报名53人，&nbsp;面试&nbsp;10人，&nbsp;录取&nbsp;6人<BR>&nbsp;&nbsp;&nbsp;&nbsp;数学不低于&nbsp;78分，英语，政治不低于51分，专业课不低于80分，总分不低于300分。<BR><BR>--<BR><BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;166.111.68.*]<BR></P>]]></description>
</item><item>
<title><![CDATA[对数学教材选择还不清楚的同学们的一点建议]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=5967</link>
<author>vain</author>
<pubDate>2005/5/22 15:23:37</pubDate>
<description><![CDATA[<DIV class=content id=zoom>考试中心的老师说的好　他们出题的时候不会参照任何指定的哪个课本．<BR>但大纲的修订者则是推荐了：　<BR>同济５版的　高等数学　(个人觉得这本书有些考纲要求的知识点并没有,同时用4版也是没问题的.所以看课本的时候最好对照着考纲看)<BR>线性代数　则是推荐的是　同济的３版 (很多地方写的不清楚,问题是也有知识点的遗漏.本人比较欣赏清华的线代)　<BR>概率则是　浙大的　第三版(这本书还算经典,例题和课后题都不错,其实南开的 或华中的也不错)<BR>教材没有经济类和理工的区别的 这请大家要知道 就是经济类的和理工类的完全应该看同一本书!<BR>经济类和理工类的区别：　中心的老师说的很清楚了　大纲都要求的部分　难度要求是一样的　没有区别　不信你可以拿理工的和经济的比较一下就知道了.考察的时候重合点非常的多!<FONT color=#e61abd>很多时候经济类的高数部分比理工的相对简单的多，而线性和概率部分则要求高的多．<BR></FONT>更客观的说法是：经济类和理工类的侧重不同．大家考察的侧重不同导致大家对难易的理解有误．经济类的概率和线代对理工的很有借鉴的．这也是不争的事实．其实看不看文灯不是重点．因为考研不是看你会了多少技巧和方法　而是看你对这些理论的理解深度和应用水平的能力．文灯介绍那么多方法有几个会考？而他上面没写的基本工具又有哪几年没考？<BR><B>建议做题的顺序:课本~课后习题(或权威一点的习题集)~真题~文灯(乐哥)~模拟~真题回顾&nbsp;&nbsp;本人觉得这个顺序是最合理的!</B>关键是边做边思考．<BR>奉劝那些迷茫的人和考研数学上走弯路还没进展的人　别傻了把几的跟人家费劲了，学了大半年　最后能考１００多分就想着跟大家分享经验了！那是弯路不是宝贵的经验！留着大半年干点什么不好？非要看大半年才考那１００多分？　还高兴的只想哭．真的没必要！因为本来两个月就能达到的却用大半年　那不是在浪费青春吗？<BR></DIV>]]></description>
</item><item>
<title><![CDATA[nothing]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=5893</link>
<author>vain</author>
<pubDate>2005/5/18 13:45:52</pubDate>
<description><![CDATA[<P>昨天可能没写日志吧,我忘记了。</P>
<P>只是昨天上了这个BLOG,发现&lt;北大最美的十处树景&gt;居然还被推荐了。皑皑.也许推荐那篇的管理员是位很感性的女孩子吧,我瞎猜的.反正没想到那篇被当做精品.说真的我认为怎么选择BLOG那篇更值得被推荐呢,不过那篇倒没有,但还算幸运,被Collin发现,也根据其中做了调整，允许了游客留言,很好.</P>
<P>还有值得一提的是写的最随便的一篇&lt;关于这个BLOG&gt;,居然还进了本周十大,估计是题目的原因吸引了人们的眼球.其实写这个日志包括题目都是很随机的,从没有想哗众取宠的意思.那是前天晚上吧,本来想来这里写BLOG的，但去新水木看了5.15激活的帐号,我还是喜欢水木(被站方接管的水木站点现在被叫做了伪站,呵呵,新水木和原来的水木清华除了加了个new,别的都没有变,上面的朋友都一样存在,包括我的收藏夹都没有变,上面清华的同学也一样存在着,我昨天还加了一位同学).我去新水木,就看到熟悉的***发表的一篇文章,于是我去他的BLOG留言了,几乎说在那里写了一篇日志.我告诉他我还是喜欢他的学校，喜欢清华...写了很多,再来这里都没什么可写的了，那一刻很想念水木的味道,还是喜欢水木,就写想完全转到那里去好了。很简短的一句话，倒上了十大.</P>
<P>我之所以选择这个BLOG只有一个原因,就是因为安静.我静静的呆在这里,随便涂鸦两句，在心情好或不好的时候.我得有别的很多事做,BBS上我太被宠爱了,太多的爱爱到我必须逃开,这里很好,没人打扰.于是我这样一个平凡女子暂时找到了快乐.</P>
<P>今天的日志还没写呢，没时间了。改天再说.</P>]]></description>
</item><item>
<title><![CDATA[一份c学习笔记]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=5878</link>
<author>vain</author>
<pubDate>2005/5/17 20:51:41</pubDate>
<description><![CDATA[<P>发信人: lingjie (owl), 信区: C_Prog<BR>标&nbsp; 题: 一份c学习笔记<BR>发信站: 两全其美 BBS (Thu Oct 28 20:43:41 2004), 本站(lqqm.net)</P>
<P>此文为在下今年暑假所写，很多观点尚不成熟，供各位参考</P>
<P>～～～·～～～～～～～～～～～～～～～～～～～～～～～～～～～</P>
<P>写在前面的话</P>
<P>作为计算机专业的学生来说，学习编程是一件不可避免的事情，然而，想成为真正<BR>的程序员（相信这是我们共同的理想），光凭我们在课堂里学到的那些东西是远远<BR>不够的，我们必须读大量的书，写大量的代码，经历一个艰难而快乐的过程之后，<BR>才能真正走入这个领域。因此利用好这个漫长的暑假，对于一个想学好编程的人来<BR>说是很有意义的。</P>
<P>为什么要学习c语言？</P>
<P>对于初学者来说，往往第一个要学的就是c语言。为什么要学习c语言？对于今天这<BR>个惟利是图的世界来说，恐怕初学者第一要问的就是这个问题，他们中的很多人都<BR>会说在拥有c++，java，c＃这些高级语言的今天，c能做什么呢？在网络中，得到的<BR>回答往往是："c无所不能"，然后是一些语重心长的说教，呵呵，对于一个对编程知<BR>道不多的人来说这样的回答没有任何意义，因此我对这样的问题的回答是：那些高<BR>级语言的出现并不能结束c长达三十余年的长盛不衰，c语言没有被任何一种语言所<BR>代替。相反，有些和c同时代的那些东西，恐怕今天的人连名字都忘了。在这个世界<BR>的每个角落都有无数的编程爱好者和从业人士对c有着无与伦比的狂热。这是事实，<BR>这是真理，它证明了一切。至于这个原因何在？c魅力到底在那呢？呵呵，这正是我<BR>们要在学习中必须弄明白的事情之一。现在就请你记住这个问题。</P>
<P>选择什么书？</P>
<P>选好了学习对象，那么最关键的无疑是选择一本好书，毫无疑问没有人能比K&amp;R对c<BR>更有发言权了，用他们亲笔所写的《The C Programming Language》来入门是再合<BR>适不过了，尽管现在市场上关于c的教材到处都是，但是大半都是以这本书为根基的<BR>，严格来说关于c的一切疑问都可以在这本书中得到解释。我的这个系列笔记也是以<BR>此为基础，另外会引入另一本巨作《C专家编程》的观点（强烈向有一定c基础的朋<BR>友推荐此书）。当然，这本书写于1994年，对于c99的东西缺乏说明，但是，请记住<BR>，你要学的是那些万变不离其宗的东西，没有基础就追求那些时尚是很不合适的，<BR>也是成功率很低的事情。好了，下面就让我们开始这个暑假的编程学习之旅吧。</P>
<P>目录</P>
<P>写在前面的话&nbsp;&nbsp;&nbsp; 1</P>
<P>为什么要学习c语言？&nbsp;&nbsp;&nbsp;&nbsp; 1</P>
<P>选择什么书？&nbsp;&nbsp;&nbsp; 1</P>
<P>目录&nbsp;&nbsp;&nbsp; 2</P>
<P>第一章 认识C语言&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3</P>
<P>关于EOF 3</P>
<P>声明和定义&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3</P>
<P>字符数组和字符串&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4</P>
<P>第二章 走过类型和表达式的迷宫&nbsp;&nbsp; 5</P>
<P>变量和常量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5</P>
<P>关于换码序列&nbsp;&nbsp;&nbsp; 6</P>
<P>关于++运算符&nbsp;&nbsp;&nbsp; 7</P>
<P>第三章 当好机器的老板&nbsp;&nbsp; 8</P>
<P>尽量使用局部变量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8</P>
<P>注意和正视一些看起来像bug的语言特性&nbsp;&nbsp;&nbsp;&nbsp; 9</P>
<P>第四章 关于程序风格的一点讨论。 11</P>
<P>合理利用空白字符，使得代码风格简洁清楚&nbsp; 11</P>
<P>尽量分解问题，多写函数&nbsp; 13</P>
<P>尽量使用有意义的名字，少用无意义的符号和幻数&nbsp;&nbsp;&nbsp; 14</P>
<P>注释&nbsp;&nbsp;&nbsp; 15</P>
<P>第五章 程序设计思想初步 16</P>
<P>第一步，建立一个项目：&nbsp; 16</P>
<P>第二步，确定要提供的接口&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16</P>
<P>第三步，实现接口函数&nbsp;&nbsp;&nbsp; 17</P>
<P>第四步 连接各个接口&nbsp;&nbsp;&nbsp;&nbsp; 23</P>
<P>第六章 尽量利用能利用的资源&nbsp;&nbsp;&nbsp;&nbsp; 24</P>
<P>第一章 认识C语言</P>
<P>当然，我应该是第四次读这本书了，每次重读都收获不少。都引起我新的思考，很<BR>难想象他的魔力何在。本章的内容是很容易理解的概念，对于编程学习者是最起码<BR>的知识，但是有些东西还是被初学者忽视了，以至于它们在各个技术社区的初学者<BR>问题中层出不断。其实，这些东西在第一章就得到了比较完整的解释，下面只是把<BR>他们提出来强调一下。</P>
<P>关于EOF</P>
<P>在很多书籍中都存在这样的循环语句：</P>
<P>while ( getchar() != EOF )&nbsp; {….}</P>
<P>很多人不明白这个EOF为何物？具体如何操作？以至于让上面的语句变成了无限循环<BR>。呵呵，其实EOF是文件结束符（end of file），在第七章有说明，其为系统常量<BR>。大多数情况下，值为-1，当然你在终端输入-1，循环并未结束，why？how to do<BR>？恩，你在《c专家编程》里会了解到，c的第一批使用者都是系统设计者和编译器<BR>设计者。在他们的理念里，信息往往以文件为单位的。这个标志只是文件结束的状<BR>态，一般不由用户提供。键盘等输入端在os中是个极其特殊的文件，需要用户显式<BR>标志文件结束。说是系统常量，当然有着系统依赖性（因此说EOF的值就是-1，也是<BR>不正确的），因此不同的系统标志方式就完全不同。Windows下是ctrl+z。linux下<BR>是ctrl+D.，这是从系统的角度来说。另外更直接的原因是，为了保证程序的完整性<BR>，EOF应该排除在可输入字符之外，这是从语言的根源上来考虑的。</P>
<P>声明和定义</P>
<P>尽管这个问题地球人都知道，但是真正说的清楚的人并不多。有人认为变量的声明<BR>和定义没有什么区别。有人认为这个与初始化有关系（我曾经就这样白痴，汗～～<BR>～），对于后者那就是根本就不明白这两个概念。声明只是给编译器一个提示，有<BR>这么个名字存在于程序中，和运行环境毫无关系，可以重复出现。定义是具体分配<BR>内存空间和指定了变量的位子（左值），在同一域中只能出现一次。对于前者的观<BR>点，在单文件程序中几乎找不到错误。但是，你把这样的句子放入头文件int a，一<BR>旦这个头文件被重复包涵，必然出现链接错误，其实这样：</P>
<P>extern int a;//声明</P>
<P>int a;//定义</P>
<P>字符数组和字符串</P>
<P>有人认为这两个是同一概念，是这样吗？不，完全不是，前者为容器（数据结构）<BR>,后者为数据。这样说也许太理论化，好，我们来改写下那个hello world</P>
<P>#include "stdio.h"</P>
<P>#include "stdlib.h"</P>
<P>int main()</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; printf( "\0hello world " );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; system("pause");</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; return 0;</P>
<P>}</P>
<P>&nbsp;呵呵，什么也没有？是的。还记得字符串是怎么结束的吗？\0 "\0hello world "<BR>是个常量数组。但是字符串却是""。这章尽管非常简单，但是每个例子都经典之作<BR>，建议你每个都抄一遍，你能从代码中学到更多的东西。</P>
<P>第二章 走过类型和表达式的迷宫</P>
<P>这本书的第二章的内容是学习编程中最基础东西，任何一门语言都会告诉你他支持<BR>那些数据类型、那些运算、有那些特点、以及有那些不完善的东西。学习这些东西<BR>相对来说是单调了点，麻烦了点，但是只有通过了这座迷宫，你才能进入C这个神奇<BR>的世界。因此初学者的成功至少有一半来自"耐心"。呵呵，准备好了吗？</P>
<P>这章的内容还是非常简单的，但是作者的字里行间隐藏了很多重要的信息，不加注<BR>意就会从我们的眼皮低下溜了去，下面将一一列出以示强调。</P>
<P>变量和常量</P>
<P>很多人对于他们的区别很模糊，个人认为他们的主要区别在于是否分配内存空间，<BR>换句话说，就是是否存在左值。左值是什么？在第二章的从头到尾好像没找到这个<BR>名词，呵呵，你可以在附录中关于变量的条目中找到他，其实就是变量的地址，变<BR>量一旦被定义，左值就被确定了，一直到他的生存期结束。我们通常说的变量的值<BR>是指变量的右值。这才是我们能操作的对象。根据这个理论，那么就不难知道其实<BR>被const修饰的对象不是常量，他有左值，但是这里有个小麻烦，在本章的开头写明<BR>了被const修饰的是常量（第二章章第二段有个（）说明），我查看了原版，并没有<BR>这个补充说明，看来应该是译者的理解，在《C专家编程》中的一个例子证明了我的<BR>想法是正确的，例子如下：</P>
<P>#include "stdio.h"</P>
<P>#include "stdlib.h"</P>
<P>#define one 1</P>
<P>const int two = 2;</P>
<P>int main()</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp; int ix = 1;</P>
<P>&nbsp;&nbsp;&nbsp; switch( ix )</P>
<P>&nbsp;&nbsp;&nbsp; {</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case one: printf( "this is 1" );/*ok*/</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case two: printf( "this is 2" );/*error*/</P>
<P>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; system( "pause" );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;</P>
<P>}</P>
<P>大家都知道，case后面只能跟常量表达式，因此被const修饰的变量不是常量，只是<BR>变量的右值一般不能改变罢了。另外你也可以从上面感觉出#define和const的区别<BR>。</P>
<P>关于换码序列</P>
<P>这个更多地方叫转义字符，他们大多数是有一些特殊的功能的字符，在上篇笔记中<BR>你已经看到了他的一点威力，下面我们再看一段代码：</P>
<P>#include "stdio.h"</P>
<P>#include "string.h"</P>
<P>#include "stdlib.h"</P>
<P>int main()</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp; int ix;</P>
<P>&nbsp;&nbsp;&nbsp; ix = strlen( "\0abc" );</P>
<P>&nbsp;&nbsp;&nbsp; printf( "this is %d\n", ix );</P>
<P>&nbsp;&nbsp;&nbsp; ix = strlen( "\007abc" );</P>
<P>&nbsp;&nbsp;&nbsp; printf( "this is %d\n", ix );</P>
<P>&nbsp;&nbsp;&nbsp; system( "pause" );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;</P>
<P>}</P>
<P>你会发现，两个差不多的字符串长度完全不一样，什么回事呢？第一个我们可以理<BR>解：\0是字符串结束符，因此其后的任何东西都不能算字符串的内容，因此长度为<BR>0。但是第二个呢？我们查了换码序列表就知道'\007'这个为一个字符，因此长度为<BR>4。这个时候问题来了，编译器为什么没把'\007'理解为'\0''0''7'呢？如果这样的<BR>话长度也将为0，我们又没人为的加分割符号，呵呵，显然这个和编译器的具体实现<BR>相关，凭我们现有知识无法弄明白这点，姑且留着，等待"悟"的一天吧，相信我，<BR>这绝对是一种享受。</P>
<P>关于++运算符</P>
<P>在很多教材上都有个看起来很经典的题目，其代码如下：</P>
<P>#include "stdio.h"</P>
<P>#include "stdlib.h"</P>
<P>int main()</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp; int ix, iy;</P>
<P>&nbsp;&nbsp;&nbsp; iy = 1;</P>
<P>&nbsp;&nbsp;&nbsp; ix = ( iy++ ) + ( iy++ ) + ( iy++ );</P>
<P>&nbsp;&nbsp;&nbsp; printf( "this is %d\n", ix );</P>
<P>&nbsp;&nbsp;&nbsp; iy = 1;</P>
<P>&nbsp;&nbsp;&nbsp; ix = ( ++iy ) + ( iy++ ) + ( iy++ );</P>
<P>&nbsp;&nbsp;&nbsp; printf( "this is %d\n", ix );</P>
<P>&nbsp;&nbsp;&nbsp; iy = 1;</P>
<P>&nbsp;&nbsp;&nbsp; ix = ( ++iy ) + ( ++iy ) + ( iy++ ) ;</P>
<P>&nbsp;&nbsp;&nbsp; printf( "this is %d\n", ix );</P>
<P>&nbsp;&nbsp;&nbsp; iy = 1;</P>
<P>&nbsp;&nbsp;&nbsp; ix = ( ++iy ) + ( ++iy ) + ( ++iy ) ;</P>
<P>&nbsp;&nbsp;&nbsp; printf( "this is %d\n", ix );</P>
<P>&nbsp;&nbsp;&nbsp; system( "pause" );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;</P>
<P>}</P>
<P>呵呵，是不是很晕？这个本来无非为了说明先加后加的问题，这个地球人都知道，<BR>这里不加说明了，但是这样的程序本身就有很大的问题，编译器的运算并非一定是<BR>从左到右的（有些是按树的遍历来算的），因此你会发现不同的编译器结果会不一<BR>样，关于这个第二章的结尾有很完整的解释，我就不再多说了，总之，这个测试本<BR>身就违背了语言的特性。</P>
<P>第三章 当好机器的老板</P>
<P>&nbsp;</P>
<P>无论什么时候我们都不该忘记我们是在学一门语言，而学语言的基本要求是：准确<BR>无误的用它来表示自己的意图，不仅要让机器读懂，也要让别人（只要他会c语言）<BR>读懂你的意思。记住，语言是用来交流的，不论是编程语言还是自然语言。现在让<BR>我们对这两个交流的对象分别作个分析，如何才能让他们明白你想干什么，打算怎<BR>么干。</P>
<P>对于机器来说，我们要做的相对要简单点，编程语言的语法比自然语言要简单的多<BR>了，一切都由顺序、选择、循环三种结构复合而成，初学者要做的只是走一个"抄写<BR>－改写－模仿－习惯"的过程而已。等这些语句成了你的习惯那就太好了，就像你说<BR>汉语的时候不会去考虑你用的是陈述句还是感叹句，呵呵，（这个让我想起了我糟<BR>糕的英语，汗～～～）。当然我们对机器要做的远远不止这些，让机器读懂这只是<BR>第一步而已，如何让机器按照我们的意思运行的更好、更快才是我们要追求的境界<BR>，当然，这个境界没有止境。得在经验中慢慢积累，下面只是提出几个个人的建议<BR>而已：</P>
<P>尽量使用局部变量</P>
<P>因为c语言有个特点，在同个域中的变量必须定义在所有处理语句之前（分程序 除<BR>外），这意味着在程序开始的时候就必须分配好所有的静态空间，而很多数据在程<BR>序中用很少，因此我们需要减少这些不必要的开销，灵活运用分程序可以将这些对<BR>象进一步局部化，比较下面两段代码：Code1:</P>
<P>&nbsp;&nbsp; #include "stdio.h"</P>
<P>#include "stdlib.h"</P>
<P>int main()</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp; int ix;</P>
<P>&nbsp;&nbsp;&nbsp; char c;</P>
<P>&nbsp;&nbsp;&nbsp; scanf( "%c", &amp;c );</P>
<P>&nbsp;&nbsp;&nbsp; if( c == 'y')</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; {</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ix = 100;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "this is %d! \n", ix );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp; system( "pause" );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;</P>
<P>}</P>
<P>Code2</P>
<P>#include "stdio.h"</P>
<P>#include "stdlib.h"</P>
<P>int main()</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp; char c;</P>
<P>&nbsp;&nbsp;&nbsp; scanf( "%c", &amp;c );</P>
<P>&nbsp;&nbsp;&nbsp; if( c == 'y')</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; {</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int ix = 100;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "this is %d! \n", ix );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp; system( "pause" );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;</P>
<P>}</P>
<P>你会发现如果我们不输入'y'系统就没有必要为ix分配空间。</P>
<P>注意和正视一些看起来像bug的语言特性</P>
<P>比如switch语句，可以说从c语言建立的那天起对他的争论就没有停止过，它的向下<BR>穿越给我们带来了不少麻烦。以至于在《[ISBN]7-115-10627-4[/ISBN]》的第二章<BR>中把它说成是"多做之过"，但是我们发现有时候它的功能还是不可代替的，比如判<BR>断一个数是否属于某个离散集合：</P>
<P>#include "stdio.h"</P>
<P>#include "stdlib.h"</P>
<P>int main()</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp; int i;</P>
<P>&nbsp;&nbsp;&nbsp; while( scanf( "%d", &amp;i ) != EOF )</P>
<P>&nbsp;&nbsp;&nbsp; {</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch( i )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 1: case 2:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 3: case 5:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 8: case 13:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "yes!\n" );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default :</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "no!\n" );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp; system( "pause" );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;</P>
<P>}</P>
<P>呵呵，这个数列大家都熟悉，但是除了switch语句你能找到比他更简洁的表示方法<BR>吗？但这正是运用了语句的向下穿越性啊。goto语句也有类似的情况，只要我们仔<BR>细研究，这些看起来很麻烦的东西都会变得非常美好。</P>
<P>好了，对机器的交流我们就说到这儿吧。在下次笔记中我们将谈谈和人的交流－程<BR>序的风格问题。</P>
<P>第四章 关于程序风格的一点讨论。</P>
<P>到目前为止，我们已经了解c程序的基本元素，在进入过程化程序设计之前，我个人<BR>认为该对编码习惯做个良好的开端。关于程序设计风格问题，严格来说是一个没答<BR>案的讨论，随着编码经验的增加，我们在不同的阶段会有不同的认识，不同的出发<BR>点，本文要说的也只是笔者了两年来的编码体会，写出来的确需要勇气（毕竟在很<BR>多人眼里我没有这个资格），只是讨论的目的，绝无要误人子弟之意。</P>
<P>一个好的程序员写出来的代码不仅要让机器运行起来并实现想得到结果，而且要让<BR>任何一位懂c语言的人看了就明白这段代码是什么意思，而不是需要大量的注释和文<BR>档来帮助他搞懂你的意思（当然作为辅助还是必须的）。以下就是个人的一些体会<BR>：</P>
<P>合理利用空白字符，使得代码风格简洁清楚</P>
<P>下面这段代码，实在让人看起来费劲；</P>
<P>#include "stdio.h"</P>
<P>#include "stdlib.h"</P>
<P>int main()</P>
<P>{</P>
<P>int a[2][1],i,j;</P>
<P>for(i=0;i&lt;2;++i)</P>
<P>for(j=0;j&lt;1;++j)</P>
<P>scanf("%d",&amp;a[i][j]);</P>
<P>for(i=0;i&lt;2;++i)</P>
<P>for(j=0;j&lt;1;++j)</P>
<P>printf("%d",a[i][j]);</P>
<P>system("pause");</P>
<P>return 0;</P>
<P>}</P>
<P>当然，习惯在IDE下编写代码的朋友们可以借助环境的自动缩进(在非windows环境下<BR>往往就没这么舒服，得自己手动缩进)，让上面的东西稍微好一点：</P>
<P>#include "stdio.h"</P>
<P>#include "stdlib.h"</P>
<P>int main()</P>
<P>{</P>
<P>&nbsp;&nbsp; int a[2][1],i,j;</P>
<P>&nbsp;&nbsp; for(i=0;i&lt;2;++i)</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=0;j&lt;1;++j)</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%d",&amp;a[i][j]);</P>
<P>&nbsp;&nbsp; for(i=0;i&lt;2;++i)</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for)j=0;j&lt;1;++j)</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%d",a[i][j]);</P>
<P>&nbsp;&nbsp; system("pause");</P>
<P>&nbsp;&nbsp; return 0;</P>
<P>}</P>
<P>但是，看上去还是有点乱，特别是表达式的写法，如果你是telnet环境下的bbs里看<BR>这段代码对于眼睛来说不能不说是场恶梦。于是我们在运算符和括号的里恻各加个<BR>空格。并将不同意义的变量分开定义，哪怕他们属于同一类型。</P>
<P>#include "stdio.h"</P>
<P>#include "stdlib.h"</P>
<P>int main()</P>
<P>{</P>
<P>&nbsp;&nbsp; int a[ 2 ][ 1 ];</P>
<P>&nbsp;&nbsp; int i, j;</P>
<P>&nbsp;&nbsp; for( i = 0; i &lt; 2; ++i )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( j = 0; j &lt; 1; ++j )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf( "%d", &amp;a[ i ][ j ] );</P>
<P>&nbsp;&nbsp; for( i = 0; i &lt; 2; ++i )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( j = 0; j &lt; 1; ++j )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "%d", a[ i ][ j ] );</P>
<P>&nbsp;&nbsp; system( "pause" );</P>
<P>&nbsp;&nbsp; return 0;</P>
<P>}</P>
<P>呵呵。别看只是几个空格的问题。当你的代码很长的时候它可以帮助你让别人有耐<BR>心读下去，如果一眼看去符号字母集成一堆，谁还有兴趣看呢？</P>
<P>尽量分解问题，多写函数</P>
<P>简化main函数。比如上面那段代码可以写成下面这样，你会觉得更容易理解代码的<BR>功能、</P>
<P>#include "stdio.h"</P>
<P>#include "stdlib.h"</P>
<P>const int* scan( int *p )</P>
<P>{</P>
<P>&nbsp;&nbsp; int i, j;</P>
<P>&nbsp;&nbsp; for( i = 0; i &lt; 2; ++i )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( j = 0; j &lt; 1; ++j )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf( "%d", ( p + j ) + i * 2 );</P>
<P>&nbsp;&nbsp; return p;</P>
<P>}</P>
<P>void print( const int *p )</P>
<P>{</P>
<P>&nbsp; int i, j;</P>
<P>&nbsp; for( i = 0; i &lt; 2; ++i )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( j = 0; j &lt; 1; ++j )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "%d", *( ( p + j ) + i * 2 ) );</P>
<P>}</P>
<P>int main()</P>
<P>{</P>
<P>&nbsp;&nbsp; int a[ 2 ][ 1 ];</P>
<P>&nbsp;&nbsp; print( scan( &amp;a[ 0 ][ 0 ] ) );</P>
<P>&nbsp;&nbsp; system( "pause" );</P>
<P>&nbsp;&nbsp; return 0;</P>
<P>}</P>
<P>当然。对于实现细节来说，是更复杂化了。但是我们看一眼main函数就知道这是在<BR>干什么.。而对于我们的用户来说需要知道的往往只是接口，函数的细节通常被隐藏<BR>起来。因此上面的代码写在同一文件中是不合适的。这个关系到设计模式的问题。<BR>这里不再多说了。朋友们可以去看看《设计模式》这本书。</P>
<P>尽量使用有意义的名字，少用无意义的符号和幻数</P>
<P>在上面的例子中函数的名字使得我们对它的功能一目了然，但是这段代码还是有些<BR>麻烦，大家都知道数组越界是个要不得的错误，因此我们用循环测它。但是2这个数<BR>字意思非常不明白，时间一长。程序一复杂我们就会搞不明白这个2是干嘛的，因此<BR>我们得用宏替代它，经过修改，把这些代码写成单文件如下所示（再次说明，单文<BR>件不是好的选择，这里只是为了显示方便）：</P>
<P>#include "stdio.h"</P>
<P>#include "stdlib.h"</P>
<P>#define SIZE_1 2</P>
<P>#define SIZE_2 1</P>
<P>const int* fun1( int *p )</P>
<P>{</P>
<P>&nbsp;&nbsp; int i, j;</P>
<P>&nbsp;&nbsp; for( i = 0; i &lt; SIZE_1; ++i )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( j = 0; j &lt; SIZE_2; ++j )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf( "%d", ( p + j ) + i * 2 );</P>
<P>&nbsp;&nbsp; return p;</P>
<P>}</P>
<P>void fun2( const int *p )</P>
<P>{</P>
<P>&nbsp; int i, j;</P>
<P>&nbsp; for( i = 0; i &lt; SIZE_1; ++i )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( j = 0; j &lt; SIZE_2; ++j )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "%d", *( ( p + j ) + i * 2 ) );</P>
<P>}</P>
<P>int main()</P>
<P>{</P>
<P>&nbsp;&nbsp; int array[ SIZE_1 ][ SIZE_2 ];</P>
<P>&nbsp;&nbsp; fun2( fun1( &amp;array[ 0 ][ 0 ] ) );</P>
<P>&nbsp;&nbsp; system( "pause" );</P>
<P>&nbsp;&nbsp; return 0;</P>
<P>}</P>
<P>用SIZE_n来表示每一维的长度，使得我们不再解释循环中2、1从何而来。</P>
<P>注释</P>
<P>对于一些难以一下就理解的语句我们可以用注释辅助理解，但是个人认为注释不能<BR>写的太多，一方面你要信任你用户的能力，他们都是比笔者更好的程序员。我们只<BR>要在变量和函数的名字中稍加暗示，他们就可以理会你的意思，但对于一些自己看<BR>起来不太清楚的，估计在日后可能会引起麻烦的代码，必须加注释说明你的意思。</P>
<P><BR>比如对于这句代码。我不敢肯定指针的遍历是否正确，则我必须注释说明</P>
<P>printf( "%d", *( ( p + j ) + i * 2 ) );//以一维指针遍历二维数组。</P>
<P>最后，我还是得说，这里写的东西只是笔者两年来的一些心得，不合适之处， 不要<BR>采纳，大家可以去读一本巨作《程序设计实践》。比我说这些要好上百倍。</P>
<P>第五章 程序设计思想初步</P>
<P>到现在为止，我们已经对语言的基本元素有了个比较完整的了解了，但是总是停留<BR>在表达式等细节方面，我们很难写出程序来，在今天任何一个程序都是个工程，如<BR>何组织我们已经掌握的这些基本元素，使得他们变成有一点功能的有机整体，这个<BR>就需要一个整体观念的设计思想，对于c来说第一步该是过程化程序设计思想，换而<BR>言之，就是函数的设计，在上篇文字中我们已经看到了，其核心问题是如何分解要<BR>解决的问题，写出各个有独立功能的函数，然后由进入接口函数（在控制台环境下<BR>，通常是main函数）组成完整的程序。但是光是这样，我们能解决的问题相当有限<BR>，因为在实际应用中，我们要处理的不是那么简单的内置类型（int，char等），而<BR>是比这些复杂的多的数据类型，因此第二步该是如何针对具体问题写出抽象模型，<BR>即ADT（抽象数据类型），进而实现基于对象的设计思想，而学习指针和结构就需要<BR>带着这样的思想去探索，下面将通过一个简单list（链表）的设计来简要的说明一<BR>下该如何建立一个完整的程序。</P>
<P>第一步，建立一个项目：</P>
<P>最好不要选择"控制台程序"模板，这样能使得你的设计思路清楚明白，记住你现在<BR>在学习，方便快速不是你该追求的东西。</P>
<P>第二步，确定要提供的接口</P>
<P>静下心来好好想一想。你的链表要提供那些接口、那些可以给用户修改的部分（如<BR>具体的数据类型），这些放在用户可见的list.h文件中。在本文中假设我们提供初<BR>始化、销毁、增加节点、删除节点、 插入节点、查找、和打印输出几项功能。那么<BR>在上面的工程里加入一个叫llst.h的文件，输入代码如下：</P>
<P>#ifndef LIST_H</P>
<P>#define LIST_H</P>
<P>/*定义函数状态*/</P>
<P>#ifndef ERR</P>
<P>#define ERR -1</P>
<P>#define OK 1;</P>
<P>#endif</P>
<P>&nbsp;</P>
<P>typedef int status;</P>
<P>typedef void type;&nbsp;&nbsp;&nbsp;&nbsp; /*用户可以根据具体需要更改此类型*/</P>
<P>typedef struct listitem {</P>
<P>&nbsp;&nbsp;&nbsp; type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; date;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*节点数据*/</P>
<P>&nbsp;&nbsp;&nbsp; struct listitem *next;&nbsp;&nbsp;&nbsp; /*指向下个节点*/</P>
<P>} list_node;//链表节点</P>
<P>typedef struct {</P>
<P>&nbsp;&nbsp;&nbsp; struct listitem&nbsp; *ptr;&nbsp;&nbsp;&nbsp; /*链表头指针*/</P>
<P>&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; size;&nbsp;&nbsp;&nbsp; /*链表长度*/</P>
<P>} list;//链表</P>
<P>list* list_init ( void );&nbsp;&nbsp;&nbsp;&nbsp; /*初始化*/</P>
<P>status list_destroy( list* ); /*销毁*/</P>
<P>status add_node( list*, const type );&nbsp; /*加入一个节点*/</P>
<P>status delete_all( list* );//清空</P>
<P>status delete_node( list*, list_node* ); /*删除一个节点*/</P>
<P>status insert_node( list*, const type ); /*插入一个节点*/</P>
<P>list_node* find_node( const list*, const type ); /*查找*/</P>
<P>status list_print( const list* );&nbsp;&nbsp;&nbsp; /*打印*/</P>
<P>#endif</P>
<P>第三步，实现接口函数</P>
<P>在工程中加入list.c文件。Include了上面刚刚建立的头文件，并实现每个极口，由<BR>于在通常情况下此文件并不是用户可见（这里把维护等问题除外），所以笔者没加<BR>什么注释。当然这个不是什么好习惯，这里过于简单，注释就显得有些多余。</P>
<P>首先是include需要的头文件：</P>
<P>#include "stdio.h"</P>
<P>#include "stdlib.h"</P>
<P>/*严格来说上面该用尖括号，由于网页显示不得已为之*/</P>
<P>#include "list.h"</P>
<P>接下来是初始化和销毁的实现</P>
<P>list* list_init ( void )</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp; list *p = ( list* )malloc( sizeof( list ) );</P>
<P>&nbsp;&nbsp;&nbsp; if( p == 0 )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;</P>
<P>&nbsp;&nbsp;&nbsp; p-&gt;ptr = 0;</P>
<P>&nbsp;&nbsp;&nbsp; p-&gt;size = 0;</P>
<P>&nbsp;&nbsp;&nbsp; return p;</P>
<P>}</P>
<P>status list_destroy( list *pev )</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp; if( pev == 0 )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ERR;</P>
<P>&nbsp;&nbsp;&nbsp; delete_all( pev );</P>
<P>&nbsp;&nbsp;&nbsp; free( pev );</P>
<P>&nbsp;&nbsp;&nbsp; return OK;</P>
<P>}</P>
<P>按理说，函数不能返回指针，呵呵，这里有个很多初学者都误会的问题，返回局部<BR>对象的左值和局部对象的引用(后者是c++中的说法)被返回的确不可以，因为局部对<BR>象在函数的活动记录（即函数调用栈中）分配，函数一旦结束局部对象被回收，返<BR>回的将是无效地址。因此象下面这样的函数是错误的，</P>
<P>int* f()</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int *p, a;</P>
<P>&nbsp;&nbsp; p = &amp;a;</P>
<P>&nbsp;&nbsp; return p;</P>
<P>}</P>
<P>但是由malloc分配的是堆上分配的，他不会随着函数的结束而被回收。但是这样用<BR>要相当小心，必须防止内存泄漏。程序结束前必须free掉该空间。</P>
<P>&nbsp; 下面就是完整的list.c</P>
<P>#include "stdio.h"</P>
<P>#include "stdlib.h"</P>
<P>/*严格来说此上面两处该用尖括号，由于网页显示不得已为之*/</P>
<P>#include "list.h"</P>
<P>list* list_init ( void )</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp; list *p = ( list* )malloc( sizeof( list ) );</P>
<P>&nbsp;&nbsp;&nbsp; if( p == 0 )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;</P>
<P>&nbsp;&nbsp;&nbsp; p-&gt;ptr = 0;</P>
<P>&nbsp;&nbsp;&nbsp; p-&gt;size = 0;</P>
<P>&nbsp;&nbsp;&nbsp; return p;</P>
<P>}</P>
<P>status list_destroy( list *pev )</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp; if( pev == 0 )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ERR;</P>
<P>&nbsp;&nbsp;&nbsp; delete_all( pev );</P>
<P>&nbsp;&nbsp;&nbsp; free( pev );</P>
<P>&nbsp;&nbsp;&nbsp; return OK;</P>
<P>}</P>
<P>status add_node( list *p, const type date )</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp; list_node *pev =</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ( list_node* )malloc( sizeof( list_node ) );</P>
<P>&nbsp;&nbsp;&nbsp; if( pev == 0 )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ERR;</P>
<P>&nbsp;&nbsp;&nbsp; pev-&gt;date = date;</P>
<P>&nbsp;&nbsp;&nbsp; pev-&gt;next = p-&gt;ptr;</P>
<P>&nbsp;&nbsp;&nbsp; p-&gt;ptr = pev;</P>
<P>&nbsp;&nbsp;&nbsp; p-&gt;size++;</P>
<P>&nbsp;&nbsp;&nbsp; return OK;</P>
<P>}</P>
<P>status delete_node( list *p, list_node *pev )</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp; list_node *temp = pev;</P>
<P>&nbsp;&nbsp;&nbsp; if( pev == 0 )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ERR;</P>
<P>&nbsp;&nbsp;&nbsp; pev = temp-&gt;next;</P>
<P>&nbsp;&nbsp;&nbsp; free( temp );</P>
<P>&nbsp;&nbsp;&nbsp; p-&gt;size--;</P>
<P>&nbsp;&nbsp;&nbsp; return OK;</P>
<P>}</P>
<P>status delete_all( list *pev )</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp; int ix;</P>
<P>&nbsp;&nbsp;&nbsp; if( pev == 0 )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ERR;</P>
<P>&nbsp;&nbsp;&nbsp; if( pev-&gt;size = 0 )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ERR;</P>
<P>&nbsp;&nbsp;&nbsp; for( ix = 0; ix &lt; pev-&gt;size; ++ix, ++pev-&gt;ptr )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete_node( pev, pev-&gt;ptr );</P>
<P>&nbsp;&nbsp;&nbsp; return OK;</P>
<P>}</P>
<P>status insert_node( list *p, const type date )</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp; list_node *pev = p-&gt;ptr; ;</P>
<P>&nbsp;&nbsp;&nbsp; if( p == 0 )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ERR;</P>
<P>&nbsp;&nbsp;&nbsp; pev = find_node( p, date );</P>
<P>&nbsp;&nbsp;&nbsp; if( pev == 0 )</P>
<P>&nbsp;&nbsp;&nbsp; {</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type ia;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "输入要插入的数\n" );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf( "%d", &amp;ia );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add_node( p, ia );</P>
<P>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; else</P>
<P>&nbsp;&nbsp;&nbsp; {</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type ia;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list_node *pv =</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ( list_node* )malloc( sizeof( list_node ) );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( pev == 0 )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ERR;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "输入要插入的数\n" );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf( "%d", &amp;ia );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pv-&gt;date = ia;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pv-&gt;next = pev-&gt;next;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pev-&gt;next = pv;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p-&gt;size++;</P>
<P>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; return OK;</P>
<P>}</P>
<P>list_node* find_node( const list *pev , const type date )</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp; int ix;</P>
<P>&nbsp;&nbsp;&nbsp; list_node *p = pev-&gt;ptr;</P>
<P>&nbsp;&nbsp;&nbsp; for( ix = 0; ix &lt; pev-&gt;size; ++ix )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( p-&gt;date == date )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return p;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p = p-&gt;next;</P>
<P>&nbsp;&nbsp;&nbsp; return 0;</P>
<P>}</P>
<P>status list_print( const list *pev )</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp; int ix;</P>
<P>&nbsp;&nbsp;&nbsp; list_node *p = pev-&gt;ptr;</P>
<P>&nbsp;&nbsp;&nbsp; if( pev == 0 )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ERR;</P>
<P>&nbsp;&nbsp;&nbsp; if( pev-&gt;size == 0 )</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return OK;</P>
<P>&nbsp;&nbsp;&nbsp; for( ix = 0; ix &lt; pev-&gt;size; ++ix )</P>
<P>&nbsp;&nbsp;&nbsp; {</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( "%d\t", p-&gt;date );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p = p-&gt;next;</P>
<P>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; printf( "\n" );</P>
<P>&nbsp;&nbsp;&nbsp; return OK;</P>
<P>}</P>
<P>第四步 连接各个接口</P>
<P>自己写个main函数，由于个人的调试方式不同，这里不给出代码。只要确保每个函<BR>数都能正常工作就行了。</P>
<P>好了，到现在为止我们把一个数据结构的实现走了一遍。当然，为了简单文字。笔<BR>者减少了很多list该有的功能。</P>
<P>第六章 尽量利用能利用的资源</P>
<P>在上篇文字中，我们设计了一个非常简单的list，在设计的过程运用了在本书第五<BR>、六章的知识，这些东西是c语言中最难的部分，学术方面的讨论随处可见，指针的<BR>用法和特性多得让人无法记住，个人认为最好的方法是多实践，在实践遇到的问题<BR>往往就是最常见的、最重要的知识点，至于那些特别的特性，等熟悉了那些常见的<BR>后也就不难理解他们了。</P>
<P>本书的第七。八两章所述的内容严格来说是不属于语言本身的东西，是的，我认为<BR>该这么说，这个关系到对"库"的理解，库是什么？是别人已经写好的东西（类型、<BR>函数、常量等等），我们的程序可以根据他们提供的接口调用就可，以节省我们开<BR>发的时间和精力，但是必须明白，不是没有库，我们就不能写东西了。第八章的内<BR>容就是告诉我们如何根据具体的os写出类似标准的io库，是的，库必须是系统相关<BR>的，当然你可以最大限度的保证他的可移植性（这正是标准库的成功之处）。</P>
<P>当然，对于大多数程序开发而言，库的运用可能是程序设计水平高低的最重要的指<BR>标之一，没有人会笨到放着的东西不用，而化费大量的时间去自己写一个（当然作<BR>为学习研究则正好相反）。有一次，一个网友跟我说标准c++和c怎么也干不了，当<BR>我提出反对意见时，此人气势汹汹的质问："你不用WIN API写个窗体给我看看！？<BR>"。我无言了，因为要说的太多了， 比如：难道API是凭空出现的吗？难道我写不出<BR>API就可以说c++和c无此能力吗？我无此荣幸，就算有，也不是片刻就可以拿出来给<BR>他证明的。因此我选择沉默，人类的任何成功都是建立在前人的基础上的，这样才<BR>有我们引以为傲的效率。</P>
<P>回到正题，标准库非常庞大(别的也小不到那去)，os的系统调用也很多，对于这些<BR>我的建议是：记住常用的，别的用到的时候查手册之类的东西即可，比如，以c标准<BR>库为例，在本书附录B中提到的大多都需要记住。至于别的，大家可以去看看《c语<BR>言参考手册》。</P>
<P><BR>--<BR>※ 来源:．两全其美 BBS lqqm.net．[FROM: 220.184.85.60]<BR></P>]]></description>
</item><item>
<title><![CDATA[一封与初学者交流的信]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=5877</link>
<author>vain</author>
<pubDate>2005/5/17 20:50:07</pubDate>
<description><![CDATA[<P>发信人: lingjie (owl), 信区: C_Prog<BR>标&nbsp; 题: 一封与初学者交流的信<BR>发信站: 两全其美 BBS (Thu Oct 28 14:39:19 2004), 本站(lqqm.net)</P>
<P>此文由本版版主gaobo所写</P>
<P>～～～～～～～～～～～～～～～～～～～～～</P>
<P>阿木同学：</P>
<P>　　见信好，来信收到，勿念为盼。</P>
<P>　　信中提及的问题很好，很有普遍性，在此尽绵薄之力作答，不当之处还请指正<BR>。</P>
<P>&nbsp;</P>
<P>一、语言和平台的优劣之分？</P>
<P>答：语言和平台本无优劣之分，“能够解决当前问题的”就是最好的，谁能说出Ja<BR>va、C++和C#这几种根本设计出发点就完全不同的语言／平台谁“更好”呢？Java更<BR>适用于快速架构，因为它主要地是依靠Beans库工作的，它非常工程化。C++则对程<BR>序员的要求非常高，它基本上和C一样，有更多的汇编背景，面向对象的语义是建构<BR>在比较明确的低层语义之上的。因此比较好的C++教材会向你讲明白，那些看起来比<BR>较“高级”的操作，有哪些C的甚至是汇编的背景。这是一种重要的去蔽，带着比较<BR>清楚而明白的低层的思考方式来认识C++，非常有助于学习它的一些看似复杂的语法<BR>，如RTTI和traits等。而C#则基本上是为Microsoft的.NET平台设计实现的，其它的<BR>C#编译器除了Borland的C# Builder以外，是比较少的（但它仍不失为一门语言，而<BR>Java则本身已经成为了一个平台，Stroustrup语），而且它的控制权基本上在Micr<BR>osoft Visual Studio开发组的语言规范组（当然提交给ISO以后会成立另外的专门<BR>委员会，这就不一样了）。如果你选择从C#开始学习，这当然是可以的，不过你会<BR>发现，在基本层面上，它和C++的区别并不大，85%是完全一样的，在细节上（如指<BR>针的语义、Boxing/Unboxing和字符串字面常量的处理等，C# 2.0中还增加了诸多的<BR>新特性，如Nullable Type）略有不同而已。我们如何能说这几种语言／平台哪一种<BR>更“好”呢？它们在各自的领域中有特别的长处，诚然它们的领域是交叉的，而且<BR>C++在这三者中间，适用的领域却是最广的（见D&amp;E，Stroustrup著）。</P>
<P>&nbsp;</P>
<P>二、C++过时了吗？</P>
<P>答：不，我不这么认为。任何说C++的用户数不及Java的人，都并没有官方的调查证<BR>据，而只是因为自己活动的圈子里使用Java的人比较多。事实上，Java平台的发展<BR>速度是非常快的，但这和C++用户数的增长并不矛盾。作为通用型的语言／平台，J<BR>ava替用户完成了非常多的基本操作，甚至诸如大整数之类的类型都已经封装完毕，<BR>用户只需要将相应的包导入并调用即可。但C++则秉承了C语言“信任程序员”的风<BR>格，将尽可能多的选择权交给用户（当然，托管的C++也根据多年的模式对资源进行<BR>了诸多的保护措施），用户必须在许多场合下自己作诸如存储管理、异常条件下的<BR>安全、类继承体系中的类型推导等决定。这两者是完全不同的，Java安全，但C++的<BR>效率非常高，这一条就决定了C++将在相当长的时间内仍然是主流语言，而且将扮演<BR>语言革新的领头角色。STL的标准化和广泛应用，以及范型（Generic）观念的深入<BR>人心，已经奠定了C++的不可动摇的第三代语言的主流地位。</P>
<P>&nbsp;</P>
<P>三、我怎样学习C++？</P>
<P>答：C++的学习和一切其它知识的学习一样，是因人而异的，如果你以前有C语言的<BR>基础，或你以前有汇编语言的基础，那末看C++的视角会完全不同。但大凡是学习，<BR>我认为无非是端正态度（不为乱七八糟的考试而学习，而要切实地为获取一些基本<BR>观念而学习）、夯实基础（不浮不躁，不为新名词新概念而眼花瞭乱，愿意反复地<BR>思考最基础、看起来最微不足道的问题）、选择好的教材（中国人写的书一律不看<BR>，Scott Meyers、Stanley Lippman、Bjarne Stroustrup、Bruce Eckel的书要一看<BR>再看，多多益善）、多做实验（只有一种语言，却有1000种编译器，选一两种常用<BR>的，它们的错误信息是比什么书都好的老师）、多和人交流（闭门造车那是高人才<BR>做的事，我们还是集臭皮匠之智以为诸葛亮之事比较明智一点）、把C++作为日常用<BR>语（并没有在开玩笑，机械语言都有工程和事实背景，有些简直就是概念的直接写<BR>照，试着用C++去描述你看到的、你想到的事）。</P>
<P>&nbsp;</P>
<P>四、有关理论学习和今后发展。</P>
<P>答：因为你才大一，职业选择是你现在急也急不来的事。更何况，计算机科学理论<BR>与技术实践是科学和技术分类中少见的有如此大的关联性的学科。最怕的无非是浮<BR>躁二字，你现在觉得自己“想成为信息安全专家”，可你对“信息安全”包括哪些<BR>学问到底了解多少？我看，你多半是觉得成为一名“黑客”会“比较酷”，抱着这<BR>样的态度去学习，只好成为一块废料（请原谅我的说话方式）。不要对别人掌握了<BR>C++感到奇怪，他们无一不是付出极大的代价，包括时间、金钱，甚至变得和人很难<BR>相处（当然也不是普遍规律）。有一点是可以肯定的，那就是你肯投入地（用别人<BR>用来消磨的时间！）去学习所有的相关的理论（如硬件和体系结构、编译理论、低<BR>级语言、离散数学）的话，你当然会变得很优秀，这是非常自然的。当然，在现在<BR>的大学生中，能肯在学业中投入任何一份附加精力（不为考试而为自己的理论研究<BR>兴趣！）的人，是太少了。在你的信中，我也感到了一丝危机。但我可以保证，如<BR>果你可以坚持不懈，在真正的职业选择来临的时候，你会非常清楚地知道自己适合<BR>做什么，也会自信满满地去应聘任何你梦中的理想企业。你的人生将是明白的而不<BR>是迷糊的，将是充实的而不是空虚的，将是快乐的而不是自责的，将是成功的而不<BR>是失败的。</P>
<P>&nbsp;</P>
<P>　　希望我的这封信能够对你有些帮助！</P>
<P>&nbsp;</P>
<P>高博</P>
<P>于微软中国</P>
<P><BR>--</P>
<P>※ 来源:．两全其美 BBS lqqm.net．[FROM: 220.184.85.60]</P>
<P>※ 修改:．lingjie 于 Oct 28 14:53:35 修改本文．[FROM: 220.184.85.60]<BR></P>]]></description>
</item><item>
<title><![CDATA[《programming windows》读书笔记2]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=5876</link>
<author>vain</author>
<pubDate>2005/5/17 20:48:58</pubDate>
<description><![CDATA[<P>发信人: lingjie (owl), 信区: C_Prog<BR>标&nbsp; 题: 《programming windows》读书笔记2<BR>发信站: 两全其美 BBS (Mon Oct 18 12:37:29 2004), 本站(lqqm.net)</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在第一章中，我们明白了一个事实，所谓的API并不是什么神秘的东西，对于程序<BR>员<BR>来说它的意义就在于这三个字母中的最后一个，Interface（接口），换句话说只是<BR>一个库而已，那么事实上我们就是在学如何使用这个库，就像我们曾经学STL一样，<BR>该从最简单的运用开始，这是我认为在开始学习一个库的时候应该确立的思想。</P>
<P>在第一章的末尾，作者展示了第一个windows程序（尽管我很怀疑那是windows程序<BR>），出于描述的需要我把它改了一些，代码如下：</P>
<P>#include &lt;windows.h&gt;</P>
<P>int WINAPI WinMain ( HINSTANCE hInstance,</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HINSTANCE hPrevInstance,</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PSTR szCmdLine,</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int iCmdShow)</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char* hello = "Hello, Windows 98!";</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char* title = "HelloMsg";</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox (NULL, hello, title, 0);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0 ;</P>
<P>}</P>
<P>作者对这个程序做了详细的解释，但我还是一点不明白，MessageBox() 的第二，第<BR>三个参数是PCSTR,这是个什么类型呢？根据作者的提示，我查看了winnt.h这个头文<BR>件，原来这个类型不过就是const char*而已，但同时我这个该死的脑子又冒出一个<BR>问题：这里几乎对每个类型都进行了typedef，为什么这么麻烦？我带着这样的问题<BR>进入了第二章。</P>
<P>&nbsp; 哦，原来windows为了同时支持ASCII和Unicode两种字符环境，对各个字符类型进<BR>行了预处理：</P>
<P>#ifdef&nbsp; UNICODE</P>
<P>typedef WCHAR TCHAR, * PTCHAR ;</P>
<P>typedef LPWSTR LPTCH, PTCH, PTSTR, LPTSTR ;</P>
<P>typedef LPCWSTR LPCTSTR ;</P>
<P>#else</P>
<P>typedef char TCHAR, * PTCHAR ;</P>
<P>typedef LPSTR LPTCH, PTCH, PTSTR, LPTSTR ;</P>
<P>typedef LPCSTR LPCTSTR ;</P>
<P>#endif}</P>
<P>为了统一格式起见，把所有类型都改成了大写（为什么不是小写？不知道，干吗老<BR>跟我过不去啊？），这样开头那个小东西就要改下了：</P>
<P>#include &lt;windows.h&gt;</P>
<P>#include &lt;tchar.h&gt;</P>
<P>int WINAPI WinMain ( HINSTANCE hInstance,</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HINSTANCE hPrevInstance,</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PTSTR szCmdLine,</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int iCmdShow)</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PTSTR hello = "Hello, Windows 98!";</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PTSTR title = "HelloMsg";</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox (NULL, hello, title, 0);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0 ;</P>
<P>}</P>
<P>上面这段代码几乎看起来很好，没什么错误，运行也一切正常，但不要忘记在一般<BR>情况下，我们的字符环境是ASCII，换成Unicode试试，呵呵，编译器没给你面子吧<BR>？问题出在赋值上，正如书上所说的Unicode在c中是通过wchar_t来支持的，而wch<BR>ar_t的字符串赋值方式为：</P>
<P>wchar_t * p = L"Hello!";</P>
<P>显然在上面的程序中，在PTSTR被预处理成wchar_t时候，赋值方式并没有随之而变<BR>，而导致类型不符，所幸的是在tchar.h文件中，为我们提供了一个宏函数：TEXT(<BR>x)；（关于这个函数的定义请看书，思想和PTCSTR相同）。因此我们上面的代码该<BR>这样这样写：</P>
<P>#include &lt;windows.h&gt;</P>
<P>#include &lt;tchar.h&gt;</P>
<P>int WINAPI _tWinMain ( HINSTANCE hInstance,</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HINSTANCE hPrevInstance,</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PTSTR szCmdLine,</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int iCmdShow)</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PTSTR hello = TEXT("Hello, Windows 98!");</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PTSTR title = TEXT("HelloMsg");</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox (NULL, hello, title, 0);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0 ;</P>
<P>}</P>
<P>细心的人都会发现，在WinMain()的前面也写了个_t，其实目的是和TEXT相同的,为<BR>了支持两种字符环境而已。</P>
<P>&nbsp; 但是到目前为止，我们没有看到这样做的意义所在，化了这么大的力气几乎有点<BR>自作多情了，看一下本章开头说了那么多（连原始人都有），发现还是有价值的，<BR>不是废话（这句肯定是废话），Unicode是为了国际化而存在的，也就是说他和ASC<BR>II的区别主要在于对非英语国家的文字的支持。我们都被老师告知，一个汉字等于<BR>两个英文字符，在Unicode字符环境里还是这样吗? 我写了个东西测试了下，代码如<BR>下:</P>
<P>#include &lt;windows.h&gt;</P>
<P>#include &lt;tchar.h&gt;</P>
<P>#include &lt;sstream&gt;</P>
<P>using namespace std;</P>
<P>#ifdef UNICODE</P>
<P>typedef wstring Astring;</P>
<P>typedef wostringstream OStringstream;</P>
<P>#else</P>
<P>typedef string Astring;</P>
<P>typedef ostringstream OStringstream;</P>
<P>#endif</P>
<P>int WINAPI _tWinMain( HINSTANCE hInstance,</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HINSTANCE hPrevInstance,</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PTSTR&nbsp;&nbsp;&nbsp;&nbsp; lpCmdLine,</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nCmdShow)</P>
<P>{</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PTSTR str = TEXT("你好");</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PTSTR message = TEXT("hello");</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int a = lstrlen(str);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OStringstream out_str;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out_str &lt;&lt; "this is " &lt;&lt; a &lt;&lt; endl;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Astring s = out_str.str();</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PCTSTR p = s.c_str();</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox( NULL, p, str, MB_OK );</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;</P>
<P>}</P>
<P>在ASCII环境下输出"this is 4"。这正是我们所熟悉的，在Unicode下输出的是"th<BR>is is 2"，这样我们就可以看到Unicode带来的变化了。是的，他正是为了windows<BR>的国际化而存在的，这样使得我们的计算机能表示更多的信息。</P>
<P>&nbsp; 我好像刚才听到你在说，"哦，你用了c++！"，是的，为什么不呢？windows API<BR>是个操作系统库函数，他是c的函数库，那么没有理由说作为c的超集的c++不能用他<BR>。而且我对那个spintf实在没有好感，呵呵。</P>
<P><BR>--<BR>※ 来源:．两全其美 BBS lqqm.net．[FROM: 220.184.44.124]</P>
<P>※ 修改:．lingjie 于 Oct 18 12:39:03 修改本文．[FROM: 220.184.44.124]<BR></P>]]></description>
</item><item>
<title><![CDATA[《programming windows》读书笔记1]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=vain&amp;id=5874</link>
<author>vain</author>
<pubDate>2005/5/17 20:47:54</pubDate>
<description><![CDATA[<P>发信人: lingjie (owl), 信区: C_Prog<BR>标&nbsp; 题: 《programming windows》读书笔记1<BR>发信站: 两全其美 BBS (Mon Oct 18 12:35:02 2004), 本站(lqqm.net)</P>
<P>上面问到关于windows API的东西，现在把自己写过的两篇东西贴出来。供你们讨论</P>
<P><BR>～～～～～～～～～～～～～～～～～～～～～～～～～～～～～～</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; 写在前面的话</P>
<P>&nbsp;</P>
<P>我想在开始这本书的时候，需要对一些朋友做一个解释。很多人跟我说，一开始就<BR>读这些经典之作是不合适的，总有人跟我抱怨《the c programming Language》太<BR>难。《c++ primer》太厚等。需要一些基础等等。首先，我不知道这些所谓的基础<BR>是什么？上面的那些材料都是基础，就算完全掌握了这些也只是一点皮毛而已，我<BR>不知道还要基础到什么程度。另外，我绝对反对读像我们大学发的那样的所谓的基<BR>础教材，特别是c和c++范围的。(别的我尚无深刻体会，估计也好不到那去) 。那些<BR>书通常错误百出，给初学者留下非常糟糕的思考习惯，读了他们，要想深入学习不<BR>是变容易了，而是更难了。坏习惯一旦成了，就糟糕了，同样我们面前的这本《pr<BR>ogramming windows》也是windows程序设计方面的基础，当然完全搞清楚这本书。<BR>离windows编程专家水平也不会太远了，但不用担心基础问题（原因下文中会提到）<BR>，好了，这是个简单解释，也算我的学习思想。姑且作为本笔记的前言吧、</P>
<P>第一章</P>
<P>在开始进入一个领域的时候，我们经常需要回答几个几乎看起来必须回答的问题，<BR>这本书的第一章正是为了回答这些问题而存在的。下面是我对这些回答的理解。</P>
<P>为什么选择Windows API作为学习windows程序设计的开始？</P>
<P>&nbsp;正如作者在一开始就提到的，c和API不是在windows下写程序的唯一方式，适适相<BR>反，这看起来几乎是最麻烦，最原始的方法，但是正因为它是最原始的方式，它才<BR>能提供给你最灵活的设计环境，掌握了它，在windows环境下，你几乎可以随心所欲<BR>了，武学中的"心法"大概就是此言。另外应该承认，笔者看过一段时间的mfc，尽管<BR>用起来没多大的难度，但每写一句都诚惶诚恐，不清楚自己写下的这些code到底是<BR>如何实现的，正如jjhou说的："会用，但不知道其原理，一点都不高明。"那么想知<BR>道其原理，API是你的必经之路。</P>
<P>&nbsp;&nbsp;&nbsp; 需要怎么样的基础？</P>
<P>让我们先看看作者说了什么，会用windows 98？（会windows xp可以吗？。。。。<BR>。。）大概在开玩笑；会c语言？当然不能指望不懂c就去用api（我很怀疑不懂c的<BR>朋友会考虑这玩意儿）；装32位的compiler？这个本人觉得未必就必须是VC++，别<BR>的compiler也行，我曾用dev c++编译本章末尾的code。运行的不错，个人认为只要<BR>你的编译器安装目录下有个叫windows.h的文件即可，当然要记住，必须是32的com<BR>piler（别装TC。）。 我们可以看出来，对于我们来说几乎不需要什么基础，要的<BR>是信心、耐心及挑战的心。</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; 什么是DLL？</P>
<P>在学习API之前，我们必须先理解这个概念，而理解这个概念，我们就要知道link的<BR>时候发生了什么事？在写这篇文字之前，我曾以为link做的只是将已经编译好的各<BR>种文件装配成可执行文件而已，但这只是第一步而已，我们知道c库中有一些函数属<BR>于运行时刻函数，这些函数在win32的环境下，可以单独编译成执行代码，而后连接<BR>成可以执行文件（DLL文件或者exe文件），这些可执行文件没有进入点（比如maim<BR>函数），这意味着他只可被别的程序调用，这是所谓的dynamic linking library，<BR>所以必须明白它并不是编译器的直接结果，它也是link的产物，因此link最终可运<BR>行程序的第二步，是将这些DLL实现二次link，这是windows运行机制的核心，当然<BR>这里理解依然很次，朋友们可以查看有关资料，理解它对于学习API非常重要。</P>
<P>什么是API？它是如何被调用的？</P>
<P>用c写过控制台程序的人都知道，写程序很大程度上就是library应用和设计，而无<BR>论是设计还是应用都必须以系统提供的系统调用为基础，API正是windows提供的系<BR>统调用函数（可以理解为c的一种运行时刻函数库）。他提供了所有windows应用程<BR>序的编程接口，从使用的角度而言他和c标准库函数完全相同。API提供了DLL的接口<BR>，这些函数的执行代码（machine code）却不在你的程序中，而是以DLL的形式存放<BR>于系统中（在win32的环境里，c的运行时刻函数库也是以DLL的方式连接的）。另外<BR>，还必须知道，windows API函数主要由kernel、user和GDI组成，因此不能说没有<BR>GUI的程序不是windows程序，图形界面是windows程序的一个部分而已，而且看了w<BR>indows的历史就发现GUI程序也不是windows的独有的特点。</P>
<P><BR>--<BR>※ 来源:．两全其美 BBS lqqm.net．[FROM: 220.184.44.124]<BR></P>]]></description>
</item>
</channel>
</rss>