---

name: Estructura else if
theory: |
  La función `getTypeOfSentence()` solo distingue entre oraciones interrogativas y oraciones normales. Intentemos agregar soporte para oraciones exclamativas:

  ```php
  <?php

  function getTypeOfSentence($sentence)
  {
      $lastChar = $sentence[-1];

      if ($lastChar === '!') {
          $sentenceType = 'exclamation';
      } else {
          $sentenceType = 'normal';
      }

      if ($lastChar === '?') {
          $sentenceType = 'question';
      }

      return "La oración es {$sentenceType}";
  }

  getTypeOfSentence('¿Quién?'); // 'La oración es pregunta'
  getTypeOfSentence('No');     // 'La oración es normal'
  getTypeOfSentence('¡No!');   // 'La oración es exclamación'
  ```

  Hemos agregado otra condición (_exclamation_ se traduce como "exclamación"). Técnicamente, la función funciona, pero hay problemas desde el punto de vista semántico:

  * La verificación de la presencia del signo de interrogación ocurre de todos modos, incluso si ya se ha detectado el signo de exclamación.
  * La rama `else` se describe específicamente para la primera condición, pero no para la segunda.

  Sería más correcto utilizar otra posibilidad de la estructura condicional:

  ```php
  <?php

  function getTypeOfSentence($sentence)
  {
    $lastChar = $sentence[-1];

    if ($lastChar === '?') {
        $sentenceType = 'question';
    } elseif ($lastChar === '!') {
        $sentenceType = 'exclamation';
    } else {
        $sentenceType = 'normal';
    }

    return "La oración es {$sentenceType}";
  }
  ```

  Ahora todas las condiciones se han unificado en una sola estructura.

  La estructura `elseif` significa "si la condición anterior no se cumple, pero la condición actual sí se cumple". La estructura resultante es la siguiente:

  * Si el último carácter es `?`, entonces `'question'`
  * De lo contrario, si el último carácter es `!`, entonces `'exclamation'`
  * De lo contrario, `'normal'`

  Solo se ejecutará uno de los bloques de código relacionados con toda la estructura `if`.

instructions: |

  En el mapa electrónico de Westeros implementado por Sam, los aliados de los Stark se representan con un círculo verde, los enemigos con un círculo rojo y las familias neutrales con un círculo gris.

  Escribe una función para Sam llamada `whoIsThisHouseToStarks()` que reciba el apellido de una familia y devuelva uno de los tres valores: `'friend'`, `'enemy'`, `'neutral'`.

  Reglas de determinación:

    * Amigos (`'friend'`): 'Karstark', 'Tully'
    * Enemigos (`'enemy'`): 'Lannister', 'Frey'
    * Todas las demás familias se consideran neutrales

  Ejemplos de llamadas:

  ```php
  <?php

  whoIsThisHouseToStarks('Karstark'); // 'friend'
  whoIsThisHouseToStarks('Frey');     // 'enemy'
  whoIsThisHouseToStarks('Joar');     // 'neutral'
  whoIsThisHouseToStarks('Ivanov');   // 'neutral'
  ```

tips: []

definitions:
  - name: else if
    description: una forma de establecer múltiples condiciones alternativas.
