Programación en OTcl

1,333 views
1,293 views

Published on

OTcl es un lenguaje muy práctico y sencillo, pero la mayoría lo conoce más por su relación con el programa de simulación NS-2.
No encontre mucha información en español sobre programación en OTcl así que decidí compartir esta presentación con una introducción sencilla para quienes deseen iniciarse con este lenguaje de programación.

Buena suerte.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,333
On SlideShare
0
From Embeds
0
Number of Embeds
739
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Programación en OTcl

  1. 1. Otcl Tool Command Language Introducción Ing. Jesus Vilchez Sandoval
  2. 2. Introducción • Tcl es un lenguaje utilizado por millones de personas en el mundo. Es un lenguaje muy simple con una sintaxis muy sencilla que permite una integración muy fácil con otros lenguajes de programación. Tcl fue creado por Jhon Ousterhout – de la Universidad de Stanford. Las características mas relastantes de este poderoso lenguaje son: • • • • • • Permite un rapido desarrollo Provee una interfaz grafica Es compatible con muchas plataformas Integracion flexible Facil de usar Libre
  3. 3. PARAMETROS Y COMANDOS BASICOS Ing. Jesus Vilchez Sandoval
  4. 4. Algunas funciones básicas de Tcl y Otcl Ingresamos a la Shell de TCL • Primero debemos abrir un terminal • Luego ejecutamos el comando sudo tclsh para habilitar la Shell de Tcl. • Deberiamos ver el promtp “%”
  5. 5. Algunas funciones básicas de Tcl y Otcl El comando SET • Asignación de valores a variables a traves del comando set, por ejemplo: set b 0 • Asigna el valor 0 a la variable b. Esto es equivalente a decir b=0; en lenguaje C por ejemplo. Otros ejemplos: set c 5 set x 55
  6. 6. Algunas funciones básicas de Tcl y Otcl El signo # (numeral) • Este signo indica una línea de comentario, la cual no es parte del programa por lo tanto el interprete no ejecutara esta línea.
  7. 7. Algunas funciones básicas de Tcl y Otcl El signo $ (dollar) • Si queremos saber cual es el valor contenido en una variable debemos anteponer el signo $ antes de la variable, por ejemplo set x $b • Asigna el valor contenido en la variable b a la variable x. Otros ejemplos: set c 5 set x $c ;entonces X vale 5
  8. 8. Algunas funciones básicas de Tcl y Otcl El comando PUTS • Este comando permite imprimir un resultado, por ejemplo set b 10 puts b • Mostrara en pantalla el valor 10 Otros ejemplos: puts “hola mundo” puts “el valor almacenado en b es $b”
  9. 9. Algunas funciones básicas de Tcl y Otcl El signo ; (punto y coma) • Este signo permite la ejecución de 2 o mas comandos en una misma linea set a 55; set b $a Otros ejemplos: puts "¡Hola Mundo!" ; puts "otra linea de caracteres“ set i 0 ; #Comentario, con un ';' para separarlo del comando
  10. 10. Algunas funciones básicas de Tcl y Otcl Operaciones matemáticas con el comando Expr • Por ejemplo si deseamos asignar a la variable x la suma de las variables a y b, debemos escribir set x [expr $a + $b] Otros ejemplos: set y [expr 3 * 15] set x [expr $y+ 55] ;entonces X vale 100 set c [expr $a + $b] set d [expr [expr $c * $c] + $x]
  11. 11. Algunas funciones básicas de Tcl y Otcl Tipos de variables (Not Typed) • En Tcl las variables, son sin tipo, por lo tanto una variable puede ser entero o cadena dependiendo del valor que le asignamos. • Por ejemplo, si asumimos que deseamos imprimir el resultado de la división 1/60 tendríamos las siguientes opciones: • puts “[expr 1/60]” ;#entonces el resultado será 0!. • puts “[expr 1.0/60.0] ;#entonces obtendremos el resultado correcto ya que los valores serán interpretados como enteros. Booleanos, Reales, Cadenas, Listas, Diccionarios, Tablas asociativas
  12. 12. Algunas funciones básicas de Tcl y Otcl Variables escalares • Las variables booleanos, numéricos, cadenas, listas y diccionarios son llamados tipo escalares, debido a que pueden convertirse automáticamente en el tipo adecuado, por ejemplo una cadena puede ser una lista: % set frutas albaricoque % puts $frutas albaricoque % set frutas "pomelo naranja banana" pomelo naranja banana % puts [lindex $frutas end] banana % puts [lindex $frutas 1] naranja
  13. 13. Algunas funciones básicas de Tcl y Otcl set data [gets stdin] # or set numchars [gets stdin data] Ingresando datos desde el teclado - gets • En ocasiones necesitamos ingresar datos desde el teclado, en lenguaje C por ejemplo utilizamos la función scanf. • Si queremos caputar datos desde el teclado en Tcl debemos utilizar la función gets tal como se muestra en el siguiente ejemplo: • set data [gets stdin] ;#donde data es el nombre de la variable 55 • put $data ;#esto imprimirá el valor almacenado en data (55 en el ejemplo) puts -nonewline "Enter your name: " flush stdout set name [gets stdin] puts "Hello $name" Recordemos el uso de fflush (stdout) En Tcl se usa flush stdout
  14. 14. Algunas funciones básicas de Tcl y Otcl Crear Archivos • Para crear un archivo, debemos asignar un nombre de archivo y un nombre de puntero el cual será utilizado por Tcl para referirse a él. Esto puede realizarse con el comando: • Set file1 [open filename w] ;#donde file1 es el nombre del puntero y filename es el archivo. #cuando se ejecuta el comando anterior el sistema devuelve el channelId. p.e. file5 #es posible cerrar el archivo con el comando “set file1 [open channelId]” • Podemos usar el comando puts para imprimir algo, pero debemos recordar que puts genera una línea nueva por cada impresión, por lo tanto es posible aplicar el parámetro –nonewline después de puts para evitar la nueva línea.
  15. 15. Algunas funciones básicas de Tcl y Otcl Crear Archivos • Utilizando el comando puts podemos ingresar una cadena de texto al archivo que hemos abierto con el comando anterior. Como se aprecia en el siguiente ejemplo #El siguiente comando creara también el archivo con el nombre: mi_archivo1 set archivo1 [open mi_archivo1 w] #es posible también usar r (read) pero sobre un archivo existente. #Luego podemos ingresar una cadena de texto puts $archivo1 “Hola mundo mi variable es c y contiene el valor $c” #Finalmente cerramos el archivo set archivo1 [close channelId] ;#reemplaza channelId por el valor
  16. 16. Algunas funciones básicas de Tcl y Otcl Ejecución de comandos de Unix con el comando exec • Es posible ejecutar comando de unix desde la Shell de Tcl. Ejemplo: exec ifconfig exec clear exec date exce cal Otro ejemplo: exec xgraph data & exec whoami ;# este comando ejecutaria el ploteo de data
  17. 17. Algunas funciones básicas de Tcl y Otcl Agrupamiento { } , “ ”: • Las formas de agrupar en Tcl son entre llaves y entre comillas dobles. • Con “ ”, se representa una cadena de texto con el adicional de que es posible intercalar el valor de las variables dentro de las comilla colocando el signo $ antes de la variable. • Con { }, también pueden contenerse cadenas pero no es posible intercalar el contenido de las variables.
  18. 18. Algunas funciones básicas de Tcl y Otcl Bloques ( ) , [ ]: • Las formas de agrupar en Tcl son entre llaves y entre comillas dobles. • Los ( ), sirven para encerrar los índices en las tablas asociativas, o para agrupar expresiones aritméticas. • Con [ ], realizan la sustitución del contenido de un resultado. Tambien podria escribirse asi: puts [ expr {1 + [set u 342]} ] puts $u
  19. 19. Ejercicios 1. Elabore un programa en Tcl que permita ingresar el valor de a,b,c,y d y muestre el promedio. 2. Elabore un programa en Tcl que permita ingresar el nombre y el precio de un artefacto y descuente el 10% del precio, e imprima en pantalla un mensaje que indique “el producto a comprar es xxxx y el precio final es xxxxx”. 3. Elabore un programa que le permita ingresar una cadena de texto y luego imprimar un archivo llamado mensaje.txt con el contenido de la cadena.
  20. 20. Estructuras condicionales If - else Ing. Jesus Vilchez Sandoval
  21. 21. Estructura condicional IF-ELSE Estructura • La estructura de este comando es: If {expression} { <execute some commands> <execute some commands> }else{ <execute some commands> <execute some commands> … } Ejemplo 1: if {$x<0} { set x 0 } elseif { $x<5 } { set x 5 } else { set x 10 } Ejemplo 2: if {$x>0} { set x 55 } elseif { $x>5 } { puts “mayor 55” } else { puts “menor 55” } Ejemplo 3: if {$x==0} { puts “cero” } elseif { $x<5 } { set x 5 } else { set x 10 } Ejemplo 4: if {$x!=0} { puts “No cero” } elseif { $x<5 } { set x 5 } else { set x 10 }
  22. 22. Ejercicios 1. Elabore un programa en Tcl que permita ingresar 2 numero y muestre el mayor 2. Elabore un programa en Tcl que permita ingresar un nombre y la edad de una persona y si es mayor de 17 años que muestre el mensaje mayor de edad, de lo contrario que muestre el mensaje menor de edad. 3. Elabore un programa que permita ingresar un numero e indique si el numero ingresado es par o impar.
  23. 23. Estructura Selectiva SWITCH Ing. Jesus Vilchez Sandoval
  24. 24. Estructura Selectiva SWITCH Estructura • La estructura de este comando es: switch { $variable} { unCommando unCommando .... } Ejemplo: set color azul switch $color { rojo { puts "FF0000" } azul { puts "0000FF" } verde { puts "00FF00" } blanco { puts "FFFFFF" } negro { puts "000000" } default { puts "desconocido" } }
  25. 25. Estructura Repetitiva – Bucle While Ing. Jesus Vilchez Sandoval
  26. 26. Estructura Bucle WHILE Estructura • La estructura de este comando es: while { unaExpresionLogica } { unCommando unCommando .... } Ejemplo 1: set x 1 while {$x<10} { puts $x set x [exp $x+1] } Ejemplo 2: set x 10 while {$x>0} { puts $x set x [exp $x-1] }
  27. 27. Ejercicios 1. Elabore un programa que muestre todos los números impares de 3 cifras 2. Elabore un programa en Tcl que permita ingresar un numero entero y que muestre el factorial del numero como resultado 3. Elabore un programa que permita ingresar numero, y los muestre en pantalla hasta que se ingrese el valor 0.
  28. 28. Estructura Repetitiva – Bucle FOR Ing. Jesus Vilchez Sandoval
  29. 29. Estructura Bucle FOR Estructura • La estructura de este comando es: for {set i 0} {$i<10} {incr i} { execute some commands } Ejemplo 1: for {set i 0} {$i<10} {incr i} { puts $i } Ejemplo 2: foreach i [list "youpii" "aujourd'hui" "il fait beau" "bravo !" "bravo !"] { puts $i } # no es necesario usar el comando list con valores fijos; esto es equivalente foreach i {"youpii" "aujourd'hui" "il fait beau" "bravo !" "bravo !"} { puts $i } foreach a $listaA b $listaB c $listaC { puts "$a $b $c" } foreach {x y} [list Sr Gaston Sra Jeanne Sr Robert Sra Raymonde] { puts "$x $y" }
  30. 30. Ejercicios 1. Elabore un programa que permita generar la siguiente serie : 1, 4, 9, 16, 25, …, 100 2. Elabore un programa en Tcl que permita ingresar un número entero y luego visualice todos sus divisores. 3. Elabore un programa que permita calcular y visualice la suma de los todos los números impares de 3 cifras. 4. Elabore un programa que permita ordenar un vector de numero en orden creciente utilizando el método de la burbuja.
  31. 31. Procedimientos Procedure Ing. Jesus Vilchez Sandoval
  32. 32. Procedimientos Crear Procedimientos • Tcl permite crear procedimientos. Estos procedimientos pueden retornar algún valor en cuyo caso se almacena en una variable con el comando return. • La estructura para crear un procedimiento es la siguiente: Creando un procedimiento llamado azul: proc azul { param1 param2 …} { global var1 var2 <commands> return $something }
  33. 33. Procedimientos • El procedimiento recibe algunos parámetros que pueden ser objetos, archivos o variables. En el ejemplo anterior estos parámetros se llaman param1 y param2, etc. Estos parámetros serán usados dentro del procedimiento • Si escribimos azul x y entonces los valores x, y serán pasados al procedimiento. Si param1 y param2 son modificados con el procedimiento, esto no afecta los valores de x, y. Por otro lado si nosotros deseamos que el procedimiento sea capaz de afectar directamente las variables externas a el, entonces debemos declarar estas variables como globales. En el ejemplo anterior var1 y var2
  34. 34. Procedimientos Ejemplo: #crear procedimiento. proc test {} { set a 43 set b 27 set c [expr $a + $b] set d [expr [expr $a - $b] *$c] puts “c= $c d=$d” 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]” } } } #llamando el procedimiento test
  35. 35. Procedimientos Ejemplo: #Obtener el factorial de un numero proc Factorial {x} { for {set result 1} {$x>1} {set x [expr $x - 1} { set result [expr $result * $x] } Return $result } set res [Factorial $f] puts “Factorial de $f es $res
  36. 36. Ejercicios 1. Elabore un procedimiento que permita generar la siguiente serie : 1, 4, 9, 16, 25, …, 100 2. Elabore un procedimiento en Tcl que permita ingresar un número entero y luego visualice todos sus divisores. 3. Elabore un procedimiento que permita ordenar un vector de numero en orden creciente utilizando el método de la burbuja. 4. Elabore un programa que muestre todos los números impares de 3 cifras 5. Elabore un programa en Tcl que permita ingresar un numero entero y que muestre el factorial del numero como resultado
  37. 37. Xgraph Aplicación para plotear de datos de propósito general Ing. Jesus Vilchez Sandoval
  38. 38. Introducción • Xgraph es una aplicación para plotear datos en 2D con opciones interactivas de paneo, zoom, impresión, entre otras. Puede plotear datos desde cualquier cantidad de archivos sobre un mismo grafico y puede manejar tamaños ilimitados de datos. • Xgraph produce un archivo wysiwyg en formato POSTSCRIPT, PDF, PPTX, y ODP. • Xgraph incluye la opción de especificar el color del ploteo para graficos con multiples colores y también es posible variar el grosor de las lineas
  39. 39. Formatos • Xgraph espera datos en el formato (x,y). Tipicamente debe haber un punto xy por línea. Los valores de los datos pueden estar separados por un espacio en blanco (o tab), comas, punto y comas. • Los datos de multicolumna tienen muchos valores por línea. Cada valor va separado por espacio en blanco (o tab), comas, punto y comas. Fuente de información http://www.xgraph.org/
  40. 40. Bibliografía • Altman, E., & Jimenez, T. (2004). NS Simulator for beginners. Merida. • Capella Hernández, J. (s.f.). Introducción al simulador de redes NS-2. Valencia: Universidad Politecnica de Valencia. • Fundación Wikimedia, Inc. (10 de setiembre de 2013). wikipedia. Obtenido de http://es.wikipedia.org/wiki/Tcl • UC Berkeley, LBL, USC/ISI, and Xerox PARC. (2011). The NS manual .

×