# Ejercicios - Repaso (2)

Nota:

- Los valores introducidos por el usuario se deben comprobar y, si los valores no son correctos, se debe indicar el motivo al usuario.
- Tenga en cuenta que un usuario puede acceder al programa php directamente enviando los datos que desee (por ejemplo, datos más largos que la longitud permitida en el formulario)

## Repaso 2-1 - Distancias sobre el globo (ejercicio examen curso 2008-2009)

Escriba un calculador de distancias sobre el globo terráqueo.

- En la primera página se solicitan las coordenadas de los dos puntos.
- En la segunda página se muestra el resultado.

Enlace a examen Distancias sobre el globo

Nota:

- Para calcular la distancia entre los puntos, se pueden utilizar las siguientes fórmulas:
  - la latitud deberá ser un valor entre 0º y 90º
  - la longitud deberá ser un valor entre 0º y 180º
  - los valores deben pasarse a radianes:

        $longitud1b = $longitud1*PI/180;

  - si la latitud es Sur, hay que cambiarla de signo (de positiva a negativa).
  - si la longitud es Este, hay que cambiarla de signo (de positiva a negativa).
  - la distancia se puede calcular con la fórmula:

        $distancia = acos(sin($latitud1b)*sin($latitud2b)+cos($latitud1b)*cos($latitud2b)*cos($longitud2b-$longitud1b))*RADIO_TIERRA

  - las constantes PI y RADIO_TIERRA pueden tener el valor 3.141592 y 6378, respectivamente
  - Ejemplos:
    - Punto 1 (Valencia): 39,28N 0,22O. Punto 2 (Barcelona): 41,23N 2,33E. Distancia: 307 km.
    - Punto 1 (París): 48,87N 2,33E. Punto 2 (Nueva York): 42,15N 74,94O. Distancia: 5811 km.

## Repaso 2-2 - Crucigramas (ejercicio examen curso 2008-2009)

Escriba un corrector de crucigramas mediante dos páginas.

- En la primera página se muestra el crucigrama.
- En la segunda página se indica si se ha rellenado correctamente el crucigrama

Enlace a examen Crucigramas

Notas:

- El crucigrama se define mediante dos matrices que contienen las definiciones.

      $enunciadoX = array (
          1 => "Conseguir en una elección todos los puestos.",
          2 => "Árbol.",
          3 => "Máquina que sirve para medir el tiempo.",
          4 => "Atrevido.",
          5 => "Que no tienen sal.");
      $enunciadoY = array (
          1 => "Ciertos números.",
          2 => "Gordo.",
          3 => "Raquetas de madera.",
          4 => "Electrodo positivo.",
          5 => "Ciertos colores.");

- La solución del crucigrama se define mediante una matriz que contiene el contenido de cada celda.

      $solucion = array (
          1 => array(1=>'C', 2=>'O', 3 => 'P', 4 =>'A', 5 => 'R'),
          2 => array(1=>'E', 2=>'B', 3 => 'A', 4 =>'N', 5 => 'O'),
          3 => array(1=>'R', 2=>'E', 3 => 'L', 4 =>'O', 5 => 'J'),
          4 => array(1=>'O', 2=>'S', 3 => 'A', 4 =>'D', 5 => 'O'),
          5 => array(1=>'S', 2=>'O', 3 => 'S', 4 =>'O', 5 => 'S'));

## Repaso 2-3 - Tareas pendientes (ejercicio examen curso 2008-2009)

En este ejercicio se debe crear un programa para que los visitantes puedan crear tareas, marcar las tareas completadas y obtener listados de tareas pendientes y de tareas completadas.

Un ejemplo de programa puede probarse en la ventana siguiente (el ejemplo trabaja con una base de datos SQLite):

Enlace a ejercicio Tareas pendientes

### Tareas pendientes - Tablas

Estas pueden ser las consultas de creación de tablas para este examen:

    // Consultas de creación de tabla en MySQL
    $consulta = "CREATE TABLE $dbTareas (
        id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
        fecha DATE,
        tarea VARCHAR(".TAM_TAREA."),
        completada BOOLEAN,
        PRIMARY KEY(id)
        )";

    // Consultas de creación de tablas en SQLite
    $consulta = "CREATE TABLE $dbTareas (
        id INTEGER PRIMARY KEY,
        fecha DATE,
        tarea VARCHAR(".TAM_TAREA."),
        completada BOOLEAN
        )";

### Tareas pendientes - Comentarios

- Para poder guardar un registro, se deberán rellenar todos los campos.
- No se podrán guardar dos registros iguales (completadas o por completar).
- En el campo BOOLEANO se pueden guardar los valores '' (vacío, para valor FALSE) y '1' (para valor TRUE)
- Las fechas se deben guardar en el formato aaaa-mm-dd

## Repaso 2-3 - Contabilidad (ejercicio examen curso 2008-2009)

En este ejercicio se debe crear un programa para poder llevar una pequeña contabilidad de ingresos y gastos.

Un ejemplo de programa puede probarse en la ventana siguiente (el ejemplo trabaja con una base de datos SQLite):

Enlace a ejercicio Contabilidad

### Contabilidad - Tablas

Estas pueden ser las consultas de creación de tablas para este examen:

    // Consultas de creación de tabla en MySQL
    $consulta = "CREATE TABLE $dbContabilidad (
        id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
        fecha DATE,
        cantidad FLOAT,
        concepto VARCHAR(".TAM_CONCEPTO."),
        PRIMARY KEY(id)
        )";

    // Consultas de creación de tablas en SQLite
    $consulta = "CREATE TABLE $dbContabilidad (
        id INTEGER PRIMARY KEY,
        fecha DATE,
        cantidad FLOAT,
        concepto VARCHAR(".TAM_CONCEPTO.")
    )";

### Contabilidad - Comentarios

- Para poder guardar un registro, se deberán rellenar todos los campos.
- No se podrán guardar dos registros iguales.
- Las fechas se deben guardar en el formato aaaa-mm-dd
- Los listados aparecerán ordenados por fecha, de más antiguo a más reciente.

Esta obra está bajo una licencia de Creative Commons.