Diferencia entre revisiones de «Usuario:ManuelRomero/php/NewPHP/B2T1/Sintaxis P»
De WikiEducator
< Usuario:ManuelRomero | php
(28 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
{{:Usuario:ManuelRomero/dwes/B2T1/nav}} | {{:Usuario:ManuelRomero/dwes/B2T1/nav}} | ||
− | + | __NOTOC__ | |
− | + | ||
− | + | ||
− | + | ||
{{#widget:Slides}} | {{#widget:Slides}} | ||
<div class="slides layout-regular template-default"> | <div class="slides layout-regular template-default"> | ||
Línea 171: | Línea 168: | ||
</html> | </html> | ||
</source> | </source> | ||
− | |||
}} | }} | ||
</div> | </div> | ||
Línea 177: | Línea 173: | ||
{{MRM_Actividad|Title=Probando la extensión| | {{MRM_Actividad|Title=Probando la extensión| | ||
− | ;Verifica | + | ;Verifica qué ocurre si la extensión del fichero no es php. |
+ | *Concluye el motivo. | ||
}} | }} | ||
</div> | </div> | ||
+ | <!-----PROGRAMA CONJUNTO DE INSTRUCCIONES ---> | ||
+ | <div class=slide> | ||
+ | ===Programa: conjunto de instrucciones=== | ||
+ | {{MRM_Objetivo| | ||
+ | '''''Un programa es un conjunto de instrucciones''''' | ||
+ | *Analizaremos las instrucciones que hay. | ||
+ | *Posteriormente Veremos cómo se escriben en php. | ||
+ | }} | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ===Planteando un lenguaje de programación=== | ||
+ | ;Léxicos | ||
+ | *Son las palabras reservadas del lenguaje. | ||
+ | http://php.net/manual/es/reserved.keywords.php | ||
+ | ;Sintaxis | ||
+ | Reglas de construcción. | ||
+ | Son las ya conocidas, pero veremos cómo se construyen las expresiones. | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ;Semántica | ||
+ | Habla del significado. | ||
+ | {{MRM_Puntos clave| | ||
+ | ;Estudiaremos alguna peculiaridad, como el hecho de que php es un lenguaje '''''altamente orientado a expresiones''''' | ||
+ | }} | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ===Instrucciones en un lenguaje de programación=== | ||
+ | #Inicio Fin de bloque | ||
+ | #Instrucción/función de leer del teclado, escribir por pantalla | ||
+ | #Declaraciones (variables, constantes, funciones, clases, objetos, ...) | ||
+ | #Asignación | ||
+ | #Invocación (llamada a función o método) | ||
+ | #Estructura de control (selectiva, iterativa) | ||
+ | </div> | ||
+ | |||
+ | |||
+ | <div class="slide"> | ||
+ | ;Instrucción de inicio fin de bloque | ||
+ | <source lang = php> | ||
+ | { //Instrucción de inicio de bloque | ||
+ | } //Instrucción de fin de bloque | ||
+ | </source> | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | |||
+ | {{MRM_Puntos clave|Title= PHP instrucción inicio fin| | ||
+ | ;En PHP el bloque '''inicio''' y '''fin''' está especificado con los caracteres | ||
+ | <source lang=php> | ||
+ | { //inicio de bloque | ||
+ | } //fin de bloque | ||
+ | </source> | ||
+ | }} | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | ;inicio del programa se especifica con las etiquetas | ||
+ | <source lang=php> | ||
+ | <?php //Etiqueta de inicio de script | ||
+ | |||
+ | ?> //Etiqueta de fin de script | ||
+ | </source> | ||
+ | }} | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ;Separando instrucciones | ||
+ | * ''''';''''' (punto y coma) | ||
+ | *Su uso es obligatorio. | ||
+ | *En la '''''última instrucción''''' se puede obviar (excepción). | ||
+ | **'''''?>''''' implica esta instrucción. | ||
+ | *La instrucción inicio de bloque y fin de bloque no lleva nunca ''''';''''' | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | {{Tip|Si sólo queremos insertar 1 instrucción puede ser interesante obviar el ''''';'''''. | ||
+ | <source lang=php> | ||
+ | <html> | ||
+ | ...... | ||
+ | <?php echo "hola" ?> | ||
+ | <!-- instrucciones html --> | ||
+ | <?php echo "otro hola" ?> | ||
+ | <!-- mas instrucciones html --> | ||
+ | <?php echo "otra instrucción " ?> | ||
+ | ..... | ||
+ | </html> | ||
+ | </source> | ||
+ | }} | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ;Poniendo ''''';''''' | ||
+ | {{Tip|También puede haber ; | ||
+ | <source lang=php> | ||
+ | <html> | ||
+ | ...... | ||
+ | <?php echo "hola" ;?> | ||
+ | <!-- instrucciones html --> | ||
+ | <?php echo "otro hola" ; ?> | ||
+ | <!-- mas instrucciones html --> | ||
+ | <?php echo "otra instrucción " ; ?> | ||
+ | ..... | ||
+ | </html> | ||
+ | </source> | ||
+ | }} | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | |||
+ | {{MRM_Actividad|Title=Probando código php| | ||
+ | ;Haz un programa que dónde incluyas código dentro del body. | ||
+ | :Muestra con etiqueta h1, h2 y h3 tres frases. | ||
+ | :Utiliza la función echo para visualizar. | ||
+ | ;Muestra en el título un texto escrito desde php. | ||
+ | ;Compara el fichero del servidor con el que recibe el cliente. | ||
+ | }} | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | <div style="font-size:18px"> | ||
+ | {{Plegable|hide|<h3>Posible solución</h3>| | ||
+ | <source lang=html5> | ||
+ | </body> | ||
+ | </html> | ||
+ | <!doctype html> | ||
+ | <html lang="en"> | ||
+ | <head> | ||
+ | <meta charset="UTF-8"> | ||
+ | <title> | ||
+ | <?php | ||
+ | echo "Este es un título desde php" | ||
+ | ?> | ||
+ | </title> | ||
+ | </head> | ||
+ | <body> | ||
+ | <?php | ||
+ | echo "<h1>Mensaje en texto de h1</h1>"; | ||
+ | echo "<h2>Mensaje en texto de h2</h2>"; | ||
+ | echo "<h3>Mensaje en texto de h3</h3>"; | ||
+ | ?> | ||
+ | </body> | ||
+ | </html> | ||
+ | </source> | ||
+ | }} | ||
+ | </div> | ||
+ | }} | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | |||
+ | <div style="font-size:18px"> | ||
+ | ;Esto es lo que ve el cliente | ||
+ | <source lang=html5> | ||
+ | </body> | ||
+ | </html> | ||
+ | <!doctype html> | ||
+ | |||
+ | <html lang="en"> | ||
+ | <head> | ||
+ | <meta charset="UTF-8"> | ||
+ | <title> | ||
+ | Este es un título desde php | ||
+ | </title> | ||
+ | </head> | ||
+ | <body> | ||
+ | <h1>Mensaje en texto de h1</h1> | ||
+ | <h2>Mensaje en texto de h2</h2> | ||
+ | <h3>Mensaje en texto de h3</h3> | ||
+ | </body> | ||
+ | </html> | ||
+ | </source> | ||
+ | </div> | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | [[Image:1.png]] | ||
+ | </div> | ||
+ | |||
+ | |||
+ | <!-- INSTRUCCION ESCRIBIR ------> | ||
+ | <div class="slide"> | ||
+ | === Funciones de salida=== | ||
+ | *Construcciones básicas para salida de caracteres | ||
+ | *En PHP,en realidad no son funciones por lo que pueden ir sin paréntesis (con o sin paréntesis): | ||
+ | # '''''echo''''' | ||
+ | # '''''print''''' | ||
+ | *Existen otras funciones que iremos viendo según avance el curso | ||
+ | printf, var_dump, print_r, .... | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | <!--4----------------------------------> | ||
+ | |||
+ | ===echo=== | ||
+ | *Es el uso más sencillo | ||
+ | *Imprime una cadena como argumentos | ||
+ | *En la versión '''''sin paréntesis''''' , también puedes pasar una lista de argumentos. | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | *echo “primer argumento”, “segundo argumento”, “tercer argumento” | ||
+ | ?> | ||
+ | </source> | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | <!--4----------------------------------> | ||
+ | |||
+ | ===print=== | ||
+ | *Esta sentencia es igual en uso y funcionalidad que echo | ||
+ | *Tiene dos diferencias con echo | ||
+ | #Sólo puede aceptar un argumento | ||
+ | #Devuelve un valor booleano que representa si la sentencia ha tenido exito o no | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | {{Quiz_Multiple_Choice | ||
+ | |title=Observa el siguiente código e indica si es o no correcto | ||
+ | |body= | ||
+ | *<source lang=php> echo 'hola caracola', 'hola','como estás';</source> | ||
+ | ** Correcto | ||
+ | *** Cierto, '''''echo''''' admite una lista de parámetros | ||
+ | ** Incorrecto | ||
+ | *** Revisa bien tu respuesta | ||
+ | *<source lang=php> print 'hola caracola', 'hola','como estás';</source> | ||
+ | ** Correcto | ||
+ | *** Revisa bien tu respuesta | ||
+ | ** Incorrecto | ||
+ | *** Cierto, '''''print''''' no permite un listado de parámetros | ||
+ | |mix=false | ||
+ | |hint= | ||
+ | }} | ||
+ | </div> | ||
+ | |||
+ | |||
+ | |||
+ | <div class='slide'> | ||
+ | ===Comentarios === | ||
+ | *Son ignorados por el intérprete | ||
+ | *No generan instrucciones | ||
+ | *Se consideran parte del software | ||
+ | </div> | ||
+ | <div class='slide'> | ||
+ | *En php tengo 4 formas de hacer comentarios | ||
+ | <div style=font-size:20px> | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | /* | ||
+ | Este código no hace nada pero muestra | ||
+ | la sintaxis de los comentarios | ||
+ | como este que ocupa varias líneas tipo lenguaje C o Java | ||
+ | */ | ||
+ | $miVariable= 8;// Esta parte de la línea se ignorará | ||
+ | $miVariable+= 8;# y esta parte de línea tambien | ||
+ | echo "Valor de la variable $miVariable"; | ||
+ | //Este es otro comentario de una sola línea | ||
+ | #Este es otro modo de hacer comentarios tipo script de linux | ||
+ | /** | ||
+ | Este comentario permite insertar información | ||
+ | Para que luego php Documentor genere una página web | ||
+ | Con la información de mi código | ||
+ | */ | ||
+ | </source> | ||
+ | </div> | ||
+ | </div> | ||
+ | <div class='slide'> | ||
+ | *Este código nos visualizará lo siguiente | ||
+ | <source lang=php> | ||
+ | Valor de la variable 16 | ||
+ | </source> | ||
+ | El resto del código será ignorado | ||
+ | </div> | ||
+ | |||
+ | <div class='slide'> | ||
+ | *Es bueno escribir al principio del script | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | /** | ||
+ | * User: Nombre y apellidos | ||
+ | * Date: 19/10/17 | ||
+ | * Version: 17:40 | ||
+ | */ | ||
+ | </source> | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | *Aquí tienes la referencia para ver las diferentes directivas para generar código | ||
+ | *Más adelante en el curso las veremos. | ||
+ | {{MRM_Recursos de la Web| | ||
+ | *Directivas para comentarios https://phpdoc.org/docs/latest/index.html | ||
+ | }} | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | <div style=font-size:18px> | ||
+ | {{MRM_Actividad|Title=probando comentarios | | ||
+ | *Escribe la siguiente función anterior en un fichero php | ||
+ | <source lang=php> | ||
+ | function miFuncion($num1, $num2){ | ||
+ | if ($num1>$num2) | ||
+ | return $num1; | ||
+ | else | ||
+ | return $num2; | ||
+ | </source> | ||
+ | }} | ||
+ | </div> | ||
+ | |||
+ | </div> | ||
+ | <div class='slide'> | ||
+ | Ahora justo en la línea de encima de función escribe | ||
+ | <source lang=php> | ||
+ | /** | ||
+ | </source> | ||
+ | *y luego presiona intro | ||
+ | *Te debería de quedar | ||
+ | <div style=font-size:18px> | ||
+ | <source lang=php> | ||
+ | /** | ||
+ | * | ||
+ | * @param type $num1 | ||
+ | * @param type $num2 | ||
+ | * @return type | ||
+ | */ | ||
+ | function miFuncion($num1, $num2){ | ||
+ | if ($num1>$num2) | ||
+ | return $num1; | ||
+ | else | ||
+ | return $num2; | ||
+ | |||
+ | </source> | ||
+ | </div> | ||
+ | </div> | ||
+ | <div class='slide'> | ||
+ | ===Dónde poner el código embebido=== | ||
+ | <br/> | ||
+ | {{MRM_Pregunta|Dónde escribir código php|{{feedback|Dónde queramos que se ejecute algo}} }} | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | <hr /> | ||
+ | *Donde queramos que se ejecute algo | ||
+ | <hr/> | ||
+ | [[Imagen:codigoPHP.png|center|900px]] | ||
+ | *Se ejecuta como si fuera un solo programa | ||
+ | *A la hora de incluir php podemos se usa mucho la filosofía Modelo Vista /Controlador que veremos en otro tema | ||
+ | {{MRM_Resumen|Title=Modelo vista controlador| | ||
+ | *Trata de separar el código según su cometido, de forma muy resumida | ||
+ | *Hay acciones que realizan cálculos y obtienen resultados (Controlador | ||
+ | *Hay acciones que lo que hacen es visualziar valores (Vista) | ||
+ | *Hay acciones que se encargan de interactuar con la base de datos (Modelo) | ||
+ | }} | ||
+ | {{MRM_Puntos clave|Title=Empecemos aplicar el modelo vista controlador| | ||
+ | *Podemos llevar este criterio desde el principio siguiente el esquema siguiente | ||
+ | {{Plegable|hide|esqueleto MVC| | ||
+ | <source lang=html5> | ||
+ | <!-- Empecemos nuestro fichero escribiendo instrucciones php | ||
+ | Estas instrucciones realizarán cálculos y obtendrán valores | ||
+ | En ningúm momento generan salidas, | ||
+ | Trataremos de almacenar los valores en variables | ||
+ | --> | ||
+ | <?php | ||
+ | //instrucciones php | ||
+ | $variables = "Mensaje escrito desde php"; | ||
+ | ?> | ||
+ | <!--Ahora el código html--> | ||
+ | <!DOCTYPE html> | ||
+ | <html> | ||
+ | <head> | ||
+ | <meta charset="UTF-8"> | ||
+ | <title>probando php</title> | ||
+ | </head> | ||
+ | <body> | ||
+ | <!--Dentro del html cuando necesitemos ver valores | ||
+ | los escribiemo | ||
+ | También puede ser que necesitemos instrucciones | ||
+ | las escribimos, pero intentando escribir lo necesario. | ||
+ | Esto es vista | ||
+ | --> | ||
+ | <h1> <?php echo $variable ?></h1> | ||
+ | </body> | ||
+ | </html> | ||
+ | </source> | ||
+ | |||
+ | }} | ||
+ | }} | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | |||
+ | |||
+ | {{MRM_Ejemplo|Title=Programa para ver si un número es o no par| | ||
+ | No te preocupes si no entiendes el código, lo iremos viendo | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | |||
+ | //-----------CONTROLADOR----------------------------- | ||
+ | //Instrucciones que realizan cálculos | ||
+ | //Guardo el resultado que quiero mostrar en variables | ||
+ | $a = rand(1, 100); //Genero un número aleatorio | ||
+ | $fecha = date("d m Y", time()); //Obtenemos la fecha | ||
+ | $title = "Hoy, $fecha, veremos si '$a' es par o impar "; //Creo un título | ||
+ | if ($a % 2 == 0) //Si el número es par | ||
+ | $msj = "El número $a es par"; | ||
+ | else | ||
+ | $msj = "El número $a es impar"; | ||
+ | ?> | ||
+ | |||
+ | <!-- Ahora metemos el código php cuando lo necesitemos--> | ||
+ | <!------------------- VISTA (solo la parte php)-----------------------> | ||
+ | <!DOCTYPE html> | ||
+ | <html> | ||
+ | <head> | ||
+ | <meta charset="UTF-8"> | ||
+ | <title>probando php</title> | ||
+ | </head> | ||
+ | <body> | ||
+ | <h1> <?php echo $title ?></h1> | ||
+ | <hr /> | ||
+ | <h3> <?php echo $msj ?></h3> | ||
+ | |||
+ | </body> | ||
+ | </html> | ||
+ | </source> | ||
+ | |||
+ | |||
+ | }} | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | |||
+ | ===Escribir PHP con directivas de inclusión=== | ||
+ | *Podemos escribir el código php escribiéndolo en un fichero aparte y luego lo incluimos. | ||
+ | **Incluimos el fichero explícitamente | ||
+ | **Para ello usamos directivas o instrucciones del tipo '''''include''''' | ||
+ | <source lang=php> | ||
+ | include('ruta/nobrefichero'); | ||
+ | require('ruta/nobrefichero'); | ||
+ | include_once('ruta/nombrefichero'); | ||
+ | require_once('ruta/nombrefichero'); | ||
+ | </source> | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ;Ambas son palabras reservadas del lenguaje y sirven para incluir el contenido de un fichero con sentencias php en esa posición del código. | ||
+ | {{MRM_Puntos clave|Title=Include Vs Require| | ||
+ | *Ambas incluyen el contenido de un fichero php en esa posición | ||
+ | **Con include si no se encuentra se continúa ejecutando en esa posición | ||
+ | **Con require si no está el fichero se detiene en ese punto la ejecución del script}} | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | {{MRM_Puntos clave|Title=include/require Vs include_once/require_once | | ||
+ | *Ambas incluyen el contenido de un fichero php en esa posición | ||
+ | **include/require siempre buscan e incluyen el fichero en esa posición | ||
+ | **include_once/require_once antes de incluirlo mira a ver si ya lo incluyó previamente en cuyo caso ya no lo hace}} | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | {{MRM_Actividad|Title=Probando include require | ||
+ | |Crea 4 ficheros con el siguiente código | ||
+ | '''''fichero_include.php''''' | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | echo "<b><i>Hola desde un fichero include </b></i><hr />"; | ||
+ | ?> | ||
+ | </source> | ||
+ | '''''fichero_include_once.php''''' | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | echo "<b><i>Hola desde un fichero include once </b></i><hr />"; | ||
+ | ?> | ||
+ | </source> | ||
+ | '''''fichero_require.php''''' | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | echo "<b><i>Hola desde un fichero require </b></i><hr />"; | ||
+ | ?> | ||
+ | </source> | ||
+ | '''''fichero_require_once.php''''' | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | echo "<b><i>Hola desde un fichero require once </b></i><hr />"; | ||
+ | ?> | ||
+ | </source> | ||
+ | '''''Ahora crea un programa principal dónde uses las instrucciones de inclusión vistas en este apartado'''''. | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | |||
+ | echo "<h2>Ahora vamos a incluir un fichero con include</h2>"; | ||
+ | include 'ficheros/fichero_include.php'; | ||
+ | |||
+ | echo "<h2>ahora vamos a incluir un fichero con require</h2>"; | ||
+ | require 'ficheros/fichero_require.php'; | ||
+ | |||
+ | echo "<h2>Ahora vamos a incluir un fichero con include_once</h2>"; | ||
+ | include_once 'ficheros/fichero_include_once.php'; | ||
+ | |||
+ | echo "<h2>Ahora vamos a incluir un fichero con require_once</h2>"; | ||
+ | require_once 'ficheros/fichero_require_once.php'; | ||
+ | |||
+ | echo "<h2>Ahora vamos a incluir un fichero que no existe con include</h2>"; | ||
+ | include 'ficheros/fichero_no_existe_include.php'; | ||
+ | echo "Vemos que no pasa nada, por que el fichero no existe pero sigue <hr />"; | ||
+ | |||
+ | echo "<h2>Ahora volvemos a incluir un fichero con include_once</h2>"; | ||
+ | include_once 'ficheros/fichero_include_once.php'; | ||
+ | echo "Vemos que no pasa nada, por que el fichero ya se había incluido y no se vuelve a incluir<hr />"; | ||
+ | |||
+ | echo "<h2>Ahora volvemos a incluir un fichero con require_once</h2>"; | ||
+ | require_once 'ficheros/fichero_require_once.php'; | ||
+ | echo "Vemos que no pasa nada, por que el fichero ya se había incluido y no se vuelve a incluir<hr />"; | ||
+ | |||
+ | echo "<h2>Ahora vamos a incluir un fichero con include para ver que sí que se vuelve a incluir</h2>"; | ||
+ | include 'ficheros/fichero_include.php'; | ||
+ | |||
+ | echo "<h2>Ahora vamos a incluir un fichero con require y vemos que sí se vuelve a incluir</h2>"; | ||
+ | require 'ficheros/fichero_require.php'; | ||
+ | |||
+ | echo "<h2>Ahora no incluimos con require un fichero que no existe</h2>"; | ||
+ | require 'ficheros/fichero_no_existe_require.php'; | ||
+ | echo "Esta línea ya no se imprimirá ni nada que vaya después de aquí"; | ||
+ | ?> | ||
+ | </source> | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | {{Tip| | ||
+ | *Siéntete cómoda en modificar el fichero y ver el resultado | ||
+ | *Observa que estas instrucciones no son exactamente funciones, por lo que no necesitan paréntesis (aunque se puede poner por mantener una homogeneidad con sintaxis del uso o invocación de funciones) | ||
+ | <source lang=php> | ||
+ | include 'ficheros/fichero_include.php' | ||
+ | //Es léxicamente y sintácticamente igual que | ||
+ | include ('ficheros/fichero_include.php'); | ||
+ | |||
+ | </source> | ||
+ | }} | ||
+ | }} | ||
+ | </div> | ||
+ | |||
+ | |||
+ | |||
+ | <div class="slide"> | ||
+ | {{MRM_Recursos de la Web| | ||
+ | *[http://php.net/manual/es/ php] página oficial en español LO MEJOR!!!! | ||
+ | *http://php.net/manual/es/ | ||
+ | *<!-- MRM incluir en el otro documento http://php.net/manual/es/ini.core.php --> | ||
+ | |||
+ | }} | ||
+ | </div> | ||
+ | |||
+ | <div class=slide> |
Última revisión de 19:32 20 sep 2018