# Lógica y puntuación


# Lógica y puntuación

La lógica convierte una lista plana de preguntas en un formulario que se adapta a cada encuestado. Puedes ocultar preguntas que no apliquen, exigir una respuesta solo en ciertos casos, enviar a las personas por diferentes caminos, repetirles sus propias palabras, calcular valores y puntuar cuestionarios. Configuras todo esto en el [constructor](./form-builder).

## Visibilidad condicional

Usa la **visibilidad condicional** (`visibleIf`) para mostrar un campo solo cuando una respuesta anterior coincide con una regla. Por ejemplo, muestra "¿Qué modelo tienes?" solo después de que alguien responda "Sí" a "¿Tienes uno de nuestros productos?".

Configura la regla `visibleIf` de un campo en el [Inspector](./form-builder#las-tres-columnas). Cuando la regla no se cumple, los encuestados nunca ven el campo — permanece oculto y no es obligatorio.

:::tip[Mantén los formularios cortos con reglas de visibilidad]

Ocultar preguntas irrelevantes hace que un formulario se sienta más corto y más personal. Pregunta solo lo que aplica a cada encuestado.

:::

## Obligatorio condicional

El **obligatorio condicional** (`requiredIf`) hace un campo obligatorio solo bajo ciertas condiciones. Un campo puede ser opcional la mayoría del tiempo pero volverse obligatorio cuando una respuesta anterior lo requiere — por ejemplo, exigir un motivo solo cuando alguien selecciona "Otro".

## Enrutamiento entre páginas

En los formularios de varias páginas puedes enrutar a los encuestados a diferentes páginas según sus respuestas. Cada regla de enrutamiento tiene un **objetivo siguiente** que decide a dónde va alguien después de una página, así que diferentes respuestas pueden llevar por diferentes caminos. Úsalo para saltar secciones enteras que no apliquen, o para ramificar una encuesta en pistas separadas.

## Encadenamiento de respuestas

El **encadenamiento** inserta una respuesta anterior del encuestado en texto posterior. Referencia un campo envolviendo su clave en dobles llaves, como `{{name}}`. Si alguien introduce "Alex" en un campo con clave `name`, una pregunta posterior que diga `Thanks {{name}}, how was your visit?` está pensada para mostrarse como "Gracias Alex, ¿qué tal tu visita?".

:::info[Próximamente]

El motor de encadenamiento que sustituye los tokens `{{field}}` está construido y probado, pero aún no está conectado al renderizador del formulario público — así que los valores encadenados no aparecen hoy a los encuestados. Redacta tus etiquetas normalmente; el encadenamiento empezará a resolverse una vez que se conecte.

:::

## Cálculos

Los **cálculos** computan un valor a partir de otras respuestas — por ejemplo, sumar partidas o derivar una cifra de varias entradas. El valor calculado puede mostrarse de vuelta al encuestado o usarse en otra parte de la lógica del formulario.

## Puntuación y bandas de puntuación

Convierte tu formulario en un cuestionario o evaluación con la **puntuación**. Cada respuesta puede llevar un **valor de puntuación** (configurado por campo en el Inspector), y el formulario los suma en un total.

Para configurar la puntuación:

1. Abre **Ajustes** en el constructor y activa la **puntuación**.
2. Elige la **clave de salida** bajo la que se almacena la puntuación.
3. Asigna un **valor de puntuación** a las respuestas relevantes de cada campo.
4. Define **bandas de puntuación** — rangos etiquetados que interpretan el total.

Una **banda de puntuación** asigna un rango de puntos a una etiqueta, como "0–4 = Necesita mejorar", "5–7 = Bien", "8–10 = Excelente". Cuando alguien termina, su total y su banda pueden mostrarse en la [pantalla de confirmación](./public-form#confirmación). Así es como construyes cuestionarios calificados, autoevaluaciones y resultados por niveles.

## Próximos pasos

- [Configura valores de puntuación y condiciones por campo](./field-types#opciones-por-campo)
- [Construye formularios de varias páginas en el constructor](./form-builder#formularios-de-varias-páginas)
- [Mira lo que experimentan los encuestados](./public-form)
- [Publica y comparte tu formulario](./publishing-sharing)
