SubRutinas Se pueden usar subrutinas cuando se necesita el mismo trozo de código en distintos lugares del programa. En esos casos se escribe una subrutina.

Slides:



Advertisements
Presentaciones similares
Programación Básica con NQC Pedro F. Toledo – Patricio Castillo 18/08/2006.
Advertisements

Noveno Curso de Programación Básica con NQC Primera Clase José M. Galarce H. Abril 4 de 2009.
Programación Básica con NQC Pedro F. Toledo Universidad Técnica Federico Santa María Departamento de Electrónica.
Estructuras de control
Técnicas de Programación con Visual Basic
Informática II Prof. Dr. Gustavo Patiño MJ
Ejemplo: Creación y mutación de procesos
Quinta Clase Patricio A. Navarrete Junio 3 de 2011.
Instrumentación Virtual con LabVIEW
7a.1 Silberschatz, Galvin y Gagne ©2003 Sistemas Operativos 6ª edición Capítulo 7: Sincronización de procesos parte a.
La estructura básica de los programas en java, algo a tener en cuenta y que debemos recordar siempre es el archivo debe llevar el nombre de la clase con.
El lenguaje de programación C - Funciones -
NQC Lazos, Enunciados Condicionales, Lógica Booleana.
Subrutinas.
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Programación Básica con NQC Patricio A. Castillo 03/05/2008.
Tercera Clase Patricio A. Navarrete Septiembre 10 de 2011.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
Patricio A. Navarrete Junio 17 de 2011
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 08/03/2007.
Semana 5 Subprogramas..
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
Décimo Curso de Programación Básica con NQC “Tercera Clase” Cristián A. Arenas Ulloa Septiembre 5 de 2009.
Constantes en PHP Programación en Internet II. Constantes en PHP Programación en Internet II Universidad de Guadalajara | Centro Universitario de la Costa.
Segunda Clase Pamela R. González Patricio A. Navarrete Mayo 8 de 2011.
Switch en PHP Programación en Internet II. Switch en PHP Programación en Internet II Universidad de Guadalajara | Centro Universitario de la Costa Elegir.
Desarrollador Profesional de Juegos Programación III Unidad II Una clase thread para window.
Tablas de verdad en PHP Programación en Internet II.
Concatenación en PHP Programación en Internet II.
SISTEMA OPERATIVO Un sistema operativo es un programa que actúa como intermediario entre el usuario y el hardware de un computador y su propósito es proporcionar.
Programación Básica con NQC Patricio A. Castillo Pizarro 25/08/2007.
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 18/08/2006.
Lección 5: Tareas Múltiples & Relojes Soluciones de Programación RoboLab a NQC.
Lección 1: Motores y Sonido Soluciones de Programación.
Décimo Curso de Programación Básica con NQC “Quinta Clase” Cristián A. Arenas Ulloa Septiembre 26 de 2009.
Tareas NQC puede tener hasta 10 tareas, una de las cuales siempre será main. Las tareas se ejecutan usando el comando start. Las tareas corren simultaneamente.
Copiando y pegando archivos enteros Programación en Internet II.
José M. Galarce Junio 19 de 2010 Quinta Clase. Estructuras de Control Complejas Se basan en las estructuras de control básicas: if(){}else{}while(){}
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 18/08/2006.
Lenguajes de programación. Lenguaje máquina El ordenador sólo sabe hacer un número limitado de tareas (muy pocas) definidas electrónicamente en su procesador.
Elementos básicos del lenguaje
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 20/05/2006.
Lección 2: Modificadores, Lazos y Saltos. Soluciones de Programaación.
Lección 2: Niveles de Potencia, Repeticiones, y Lazos While. Soluciones de Programación: De RoboLab a NQC.
Programación Básica con NQC Patricio A. Castillo 10/05/2008.
PEDRO ALBERTO ARIAS QUINTERO. El shell es un intérprete de órdenes, los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como.
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 18/05/2007.
Patricio A. Castillo José M. Galarce Agosto 23 de 2008 Segunda Clase.
#define MOVE_TIME 100 #define TURN_TIME 85 task main() { repeat(4) { OnFwd(OUT_A+OUT_C); Wait(MOVE_TIME); OnRev(OUT_C); Wait(TURN_TIME); } Off(OUT_A+OUT_C);
Patricio A. Castillo José M. Galarce Septiembre 13 de 2008 Cuarta Clase.
Programación Básica con NQC Patricio A. Castillo 12/04/2008.
INTRODUCCION A LA PROGRAMACION
Lección 3: Sensores y Untils Soluciones de Programación RoboLab a NQC
Lección 6: Variables Soluciones de Programación RoboLab a NQC
Séptima Clase Patricio A. Navarrete Junio 24 de 2011.
PROGRAMACIÓN ESTRUCTURADA LOS DIAGRAMAS DE ESTADO
Introducción al lenguaje PROCESSING para ARDUINO
Noveno Curso de Programación Básica con NQC “Quinta Clase” José M. Galarce H. Mayo 15 de 2009.
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
Lección 5: Soluciones de Programación conTareas Múltiples y Relojes.
Desarrollador Profesional de Juegos Programación III Unidad II Introdución a threading en windows.
Desarrollador Profesional de Juegos Programación III Unidad II introducción a Mutex Secciones críticas.
Como instalar xampp. En esta lección de hoy --y tras haber visto en la lección anterior la forma de descargarlo--, vamos a aprender a instalar Xampp en.
Décimo Curso de Programación Básica con NQC “Segunda Clase” Cristián Arenas Ulloa Agosto 29 de 2009.
PROCEDIMIENTOS Y FUNCIONES
Programación en Visual Basic
Cómo empezar Java. ¡Cómo se divide la plataforma de desarrollo de Java?  Edición estándar (JSE)  Edición empresarial (JEE)  Edición de dispositivos.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
Presentación Proyecto: “Torres de Hanoi” GRUPO 7 INTEGRANTES: - DEVOTO, Mª IGNACIA. - MUÑOZ, DAVID. - VARGAS, JUAN PABLO.
Transcripción de la presentación:

SubRutinas Se pueden usar subrutinas cuando se necesita el mismo trozo de código en distintos lugares del programa. En esos casos se escribe una subrutina y se le dá un nombre. Es posible ejecutar la subrutina, invocando el nombre desde la tarea. NQC permite hasta 8 subrutinas.

Subrutina De Ejemplo En este programa hemos definido una subrutina que hace girar al robot en torno a su centro. La tarea main llama 3 veces a la subrutina turn_around. sub turn_around() { OnRev(OUT_C);Wait(340); OnFwd(OUT_A+OUT_C); } task main() Wait(100); turn_around(); Wait(200); Off(OUT_A+OUT_C); Note que al invocar una subrutina necesita incluir el paréntesis de cierre. Se vé como otros comandos, pero no hay parámetros, asi que no se coloca nada entre paréntesis.

Advertencias Respecto a SubRutinas Las subrutinas no pueden invocarse desde otras subrutinas. Las subrutinas pueden invocarse desde distintas tareas pero esto no es buena idea. Conduce a problemas pues la misma subrutina podría ejecutarse al mismo tiempo por dos tareas distintas. Esto podría llevar a una tarea a invocar la misma subrutina e intentar suar el mismo recurso, un motor o un sensor. A veces esto se denomina "contención de recursos.” Esto mismo es válido para el uso de variables globales.

Usemos un ejemplo visto en la Lección de Tareas task main() { SetSensor(SENSOR_1,SENSOR_TOUCH); start check_sensors; start move_square; } Usemos un ejemplo visto en la Lección de Tareas task move_square() { while (true) OnFwd(OUT_A+OUT_C); Wait(100); OnRev(OUT_C); Wait(85); } ¿qué ocurriría si la tarea check_sensors no detiene a la tarea move_square? task check_sensors() { while (true) if (SENSOR_1 == 1) stop move_square; OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_A); Wait(85); start move_square; } Ambas tareas accesarían a los motores, ambas pelearían por el control.

Ambas tareas accesarían a los motores, ambas pelearían por el control. Las tareas en realidad no corren al mismo tiempo (eso es imposible pues solo hay un procesador). Además, cada tarea tiene un pequeño tiempo para ejecutarse, y después el control pasa a la siguiente tarea, la cual corre por un breve tiempo, y asi. Luego, si check_sensors no detiene a la otra tarea, ambas se alternarían atrás y adelante muy rápidamente. check_sensors podría colocar los motores en reversa, y al regresar el control a move_square, los movería hacia adelante. Tal vez el robot se movería atrás y adelante y giraría, aleatoriamente y no haría lo correcto Esta misma situación es la que podría ocurrir si se permite a dos tareas llamar a la misma subrutina.