3part1使用结构控制程序执行ppt课件_第1页
3part1使用结构控制程序执行ppt课件_第2页
3part1使用结构控制程序执行ppt课件_第3页
3part1使用结构控制程序执行ppt课件_第4页
3part1使用结构控制程序执行ppt课件_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、济南大学济南大学自动化与电气工程学院自动化与电气工程学院授课教师:谢锦丽授课教师:谢锦丽E-mail:cse_联系方式:联系方式拟仪器技术虚拟仪器技术1济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术第第3章章 使用结构控制程序执行使用结构控制程序执行 结构是一种重要的节点类型,可以管理VI中的执行流,和其他标准编程语言中的控制结构功能一样。本章首先介绍LabVIEW中几个主要结构:While结构、For结构、选择 结构和顺序结构,然后介绍如何将While循环和选择结构组合成一个功能强大的应用程序框架。接着将

2、学习如何使用公式节点执行冗长的公式和用表达式节点执行简单的公式以及怎样弹出包含特定信息的对话框。本章还将介绍程序的定时控制基础以及定时结构如何提供高级定时和同步。2济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术第第3章章 使用结构控制程序执行使用结构控制程序执行学习使用While循环和For循环,并了解其不同之处认识移位寄存器在图形化编程中的重要性了解选择结构的不同类型数值型、字符串型和布尔型学习使用顺序结构控制执行顺序了解叠层顺序结构和顺序结构局部变量的危险性使用公式节点执行冗长的数学公式使用LabVIEW弹出一个指定内容的对话框了解如何使用LabVIE

3、W的一些简单定时函数使用表达式节点执行只有一个变量的公式了解定时结构和VI如何让定时循环和定时顺序同步使用While循环和Case结构相结合创建一个简单、功能强大且可扩展的应用程序框架3济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术第第3章章 使用结构控制程序执行使用结构控制程序执行 3.1 两种循环 3.2 移位寄存器 3.3 选择结构 3.4 顺序结构 3.5 定时及定时结构 3.6 公示节点 3.7 表达式节点 3.8 循环与选择结构联合4济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术第第3章章 使用结构控制程序

4、执行使用结构控制程序执行 3.1 两种循环 3.2 移位寄存器 3.3 选择结构 3.4 顺序结构 3.5 定时及定时结构 3.6 公示节点 3.7 表达式节点 3.8 循环与选择结构联合5济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环LabVIEW提供两种循环结构:While循环和For循环来控制VI中的重复操作。For循环会执行指定的次数While循环持续执行直到一个指定的条件为真假时停止函数选项卡编程构造6For循环While循环济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循

5、环两种循环3.1.1 For 循环For循环将其子框图内的代码执行指定的次数,其次数等于计数端子的值。可以从循环外部连线一个值到计数端子来设置次数。如果计数端子值为0,则不会执行循环。迭代端子包含了当前已经执行完毕的迭代次数:0表示正在进行第一次迭代,1表示正在进行第二次迭代,以此类推,直到N-1N表示循环所期望的执行次数)For循环等价于以下伪代码: for i = 1 to N-1 Execute subdiagram7济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环3.1.2 While 循环While循环持续执行子框图直到连线

6、到条件端子的布尔值变为True意味着停止循环)。LabVIEW在每次迭代完成时检查条件端子的值,如果为False意味着继续循环),执行下一次迭代。While循环中迭代端子的作用和For循环中的完全一样While循环等价于以下的伪代码: Do Execute subdiagram While condition is FALSE (Untile condition is TRUE)8济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环可以改变While循环中条件端子的状态,只需要单击条件端子,这样在条件端子为真时执行循环,而不再是为假时执行

7、。此时While循环等价于以下伪代码: Do Execute subdiagram While condition is TURE9济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环LabVIEW6.1及以前版本,While循环的条件端子默认状态是Continue if TURE。 LabVIEW6.1之后版本7.0 8.0)默认状态是Stop if TRUE。使用前,请正确配置。如果想要改变一个结构类型例如,把For循环变成While循环),在结构的外边框上单击右键选择。但是只能把现有的结构替换成与其相似的结构。10济南大学济南大学

8、自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环3.1.3 放置对象到结构选择结构时,光标会变成所选结构的缩略图,在希望放置结构的地方单击,然后拖拽确定结构的边框。释放鼠标后,结构会出现在框图上,并且包含其边框内的所有对象。框图中有了结构后,可以从函数选项卡中选择对象放置到循环内。在对象移动到结构内部时结构的边框会加亮显示,对象被拖拽出结构时,框图的边框会加亮显示。可以使用定位工具拖拽结构边框的调节柄来调节大小。11济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环如果将结构移动到另一个对象上面

9、,则下面的对象仅可以看见结构边框以外的部分。如果将结构完全覆盖到另一个对象上面,对象会产生厚厚的阴影以示警告:对象只是在结构上或结构下,而不是在结构内。12济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环 自动扩展:所有结构都具有自动扩展属性。 当自动扩展处于选中状态,会产生两个非常有用的特性:一个是让结构大小随着放入结构中对象的多少而自动而改变,自动设置边框;另一个是避免把结构设置过小,小于里面对象的大小。这两个特性保证了结构里面的对象不会隐藏在结构中。13济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟

10、仪器技术3.1 两种循环两种循环 删除结构:将删除内部所有对象函数、子VI、连线和所有其他对象。 如果不需要删除结构中的所有代码,可在弹出菜单里选择“删除For循环或删除While循环这样只删除了结构,而保留了框图中的代码。14济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环 循环中的端子和其他出口:数据通过循环边框上的一个小方框进出循环,这个小方框就成为隧道tunnel) LabVIEW是按照数据流原则进行的,所以在循环开始前输入端必须先输入数据。循环输出端只有在结束了所有的迭代后才输出数据。 每次迭代时检查或更新端子,必须预先将端

11、子放置到循环内。如While循环在每次循环时都会检查布尔控件的值,当循环读到真值时停止执行。15济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环如果把布尔控件端子放置在While循环的外面,就会建立一个死循环或只运行一次的循环,这取决于布尔量的初始值。LabVIEW在进入循环前读取布尔量的值,而不是在循环中或循环结束后。16循环中的数循环中的数值指示器会值指示器会在每次循环在每次循环时更新时更新循环外的数值指示循环外的数值指示器只在循环结束后器只在循环结束后更新一次,在此之更新一次,在此之前,它会显示从上前,它会显示从上次循环时得到的

12、一次循环时得到的一个随机数个随机数注:在注:在For循环或循环或While循环的第一次迭代中,迭代次数是循环的第一次迭代中,迭代次数是0。所以迭代次。所以迭代次数加数加1就可以知道迭代了多少次就可以知道迭代了多少次济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环3.1.4 练习:计算循环次数创建一个For循环,并使用图表在前面板上显示循环次数N。循环会从0开始,直到N-1结束。然后创建一个While循环并记录循环次数,直到用布尔开关停止为止1. 菜单文件创建新VI2.创建前面板和框图: a. 函数选项卡编程构造,选择For循环,放置到

13、框图 b. 控件选项卡新式图形,选择波形图表,放置到前面板,将其标签改为“计算循环次数” c. 控件选项卡新式数值,选择数值输入控件,作为循环次数控件17济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环 d. 从波形图表弹出菜单中选择自动调整Y标尺,这样波形图就会自动调整坐标来适应For循环的次数;在弹出菜单中选择显示数字。3. 得到前面板和框图18济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环4. 在“循环次数控件输入数据,然后运行VI。在每次循环执行时,波形图表将For

14、循环的迭代次数绘制在Y轴上,X轴为对应的时间,一个时间单位表示依次循环迭代。19济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环注意数值指示器从0计数到N-1,而不是从1到N;计数端子和“循环计数控件连线的交叉点上红色点称为强制点20济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环强制点:LabVIEW强制转换数据的类型来适应其它的数据类型。把两个不同数据类型的端子连接到一起时,LabVIEW会将其转换成相同的数据类型。上例中,计数端子为32bit的整型,而“循环次数控件默认

15、是双精度的浮点数。在这种情况下,LabVIEW把双精度的浮点数转换成整型数。此时,LabVIEW会用合适的类型为内存中数据创建一个新的副本,这些数据会占据内存空间,尽管标量数据单值数据占用的额外空间可以忽略不计,但是数组数据多值数据会占用大量的内存空间。使用大数组时要尽量减少使用强制点,需要改变控件或者指示器的数据类型使其匹配对应的数据类型.VI将浮点数转化成整型数时,会将浮点数舍入 到最接近的整数。21济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环本例中,在“循环次数控件的弹出菜单中的子选项卡中选择I32Long可以使数据类型匹配

16、,强制点消失。22济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环为计数端子创建正确数据类型的输入:计数端子的弹出菜单中选择“创建常量或者“创建输入控件”。还可以“创建显示控件观察循环进行时的迭代次数。5. 保存VI。6. 打开新VI尝试While循环23济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环7. 创建VI的前面板和框图,前面板上布尔控件的默认值是FALSE,设置While循环的条件端子为Continue if True。24济南大学济南大学 自动化与电气工程学院自

17、动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环8. 实现过程:使用“操作值工具单击开关使其翻转到TRUE位置运行VI。需要停止时,单击开关使其翻转到FALSE。每次迭代时,循环次数Loop Count指示器都会更新。25济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环9. 在开关处于FALSE位置时再次运行VI,可以注意到While循环将会执行一次,也仅仅执行一次。由于循环结构在每次迭代之后检查条件端子的值,所以循环总会执行一次,不管其连接的值是多少。10. 切换到框图,将循环次数指示器移动到循环外面,这样需要重

18、新连接指示器,当连线离开循环时,会自动创建隧道。26济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环11. 确认开关为TRUE时运行VI,注意指示器仅在翻转开关和循环执行完之后更新,其值是最后的迭代次数,是循环完成后输出的值。12. 保存VI。 27济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.1 两种循环两种循环13. 示范错误的做法:把开关拖出循环,但是保留连线,确认开关是TRUE后,运行VI,然后单击开关停下VI。但是VI 不会停止,这是因为一旦LabVIEW进入循环,它就不会再去检查循

19、环外部控件的值,就像不回去更新“循环次数指示器一样。单击工具栏的异常终止按钮来终止循环执行。如果开关在循环开始时为FALSE,循环就只会执行一次而不是一直循环。28济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术第第3章章 使用结构控制程序执行使用结构控制程序执行 3.1 两种循环 3.2 移位寄存器 3.3 选择结构 3.4 顺序结构 3.5 定时及定时结构 3.6 公示节点 3.7 表达式节点 3.8 循环与选择结构联合29济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.2 移位寄存器移位寄存器3.2.1 移位寄存

20、器移位寄存器是用来从一次迭代向下一次迭代传输数据的特殊变量,只能在While循环和For循环中使用。在LabVIEW的图形化结构中,移位寄存器是唯一且必要的,在循环左右的边框上弹出菜单并选择“添加移位寄存器就可以创建移位寄存器。30济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.2 移位寄存器移位寄存器 可以配置移位寄存器存储数次迭代以前的数据,在求不同迭代中的数据平均值时非常实用 为了访问以前迭代的数据,需要在左边 端子的弹出菜单中选择“添加元素创建 一个附加端子。例如有一对移位寄存器的 While循环,左边端子有多个元素。31济南大学济南大学 自动化

21、与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.2 移位寄存器移位寄存器在一个循环里可以有多个不同的移位寄存器来存储不同的变量。只需要在循环的边框上添加足够的移位寄存器。左边的移位寄存器总是和右边的平行,如果移动其中一个,那么两个都会同时移动。如果循环里有太多的移位寄存器而无法分清哪一对是平行的,只要选中一个,另一个也会自动选中,或者移动其中一个,那个跟着移动的移位寄存器就跟它是一对。通常的错误是把两种情况弄混,一种情况是多个变量存储在多个移位寄存器里,另一种情况是单个变量使用一个移位寄存器存储多个先前的值。32济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪

22、器技术虚拟仪器技术3.2 移位寄存器移位寄存器 确认要直接连线到移位寄存器端子,就不会创建进入或离开循环的孤立隧道。 3.2.2 移位寄存器示例 下面给出使用移位寄存器的方法,观察使用移位寄存器来访问循环中先前迭代的值。在该VI中要从先前的循环中获取计数值。33济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.2 移位寄存器移位寄存器1. 打开移位寄存器示例程序的前面板和框图2. 前面板上有4个数值指示器。CurrentCount指示器显示循环计数的当前值,它连接在迭代端子上。Preview Count指示器显示循环计数的前一次迭代的值。Two Itera

23、tions Ago指示器显示两次迭代以前的值。Three Iterations Ago指示器显示三次迭代以前的值。34济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.2 移位寄存器移位寄存器3. 常数0连接到左侧移位寄存器,将其初始化为0.在下次 迭 代 开 始 时 , 以 前 的Current Count值会移动到左侧端子的顶端,变成Preview Count。Preview Count会往下移动到Two Iterations Ago,以此进行下去。定时函数Wait(ms)让循环等待500ms再执行迭代35济南大学济南大学 自动化与电气工程学院自动化与

24、电气工程学院 虚拟仪器技术虚拟仪器技术3.2 移位寄存器移位寄存器3. 检查完框图后,再从菜单中选择“左右两栏显示使前面板和框图同时显示。4. 单击“加亮执行按钮使其加亮执行;或者单击“单步步入按钮单步调试VI。观察前面板指示器的值如何变化。36济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.2 移位寄存器移位寄存器5. While循环的每次迭代中,VI像漏斗一样使用先进先出算法将前次的值在左边移位寄存器的端子间移动。每次迭代增加连接到右边移位寄存器的计数端子的值,也就是Current Count。该值在下一次迭代开始时移动到左侧的端子Previous

25、Count。其余左侧端子的移位寄存器的值像漏斗一样逐个传递。本例中只是返回了前3次的值。通过添加左侧移位寄存器元素,可以使VI返回更多的值。6. 单击前面板STOP按钮结束VI运行,关闭VI,不保存37济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.2 移位寄存器移位寄存器3.2.3 为什么需要移位寄存器在左侧循环中,创建了一个迭代次数求和的循环。每次循环,新的总和存储在移位寄存器里。在循环最后,总和45送到数值指示器。在右侧循环中,没有移位寄存器,所以不能在两次迭代之间存储数值。而只是在当前的“i上加0,只有最后输出结果9输出到循环外。38济南大学济南

26、大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.2 移位寄存器移位寄存器某些情况下,需要在连续循环迭代中求某数平均值。例如需要对每秒读取的温度值计算一小时平均值,根据给定的LabVIEW图形化特性,在没有移位寄存器的情况下无法实现将一次循环迭代得到的值输出到下一次迭代。3.2.4 初始化移位寄存器为了避免出现不可预见的混乱情况,通常需要初始化移位寄存器,除非有特殊原因故意不要赋初值。把循环外指定值连接到移位寄存器的左侧端子就能对其赋初值。右侧移位寄存器进行了初始化39济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.2 移位寄存

27、器移位寄存器如果不初始化,在第一次运行程序时初值将是移位寄存器数据类型的默认值,在继续运行时,移位寄存器的值是上次运行留下的值。实际上很少用到这样的特性,由此产生的问题很难被发现。例如,如果移位寄存器的类型是布尔型,那么在第一次运行时初始值是FALSE,如果移位寄存器的类型是数值型,初始值是0.LabVIEW不会清除存储在移位寄存器里的数据,只有关闭VI时,才会从内存中彻底清除。若调整移位寄存器的大小来观察以前多次迭代的值左边移位寄存器),如果其中有一个移位寄存器初始化了,那么LabVIEW要求初始化所有的移位寄存器,否则,VI不能运行。40济南大学济南大学 自动化与电气工程学院自动化与电气工

28、程学院 虚拟仪器技术虚拟仪器技术3.2 移位寄存器移位寄存器3.2.5 反馈节点通常LabVIEW不允许建立“闭环”,也就是说代码块的输出不能作为同一个代码块的输入,如果尝试这样会导致连线错误。连线错误是因为违反了数据流规则: (1 )在所有的数据都到达输入端子时节点才可以运行;(2)数据不会在节点结束运行前输出端子。因为“闭环使用了输出端子作为输入,但是数据永远不会到达输入端子,因为数据永远不会流出输出端子。41济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.2 移位寄存器移位寄存器但是,如果在While或For循环内输出端子和输入端子之间放置一个反馈

29、节点,代码就可以运行。实际上,LabVIEW会自动在“闭环中放置反馈节点。工具选项在循环中自动插入反馈节点42济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.2 移位寄存器移位寄存器为了充分了解反馈节点如何工作,必须先知道反馈节点实际上就是一个伪装的移位寄存器。下图代码其实是一样的。但是要注意的是反馈节点上的箭头指明了数据的流向。反馈节点的输入等于移位寄存器的右端子,反馈节点的输出等于移位寄存器的左端子。可以使用“将初始化器移出一个循环初始化反馈节点。反馈节点和移位寄存器之间可以轻松互换,右键单击反馈节点,选择“替换为移位寄存器”,或者右键单击移位寄存器

30、选择“替换为反馈节点”43济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.2 移位寄存器移位寄存器3.2.6 隧道与移位寄存器之间的相互转换在书写代码时,实际上可以用移位寄存器代替隧道。右键单击隧道,弹出菜单中选择“替换为移位寄存器”首先移位寄存器替换隧道后,鼠标变成了移位寄存器光标,使用该光标选择需要转换的其它隧道,或者单击循环内或循环上任意位置放置另一个移位寄存器,而不会替换其他的隧道。右键单击移位寄存器,并在弹出菜单中选择“替换为隧道”,就可以将移位寄存器替换成隧道。44济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪

31、器技术第第3章章 使用结构控制程序执行使用结构控制程序执行 3.1 两种循环 3.2 移位寄存器 3.3 选择结构 3.4 顺序结构 3.5 定时及定时结构 3.6 公示节点 3.7 表达式节点 3.8 循环与选择结构联合45济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.3 选择结构选择结构 选择结构Case结构是LabVIEW中执行条件语句的方法,就像“if-then-else”。 函数选项卡编程结构子选项卡 Case结构有两个或更多个的子框图,但是只有一个在执行,这取决于连接到分支选择器上的布尔型、数值型或字符串型的值。46济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟仪器技术3.3 选择结构选择结构 如果是布尔型连接到分支选择器上,选择结构就只有两个分支:FALSE和TRUE 如果是数值型或字符串型连接到分支选择器上,选择结构可以有无数个分支。初始时虽然只有两个,但是可以很容易的添加分支。可以给一个分支指定多个值,并用逗号分开。 需要选择一个默认分支,当分支选择器上输入的值和其它所有分支都不匹配时,就会执行默认分支。在很难考虑到所有的可能分支,但又希望覆盖所有可能分支时,使用默认分支是非常方便的。47济南大学济南大学 自动化与电气工程学院自动化与电气工程学院 虚拟仪器技术虚拟

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论