|
|
(42 revisiones intermedias por el mismo usuario no mostrado) |
Línea 9: |
Línea 9: |
| [[Imagen:DWES_TituloTema3.gif|center]] | | [[Imagen:DWES_TituloTema3.gif|center]] |
| |} | | |} |
− | ___NOTOC___
| + | |
| + | |
| + | __TOC__ |
| {{#widget:Slides}} | | {{#widget:Slides}} |
| <div class="slides layout-regular template-default"> | | <div class="slides layout-regular template-default"> |
− | <div class="slide">
| + | |
− | ===Introducción===
| + | |
− | </div>
| + | |
| {{PHP/Introduccion}} | | {{PHP/Introduccion}} |
− |
| |
− |
| |
− | <div class="slide">
| |
− | ===Programa: conjunto de instrucciones===
| |
| {{PHP/ProgramaConjuntoInstrucciones}} | | {{PHP/ProgramaConjuntoInstrucciones}} |
− | </div>
| + | {{PHP/InstruccionEscribir}} |
− | | + | {{PHP/Declaraciones}} |
− | | + | |
− | <div class="slide">
| + | |
− | ===Programa: conjunto de instrucciones===
| + | |
− | {{PHP/InstroccionEscribir}} | + | |
− | </div>
| + | |
− | | + | |
− | | + | |
− | | + | |
− | <div class="slide">
| + | |
− | {{Tip|Para las siguientes actividades debes conocer las estructuras de control básicas.}} | + | |
− | {{Actividad|
| + | |
− | Haz un programa que sume los 100 primeros números}}
| + | |
− | | + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | | + | |
− | {{Actividad|
| + | |
− | Haz un programa que obtenga de forma aleatoria dia (1-31)mes(1-12) y año(1-3000) y nos diga si la fecha es correcta o no y porqué}}
| + | |
− | </div>
| + | |
− | | + | |
− | | + | |
− | | + | |
− | ===Declaraciones===
| + | |
− | #De variables
| + | |
− | #De constantes
| + | |
− | #De funciones
| + | |
− | #De clases
| + | |
− | #De objetos y recursos (clases ya creadas o incluidas)
| + | |
− | {{Tip|Las funciones,clases y objetos los veremos en otro tema}}
| + | |
− | {{Pregunta|
| + | |
− | * Qué es un '''''tipo de dato'''''
| + | |
− | * Qué es una '''''variable'''''
| + | |
− | }}
| + | |
− | </div>
| + | |
− | <div class="slide">
| + | |
− | <!--2---------------------------------->
| + | |
− | {{Definicion|
| + | |
− | '''''Un tipo de dato''''' es un conjunto de valores para los cuales hay definidos una serie de operaciones}}
| + | |
− | </div>
| + | |
− | <div class="slide">
| + | |
− | <!--3---------------------------------->
| + | |
− | {{Definicion|
| + | |
− | '''''Una variable''''' es una posición de memoria que va almacener algún valor de un determinado tipo, y cuyo contenido puede variar durante la ejecución de un programa
| + | |
− | }}
| + | |
− | </div>
| + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | ;PHP: '''''Tipado dinámico''''
| + | |
− | *Una características semántica muy, muy importante de php
| + | |
− | {{Puntos clave|PHP es un lenguaje fuertemente tipado}}
| + | |
− | *Los lenguajes de programación pueden ser mas o menos exigentes en cuanto a la declaración de los tipos de las variables para poder ser usados durante la ejecución de un programa.
| + | |
− | </div>
| + | |
− | <div class="slide">
| + | |
− | ;tipado dinámico
| + | |
− | *Lenguajes fuertemente tipos o débilmente tipados
| + | |
− | *Esto tiene que ver con el hecho de que cada variable en un momento dado tiene un tipo, y lo podemos saber
| + | |
− | *Esto ocurre en php
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;Tipado dinámico
| + | |
− | *Php no es estricto en el tipo de dato de una variable en cuanto que éste puede cambiar durante su vida.
| + | |
− | *En este sentido php es un lenguaje de '''''tipado dinámico''''', el tipo de la variable depende del valor que tiene en un momento dado o de los operadores que lo afecten.
| + | |
− | {{Puntos clave|PHP es un lenguaje de tipado dinámico}}
| + | |
− | </div>
| + | |
− | | + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;Definir variables
| + | |
− | *En php una variable es definida la primera vez que se usa.
| + | |
− | *El tipo de la variable depende del valor que tenga asignado en un momento dado
| + | |
− | *El identificador de php tiene que empezar por el signo '''''$'''''
| + | |
− | *En php las variables se representan con el signo '''''$''''' seguido de un carácter de subrayado o una letra y luego letras, números y caracteres de subrayado en cualquier orden y número.
| + | |
− | </div>
| + | |
− | <div class="slide">
| + | |
− | ;PHP y variables
| + | |
− | {{Resumen|
| + | |
− | #Php es un lenguaje tipado
| + | |
− | #Php tipado dinámico
| + | |
− | #Php no es estricto en la declaracion de variables (La declaración ocurre la primera vez que se usa)
| + | |
− | }}
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | ;identificador de variables
| + | |
− | {{Puntos clave|identificador = $[_|a.zA..Z][_|a..zA..Z0..9]*
| + | |
− | <source lang=php>
| + | |
− | <?php
| + | |
− | $miVariable= 8;/*Variable de tipo entero*/
| + | |
− | edad = 5/*Error en el identificador*/
| + | |
− | $5edad = 5 /*Error en el identificador */
| + | |
− | ?>
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | ;Sensitive case?
| + | |
− | *El lenguaje es sensible a mayúsculas y minúsculas
| + | |
− | **En los identificadores de variables ($edad != $Edad)
| + | |
− | **No lo es en nombres de funciones $calculaEdad(1990) != $CalculaEdad(1990)
| + | |
− | **No lo es en palabras reservadas (if o If o IF o iF,...)
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | ===Valores y tipos de datos===
| + | |
− | http://php.net/manual/es/language.types.intro.php
| + | |
− | *En Php tenemos 8 tipos de datos
| + | |
− | #5 tipos básicos o primitivos (un valor)
| + | |
− | #3 tipos compuestos (conjunto de valores).
| + | |
− | </div>
| + | |
− | | + | |
− | | + | |
− | | + | |
− | <div class="slide">
| + | |
− | {{Actividad|Title=Tipos primitivos|
| + | |
− | #'''''boolean''''': Valores TRUE y FALSE.
| + | |
− | #''''entero''''': números enteros ... -2,-1,0,1,2 ...
| + | |
− | #'''''real''''': números reales
| + | |
− | # '''''string''''': Cadena de caracteres
| + | |
− | #'''''NULL''''': Valor null
| + | |
− | }}
| + | |
− | </div>
| + | |
− | <div class="slide">
| + | |
− | | + | |
− | {{Actividad|Title=Tipos compuestos|
| + | |
− | #'''''array''''': conjunto enumerado por la clave de valores de diferente tipo
| + | |
− | # '''''objeto''''': Instancia de una clase en memoria
| + | |
− | # '''''recurso''''': objeto que permite utilizar elementos del sistema o '''recursos''', (por ejemplo conector a una base de datos)
| + | |
− | }}
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | ;tipos básicos
| + | |
− | #'''entero '''''integer''''' '''
| + | |
− | *Posible notación decimal/octal/hexadecimal
| + | |
− | decimal [0..9]+
| + | |
− | hexadecimal 0x[0..f]+
| + | |
− | octal 0[0..7]+
| + | |
− | binario 0b[01]+
| + | |
− | *Todos ellos pueden ser positivos o negativos
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | <source lang=php>
| + | |
− | **$Numero=10;
| + | |
− | *Octal
| + | |
− | **$NumeroOctal=067;
| + | |
− | *Hexadecimal
| + | |
− | **$NumeroHex=0cA56B;
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | ;integer
| + | |
− | *Al imprimirlos con print los veré con valor decimal
| + | |
− | *Para verlos en otras base hay que usar printf o format o utilizar las conversiones dechex o dechex o octdec, .... que veremos a continuación
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | | + | |
− | ;cadena '''''string'''''
| + | |
− | $frase="Esto es un literal de cadena de caracteres"
| + | |
− | **real o coma flotante '''''float'''''
| + | |
− | <source lang=php>
| + | |
− | $valor=$0.2345;
| + | |
− | $valor=.54;
| + | |
− | $valor=7E-12;
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | ;Booleano '''''boolean'''''
| + | |
− | <source lang=PHP>
| + | |
− | $estado=TRUE;
| + | |
− | $estado=TrUe;
| + | |
− | $estado=falsE;
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | ;NULL
| + | |
− | *un tipo especial que solo tiene ese valor
| + | |
− | *Una variable tiene el valor null
| + | |
− | #Si aún no se le ha asignado valor, o éste se ha destruido (unset()
| + | |
− | #Si se le ha asignado explícitametne el valor NULL.
| + | |
− | <source lang=PHP>
| + | |
− | $a=NULL;
| + | |
− | $a=null;
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4--------------------------------->
| + | |
− | ;Tipos complejos
| + | |
− | *Objetos básico en su aspecto de OOP
| + | |
− | *Matrices o arrays muy muy utilizados
| + | |
− | *Recursos este más que un tipo complejo es un tipo especial que hace referencia a un recurso externo referencia , como una conexión a una base de datos o como una referencia a un fichero pdf.
| + | |
− | *Este tipo de variables las veremos más adelante
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | ===Comentarios ===
| + | |
− | Son ignorados por el intérprete
| + | |
− | <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
| + | |
− | ?>
| + | |
− | </source>
| + | |
− | *Este código nos visualizará
| + | |
− | Valor de la variable 16
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | | + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | ===Separación de instrucciones===
| + | |
− | *En php cada instrucción se separa de otra con ''''';''''' (punto y coma).
| + | |
− | *El cierre de etiqueta php implica un ''''';''''' (punto y coma), por lo que podríamos no ponerlo
| + | |
− | <source lang =php>
| + | |
− | <?php
| + | |
− | $a=5;
| + | |
− | $echo'la instruccion de arriba es una y esta otra";
| + | |
− | $echo'esta instrucción puede no llevar ;
| + | |
− | por ir antes de fin de etiqueta php, pero mejor ponerla"
| + | |
− | ?>
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | {{Actividad|
| + | |
− | *Probamos a hacer programas sencillos donde asignamos y visualizamos valores
| + | |
− | #entero:
| + | |
− | #cadena:
| + | |
− | #booleano:
| + | |
− | #real
| + | |
− | #NULL
| + | |
− | }}
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ===Valor de variable===
| + | |
− | *A una variable le puedo asignar un valor en cualquier momento
| + | |
− | *El tipo de la variable depende del valor que tiene
| + | |
− | *Hay una serie de funciones del sistema relacionadas con los valores y las variables
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | ====Funciones de php de tipos y valores====
| + | |
− | http://php.net/manual/es/ref.var.php
| + | |
− | *Existen una serie de funciones que son interesantes de conocer
| + | |
− | *Están relacionadas con los tipos de datos y valores
| + | |
− | *Alguna de ellas son extremadamente útiles y utilizadas, por ejemplo antes de procesar un dato, hay que ver que dicho dato tenga valor.
| + | |
− | *A continuación trataremos alguna de ellas
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | | + | |
− | ;[http://es1.php.net/manual/es/function.var-dump.php var_dump]
| + | |
− | <source lang=php>
| + | |
− | void var_dump($expresion)
| + | |
− | </source>
| + | |
− | *Nos da información sobre la estructura de un valor resultado de una expresion
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | | + | |
− | ;[http://es1.php.net/manual/es/function.isset.php isset]
| + | |
− | <source lang=php>
| + | |
− | bool isset ( $variable )
| + | |
− | </source>
| + | |
− | *verifica que una variable tiene valor (está definida y no tiene un valor null)
| + | |
− | <source lang=php>
| + | |
− | <?php
| + | |
− | $VariableValor= 5;
| + | |
− | print ("El valor de la variable es $VariableValor");
| + | |
− | print ("El valor de otra variable es $OtraVariableValor");
| + | |
− | if (isset($VariableValor))
| + | |
− | print ("VariableValor tiene valor asignado");
| + | |
− | else
| + | |
− | print ("VariableValor no no tiene valor asignado");
| + | |
− | if (isset($OtraVariableValor))
| + | |
− | print ("OtraVariableValor tiene valor asignado");
| + | |
− | else
| + | |
− | print ("OtraVariableValor no no tiene valor asignado");
| + | |
− | ?>
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | | + | |
− | ;[http://es1.php.net/manual/es/function.empty.php empty]
| + | |
− | <source lang=php>
| + | |
− | bool empty ($varriable)
| + | |
− | </source>
| + | |
− | *Determina si una variable no existe. Devuelve true si no existe o su valor está vacío
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | | + | |
− | {{Actividad|
| + | |
− | Probamos las fuciones var_dump() que nos da información sobre el valor y el tipo}}
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | {{Actividad|
| + | |
− | Usando la función xxxyyy donde xxx e yyy será dec oct bin o hex para convertir el valor de un sistema numérico a otro}}
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | | + | |
− | {{Actividad|
| + | |
− | *Define las siguientes variables que se especifican en el código siguiente y verifica el resultado con empty()
| + | |
− | | + | |
− | <source lang=php>
| + | |
− | $num=0;
| + | |
− | $nombre="";
| + | |
− | $nombre=null;
| + | |
− | $nombre="0";
| + | |
− | $pregunta = FALSE;
| + | |
− | </source>
| + | |
− | }}
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | | + | |
− | ;[http://es1.php.net/manual/es/function.gettype.php gettype]]
| + | |
− | *Devuelve el tipo de una variable
| + | |
− | <source lang=php>
| + | |
− | string gettype($variable)
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | | + | |
− | ;[http://es1.php.net/manual/es/function.is-bool.phpis_bool][http://es1.php.net/manual/es/function.is-double.php is-double] [http://es1.php.net/manual/es/function.is-int.php is-int], is-xxx
| + | |
− | *son funciones donde xxx especificado en el último nombre, puede ser cualquiera de los tipos
| + | |
− | [[Archivo:funciones_is-xxx.png]]
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | | + | |
− | *Todas ellas devuelve un booleano que indica si la variable, valor o expresion es o no de ese tipo,
| + | |
− | <source lang=php>
| + | |
− | string is_int($variable);
| + | |
− | string is_double($variable);
| + | |
− | string is_bool($variable);
| + | |
− | string is_integer($variable);
| + | |
− | string is_null($variable);
| + | |
− | string is_string($variable);
| + | |
− | ...
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | {{Actividad|
| + | |
− | Visualizar de qué tipo es la expresión mostrada en el código siguiente y visualiza el valor de la expresión}}
| + | |
− | <source lang=php>
| + | |
− | $a=5;
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | | + | |
− | ;[http://php.net/manual/es/function.unset.php unset]
| + | |
− | *Destruye la variable especificada perdiéndose su valor
| + | |
− | void unset ($var)
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | === Cadenas===
| + | |
− | *En php las cadenas de caracteres, son expresiones literales
| + | |
− | *Tenemos 4 maneras diferentes de poder expresar una cadena de caracteres como un literal
| + | |
− | *Comillas dobles ""
| + | |
− | *Comillas sencillas <nowiki>''</nowiki>
| + | |
− | *Sintasix '''''heredoc'''''
| + | |
− | *Sintaxis '''''nowdoc'''''
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;Comillas dobles
| + | |
− | *En ellas se interpretan los caracteres especiales
| + | |
− | #''''' $''''' seguido de un nombre, interpreta que es una variable y toma su valor (null si no tiene valor o no está definida
| + | |
− | #'''''\''''' es un caracter de secuencia de escape, e interpreta que el carácter siguiente tiene un significado especial \\ \a \n \r \t , ...
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | *Si queremos que se ignore un carácter especial, éste ha de ir precedido por el caracter '''''\'''''
| + | |
− | <source lang=php>
| + | |
− | $nombre = 'pedro';
| + | |
− | echo "El valor de la variable \$nombre es $nombre";
| + | |
− | </source>
| + | |
− | *El resultado sería
| + | |
− | El valor de la variable $nombre es pedro
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;Comillas simples
| + | |
− | *En ellas solo se interpreta el carácter, seguido de \ o bien seguido de la barra invertida '''''\\''''' comilla simple '''''\<nowiki>'</nowiki>'''''
| + | |
− | *El resto de caracteres no se interpretan
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <source lang=php>
| + | |
− | $nombre = 'pedro';
| + | |
− | echo 'El valor de la variable $nombre es $nombre y \\ \'texto\' si que se ve entre comillas simples';
| + | |
− | </source>
| + | |
− | *La salida sería
| + | |
− | El valor de la variable $nombre es $nombre y \ 'texto' si que se ve entre comillas simples';
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;Heredoc
| + | |
− | *Este tipo de expresión de string es útil para especificar cadenas largas en multilíneas
| + | |
− | *Se comporta como un string entre comillas dobles para el tema de interpretar y escapar ciertos caracterres
| + | |
− | *Se establece con el operador '''''<<<'''''
| + | |
− | *A continuación viene un identificador
| + | |
− | *Después empieza a especificarse la cadena de caracteres
| + | |
− | *Para finalizarla se escribe en una nueva línea el identificador
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <source lang=php>
| + | |
− | <?php
| + | |
− | $frase = <<<FINAL
| + | |
− | Esta es una cadena
| + | |
− | de caracteres que se asignará
| + | |
− | a la variable frase
| + | |
− | y termina con la palabra
| + | |
− | con la que hemos empezado
| + | |
− | FINAL;
| + | |
− | <?
| + | |
− | </source>
| + | |
− | *La palabra final no debe tener ningún espacio ni tabulador antes
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;NewDoc
| + | |
− | *Es igual que heredoc , pero sin interpretar los caracteres especiales salvo '''''\\''''' '''''\.'''''
| + | |
− | *O sea que es como un entrecomillado sencillo
| + | |
− | *La sintasix es igual que la de heredoc, pero a diferencia el delimitador que se especifica al principio debe de ir entrecomillado con comillas simples
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | <source lang=php>
| + | |
− | <?php
| + | |
− | $nombre=pedro;
| + | |
− | $frase = <<<'FINAL'
| + | |
− | El valor de $nombre
| + | |
− | es $nombre, pero aquí
| + | |
− | no lo veo por que es newdoc
| + | |
− | FINAL;
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | | + | |
− | <!--4---------------------------------->
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | | + | |
− | | + | |
− | | + | |
− | <div class="slide">
| + | |
− | | + | |
− | {{Actividad|
| + | |
− | *Haz un programa que a partir de precio hora y de número de horas calcule una nómina, teniendo en cuenta que:
| + | |
− | #mas de 40 horas son extras (1.5 el precio base)
| + | |
− | #IRPF < 600E exento
| + | |
− | #Entre 600 y 800 5%
| + | |
− | #Mas de 800 12 %
| + | |
− | *Nos debe de dar detalle del bruto, descuentos y neto de salario}}
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | | + | |
− | {{Actividad|
| + | |
− | Un programa que nos diga si un número es o no primo}}
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | | + | |
− | {{Actividad|
| + | |
− | Haz un programa que muestre la tabla de multiplicar de un número aleatorio en una tabla. Intenta que las sentencias html queden fuera del código de php}}
| + | |
− | | + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | | + | |
− | ===Constantes===
| + | |
− | *Se definen con la funcion '''''define()'''''
| + | |
− | <source lang=php>
| + | |
− | define("IVA",0.21);
| + | |
− | $total=$base*(1+IVA);
| + | |
− | </source>
| + | |
− | ;identificador
| + | |
− | *Se usa el mismo criterio de construcción pero no empieza por $
| + | |
− | *Se pueden definir y utilizar en cualquier momento que se necesiten.
| + | |
− | *Para saber si una constante está definida '''''defined()'''''
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ===Constantes predefinidas===
| + | |
− | *Como en otros lenguajes, existen una serie de constantes predefinidas
| + | |
− | *Nos las ofrece el entorno y dependerán de él para su valor
| + | |
− | *PHP Ofrece un gran número de constantes predefinidas http://php.net/manual/es/reserved.constants.php
| + | |
− | *En php hay 8 constantes que su valor puede cambiar dependiendo del entorno donde se ejecutan
| + | |
− | [http://php.net/manual/es/language.constants.predefined.php constantes] predefinidas en php
| + | |
− | </div>
| + | |
− | | + | |
− | | + | |
− | <div class="slide">
| + | |
− | | + | |
− | {{Tarea|
| + | |
− | Realiza un programa que visualice las constantes predefinidas '''variables''' vistas anteriormente, y al menos otras 8 de las constantes predefinidas '''estandar'''}}
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ===Ambito de una variable===
| + | |
− | *http://php.net/manual/es/language.variables.scope.php
| + | |
− | *Ya sabemos que en PHP puedes utilizar variables en cualquier lugar de un programa.
| + | |
− | *Si esa variable aún no existe, la primera vez que se utiliza se reserva espacio para ella.
| + | |
− | *En ese momento, dependiendo del lugar del código en que aparezca, se decide desde qué partes del programa se podrá utilizar esa variable.
| + | |
− | *A esto se le llama visibilidad de la variable.
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;Ambito de una variable
| + | |
− | *En función de esto tenemos variables locales a la función y variables locales al script
| + | |
− | <source lang=php>
| + | |
− | $a = 1;
| + | |
− | function prueba()
| + | |
− | {
| + | |
− | // Dentro de la función no se tiene acceso a la variable $a anterior
| + | |
− | $b = $a;
| + | |
− | // Por tanto, la variable $a usada en la asignación anterior es una variable nueva
| + | |
− | // que no tiene valor asignado (su valor es null)
| + | |
− | }
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;Ambito de una variable
| + | |
− | *Para poder hacer dentro de una función a una variable definida fuera, he de usar la palabra reservada '''''global'''''
| + | |
− | <source lang=php>
| + | |
− | $a = 1;
| + | |
− | function prueba()
| + | |
− | {
| + | |
− | global $a;
| + | |
− | $b = $a;
| + | |
− | // En este caso se le asigna a $b el valor 1
| + | |
− | }
| + | |
− | </source>
| + | |
− | {{Actividad|
| + | |
− | *Una funcion que coja un precio y lo actualice según el iva que reciba de argumento.
| + | |
− | *El precio total se muestra fuera de la funcion
| + | |
− | }}
| + | |
− | </div>
| + | |
− | <div class="slide">
| + | |
− | ====Variables '''''static'''''====
| + | |
− | *Si una variable la declaramos static, hacemos que su posición de memoria no se elimine aunque no sea accesible por el script
| + | |
− | *Cuando volvamos a una sección del script donde vuelve a ser accesible, entonces retomaremos esa posicion de memoria, con el valor que tuviera
| + | |
− | <source lang=php>
| + | |
− | function contador()
| + | |
− | {
| + | |
− | static $a=0;
| + | |
− | $a++;
| + | |
− | // Cada vez que se ejecuta la función, se incrementa el valor de $a
| + | |
− | }
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;static
| + | |
− | *Las variables estáticas deben inicializarse en la misma sentencia en que se declaran como estáticas. De esta forma, se inicializan sólo la primera vez que se llama a la función.
| + | |
− | {{Tarea|
| + | |
− | *Haz un programa que llame 20 veces a una función
| + | |
− | *Cada vez que llame a la función, la función muestra un mensaje que me diga '''''me has llamado 1 vez''''', o '''''me has llamado 20 veces'''''
| + | |
− | }}
| + | |
− | </div>
| + | |
− | <div class="slide">
| + | |
− | <!--4---------------------------------->
| + | |
− | | + | |
− | === Estructuras de control 1===
| + | |
− | A continuación veremos las estructuras de control
| + | |
− | Son de tres tipos
| + | |
− | #Selección
| + | |
− | #Iteración
| + | |
− | #Secuenciales
| + | |
− | *Para construirlas necesitamos operadores
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ===Selección if===
| + | |
− | *Sentencia que evlúa una expresión booleana y ejectua o no en función de que dicha expresión sea true o false
| + | |
− | <source lang=php>
| + | |
− | if (condicion)
| + | |
− | Sentencia 1;
| + | |
− | </source>
| + | |
− | <hr>
| + | |
− | <source lang=php>
| + | |
− | if (condicion){
| + | |
− | Sentencia_1;
| + | |
− | Sentencia_2;
| + | |
− | }
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;Sentencias de control
| + | |
− | if (expresion)
| + | |
− | Sentencia_1;
| + | |
− | else
| + | |
− | Sentencia_2;
| + | |
− | </source>
| + | |
− | *También existe la opción elseif donde aportaremos una condición que se ha de cumplir para que se ejectuten las sentencias que a continuación acompañan.
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;Estructura de control
| + | |
− | <source lang=php>
| + | |
− | if (expresion){
| + | |
− | sentencias;
| + | |
− | }
| + | |
− | elseif (expresion){
| + | |
− | sentencias;
| + | |
− | }
| + | |
− | else{
| + | |
− | sentencias;
| + | |
− | }
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | | + | |
− | *Alternativamente puede usarse esta sintaxis que es usada cuando se quiere intercalar condigo html fuera del php.
| + | |
− | *También se puede usar la sintaxis vista anteriormente, pero parece que esta quede más compacta.
| + | |
− | | + | |
− | <source lang=php>
| + | |
− | if (condicion):
| + | |
− | Sentencia 1;
| + | |
− | endif;
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | <div class="slide">
| + | |
− | | + | |
− | *Ahora lo vemos con código html
| + | |
− | <source lang=php>
| + | |
− | <?php if (true): ?>
| + | |
− | | + | |
− | <h1>Esta frase seguro que aparece ahor</h1>
| + | |
− | <!--escribirmos código html -->
| + | |
− | <?php else: ?>
| + | |
− | <h1>Aquí escribiré poco ya que no va a aparecer nada</h1>
| + | |
− | <!--escribirmos código html -->
| + | |
− | <?php endif ?>
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ===Operadores ternario===
| + | |
− | *Es una forma más compacta de un if else con una única instrucción.
| + | |
− | Expresión? SentenciaOKExpresion : SentenciaNoOkExpresion
| + | |
− | {{Actividad|Programa que me de si un número aleatorio es par o impar}}
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ===Seleccion switch===
| + | |
− | *Este es un selector múltiple
| + | |
− | *La sentencia case puede albergar cualquier valor de un tipo simple, no está limitado a enteros como en otros lenguajes
| + | |
− | *Estructura indicada cuanto tengamos más de dos casos ante una variable o sitiación que evaluemos excluyentes entre sí
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;Switch
| + | |
− | <source lang=php>
| + | |
− | <?php
| + | |
− | switch ($nombre){
| + | |
− | case "Maria":
| + | |
− | echo "eres una chica";
| + | |
− | break;
| + | |
− | case "Pedro";
| + | |
− | echo "eres una chico";
| + | |
− | break;
| + | |
− | default:
| + | |
− | echo "no se qué nombre tienes";
| + | |
− | }
| + | |
− | ?>
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ===Iteración while===
| + | |
− | *Como en todos los bucles debemos siempre tener encuenta
| + | |
− | #inicializar la variable de control
| + | |
− | #acutalizarla correctamente dentro del bucle
| + | |
− | #realizar de forma correcta la evaluación de condiciòn (< o <=), (> o >=), ...
| + | |
− | <source lang=php>
| + | |
− | <?php
| + | |
− | $i = 1;
| + | |
− | while ($i <= 10) {
| + | |
− | echo "iteración número ."$i++;
| + | |
− | }
| + | |
− | ?>
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | *Alternativamente podemos usar la siguiente sintaxis
| + | |
− | <source lang=php>
| + | |
− | $i = 1;
| + | |
− | while ($i <= 10):
| + | |
− | $i++;
| + | |
− | echo "iteración número ."$i;
| + | |
− | endwhile;
| + | |
− | ?>
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | | + | |
− | ===Iteración do-while===
| + | |
− | *Este tipo de bucle donde seguro que al menos se ejectua un iteración
| + | |
− | *Respecto al anterior nos ahorra una comparación.
| + | |
− | <source lang=php>
| + | |
− | <?php
| + | |
− | $num=10;
| + | |
− | $resultado=1;
| + | |
− | *Esta es la única sintaxis posible con este tipo de sentencia
| + | |
− | do {
| + | |
− | $resultado:=$resultado*$num;
| + | |
− | $num--;
| + | |
− | } while ($num>0);
| + | |
− | ?>
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ===Iteración for===
| + | |
− | *Es un bucle de tipo contador
| + | |
− | <source lang=php>
| + | |
− | for (expresion_inicial; condicion;expresion_actualizar){
| + | |
− | sentencias;
| + | |
− | }
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;Estructura for
| + | |
− | *tiene tres partes
| + | |
− | ;expresion_inicial:
| + | |
− | :Se ejecuta una sóla vez al comienzo del bucle. se usa para inicializar variables
| + | |
− | ;condicion
| + | |
− | :Es una expresión booleana que se evalúa en cada interación
| + | |
− | :Si da un valor false, ya no se ejectua ninguna vez
| + | |
− | :Si no hay expresión se toma como true
| + | |
− | :En este caso para que el bucle no sea infinito deberá llevar algún break (instrucción de terminación de bloque) en algún momento
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;Estrucutura for: condición
| + | |
− | <source lang=php>
| + | |
− | <?php
| + | |
− | for ($a=0; ;$a++){
| + | |
− | echo "$a*$a=".$a*$a."<br>";
| + | |
− | if ($a==10)
| + | |
− | break;
| + | |
− | }
| + | |
− | ?>
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | <div class="slide">
| + | |
− | ;Estructura for: expresion_actualizar
| + | |
− | :Esta expresión actualiza el valor de alguna/as variables
| + | |
− | :Se ejecuta en cada interacion
| + | |
− | *El ejemplo anterior
| + | |
− | <source lang=php>
| + | |
− | <?php
| + | |
− | for ($a=0;$a<10 ;$a++){
| + | |
− | echo "$a*$a=".$a*$a."<br>";
| + | |
− | }
| + | |
− | ?>
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ===Operadores===
| + | |
− | *Son símbolos que realizan acciones sobre operandos y dan como resultado un valor
| + | |
− | *Tenmos diferentes tipos de operadores en función del tipo de operandos y del resultado
| + | |
− | ;operadores aritméticos (+,-,*,/,%,**, ++, --)
| + | |
− | *Retorna un valor numérico
| + | |
− | *el ++, -- son valores de autoincremeto y autodecremento, pueder ser pre o post
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;Operadores
| + | |
− | <source lang=php>
| + | |
− | $a=5;
| + | |
− | if ($a++==5)
| + | |
− | echo '$a que vale '.$a.' dice que vale 5 ???? <br>'
| + | |
− | . 'Esto es por que primero compara y luego incrementa<br>';
| + | |
− | | + | |
− | echo 'ahora $a vale '.$a.'<br>';
| + | |
− | | + | |
− | if (++$a==6)
| + | |
− | echo 'esto nunca saldrá ya que $a se incrementa antes de comparar';
| + | |
− | else
| + | |
− | echo 'efectivamente ahora $a ya no vale 6 sino '.$a.'<br>';
| + | |
− | ?>
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;Operadores
| + | |
− | *El código anterior genera la siguiente salida
| + | |
− | <source lang=php>
| + | |
− | $a que vale 6 dice que vale 5 ????
| + | |
− | Esto es por que primero compara y luego incrementa
| + | |
− | ahora $a vale 6
| + | |
− | efectivamente ahora $a ya no vale 6 sino 7
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;operadores comparación (==,<,>,>=,<=,<>,!=,===,!==)
| + | |
− | :Este tipo de operadores genera un booleano como resultado de evaluar la expresión
| + | |
− | {{Puntos clave|
| + | |
− | *'''''==''''' operador de comparacion '''''igual que''''' (mismo valor)
| + | |
− | *'''''===''''' operador de comparacion '''''exactamente igual que''''' (mismo valor y tipo)
| + | |
− | }}
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;Operador == Vs ===
| + | |
− | <source lang=php>
| + | |
− | $num=1;
| + | |
− | if ($num==true)
| + | |
− | echo '$num es igual a true<br>';
| + | |
− | if ($num===true){
| + | |
− | echo "esto nunca se ejecutará";
| + | |
− | }else
| + | |
− | echo '$num no es exactamente igual a true';
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;Operador == vs ===
| + | |
− | | + | |
− | *El código anterior generaría la siguiente salida
| + | |
− | <source lang=php>
| + | |
− | $num es igual a true
| + | |
− | $num no es exactamente igual a true
| + | |
− | </source>
| + | |
− | *Ver la sección '''''comparación de tipos''''' de la página oficial
| + | |
− | http://php.net/manual/es/language.operators.comparison.php
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;operadores de concatenacón( .) concatena cadena de caracteres.
| + | |
− | :El operador + no está sobre cargado, observa el siguiente código
| + | |
− | <source lang=php>
| + | |
− | $nombre="Maria";
| + | |
− | $apellido = " de la Oh";
| + | |
− | | + | |
− | $nombreCompleto = $nombre.$apellido;
| + | |
− | echo "el valor de nombre completo es $nombreCompleto ---<br>";
| + | |
− | | + | |
− | $nombreCompleto = $nombre+$apellido;
| + | |
− | echo "el valor de nombre completo es $nombreCompleto --<br>";
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;La salida del código anterior sería
| + | |
− | <source lang=php>
| + | |
− | el valor de nombre completo es Maria de la Oh ---
| + | |
− | el valor de nombre completo es 0 --
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;Operadores de asignacion (= , =>)
| + | |
− | :Se pueden combinar con los aritméticos (+=, *=, ...) y con los de concatenación (.=)
| + | |
− | :En este caso el valor de la variable de la izquierda se toma como primero operando
| + | |
− | ;Operador de asiganción
| + | |
− | <source lang=php>
| + | |
− | <?php
| + | |
− | $b=1;
| + | |
− | for ($a=0;$a<10;$a++){
| + | |
− | $b*=10;
| + | |
− | echo 'valor de $b ='.$b.'<br>';
| + | |
− | }
| + | |
− | ?>
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | *El código anterior genera la siguiente salida
| + | |
− | <source lang=php>
| + | |
− | valor de $b =10
| + | |
− | valor de $b =100
| + | |
− | valor de $b =1000
| + | |
− | valor de $b =10000
| + | |
− | valor de $b =100000
| + | |
− | valor de $b =1000000
| + | |
− | valor de $b =10000000
| + | |
− | valor de $b =100000000
| + | |
− | valor de $b =1000000000
| + | |
− | valor de $b =10000000000
| + | |
− | </source>
| + | |
− | </div>
| + | |
− | | + | |
− | <div class="slide">
| + | |
− | ;operadores de ejecución (``)
| + | |
− | :PHP proporciona un operador especial que permite ejecutar sentencias
| + | |
− | *Observa el siguiente código
| + | |
| | | |
− | <source lang=php> | + | <!--{{PHP/Variables}}--> |
− | <?php
| + | {{PHP/Declaraciones/Constantes}} |
− | $Discos = `df`;
| + | |
− | echo "<pre>$Discos</pre>";
| + | |
− | ?>
| + | |
− | </source>
| + | |
− | </div>
| + | |
| | | |
− | <div class="slide">
| + | {{PHP/Declaracion/Funciones}} |
| | | |
− | *El código anterior generará la siguiente salida
| + | {{PHP/EstructurasControl}} |
− | <source lang=php>
| + | {{PHP/Cadenas}} |
− | Filesystem 1K-blocks Used Available Use% Mounted on
| + | {{PHP/OperadoresExpresiones}} |
− | /dev/sda5 86378608 6072360 75895384 8% /
| + | {{PHP/MasSintaxis}} |
− | none 4 0 4 0% /sys/fs/cgroup
| + | |
− | udev 4023720 4 4023716 1% /dev
| + | |
− | tmpfs 806904 1384 805520 1% /run
| + | |
− | none 5120 0 5120 0% /run/lock
| + | |
− | none 4034504 6588 4027916 1% /run/shm
| + | |
− | none 102400 28 102372 1% /run/user
| + | |
− | /dev/sda7 101797224 40480360 56122728 42% /home
| + | |
− | </source>
| + | |
− | </div>
| + | |
| | | |
− | <div class="slide">
| |
− | ;Invocando funciones del sistema
| |
− | *El operador anterior (comillas invertidas) es igual que la funcion '''''shell_exec()'''''
| |
− | http://php.net/manual/es/function.shell-exec.php
| |
− | </div>
| |
| | | |
− | <div class="slide">
| |
− | ;operadores lógicos (and,&&, or, ||, xor !)
| |
− | http://php.net/manual/es/language.operators.logical.php
| |
− | :Funcionan por cortocircuito
| |
− | :El operador '''''xor''''' da verdad si los operando son de diferente valor uno true y el otro false
| |
− | :La notación '''''and''''' y '''''&&''''' representan el mismo operador, igual ocurre con '''''or''''' y '''''||'''''
| |
− | *La diferencia entre los operadores es la prioridad
| |
− | http://php.net/manual/es/language.operators.precedence.php
| |
| |} | | |} |