La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

NQC Lazos, Enunciados Condicionales, Lógica Booleana.

Presentaciones similares


Presentación del tema: "NQC Lazos, Enunciados Condicionales, Lógica Booleana."— Transcripción de la presentación:

1 NQC Lazos, Enunciados Condicionales, Lógica Booleana

2 Lazos Comando Repeat Comando While(true) El enunciado Do

3 Comando Repeat repeat(número) //número de repetición { La Función; } El número entre paréntesis en el comando repeat, indica el número de veces a repetir el argumento, colocado a continuación entre corchetes, como los postulados en una tarea. Note que, en el ejemplo anterior, usamos indentación sobre los argumentos. Esto no es necesario pero facilita la lectura del programa.

4 /* 10 Cuadrados, por Robin Shoop, este programa hace al robot girar 10 veces en un cuadrado */ #define MOVE_TIME 100 // Tiempo de movimiento en línea recta #define TURN_TIME 85 // Tiempo de giro en 90 grados task main() { repeat(10) // Haga 10 cuadrados { repeat(4) { OnFwd(OUT_A+OUT_C); Wait(MOVE_TIME); OnRev(OUT_C); Wait(TURN_TIME); } Off(OUT_A+OUT_C); // Ahora, apague los motores

5 Lazos While task main() { while(condición) { Función; } Mientras la condición entre paréntesis sea cierta.........complete la función o múltiples funciones al interior de los corchetes. El postulado WHILE ejecuta el código puesto a continuación entre corchetes, en tanto la condición entre paréntesis sea cierta. La palabra especial true es siempre cierta, y dá lugar a que el enunciado entre corchetes se repita para siempre.

6 Enunciado Condicional If/Else A veces se desea ejecutar un trozo de un programa sólo en ciertas situaciones. En este caso se usa el postulado if.

7 while(true) { if (Condición 1) { Función 1; } else (Condición 2) { Función 2; } (Sensor_1 < 40) (Sensor_2 <=47) On(OUT_A); Off(OUT_C); On(OUT_C); Off(OUT_A); (Sensor_2>47) Sensor de Rotación Sensor de Luz

8 Note que el enunciado If tiene dos partes. La función 1 se ejecuta SI la condición 1 se satisface. SINO, la función 2 se ejecuta cuando la condición 2 se satisface. La palabra clave ELSE y la función 2, son opcionales. Se pueden pasar por alto si no hay nada que hacer cuando la condición 1 no es satisfecha.

9 El Enunciado DO do { enunciados; } while (condición); Los enunciados entre los corchetes se ejecutan mientras la condición sea cierta. La condición tiene la misma forma que en el enunciado if. Hay otra estructura de control, el enunciado DO. Esta es la forma de usarlo:

10 Comparación de Valores Hay varias formas de comparar valores para verificar si son ciertos o no. Acá se presentan las más importantes: ==igual a <menor que <=menor o igual a >mayor que >=mayor o igual a !=distinto a

11 ¿Por qué usar == en lugar de =? Para distinguir del enunciado que coloca un valor en una variable. task main() { SetSensor(SENSOR_1,SENSOR_TOUCH); OnFwd(OUT_A+OUT_C); while (true) { if (SENSOR_1 == 1) { OnRev(OUT_A+OUT_C); Wait(30); OnFwd(OUT_A); Wait(30); OnFwd(OUT_A+OUT_C); } It initializes the sensor. This should be one of the first lines in programs using sensors. ¿Qué hace SetSensor? Inicializa el sensor. Debería ser la primera línea al programar con sensores.

12 #define THRESHOLD 40 task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); OnFwd(OUT_A+OUT_C); while (true) { if (SENSOR_2 > THRESHOLD) { OnRev(OUT_C); until (SENSOR_2 <= THRESHOLD); OnFwd(OUT_A+OUT_C); } //inicia puerto 2 para ser un sensor de luz // Si el sensor vé blanco // hasta que el sensor vé oscuro // avanza y repite el lazo El comando until es útil al usar sensores. // el motor c retrocede

13 task main() { SetSensor(SENSOR_1,SENSOR_ROTATION); ClearSensor(SENSOR_1); SetSensor(SENSOR_3,SENSOR_ROTATION); ClearSensor(SENSOR_3); while (true) { if (SENSOR_1 < SENSOR_3) {OnFwd(OUT_A); Float(OUT_C);} else if (SENSOR_1 > SENSOR_3) {OnFwd(OUT_C); Float(OUT_A);} else {OnFwd(OUT_A+OUT_C);} } Usando Sensores de Rotación

14 Una aplicación standard es un movimiento en línea recta; ambos motores se deberían mover a la par. PERO, los motores NO son iguales. Al usar los sensores de rotación se puede ver la diferencia en velocidad. Puede detener temporalmente un motor (mejor usar Float() ) hasta que ambos sensores indican lo mismo. El programa previo hace eso. Simplemente, permite al robot viajar en una línea recta. Para usarlo, conecte los dos sensores de rotación a las dos ruedas. Conecte los sensores a los puertos 1 y3.


Descargar ppt "NQC Lazos, Enunciados Condicionales, Lógica Booleana."

Presentaciones similares


Anuncios Google