1 / 17

NQC “ No Demasiado C”

NQC “ No Demasiado C”. Estructura de Programa en NQC. Un programa NQC se compone de bloques de código y de variables globales . Hay 3 distintos tipos de bloques de código : ta rea s, funciones en línea , y sub rutin a s.

roden
Download Presentation

NQC “ No Demasiado C”

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. NQC“No Demasiado C”

  2. Estructura de Programa en NQC • Un programa NQC se compone de bloques de código y de variables globales. • Hay 3 distintos tipos de bloques de código: tareas, funciones en línea, y subrutinas. • Cada tipo de bloque de código tiene características y restricciones únicas, pero todas comparten una estructura común.

  3. Tareas • El RCX implicitamente soporta múltiples tareas, de modo que una tarea NQC corresponde directamente a una tarea RCX. Las tareas se definen usando la siguiente sintáxis: • Nombre de la tarea() • { • //el código de la tarea se coloca acá}

  4. Tareas • El nombre de la tarea puede ser cualquier identificador legal. • Todo programa tiene al menos una tarea - llamada "main" – la cual parte cuando el programa comienza. • Un programa puede contener hasta 9 tareas adicionales.

  5. Lección 1: Motores y Sonido Soluciones de Programación, de RoboLab a NQC

  6. Ejercicio 1: Solución RoboLab Encender los motores conectados a los puertos A y C por 4 segundos, en reversa; después, detener ambos motores: traducción a NQC Off(OUT_A); Off(OUT_C); task main() { OnRev(OUT_C); OnRev(OUT_A); } Wait(400);

  7. Ejercicio 1: Solución NQC task main() { OnRev(OUT_A); OnRev(OUT_C); Wait(400); Off(OUT_A); Off(OUT_C); } La tarea “main” El programa comienza (green light) Enciende los motores A y C en reversa Espera 4 segundos Apga los motores A y C Fin del programa (luz roja)

  8. Ejercicio 1: Solución NQC task main() { OnRev(OUT_A + OUT_C); Wait(400); Off(OUT_A + OUT_C); } Combina ambos motores en una función.

  9. Ejercicio 1: Solución NQC #define BOTH_MOTORS OUT_A + OUT_C #define MOTOR_TIME 400 task main() { OnRev(BOTH_MOTORS); Wait(MOTOR_TIME); Off(BOTH_MOTORS); } use variables globalespara que el código sea más fácil de leer.

  10. Ejercicio 1: Solución NQC #define BOTH_MOTORS OUT_A + OUT_C #define MOTOR_TIME 400 task main() { Rev(BOTH_MOTORS); OnFor(BOTH_MOTORS, MOTOR_TIME); } Elija primero la dirección. use “OnFor”para encender ambos motores por una cantidad de tiempo, y luego apáguelos.

  11. Palabras Clave Hay palabras reservadas para uso del lenguaje NQC. Estas palabras reservadas se denominan palabras clave y NO pueden ser usadas como identificadores. A continuación una lista de las palabras clave: return sign start stop sub switch task true void While int Repeat const continue default do else false if inline __sensor __type abs asm break case

  12. Ejercicio 2: Solución RoboLab Encienda el motor A para que avance una cantidad aleatoria de tiempo, y después apáguelo. task main() { Wait( Random(500) ); } OnFwd(OUT_A); Off(OUT_A);

  13. Ejercicio 2: Solución NQC task main() { OnFwd(OUT_A); Wait( Random(500) ); Off(OUT_A); } Espera una cantida aleatoria de tiempo entre 0 y 5 segundos.

  14. Ejercicio 2: Solución NQC #define LEFT_MOTOR OUT_A #define MOTOR_TIME Random(500) task main() { OnFwd(LEFT_MOTOR); Wait(MOTOR_TIME); Off(LEFT_MOTOR); } Puede usarvariablesglobales

  15. Ejercicio 2: Solución NQC #define LEFT_MOTOR OUT_A #define MOTOR_TIME Random(500) task main() { Fwd(LEFT_MOTOR); OnFor(LEFT_MOTOR, MOTOR_TIME); } Puede usar la función “OnFor”

  16. Ejercicio 3: Solución RoboLab Encienda el motor A para que avance por 2 segundos, apáguelo, y emita un sonido. Encienda el motor C en reversa por 2 segundos, apáguelo, y emita un sonido doble. PlaySound(SOUND_FAST_UP); PlaySound(SOUND_FAST_UP); PlaySound(SOUND_FAST_UP); task main() { } Rev(RIGHT_MOTOR); OnFor(RIGHT_MOTOR, MOTOR_TIME); Fwd(LEFT_MOTOR); OnFor(LEFT_MOTOR, MOTOR_TIME);

  17. Ejercicio 3: Solución NQC Use macros para facilitar la lectura de su código #define LEFT_MOTOR OUT_A #define RIGHT_MOTOR OUT_C #define MOTOR_TIME 200 task main() { Fwd(LEFT_MOTOR); OnFor(LEFT_MOTOR, MOTOR_TIME); PlaySound(SOUND_FAST_UP); Rev(RIGHT_MOTOR); OnFor(RIGHT_MOTOR, MOTOR_TIME); PlaySound(SOUND_FAST_UP); PlaySound(SOUND_FAST_UP); } El sonido por defecto es“SOUND_FAST_UP”

More Related