построения 8 различных гистограмм;
зависимости и статистика по задержкам, вариациям задержек, времени обработки, периодам кругового обращения, количеству промежуточных узлов, производительности и пр.;
зависимости и статистика по всей сети, отдельно по узлам и звеньям;
результаты могут быть сохранены в текстовые файлы, а графики – в формате .tiff или .jpeg.
31
Лабораторная работа №1
Применение языка Tcl для моделирования информационных систем
Цель работы: Овладеть основными принципами создания, отладки и запуска скриптов и процедур на языке Tcl (Tool Command Language). Научиться работать в среде ns2 под управлением эмулятора Cygwin операционной систе-
мы Linux.
Краткая теория:
1. Команды Tcl
Присвоение значений переменным: set переменная значение
Пример: set x 10
Значение переменной можно получить, используя символ $.
Например, команда set y $x присвоит y значение 10, ранее присвоен-
ное переменной x.
Вычисление математических выражений: expr выражение Синтаксис математических выражений такой же, как в языке C. Пример: expr 3.4 + 2
С использованием переменных: expr $x*$y
Вложенные команды:
Пример: set y [expr $x/2]
Переменная y получит результат вычисления: значение x разделить на 2.
Вывод на экран: puts содержимое
Пример: puts [expr {$y*$x}]
2. Математические операции
См. рисунок 22.
Рисунок 22 – Математические операции в Tcl
32
3.Логические операции
&&- Логическое и
||- Логическое или
4.Управляющие конструкции
4.1.Ветвление
Синтаксис: if {условие}{команды} else {команды}
Пример: if {k > 0}{ return $k } else {
return [expr {$k**$k}]
}
4.2. Циклы
Синтаксис: while {условие} {
команды
}
Пример: while {i <= 10} {
incr i
}
Синтаксис: for {инициализация}{условие}{действие}{
команды
}
Пример: set p 1
for {set i 1} {i <= 5} {incr i} { set p [expr {$p*$i}]}
5. Математические функции
abs(x)
round(x)
sin(x), cos(x), tan(x)
log(x), log10(x)
sqrt(x), pow(x,y)
Пример:
set a 2;
set b [expr pow
-абсолютное значение (модуль);
-округление;
-тригонометрические функции;
-логарифмирование;
-извлечение корня и возведение в степень.
($a,3)];
33
puts $b;
6. Процедуры
Создание процедуры:
proc имя {параметры} {
команды
return результат
}
Запуск процедуры: имя фактические параметры
Пример:
proc factorial {n} {
if {$n |
<= |
1}{ |
return |
1 } else { |
|
set i |
1 |
|
set p |
1 |
|
while |
{$i |
<= $n} { |
set p |
[expr {$p*$i}] |
|
incr i |
} |
|
return |
$p |
} |
}
# Пример вызова процедуры factorial
set n 5
set result [factorial $n] puts $result
Задание:
Запрограммировать две формулы (по варианту). Получить результат выполнения скрипта.
Порядок выполнения:
1.В любом текстовом редакторе (например, Notepad или Notepad++) создать скрипт на языке Tcl для выполнения задания (по варианту из таблицы 1) и сохранить его с расширением .tcl (например, lab1.tcl) в папку d:/ns2/. (Папку можно назвать по-другому, латинскими буквами, без пробелов и знаков препинания).
2.Запустить эмулятор Linux Cygwin.
3.Запустить в командной строке Linux графический X-сервер командой startx. (Этот пункт необязателен – он будет нужен для сценариев ns2).
34
4.Указать путь к файлам примеров командой: cd d:/ns2/.
5.Запустить скрипт на выполнение командой: ns lab1.tcl.
6.Просмотреть результат (можно проверить результат в Mathcad).
7.Повторить пп.1-6 для второго задания.
8.Сдать и защитить лабораторную работу.
9.Выйти из эмулятора командой exit.
Содержание отчёта:
1.Номер, название и цель лабораторной работы.
2.ФИО и группа студента, выполнившего лабораторную работу.
3.Номер варианта и задание к лабораторной работе.
4.Tcl-скрипт в соответствии с заданием.
5.Результаты выполнения лабораторной работы со скриншотами.
6.Описание выполнения лабораторной работы и полученных результатов.
7.Выводы по проделанной работе.
Контрольные вопросы:
1.Перечислите составляющие пакета ns2.
2.Что представляет собой скрипт ns2.
3.Как присвоить значение переменной в языке Tcl?
4.Как вывести на экран значение переменной в языке Tcl?
5.Какие выражения и команды языка Tcl вы знаете?
6.Что представляет собой язык OTcl?
7.Как создать и запустить процедуру?
Задания:
1. y ((x5x)!)x
2.
3.
y (x3!x)!
x! x
y |
|
|
|
4x! 2x |
|||
|
|
y2x! (2x)!
4.2x
35