“胡荼荼C”通过精心收集,向本站投稿了9篇编程基础讲解,以下是小编整理后的编程基础讲解,欢迎阅读与收藏。

篇1:VBA 编程基础
好多朋友想学习vba但相关资料不是很多,其实就是利用了vb的语法,结合office
11.3.1 了解 Visual Basic 语法
本节解释最常见的语法元素,
11.3.1.1 Activate 方法的语法
语法:object.Activate
在 Activate 方法的语法中,object 是一个所提供信息的占位符,在此例中的代码会返回一个对象。例如,下面的过程会在活动的文档中激活第二个窗口。
Sub MakeActive
Windows(2).Activate
End Sub
11.3.1.2 MsgBox 函数的语法
语法:MsgBox(prompt[, buttons] [, title] [, helpfile, context])
在 MsgBox 函数的语法中,括号内的参数是此函数的命名参数。方括号所包含的参数是选择性的(在Visual Basic 中不用键入方括号)。在 MsgBox 函数中,唯一必须提供的参数(prompt)是做为提示的文本。
在代码中可以利用位置或名称来指定函数与方法的参数。若利用位置来指定参数,则必须根据语法中的顺序,利用逗号来分隔每一个参数,例如:
MsgBox “Your answer is correct!”,0,“Answer Box”
若以名称来指定参数,则须使用参数名称或跟着冒号与等号(:=),最后再加上参数值。可以任何的顺序来指定命名参数,例如:
MsgBox Title:=“Answer Box”, Prompt:=“Your answer is correct!”
函数以及某些方法的语法会利用圆括号将参数封闭起来。这些函数和方法会返回值,所以必须用圆括号将参数封闭起来,才可以赋值给变量。如果忽略返回值或是没有传递所有的参数,则可以不用圆括号。方法若不返回值,则不用将参数用圆括号封闭起来。上述准则不管是使用命名参数或位置参数都适用。
在下面的示例中,MsgBox 函数的返回值是一个号码,它被存储在变量 myVar 中,以用来指示选择的按钮。因为需要用到返回值,所以调用时必须使用圆括号。而另一个消息框则是用来显示变量的值。
Sub Question()
myVar = MsgBox(Prompt:=“I enjoy my job.”, _
Title:=“Answer Box”, Buttons:=“4”)
MsgBox myVar
End Sub
11.3.1.3 选项语句的语法
语法:Option Compare {Binary | Text | Database}
在 Option Compare 语句的语法中,大括号和垂直线指示三项中的强制性选择(在Visual Basic 的语句中不用键入大括号)。例如,下列的语句指出在模块中,字符串的比较是根据文本的排序顺序而不区分大小写。
Option Compare Text
11.3.1.4 Dim 语句的语法
语法: Dim varname[ ( [subscripts] ) ] [As type] [, varname[([subscripts])] [As type]] . . .
在 Dim 语句的语法中,Dim 是必备的关键字。而唯一必备的元素是 varname(变量名)。例如,下列的语句创建三个变量:myVar、 nextVar 和 thirdVar。它们会自动被声明成 Variant 变量。
Dim myVar, nextVar, thirdVar
下面的示例声明了一个String 型的变量。它包含了数据类型,如此可以节省内存并且可帮助从代码中找出错误。
Dim myAnswer As String
若在一个语句中声明好几个变量,则必须包含每一个变量的数据类型。变量在声明时若少了数据类型,则会自动地声明为Variant 。
Dim x As Integer, y As Integer, z As Integer
在下列的语句中,x 与 y 都被指定成 Variant 数据类型,只有 z 被指定成 String 数据类型。
Dim x, y As Integer,Z As String
如果声明一个数组变量,则必须包含圆括号,但下标则是可选的。下列的语句中定义了一个动态数组 myArray。
Dim myArray()
11.3.2 有效地利用数据语法
表11-1 列出VBA 所支持的数据类型,以及存储空间的大小与范围。
注意:
任何数据类型的数组都需要 20 个字节的内存空间,加上每一数组维数占 4 个字节,再加上数据本身所占用的空间。数据所占用的内存空间可以用数据元数目乘上每个元素的大小加以计算。例如,以 4 个 2 字节的Integer 数据元所组成的一维数组中的数据,占 8个字节。这 8 个字节加上额外的 24 个字节,使得这个数组所需总内存空间为 32 个字节。包含一数组的 Variant 比单独的一个数组需要多 12 个字节。
注意:
使用 StrConv 函数把字符串数据从一种类型转换为另一种类型。
除非有其他的指定,否则未声明变量会被指定成 Variant 数据类型。这个数据类型可使写程序变得较容易,但它并不总是使用中最有效率的数据类型。
若有下列情形时必须考虑使用其他的数据类型:
程序非常大并且使用很多变量。
程序的执行速度必须尽可能得快。
将数据直接写到随机存储文件中。
除了 Variant 之外,支持的数据类型包括 Byte、Boolean、 Integer、Long、Single、Double、Currency、Decimal、Date、Object 以及 String。可使用 Dim 语句去声明一个指定类型的变量,例如:
Dim X As Integer
上述语句声明变量 X 是一个整型,其范围介于-32,768~32,767 之间。如果试着去设置超出此范围的数值给 X ,则会有错误发生。如果试着去指定一个分数给 X,则此分数会自动四舍五入。例如:
X = 32768 ‘ 产生错误。 X = 5.9 ‘ 设置 x = 6。
11.3.3 Visual Basic 的命名规则
当在 Visual Basic 的模块中为过程、常数、变量以及参数命名时,可以使用下列的规则:
第一个字符必须使用英文字母。
不能在名称中使用空格、句点(.)、惊叹号(!)、或 @、&、 $,# 等字符。
名称的长度不可以超过 255 个字符。
通常,使用的名称不能与 Visual Basic 本身的 Function 过程、语句以及方法的名称相同。必须退出使用与程序语言的关键字相同的名称。若所使用的内在语言函数,语句或方法与所指定的名称相冲突,则必须显示地识别它。常规会将内建函数,语句或方法的名称之前加上关联的类型库的名称。例如,如果有一个名为 Left 的变量,则只能用 VBA.Left 来调用 Left 函数。
不能在范围的相同层次中使用重复的名称。例如,不能在同一过程中声明两个命名为 age 的变量。然而,可以在同一模块中声明一个命名为 age 的私有变量和命名为 age 的过程级别的变量。
注意:
Visual Basic 不区分大小写,但它会在名称被声明的语句处保留大写。
11.3.4 声明变量、常数和数组
11.3.4.1 声明变量
通常会使用 Dim 语句来声明变量。一个声明语句可以放到过程中以创建属于过程的级别的变量。或在声明部分可将它放到模块顶部,以创建属于模块级别的变量。
下面的示例创建了变量 strName 并且指定为 String 数据类型。 Dim strName As String
如果该语句出现在过程中,则变量 strName 只可以在此过程中被使用。如果该语句出现在模块的声明部分,则变量 strName 可以被此模块中所有的过程所使用,但是不能被同一工程中不同的模块所含过程来使用。为了使变量可被工程中所有的过程所使用,则在变量前加上 Public 语句,如以下的示例:
Public strName As String
变量可以声明成下列数据类型中的一种:Boolean、Byte、 Integer、Long、Currency、Single、Double、Date、String(变长字符串)、String * length (定长字符串)、Object 或 Variant。如果未指定数据类型,则 Variant 数据类型被赋予默认。也可以使用 Type 语句来创建用户自定义类型。
可以在一个语句中声明几个变量。而为了指定数据类型,必须将每一个变量的数据类型包含进来。在下面的语句中,变量 intX、 intY、与 intZ 被声明为 Integer 类型。
Dim intX As Integer, intY As Integer, intZ As Integer
在下面的语句中,变量 intX 与 intY 被声明为 Variant 类型;只有intZ 被声明为 Integer 类型。
Dim intX, intY, intZ As Integer
在声明语句中,不一定要提供变量的数据类型。若省略了数据类型,则会将变量设成 Variant 类型。
使用 Public 语句:可以使用 Public 语句去声明公共模块级别变量。
Public strName As String
公有变量可用于工程中的任何过程。如果公有变量是声明于标准模块或是类模块中,则它也可以被任何引用到此公有变量所属工程的工程中使用。
使用 Private 语句:可以使用 Private 语句去声明私有的模块级别变量。
Private MyName As String
私有变量只可使用于同一模块中的过程。
注意:
在模块级别中使用 Dim 语句与使用 Private 语句是相同的。不过使用 Private 语句可以更容易地读取和解释代码。
使用Static 语句:当使用 Static 语句取代 Dim 语句时,所声明的变量在调用时仍保留它原先的值。
使用Option Explicit 语句:在 Visual Basic 中可以简单地通过一个赋值语句来隐含声明变量。所有隐含声明变量都为 Variant 类型,而Variant 类型变量比大多数其他类型的变量需要更多的内存资源。如果显式地声明变量为指定的数据类型,则应用程序将更有效。显式声明所有变量减少了命名冲突以及拼写错误的发生率。
如果不想使Visual Basic 生成隐含声明,可以将Option Explicit 语句放置于模块中所有的过程之前。这一个语句要求对模块中所有的变量做显式地声明。如果模块包含Option Explicit 语句,则当 Visual Basic 遇到一个先前未定义的变量或拼写错误,它会发生编译时间的错误。
可以设置 Visual Basic 程序环境中的某个选项,使得自动在所有新的模块中包含 Option Explicit 语句。
注意: 需显式地声明固定大小的数组与动态数组。
为自动化声明一个对象变量:当使用一个应用程序去控制另外一个应用程序的对象时,应该设置一个对于其他应用程序的类型库的引用。若设置一个引用,则可以根据它们最常指定的类型来声明对象变量。例如,如果是在 Microsoft Word 中,当对 Microsoft Excel 类型库做一引用设置时,可以在 Microsoft Word 中声明 Worksheet 类型的变量来表示 Microsoft Excel 中的Worksheet 对象。
如果使用其他的应用程序去控制 Microsoft Access 对象,在多数情况下,可以根据它们最常指定的类型来声明对象变量。也可以使用关键字 New 去自动生成一个对象的新实例。然而,可能要指示它是 Microsoft Access 对象。例如,当在 Microsoft Visual Basic 里面声明一个对象变量去表示 Microsoft Access form. 时,必须区别它是 Microsoft Access Form. 对象或是 Visual Basic Form. 对象。所以在声明变量的语句中必须要包含类型库的名称,如下面示例所示:
Dim frmOrders As New Access.Form
某些应用程序并不能识别特别的 Microsoft Access 对象类型。既使已经在这些应用程序中设置了一个对 Microsoft Access 类型库的引用,必须声明所有 Microsoft Access 对象变量为 Object 类型。不能使用 New 关键字去创建这个对象的新实例。下面的示例显示了不能识别 Microsoft Access 对象类型的应用程序,如何去声明一个变量用来表示 Microsoft Access Application 对象。然后应用程序创建一个 Application 对象的实例。
Dim appAccess As Object
Set appAccess = CreateObject(“Access.Application”)
11.3.4.2 声明常数
如果要声明一个常数,可以使用 Const 语句去声明,并且设置它的值;而在常数声明完之后,则不能加以更改或赋予新值。
在声明部分,可以在过程中或者在模块顶部声明常数。模块级别中的常数默认为私有的。若要声明一个公共模块级别常数,则可以在 Const 语句前加上 Public 这个关键字。也可以利用在 Const 语句前加上 Public 关键字来明确地声明一个私有的常数,使得我们可更容易地去读取并且解释代码。
下面的示例,声明了一个 Public 常数 conAge 为 Integer 类型,并且指定它的值 为34。
Public Const conAge As Integer = 34
常数可以声明成下列数据类型中的一种:Boolean、Byte、 Integer、Long、Currency、Single、Double、Date、String 或 Variant。因为已经知道常数的值,所以可以指定 Const 语句中的数据类型。关于数据类型的详细信息。
可以在一个语句中声明数个常数。为了指定数据类型,必须将每一个常数的数据类型包含进来。在下面的语句中,常数 conAge 和 conWage 被声明为 Integer 类型。
Const conAge As Integer = 34, conWage As Currency = 35000
11.3.4.3 声明数组
数组的声明方式和其他的变量是一样的,它可以使用 Dim、 Static、Private 或 Public 语句来声明。标量变量(非数组)与数组变量的不同在于通常必须指定数组的大小。若数组的大小被指定的话,则它是个固定大小数组。若程序运行时数组的大小可以被改变,则它是个动态数组,
数组是否从 0 或 1 索引是根据 Option Base 语句的设置。如果 Option Base 没有指定为1,则数组索引从0 开始。
1.声明固定大小的数组
下面这行代码声明了一个固定大小的数组,它是个 11 行乘以 11 列的Integer 数组:
Dim MyArray(10, 10) As Integer
第一个参数代表的是行;而第二个参数代表的是列。
与其他变量的声明一样,除非指定一个数据类型给数组,否则声明数组中元素的数据类型为 Variant。数组中每个数组的数字型 Variant 元素占用 16 个字节。每个字符串型 Variant 元素占用 22 个字节。为了尽可能使写的代码简洁明了,则要明确声明的数组为某一种数据类型而非 Variant。下面的这几行代码比较了几个不同数组的大小:
‘ 整型数组使用 22 个字节(11 元素* 2 字节)。
ReDim MyIntegerArray(10) As Integer
‘ 双精度数组使用 88 个字节(11 元素 * 8 字节)。
ReDim MyDoubleArray(10) As Double
‘ 变体型数组至少使用 176 字节(11 元素 * 16 字节)。
ReDim MyVariantArray(10)
‘ 整型数组使用 100 * 100 * 2 字节(20,000 字节)。
ReDim MyIntegerArray (99, 99) As Integer
‘ 双精度数组使用 100 * 100 * 8 字节(80,000 字节)。
ReDim MyDoubleArray (99, 99) As Double
‘ 变体型数组至少使用 160,000 字节(100 * 100 * 16 字节)。
ReDim MyVariantArray(99, 99)
数组变量的最大值,是以所用的操作系统有多少可用内存为基础。若使用的数组大小超过了系统中可用内存总数的话,则速度会变慢,因为必须从磁盘中读写回数据。
2.声明动态数组
若声明为动态数组,则可以在执行代码时改变数组大小。可以利用 Static、Dim、Private 或 Public 语句来声明数组,并使括号内为空,如下示例所示。
Dim sngArray() As Single
注意:
可以在过程中使用 ReDim 语句来做隐含性的数组声明。当使用 ReDim 语句时要小心点,不要拼错数组的名称。否则即使在模块中有包含 Option Explicit 语句,仍然会因此而生成第二个数组。
对于过程中的数组范围,可以使用 ReDim 语句去改变它的维数,去定义元素的数目以及每个维数的底层绑定。每当需要时,可以使用 ReDim 语句去更改动态数组。然而当做这个动作时,数组中存在的值会丢失。若要保存数组中原先的值,则可以使用 ReDim Preserve 语句来扩充数组。例如,下列的语句将 varArray 数组扩充了10 个元素,而原本数组中的当前值并没有消失掉。
ReDim Preserve varArray(UBound(varArray) + 10)
注意:
当对动态数组使用 Preserve 关键字时,只可以改变最后维数的上层绑定,而不能改变维数的数目。
11.3.5 过程及其调用
11.3.5.1 Function 过程
Function 过程是一系列由 Function 和 End Function 语句所包含起来的 Visual Basic 语句。Function 过程和 Sub 过程很类似,但函数可以返回一个值。Function 过程可经由调用者过程通过传递参数,例如常数、变量、或是表达式等来调用它。如果一个 Function 过程没有参数,它的 Function 语句必须包含一个空的圆括号。函数会在过程的一个或多个语句中指定一个值给函数名称来返回值。
在下面的示例中,Celsius 函数会根据华氏温度来计算摄氏温度。当 Main 过程调用此函数时,会有一包含参数值的变量传递给此函数。而计算的结果会返回到调用的过程,并且显示在一个消息框中。
Sub Main()
temp = Application.InputBox(Prompt:= _
“Please enter the temperature in degrees F.”,
Type:=1)
MsgBox “The temperature is ” & Celsius(temp) & “
degrees C.”
End Sub
Function Celsius(fDegrees)
Celsius = (fDegrees - 32) * 5 / 9
End Function
11.3.5.2 Sub 过程
Sub 过程是一系列由 Sub 和 End Sub 语句所包含起来的 Visual Basic 语句,它们会执行动作却不能返回一个值。Sub 过程可有参数,例如常数、变量、或是表达式等来调用它。如果一个 Sub 过程没有参数,则它的 Sub 语句必须包含一个空的圆括号。
下面 Sub 过程中,每一行都有注释来解释它的作用:
‘声明过程命名为 GetInfo
‘该 Sub 过程没有参数
Sub GetInfo()
‘声明字符串变量命名为 answer
Dim answer As String
‘指定 InputBox 函数的返回值给 answer
answer = InputBox(Prompt:=“What is your name?”)
‘条件 If...Then...Else 语句
If answer = Empty Then
‘调用 MsgBox 函数
MsgBox Prompt:=“You did not enter a name.”
Else
‘MsgBox 函数与 answer 变量连接。
MsgBox Prompt:=“Your name is ” & answer
‘结束 If...Then...Else 语句
End If
‘结束 Sub 过程
End Sub
11.3.5.3 属性过程
属性过程是一系列的 Visual Basic 语句,它允许程序员去创建并操作自定义的属性。属性过程可以用来为窗体,标准模块,以及类模块创建只读属性。可被用来在代码中代替 Public 变量,当设置属性值时上述动作应被执行。
与 Public 变量不同,在对象浏览器中属性过程会有一些帮助字符串指定给自定义的属性。
当创建一个属性过程时,它会变成此过程所包含的模块的一个属性。Visual Basic 提供下列三种类型的 Property 过程:
Property Let 用来设置属性值的过程。
Property Get 用来返回属性值的过程。
Property Set 用来设置对对象引用的过程。
声明属性过程的语法如下所示:
[Public | Private] [Static] Property {Get | Let | Set}
propertyname_ [(arguments)] [As type]
statements
End Property
属性过程通常是成对使用的:Property Let 与 Property Get 一组,而 Property Set 与 Property Get 一组。单独声明一个 Property Get 过程就像声明只读属性。三个 Property 过程一起使用时,只有对 Variant 变量有用,因为只有 Variant 才能包含一个对象或其他数据类型的信息。Property Set 本意是使用在对象上;而 Property Let 则不是。
在 Property 过程声明中所需要的参数如下:
Property Get Property Get propname(1, ..., n) As type
Property Let Property Let propname(1, ..., n, n+1)
Property Set Property Set propname(1, ..., n, n+1)
在具有相同名称属性过程中,从第一个到最后一个参数(1, ..., n)都必须共享相同的名称与数据类型。
Property Get 过程声明时所需的参数比相关的 Property Let 以及 Property Set 声明少一个。Property Get 过程的数据类型必须与相关的 Property Let 以及 Property Set 声明中的最后 (n+1)个参数的类型相同。例如,如果声明下列的 Property Let 过程,则 Property Get 声明所使用参数的名称与数据类型必须同 Property Let 过程中所用的一样。
Property Let Names(intX As Integer, intY As Integer,
varZ As Variant)
‘ 执行语句.
End Property
Property Get Names(intX As Integer, intY As Integer)
As Variant
‘ 执行语句.
End Property
在 Property Set 声明中,最后一个参数的数据类型必须是对象类型或是 Variant。
11.3.5.4 调用 Sub 以及 Function 过程
从其他过程调用一个 Sub 过程时,必须键入过程名称以及任何需要的参数值。而 Call 语句并不需要,不过若使用它,则任何参数必须以括号括起来。
可以使用 Sub 过程去组织其他的过程,因此可以较容易地了解并调试它们。在下面的示例中,Sub 过程 Main 传递参数值 56 去调用 Sub 过程 MultiBeep。运行 MultiBeep 后,控件返回 Main,然后 Main 调用 Sub 过程 Message。Message 显示一个信息框;当按“确定”键时,控件会返回 Main,接着 Main 退出执行。
Sub Main()
MultiBeep 56
Message
End Sub
Sub MultiBeep(numbeeps)
For counter = 1 To numbeeps
Beep
Next counter
End Sub
Sub Message()
MsgBox “Time to take a break!”
End Sub
1.调用具有多个参数的 Sub 过程
下面的示例展示了调用具有多个参数的 Sub 过程的两种不同方法。当第二次调用 HouseCalc 时,因为使用 Call 语句所以需要利用括号将参数括起来。
Sub Main()
HouseCalc 99800, 43100
Call HouseCalc(380950, 49500)
End Sub
Sub HouseCalc(price As Single, wage As Single)
If 2.5 * wage <= 0.8 * price Then
MsgBox “You cannot afford this house.”
Else
MsgBox “This house is affordable.”
End If
End Sub
在调用 Function 过程时使用括号。
为了使用函数的返回值,必须指定函数给变量,并且用括号将参数封闭起来;如下示例所示:
Answer3 = MsgBox(“Are you happy with your salary?”, 4, “Question 3”)
如果不在意函数的返回值,可以用调用 Sub 过程的方式来调用函数。如下面示例所示,可以省略括号,列出参数并且不要将函数指定给变量:
MsgBox “Task Completed!”, 0, “Task Box”
注意在上述例子中若包含括号,则语句会导致一个语法错误。
2.传递命名参数
Sub 或 Function 过程中的语句可以利用命名参数来传递值给被调用的过程。参数有两种传递方式:按值来传递和按地址来传递。按值传递只是传递参数的一个副本,在函数内建立一个同参数类型及内容一样的变量,在过程体内部参数对参数所作的改变不会影响到实际参数;按地址传递则不然,它传递的是实际参数的地址,过程中所有对参数的改变都将影响到实际参数”。命名参数的组成是由参数名称紧接着冒号(:=)以及等号,然后指定一个值给参数。
下面的示例使用命名参数来调用不具返回值的 MsgBox 函数。
MsgBox Title:=“Task Box”, Prompt:=“Task Completed!”
下面的示例使用命名参数调用 MsgBox 函数。将返回值指定给变量 answer3。
answer3 = MsgBox(Title:=“Question 3”, _
Prompt:=“Are you happy with your salary?”, Buttons:=4)
11.3.5.5 调用属性过程
表11-2 列出了调用属性过程的语法。
当调用一个 Property Let 或 Property Set 过程时,总是会有一个参数出现在等号(=)的右边。
当用多个参数声明一个 Property Let 或 Property Set 过程时, Visual Basic 传递调用的右边参数,给 Property Let 或 PropertySet 声明中的最后一个参数。例如,图11-18 显示了 Property 过程调用中的参数与 Property Let 声明中的参数的关系:
实际上,将属性过程与多个参数合用只有在创建属性的数组时才会使用。
篇2:电子技术基础知讲解
第一讲 半导体器件
1、杂质半导体与PN结
本征半导体中掺入不同的杂质就形成N型半导体和P型半导体,控制掺入杂质的多少就可以有效地改变其导电性能,从而实现导电性能的可控性。半导体中有两种载流子:自由电子与空穴。载流子有两种有序运动:因浓度差异而产生的运动称为扩散运动,因电位差而产生的运动称为漂移运动。将两种杂质半导体制作在同一块硅片(或锗片)上,在它们的交界面处,上述两种运动达到动态平衡,从而形成PN结。正确理解PN结单向导电性、反向击穿特性、温度特性和电容效应,有利于了解半导体二极管、晶体管和场效应管等电子器件的特性和参数。
2、半导体二极管
一个PN结经封装并引出电极后就构成二极管。二极管加正向电压时,产生扩散电流,电流与电压成指数关系;加反向电压时,产生漂移电流,其数值很小,体现出单向导电性。IF、IR、UR和fM是二极管的主要参数。
特殊二极管与普通二极管一样,具有单向导电性。利用PN结击穿时的特性可制成稳压二极管,利用发光材料可制成发光二极管,利用PN结的光敏性可制成光电二极管。
3、晶体管
晶体管具有电流放大作用。当发射结正向偏置而集电结反向偏置时,从发射区注入到基区的非平衡少子中仅有很少部分与基区的多子复合,形成基极电流,而大部分在集电结外电场作用下形成漂移电流IC,体现出IB(或IE、UBE)对IC的控制作用。此时,可将IC看成为电流IB控制的电流源。晶体管的输入特性和输出特性表明各极之间电流与电压的关系,β、α、 ICBO(ICEO)、ICM、U(BR)CEO、PCM和fT是它的主要参数。晶体管有截止、放大、饱和三个工作区域,学习时应特别注意使管子工作在不同工作区的外部条件。
4、场效应管
场效应管分为结型和绝缘栅型两种类型,每种类型均分为两种不同的沟道:N沟道和P沟道,而MOS管又分为增强型和耗尽型两种形式。
场效应管工作在恒流区时,利用栅一源之间外加电压所产生的电场来改变导电沟道的宽窄,从而控制多子漂移运动所产生的漏极电流ID。此时,可将ID看成电压UGS控制的电流源,转移特性曲线描述了这种控制关系。输出特性曲线描述UGS、UDS和ID三者之间的关系。gm、UGS(th)或UGS(off)、IDSS、IDM、PDM和极间电容是它的主要参数。和晶体管相类似,场效应管有夹断区(即截止区)、恒流区(即线性区)和可变电阻区三个工作区域。
尽管各种半导体器件的工作原理不尽相同,但在外特性上却有不少相同之处。例如,晶体管的输入特性与二极管的伏安特性相似;二极管的反向特性(特别是光电二极管在第三象限的反向特性)与晶体管的输出特性相似,而场效应管与晶体管的输出特性也相似。
第二讲 放大电路简介
1、放大的概念
在电子电路中,放大的对象是变化量,常用的测试信号是正弦波。放大的本质是在输入信号的作用下,通过有源元件(晶体管或场效应管)对直流电源的能量进行控制和转换,使负载从电源中获得的输出信号能量,比信号源向放大电路提供的能量大得多,因此放大的特征是功率放大。放大的前提是不失真,换言之,如果电路输出波形产生失真便谈不上放大。
2、放大电路的组成原则
①放大电路的核心元件是有源元件,即晶体管或场效应管;
②正确的直流电源电压数值、极性与其它电路参数应保证晶体管工作在放大区、场效应管工作在恒流区,即建立起合适的静态工作点,保证电路不失真;
③输入信号应能够有效地作用于有源元件的输入回路,即晶体管的b-e回路,场效应管的g-s回路;输出信号能够作用于负载之上。
3、放大电路的主要性能指标、输入电阻Ri、输出电阻Ro、最大不失输出电压 放大倍数AUom、下限、上限截止频率fL和fH、通频带fW、最大输出功率Pom、效率。
4、放大电路的分析方法
1)静态分析就是求解静态工作点Q,在输入信号为零时,晶体管和场效应管各电极间的电流与电压就是Q点。可用估算法或图解法求解。
2)动态分析就是求解各动态参数和分析输出波形。通常,利 A用h参数等效电路计算小信号作用时的u、Ri和Ro。利用图解法
分析Uom和失真情况。放大电路的分析应遵循“先静态、后动态”的原则,Q点不但影响电路输出是否失真,而且与动态参数密切相关。
5、晶体管和场效应管基本放大电路
1)晶体管基本放大电路有共射、共集、共基三种接法。共射放大电路即有电流放大作用又有电压放大作用,输入电阻居三种电路之中,输出电阻较大,适用于一般放大。共集放大电路只放大电流不放大电压,因输入电阻高而常做为多级放大电路的输入级,因输出电阻低而常做为多级放大电路的输出级,因电压放大倍数接近1而用于信号的跟随。共基电路只放大电压不放大电流,输入电阻小,高频特性好,适用于宽频带放大电路。
2)场效应管放大电路的共源接法、共漏接法与晶体管放大电路的共射、共集接法相对应,但比晶体管电路输入电阻高、噪声系数低、电压放大倍数小,适用于做电压放大电路的输入级。
6、多级放大电路的耦合方式
直接耦合放大电路存在温度漂移问题,但因其低频特性好,能够放大变化缓慢的信号,便于集成化,而得到越来越广泛的应用。
阻容耦合放大电路利用耦合电容隔离直流,较好地解决了温漂问题,但其低频特性差,不便于集成化,因此仅在分立元件电路情况下采用。
7、多级放大电路的动态参数
多级放大电路的电压放大倍数等于组成它的各级电路电压放大倍数之积。其输入电阻是第一级的输入电阻,输出电阻是末级的输出电阻。在求解某一级的电压放大倍数时,应将后级输入电阻做为负载。
多级放大电路输出波形失真时,应首先判断从哪一级开始产生失真,然后再判断失真的性质。在前级所有电路均无失真的情况下,末级的最大不失真输出电压就是整个电路的最大不失真输出电压。
第三讲 放大电路的反馈
1.反馈的概念与类型
在电子电路中,将输出量(输出电压或输出电流)的一部分或全部通过一定的电路形式作用到输入回路,用来影响其输入量(放大电路的输入电压或输入电流)的措施称为反馈。若反馈的结果使输出量的变化(或净输入量)减小,则称之为负反馈;反之,则称之为正反馈。若反馈存在于直流通路,则称为直流反馈;若反馈存在于交流通路,则称为交流反馈。本章重点研究交流负反馈。
交流负反馈有四种组态:电压串联负反馈,电压并联负反馈,电流串联负反馈,电流并联负反馈。若反馈量取-自输出电压,则称之为电压反馈;若反馈量取自输出电流,则称之为电流反馈。
2.反馈类型的判断
在分析反馈放大电路时,“有无反馈”决定于输出回路和输入回路是否存在反馈通路;“直流反馈或交流反馈”决定于反馈通路存在于直流通路还是交流通路”;“正负反馈”的判断可采用瞬时极性法,反馈的结果使净输入量减小的为负反馈,使净输入量增大的为正反馈。为判断交流负反馈放大电路中引入的是电压反馈还是电流反馈,可令输出电压等于零,若反馈量随之为零,则为电压反馈,若反馈量依然存在,则为电流反馈。
AAfF,若1A3.负反馈放大电路放大倍数的一般表达式为1/FXF1AX1Afif。引,即在深度负反馈条件下,即
1/FIR'LAUfoO入电流负反馈时,。利用可以求出四种反馈AAuf组态放大电路的电压放大倍数和uSf。
4.引入交流负反馈后可以改善放大电路多方面的性能,可以提高放大倍数的稳定性、改变输入电阻和输出电阻、展宽频带、减小非线性失真等。在实用电路中,应根据需求引入合适的反馈。
第四讲 集成电路概述、电流源电路和有源负载放大
电路
1.集成电路中的元器件特点
集成电路中的元器件是在相同的工艺条件下做出的,邻近的器
件具有良好的对称性,而且受环境温度和干扰的影响后的变化也相同,因而特别有利于实现需要对称结构的电路。
集成工艺制造的电阻、电容数值范围有一定的限制。
集成工艺制造晶体管、场效应管最容易,众多数量的晶体管通过一次综合工艺完成。集成晶体管有纵向NPN型管、横向PNP型管和场效应管,前者在集成元器件中占用硅片面积最小、性能好、β值高,用的也最多;而横向PNP管是利用制造纵向NPN管的工艺或稍加改造制成,其中PNP管β值低,但反耐压高,常和NPN型管配合使用。
2.集成电路结构形式上的特点
(1)利用元器件参数的对称性来提高电路稳定性
(2)利用有源器件代替无源元件
(3)采用直接耦合方式
(4)采用较复杂的电路结构
(5)适当利用外接分立元件
[电子技术基础知讲解]
篇3:成语基础知识点讲解
成语基础知识点讲解
小心翼翼:原指恭敬谨慎。后形容十分谨慎,一点也不疏忽。(词义)
忍俊不禁:忍不住笑。(注意病句似的重复)
明察秋毫:原形容人目光敏锐,任何细小事物都能看得很清楚。后多形容人能洞察事理。(区别本义和引申义)
浪子回头:不务正业的人改恶从善。(注意适用对象) 绝处逢生:形容在最危险的`时候得到生路。(注意程度)
繁弦急管:形容各种乐器同时演奏的热闹情景。(注意适用范围,指乐器)
具体而微:指事物的各个组成部分大体都有了,不过形状和规模比较小些。(词义)
玲珑剔透:形容器物精致通明,结构细巧。也比喻人精明灵活。(注意适用对象)
心旷神怡:心境开阔,精神愉快。 举世无双:全世界没有第二个。(注意确切词义)
问心无愧:扪心自问,毫无愧色。
擎天撼地:形容坚强、高大,有力量。(注意程度)
肃然起敬:形容产生严肃敬仰的感情。(形容人)

篇4:零基础怎么学习编程才好
零基础怎么学习编程的方法
1、良好的编程习惯
每个人编程都会有不同的习惯和特点,不能强求一致。但是一些好的习惯还是应该为大多数人所遵循。
一,变量命名,功能块命名,定时器命名,最好咨询一定的原则,可读性好;
二,熟悉软件的基本命令的使用;
三,编写公共的程序块,比如阀门,电机的公用块等;
四,合理分配主程序、子程序和定时中断程序等;
五,合理分配数据块,定时器,计数器,存储器变量等,注意变量位置不能重叠。
2、软件内部机理
每个软件都各有不同,但是基本的东西应该都包括的:
* 了解指令的累加器,状态字等内容。
* 指令的组成以及各部分的含义,无论是高级语言的if then else, 还是PLC的A AN JNB,指令的组成部分以及表示的含义需要搞清楚;
* 了解几种寻址方式。单片机非常讲究这个,对于PLC来说,多了解对于复杂的编程有帮助。
* 了解数据格式,注意高低位分布,这个太重要了,尤其是和第三方通讯的时候。
* 了解几个常用的寄存器和存储区域。比如DB,M,I,Q等
学好编程的注意事项
1. 课程价值源于你的能动性
开智学堂提供了自由探索的编程空间和强有力的课程指导,教育方式有别于传统教育,不会一个点一个点的掰开学员脑子灌输,只会在必要的部分进行引导和疏通,所以,开智学编程,你只管肆意探索和学习。
在这种情况下,你的主观能动性就会在整个课程中发挥最大的作用,你的目标不是超越所有人成为第一名,而是在课程结束之后,超越了自己多少。能够提升多少决于对课程资源的利用程度,包括如何更好的利用 GitHub 和 GitBook 记录学习过程,如何找到同城小伙伴一起学习等等。
2. 输出是更残酷的输入
网上编程学习资料成语特别多,很多问题也都有示例代码。以《笨办法学 Python》为例,几乎每个习题后面都有解答。很多人对着解答敲一遍,发现结果和教程的一致,就感觉自己已经掌握了。但是这里有一个误区,对着代码敲一遍并得到正确的结果并不表示你就掌握了。
你只是把别人的输出用自己的手敲了一遍而已,并没有自己的输出,这是价值低的输出,价值高的输出是加分习题以及你做加分习题过程中的思考。高价值输出就必须进行更为残酷的输入。
GitHub 和 GitBook 提供一个更好的输出平台,不用担心自己的输出质量如何,关键是要在课程的全程持续的输出。 甚至你也可以跳出 GitHub 和 GitBook 的文本输出,试着在视频网站开一个频道,录一个视频教程,去教其他同学。
3. 和其他同学的沟通很重要
在学习编程的过程中,可能你会感觉孤独且找不到方向,但孤独很可能也是个错觉。不妨多看看其他小伙伴的 GitBook,多与其他同学线上沟通,多参加线下活动。激发思维碰撞之下,你会发现你遇到的问题也同样是其他人遇到的问题,其实你并不孤独。
篇5:PS智能对象基础讲解
针对PS智能对象的有用的小技巧,不知道的同学可要好好学习一下咯~
在我看来,智能对象是PS新增功能里最有用的项目之一.它可以让我们在网页设计和图像处理中节省很多的时间,比如需要有大量重复的效果时.如果你对智能
对象的工作原理有一个很好的认识,它甚至可以作为模板批量应用一些图片特效.
什么是智能对象?智能对象是包含栅格或矢量图像(如 PS或 AI 文件)中的图像数据的图层,智能对象将保留图像的源内容及其所有原始特性,从而
让您能够对图层执行非破坏性编辑。(摘自adobe的自述文档)
下面这幅图像表现的是无损处理和普通处理的区别.
在普通模式下(左图),栅格化的图像或者位图在做变形处理的时候会变得模糊(这个结果随着变形次数的增多会更加明显)
如果将图层事先转变成智能对象的话,无论进行任何变形处理,图像始终和原始效果一样,没有一点模糊(右图).所有像素信息在变形的时候都会被保护起来.
FEVTE编注:更多PS教程讨论交流和PS作品请到论坛PS交流区,地址:bbs.fevte.com/forum-51-1.html
通过保护原始像素,任何缩小的处理都会表现的非常好,但是放大处理仍然会变的模糊,毕竟需要通过计算添加一些原本没有的信息.(当然智能对象的表现会远高于普通
图层的处理),所以我们最好在一开始就选择像素很高的源文件来处理,避免放大操作.
如何建立智能对象?
有以下几个方法来实现:
1:文件-打开为智能对象(通过这种方法使得文件在进入 PS的时候就是一个智能图层);
2:从Illstrator中复制文件内容过来;
3:在PS中选择一个或多个图层,在快捷菜单中选择将其转换为智能对象(如下图).
智能对象的用途
当然,智能对象有各种各样创意的用法.下面我列举的只是最平常的一些.
一旦你把一个或者一组图层转换为智能对象,将其复制几份,然后对其中任意一份进行处理,其他几个都会发生相同的变化.下图就是该方法的一个例子.我们经常需要调整
某一系列零件(比如网页按钮)的外观,使其中整副图像中的效果更好,所以这种方法在做设计稿时十分有用.我们只需要改变其中一个智能对象,就可以控制所有副本在全局
中的变化.
这里需要注意的一个重点是,双击一个智能对象图层的时候会打开一个.psb的新文档窗口,智能对象图层包含的内容都在里面.当处理完得到想要的效果后,请记得一定要保
存这个.psb文件 (ctrl+s),这样在.psd文档里相应的对象及副本才会产生改变.当然每个智能对象.psb文件还可以单独存储起来,以便于在以后的设计中重复使用.
下面是在制作网页时摘要部分用智能对象处理的一个例子.通常包括一个缩略图,标题,摘要以及read more的按钮.我们以前都是把它们编到一组,然后复制几遍.这样做不仅
让PS在面对大量图层时变的运行缓慢,更麻烦的是当我们要对其中一项进行更改,比如标题的字体样式,我们不得不对每一个副本进行更改.
所以我们最好的方法是将整个摘要部分的组转化为一个智能对象.
这仅仅是一个简单的摘要部分,如果是更为复杂的内容,使用智能对象将显得极为方便.这里我们只使用了3个智能对象(其中两个是副本).图层面板显得非常清爽.
智能对象作为图片处理的模板使用.
使用恰当的话,这可以应用于大部分的PS处理工作.通过下面这个例子大家应该可以对这种方式有更好的理解.
我们从这张图片开始.
右击图层选择将其转换为智能对象.这样在做一些图像调整效果和滤镜的时候不会影响到原始图片.
接着我们为其添加一个色彩平衡的调整图层,并调整一些参数.
你可以根据自己的方法来添加其他的调整图层.这里我又加了一个色阶调整和色相饱和度调整图层.
同样的,我们还可以在智能对象上做一个选区,然后应用一个高斯模糊的滤镜.大家也可以自己发挥.
再做完所有效果后, 你会得到一系列的图层,大概和我这里差不多.几个调整图层在上面,然后滤镜效果在智能图层的下面.
接下来到了最有趣的阶段,你可以十分方便的将相同的效果应用到另外一张图片上.你需要做的仅仅是右击智能图层,然后在菜单中选择“替换内容”,接着在弹出的窗口
中选择一张新的图片.
对,这就搞定了!智能对象绝对是一个值得使用的功能.希望以上这些内容能够对大家将来的设计工作有所帮助.一起加油~!
FEVTE编注:更多PS教程讨论交流和PS作品请到论坛PS交流区,地址:bbs.fevte.com/forum-51-1.html
篇6:托福基础语法知识讲解
语法知识也是托福备考的基本内容,语法知识贯穿于听说读写各个考试科目中。今天我们重点来讲解的是“被动时态”,下面就跟随新东方在线托福网一起来看看具体的内容吧!
先说说被动语态的结构,其基本结构为:be+动词的过去分词。其与主动语态在形式上的特征是选择使用哪一种语态的必备常识,也是解题的一种手段。
被动语态区别于主动语态的是谓语动词必须是及物动词且之后绝大多数不能够再接宾语,只有极少数可以接双宾语的动词,像consider, give, call, name等就可以,比如像:She was considered a genius in painting.
小编提醒:在托福考试的改错题中,如果在被动句里面,动词(除了上面提到的接双宾语的动词)的被动式后面出现宾语,那么在这里绝对是有错误的,可将其改为主动句,但是同样的,在主动句里面,如果及物动词后面没有宾语,此处肯定也是错误的,可以将其改为被动句。
其实大家可以将by视为被动语态的标志词,在by之后的名词短语是句子中动作的施动者,因此在题目中如果见到by+名词的结构的时候,最优先考虑的就是被动式,比如像:The book was written by Mark Twain.
小编提醒:在by的后面如果接的是动名词,那么其表示为方式、手段就不能将其视为被动式的标志了,并且此时的谓语应该用主动式,如:He passed the exam by cheating.而对于know来讲,一般都是用be known to,而不用be know by。有点迷糊?没事,我们照例来例题解析:
例:The seating of musicians in an orchestra is arranged --- to produce The desired blend of contributor from The various himself to sections.
(A) the conductor of
(B) from the conductor
(C) the conductor and
(D) by the conductor
解析:在题目中,如果不要空白处的话,句子也是很完整的,我们可以清楚的看到空格后的不定式短语表目的,那么可能填入的是arrange的施动者,自然此处应该用by来引导,A选项中of不能接不定式,C选项不能在被动式后面接宾语,所以选D。
大家都知道被动语态由助动词be加上过去分词构成,因此它也会有不同的时态,其时态主要通过助动词be来表现,在其中,对过去进行时的表示方法大家要留意啊。比如像:The potatoes are being peeled in The machine.当然还有其他的时态,像:
The table has just been cleaned.(现在完成时)
His passport had been changed without His notice.(过去完成时)
The press conference will be held in three weeks.(一般将来时)
这个我们方便大家理解,就直接上例题解析:
例:Experiment in the photography of moving objects --in both the United States and Europe well before 1900.
(A) have had been conducting
(B) were conducting
(C) had been conducted
(D) being conducted
解析:在这个句子中缺少谓语,conduct是及物动词,因此后面如果没有宾语的话,基于此,A和B首先接被排除了,D的分词是不能单独作谓语的,所以选C。
托福语法实例讲解:不定代词
一、比较both 和All
Both,either,neither都是在谈到两个人或者东西的时候用到
Both of them are right. (他们两个人都对)
You can take either book.(两本书你可以任意挑一本)
Neither of them is going to get haircut. (他们俩谁也不愿意理发)
All of the books are worth to read. (三本书以上)
None of them is going to get haircut. (them指三个人以上)
I like any of them. (them指三个人以上)
二、None 和no
None和no都用于否定的意思。但是None是“没有一个人或者没有一个东西”,在句子中可以用作主语、宾语、同位语等。而No是“没有”的意思,只能够当作形容词用,不能够作代词用。
None of them knew how to do it. (不能够说no of them)
No women are allowed to come in.
三、another,the other,others,the others
1.在涉及到两个人或者东西的时候,任意取一个用one,另外那个用the other(表示特指)
I have two computers; one is IBM,the other is Dell.
2.涉及到三个以上时,任意取一个用one,泛指另外一个用another
Three people went to the meeting. One was a software programmer,another was a network expert, and the third was a college student.
3.涉及到三个以上时,任意取一个用one,表示特指其他的那些用the others或者用
the other+名词
Two of them go to Canada,the others go to America.
(他们中两个人去了加拿大,其他人去了美国)
Two of the students go to Canada,the other students go to America
篇7:OraclePL/SQL编程基础实例2
if 循环 控制语句
if--then endif
if----then ----else endif
if-----then --elsif then ----else endif
--编写一个过程,可以 输入一个雇员名,如果该雇员的工资低于就给他增加10%
create or replace procedure sp_pro6(spName varchar2) is
v_sal emp.sal %type;
begin
select sal into v_sal from emp where ename =spName;
--判断
if v_sal<2000 then
update emp set sal=sal*1.1 where ename =spName;
end if;
end;
--======####案例s33 编写一个过程,可以 输入一个雇员名,如果该雇员的补助不是0就在原基础上增加100,如果是0就加200
create or replace procedure sp_pro7(spName varchar2) is
v_comm emp.comm %type;
begin
select comm into v_comm from emp where ename =spName;
--判断
if v_comm0 then
update emp set comm=comm+100 where ename =spName;
else
update emp set comm=comm+200 where ename =spName;
end if;
end;
----========循环 loop end loop
-----案例 编写一个过程 可输入用户名 并添加10个用户到users表中 用户编号从1来时增加
--建个表
create table users1(uid1 number,uname varchar2(40));
create or replace procedure sp_pro8(spName varchar2) is
--定义变量
v_num number :=1;
begin
loop
insert into users1 values(v_num,spName);
--判断是否退出循环
exit when v_num =10;
--自增
v_num:=v_num+1;
end loop;
end;
----------------===while ...loop end loop
----===案例 从11 开始 添加10个用户
create or replace procedure sp_pro8(spName varchar2) is
--定义变量
v_num number :=11;
begin
while v_num<=20
loop
--执行
insert into users1 values(v_num,spName);
--自增
v_num:=v_num+1;
end loop;
end;
---------------------for
begin for i in reverse 1.. 10 loop
insert into users1 values(v_num,spName);
end loop;
end;
-----------------顺序控制语句 goto null
goto label
<
-----=-----------返回结果集的过程----=======
---1.----创建 一个 包 在该包中 定义一个 类型 test_cursor 是个游标
Create or replace package testpackage as
type test_cursor is ref cursor;
end testpackage;
-----2.创建过程
create or replace procedure sp_pro9 (spNO in number,p_cursor out testpackage.test_cursor)
is
begin
open p_cursor for select * from emp where deptno=spNO;
end;
-----3.如何在java中调用
---1.创建 Callablestatement cs =ct.prepareCall([call sp_pro9(?,?)]);
---- cs.setInt(1,10);
----cs.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);
--执行--cs.execute;
--得到结果集
/*ResultSet rs=(ResultSet)cs.getObject(2);
while(rs.next()){
....
}*/
---------------------例外处理---------
case_not_found
data_not_found
cursor_already_open
dup_val_on_index 唯一索引重复
invaild_cursor 在不合法的游标上执行操作 比如 从没有打开的游标取值 或关闭没有打开的游标
invalid_number
too_many_rows select into 的时候 返回超过一行
zero_divide 2/0
value_error 变量长度不足以容纳实际长度
-----自定义例外
create or replace procedure ex_test(spNO number)
is
--定义一个例外
myex exception;
begin
update emp set sal=sal+1000 where empno=spNO;
--sql%notfound 表示没有update
--raise myex 触发myex
if sql%notfound then
raise myex;
end if;
exception
when myex then
dbms_output.put_line('没有更新任何用户');
end;
-----------------------------视图---------------
--视图不能添加索引
create view myview as select * from emp where sal<1000;
select * from myview;
篇8:BashShell脚本编程基础特性知识
Bash Shell的基础特性:
命令历史:
history:shell内建命令
环境变量HISTFILE定义用户退出命令历史列表的存储位置
#echo $HISTFILE/root/.bash_history# echo $HISTFILESIZE HISTFILE指向的文件持久留存的历史命令条目# echo $HISTSIZE 当前bash进程所留存的历史命令条目数# history -d 删除历史列表中的第 条命令# history -c 清空历史命令# history 显示最近的 条命令# history -a 追加当前bash进程的新历史命令至命令历史文件中echo $HISTFILESIZEhistoryhistory -dhistoryhistory# ! 调用历史列表中的命令echo$HISTFILESIZE# !! 再次执行上一条命令echo$HISTFILESIZE# !lsb 快速调用历史命令中执行的命令lsb_releaseLSBVersion: :base- 4.0 -amd64:base- 4.0 -noarch:core- 4.0 -amd64:core- 4.0 -noarch:graphics- 4.0 -amd64:graphics- 4.0 -noarch:printing- 4.0 -amd64:printing- 4.0 -noarch
# ls/etc/passwd/etc/passwd# cat 这里按esc键,然后按.就会调用/etc/passwd#!$/etc/passwd-bash:/etc/passwd: Permission denied
控制命令历史记录的方式:
环境变量:HISTCONTROL# echo $HISTCONTROL 忽略重复的命令(连续且相同)ignoredupsignorespace 忽略以空格开头的命令#export HISTCONTROL=ignorespace#echo $HISTCONTROLignoredupsignoreboth:上面两个功能同时生效使用方法:exportHISTCONTROL=参数撤销HISTCONTROL的控制:unsetHISTCONTROL
命令补全:
bash可以根据内建命令或外部命令的查找方式查找以用户指定的字符串开头的命令并直接予以补充完整的机制,
给出的打头的串已经可以唯一标识某命令,直接补全
不能唯一标识单个命令,再次键入TAB键就可以列出所有相关命令。
在PATH环境变量所指定的路径下找可执行文件名进行补全
路径补全:TAB键
把用户给出的字符串开头的做路径进行文件名称补全的机制
在指定路径下进行补全操作
命令行展开
~:展开为用户的家目录
{}:可承载一个以逗号分隔的列表,并将其展开为多个路径
/tmp/{a,b}
/tmp/a,/tmp/b
/tmp/{a,b}/hello:
/tmp/a/hello
/tmp/a/hello
练习:如何创建/tmp/x/y1, /tmp/x/y2, /tmp/x/y1/a,/tmp/x/y1/b, /tmp/x/y2/a, /tmp/x/y2/b
# mkdir -pv /tmp/x/{y1,y2}/{a,b}/mkdir:created directory `/tmp/x'mkdir:created directory `/tmp/x/y1'mkdir:created directory `/tmp/x/y1/a/'mkdir:created directory `/tmp/x/y1/b/'mkdir:created directory `/tmp/x/y2'mkdir:created directory `/tmp/x/y2/a/'mkdir:created directory `/tmp/x/y2/b/'
练习:如何创建a_d, a_c, b_d, b_c四个目录?
#mkdir -pv /tmp/{a,b}_{c,d}/mkdir:created directory `/tmp/a_c/'mkdir:created directory `/tmp/a_d/'mkdir:created directory `/tmp/b_c/'mkdir:created directory `/tmp/b_d/'
#tree /path/to/somedir-L #:显示多少级内容
练习:创建
# tree /tmp/mylinux//tmp/mylinux/├──bin├──etc│ └── sysconfig│ └── etwork-scripts├──sbin├──usr│ ├── bin│ ├── lib│ ├── lib64│ ├── local│ │ ├── bin│ │ ├── lib│ │ ├── lib64│ │ └── sbin│ ├── sbin│ └── share└── var├── lib├── log└── run20directories, files
# mkdir -pv /tmp/mylinux/{bin,sbin,etc/sysconfig/etwork-scripts,usr/{bin,sbin,local/{bin,sbin,lib,lib64},share,lib,lib64}, var /{log,run,lib}}mkdir:created directory `/tmp/mylinux'mkdir:created directory `/tmp/mylinux/bin'mkdir:created directory `/tmp/mylinux/sbin'mkdir:created directory `/tmp/mylinux/etc'mkdir:created directory `/tmp/mylinux/etc/sysconfig'mkdir:created directory `/tmp/mylinux/etc/sysconfig/etwork-scripts'mkdir:created directory `/tmp/mylinux/usr'mkdir:created directory `/tmp/mylinux/usr/bin'mkdir:created directory `/tmp/mylinux/usr/sbin'mkdir:created directory `/tmp/mylinux/usr/local'mkdir:created directory `/tmp/mylinux/usr/local/bin'mkdir:created directory `/tmp/mylinux/usr/local/sbin'mkdir:created directory `/tmp/mylinux/usr/local/lib'mkdir:created directory `/tmp/mylinux/usr/local/lib64'mkdir:created directory `/tmp/mylinux/usr/share'mkdir:created directory `/tmp/mylinux/usr/lib'mkdir:created directory `/tmp/mylinux/usr/lib64'mkdir:created directory `/tmp/mylinux/ var 'mkdir:created directory `/tmp/mylinux/ var /log'mkdir:created directory `/tmp/mylinux/ var /run'mkdir:created directory `/tmp/mylinux/ var /lib'
创建一个月日年小时分钟秒的文件名
# mkdir -pv $(date “+%Y-%m-%d-%H-%M-%S” )mkdir:created directory ` - - - - - '[root@localhosttmp]# ls- - - - -
命令执行结果
每个命令执行完成后隶属于两种状态:
成功 0
失败 1-127
bash通过特殊变量$?保存了最近执行完成的这条命令的状态
echo $?
# echo $?
0
程序自身返回的数据
程序执行完成后的状态结果
#rpm -rf /tmp/mylinux
rpm:arguments to --root (-r) must begin with a /
# echo $?
1
命令别名
#alias
# aliasaliascp= 'cp -i'aliasl.= 'ls -d .* --color=auto'aliasll= 'ls -l --color=auto'aliasls= 'ls --color=auto'aliasmv= 'mv -i'aliasrm= 'rm -i'aliaswhich= 'alias | /usr/bin/which --tty-only --read-alias --show-dot --show-ti
使用原始命令:command
注意:在命令行中定义的别名,只对当前shell进程有效
持续有效需要编辑配置文件:
仅对当前用户有效:~/.bashrc
对全局用户有效:/etc/profile
注:直接编辑配置文件不会对当前shell进程有效
取消别名:unaliasNAME
globbing通配
文件名通配:元字符
*:匹配任意长度的任意字符
Pa*,*pa*,*pa,p*a,*p*a(文件名以a结尾且中间包含p的)
?:匹配任意单个字符
#ls -d /etc/p??
[]:匹配指定集合内的任意单个字符
[0-9]
[a-z]
[A-Z]
[0-9a-zA-Z]
#ls -d /etc/p[mn]*
[^]:匹配指定集合外的任意单个字符
#ls -d /etc/p[^m-z]*
字符集合:
[:space:]:所有的空白字符
[[:space:]]:除去空白字符的所有
[:punct:]:所有标点符号
[:lower:]:所有小写字母
[:upper:]:所有大写字母
[:digit:]:所有数字
[:alpha:]:所有字母
[:alnum:]:所有字母和数字
练习1:显示/var目录下所有l开头,以一个小写字母结尾,且中间出现一位数字的文件或目录;
# ls-d /var/l*[[:digit:]]*[[:lower:]]练习2:显示/etc/目录下,以任意一位数字开头,且以非数字结尾的文件或目录;
1# ls-d /etc/[0-9]*[^0-9]练习3:显示/etc/目录下,以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录;
1# ls-d /etc/[^[:alpha:]][[:alpha:]]*练习4:复制/etc/下,所有以m开头,以非数字结尾的文件或目录至/tmp/test1目录中;
#mkdir test1# cp-a /etc/m*[^ - ] /tmp/test1
练习5:复制/etc目录下,所有以.d结尾的文件或目录至/tmp/test2目录中
#mkdir test2# cp-r /etc/*.d /tmp/test2
练习6:复制/etc目录下,所有以.conf结尾,以m,n,r,p开头的文件或目录至/tmp/test3目录中;
#mkdir test3# cp-r /etc/[mnrp]*.conf /tmp/test3
快捷键
#cdd /etc/sysconfig/n
#Ctrl + a:跳转至命令首部
#Ctrl + e:跳转至命令尾部
#Ctrl + l:清屏
#Ctrl + c:中止或取消
#Ctrl + u:删除命令行首至光标所在处所有字符
#Ctrl + k:删除光比所在处至尾部的所有字符
输入输出重定向
程序有输入输出的需求
程序:指令+数据
程序处理数据后产生的结果保存的位置的需求是输出
标准输入:键盘, 0
标准输出:监视器,1
错误输出:显示器,2
fd:file descriptor,文件描述符,windows称为句柄
0,1,2
输出重定向:把文件输出到其他地方
>:目标文件中原有内容被清除
>>:新内容被追加至文件尾部
#cat issue >/tmp/issue.out
#ls /var >> /tmp/issue.out
使用set -C来关闭覆盖重定向,set +C开启
#ls /etc >|/tmp/issue 这是进行强制覆盖
错误输出进行输出重定向:把错误信息输出到其他地方
#ls / var r > /tmp/ var .err#ls / var > /tmp/ var .out#ls / var r >>/tmp/ var /err
合并标准输出和错误输出的数据流至同一处:&>
#ls / var &> /tmp/ var .out#ls / var &>> /tmp/ var .outCOMMAND > /path/to/somefile > &
输入重定向:<
<< :此处生成文档
2<<
2<
篇9:零基础学习英语—英语基础语法讲解学习
语法是我们在英语学习道路上绕不开的障碍,如何攻克它相信很多朋友都有自己的看法。但是建议大家先从英语基础语法知识入手,这样可以由浅入深,逐步加增难度,打下良好的基础。下面就是一些英语基本语法知识,来一起看看吧。
组成句子的各个部分叫句子成分。英语句子成分有主语,谓语,表语,宾语,宾语补足语,定语,状语等。
顺序一般是主语,谓语,宾语,宾语补足语,而表语,定语,状语的位置要根据情况而定。
1、主语
主语表示句子主要说明的人或事物,一般由名词,代词,数词,不定式等充当。 He likes watching TV. 他喜欢看电视。
2、谓语
谓语说明主语的动作,状态或特征。一般可分为两类:
1),简单谓语
由动词(或短语动词)构成。 可以有不同的时态,语态和语气。
We study for the people. 我们为人民学习。
2),复合谓语:情态动词+不定式
I can speak a little English. 我可以说一点英语。
3、表语
表语是谓语的一部分,它位于系动词如be之后,说明主语身份,特征,属性或状态。一般由名词,代词,形容词,副词,不定式,介词短语等充当。
My sister is a nurse. 我姐姐是护士。
4、宾语
宾语表示动作行为的对象,跟在及物动词之后,能作宾语的有名词,代词,数词,动词不定式等。
We like English. 我们喜欢英语。
有些及物动词可以带两个宾语,往往一个指人,一个指物,指人的叫间接宾语,指物的叫直接宾语。
He gave me some ink. 他给了我一点墨水。
有些及物动词的宾语后面还需要有一个补足语,意思才完整,宾语和它的补足语构成复合宾语。如:
We make him our monitor. 我们选他当班长。
5、定语
在句中修饰名词或代词的成分叫定语。
用作定语的主要是形容词,代词,数词,名词,副词,动词不定式,介词短语等。形容词,代词,数词,名词等作定语时,通常放在被修饰的词前面。
He is a new student. 他是个新生。
但副词,动词不定式,介词短语等作定语时,则放在被修饰的词之后。
The bike in the room is mine 房间里的自行车是我的。
6、状语
修饰动词,形容词,副词以及全句的句子成分,叫做状语。
用作状语的通常是副词,介词短语,不定式和从句等。状语一般放在被修饰的词之后或放在句尾。副词作状语时可放在被修饰的词前或句首。
He lives in London. 他住在伦敦。
7.补语
用来说明宾语或主语所处的状态或正在进行的动作,因为英语中有些动词加宾语后意思仍然不完整,如:make(使...),ask(请)等等。如果我们说:我们使我们的祖国。这不是一句完整的话。应该说:我们使我们的祖国更美丽。这是的“美丽的(beautiful)”为形容词做补语,说明祖国的状态。英语句子为:We will make our country more beautiful.作补语的词或词组为:形容词,副词,名词,不定式,-ing形式,数词等。
8.宾补
就是宾语补足语,就是补充说明宾语的 。
例:I know you are student good at maths .
在这个句子中,good at maths 就是补语。 宾语补语也可以是句子,所以这个句子也可以是:
I know you are student who is good at maths
还可以是-ing 形式 I see you crossing the street
简单说就是补充和说明主语和宾语的成分.因此,就出现了主语补足语和宾语补足语.上面两位举的例子都不错.只是热雪冰冷的宾补的句子例子不是很恰当哦.他的例子是定语从句 啊 还有 主语补足语可以是表语 。
例如:Tom is a student.student是对Tom的解释与说明. 另外,Tom was seen playing on the playground.这个句子中playing是对Tom的解释说明 是主补
英语句子的基本结构可以归纳成五种基本句型及其扩大、组合、省略或倒装。掌握这五种基本句型,是掌握各种英语句子结构的基础。
英语五种基本句型列式如下:
l 基本句型一:SV(主+谓)
l 基本句型二:SVP(主+谓+表)
l 基本句型三:SVO(主+谓+宾)
l 基本句型四:SVoO(主+谓+间宾+直宾)
l 基本句型五:SVOC(主+谓+宾+宾补)











