博文
第3章 面向过程的程序设计 3.1 面向过程的程序设计和算法(2008-08-17 10:38:00)
摘要:
在面向过程的程序设计中,程序设计者必须指定计算机执行的具体步骤,程序设计者不仅要考虑程序要“做什么”,还要解决“怎么做”的问题,根据程序要“做什么”的要求,写出一个个语句,安排好它们的执行顺序。怎样设计这些步骤,怎样保证它的正确性和具有较高的效率,这就是算法需要解决的问题。
3.1.1 算法的概念
一个面向过程的程序应包括以下两方面内容:
(1) 对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。
(2) 对操作的描述。即操作步骤,也就是算法(algorithm)。
对于面向过程的程序,可以用下面的公式表示:
程序=算法+数据结构
作为程序设计人员,必须认真考虑和设计数据结构和操作步骤(即算法)。
算法是处理问题的一系列的步骤。算法必须具体地指出在执行时每一步应当怎样做。
3.1.2 算法的表示
1. 自然语言
用中文或英文等自然语言描述算法。但容易产生歧义性,在程序设计中一般不用自然语言表示算法。
2. 流程图
可以用传统的流程图或结构化流程图。用图的形式表示算法,比较形象直观,但修改算法时显得不大方便。
3. 伪代码(pseudo code)
伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。如
if x is positive then
print x
else
print-x
用伪代码写算法并无固定的、严格的语法规则,只需把意思表达清楚,并且书写的格式要写成清晰易读的形式。它不用图形符号,因此书写方便、格式紧凑,容易修改,便于向计算机语言算法(即程序)过渡。
4. 用计算机语言表示算法
用一种计算机语言去描述算法,这就是计算机程序。
3.2 C++程序和语句
由第1章已知,一个程序包含一个或多个程序单位(每个程序单位构成一个程序文件)。每一个程序单位由以下几个部分组成:
(1) 预处理命令。如#include命令和#define命令。......
C++ 第2章 数据类型与表达式【9】2.7 逗号运算符与逗号表达式(2008-08-17 10:32:00)
摘要:
C++提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如
3+5,6+8
称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为
表达式1,表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。如,逗号表达式
a=3*5,a*4
从附录B可知:赋值运算符的优先级别高于逗号运算符, 因此应先求解a=3*5(也就是把“a=3*5”作为一个表达式)。经计算和赋值后得到a的值为15,然后求解a*4,得60。整个逗号表达式的值为60。
一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如
(a=3*5,a*4),a+5
逗号表达式的一般形式可以扩展为
表达式1,表达式2,表达式3,…,表达式n
它的值为表达式n的值。
从附录B可知,逗号运算符是所有运算符中级别最低的。因此,下面两个表达式的作用是不同的:
① x=(a=3,6*3)
② x=a=3,6*a
其实,逗号表达式无非是把若干个表达式“串联”起来。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于循环语句(for语句)中,详见第3章。
在用cout输出一个逗号表达式的值时,要将该逗号表达式用括号括起来,如
cout<<(3*5,43-6*5,67/3)<<endl;
C和C++语言表达能力强,其中一个重要方面就在于它的表达式类型丰富,运算符功能强,因而使用灵活,适应性强。
......
C++ 第2章 数据类型与表达式【8】 2.6.3 复合的赋值运算符(2008-08-17 10:30:00)
摘要:
在赋值符“=”之前加上其他运算符,可以构成复合的运算符。如果在“=”前加一个“+”运算符就成了复合运算符“+=”。例如,可以有
a+=3 等价于 a=a+3
x*=y+8 等价于 x=x*(y+8)
x%=3 等价于 x=x%3
以“a+=3”为例来说明,它相当于使a进行一次自加3的操作。即先使a加3,再赋给a。同样,“x*=y+8”的作用是使x乘以(y+8),再赋给x。
为便于记忆,可以这样理解:
① a+= b (其中a为变量,b为表达式)
② a+= b (将有下划线的“a+”移到“=”右侧)
③ a = a + b (在“=”左侧补上变量名a)
注意,如果b是包含若干项的表达式,则相当于它有括号。如
① x %= y+3
② x %= (y+3)
③ x = x%(y+3)(不要错认为x=x%y+3)
凡是二元(二目)运算符,都可以与赋值符一起组合成复合赋值符。C++可以使用以下几种复合赋值运算符:
+=,-=,*=,/=,%=,<<=,>>=,&=,∧=,|=
其中后5种是有关位运算的。
C++之所以采用这种复合运算符,一是为了简化程序,使程序精炼,二是为了提高编译效率(这样写法与“逆波兰”式一致,有利于编译,能产生质量较高的目标......
亲自数问题(2008-08-16 18:11:00)
摘要:设a<b是正整数,如果a的因子和是b,b的因子和是a,则称a,b是亲和数对,
例如:
220的因子和是1+2+4+5+10+11+20+22+44+55+110=284
284的因子和是1+2+4+71+142=220
220,284是最小的一对亲和数,计算
(1)a<100000时的亲和数对
(2)a<10000000时的亲和数对
(3)a<500000000时的亲和数对
答案:
#include <stdio.h>
#include <math.h>
long topgene(long x)
{long i,ii,top=1;
i=sqrt(x);
for (ii=2;ii<i;ii++)
if (x%ii==0)
top+=ii+x/ii;
if (ii*ii==x) top+=x;
return(top);
}
main()
{long i,ii,max=-1;
printf("\ninput the top:");
while(max<=0)
scanf("%ld",&max);
for (i=2;i<max;i++)
{ii=topgene(i);
if(i>ii&&(i%2+ii%2)!=1&&(i==topgene(ii)))
printf("%10ld%10ld\n",i,ii);
}
}
......
JavaScript极速狂飙:CSS样式表的背景渲染效率(2008-08-16 18:08:00)
摘要:我的MzTreeView1.0树控件发布至今,得到了不少意见反馈,很多网友给了我很多的中肯的建议,也指出了这个控件里的诸多BUG和不足之处,所以我准备写一个新版本的树,将大家的建议都整合进来实现。这几天我就一直在写新版的树,树控件最重要的是效率,特别是大节点量的时候,效率稍微差点的模式就会拖垮浏览器,所以新版的树我首要的还是提高效率,比如增加异步数据加载的支持等,另外我还有一个设想,就是树的树型结构竖线用样式表(背景图)来实现,样式表背景图片只需要加载一次,而现在这个模式(用多个<img>)图片虽然有缓存机制,但还是有可以每张小图片都请求一次服务器的,所以我想用样式表来实现有多么的好呀,代码又精简,结构又清晰,效果又酷,但是结果我将近一个星期的测试,我这种设想彻底失败,原因就是样式表的渲染效率太差。新的构想没能实现,心情有些沮丧,但我想也应该让大家分享一下这个测试成果。
这里我再解释一下树型里的竖线,树的左边都有 ┌ ├ └ │ 这些竖线图表示树层次,我的1.0版里是用一张张的小图片堆积起来的,而这种使用样式表的是用<div class="l2"></div> 这种代码来实现的,样式表负责填充背景图。
#mtvroot div td{width:20px;height:20px;}
#mtvroot .l0{background:url(line0.gif) no-repeat center}
#mtvroot .l1{background:url(line1.gif) no-repeat center}
#mtvroot .l2{background:url(line2.gif) no-repeat center}
#mtvroot .l3{background:url(line3.gif) no-repeat center}
#mtvroot .l4{background:url(line4.gif) no-repeat cent......
js访问xml之根节点操作(2008-08-16 18:06:00)
摘要:添加属性
var root = xmlDoc.documentElement;
root.setAttribute("addAttr","attr");
var rootAtt =root.getAttribute("addAttr");
alert(rootAtt);
document.write("<xmp>" + xmlDoc.xml + "</xmp>");
更改属性
root.setAttribute("addAttr","changeAttr");
document.write("<xmp>" + xmlDoc.xml + "</xmp>");
删除属性
root.removeAttribute("addAttr");
document.write("<xmp>" + xmlDoc.xml + "</xmp>"); ......
js访问xml之创建xmlDocument(2008-08-16 18:06:00)
摘要:解析 XML 文件
function loadXMLDoc(dname){
try{ //Internet Explorer
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
}
catch(e){
try{
xmlDoc = document.implementation.createDocument("","",null);
}
catch{
alert(e.message);
}
}
try{
xmlDoc.async = false;
xmlDoc.load(dname);
return(xmlDoc);
}
catch(e){
return(null);
}
}
解析 XML 字符串
function loadXMLString(txt){
alert("js:"+txt);
try{ //Internet Explorer
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async= false;
xmlDoc.loadXML(txt);
return(xmlDoc);
}
catch(e){
try{//Firefox,Mozilla,Opera,etc
parser = new DomParser();
xmlDoc = pars......
js访问xml之遍历节点树(2008-08-16 18:05:00)
摘要:xml文档 遍历节点树
book.xml
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan&......
成功经理人 第四章 企业文化 第二节 组织文化的传播及学习(2008-08-15 12:40:00)
摘要:组织文化对员工的潜移默化有许多种形式,例如透过故事、仪式、实质象征、语言等。
一、故事(stories)
每一组织总有说不完关于赢家、输家、成功的案子、失败之案子的故事。而关于组织的创立或创办人的故事,更有重大的影响力。例如证严法师一日不劳动就一日不吃饭。例如福特(Ford)汽车公司的老亨利福特(Ford, Henry)发明生产线以降低成本。他活到九十几岁,而毕生的努力目标就是要使美国家家户户买得起车子。1990年代初期美国首富华尔顿(Walton, Sam)是华马(Wal-Mart)连锁店的创始人。他开的是保养得不错的十年小货车,工作时穿法兰绒衬衫和卡其裤。住小木屋,出外住便宜的Ramada小旅馆。理发五块美金并且不给小费。虽有65亿的财富,可是生活依旧一如往昔。这三位创办人都是勤、俭的代表人。
二、仪式(rituals, ceremories)
台塑企业董事长王永庆先生每年在集团企业员工运动大会上,总是带领主管们做长距离的跑步,有时候则表演挑米竞走。他所示范的是一种平民的、刻苦的运动。强烈的表达了作为工业人的心态和行事风格。
相反的,美国的玛丽凯(Mary Kay)化妆品公司,每年一度的表扬大会则像选美大会一般,除了在大礼堂里连续举行好几天之外,与会者均打扮入时,颁奖晚会上则穿上耀眼高丽的礼服。杰出的女业务员各按业绩的高低获颁金戒指、钻戒、皮草,甚至有名的粉红色凯迪拉克大轿车。其作法,无非在公开表扬优胜者,藉以激发所有业务员的荣誉心。
三、实质象征(material symbols)
加州大学柏克莱分校(UC Berkeley)给予获得诺贝尔奖的教授特别的停车证。有了此停车证,在校园内有随意停车的特权。天登(Tandem)电脑公司,设在加州的总部,设有慢跑路径,篮球场、游泳池、舞会场地、瑜珈场地,并且一切供所有的员工使用。此举无非传达一项讯息:“公司重视员工”、“一视同仁”的开放心胸。
台湾的公司常见,提供轿车给协理以上的高级主管使用。办公大楼停车区域有特别划定的停车位给高级主管。有的公司购买高尔夫球场、俱乐部会员证,供高级主管替公司做公共关系……。这些如果运用得当的话,可以刺激一般员工“力争上游”的企图心。
四、语言(languages)
台湾的理发师们有......
第四章 企业文化 第一节 组织文化的构造及形成[2](2008-08-15 12:39:00)
摘要:
(1) 职前期(prearrival stage)
马阿南(Maanen, J. Van)及香恩(Schein, E. H., 1977)认为,事实上,在甄选过程中,应征者能否表现出适切的模样,决定了他是否会被录取。换言之,应征的成败,决定于应征者能否洞察负责甄选人之期望和要求。
国内的铭传学院早年便是以训练学生们心态上调整到准备就业,并且施以面试的训练而闻名。
(2) 接触期(encounter stage)
进入组织后,员工发现实际情形与原先的期望之间,必定存在着或大或小的距离。如果差距太大,近似于期望幻灭,则会离职而去。如果存在鸿沟,则有赖社会化的作用,把员工自己的假定更换为组织所重视的价值观及态度。
(3) 蜕变期(metamorphosis stage)
新进员工如果在接触期中遭遇问题,则意味着员工必须做某些的改变。直到他对于公司的情形和工作的内容都很熟悉,并且觉得应付自如而没有重大的不愉快为止。换言之,他对于组织及工作单位的规范都已了解、接受、遵守得很好;他也感觉同事接受他、信赖他;对工作上的规定及非正式的惯例,也能把握分寸;也知道绩效的评估标准是哪些?
这样,有了认同感,好的生产力,并且可以降低其离职率,才算社会化完成。
四、组织文化的形成
图4-2为综合创始人的理念、用人政策、高阶主管的措施、新进员工的社会化,终于形成组织文化。
日本学者河野丰弘先生,则以邮寄问卷方式先对五十家公司,进行测试性调查,问卷经修改后,正式发函予一百家公司,得到八十八家公司计三百九十一人的回函。他的分析,如图4-3所示,也为组织文化形成的过程。
河野先生并发现:
(1)企业文化首先是受到环境的影响。例如社会走向个人主义、功利主义时,组织也难免受到影响。
(2)经营理念是企业文化的构成要素、指导原则,也是必备的核心文化。例......