Daniele Messina, Ilenia Tinnirello
���������� �������������� ����
Daniele Messina, Ilenia Tinnirello
������������
����������
������������
� ��
�� �� � � � ��
������������ ������
Daniele Messina, Ilenia Tinnirello
� ���������������������������� ���������������������������
���� ����
�� ��� ��
����� � ���� � � � �� � � ���
���� � ��� � � �� �� � �
���� ����
�� � �� ��� �� � �� � �
�� � � � ����
��� ����
�� ���� � �� �� ��� �� � �� � �
Daniele Messina, Ilenia Tinnirello
�� ���� ���!�������������� ���� ���!����������������!�����������!�������
���!������� � ��� � � � �� � � � � �� � � �� � �� � � ����� ��� � ��
� ���� �� � �� � � � �� ��� � � ��� � �� �� � � � �� � ������ �
� � � � ������� �� � ���� �� �� � !� �� �� �� �� ���
� � � � �� ��� � �� � � ��� � �� � � �������� � �� � �� ��� � �
� " � � � � ��� � � �� �� �� �� � ���� � ���� � �� � � � �� � ������
�"���!������� � �� � ���� �� �� �� ��� �� �� �� � � � � � � � � � �
� # �������� �� � �� ��� � � � �� � � � $� ��� �% � � ���� � � ��� ��� �� � � � ����
� & � � �� ��!�� ��� �
� & � � � �� � � �� �� ����� � � ��� � � � ���� � � �� � � �� � ���� �� � � � �� � �
Daniele Messina, Ilenia Tinnirello
����������� ���������������� �����
�#�����$��#���
�' ( � ) �� �� � � � * + (
�%����� �$��#���
�( ����� ���
�" � �� �� � ���
�" � � � �� �� ��� ��� ���� � � � ���
�# �������� � �� � � � ��� ��� � � �� � � ��� ���
Daniele Messina, Ilenia Tinnirello
�������������� ������������� ���
� �## ������ �&� ���'�(&$'�$��
� &������������)���!��� ����'�*)�'�+)�
� � � �������
� &����#���������� ��"$,&*$
� ��������&�#� ���
� �������-������ ����������&����-����"��#&� '���"'�
*).'
� �� ����������� ������������ �&�������� �/�� � ��'�
�����'�%$�'�0 ���,12�3��'�12�3�435'�)���&66&78'�
��� ��
� � �9 ��:$'������������������#������ ����������"�'�
&6��'�""+������6"+3
� &������$����������� � ���,�#����� ���
Daniele Messina, Ilenia Tinnirello
7�����7�����
���������!������!�������������� �����
��!� �#������#�����������+:�&�#��;����/+���� �
:��������&���9��'�����������9����� ��*�
)���� ��'��&<&'�=��6=�$��*������&78
�(����!�������>>4
�������!�������>>?
����������� �� � �� , �� � ��� � �� �� �� � � � � � � -� ��!
��� ��� � � � �� �� ��� �� � � ��� � � � � ( � .
��������!������/�#�����#���22?8 ��3�>3@
Daniele Messina, Ilenia Tinnirello
����������������������
��������69;������������&� �/6&� 8����#������#���������������*AA3
�:����������� ������!���������� ��'������������#�������9;���� 9�����'������������������#����� �� 9�����3
OTcl Script
OTcl: Tcl interpreter with Object Oriented extension
Event scheduler ObjectsNetwork component Objects
Network setup helping Modules
Simulationresults (.tr, .nam)
Analysis(Awk, Perl, Tcl)
Visualization(NAM)
Daniele Messina, Ilenia Tinnirello
:���� ����:���� ����/����������8/����������8
�@����#�����
��� / � � ��� ���
� �� ,� ��� � ��� �� �� �� � ��� � �� �� �� �� ������ .
�� � � ,� � �� � ��� �� ��� �� �� �� �.
��!� �9 ������ � ��� 011� � � 2�� 3 2� ��2� �1�� � �� 1�� � 1���� � 1� ���� � �� 1�� / � �2 �� �
�-�� � ��� � � � 2� � � ��� � 4 ,� �� �� �� �� � � � � � � �� � � ��.
Daniele Messina, Ilenia Tinnirello
������������������
�B����������������������������C���D�� ���#�EC�/������������������������������������������������F�����9 �'��������������#����#���������������������8'�������CD�� ���#�EC�����������������&� ����#��� ��������������������� �������������/3�3�������#� �������������!����83
�B������ ��� ���;������������������������������������������������&� ����������������&� ���� '�9���������������� �� ������������9 �
Daniele Messina, Ilenia Tinnirello
��������������������
�B���������������������������������������C����D����� �EC�������CD����� �EC���������������������������� ���������������������9����'�������������F������������� �������������&� ���� ��������#������������� ����������������������!��� G�
Daniele Messina, Ilenia Tinnirello
&�
Daniele Messina, Ilenia Tinnirello
&� ���������&� ���������
���&� ����#���������������������������������3�*��������������#�������9����� �������������� ���3�(����F��# � set a 24set b 15
�&�����������#����� ��9����������������� �� ���������������� �����#������ set a 24; set b 15
������������������������������������������'�������������������������������������������������������� ������������������������������������3�0 �����������#�������9���#�����������9�3
Daniele Messina, Ilenia Tinnirello
&� ���������&� ���������
set var1 5
name of the commandarguments
words
Daniele Messina, Ilenia Tinnirello
&��������������&��������������
� �����9������������&� �#�����������H���## ��������������������������������������'��������������## ���9����!��� ���������#���������3�(����F��# �'��������������� �����*�#������
x = 4;y = x+10;
� ���������������� ��� ������#����������������&�
set x 4set y x+10
� &��������������������# ������������������IFA�2J ������������������������!� ��������3����������������������#������������������!� ���IFA�2J'����������������!� ����53
set x 4set y [expr $x+10]
Daniele Messina, Ilenia Tinnirello
&��������������&��������������
�����������Iset 2 aJ ��!� ����� �������������!���9 ���������������I�J����������!� �����I�J3
�����������������������������������������!� ����������!���9 �'�3�3�������9����������������������!� ��
Daniele Messina, Ilenia Tinnirello
+���9 ����9�������+���9 ����9�������
�+���9 ����9�������������������9������ ��������������������������������!� ��������&� �!���9 �����9��������������������
set a 20
set b [expr $a*2]
�*���������9�����������!�����9����� ������������������������9�������
Daniele Messina, Ilenia Tinnirello
+���9 ����9�������+���9 ����9�������
set name tset $name foo
�0 ����!���9 ����9�������K
Daniele Messina, Ilenia Tinnirello
*�������*�������
��������������� �������������������
�����������������������������
�����������������������������������������
�������������������������� ������
���������
# This is a comment
set a 100 # Not a comment
set b 50; # This is a comment
Daniele Messina, Ilenia Tinnirello
&����F#���������&����F#����������expr ����������������������������������� ��
�����������!� ��������������������������������F#������3
�&���expr ����������##���������F#������������F��� ���������������F#������������:�*'��� ��������������#������������ �������������������*��#�������3
��F��# ��
% expr 3 << 212% expr 14.1*684.6% expr (3 > 4) || (6 <= 7)1
Daniele Messina, Ilenia Tinnirello
&��������������&��������������
� ���������������������!� ������!���9 ��!������3�:������������������ ��!� ������!������������9����9����������������/����� '���F������ '�������� 83�:�������������������������������� �������3�&�������!� ��������������!����������������� ������������������������������� ����������������3
incr varName ?increment?
set a 5
set b 2
incr a 2
incr a $b
Daniele Messina, Ilenia Tinnirello
� ������������� �������������&����������������������������������9��
��9�������F#�������'������� �# ������������������#�������9��������
abs(arg) acos(arg) asin(arg) atan(arg) atan2(y, x) bool(arg) ceil(arg) cos(arg) cosh(arg) double(arg)
expr 2*sin($x)
Daniele Messina, Ilenia Tinnirello
������������
���������������� ���������� ������'������������������!���9 ����������������������!� ��3�&��������������������� ��������������#���� �������������������������������������������� ���������������������3
�)��������������������� ����������������9����9������������3�(��������������&� ����������������������� ����������!���������������������������������������������� �������������������� �����������������9���������3
Daniele Messina, Ilenia Tinnirello
�������!���������������!���������&����� ������������##������������������ G���
����������!��������������������� ������������� �������#'���������'�����������9 �3
set capital(France) Parisset capital(Italy) Romeset capital(Germany) Berlinset capital(Poland) Warsawset capital(Russia) Moscowset capital(Spain) Madrid
�&��-�����������#����������� �����������������#������
puts $capital(Italy)
Daniele Messina, Ilenia Tinnirello
� � �� � ����������� ��������������� �������� &� ��� ���# ������������������� �������'�9����� ��
�������� ������������9����� �����9����������������� �# ����������������� ��� ����������3�&���#�������9� ������ ������������������� ����������F��������������
% set matrix(1,1) 140% set matrix(1,2) 218% set matrix(2,1) 84% set matrix(2,2) 7% set i 2% set j 1% set cell $matrix($i,$j)84
� � ���F���������������������� �����������������������I�'�J'�I�'�J'�I�'�J ����I�'�J3�7���!��'�����������9���!���;������������������������������ ������3�0 �����9������������!� ������������;��������9������������##��#������ ����������3
Daniele Messina, Ilenia Tinnirello
��������
�:�������# ����������� �����������������������������9������� ���������#�������9���#����������9�3
set l1 {John Anne Mary Jim}
set l2 {a b {c d e} f}
set elem1 [lindex $l1 2]Mary
Daniele Messina, Ilenia Tinnirello
������� ���� ���� L������ �# �� ������������� �� ���/������ ��������������
���9����������� ����������������� �� ��8��������������������� ��3
;��� ���;������� *������������ ���� ��������������������;����������
��#��������������������������� �3 �##����!�������!� ����!� ����M� �##����������!� ������!���9 ��!������������ ���� ������
��������������������!� ����������!���9 �3�*�����������!���9 �����������H��� �������F��3
���F� ������F� ���������������FH���� ����������� ��3 ������ ������F�!� ���!� ����M� �������������� ����������9����������� ��������!� ���
������������� ���� �������9���������FH���� ��������� ��3 ����� ��� ���������������9������� ��������� ��3
���������������N
����6#�������
Daniele Messina, Ilenia Tinnirello
��������#� ������������#� ����
�&� ��F#��������� ����������# ���������#�������3
������������9����� �������-���������9�����3set s1 “Los Angeles”set s2 {Los Angeles}
�/����C���������������K8
�&����#������������� ����������#���������� ==!=> …
Daniele Messina, Ilenia Tinnirello
*����� �� ��*����� �� ��
�9����
��������
��!�
����
��������
��
�������
������
��� �
Daniele Messina, Ilenia Tinnirello
&������������&�������������&��������������!� ����������F#������'����������
���� �'������������� ���F������������#��9���������������� �3�
if {$x < 0} {...} elseif {$x == 0} {...} elseif {$x == 1} {...} else {...}
�&������� ������������������ �9���������� ����������!������#�����F������3�:����������������������� ���� �������������������������������������������������������#��������3
Daniele Messina, Ilenia Tinnirello
&����� ���������&����� ���������
� &����� ����������������������������� �����F#�������������&� ����#�3�:���!� �����������F#��������������������� ��������G������������F�����������&� ����#�3�&���#���������#������!��������!������ ������F#��������!� ���������G���'���������#���������� �������������������������������������#��������3
while {$i >= 0} {
...
incr i -1
}
Daniele Messina, Ilenia Tinnirello
&��������������&��������������
� &������������������� �������� ���F��#���������#��!����������F# ��� ��#������� 3
for {set i [expr $a-5]} {$i >= 0} {incr i -1} {......}
� &�������������������������������� G��������#�'������������������F#������������������������������������������� ��#'������������������� G��������#�'���������!� ������������������F�������������� ��#�9����9�������!� �������������������'��������������������������������#�����������������9����������� ��#3
Daniele Messina, Ilenia Tinnirello
&������������������&������������������
� &����������������������������!���� ��������� ������������ ��3
� (����������������������������3�&������������������������!���9 �'���������������� ��'������������������&� ����#�����������������9����������� ��#3
set a {3 5 5}foreach i $a {
puts [expr $i*2]}
i takes the values of the elements of the list
Daniele Messina, Ilenia Tinnirello
&����!� ��������&����!� ��������
��!� ����������� �#��#����9� ����9 ���������������������F�������&� ����#��3�:������#����������9���������������'����������������������������������#��������#����'�����������F��������������� �������&� ����#�3�6���������� �!� �������������������������'���!����������!���9 ��'���������� ������!� ����������!���9 ������&� ����#��3�(����F��# �'��������#�
set cmd "set a 0"...eval $cmd
�� �����!���9 �� ����� 2���������� �!� ������������!����3
�$����#������������#��������������� �!� �������������������� �!� ����#�����3
Daniele Messina, Ilenia Tinnirello
&�����������������&�����������������
�&��������������������������� �������F���������������������������� �������&� ����#�3
�:������������� ����������������������������������������� �3��(����F��# �'������������
source init.tcl�� ��F��������������������������� ����3�� 3�&���
�������!� ���������������� �9������!� ���������������������� ����������������F������'�������������������!� ������������ ������������������� �3�:��������'��������� ��������������������������9�������������� �H�����#������������������#����������������� �3
Daniele Messina, Ilenia Tinnirello
$���������$���������
����������������������������������������� ����������������������
����������������������������������������������������������������������
proc plus {a b} {expr $a+$b}��������������� ������������������� ���������������������� ���������������������������������������� ���������������� ���������� �������������������� ������ ��������������!����������������� ���������������������������������� ����� ��"���������������������
Daniele Messina, Ilenia Tinnirello
$���������$���������
�����������#��������� �������������� ������#������������� "�������������������������������$� ��"�
���������������"���������������"��������������������������������� "��#������������������������������������������ ����������������� �����������������������������
���������������"��#�������������������������#�������� �������
Daniele Messina, Ilenia Tinnirello
�F��# ��F��# �
proc power {base p} {set result 1while {$p > 0} {
set result [expr $result*$base]set p [expr $p-1]
}return $result
}
Daniele Messina, Ilenia Tinnirello
�F��������F�������
� 0 ����������������������'����������������� �����9������������������������������� ����������#���������������O�����������O�������������9��'���������������9�����������3�B���������� ��'�4'��2'�42'��22���������������3����������� �� ������� ��9����� �������!�'������������������!� ��9 ��������� �����!� ��9 �3�B������� ����������������������������������#���9 �3
# change :: num -> [num]proc change {n} {...}change 175=> 1 1 2 1 0
Daniele Messina, Ilenia Tinnirello
+���9 �����#�+���9 �����#�
�0 ����������������!���9 ����������#��������'�&� �� �/9������� �8��� ��������G��!���9 �������������� �����������������#��������3
���#������������������������ �9� �!���9 ������������ �9� ��������3�(����F��# �'������� ������������������������ �9� �!���9 ���F�������������9 ���������#��������
global x y
Daniele Messina, Ilenia Tinnirello
�F��# �� ������F��# �� �����
� :������ ���������������������������� ����������#��� �!� �������'����������#�������������9���� �������!���������9����������������3
� &���#��������H�� ��� �!���9 �������� �9����������� ���������� ������������ ���������F�������������3�:����������������F������������������������� �9��������������#��������3
proc sum args {set s 0foreach i $args {
incr s $i}return $s
}sum 1 2 3 4 515
Daniele Messina, Ilenia Tinnirello
�F������@�F������@
������������������������������������������������������3�&�������!� �������� ��9��#���������������������!���9 �����9���������������������������������!� �����������3�&���������������� ��������9���������������������3
Daniele Messina, Ilenia Tinnirello
*� �9����������� ��#!��*� �9����������� ��#!��
� &����#!�����������#��!������������ �����������������������!���9 �������������������F�������#��������3
� �#!�������� ���9��������������������� �9� �!���9 ��3
proc incr_proc { varname i } {upvar $varname vset v [expr $v+$i]
}
set n 4incr_proc n 2set n
Daniele Messina, Ilenia Tinnirello
$����������������#����$����������������#����
# print elements of an arrayproc show_array {arr} {
upvar $arr myArrayforeach element [array names myArray] {
puts stdout "arr($element) = \$myArray($element)"}
}
set arval(0) zeroset arval(1) oneshow_array arval
Daniele Messina, Ilenia Tinnirello
���������� ������������ ��
�&����#�����������������������#�������� �3
set f [open “trace.tr” r]
��#�������������������������������������#���� �3�&���� �����������������������!��������������������������#� ���������#���� �'�������������'�#���'������ ���3�
close $f
Daniele Messina, Ilenia Tinnirello
���������� ������������ ��
�&������ �������������!���� ����������������������� ������!� �9 �'��!�����������!��H���F# �� ���#���������� ��3�&���������stdin'�stdout'�����stderrP�����������������������������#��'����#��'����������������� ����������#������������������&� ����#�����F������3
Daniele Messina, Ilenia Tinnirello
&���#�����������&���#�����������
puts ?-nonewline? ?fileId? string
�0 ��������������� �:�'��##����������� ��������������� ���������� ������#�����3�( �:������� ������������3
��������������#��������3�&���#�����������������9�������3�6��#���� �9��
��!����������## �����C��������'���� ��� ������������������������������ �������������� �3
�&���� �����������������������9����������������9����������������� �3
flush $f
Daniele Messina, Ilenia Tinnirello
&���������������&���������������
gets fileId ?varName?
�������������F�� ��������� �:������������������������������ ��3
�:��!����������#�����'�# ��������� ����������!���9 ������������������������������������������ ���/������������������ �83�:��!���������H���#�����'��������� ���������� ��/��������#��������������������� �83
Daniele Messina, Ilenia Tinnirello
�F��# ��F��# �
set f [open /home/keith/.profile]while {![eof $f]} {
puts [string length [gets $f]]}close $f
�&������������������������ �������#��������������������������������������/�8����������� ������9�����������'������ ���/28���������3
set f [open /home/keith/.profile]while {![eof $f]} {puts [string length [gets $f]]}close $f
Daniele Messina, Ilenia Tinnirello
6&�
Daniele Messina, Ilenia Tinnirello
&��������������&��������������
�new ��������������������9;����3�:������������I���������J ����������������9;���3
set fred [new Father]
$fred age 40
�destroy ����������������������9;����
$fred destroyjohn destroy
Daniele Messina, Ilenia Tinnirello
69;����69;����
# creating an object of class FatherFather johnjohn
�������������� ������� ����������������9;���:
# calling instproc agejohn age 50
# reading instvar agejohn set age50
Daniele Messina, Ilenia Tinnirello
*�����������'������������*�����������'������������
�6�� ���������� ���!���������init ����destroy���#�����#�����������������������������9;���3
�B���������������������init ����destroy���#����3
Father instproc init {args} {
...
}
Daniele Messina, Ilenia Tinnirello
:��� G������#����:��� G������#����
�&���������#�����������69;����� ����#��!���������� G������������� �� ������#����������������������#�����������/�����#�������8�#������������������!������������9;����������������#��������������3
Father joejoe age 40
Father joe -age 40