eetop cn TCL培训教程 华为内部资料

eetop cn TCL培训教程 华为内部资料
eetop cn TCL培训教程 华为内部资料

TCL培训教程(全)

(内部使用)

深圳市华为技术有限公司

目 录

1 引言 (6)

2 语法 (7)

2.1 脚本、命令和单词符号 (7)

2.2 置换(substitution) (7)

2.2.1 变量置换(variable subtitution) (8)

2.2.2 命令置换(command substitution) (8)

2.2.3 反斜杠置换(backslash substitution) (9)

2.2.4 双引号和花括号 (10)

2.3 注释 (10)

3 变量 (10)

3.1 简单变量 (10)

3.2 数组 (11)

3.3 相关命令 (12)

3.3.1set (12)

3.3.2 unset (12)

3.3.3 append和incr (12)

4 表达式 (13)

4.1 操作数 (13)

4.2 运算符和优先级 (13)

1.1 数学函数 (14)

2List (15)

2.1list命令 (15)

2.2 concat命令: (16)

2.3 lindex命令 (16)

2.4 llength命令 (16)

2.5 linsert命令 (16)

2.6 lreplace命令: (16)

2.7 lrange 命令: (16)

2.8 lappend命令: (17)

2.9 lsearch 命令: (17)

2.10 lsort命令: (17)

2.11 split命令: (18)

2.12 join命令 (18)

3 控制流 (18)

3.1 if命令 (18)

3.2 循环命令:while 、for、 foreach (19)

3.2.1 while命令 (19)

3.2.2 for命令 (19)

3.2.3 foreach命令 (20)

3.2.4 break和continue命令 (20)

3.2.5 switch 命令 (21)

3.3 eval命令 (21)

3.4 source命令 (21)

4 过程(procedure) (21)

4.1 过程定义和返回值 (22)

4.2 局部变量和全局变量 (22)

4.3 缺省参数和可变个数参数 (23)

4.4 引用:upvar (24)

5 字符串操作 (25)

5.1 format命令 (25)

5.2 scan命令 (25)

5.3 regexp命令 (26)

1.1 regsub命令 (28)

1.2 string命令 (28)

1.2.1 string compare ?-nocase? ?-length int? string1 string2 (28)

1.2.2 string equal ?-nocase? ?-length int? string1string2 (28)

1.2.3 string first string1string2 ?startindex? (29)

1.2.4 string index string charIndex (29)

1.2.5 string last string1 string2 ?startindex? (29)

1.2.6 string length string (29)

1.2.7 string match ?-nocase? pattern string (29)

1.2.8 string range string first last (30)

1.2.9 string repeat string count (30)

1.2.10 string replace string first last ?newstring? (30)

1.2.11 string tolower string ?first? ?last? (30)

1.2.12 string toupper string ?first? ?last? (30)

1.2.13 string trim string ?chars? (30)

1.2.14 string trimleft string ?chars? (31)

1.2.15 string trimright string ?chars? (31)

2 文件访问 (31)

2.1 文件名 (31)

2.2 基本文件输入输出命令 (31)

2.3 随机文件访问 (33)

2.4 当前工作目录 (33)

2.5 文件操作和获取文件信息 (34)

3 错误和异常 (38)

3.1 错误 (38)

3.2 从TCL脚本中产生错误 (40)

3.3 使用catch捕获错误 (40)

3.4 其他异常 (41)

1 深入TCL (43)

1.1 查询数组中的元素 (43)

1.2 info命令 (45)

1.2.1 变量信息 (45)

1.1.1 过程信息 (46)

1.1.2 命令信息 (47)

1.1.3 TCL的版本和库 (48)

1.1.4 命令的执行时间 (48)

1.1.5 跟踪变量 (48)

1.1.6 命令的重命名和删除 (51)

1.1.7 unknown命令 (52)

1.1.8 自动加载 (53)

2 历史记录 (54)

3 TCL和C\C++ (56)

3.1 生成自己的TCLSH (57)

3.2 扩展自己的命令:方法(一) (57)

3.2.1 编写扩展命令对应的C/C++过程 (57)

3.2.2 注册命令 (59)

3.2.3 命令返回值和命令对应的过程的返回值 (60)

3.3 扩展自己的命令:方法(二) (62)

3.3.1 Tcl_Obj结构 (62)

3.3.2 编写扩展命令对应的C/C++过程 (64)

3.3.3 注册命令 (65)

3.4 利用clientData参数和deleteProc参数 (65)

3.5 在C/C++应用程序中嵌入TCL (68)

4 总结 (70)

TCL培训教程(全)

关键词:TCL

摘要:本文是TCL教材的第三稿,前两稿分别是《TCL的使用》和《TCL培训教程》。这一稿加入了不少内容,是北研TCL兴趣小组共同努力的结果。本文详细介绍了TCL 的各个方面,特别对利用C\C++语言扩展TCL命令作了详细论述。本文附有大量实例。

缩略语清单: TCL Tool Command Language 一种脚本语言

参考资料清单:请在表格中罗列本文档所引用的有关参考文献名称、作者、标题、编号、发布日期和出版单位等基本信息。

参考资料清单

名称作者编号

发布日期查阅地点或

渠道 出版单位(若不

为本公司发布的

文献,请填写此

列)

Tcl and Tk ToolKit John

K.Ousterhout

981-235-

951-6

1999 自己的图

Addison

Wesley

Publishing

Commpany

TCL的使用陈旭盛自写文档

TCL培训教程陈旭盛自写文档

1引言

TCL(Tool Command Language)是一种解释执行的脚本语言(Scripting Language)。它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。

由于TCL的解释器是用一个C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作一个C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,可以很容易就在C\C++应用程序中嵌入TCL,而且每个应用程序都可以根据自己的需要对TCL语言进行扩展。我们可以针对某一特定应用领域对TCL语言的核心命令集进行扩展,加入适合于自己的应用领域的扩展命令,如果需要,甚至可以加入新的控制结构,TCL解释器将把扩展命令和扩展控制结构与固有命令和固有控制结构同等看待。扩展后的TCL语言将可以继承TCL 核心部分的所有功能,包括核心命令、控制结构、数据类型、对过程的支持等。根据需要,我们甚至可以屏蔽掉TCL的某些固有命令和固有控制结构。通过对

TCL的扩展、继承或屏蔽,用户用不着象平时定义一种计算机语言那样对词法、语法、语义、语用等各方面加以定义,就可以方便的为自己的应用领域提供一种功能完备的脚本语言。

TCL良好的可扩展性使得它能很好地适应产品测试的需要,测试任务常常会由于设计和需求的改变而迅速改变,往往让测试人员疲于应付。利用TCL的可扩展性,测试人员就可以迅速继承多种新技术,并针对产品新特点迅速推出扩展TCL命令集,以用于产品的测试中,可以较容易跟上设计需求的变化。

另外,因为TCL是一种比C\C++ 语言有着更高抽象层次的语言,使用TCL可以在一种更高的层次上编写程序,它屏蔽掉了编写C\C++程序时必须涉及到的一些较为烦琐的细节,可以大大地提高开发测试例的速度。而且,使用TCL语言写的测试例脚本,即使作了修改,也用不着重新编译就可以调用TCL解释器直接执行。可以省却不少时间。

TCL 目前已成为自动测试中事实上的标准。

2语法

简单的讲,TCL语言的语法实际上是一些TCL解释器怎样对TCL命令进行分析的规则的集合。2.1脚本、命令和单词符号

一个TCL脚本可以包含一个或多个命令。命令之间必须用换行符或分号隔开,下面的两个脚本都是合法的:

set a 1

set b 2

set a 1;set b 2

TCL的每一个命令包含一个或几个单词,第一个单词代表命令名,另外的单词则是这个命令的参数,单词之间必须用空格或TAB键隔开。

TCL解释器对一个命令的求值过程分为两部分:分析和执行。在分析阶段,TCL 解释器运用规则把命令分成一个个独立的单词,同时进行必要的置换(substitution);在执行阶段,TCL 解释器会把第一个单词当作命令名,并查看这个命令是否有定义,如果有定义就激活这个命令对应的C/C++过程,并把所有的单词作为参数传递给该命令过程,让命令过程进行处理。

2.2置换(substitution)

注:在下面的所有章节的例子中,'%'为TCL的命令提示符,输入命令回车后,TCL会在接着的一行输出命令执行结果。'//'后面是我自己加上的说明,不是例子的一部分。

TCL解释器在分析命令时,把所有的命令参数都当作字符串看待,例如:

%set x 10 //定义变量x,并把x的值赋为10

10

%set y x+100 //y的值是x+100,而不是我们期望的110

x+100

上例的第二个命令中,x被看作字符串x+100的一部分,如果我们想使用x的值'10' ,就必须告诉TCL解释器:我们在这里期望的是变量x的值,而非字符'x'。怎么告诉TCL解释器呢,这就要用到TCL 语言中提供的置换功能。

TCL提供三种形式的置换:变量置换、命令置换和反斜杠置换。每种置换都会导致一个或多个单词本身被其他的值所代替。置换可以发生在包括命令名在内的每一个单词中,而且置换可以嵌套。2.2.1变量置换(variable subtitution)

变量置换由一个$符号标记,变量置换会导致变量的值插入一个单词中。例如:

%set y $x+100 //y的值是10+100,这里x被置换成它的值10

10+100

这时,y的值还不是我们想要的值110,而是10+100,因为TCL解释器把10+100看成是一个字符串而不是表达式,y要想得到值110,还必须用命令置换,使得TCL会把10+100看成一个表达式并求值。

2.2.2命令置换(command substitution)

命令置换是由[]括起来的TCL命令及其参数,命令置换会导致某一个命令的所有或部分单词被另一个命令的结果所代替。例如:

%set y [expr $x+100]

110

y的值是110,这里当TCL解释器遇到字符'['时,它就会把随后的expr作为一个命令名,从而激活与expr对应的C/C++过程,并把'expr'和变量置换后得到的'10+110'传递给该命令过程进行处理。

如果在上例中我们去掉[],那么TCL会报错。因为在正常情况下,TCL解释器只把命令行中的第一个单词作为看作命令,其他的单词都作为普通字符串处理,看作是命令的参数。

注意,[]中必须是一个合法的TCL脚本,长度不限。[]中脚本的值为最后一个命令的返回值,例如:

%set y [expr $x+100;set b 300] //y的值为300,因为set b 300的返回值为300

300

有了命令置换,实际上就表示命令之间是可以嵌套的,即一个命令的结果可以作为别的命令的参数。

2.2.3反斜杠置换(backslash substitution)

TCL语言中的反斜杠置换类似于C语言中反斜杠的用法,主要用于在单词符号中插入诸如换行符、空格、[、$等被TCL解释器当作特殊符号对待的字符。例如:

set msg multiple\ space //msg的值为multiple space。

如果没有'\'的话,TCL会报错,因为解释器会把这里最后两个单词之间的空格认为是分隔符,于是发现set命令有多于两个参数,从而报错。加入了'\'后,空格不被当作分隔符,'multiple space'被认为是一个单词(word)。又例如:

%set msg money\ \$3333\ \nArray\ a\[2]

//这个命令的执行结果为:money $3333

Array a[2]

这里的$不再被当作变量置换符。

TCL支持以下的反斜杠置换:

Backslash Sequence Replaced By

\a Audible

(0x7)

alert

(0x8)

\b Backspace

(0xc)

feed

\f Form

(0xa)

\n Newline

(0xd)

\r Carriage

return

(0x9)

\t Tab

tab

(0xb)

\v Vertical

\ddd Octal value given by ddd

d's)

three

(one,

or

two,

given

hh

by

value

\xhh

Hex

h's)

of

(any

number

\ newline space A single space character.

例如:

%set a \x48 //对应 \xhh

H //十六进制的48正好是72,对应H

% set a \110 //对应 \ddd

H //八进制的110正好是72,对应H

%set a [expr \ // 对应\newline space,一个命令可以用\newline转到下一行继续

2+3]

5

2.2.4双引号和花括号

除了使用反斜杠外,TCL提供另外两种方法来使得解释器把分隔符和置换符等特殊字符当作普通字符,而不作特殊处理,这就要使用双引号和花括号({})。

TCL解释器对双引号中的各种分隔符将不作处理,但是对换行符及$和[]两种置换符会照常处理。例如:

%set x 100

100

%set y "$x ddd"

100 ddd

而在花括号中,所有特殊字符都将成为普通字符,失去其特殊意义,TCL解释器不会对其作特殊处理。

%set y {/n$x [expr 10+100]}

/n$x [expr 10+100]

2.3注释

TCL中的注释符是'#','#'和直到所在行结尾的所有字符都被TCL看作注释,TCL解释器对注释将不作任何处理。不过,要注意的是,'#'必须出现在TCL解释器期望命令的第一个字符出现的地方,才被当作注释。

例如:

%#This is a comment

%set a 100 # Not a comment

wrong # args: should be "set varName ?newValue?"

%set b 101 ; # this is a comment

101

第二行中'#'就不被当作注释符,因为它出现在命令的中间,TCL解释器把它和后面的字符当作命令的参数处理,从而导致错误。而第四行的'#'就被作为注释,因为前一个命令已经用一个分号结束,TCL解释器期望下一个命令接着出现。现在在这个位置出现'#',随后的字符就被当作注释了。

3变量

TCL支持两种类型的变量:简单变量和数组。

3.1简单变量

一个TCL的简单变量包含两个部分:名字和值。名字和值都可以是任意字符串。例如一个名为“1323 7&*: hdgg"的变量在TCL中都是合法的。不过为了更好的使用置换

(substitution),变量名最好按C\C++语言中标识符的命名规则命名。 TCL解释器在分析一个变量置换时,只把从$符号往后直到第一个不是字母、数字或下划线的字符之间的单词符号作为要被置换的变量的名字。例如:

% set a 2

2

set a.1 4

4

% set b $a.1

2.1

在最后一个命令行,我们希望把变量a.1的值付给b,但是TCL解释器在分析时只把$符号之后直到第一个不是字母、数字或下划线的字符(这里是'.')之间的单词符号(这里是'a')当作要被置换的变量的名字,所以TCL解释器把a置换成2,然后把字符串“2.1”付给变量b。这显然与我们的初衷不同。

当然,如果变量名中有不是字母、数字或下划线的字符,又要用置换,可以用花括号把变量名括起来。例如:

%set b ${a.1}

4

TCL中的set命令能生成一个变量、也能读取或改变一个变量的值。例如:

% set a {kdfj kjdf}

kdfj kjdf

如果变量a还没有定义,这个命令将生成变量a,并将其值置为kdfj kjdf,若a已定义,就简单的把a的值置为kdfj kjdf。

%set a

kdfj kjdf

这个只有一个参数的set命令读取a的当前值kdfj kjdf。

3.2数组

数组是一些元素的集合。TCL的数组和普通计算机语言中的数组有很大的区别。在TCL中,不能单独声明一个数组,数组只能和数组元素一起声明。数组中,数组元素的名字包含两部分:数组名和数组中元素的名字,TCL中数组元素的名字(下标〕可以为任何字符串。例如:

set day(monday) 1

set day(tuesday) 2

第一个命令生成一个名为day的数组,同时在数组中生成一个名为monday的数组元素,并把值置为1,第二个命令生成一个名为tuesday的数组元素,并把值置为2。

简单变量的置换已经在前一节讨论过,这里讲一下数组元素的置换。除了有括号之外,数组元素的置换和简单变量类似。例:

set a monday

set day(monday) 1

set b $day(monday) //b的值为1,即day(monday)的值。

set c $day($a) //c的值为1,即day(monday)的值。

TCL不能支持复杂的数据类型,这是一个很大的缺憾,也是TCL受指责很多的方面。但是TCL的一个扩展ITCL填补了这个缺憾。

3.3相关命令

3.3.1set

这个命令在3.1已有详细介绍。

3.3.2unset

这个命令从解释器中删除变量,它后面可以有任意多个参数,每个参数是一个变量名,可以是简单变量,也可以是数组或数组元素。例如:

% unset a b day(monday)

上面的语句中删除了变量a、b和数组元素day(monday),但是数组day并没有删除,其他元素还存在,要删除整个数组,只需给出数组的名字。例如:

%puts $day(monday)

can't read "day(monday)": no such element in array

% puts $day(tuesday)

2

%unset day

% puts $day(tuesday)

can't read "day(tuesday)": no such variable

3.3.3append和incr

这两个命令提供了改变变量的值的简单手段。

append命令把文本加到一个变量的后面,例如:

% set txt hello

hello

% append txt "! How are you"

hello! How are you

incr命令把一个变量值加上一个整数。incr要求变量原来的值和新加的值都必须是整数。

%set b a

a

% incr b

expected integer but got "a"

%set b 2

2

%incr b 3

5

4表达式

TCL中的表达式类似于ANSI C的表达式。表达式由操作数和操作符构成,下面分别介绍。

4.1操作数

TCL表达式的操作数通常是整数或实数。整数一般是十进制的, 但如果整数的第一个字符是0(zero),那么TCL将把这个整数看作八进制的,如果前两个字符是0x则这个整数被看作是十六进制的。TCL的实数的写法与ANSI C中完全一样。如:

2.1

7.9e+12

6e4

3.

4.2运算符和优先级

下面的表格中列出了TCL中用到的运算符,它们的语法形式和用法跟ANSI C中很相似。这里就不一一介绍。下表中的运算符是按优先级从高到低往下排列的。同一格中的运算符优先级相同。

语法形式结果操作数类型

-a !a ~a 负a

非a

int,float

int,float

int

a*b a/b a%b 乘

取模

int,float

int,float

int

a+b a-b 加

int,float

int,float

a<>b 左移位

右移位

int

int

ab a<=b a>=b 小于

大于

小于等于

大于等于

int,float,string

int,float,string

int,float,string

int,float,string

a= =b a!=b 等于

不等于

int,float,string

int,float,string

a&b位操作与int

a^b位操作异或int

a|b位操作或int

a&&b逻辑与int,float

a||b逻辑或int,float

a?b:c选择运算a:int,float

1.1数学函数

TCL支持常用的数学函数,表达式中数学函数的写法类似于C\C++语言的写法,数学函数的参数可以是任意表达式,多个参数之间用逗号隔开。例如:

%set x 2

2

% expr 2* sin($x<3)

1.68294196962

其中expr是TCL的一个命令,语法为: expr arg ?arg ...?

两个?之间的参数表示可省,后面介绍命令时对于可省参数都使用这种表示形式。

expr可以有一个或多个参数,它把所有的参数组合到一起,作为一个表达式,然后求值:%expr 1+2*3

7

%expr 1 +2 *3

7

需要注意的一点是,数学函数并不是命令,只在表达式中出现才有意义。

TCL中支持的数学函数如下

abs( x) Absolute value of x.

acos( x) Arc cosine of x, in the range 0 to p.

asin( x) Arc sine of x, in the range -p/2 to p/2.

atan( x) Arc tangent of x, in the range -p/2 to p/2.

atan2( x, y) Arc tangent of x/ y, in the range -p/2 to p/2.

ceil( x) Smallest integer not less than x.

cos( x) Cosine of x ( x in radians).

cosh( x) Hyperbolic cosine of x.

double( i) Real value equal to integer i.

exp( x) e raised to the power x.

floor( x) Largest integer not greater than x.

fmod( x, y) Floating-point remainder of x divided by y.

hypot( x, y) Square root of ( x 2 + y 2 ).

int( x) Integer value produced by truncating x.

log( x) Natural logarithm of x.

log10( x) Base 10 logarithm of x.

pow( x, y) x raised to the power y.

round( x) Integer value produced by rounding x.

sin( x) Sine of x ( x in radians).

sinh( x) Hyperbolic sine of x.

sqrt( x) Square root of x.

tan( x) Tangent of x ( x in radians).

tanh( x) Hyperbolic tangent of x.

TCL中有很多命令都以表达式作为参数。最典型的是expr命令,另外if、while、for等循环控制命令的循环控制中也都使用表达式作为参数。

2 List

list这个概念在TCL中是用来表示集合的。TCL中list是由一堆元素组成的有序集合,list可以嵌套定义,list每个元素可以是任意字符串,也可以是list。下面都是TCL中的合法的list:

{} //空list

{a b c d}

{a {b c} d} //list可以嵌套

list是TCL中比较重要的一种数据结构,对于编写复杂的脚本有很大的帮助,TCL提供了很多基本命令对list进行操作,下面一一介绍:

2.1 list命令

语法: list ? value value...?

这个命令生成一个list,list的元素就是所有的value。例:

% list 1 2 {3 4}

1 2 {3 4}

2.2 concat命令:

语法:concat list ?list...?

这个命令把多个list合成一个list,每个list变成新list的一个元素。

2.3 lindex命令

语法:lindex list index

返回list的第index个(0-based)元素。例:

% lindex {1 2 {3 4}} 2

3 4

2.4 llength命令

语法:llength list

返回list的元素个数。例

% llength {1 2 {3 4}}

3

2.5 linsert命令

语法:linsert list index value ?value...?

返回一个新串,新串是把所有的value参数值插入list的第index个(0-based)元素之前得到。例:

% linsert {1 2 {3 4}} 1 7 8 {9 10}

1 7 8 {9 10}

2 {

3 4}

2.6 lreplace命令:

语法:lreplace list first last ?value value ...?

返回一个新串,新串是把list的第firs (0-based)t到第last 个(0-based)元素用所有的value参数替换得到的。如果没有value参数,就表示删除第first到第last个元素。例:

% lreplace {1 7 8 {9 10} 2 {3 4}} 3 3

1 7 8

2 {

3 4}

% lreplace {1 7 8 2 {3 4}} 4 4 4 5 6

1 7 8

2 4 5 6

2.7 lrange 命令:

语法:lrange list first last

返回list的第first (0-based)到第last (0-based)元素组成的串,如果last的值是end。就是从第first个直到串的最后。

例:

% lrange {1 7 8 2 4 5 6} 3 end

2 4 5 6

2.8 lappend命令:

语法:lappend varname value ?value...?

把每个value的值作为一个元素附加到变量varname后面,并返回变量的新值,如果varname不存在,就生成这个变量。例:

% lappend a 1 2 3

1 2 3

% set a

1 2 3

2.9 lsearch 命令:

语法:lsearch ?-exact? ?-glob? ?-regexp? list pattern

返回list中第一个匹配模式pattern的元素的索引,如果找不到匹配就返回-1。-exact、-glob、-regexp是三种模式匹配的技术。-exact表示精确匹配;-glob的匹配方式和string match命令的匹配方式相同,将在后面第八节介绍string命令时介绍;-regexp表示正规表达式匹配,将在第八节介绍regexp命令时介绍。缺省时使用-glob匹配。例:

% set a { how are you }

how are you

% lsearch $a y*

2

% lsearch $a y?

-1

2.10 lsort命令:

语法:lsort ?options? list

这个命令返回把list排序后的串。options可以是如下值:

-ascii 按ASCII字符的顺序排序比较.这是缺省情况。

-dictionary 按字典排序,与-ascii不同的地方是:

(1)不考虑大小写

(2)如果元素中有数字的话,数字被当作整数来排序.

因此:bigBoy排在bigbang和bigboy之间, x10y 排在x9y和x11y之间.

-integer 把list的元素转换成整数,按整数排序.

-real 把list的元素转换成浮点数,按浮点数排序.

-increasing 升序(按ASCII字符比较)

-decreasing 降序(按ASCII字符比较)

-command command TCL自动利用command 命令把每两个元素一一比较,然后给出排序结果。

2.11 split命令:

语法:split string ?splitChars?

把字符串string按分隔符splitChars分成一个个单词,返回由这些单词组成的串。如果splitChars

是一个空字符{},string被按字符分开。如果splitChars没有给出,以空格为分隔符。例:

% split "how.are.you" .

how are you

% split "how are you"

how are you

% split "how are you" {}

h o w { } a r e { } y o u

2.12 join命令

语法:join list ?joinString?

join命令是命令的逆。这个命令把list的所有元素合并到一个字符串中,中间以joinString分开。缺省的joinString是空格。例:

% join {h o w { } a r e { } y o u} {}

how are you

% join {how are you} .

how.are.you

3控制流

TCL中的控制流和C语言类似,包括if、while、for、foreach、switch、break、continue等命令。下面分别介绍。

3.1 if命令

语法: if test1 body1 ?elseif test2 body2 elseif.... ? ?else bodyn?

TCL先把test1当作一个表达式求值,如果值非0,则把body1当作一个脚本执行并返回所得值,否则把test2当作一个表达式求值,如果值非0,则把body2当作一个脚本执行并返回所得值……。例如:

if { $x>0 } {

.....

}elseif{ $x==1 } {

.....

}elseif { $x==2 } {

....

}else{

.....

}

注意,上例中'{'一定要写在上一行,因为如果不这样,TCL 解释器会认为if命令在换行符处已结束,下一行会被当成新的命令,从而导致错误的结果。在下面的循环命令的书写中也要注意这个问题。书写中还要注意的一个问题是if 和{之间应该有一个空格,否则TCL解释器会把'if{'作为一个整体当作一个命令名,从而导致错误。

3.2循环命令:while 、for、 foreach

3.2.1while命令

语法为: while test body

参数test是一个表达式,body是一个脚本,如果表达式的值非0,就运行脚本,直到表达式为0才停止循环,此时while命令中断并返回一个空字符串。

例如:

假设变量 a 是一个链表,下面的脚本把a 的值复制到b:

set b " "

set i [expr [llength $a] -1]

while { $i>=0}{

lappend b [lindex $a $i]

-1

i

incr

}

3.2.2for命令

语法为: for init test reinit body

参数init是一个初始化脚本,第二个参数test是一个表达式,用来决定循环什么时候中断,第三个参数reinit是一个重新初始化的脚本,第四个参数body也是脚本,代表循环体。下例与上例作用相同:set b " "

for {set i [expr [llength $a] -1]} {$i>=0} {incr i -1} {

lappend b [lindex $a $i] }

3.2.3foreach命令

这个命令有两种语法形式

1。 foreach varName list body

第一个参数varName是一个变量,第二个参数list 是一个表(有序集合),第三个参数body是循环体。每次取得链表的一个元素,都会执行循环体一次。下例与上例作用相同:

set b " "

foreach i $a{

set b [linsert $b 0 $i]

}

2。 foreach varlist1 list1 ?varlist2 list2 ...? Body

这种形式包含了第一种形式。第一个参数varlist1是一个循环变量列表,第二个参数是一个列表list1,varlist1中的变量会分别取list1中的值。body参数是循环体。 ?varlist2 list2 ...?表示可以有多个变量列表和列表对出现。例如:

set x {}

foreach {i j} {a b c d e f} {

lappend x $j $i

}

这时总共有三次循环,x的值为"b a d c f e"。

set x {}

foreach i {a b c} j {d e f g} {

lappend x $i $j

}

这时总共有四次循环,x的值为"a d b e c f {} g"。

set x {}

foreach i {a b c} {j k} {d e f g} {

lappend x $i $j $k

}

这时总共有三次循环,x的值为"a d e b f g c {} {}"。

3.2.4break和continue命令

如何成为一名优秀的工程师(华为内培资料)

如何成为一名优秀的工程师(华为内部培训资料) 九个工作策略 我们发现,改变你做事的方法以及和别人共事的方法是有必要的。表现杰出的人事实上做事的方法和其它的人有相当的差异。他们将他们的工作策略融合到每天的表现中,产生一个前后一致的行为准则。任何一位具有足够聪明和动机的工程师都可以获得卓越表现的能力。 尽管如此,这种生产力的发挥并不是像大爆炸一样的释放出来。也没有魔法药丸或是神奇子弹可以让你瞬间出类拔萃。而是藉由九个互相结合在一起的工作策略为基础发展起来的。以下依照重要性排列,分别介绍这九种工作策略。 1. 闪亮的轨迹(Blazing trails) 你对于之前提到的Lai和Henry的看法是什么?你是否觉得Henry被低估了因为他只强调技术上的竞争力并不公平?或者Lai受赏识只因她会闲聊? 一般的员工,如Henry,脑海中的主动积极是:想出一些新的想法可以让他们的工作做得更好,或是在公司主动帮忙一些额外的事情,例如规划年度野餐或是号召同仁去捐血。实际上,Henry觉得他自己很主动,『我收集了最新的技术文件并学习了最新的软件工具,因而我可以将我的指派工作做得极好。没有人叫我做这些。』Henry这样告诉我。 Lai很清楚而Henry并不了解的一个关键是:只有特定的行为才能让别人觉得你主动积极。主动积极的真正意涵是: 主动追求超过自己职权范围的更大责任(例如Lai主动帮忙安装新的软件工具)。同时仍然能

够完成自己的主要任务。 能够额外付出心力来帮助其它同事或是团队,就像Lai主动帮助她的同事应付难缠的程序。当有重要的任务出现在每个人职权中间的灰色地带时,能够主动承担起责任,并且将任务完美达成。 对于认定的目标或是计划,不屈不挠地坚持直到成功地执行完毕。就像Lai在帮忙安装软件时以加班的方式完成原先的构想。 在一般人的印象中,唯一值得主动去做的事是发明一个商业上成功的新产品,比如说发明对象导向的Java语言。如果你花了许多心力,却无法在华尔街日报头版上刊登一篇赞美重大贡献的文章,那你主动的努力就白费了。 然而,在我们的研究中,杰出的工程师都坚信:虽然他们非常期望够主动积极地做出巨大的贡献,日常中的小贡献,日复一日地累积起来,也可能造成同样的影响力。不只这样,他们发现通常一个重大的发现是在一连串较小的努力之后,慢慢形成的。如果你自己的工作态度是不注重在小地方采取主动的态度,则你所累积的贡献会逐渐干涸,而重大的突破永远都没有机会发生。例如,Lai主动帮助同事处理一个繁琐的程序,可能可以让她的同事获得一个喘息的空间,而这正是在工作上要产生有意义的突破所需要的条件。 杰出的工程师同时也相信,你可以主动做出贡献的程度会和你的经验直接相关。Lai在还是新进人员时,大家并不期望她承担太大的责任,但是她主动对周遭的人做出一些小贡献为她的同事带来一些意外的惊喜。同时也很快地让其它人认同她是一位有生产力的工程师。当她越来越有经验之后,大家才会开始期望她能够主动地承担更高难度,风险更高的任务。 我们对Lai, Henry及其它数百位其它工程师的观察发现,对于任何一个有竞争力的专业工作者团队,新进人员必须展现主动积极的精神。这样的态度不只会让主管感到满意,更重要

华为10大管理要点

华为10大管理要点,朴素却震撼! 在管理要点里,华为对人才的识别做出了非常清晰的定义:个人学历、职称和荣誉仅仅是一个标记,华为更看重个人学习能力的成长和实际才干的增长;没有自我批判能力的员工,不得再提拔;不能让员工浅薄的骄傲,成为挖掘华为的坟墓…… 这十大管理要点,非常朴素,对中小企业具有非常强的借鉴和参考意义。正如任正非在学习IBM时说: “好好学习,学明白了你就伟大了,靠自己去创新,自己去悟,是悟不出大道理的。” 一、加强研发、营销、管理体系的均衡发展 二、坚持以流程优化为主导的管理体系建设 不断地去优化非增值流程与增值流程,不断改良,不断优化,无穷逼近合理。小改进、大奖励。 减人、增产、增质、增效,以及核心竞争力的提高,是我们考核各级干部能力的主要指标。 三、坚持从优秀的员工中选拔、培养骨干

重视后天的学习与进步,重视个人的实际才干的增长。个人永久性的标记(学历、职称、社会荣誉……)仅仅是个参考。 四、公司将继续完善委员会民主决策的建设 五、加强干部的民主作风建设 公司及各部门都要听得进来自内部与外部的批评,包括提意见方法不对的批评。闻过则喜,加快改进。要忍受得了委屈,只要是真理,总会被时间检验。 六、推行任职资格系统的建立、优化和完善 在效益好时要敢于扩张,共同负责;在受到挫折时,要共同忍受。通过这种张驰,把压力传递到流程的每个环节与每一个员工。 七、坚决杜绝不良习气 八、员工长期工作的基础是劳动和胜任力 各级部门有责任帮助他们,培养他们,合理的疏导。建立和完善绩效考核体系。一定要实行定编、定员、定责、定酬的待遇制度,而且每年效益要不断地提高。 九、要总结和复制成功的管理经验

华为项目管理10大模板(可直接套用).pdf

01 项目组成员表 Project Team Members 一、项目基本情况I. Project Basic Info 项目名称project name:智能家居项目编号project code:T0808 制作人prepared by:陈海权审核人reviewed by:李四 项目经理project manager:陈海权制作日期data:2016-4-11 二、项目组成员II. Project Team Directory 成员姓名项目角色所在部门职责项目起止日投入频度及联系电话主管经理Name Project Role https://www.360docs.net/doc/5e17417673.html, Reponsibility 期Data 工作量Time Tel No. Supervisor 李四项目赞助人 A 国代表处项目赞助 Sponsor 张三项目经理VIP 客户接总体负责 Manager 待策划处 王五项目核心成员 A 国代表处客户关系 Core team 赵六项目核心成员GTS 重大项 Core team 目部 吴丹项目核心成员供应链管理供应链支持 Core team 部 刘峰项目核心成员PSMT 固网研发支持 Core team 产品线 张芳项目核心成员客户工程部客户接待 Core team XXX 项目非核心成员VIP 客户接接待策划 extended team 待策划处 XXX 项目非核心成员固网产品国产品技术支 extended team 际行销部持 XXX 项目非核心成员GTS 重大项技术服务支 extended team 目部持 XXX 项目非核心成员供应链管理供应链支持 extended team 部 XXX 项目其他人员 A 国代表处客户关系 Other personel XXX 项目其他人员客户工程部客户接待 Other personel 签字signature:日期date: 项目赞助人Sponsor 李四2005-7-8 项目经理project manager 张三2005-7-8

[转载]华为技术支持笔试题

[转载]华为技术支持笔试题 原文地址:华为技术支持笔试题作者:卖女孩的小雪人【第一部分公司篇】 1、华为公司的全称为() A、深圳市华为技术有限公司 B、华为技术有限公司 C、华为公司D、我司(答案:B,答A、C者酌情给分,答D者立即辞退,我司三令五申禁止使用该华为内部土语,屡禁不止,老员工不可教也,只好从新员工抓起,格杀勿论)2、华为公司的企业性质是() A、民营 B、私营 C、国营 D、上市公司(答案:A,本题主要让考生了解公司的性质) 3、华为公司的商标象征() A、红太阳 B、菊花 C、扇贝(答案:B,答A者酌情给分,答C者立即辞退,天天就想着吃) 4、从下列选项中选择出公司的常务副总裁() A、任正非 B、孙亚芳 C、李一男 D、郑宝用 E、张燕燕(答案:BD,答C者立即辞退,让他到李一男的公司去报到吧) 5、华为公司的年终奖一般是在每年的什么时候发() A、元旦后 B、春节前 C、7月下旬或8月上旬 D、劳动节前E、国庆节前(答案:C,切记,因为是年中奖,而不是年终奖) 6、华为公司的配给你的股票是() A、发的 B、用自己的奖金去买(答案:B) 7、老板常说的土八路,是指() A、老板自己的革命年代的光辉历史 B、本地化的用服兄弟C、季度考核为D的兄弟(答案:B)【第二部分部门篇】 1、你所在的一级部门为() A、技术支援部 B、国际技术支援部 C、国际技术支援部国内分部D、用服(答案:B,答A、C者酌情给分,答D者作不合格处理,为了提高技术支援部形象,公司早就取消用服这个字眼,而且于xx年春节后悄悄地将技术支援部

前加“国际”二字) 2、你所在的二级部门为() A、传输产品技术支援管理部 B、传输工程部 C、传输用服工程中心D、光网络产品技术支援管理部(答案:A,首先得把自己的部门搞清楚,答D者,有远见,有潜力,可以酌情给分,很可能在xx年未就改成这个名字,因为市场中研已经改了,就差技术支援部了) 3、传输的商标为()A、SBS B、SDH C、OptiX D、Metro (答案:C,答A者酌情给分,最起码还知道老商标) 4、技术支援部与国际技术支援部的关系()A、国际技术支援部是技术支援部下面的一个部门,负责海外 B、技术支援部是国际技术支援部下面的一个部门,负责国内 C、技术支援部是国际技术支援部的前身 D、国际技术支援部是技术支援部的前身(答案:C)【第三部分业务篇】 1、SBS是() A、传输产品的老商标 B、同步骨干系统 C、傻不傻的拼音缩写D、帅不帅的拼音缩写(答案:AB,答CD者立即辞退) 2、SDH是() A、传输产品商标 B、同步数字序列 C、傻得很的拼音缩写D、傻得好的拼音缩写(答案:B,答CD者立即辞退) 3、由于你是新员工,没有公配手机时,当你在现场遇到紧急事故时,你会()向公司求助 A、打用户机房内的电话 B、借用户手机 C、拔110 D、拔200或300E、立即打车回办事处(答案:D,答CE者立即辞退,按照公司规定,不能随便使用用户的电话,以提高公司形象) 4、在开局时,用户问你在华为干几年了,你会回答() A、我是新员工 B、1年多了 C、2年多了 D、3年多了(答案:B,答A者按不合格处理,按照公司规定,不能说自己是新员工,几千万的设备,怎能让一个新员工用来练兵,

华为高效沟通管理要点

高效沟通管理要点:从华为项目管理中,学习沟通之道 沟通管理 项目管理过程中沟通管理,由于干系人众多,很容易出现不可控制的局面。为了能够降低沟通管理的难度,让沟通效率更高,沟通效果更好。需要做好沟通计划,针对不同问题提前做好解决方案。沟通方式和一些词汇能够做好提前统一好意思,能够让沟通误解率降低。 高效沟通管理要点 1、计划好沟通 影响沟通计划和项目沟通要求的主要因素有以下这些。 项目发起方的组织结构。 项目干系人分析的结果。 报告关系。 项目涉及的职能领域。 参与项目的人数。 项目干系人所在的地方。 每位项目干系人的信息需求。 项目团队成员的经验级别。

技术可得性。 信息需求的紧急性和需要的频率。 想要的项目沟通形式。 项目的预期时长。 项目在组织层面的风险级别。 对终端消费者的预期变更影响。 组织文化。 所需的外部沟通级别。 采购合同。 法律顾问提出的限制。 给项目确定了具体的沟通要求后,一定要完成以下两件事情。 在项目沟通管理计划中记录这些信息。 确保将所有正式的项目沟通(以及实现沟通要完成的工作)都包含在WBS和项目进度计划中。 2、记住基本方法

优先处理:项目沟通不要走捷径;尊重项目干系人。 展现风度:讲礼貌,将欣赏和感激表现出来。 言出必行:如果你说了要做什么事情,就要去做。 3、沟通的5个C 在计划或执行项目沟通的时候,要牢记5个C。 清楚(Clear):说明主题;围绕主题;帮助接收者理解信息;恰当地使用术语。 简洁(Concise):抓住重点;不让信息漫无边际。 礼貌(Courteous):讲礼貌,注意语调。 一贯(Consistent):使用恰当的语调和媒介传递想要传递的信息;所有信息要素都应传达一样的信息。 令人信服(Compelling):让他们有理由去注意。 4、保证理解 如果想进行有效的沟通,就要拥有这样的理念。主要包括以下几个方面。 投入精力、耐心和决心,确保别人清楚地理解了你的意思。 采用有效的聆听技巧,确保自己清楚地理解了别人要传达的意思。

华为结构与材料工程师笔试题目

判断 1、Fe-C相图,Fe3C是最稳定的富碳相。错误 2、在二元合金系中,只有共晶成分的合金在结晶时才能发生共晶转变,其他任何成分的合 金在结晶时都不可能发生共晶转变。错误 3、从热力学上看,系统的焓是由原子间的键合决定,熵是由晶体的原子排列决定。 4、塑性变形时,滑移面总是晶体的密排面,滑移方向也总是密排方向。 5、材料的硬度越大,其弹性模量也越大 6、PTFE根据聚合方法的不同可分为悬浮聚合和分散聚合,前者使用与模压成型和挤压成型,后者制成的乳液可作为金属表面涂层 7、固溶体或合金的强度高于纯金属,主要原因是杂质原子的存在对位错运动具有牵制作用。正确 8、1wt%二氧化钛掺入到氧化铝中,是否有利于降低氧化铝陶瓷的烧结温度。 9、Fe合金的焊缝晶体形态主要是柱状晶和少量的等轴晶。正确 - 10、孪生是晶体难以进行滑移时,而进行的另外一种塑性变形方式。 11、一般情况下,同一种材料使用DSC、TMA、DMA测试出材料Tg点相差不会超过2度。 12、相图是材料工作者常用的工具之一,其常用来表示材料的相状态与温度和成分之间的关系,其不仅能表示相的平衡态,而且能反应相的亚稳态。正确 13、按照聚合物和单体元素组成和结构变化,可将聚合反应分成加成聚合反应和缩合聚合反 应两大类。 选择 1、能进行交滑移的位错必然是: 螺旋位错混合位错刀型位错 2、Db、Ds、Dl分别代表金属或合金中的晶界扩散、表面扩散、点阵扩散的扩散系数,一般情况下,有:Ds > Db >Dl ] 3、二氧化锆陶瓷可以用做氧气气氛下的炉体加热元件,但需要将氧化锆陶瓷加热到1000℃以上,这是因为 产生明显的离子电导增加热膨胀量防止相变发生 4、以下三种界面作用力最大的是: 氢键范德华力静电化学键 5、以下化学键,键长最短的是: 配位键氢键离子键共价键 6、烧结过程分下述几个阶段,正确顺序是:(1)无规则形状颗粒表面趋圆(2)颗粒之间颈 缩(3)颈部加宽(4)晶粒生长 7、丙烯酸酯型材料不能通过以下哪种方式固化: UV固化湿气固化双组份室温固化加热固化 8、用来反映材料在交变载荷作用下,抵抗破坏能力的物理概念是: 【 抗拉强度疲劳强度硬度屈服热度 9、每个体心立方晶胞中包含有(2)个原子。 10、以下场景可以使用厌氧胶粘接的是:

华为应聘笔试题-硬件

【华为硬件笔试题1】 一选择13个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理 1.微分电路 2.CISC,RISC 3.数据链路层 二填空10个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理有关于 1.TIC6000 DSP 2.二极管 3.RISC 4.IIR 三简答 1.x(t)的傅立叶变换为X(jw)=$(w)+$(w-PI)+$(w-5) h(t)=u(t)-u(t-2) 问: (1),x(t)是周期的吗? (2),x(t)*h(t)是周期的吗? (3),两个非周期的信号卷积后可周期吗? 2.简述分组交换的特点和不足 四分析设计 1.波形变换题目从正弦波->方波->锯齿波->方波,设计电路 2.74161计数器组成计数电路,分析几进制的 3.用D触发器构成2分频电路 4.判断MCS-51单片机的指令正确还是错误,并指出错误原因 (1) MUL R0,R1 (2) MOV A,@R7 (3) MOV A,#3000H (4) MOVC @A+DPTR,A (5) LJMP #1000H () 5.MCS-51单片机中,采用12Mhz时钟,定时器T0采用模式1(16位计数器),请问在下面程序中,p1.0的输出频率 MOV TMOD,#01H SETB TR0 LOOP:MOV TH0,#0B1H MOV TL0,#0E0H LOOP1:JNB TF0,LOOP1 CLR TR0 CPL P1.0 SJMP LOOP 【华为硬件笔试题2】 全都是几本模电数电信号单片机题目 1.用与非门等设计全加法器 2.给出两个门电路让你分析异同 3.名词:sram,ssram,sdram 4.信号与系统:在时域与频域关系

华为内部资料绩效管理与绩效考核制度

华为的绩效管理与绩效考核制度 第一部分:绩效考核过程 华为的绩效管理与绩效考核过程,其基本程序为: 1、各级主管根据本年度(或考核周期)公司对员工要求和期望,在与 员工协商的基础上确定年度(或考核周期)工作目标; 2、部门负责人的考核内容包括: 1)部门量化指标:针对部门可以量化的关键业绩指标; 2)部门非量化指标:针对部门不能量化但对公司和部门业绩形成非常重要的指标; 3)追加目标和任务考核:主要是对工作中的追加目标和任务的考核; (以上部分权重为70%,参考值,具体分配由考核责任人确定) 4)工作行为与态度考核; (此项权重为20%,参考值); 5)管理行为考核。

(此项权重为10%,参考值) 6)不良事故考核。 3、其他具有管理职能职位的考核内容包括: 1)指标性目标:可以定量衡量的考核目标; 2)重点工作目标:不能量化,但是对完成工作非常重要的工作目标; 3)追加目标和任务考核:主要是对工作中的追加目标和任务的考核; (以上部分权重为70%,参考值,具体分配由各级考核责任人 确定) 4)工作行为与态度考核; (此项权重为20%,参考值); 5)管理行为考核; (此项权重为10%,参考值) 6)不良事故考核。 4、非管理职能职位的考核内容包括: 1)指标性目标:可以定量衡量的考核目标; 2)重点工作目标:不能量化,但是对完成工作非常重要的工作目标; 3)追加目标和任务考核:主要是对工作中的追加目标和任务的考核; (以上部分权重为80%,参考值,具体分配由各级考核责任人确定) 4)工作行为与态度考核。 (此项权重为20%,参考值) 5)不良事故考核。 5、各级主管将设定的目标填写到相应的年度(或考核周期)考核表中, 并确定每项目标的权重;呈报上级主管认定后,统一交至人力资源 部备案。 二、建立工作期望: 1、为了确保员工在业绩形成过程中实现有效的自我控制,各级主管在 填具考核表后,必须与所辖员工就考核表中的内容和标准进行沟 通; 2、沟通的基本内容包括: 1)期望员工达到的业绩标准; 2)衡量业绩的方法和手段;

华为内部硬件开发设计流程

2007年,以2年的工作经验去一家小公司去面试。当时笔试完,对方对我很认可。但当时他说:“我需要招一个,在大公司待过的,最好知道硬件开发流程和规范的。虽然你题答得不错,但是我们需要一个有丰富经验的,最好在华为待过的。” 当时,我就在想“华为的规范和流程是啥样的”。后来我去了华为,我把能想到的华为硬件开发的几个不一样的点,跟大家分享一下。 NO.1 文档,评审,设计 当时刚入职时,三个人做一个电路板。虽然电路复杂一些,还是有一些人力过剩的。所以,我就被安排去写一个PCI转UART的逻辑。 我当时是新员工,也急于表现自己,利用周末的时间,估计用了一周的时间,就写完代码,开始仿真了。我以为我的导师兼主管会表扬一下,结果没有,他说:“你为什么没有召集大家讨论?然后再写方案,评审?然后再动手写代码?”我当时是不理解的,觉得我一个人就搞定的事情,为啥要这样劳师动众? 后来反思过后发现了以下问题: 第一、从主管的角度,不知道新员工的个人能力,你能把做的事情讲清楚了,他才放心。第二、从公司的角度,有一套流程来保证项目的交付。那么则不再太依赖某个人的个人能力,任何一个人的离职,都不会影响项目的交付。这也是华为最了不起的地方,把复杂的项目拆得非常细碎,这样不需要特别牛的人来交付项目。这是为什么华为的工程师的收入是思科的N分之一。 第三、从效果角度,毕竟一个人的想法是有限的,把想法文档化的过程,就是整理思路的过程;讨论的过程,就是收集你自己没有想到的过程。正式的评审,是大家达成意见的过程。提前讨论,让相关的人都参与到你的设计中,总比你设计完了,被别人指出一个致命的问题要强得多。 就是因为华为把一项工作拆散了,所以沟通,文档,评审,讨论,变得非常重要。这个工作模式的缺点,也是显而易见,沟通成本高,工作效率低。 NO.2 硬件领域的人员构成 在华为内部里面,人员角色非常多。硬件的人是对产品开发阶段,端到端负责的。做单板硬件工程师,可以涉猎最多的领域,同时也是工作内容最杂,接触人最多,扯皮的最多的工种。 但是也因为有人专门负责画PCB、EMC、电源、逻辑,原本硬件工程师应该做的领域。那么硬件工程师就武功尽废,变成“连连线”。 其实不然,正是由于每个人都是一个小的领域,没有人统领,所以一个好的硬件经理的作用非常的重要,是贯穿所有领域和全部流程的关键角色。正如原来华为内部论坛上有一个人比喻的,硬件工程师更像是处理器里面的“Cache”,是所有环节的中转站。大公司把人的分工分的这么细,也是防止某一拨掌握了太多公司的核心技术,出去单搞了。 NO.3 华为的流程

华为笔试题目很全

[笔试]华为笔试集合,很全面 [此帖已被设为推荐]本人收集的一些华为笔试 华为软件工程笔试题 写一个程序,要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。如:100个1是一个组合,5个1加19个5是一个组合。。。。请用C++语言写。答案:最容易想到的算法是:设x是1的个数,y是2的个数,z是5的个数,number是组合数注意到0=x=100,0=y=50,0=z=20,所以可以编程为:number=0;for(x=0;x=100;x++)for(y=0;y=50;y++)for (z=0;z=20;z++)if((x+2*y+5*z)==100)number++;coutnumberendl;上面这个程序一共要循环100*50*20次,效率实在是太低了事实上,这个题目是一道明显的数学问题,而不是单纯的编程问题。我的解法如下:因为x+2y+5z=100所以x+2y=100-5z,且z=20x=100y=50所以(x+2y)=100,且(x+5z)是偶数对z作循环,求x的可能值如下:z=0,x=100,98,96,...0z=1,x=95, 93,...,1z=2,x=90,88,...,0z=3,x=85,83,...,1z=4,x=80,78,...,0......z=19,x=5,3,1z=20,x=0因此,组合总数为100以内的偶数+95以内的奇数+90以内的偶数+...+5以内的奇数+1,即为:(51+48)+(46+43)+(41+38)+(36+33)+(31+28)+(26+23)+(21+18)+(16+13)+(11+8)+(6+3)+1某个偶数m以内的偶数个数(包括0)可以表示为m/2+1=(m+2)/2某个奇数m以内的奇数个数也可以表示为(m+2)/2所以,求总的组合次数可以编程为:number=0;for(int m=0;m=100;m+=5){number+=(m+2)/2;}coutnumberendl;这个程序,只需要循环21次,两个变量,就可以得到答案,比上面的那个程序高效了许多倍----只是因为作了一些简单的数学分析这再一次证明了:计算机程序=数据结构+算法,而且算法是程序的灵魂,对任何工程问题,当用软件来实现时,必须选取满足当前的资源限制,用户需求限制,开发时间限制等种种限制条件下的最优算法。而绝不能一拿到手,就立刻用最容易想到的算法编出一个程序了事 【华为硬件笔试题1】 一选择13个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理 1.微分电路 2.CISC,RISC 3.数据链路层二填空10个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理有关于 1.TIC6000DSP 2.二极管 3.RISC 4.IIR三简答 1.x(t)的傅立叶变换为X(jw)=$(w)+$(w-PI)+$(w-5) h(t)=u(t)-u(t-2)问:(1),x(t)是周期的吗?(2),x(t)*h(t)是周期的吗?(3),两个非周期的信号卷积后可周期吗?2.简述分组交换的特点和不足四分析设计 1.波形变换题目从正弦波->方波->锯齿波->方波,设计电路2.74161计数器组成计数电路,分析几进制的3.用D触发器构成2分频电路 4.判断MCS-51单片机的指令正确还是错误,并指出错误原因(1)MUL R0,R1(2) MOV A,@R7(3)MOV A,#3000H(4)MOVC@A+DPTR,A(5)LJMP#1000H() 5.MCS-51单片机中,采用12Mhz时钟,定时器T0采用模式1(16位计数器),请问在下面程序中,p1.0的输出频率MOV TMOD,#01H SETB TR0LOOP:MOV TH0,#0B1H MOV TL0,#0E0H LOOP1:JNB TF0,LOOP1CLR TR0CPL P1.0SJMP LOOP 【华为硬件笔试题2】 全都是几本模电数电信号单片机题目 1.用与非门等设计全加法器 2.给出两个门电路让你分析异同 3.名词:sram,ssram,sdram 4.信号与系统:在时域与频域关系 5.信号与系统:和4题差不多 6.晶体振荡器,好像是给出振荡频率让你求周期(应该是单片机的,12分之一周期....) 7.串行通信与同步通信异同,特点,比较8.RS232c高电平脉冲对应的TTL逻辑是?(负逻辑?)9.延时问题,判错10.史密斯特电路,求回差电压11.VCO是什么,什么参数

华为十大管理要点

华为十大管理要点 公司所有员工是否考虑过,如果有一天,公司销售额下滑、利润下滑甚至会破产,我们怎么办?居安思危,不是危言耸听。 十年来我天天思考的都是失败,对成功视而不见,也没有什么荣誉感、自豪感,只有危机感。也许是这样才存活了十年。我们大家要一起来想,怎样才能活下去,也许才能存活得久一些。失败这一天是一定会到来,大家要准备迎接,这是我从不动摇的看法,这是历史规律。 目前情况下,我认为我们公司从上到下,还没有真正认识到危机,那么当危机来临的时刻,我们可能是措手不及的。我们是不是已经麻木,是不是头脑里已经没有危机这根弦了,是不是已经没有自我批判能力或者已经很少了。那么,如果四面出现危机时,我们可能是真没有办法了。如果我们现在不能研究出现危机时的应对方法和措施来,我们就不可能持续活下去。

大家知道,有一家世界一流的公司,确实了不起,但去年说下来就下来了,眨眼之间这个公司就几乎崩溃了。当然,他们有很好的基础研究,有良好的技术储备,他们还能东山再起。最多这两年衰退一下,过两年又会世界领先。而华为有什么呢?我们没有人家雄厚的基础,如果华为再没有良好的管理,那么真正崩溃后,将来就会一无所有,再也不能复活。 华为公司老喊狼来了,喊多了,大家有些不信了。但狼真的会来的。今年我们要广泛展开对危机的讨论,讨论华为有什么危机,你的部门有什么危机,你的科室有什么危机,你的流程的哪一点有什么危机。还能改进吗?还能提高人均效益吗?如果讨论清楚了,那我们可能就不死,就延续了我们的生命。怎样提高管理效率,我们每年都写了一些管理要点,这些要点能不能对你的工作有些改进,如果改进一点,我们就前进了。 一、均衡发展,就是抓短的一块木板 在管理改进中,一定要强调改进我们木

华为工程师质量控制手册

长春市 科技有限公司 文件编号: 工程质量控制工作手册 VER 2.0 编 制: 质管部 审核:瞧瞧去 批 准: 呜呜呜 日 期: 地 址:长春市 电 话: 传 真:

邮 编:

目 录 手册说明第 页 手册修改控制第 页 质管部组织结构与职责第 页 工程质量管理总则第 页 工程质量检查工作流程第 页 工程质量自检第 页 工程质量过程监控第 页 工程过程文档质量检查第 页 工程完工质量检查第 页 工程质量问题整改第 页 工程满意度调查办法第 页 工程质量奖罚措施第 页 工程质量控制中管理人员的处罚规定第 页 对违反服务规范的处罚规定第 页 免检工程师认证管理实施办法第 页 免检工程师资格管理办法第 页 工程质量控制网络管理规定第 页 工程文档归档管理规定第 页 工程质量检查整改管理规定第 页 技术培训与考试管理规定第 页

手册说明 手册适用范围 本手册是为本公司进行的华为工程安装和设备维护服务业务而编写。 本手册适用于质检工程师,是质检工程师的工作指导,同时适用于安装调试工程师、各级工程管理人员对工程质量的控制。 手册内容 本手册依据公司《质量手册》和本公司的实际相结合编制而成,包括: 工程质量管理的总体原则 质检工程师工作流程 质量检查流程 工程过程监控 各项检查制度 工程质量奖罚措施 免检工程师认证和管理 其它质量管理制度 手册的发布、批准、保管、修改 本手册为公司的受控文件,由质管部经理批准颁布执行。手册管理的所有相关事宜均由质管部统一负责,未经质管部经理批准,任何人不得将手册提供给公司以外的人员。 手册持有者应妥善保管,不得损坏、丢失、随意涂改。 在手册使用期间,如有修改建议,各部门负责人应汇总意见,及时反馈到质管部;质管部应定期对手册的适用性、有效性进行评审;必要时应对手册予以修改,执行《文件控制程序》的有关规定。

(整理)华为笔试题.

华为2011第一次笔试题目总结:单选20,多选10,改错3,编程2 有数据结构、网络、操作系统、数据库 一、单项选择题(4选1) 1.如果有N个节点用二叉树结构来存储,那么二叉树的最小深度是: 解析:深度为k的二叉树,最多有2^k-1个节点,这时的二叉树成为满二叉树。 Log2(N+1) 2.形结构的一种重要运算。若已知一棵二叉树的前序序列是BEFCGDH,中序序列是FEBGCHD,则后序序列是:FEGHDCB 3.下列算法的功能是: /*L是无头节点单链表*/ LinkList Demo(LinkList L){ ListNode *Q,*P; If(L&&L->next){ Q=L; L=L->next; P=L; While(p->next) P=p->next; p->next=Q; Q->next=NULL; } return L; } 解析:将单链表转变为循环链表 4、循环单向链表指:最后一个节点的指针总是指向链表头。 5、折半查找算法的算法复杂度:O(log2N) 6、void example(char acWelcome[]){ Printf(“%d”,sizeof(acWelcome)); return; } Void main(){ Char acWelcome[]=”Welcome to Huawei Test”; Example(acWelcome); return; } 的输出是—— A 4 B 5 C 22 D 23 解析:23 7、设有如下定义: Unsigned long pulArray[]={6,7,8,9,10}; Unsigned long *pulPtr; 则下列程序段的输出结果为——

华为公司经营理念

华为公司经营理念 华为作为一个中国的、非上市的、民营的、高科技的企业,只是一种“现象”,对于中国企业,其模仿与借鉴价值并不太大,但是隐含于华为现象成功背后的企业管理哲学与理念,则值得中国企业和企业家思考。 华为公司任正非总裁的经营管理可归结为均衡的思想。自2001年起,在任正非总结的华为“十大管理要点”中,不管内外部环境发生了如何的变化,“坚持均衡发展”一直放在第一条。可以讲,任正非的企业管理哲学思想的核心就是均衡,均衡是其最高的企业管理哲学。任正非自称是一个有“灰度”的人,他认为,介于黑与白之间的灰度,是十分难掌握的,这就是领导与导师的水平。 “均衡就是生产力的最有效形态”,“继续坚持均衡的发展思想,推进各项工作的改革和改良。均衡就是生产力的最有效形态。通过持之以恒的改进,不断地增强组织活力,提高企业的整体竞争力,以及不断地提高人均效率”,这是华为长期坚守的核心价值观。 华为20年的成长与发展之路,是建立在动态地实现功与利、经营与管理的均衡基础之上的,通过持续不断地改进、改良与改善,华为不断强化与提升经营管理能力,进而使企业走上了一条良性发展之

路。华为的成功,也再次以中国式的案例说明,均衡的管理是企业真正的核心竞争力。 2005年,伴随着华为国际化步伐的加快,华为重新梳理了自己的使命愿景和发展战略。其战略定位于:1.为客户服务是华为存在的唯一理由,客户需求是华为发展的原动力;2.质量好、服务好、运作成本低,优先满足客户需求,提升客户竞争力和赢利能力;3.持续管理变革,实现高效的流程化运作,确保端到端的优质交付;4.与友商共同发展,既是竞争对手,也是合作伙伴,共同创造良好的生存空间,共享价值链的利益。 从上述战略不难看出,华为的战略既关注经营(第一条),又关注管理(第二条);既关注企业外部(第一条与第四条),同时也关注企业内部(第二条与第三条)。可以说基于其企业管理哲学https://www.360docs.net/doc/5e17417673.html,的华为战略,是一个充满了均衡的战略。 在经营模式方面,华为的宏观商业模式是客户化导向,产品的发展路标是客户需求导向,把为客户提供完善和及时的服务作为公司存在的唯一价值和理由;在管理模式方面,华为的微观商业模式就是流程化的组织建设,完成企业诸元素从端到端、高质、快捷、有效的管理;在内部核心价值观方面,相应地构建以高绩效为特征的企业文化。正如任正非所言:“在这20年的痛苦磨难中,我们终于确立了‘以客

华为项目管理10大模板(可直接套用)

01项目组成员表 Project Team Members 一、项目基本情况I. Project Basic Info 项目名称project name:T客户考察公司项目编号project code:T0808 制作人prepared by:张三审核人reviewed by:李四 项目经理project manager:张三制作日期data:2005-7-8 二、项目组成员II. Project Team Directory 成员姓名Name 项目角色 Project Role 所在部门 https://www.360docs.net/doc/5e17417673.html, 职责 Reponsibility 项目起止日 期Data 投入频度及 工作量Time 联系电话 Tel No. 主管经理 Supervisor 李四项目赞助人 Sponsor A国代表处项目赞助 张三项目经理 Manager VIP客户接 待策划处 总体负责 王五项目核心成员 Core team A国代表处客户关系 赵六项目核心成员 Core team GTS重大项目部 吴丹项目核心成员 Core team 供应链管理 部 供应链支持 刘峰项目核心成员 Core team PSMT固网 产品线 研发支持 张芳项目核心成员 Core team 客户工程部客户接待 XXX 项目非核心成员 extended team VIP客户接 待策划处 接待策划 XXX 项目非核心成员 extended team 固网产品国 际行销部 产品技术支 持 XXX 项目非核心成员 extended team GTS重大项 目部 技术服务支 持 XXX 项目非核心成员 extended team 供应链管理 部 供应链支持 XXX 项目其他人员 Other personel A国代表处客户关系 XXX 项目其他人员 Other personel 客户工程部客户接待 签字signature:日期date: 项目赞助人Sponsor 李四2005-7-8 项目经理project manager 张三2005-7-8

硬件工程师手册(华为)

第一章 概述 第一节 硬件开发过程简介 §1.1.1 硬件开发的基本过程 产品硬件项目的开发,首先是要明确硬件总体需求情况,如CPU处理能力、存储容量及速度,I/O端口的分配、接口要求、电平要求、特殊电路(厚膜等)要求等等。其次,根据需求分析制定硬件总体方案,寻求关键器件及电咱的技术资料、技术途径、技术支持,要比较充分地考虑技术可能性、可靠性以及成本控制,并对开发调试工具提出明确的要求。关键器件索取样品。第三、总体方案确定后,作硬件和单板软件的详细设计,包括绘制硬件原理图、单板软件功能框图及编码、PCB布线,同时完成开发物料清单、新器件编码申请、物料申领。第四,领回PCB板及物料后由焊工焊好1~2块单板,作单板调试,对原理设计中的各功能进行调测,必要时修改原理图并作记录。第五,软硬件系统联调,一般的单板需硬件人员、单板软件人员的配合,特殊的单板(如主机板)需比较大型软件的开发,参与联调的软件人员更多。一般地,经过单板调试后在原理及PCB 布线方面有些调整,需第二次投板。第六,内部验收及转中试,硬件项目完成开发过程。 §1.1.2 硬件开发的规范化 上节硬件开发的基本过程应遵循硬件开发流程规范文件执行,不仅如此,硬件开发涉及到技术的应用、器件的选择等,必须遵照相应的规范化措施才能达到质量保障的要求。这主要表现在,技术的采用要经过总体组的评审,器件和厂家的选择要参照物料认证部的相关文件,开发过程完成相应的规定文档,另外,常用的硬件电路(如ID.WDT)要采用通用的标准设计。 第二节 硬件工程师职责与基本技能 §1.2.1 硬件工程师职责 一个技术领先、运行可靠的硬件平台是公司产品质量的基础,硬件工程师职责神圣,责任重大。

华为公司十大管理要点

华为公司十大管理 要点 1

华为十大管理要点 公司所有员工是否考虑过,如果有一天,公司销售额下滑、利润下滑甚至会破产,我们怎么办?居安思危,不是危言耸听。 十年来我天天思考的都是失败,对成功视而不见,也没有什么荣誉感、自豪感,只有危机感。可能是这样才存活了十年。我们大家要一起来想,怎样才能活下去,可能才能存活得久一些。失败这一天是一定会到来,大家要准备迎接,这是我从不动摇的看法,这是历史 规律。 当前情况下,我认为我们公司从上到下,还没有真正认识到危机,那么当危机来临的时刻,我们可能是措手不及的。我们是不是已经麻木,是不是头脑里已经没有危机这根弦了,是不是已经没有自我批判能力或者已经很少了。那么,如果四面出现危机时,我们可能是真没有办法了。如果我们现在不能研究出现危机时的应对方法和措施来,我们就不可能持续活下去。 大家知道,有一家世界一流的公司,确实了不起,但去年说下来 就下来了,眨眼之间这个公司就几乎崩溃了。当然,她们有很好的基础研究,有良好的技术储备,她们还能东山再起。最多这两年衰退一下,过两年又会世界领先。而华为有什么呢?我们没有人家雄厚的 基础,如果华为再没有良好的管理,那么真正崩溃后,将来就会一无 所有,再也不能复活。

华为公司老喊狼来了,喊多了,大家有些不信了。但狼真的会来的。今年我们要广泛展开对危机的讨论,讨论华为有什么危机,你的部门有什么危机,你的科室有什么危机,你的流程的哪一点有什么危机。还能改进吗?还能提高人均效益吗?如果讨论清楚了,那我们可能就不死,就延续了我们的生命。怎样提高管理效率,我们每年都写了一些管理要点,这些要点能不能对你的工作有些改进,如果改进一点,我们就前进了。 一、均衡发展,就是抓短的一块木板 在管理改进中,一定要强调改进我们木板最短的那一块。为什么要解决短木板呢?公司从上到下都重视研发、营销,但不重视理 货系统、中央收发系统、出纳系统、订单系统……等很多系统,这些不被重视的系统就是短木板,前面干得再好,后面发不出货,还是 等于没干。因此全公司一定要建立起统一的价值评价体系,统一的考评体系,才能使人员在内部流动和平衡成为可能。比如有人说我搞研发创新很厉害,但创新的价值如何体现,创新必须经过转化变成商品,才能产生价值。我们重视技术、重视营销,这一点我并不反对,但每一个链条都是很重要的。 研发相对用(户)服(务)来说,同等级别的一个用(户)服(务)工程师可能要比研发人员综合处理能力还强一些。因此如果我们对售后服务体系不给认同,那么这体系就永远不是由优秀的人来组成的。不是由优秀的人来组织,就是高成本的组织。因为她飞过去修 3

华为内部资料:战略管理跟企业家精神

战略管理与企业家精神 高级行政管理干部培训中心

目录 第一章战略管理 1、竞争战略的概念 (1) 2、战略分析的要点——SWOT (2) 3、产业竞争结构分析 (3) 4、价值链分析 (5) 5、确认成功的关键因素 (8) 6、竞争战略的基本类型 (9) 7、资源分配原则 (12) 第二章服务战略管理 1、服务的类型 (14) 2、服务的性质 (15) 3、服务战略管理的难点和要点 (16) 4、服务利润链的运作机制 (18) 5、服务利润链的审计 (22) 第三章企业家精神与创新 1、企业家理论的演进 (24) 2、创新机会的七个主要来源 (28)

第一章战略管理 1、竞争战略的概念 竞争战略就是以最有效的方式努力提高相对于竞争对手的实力。 竞争战略的目的是如何实现竞争优势。 竞争战略的性质:对抗性、创新性、决策、承诺 孙子曰:“昔之善战者,先为不可胜,以待敌之可胜。……故善战者,立于不败之地,而不失敌之败也。是故胜兵先胜而后求战,败兵先战而后求胜。” 《孙子兵法形篇第四》 孙子曰:“凡用兵之法,全国为上,破国次之;全军为上,破军次之;……是故百战百胜,非善之善者;不战而屈人之兵,善之善者。” 《孙子兵法谋攻篇第三》 2、战略分析的要点——SWOT 优势(Strength) 劣势(Weakness) 机会(Opportunity) 威胁(Threat) 3 产业竞争结构的组成因素

3.1决定产业内部竞争激烈程度的因素产业增长率 产业集中度 产品差异 商标知名度 转产成本 3.2决定买方地位的因素 客户的购买量 价格弹性 供求关系 3.3决定供应商地位的因素 供应商的集中度或专有性 采购量的大小 供求关系 3.4进入障碍 规模经济 商标知名度 销售渠道 专利保护 政府政策 3.5替代威胁 技术进步 性能价格化 转换成本

华为笔试题

华为笔试题 ㈠ 请你分别画出OSI的七层网络结构图和TCP/IP的五层结构图。 TCP/ip协议栈分为四层:物理接口层(对应OSI物理层,数据链路层) Internet层(OSI网络层),传输层(同OSI)应用层(OSI会话层、表示层、应用层)TCP/IP的通讯协议 这部分简要介绍一下TCP/IP的内部结构,为讨论与互联网有关的安全问题打下基础。TCP/IP 协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.25、以太网以及RS-232串行接口)之上。确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。 TCP/IP协议的开发研制人员将Internet分为五个层次,以便于理解,它也称为互联网分层模型或互联网分层参考模型,如下表: 应用层(第五层) 传输层(第四层) 互联网层(第三层) 网络接口层(第二层) 物理层(第一层) 物理层:对应于网络的基本硬件,这也是Internet物理构成,即我们可以看得见的硬设备,如PC机、互连网服务器、网络设备等,必须对这些硬设备的电气特性作一个规范,使这些设备都能够互相连接并兼容使用。 网络接口层:它定义了将资料组成正确帧的规程和在网络中传输帧的规程,帧是指一串资料,它是资料在网络中传输的单位。 互联网层:本层定义了互联网中传输的“信息包”格式,以及从一个用户通过一个或多个路由器到最终目标的"信息包"转发机制。 传输层:为两个用户进程之间建立、管理和拆除可靠而又有效的端到端连接。 应用层:它定义了应用程序使用互联网的规程。 2.请你详细地解释一下IP协议的定义,在哪个层上面?主要有什么作用?TCP与UDP 呢? UDP,TCP在传输层,IP在网络层, TCP/IP是英文Transmission Control Protocol/Internet Protocol的缩写,意思是"传输控制协议/网际协议"。TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.25、以太网以及RS-232串行接口)之上。确切地说,TCP/IP 协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。TCP/IP协议并不完全符合OSI 的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,

相关文档
最新文档