formato general _español 3 (reparadocopia)

41
CAPITULO 1 Formato General del Programa Todos los programas RAPL-3 siguen el mismo formato general. Algunos elementos son requeridos. Otros elementos son opcionales dependiendo de la complejidad del programa. RAPL-3 (Robotics Application Programming Language). El Programa Principal Cada programa RAPL-3 contiene una función main. main Descripción Una función requerida para cada programa. Requiere main y end main para indicar el comienzo y el final de cada programa. main es el lugar en el programa donde se inicia la ejecución. Sintaxis main statements end main Ejemplo main Teachable cloc pick, place move(pick) grip_close() move(place) grip_open() end main

Upload: santos-gabriel-crus

Post on 04-Aug-2015

50 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Formato General _español 3 (ReparadoCopia)

CAPITULO 1

Formato General del ProgramaTodos los programas RAPL-3 siguen el mismo formato general. Algunos elementosson requeridos. Otros elementos son opcionales dependiendo de la complejidad delprograma.

RAPL-3 (Robotics Application Programming Language).

El Programa PrincipalCada programa RAPL-3 contiene una función main.

mainDescripción Una función requerida para cada programa. Requiere main y end main para indicar

el comienzo y el final de cada programa.

main es el lugar en el programa donde se inicia la ejecución.

Sintaxis main

statements

end main

Ejemplo main

Teachable cloc pick, place

move(pick)

grip_close()

move(place)

grip_open()

end main

Page 2: Formato General _español 3 (ReparadoCopia)

Líneas de un programa

Un programa RAPL-3 consiste de un número de líneas del texto ASCII. Todas lasdeclaraciones son terminadas por la línea final declarada.

Continuación de líneas

Para continuar una declaración en el siguiente renglón se coloca una \ (diagonalinvertida) al final del primer renglón. Por ejemplo:

a = b + c + d \

+ e + f

Así es leído como una sola declaración.

Sin el carácter de continuación.

a = b + c + d

+ e + f

La primer parte de la declaración acaba en el final de la primera línea y se lee comouna declaración. La segunda parte es un fragmento que causa error de sintaxis alcompilar.

Líneas que terminan con una coma (,) se considera automáticamente que soncontinuados. Por ejemplo.

printf (“ the coordinates are {}, {}, {}\n” ,

x, y, z)

Page 3: Formato General _español 3 (ReparadoCopia)

ComentariosUn comentario inicia con dos - punto y coma (; ;) y se extiende al extremo de lalínea. Un comentario puede empezar al principio de una línea o después del algúncódigo del programa. Po ejemplo:

; ; calculate the position error:

x_ error = x_pos - desired_x_pos ; ; for the x_axis

y_ error = y_pos - desired_y_pos ; ; for the y_axis

z_ error = z_pos - desired_z_pos ; ; for the z_axis

Identifier - IdentificadoresUn identificador es usado para darle nombre a una variable, tipo, subrutina, funcióno comando.

Set de caracteresUn identificador siempre inicia con una letra. Este puede ser seguido por el cero omás dígitos, letras, o un guion bajo ( _ ).

a b c d e f g h i j k l m n o p q r s t u v w x y z

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

0 1 2 3 4 5 6 7 8 9

_ Set de caracteres válidos para nombrar identificadores

ArgumentosLos identificadores se pueden escribir en mayúsculas (ABCDE), minúsculas (abcde)o mixtas (AbCdE). El lenguaje de programación RAPL-3 es un caso sensitivo conidentificadores. Por ejemplo: los siguientes son todos los identificadores diferentes:

a ; ; lowercase - minúsculaA ; ; uppercase - mayúsculasymbol ; ; lowercase - minúsculasSYMBOL ; ; uppercase - mayúsculassYmBoL ; ; mixed – combinado mayúsculas y minúsculasSyMbOl ; ; mixed – combinado mayúsculas y minúsculas

Page 4: Formato General _español 3 (ReparadoCopia)

LongitudUn identificador puede ser de cualquier longitud, pero los primeros 32 caracteresson los significantes. Po ejemplo: los siguientes identificadores no son diferentes.

location_sensor_data_collection_1

location_sensor_data_collection_2

Para hacerlos diferentes solo basta cambiar una letra minúscula por una mayúscula, y aquíya son diferentes:

location_sensor_data_collection_1

Location_sensor_data_collection_2

EjemplosHay algunas posibilidades de identificadores validos.

Validosa ; ; a single letter - una simple letranum ; ; several letters - varias letrasmy_symbol ; ; letters with underscore - letras con guión bajoMySymbol ; ; letter of different cases - letras con mayúsculas y minúsculasx3 ; ; letter with digit - letras con númerosrack_loc_12 ; ; letters, underscores_digits - letras con guión bajo y números

Invalidos

3a ; ; begins with a digit, not a lettermy$symbol ; ; uses a character not in the valid character set&num ; ; uses a character not in the valid character se and does not

begin with a letter

Label - EtiquetasUna declaración puede ser marcada con un identificador especial llamado etiqueta.La etiqueta tiene doble dos puntos (: :) después del identificador. Una etiqueta esusada con el objetivo de una declaración goto.Syntax

label_identifier: : statement

Donde label_identifier es el nombre de la etiqueta y sigue las mismas reglas de losidentificadores, y statement es la declaración de la línea etiquetada.

Page 5: Formato General _español 3 (ReparadoCopia)

Este es un ejemplo de cómo se utilizaría una etiqueta en un programa, en este casola etiqueta es AA. Así como está el ciclo es indefinido…

main

goto AA:

statements

AA

end main

La declaración puede ser una línea vacía.

Examples

my_label : : current_location = num

Start_again : :

Keywords – Palabras claveLos siguientes identificadores son palabras clave de RAPL-3. Estas palabras sonreservadas para el lenguaje de RAPL-3 y no pueden ser redefinidas. En particular,las siguientes palabras no pueden ser usadas para nombrar alguna variable,subrutina, función o comando:

and gloc sizeof

break goto static

_builtin if step

case ignore string

cloc import struct

command int sub

comment livbersion teachable

const loop then

Page 6: Formato General _español 3 (ReparadoCopia)

continue main to

do mod try

else not typedef

elseif of union

end or unteachable

enum ploc until

except private var

export proto void

float raise volatile

for resume while

func return with

global retry

Page 7: Formato General _español 3 (ReparadoCopia)

CAPITULO 2

Tipos de Datos y Variables

Los programas RAPL-3 pueden trabajar con muchos tipos diferentes de datos ytambién permite usar tipos de datos definidos. Este capitulo presenta los tipos dedatos básicos soportado por RAPL-3 y luego veremos los tipos de usuariosdefinidos que pueden ser construidos.

Tipos de Datos BásicosRAPL-3 soporta los siguientes tipos de datos básicos.

Nombre Descripción Tamaño (bytes)int Números enteros

(Rango: -2147483648 a +2147483648)4

float Números con punto decimal(Rango: +- 1.7 x 10 ³8.

4

string Cadena de caracteres(Rango: de 0 a 65535 caracteres

4 + numero decaracteres

cloc Locación cartesiana 36

ploc Locación de precisión 36

void Usado para formar indicadores genéricos

int

Un int ó entero, es un número sin punto decimalEjemplos: 0, 1, 23, 456, -7, -89

float

Un float es un numero con punto decimal o parte de una fracción y también es unun numero exponencial. Un número flotante tiene siete dígitos significantes.Ejemplo: 4.75, -99.99, 1.0, 3.141593

Page 8: Formato General _español 3 (ReparadoCopia)

string

Un string es un set de caracteres: letras mayúsculas o minúsculas, dígitos,puntuación y otros caracteres gráficos, y el espacio en blanco. En un string undígito es un carácter y no tiene valor numérico como en un número (entero oflotante).

cloc

Un cloc o locación cartesiana, representa un punto en el espacio de trabajo delrobot definido por coordenadas cartesianas. La coordenadas tienes tres elementostraslacionales (a lo largo del eje) x, y, z y tres elementos rotacionales (alrededor deleje) z, y, x. Los valores de un cloc son independientes de la posición del brazo y deltipo de brazo.

ploc

Un ploc o locación de precisión, representa un punto en el espacio de trabajo delrobot definido por incrementos de movimiento rotacional, específicamente elencoder cuenta a cada articulación del brazo y de cualquier eje adicional (j1, j2, j3,j4, j5, j6, j7, j8). Los valores de un ploc son independientes en el robot.

Declarations - Declaraciones

La mayoría de cada variable es declarado como un tipo especifico de variable, ( int,float, string, cloc, ploc). Una declaración declara el tipo de variable y el nombre de lavariable.

Tú puedes declarar una variable explícitamente o implícitamente. Es mejorprogramar declarando todas las variables explícitamente.

Page 9: Formato General _español 3 (ReparadoCopia)

Declaraciones explicitas

Cuando declaras una variable explícitamente, se lista en una declaración de ladeclaración antes de que usted lo use en el programa.

Pueden listarse variables declarados con el mismo tipo de declaración, separadospor comas.

Syntax

Type identfier

Type identifier, identifier, identifier……

Donde

type es el tipo de dato y

identifier es el nombre de la variable y sigue las mismas reglas para losidentificadores.

Ejemplos

Tipo Ejemplo Descripción

Int int i i es un entero

float float a, b a y b son flotantes

string string[10] mensaje mensaje que puede tener hasta 10 caracteres

cloc cloc pick_1, place_1 Pick_1 y place_1 son locaciones cartesianas

ploc ploc pick_2, place_2 Pick_2 y place_2 son locaciones de precisión

Declaraciones implícitas

Cuando declaras una variable implícitamente, indicas el tipo de variable con unsigno antes de su nombre para usarlo por primera vez en el programa.

Si una variable se usa sin ser declarada explícitamente, el compilador busca uncarácter de declaración implícita sobre el nombre de la variable y determina el tipode variable. Si no hay ningún prefijo de carácter, el compilador define por defaultcomo un tipo entero e indica una advertencia.

Page 10: Formato General _español 3 (ReparadoCopia)

En general, las declaraciones implícitas deben evitarse, siempre se debe declararvariables explícitamente.

sintax

[prefix_character] identifier

Donde

Prefix_character es el signo indicando el tipo de dato, y identifier es el nombre de lavariable y sigue las mismas reglas de los identificadores.

Signos de declaraciones implícitas.

Prefix character Tipo Ejemploninguno int a = 2

% porcentaje float %b = 10.25

$ signo de pesos string[64] $m = “Robot working. \ n”

_ guion bajo cloc here _z

# numeral ploc here #y

Ejemplosejemplos

ETipo Ejemplo Descripcionint e = c + d e es definido como un entero, ya que no tiene ningún

signo antes del identificador.

float %h = f * g h es definido como un numero decimal(punto flotante)

string $notice9 = “stop” notice9 es definido como una frase que puede tenerhasta 64 caracteres, incluyendo dígitos y signos.

cloc Here(_palce22) place22 es definido como una locación cartesiana

ploc here(#material33) material33 es definido como una locación de precisión.

Page 11: Formato General _español 3 (ReparadoCopia)

string – Cadena de caracteresEl tipo string es esencialmente una serie de caracteres con un numero fijo, queindica la cantidad de caracteres.El tipo string siempre debe tener un subíndice, indicado entre corchetes [ ].

String [numero ]Usualmente, el subíndice contiene un número que especifica la longitud máxima delstring que puede ser almacenado, tal como string[10] o string[64].

Sintaxis

String[number] identifier

Donde

string y los corchetes son requeridos,number es el número de caracteres del string, yIdentifier es el nombre de la variable y sigue las mismas reglas para losidentificadores.

string[ ]En algunas circunstancias, el subíndice puede estar vacío.

string[ ]

Esta declaración string sin dimensión solo puede ser usado en las siguientescircunstancias. Un simple string siendo inicializado. Cunado string[ ] es usado, el compilador

determina el tamaño del string. En este ejemplo el compilador hace notice9 aun string[18].

String [ ] notice9 = “End of work cycle.” Son 18 caracteres.

Page 12: Formato General _español 3 (ReparadoCopia)

Arrays – ArreglosUn arreglo es una colección de objetos de datos donde todos los datos son delmismo tipo y todos usan el mismo identificador pero cada uno tiene un únicosubíndice.

syntax

base_type [ subscript_list ] identifier

Donde

base_type es el tipo de dato de cada elemento en el arreglo,

subscrip_list es un numero o números separados por un coma dependiendode cada dimensión y

identifier es el nombre de la variable y sigue las mismas reglas de losidentificadores.

Un subíndice debe de ser una expresión constante, tal como un simple entero. Elcompilador debe ser capaz de calcular el valor de cada expresión constante.

TiposTu puedes tener un arreglo de cualquier tipo o un arreglo de arreglos.

DimensionesNo hay límites sobre la numeración de dimensiones permitida, excepto por arreglosde tipo enseñable.

Numerando

In RAPL-3, la numeración inicia con 0.

Declaración Números deelementos

numerando

Int [4] a 4 a[0], a[1], a[2], a[3]

Int [10[ a 10 a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9]

Int [20] a 20 a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9]a[10], a[11], a[12], a[13], a[14], a[15], a[16], a[17], a[18], a[19]

Int [100] a 100 a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9]hasta ela[90], a[91], a[92], a[93], a[94], a9[5], a[96], a[97], a[98], a[99]

Page 13: Formato General _español 3 (ReparadoCopia)

Un arreglo Dimensional

Un arreglo de dos Dimensiones (Bi-dimensional)

Page 14: Formato General _español 3 (ReparadoCopia)

Un arreglo Multi-dimensional

DeclaracionesNo puedes declarar un arreglo implícitamente.

Sin embargo, si usas una declaración implícita en una declaración con un arreglo,no te causara problemas, si el arreglo es previamente declarado y el carácter de ladeclaración implícita se relaciona a la base del tipo de dato del arreglo. Por ejemplo:

Ploc [ 16, 16 ] a……

here ( # a [1, 1] )

Ejemplos:

mainteachable int [ 5 ] numint subíndice

for subíndice = 0 to 4printf(“ \n num[ { } ] = { }”, subíndice, num[ subíndice])end for

end main

Si al arreglo le metiéramos los valores de 3, -12, 10, 32 y -1 nos lo mostraría de lasiguiente manera:

num [0] = 3num [1] = -12num [2] = 10num [3] = 32num [4] = -1

Page 15: Formato General _español 3 (ReparadoCopia)

Ejemplo con un arreglo bi-dimensional

mainteachable int [5,2] num

int índice, subíndicefor índice = 0 to 4 ;; indicador de renglon

for subíndice = 0 to 1 ;; indicador de columnaprintf(“\n num[{ },{ }] = { }”, índice, subíndice, num[índice, subíndice])

end forend for

end main

Al correr el programa me va a ir mostrado el orden de la siguiente manera: losvalores se mostraran después de que se los hallamos ingresado por el teclado, aquísolo se muestra el orden.

mum [0,0]num [0,1]num [1,0]num [1,1]num [2,0]num [2,1]num [3,0]num [3,1]num [4,0]num [4,1]

Page 16: Formato General _español 3 (ReparadoCopia)

Teachables – EnseñablesUna variable que es enseñable es accesible desde fuera del programa.

UsoTeachable proporciona una manera fácil para modificar un valor de una variable

desde fuera del programa, almacena el valor y usa el valor en un programa. Usandoesta característica evita escribir valores en el programa y tener que re-escribir esosvalores cuando se requiera un cambio en el programa. Tambien evita almacenar losvalores en un costumbre de archivo de usuario designado y tener cuidado de editarel archivo a cambiar valores e incluye una rutina en el programa que lee el dato delarchivo.

Acerca de los datos enseñables y sus valores son almacenados en el archivo de lavariable. Cuando tú corres un programa, la operación del sistema toma las variablesdel programa y usa esos valores de las variables justo antes de que empiece acorrer.

Variable archivo (v3)Acerca de las variables enseñables y sus valores que son almacenados en elarchivo de la variable (también conocido como archivo v3). Tú modificas el dato oenseñas la locación a otras variables usando el teach pendant o la aplicación Shell.

Declaraciones

Tú haces una variable enseñable escribiendo la palabra clave “teachable” antes dela declaración del tipo de dato.

Sintaxteachable type identifierteachable type identifier, identifier, identifier…..

dondeteachable es la palabra clave necesariatype es el tipo de dato yidentifier es el nombre de la variable y sigue las mismas reglas de los

identificadores.

Page 17: Formato General _español 3 (ReparadoCopia)

Ejemplos

LimitacionesHay límites sobre el cual los tipos de datos son enseñables. Un arreglo de variablesdimensional puede ser enseñable. Dos arreglos dimensionales (bi-dimensional)puede ser enseñable, excepto string[ n ]. Un arreglo tri-dimensional o másdimensiones no pueden ser enseñables. El tipo void no puede ser enseñable.

-Una variable no puede ser en ambas enseñable e inicializada. Tu no puedesescribir. Teachable int a = 5

Page 18: Formato General _español 3 (ReparadoCopia)

CAPITULO 5

Control de Flujo

Cuando un programa es ejecutado, generalmente la computadora ejecuta unalínea, luego la siguiente línea, luego la siguiente línea. Para que un programa hagaen orden las cosas útiles, por ejemplo, para repetir una tarea particular 10 vecesdebemos poder alterar la manera en que el control del programa pasa de línea enlínea.

gotoBrinca a una declaracion marcada con una etiqueta.

Una etiqueta es nombrada con un identificador, y sigue las mismas reglas de losidentificadores, la etiqueta puede ser antes o después de la instrucción goto.

Un goto puede brincar solo una declaración dentro de un programa main o dentrode un subprograma (sub, func ó command). Un goto ni puede brincar entre elprograma principal y un subprograma, ni entre subprogramas.

Caution La instrucción goto debe de ser usado con precaución. El sobreuso de estainstrucción puede ser extremadamente difícil de leer y determinar los errores. Esbueno usar un loop con break o continue, casi siempre puede eliminar la necesidadde usar un goto.

Sintaxis La etiqueta es seguida por doble dos punto ( :: ). La declaración puede estar en lamisma línea o en la siguiente línea.

Identifier:: statement……goto identifieridentifier::statement……goto identifier

Page 19: Formato General _español 3 (ReparadoCopia)

Ejemplo mainteachable cloc punto_a, punto_b, punto_4

;; movimientos indefinidosAA::move (punto_a)move (punto_b)move (punto_4)printf(“ acción infinita”)goto AA

end main

Al correr el programa primero se va a ejecutar la locación cartesiana nombradacomo puno_a, en seguida sigue punto_b y luego el tercer movimiento nombradocomo punto_4 y después de que realizar esos tres movimientos imprime enpantalla la leyenda acción infinita. Al llegar a la instrucción goto hace regresar lasecuencia hasta donde se encuentra la etiqueta AA y vuelve a iniciar, ejecutandolos tres movimientos nuevamente, y eso lo realiza indefinidamente.

If

Descripción Una estructura condicional en el cual las declaraciones solo serán ejecutadas si lacondición especifica es verdadera. Con opcion de usar else o else if que puedenramificar las condiciones.

Inicia con if y termina con end if.Tu puedes usar if con else para ejecutar un set de declaraciones si la condición esverdadera, y ejecutar un set diferente de declaraciones si la condición es falsa. Estaconstrucción es de dos ramas. La palabra clave else if permite una declaración if aevaluar varias posibilidades de condiciones, creando un ramificación decondiciones.

La declaración if puede ser arbitrariamente anidada.

Sintaxis (a) una simple declaración if:

if expression……condition…..instruction…….

end if

Page 20: Formato General _español 3 (ReparadoCopia)

Ejemplo if ( curr_locnum <= num_locs )

move (#safe_path)

end if

Si la condición es verdadera (curr_locnum es menor o igual que num_locs), ladeclaración move se ejecutara. Si la condición es falsa, el programa procederá afluir a la línea siguiente después de end if.

Sintaxis (b) if con una clausula else

If expression…..instructions…..

else….Instruction

end if

Ejemplo if ( curr_locnum <= num_locs )

move (#safe_path)

else

curr_locnum = curr_locnum -1

end if

Si la condición es verdadera (curr_locnum es menor o igual a num_locs),ladeclaración move se ejecutara. Si la condición es falsa, la declaración seguirádespués de else y ejecutara (curr_locnum menos 1).

Sintaxis ( c ) construcción if - elseif

If expression 1…..instruction

else if expression 2instrucion

else if expresión 3instruction…..

end if

Page 21: Formato General _español 3 (ReparadoCopia)

Ejemplo if (curr_locnum == 10move (B)

else if curr_locnum <=10move (A)

else if curr_locnum >=11move (C)

end if

Si la condición es verdadera (curr_locnum es igual a diez), la declaración move(B) se ejecutara, si la condición es falsa, salta a la siguiente comparación (sicurr_locnum es menor o igual a diez), si la condición es verdadera, la declaraciónmove(A) se ejecutara y si la condición es falsa, salta a la siguiente comparación(curr_locnum es mayor o igual a 11), si la condición es verdadera la declaraciónmove(C) se ejecutara, si no, el flujo procede a la siguiente línea después de end if.

Ejemplo Este es un ejemplo de una declaración anidada.

If A1 > B2if A1 > C2printf(“\n A1 es mayor que B1 y C2”)end if

end ifif B1 > A1

if B1 > C2printf(“\n B1 es mayor que A1 y C2”)end if

end ifif C2 > A1

if C2 > B1printf(“\n C2 en mayor que A1 y B1”)end if

end if

Page 22: Formato General _español 3 (ReparadoCopia)

loopDescripción Una estructura sin condición.

Inicia con loop y termina con end loop.Puesto que no hay control de expresión, el loop repite todas sus instrucciones porsiempre. Para poder controlarlo se usa un break, continue o si es necesario ungoto, estas tres declaraciones provocan que el proceso salga del flujo dentro delloop. Las declaraciones loop pueden ser anidadas.

Sintaxis loop

Statement(s)end loop

Ejemplo En este ejemplo, el programa conseguirá un número para identificar una locación.El programa continúa indefinidamente hasta que el usuario escribe un númerovalido.

[1] loop[2] printf(“ Enter location number >”)[3] readline ( $str, 10)[4] if str_to_int (num, $str) < 0[5] printf(“ invalid number \n”)[6] continue[7] end if[8] if ((num < 0) or (num > 20))[9] printf (“ number is out of range \n”)[10] continue[11] end if[12] break[13] end loop

En la línea 2 se le pregunta al usuario el número que desea colocar para identificarla locación. De las líneas 3 a 7 se lee una cadena de caracteres y se intentaconvertir el string a un entero. Si esto falla se muestra un mensaje de error ycontinua regresando a la primer declaración después de loop para volver a iniciar.Líneas 8 a 11 verifica que el número este dentro del rango, si esto no es asímuestra otro mensaje de error y nuevamente regresa a la primer declaracióndespués de loop. Por último, línea 12, solo se llega a esta instrucción si el númeroque ingresemos es válido y si esta dentro del rango, esta instrucción hace que ellazo termine y salta a la siguiente instrucción después de end loop.

Page 23: Formato General _español 3 (ReparadoCopia)

break

Descripción Esta instrucción provoca finalizar inmediatamente el lazo de una estructura. Unavez que se llega a la instrucción break salta a la siguiente instrucción después deuntil, end while, end for ó end loop.

Puede ser usado para salir de los siguientes lazos de estructuras: do, while, for óloop.

A menudo es usado con una condición para controlar a break tal como ladeclaración if o else if.

Si tenemos una estructura anidada ya sea con do, while, for ó loop y declaramos abreak en un lazo interno, solo va a terminar ese lazo interno no toda la estructura.

Sintaxis loop……

if (expression)break

end if……

end loop

Ejemplo Un lazo loop que cuenta hasta 10.

int ii = 0loop

if i == 10break

end ifi = i + 1

end loop

EL lazo de loop terminara cuando i sea igual a 10.

Page 24: Formato General _español 3 (ReparadoCopia)

continueOmite el resto del cuerpo de un lazo y va a la siguiente iteración del lazo: puede serla condición de do o while, el paso de incremento de for, o la inicialización de lasiguiente iteración de loop.

Puede ser usado para omitir el resto del cuerpo de las siguientes estructuras: do,while, for o loop.

A menudo es usado con una condición tal como la declaración if o else if.

Si tenemos una estructura anidada ya sea con do, while, for ó loop y declaramosun continue en un lazo interno, solo va a omitir el resto del cuerpo de ese lazointerno no el resto de toda la estructura.

Sintaxis loop…..

if (expression)continueend if

…..end loop

Ejemplo Este programa cuenta del 30 al 50 de 2 en 2 mostrando el conteo en pantalla aexcepción del número 32 y 48.

number = 30loop

if number == 32 or number == 48continue

end ifprintf(“\n number is { }”, number)number = number+2

if number == 50break

end ifend loop

Page 25: Formato General _español 3 (ReparadoCopia)

doDescripción Una estructura que prueba una condición al final del lazo.

Inicia con do y termina con until.El flujo entra al lazo y las declaraciones son ejecutadas hasta llegar a until. Elcontrol de expresión que es una condición es probada. Si la expresión de until esverdadera, el flujo regresa a la primera declaración después de do para iniciarnuevamente. Si la expresión de es falsa, el flujo procede a la declaración siguientedespués de until.

Puesto que el controlador de expresión se ejecuta después del cuerpo del lazo, elcuerpo del lazo es ejecutado por lo menos una vez, aun cuando la primer prueba decontrol de expresión es falsa.

Un break puede ser usado para salir del lazo de do y procede a la línea siguientedespués de until. Un continue puede ser usado para omitir el resto del cuerpo deun lazo do. Un goto puede ser usado para brincar a otra posición en el programa.

La declaración do puede ser anidada.

Sintaxis do……

statement(s)……until expression

Ejemplo Un simple lazo do.

i = 0do

move (safe_path)i = I +1

until i > 4

La declaración move se ejecutara 5 veces, teniendo los valores de i como 0, 1, 2, 3y 4. El lazo termina cuando i tenga el valor de 5.

Page 26: Formato General _español 3 (ReparadoCopia)

whileDescripción Una estructura que prueba una condición al inicio del lazo.

Inicia con while y termina con end while.El control de expresión o sea una condición es probada. Si el control de expresiónes verdadero, el flujo entra al lazo y ejecuta las declaraciones. Una vez que ejecutatodas las declaraciones del lazo regresa al control de expresión para hacer lasiguiente prueba. Si la expresión es falsa, el flujo procede a la declaración siguientedespués de end while.

Si la prueba inicial es falsa, el flujo nunca entrara al cuerpo del lazo y lasdeclaraciones nunca serán ejecutadas.

Un break puede ser usado para salir del lazo while y procede a la siguiente líneadespués de end while. Un continue puede ser usado para omitir el resto delcuerpo de un lazo while. Un goto puede ser usado para saltar a otra posición en elprograma.

La declaración while puede ser arbitrariamente anidada.

Sintaxis while (expression)……

statement(s)……end while

Ejemplo una simple declaración while.

i = 0while < 5

move (safe_path)i = i + 1

end while

La declaración move se ejecutara 5 veces, teniendo los valores de i como 0, 1, 2, 3y 4. El lazo terminara cuando i tenga el valor de 5.

Page 27: Formato General _español 3 (ReparadoCopia)

forDescripción Una estructura que ejecuta un lazo por un número definido de veces.

La estructura for controla el número de veces que el lazo va a ejecutar usando unnumero entero constante o variable como valor inicial a un valor final, y el númerode pasos de incremento del número inicial al número final.

Definir el paso es opcional. Si el step no es especificado, es asumido comoincremento de +1.

Step puede ser negativo para un decremento de un contador. En cualquier eventoel paso especificado debe ser una expresión constante.

For interactúa en la siguiente manera. El contador variable es inicializado con elvalor de expresión_1. Entonces el contador hace la comparación de que si el pasoes mayor que(expresión_3 es positivo) o menor que (si el paso (expresión_3)esnegativo). Si es así la ejecución procede a la primera declaración después del finaldel lazo (después de end for). Y si la expresión_3 es positiva (mayor queexpression 1) las declaraciones en el cuerpo del lazo son ejecutadas. El controlregresa al inicio y el contador hace un incremento y vuelve a hacer la prueba, hastaque el contador se iguala al valor final, se realiza una iteración más y el lazotermina.

Una implicación de la manera en el cual el lazo for es implementado es que esposible que el lazo del cuerpo nunca sea ejecutado. Consideremos el siguiente lazofor.

For x = 1 to 0printf(“This is never printed”)end for

El lazo no hace nada, desde que la prueba x > 0 es inicialmente verdadero,causando que el lazo del cuerpo nunca sea ejecutado.

Sintaxis for variable=expression_1 to expression_2 [step expressionstatement(s)end for

Ejemplo Con un incremento de 1

for x = 1 to 10move(safe)

end for

Step no es especificado, es asumido a ser +1. La función move es ejecutada 10veces, con x = 1, 2, 3….10.

Page 28: Formato General _español 3 (ReparadoCopia)

Con un decremento de 1.

for x = 10 to 1 step -1move(safe)end for

Step es definido como -1. La función move es ejecutado 10 veces, con x = 10, 9,8….1

Con un incremento de 3

for x = 1 to 11 step 3move(safe)

end for

Step es definido como +3. La función move es ejecutado 4 veces, con x = 1, 4, 7 y10. Note que incluso aunque el límite de la expresión_2 es 11, este valor nunca esvisto por el cuerpo del lazo, puesto que el siguiente valor después de 10 es 13, estees un factor más allá del límite.

mainteachable cloc AA, B4

int velfor vel = 30 to 100 step 10

speed(vel)move(AA)move(B4)ready()

end forprintf(“ \n done”)

end main

Step es definido como +10. Las locaciones cartesianas AA y B4 se van a ejecutar 8veces con vel = 30, 40, 50… 100. La velocidad de los movimientos se van a realizarde acuerdo al valor que tenga vel. O sea que en la primera iteración AA y B4 sevan a mover a una velocidad del 30 %, en la segunda iteración se van a mover al40% y así sucesivamente, hasta que se llega al límite de la expresión_2, y el lazotermina.

Page 29: Formato General _español 3 (ReparadoCopia)

CAPITULO 6

Subrutinas, funciones y comandos

RAPL-3 tiene tres distintos géneros de objetos ejecutables: subrutinas (subs),funciones (funcs), y comandos (commands). Colectivamente, subs, funcs ycommands son referidos como subprogramas. main es el caso especial de unsubprograma.

Subprogramas

Una manera de entender el concepto de subprogramas es viendo un breveejemplo:

[1] sub sayhello()[2] int x[3] x = 0[4] printf(“Hello! \ n”)[5] end sub[6][7] sub say_n_plus_1(int n)[8] printf(“n + 1 = { } \n”, n + 1)[9] end sub[10][11] func int a_plus_b(int a, int b)[12] return a + b[13] end func[14][15] main[16] int x, y[17] x = 10[18] sayhellou()[19] say_n_plus_1(x)[20] y = a_plus_b(1, x)[21] printf(“ x + 1 = { } \n”, y)[22] end main

Page 30: Formato General _español 3 (ReparadoCopia)

Este ejemplodefine dos subs, uno llamado sayhello() y el otro say_n_plus_1() yuna func llamado a_plus_b().

La ejecución del programa inicia en main. En la linea 16 se declaran dos variablesque pertenecen solo a main que son x y y (variables globales), en la linea 17 x esdeclarado que tiene un valor de 10.

Cuando la linea 18 es alcanzado, la subrutina sayhello() es ejecutado. sayhello()tiene su propia variable local x, lo cua es declarado con un valor de 0 en la linea 3.Entonces sayhello() se ejecuta en linea 4 en el cual imprime un mensaje fuera de laconsole. Cuando el final de sayhello() es alcanzado, el control regresa a main, enla linea 19.

El hecho de que sayhello() tiene declarado a la variable x = 0 no cambia el valor dela variable x en main. Cualquier variable declarada dentro de un subprograma eslocal a ese subprograma y no puede ser cambiado. Esas variables declaradasfuera de cualquier subprograma son accesibles a todos los subprogramas y sonllamados programas de alcance de variables o simplemente programa. Esteconcepto de local y programa son parte de las variables de alcance.

Despues de que sayhello() es ejecutado (llamado por main), main llama a lasubrutina say_n_plus_1(). Una diferencia entre sayhello() y say_plus_1() alllamarlos main. Es que say_plus_1() tiene una expresion declarada entreparentesis (x). Este es un argumento o parametro actual de say_plus_1(). El valorde x es dado o pasado a el subprograma.

El subprograma say_plus_1() es ejecutado con la variable inicial n = 10, despuesde que el valor fue pasado por main. n es una varaible local especial desay_plus_1() llamado parametro formal. Los parametros formales consiguesvalores inicales que son dados por el llamador del subprograma , en este caso,main.

En linea 8, say_plus_1() ahora imprime el valor de n + 1, el cual es 11 en este caso.El control regresa a main en la linea 20.

En linea 20, main declara que y es igual a a_plus_b(1,x). Este es un ejemplo de unsubprograma llamado función; la función a_plus_b() es llamado con dosargumentos (1 y x (x=10)). En linea 12 hay una sola linea de a_plus_b(), y es unadeclaracion return. Para una función, la declaracion return indica que un valor (eneste caso a + b ó 11 ) sera regresado al subprograma llamador, que es main. Elefecto en este ejemplo es que y obtiene el valor que a_plus_b() regresa, en estecaso es 11.

Este resultado es impreso en linea 21 y el programa termina.

Page 31: Formato General _español 3 (ReparadoCopia)

Generos de subprogramas

SubsUna sub (subrutina) es un simple genero de subprograma de RAPL-3. Un subpuede tomar cualquier numero de argumentos (o ninguno), pero no regresa ningunvalor al subprograma llamador. Como un resultado, una sub no puede aparecerdentro de una expresión.

sintaxis de declaración

sub sub_identifier ( parameter_list )[ condiciones y declaraciones…. ]

end sub

llamando a la sintaxis

sub_identifier(actual_parameter_list)

Note que la lista actual de parametros, debe de estar relacionado a la lista deparametros declarados en la sub. Eso es que deben ser el mismo numero deparametros y el mismo tipo de dato, para que sea compatible.

funcsUna func es similar a una sub, en que los dos pueden aceptar cuaquie numero deargumentos. Sin embargo un func regresa un valor al subprograma llamador. EnRAPL-3 , func puede regresar cualquier int, float cloc, ploc o un valor de tipopuntero (una func no puede regresar un string, pero puede regresar un puntero aun string). Por ejemplo a = sen(x) + cos(y), al llamara a sen(), la funcion calcula elvalor de seno de la variable x, a llamar a cos(), la funcion calcula el seno de lavariable y, suma los dos y los almacena en la variable a.

Declaración de sintaxis

func type func_identifier (paramer_list)[ condiciones y declaraciones…. ]

return valueend func

Note que al ultimo debe de estar una declaracion return que regresa el valor aalguna parte del cuerpo del progrma principal. Las funciones solo pueden regresarint, float, locaciones o tipo puntero.

Page 32: Formato General _español 3 (ReparadoCopia)

Llamando a la sintaxisHay dos formas de llamar a una funcion. Como parte de una expresion:

…..func_identifier (actual_parameter_list)….

O por si mismo como una declaracion:

func_identifier (actual_parameter_list)

En la última forma, el compilador advertira que el valor regresado de la función estasiendo ignorado ( a menos que la advertencia este desabilitado).

Una ves mas, los paramentro de la lista actual deben de estar relacionados con losparamentro declarados en func.

Page 33: Formato General _español 3 (ReparadoCopia)

CAPITULO 9

Subprogramas

appro

Descripción Mueve el punto central de la herramienta a una posición aproximada. La posiciónaproximada es definida por una locación, y una distancia de esa locación, esadistancia va a ser la longitud a la que va a quedar de esa locación.

Los movimientos son en modo de articulación interpolada, el punto central de laherramienta se mueve a través de espacios curvos como resultado de los cambiosde la articulación. El movimiento no es una línea recta.

Usualmente puedes mover el brazo rápidamente a la posición antes de mover laherramienta, y usualmente despacio hacia la locación.

Sintaxis appro (cloc location, float distance)

Parámetros location es locación que se desea mover: un cloc o plocdistance es distancia de la locación a la posición aproximada: puede ser un

numero flotante.

Ejemplo appro ( rack_5, 100.0 ) ;; milímetrosappro ( tray_1, 4.0 ) ;;pulgadas

appros

Descripción Mueve el punto central de la herramienta a una posición aproximada. La posiciónaproximada es definida por una locación, y una distancia de esa locación, esadistancia va a ser la longitud a la que va a quedar de esa locación.

Los movimientos son en modo cartesiano interpolado (movimiento de línea recta).El movimiento no es una articulación interpolada (el punto central de la herramientase mueve a través de espacios curvos como resultado de los cambios de laarticulación)

Usualmente puedes mover el brazo rápidamente a la posición antes de mover laherramienta, y usualmente despacio hacia la locación.

Page 34: Formato General _español 3 (ReparadoCopia)

Sintaxis appros ( cloc location, float distance )

Parámetros location es la locación que se va a mover: puede ser un cloc o un ploc.distance es la distancia de la locación a la posición aproximada. Puede ser

un número flotante.

Ejemplo appros ( rack_5, 100.0 )appros ( tray_1, 4.0 )

depart

Descripción Mueve el punto central de la herramienta de la posición actual, a lo largo del eje dela herramienta. La posición depart es definida por una distancian a partir de laposición actual, que se va a mover a lo largo del eje de la herramienta. Distanciaspositivas es alejamiento de la locación, distancias negativas es acercamiento de lalocación.

La posición inicial puede ser cualquier posición. No tiene que ser una locación.

Este comando es usado para mover la herramienta, usualmente despacio, cuandoson distancias cortas cerca de la herramienta y usualmente rápido, a una distanciamás larga lejos de la posición.

Los movimientos son en modo de articulación interpolada. EL resultado no es unalínea recta.

Sintaxis depart (float distance)

Parámetros distance es la distancia que se va amover a partir de la posición actual. Puedes ser una número flotante

Ejemplo depart(2.0)depart(6.0)

speed-set(100)appro(pick_1, 2.0)speed_set(20)move(pick_1)finish()grip_close()grip_finish()depart(2.0)speed(100)appro(place_1)

Page 35: Formato General _español 3 (ReparadoCopia)

departs

descripción Mueve el punto central de la herramienta de la posición actual, a lo largo del eje dela herramienta. La posición departs es definida por una distancian a partir de laposición actual, que se va a mover a lo largo del eje de la herramienta. Distanciaspositivas es alejamiento de la locación, distancias negativas es acercamiento de lalocación.

La posición inicial puede ser cualquier posición. No tiene que ser una locación.

Este comando es usado para mover la herramienta, usualmente despacio, cuandoson distancias cortas cerca de la herramienta y usualmente rápido, a una distanciamás larga lejos de la posición.

Los movimientos son en modo cartesiano interpolado. El resultado es unmovimiento de line recta.

Sintaxis departs (float distance)

Parámetros distance es la distancia que se va amover a partir de la posición actual. Puedes ser una número flotante

Ejemplo departs(2.0)departs(6.0)

speed-set(100)appros(pick_1, 2.0)speed_set(20)move(pick_1)finish()grip_close()grip_finish()departs(2.0)speed(100)appros(place_1)

finishForza el programa a esperar hasta que el movimiento del brazo haya finalizado.Normalmente un comando es ejecutado en cuanto sus parámetros seandeterminados, que puede ser el comando finalizado anterior.

finish() es a menudo usado para finalizar el movimiento del brazo de una locaciónantes de cerrar el gripper, en lugar de tener el gripper cerrado mientras el brazotodavía está en movimiento. finish() también es usado para sincronizar comandos,tales como input/output, con movimientos del robot.

Page 36: Formato General _español 3 (ReparadoCopia)

Sintaxis finish()

Ejemplo appro(pick_1, 2.0)move(pick1)finish( )grip_close( )

Sin finish() el comando grip_close() se estará ejecutando antes de quemove(pick_1) haya finalizado.

FALTA……………..

Page 37: Formato General _español 3 (ReparadoCopia)

Conceptos del primer parcialRobotMaquina programable de uso general con ciertas características antropomórficas(similar a un ser humano), las características más comunes es que es un brazocapaz de desarrollar distintas tareas.

Tres leyes de Asimov1.- Un robot no puede lastimar a un ser humano por acción o inacción.

2.- Un robot debe obedecer las órdenes de un humano, excepto si esta en conflictocon la primera ley.

3.- Un robot debe protegerse así mismo mientras esta protección no esté enconflicto con la primera ni segunda ley.

La federación internación de robótica (IFR (International Federation of Robotics))clasifica a los robots en:

1.- Secuencial

2.- Tele-manipulado

3.- Trayectoria controlable

4.- Adaptable

Configuraciones morfológicas y parámetroscaracterísticos de los robots industriales

Según la geometría de su estructura mecánica, un manipulador puede ser:

Cartesiano, cuyo posicionamiento en el espacio se lleva a cabo mediantearticulaciones lineales.

Cilíndrico, con una articulación rotacional sobre una base y articulaciones linealespara el movimiento en altura y en radio.

Polar, que cuenta con dos articulaciones rotacionales y una lineal. Esférico (o de brazo articulado), con tres articulaciones rotacionales. Mixto, que posee varios tipos de articulaciones, combinaciones de las anteriores.

Es destacable la configuración SCARA (Selective Compliance Assembly RobotArm)

Page 38: Formato General _español 3 (ReparadoCopia)

Se

deno

Robot

Manipulador

multifuncional

Configuracióngeométrica

Estructuracinemática

Espacio detrabajo

Ejemplo

cartesianos

cilíndrico

polar

esférico

SCARA

Page 39: Formato General _español 3 (ReparadoCopia)

AutomataMaquina con movimientos similares a un ser humano.

ArticulaciónCada eje que me describe un movimiento

Espacio de trabajoSon todos los movimientos que el robot hace en cada articulación.

Posición HomePosición en donde todos los ejes están en el inicio, cada eje se posiciona en unpunto de referencia conocido.

Grado de libertadSon todos los movimientos independientes del robot que especifican la orientacióndel sistema.

Page 40: Formato General _español 3 (ReparadoCopia)
Page 41: Formato General _español 3 (ReparadoCopia)