`

NS by Example 笔记(1)OTcl: The User Language

阅读更多

原教材地址 http://nile.wpi.edu/NS/ 读过原文的笔记,写成中文以后也便于理解。并没有100%对原文逐字翻译,所以有歧义的地方还需要参考原文。

 

OTcl: The User Language

 

基本上, ns是一个带有模拟对象库的OTcl解释器。

 

例题1:如何建立procedure 并运行, 变量赋值,for循环。

 

OTcl 是具有面向对象的 Tcl 语言,就像C 和 C++ 的关系一样.

运行脚本, 把代码保存到 ex-tcl.tcl 文件。 然后在命令行下输入"ns ex-tcl.tcl" 或者 "tcl ex-tcl.tcl"

 

# Writing a procedure called "test"
proc test {} {
    set a 43
    set b 27
    set c [expr $a + $b]
    set d [expr [expr $a - $b] * $c]
    for {set k 0} {$k < 10} {incr k} {
	if {$k < 5} {
	    puts "k < 5, pow = [expr pow($d, $k)]"
	} else {
	    puts "k >= 5, mod = [expr $d % $k]"
	}
    }
}

# Calling the "test" procedure created above
test

 

在 Tcl 中,

关键字 proc 去定义一个 procedure, 后边加上 procedure 名和大括号中加入需要的参数(arguments)。

关键字 set 用来给变量赋值。 [expr ...] 让解释器去计算 expr 之后的表达式的结果。

关键字 $ 用得到变量的值。

关键字 puts 打印双引号中的字符串。

 

结果为



 

 

 

 

 

例题2:OTcl中面向对象编程

 

解释了如何建立和使用对象。因为ns中无论ns对象是否是用C++编写还是用OTcl影像,本质上都是OTcl对象

 

 

# Create a class call "mom" and 
# add a member function call "greet"
Class mom
mom instproc greet {} {
    $self instvar age_
    puts "$age_ years old mom say:
    How are you doing?"
}

# Create a child class of "mom" called "kid" 
# and overide the member function "greet"
Class kid -superclass mom
kid instproc greet {} {
    $self instvar age_
    puts "$age_ years old kid say:
    What's up, dude?"
}

# Create a mom and a kid object set each age
set a [new mom]
$a set age_ 45
set b [new kid]
$b set age_ 15

# Calling member function "greet" of each object
$a greet
$b greet

 

 

 例子定义2个对象, "mom" 和 "kid"。"kid" 是 "mom" 的子类, 并且分别给这两个类定义一个名叫"greet"的成员函数(member function)。  类定义好后我们个每个类声明一个实例,分别是 a 和 b。然后分别把 a 和 b 的 "age" 变量赋值为45 和 15。最后调用这两个实例的 "greet" 函数

 

关键字 Class 新建对象的类

关键字 instproc 给类定义一个成员函数member function

关键字 -superclass 类的继承关系 

关键字 $self 和 C++中 "this" 指针相似

关键字 instvar 检查变量名是否已经在这个类或者他的父类中声明, 如果已经声明的话则直接引用,否则声明一个新的

关键字 new 新建一个对象类的实例

 

运行方法相信大家都知道了,输出的给过应该是:

                                                                  45 years old mum say:

                                                                  How are you doing?

                                                                  15 years old kid say:

                                                                  What's up, dude (怎么这样和你老妈说话啊, 呵呵)

  • 大小: 1.5 KB
分享到:
评论

相关推荐

    NS By Example

    目录: Overview , Basics , OTcl: The User Language Simple Simulation Example Event Scheduler Network Components Packet Post Simulation , Trace Analysis Example ...

    NS2学习笔记tcl与otcl

    对网络仿真软件NS2的语言的基本介绍,包括TCL和OTCL两种语言的介绍。

    ns by example

    NS (version 2) is an object-oriented, discrete event driven network simulator developed at UC Berkely written in C++ and OTcl. NS is primarily useful for simulating local and wide area networks. ...

    ns中otcl语言语法总结

    ns2中otcl语言语法总结,记录了本人学习过程。

    理解NS2中的OTcl&tclCL

    在"the NS2 manual"中, 解释了为 什么采用了两种语言来建构整个系统, 然后在第三章描述了tclcl的六个类. 这个手册中的对各个 类描述性文字让我如坠雾里, 不明所以. 我查找了一些NS2的文章和站点, 有一些ppt倒是很形...

    OTcl-tclCL.rar_ns2_otcl

    理解NS2中的OTcl-tclCL,对ns2使用两种语言解释

    ns by examples 2

    有关NS学习的example,文件为OTCL脚本,C++代码等

    NS2OTcltclCL

    理解NS2的architecture, 了解NS2的基本原理. NS2采用了Tcl/C++分裂 的模型, 在这种模型中OTcl是处于比较关键的位置, NS2采用了Tcl的编程模式. 使用C++来编 写应用实例, 使用OTcl来操纵这些实例.

    aodv.rar_ns2 aodv tcl_ns2 aodv.tcl_otcl_卫星路由_通信网络

    NS2(Network Simulation Version 2)是一种功能强大的网络模拟仿真器,它是用C++和OTCL两种语言完成的。C++语言编写协议执行模块,OTCL语言编写模拟任务。NS2主要针对有线局域网、无线局域网、Ad Hoc网络、卫星通信...

    NS by example

    对NS初学者很有帮助的一些资料,有助于初学者的学习哦!

    Computer.Network.Simulation.Using.NS2.epub

    Delve into simulation using NS2, elaborating on the use of Tcl and OTcl scripts as well as AWK scripting and plotting with Gnuplot Show how to simulate wired and wireless network protocols step by ...

    ns2中文手册(中文版)

    NS 手册(中文版) ns 使用手册(原ns注解与文档)1 ns©是 LBNL(译者注:Lawrence Berkeley National Laboratory 美国劳伦斯伯克利国家实验室)的网络模拟器[24]。该模拟 器用 C++编写;使用 OTcl 作为命令与配置的接口。...

    OTcl与C++,NS2是如何识别并调用执行协议的.doc

    OTcl与C++,NS2是如何识别并调用执行协议的.doc 协议改进或移植必备参考资料。

    混合网络(有线+无线)NS2Otcl代码

    NS2支持有线网络和无线网络的混合模拟功能。,设定一个有线节点sinkNode、一个基站节点bs(0)以及两个无线节点SS(0)、SS(1)

    ns2英文手册

    ns v2 has three substantial changes from ns v1: (1) the more complex objects in ns v1 have been decomposed into simpler components for greater flexibility and composability; (2) the configuration ...

    Linkage_Between_OTcl_and_C++_in_NS2

    Linkage_Between_OTcl_and_C++_in_NS2 Chapter 3

    NS2与网络模拟__于斌

    本书是专门介绍NS2模拟软件的入门和进阶教程,内容包括NS2模拟软件在不同平台下的安装,进行网络模拟的方法和技巧,以及Tcl、OTcl语言等必备的基础知识,并通过NS2模拟软件介绍了网络模拟的研究思路和研究方法。...

    ns-foudamentals

    NS2使用C++和Otcl作为开发语言。NS可以说是Otcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。

    a iintroductio to ns2

    UC Berkely written in C++ and OTcl (Tcl script language with Object-oriented extensions). It implements network protocols such as TCP and UPD, traffic source behavior such as FTP, Telnet, Web, CBR and...

    《NS2与网络模拟》

    本书是专门介绍NS2模拟软件的入门和进阶教程,内容包括NS2模拟软件在不同平台下的安装,进行网络模拟的方法和技巧,以及Tcl、OTcl语言等必备的基础知识,并通过NS2模拟软件介绍了网络模拟的研究思路和研究方法。...

Global site tag (gtag.js) - Google Analytics