1 / 22

NQC “ No Demasiado C”

NQC “ No Demasiado C”. Coment ario s. Los c oment ario s son ignor a d os por el compil ado r. Su único proposito es permitir al programador documentar el código .

felcia
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. Comentarios Los comentarios son ignoradospor el compilador. Su único proposito es permitir al programador documentar el código . Dos formas de comentarios son válidas en NQC. La primera (comentarios “a la C”) comienzan con /* y terminan con */. Pueden ocupar muchas líneas. /*esto es un comentario */

  3. La segunda forma de comentarios comienza con // y termina con una línea nueva (comentarios “a la C++”). // Una línea de comentario

  4. Espacio En Blanco • Los espacios en blanco (espacios, tabs, líneas nuevas),se usan para separar partes del programa y hacer más fácil la lectura de un programa. • En tanto se distingan los operadores, agregar o quitar espacios en blanco no afecta el significado del programa. Por ejemplo, las siguientes líneas de códigotienen el mismo significado: • x=2; • x = 2 ;

  5. Ejemplo con Sensores Use macros para facilitar la lectura del código #define LIGHT SENSOR_1 #define THRESHOLD 45 task main() { SetSensor(LIGHT, SENSOR_LIGHT); while (true) { if (LIGHT > THRESHOLD) { Off(OUT_C); OnFwd(OUT_A); } else { Off(OUT_A); OnFwd(OUT_C); } } } while (true) da lugar a un lazo infinito

  6. Uso Pobre de Espacios en Blanco #define LIGHT SENSOR_1 #define THRESHOLD 45 task main() { SetSensor(LIGHT, SENSOR_LIGHT); while (true) { if (LIGHT > THRESHOLD) { Off(OUT_C); OnFwd(OUT_A); } else { Off(OUT_A); OnFwd(OUT_C); } } }

  7. Ejemplo con Sensores 2 El sensor en el puerto 1 es un sensor de contacto. task main() { SetSensor(SENSOR_1, SENSOR_TOUCH); if (SENSOR_1 == 0) { PlaySound(SOUND_DOWN); } else { PlaySound(SOUND_LOW_BEEP); } } 1 significa “pressionado.” 0 significa “liberado.” No olvide el doble signo igual! “SOUND_LOW_BEEP” Es un zumbido

  8. Uso Pobre de Espacios en Blanco task main() { SetSensor(SENSOR_1, SENSOR_TOUCH); if (SENSOR_1 == 0) { PlaySound(SOUND_DOWN); } else { PlaySound(SOUND_LOW_BEEP); } }

  9. Identificadores Los identificadores son“NOMBRES”variables, tareas y funciones. El primer carácter de un identificador debe ser una letra mayúscula o minúscula o elsubrayado ('_'). Los demás caracteres pueden ser letras, números, o unsubrayado.

  10. Palabras Clave Ciertos identificadores son palabras reservadas a NQC. Se denominan palabras clave y no se pueden usar como identificadores. A continuación una lista de 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

  11. Salidas Los nombres OUT_A, OUT_B, y OUT_C identifican las 3 salidas del RCX. Todos los comandos para controlar salidas, pueden trabajar sobre varias salidas a la vez. Para especificar un comando sobre más de una salida, agregue los nombres de las salidas. Por ejemplo: OUT_A + OUT_BEspecifica las salidas A y B.

  12. Atributos Cada salida tiene 3 atributos distintos: modo, dirección, y nivel de potencia. El modo se ajusta con el comando SetOutput(outputs, mode) command. El parámetro modo puede ser alguna de las siguientes constantes: Modo de la SalidaSignificado Off(OUT_A) salida apagada (el motor detiene) On(OUT_B)salida encendida (motor encendido) Float(OUT_C) el motor se puede “deslizar"  Ejemplo: Off(OUT_A + OUT_B); // enciende A y B

  13. Ajuste de la Dirección Los otros 2 atributos, dirección y nivel de potencia, pueden ser ajsutados en cualquier instante, pero sólo afectan la salida cuando esta está encendida. El comando SetDirection(outputs, direction) ajusta la dirección. Los parámetros de este comando son: DirecciónSignificado Fwd(OUT_A) Avanza Rev(OUT_B)Retrocede Toggle(OUT_C)Invierte la dirección.

  14. Ajuste del Nivel de Potencia El nivel de potencia varía de 0 (mínimo) a 7 (máximo). Se definen los nombres OUT_LOW, OUT_HALF, and OUT_FULL para ajustar el nivel de potencia. El comandoSetPower(outputs, power)ajusta el nivel de potencia. Ejemplos: SetPower(OUT_A,7) SetPower (OUT_A+OUT_B+OUT_C, 3) ---------------------------------------------------------------- Al comienzo de un programa, los motores están al máximo de potencia y listos para avanzar.

  15. Comando Acción On(outputs) Off(outputs) Float(outputs) Fwd(outputs) Rev(outputs) Toggle(outputs) OnFwd(outputs) OnRev(outputs) OnFor(outputs, time) Enciende los motores Apaga los motores Las salidas "flotan” (se deslizan) Ajusta las salidas para avanzar Ajusta las salidas para retroceder Cambia la dirección de las salidas Avanzar, luego, enciende los motores Retroceder, luego, enciende los motores Enciende las salidas por una cantida de tiempo (en centécimos de segundo)

  16. Ejemplos Uso de los comandos de salida: OnFwd(OUT_A);// Enciende A para avanzar. OnRev(OUT_B);// Enciende B para retroceder. Toggle(OUT_A + OUT_B);// Invierte las direcciones de A y B Off(OUT_A + OUT_B); // Apaga A y B OnFor(OUT_C, 100);// Apaga C por 1 segundo

  17. Sensores • Los nombres SENSOR_1, SENSOR_2, and SENSOR_3 identifican los puertos de entrada del RCX. Para leer los valores de un sensor, primero hay que configurarlo. • Un sensor tiene dos ajustes: tipoymodo. • El tipo determina como el RCX lee, eléctricamente, al sensor. • El modo determina como el RCX interpreta los valores leídos por el sensor.

  18. Modo del Sensor Significado SENSOR_MODE_BOOL Valor booleano (0 o 1) Tipo de Sensor Significado SENSOR_MODE_PERCENT Valor de 0 a 100 SENSOR_TYPE_TOUCH Sensor de contacto SENSOR_MODE_ROTATION rotación (16 pulsos por revolución) SENSOR_TYPE_LIGHT Sensor de luz SENSOR_TYPE_ROTATION Sensor de rotación Constantes válidas para la configuración del tipo y modo de un sensor:

  19. Comando SetSensor Por conveniencia modo y tipo pueden ser ajustados usando el comando SetSensor(sensor, configuration). Esta es la forma más sensiclla y común de configurar un sensor. Por ejemplo: SetSensor(SENSOR_1, SENSOR_LIGHT); SetSensor(SENSOR_2, SENSOR_TOUCH);

  20. Configuración, Tipo, Modo Configuración del Sensor Tipo Modo SENSOR_TOUCH SENSOR_TYPE_TOUCH SENSOR_MODE_BOOL SENSOR_LIGHT SENSOR_TYPE_LIGHT SENSOR_MODE_PERCENT SENSOR_ROTATION SENSOR_TYPE_ROTATION SENSOR_MODE_ROTATION

  21. Lectura de Valores del Sensor El valor de un sensor se puede leer usando su nombre con una condición. Por ejemplo, el código a continuaciónverifica si el valor del sensor 1 es mayor que 20: if (SENSOR_1 > 20) // haga algo... Tipos de sensor (tales como SENSOR_TYPE_ROTATION) permiten ajustar a cero el contador interno con el siguiente comando: ClearSensor(expression sensor);

  22. Ejemplo de Programa con Sensores use macros para facilitar la lectura del código #define LIGHT SENSOR_1 #define THRESHOLD 45 task main() { SetSensor(LIGHT, SENSOR_LIGHT); while (true) { if (LIGHT > THRESHOLD) { Off(OUT_C); OnFwd(OUT_A); } else { Off(OUT_A); OnFwd(OUT_C); } } } while (true) crea un lazo infinito

More Related