Curso de PHP: Nivel Básico – Clase 2. Variables, tipos de datos y operadores

En esta segunda clase voy a hacer una fusión de algunos temas que aprendí en la universidad y otros que son propios de PHP. La idea es explicar algunos conceptos teóricos y otros un poco más prácticos. En este artículo explicaré qué es un algoritmo, haré un repaso y daré algunas nuevas nociones sobre las variables que ya vimos en la primer clase, luego explicaré los distintos tipos de datos que existen en PHP y las constantes. Luego, llegará el turno de los operadores del lenguaje.

Algoritmo

Un algoritmo es una serie de pasos que sirven para realizar alguna tarea. La forma más sencilla de algoritmo es una receta de cocina. En ella se detallan pasos para realizar una comida. Existen tareas y un orden a seguir.

Cuando en programación hablamos de algoritmos, nos referimos a listados de instrucciones que tienen el objetivo de realizar una tarea en concreto. Se ejecutan en forma secuencial, es decir, una instrucción tras otra, en el orden establecido. Existe la posibilidad de saltar partes de ese listado si así se indica con sentencias condicionales, o de repetir algunas, con sentencias iterativas.

Existen algoritmos ya probados que sirven para realizar algunas tareas concretas como por ejemplo ordenar una serie de números de menor a mayor, salir de un laberinto, buscar en una base de datos y muchos más.

Así como hay algunos que simplemente se estudian, hay otros que son puntuales del problema que debemos resolver y el desafío es diseñarlos o descubrirlos.

Variables (Revisión)

En la clase anterior expliqué que las variables son porciones de memoria de la computadora donde es posible guardar datos. También, que todas las variables en PHP empiezan con el símbolo $. Lo que no comenté es que se puede definir cualquier nombre que queramos utilizando los caracteres alfabéticos (a-z) (A-Z), los números y el guión bajo, siempre y cuando el nombre de la variable empiece con una letra o con un guión bajo. Los nombres de variables no pueden empezar con números.

Las buenas prácticas de programación dicen que el nombre de una variable debe ser descriptivo en referencia al valor que llevará dentro. De esta manera será fácil leer el código y entender para qué se usa cada una de ellas.

Por ejemplo, si tenemos que usar una variable para indicar el valor de algo que vendemos, conviene ponerle un nombre como $precio y no $prjff. La primera es suficientemente descriptiva y la segunda no nos dice nada. Si tenemos que usar una variable para indicar los gastos que tuvimos en un mes puede bastar con $gastos, salvo que tengamos un gasto por cada mes. Tal vez ahí convenga usar $gastos1 para enero, $gastos2 para febrero y así sucesivamente. O tal vez sea mejor poner $enero, $febrero$diciembre.

La definición de las variables es algo que elige el programador de forma arbitraria. La capacidad para poner nombres descriptivos y a la vez concisos puede marcar la calidad del código que escribe.

Tipos de datos

En la primer clase vimos cómo se asignan valores a variables y que no hay un único tipo de valor. Habíamos asignado tanto números como texto. Al texto lo llamamos string o cadena de caracteres.

En esta porción de código vemos la asignación y luego la salida por pantalla. Noten que no es lo mismo el 4 asignado como número en la primer línea, que el 4 entre comillas asignado como texto en la segunda.

El tipo de dato es aquella clase de dato que podemos asignarle a una variable. Hasta aquí vimos texto y números, pero en realidad PHP tiene una definición más amplia. Veámosla.

  • Booleano (boolean): Son valores que aceptan sólo dos estados: verdadero o falso. Esos que alguna vez estudiaron en clase de lógica. Se utilizan las palabras true y false, en inglés, para hacer las asignaciones. También se puede usar 0 y 1, el primero para falso y el segundo para verdadero.
  • Entero (int): Se trata de los números enteros, aquellos que no tienen parte fraccionaria. Por ejemplo: 2, 56, -4. 10.030. Son los que hemos utilizado hasta ahora. Como son valores discretos, se pueden utilizar para contar y para representar cantidades indivisibles, como personas, edificios, automóviles, etc.
  • Punto flotante (float o double): Son números con coma decimal. Todos aquellos que tienen parte fraccionaria. Por ejemplo: 1,5; 87,90; -45454,344. Pueden utilizarse para representar dinero, promedios, longitudes, áreas, distancias, etc.
  • Cadenas de Caracteres (strings): Se trata de texto y se ponen siempre entre comillas. Pueden servir para luego mostrar mensajes por pantalla, o para manejar URLs. Los veremos a fondo más adelante.
  • Referencias: Variables que apuntan a otras variables. No las exploraremos demasiado.
  • Arrays (arreglos): Son conjuntos de datos reunidos en una sola variable que se maneja con índices. Permiten representar listas, tablas y matrices. Los empezaremos a estudiar la clase siguiente.

Es decir, que hay varios tipos de datos en PHP y solo hemos visto dos hasta ahora.

Antes de continuar, es importante aclarar que PHP es un lenguaje no tipado. Esto significa que se puede usar una variable como número entero y luego, más abajo en el código, asignarle un string o un número de punto flotante. Es decir, que la variable no tiene un tipo asignado fijo, sino que puede variar en cualquier momento. Otros lenguajes no son así. Requieren una declaración explícita en alguna parte del código donde se define el tipo y el nombre de la variable. Luego, no se puede cambiar el tipo y si se hace una asignación errónea, el compilador devuelve un error.

Números enteros

Los hemos venido utilizando

Se usan números enteros, en matemática se los conoce como el conjunto Z habitualmente. Incluye también a los números negativos que, como ven, se representan poniendo un signo menos delante.

La salida del código es:

Enteros

$cantidad: 45
$lados: 4
$temperatura: -4

Decimales o de punto flotante

Punto flotante, coma flotante o decimales, son todos sinónimos de este tipo de dato. Números con partes fraccionarias. Para indicar la parte decimal se utiliza el punto y no la coma.

La salida es la siguiente:

Punto flotante

$precio: 3.45
$pi: 3.14159265

Strings

Las cadenas de caracteres se representan siempre con comillas y se utiliza el punto para concatenarlas.

Salida

Strings

$nombre: zeus
$ciudad: Buenos Aires

Arrays

Los arrays, como expliqué, permiten manejar distintos valores con una única variable utilizando índices. Se usa una variable y se utilizan corchetes [ ] para indicar el índice. De esta forma, se tienen varias variables en una sola.

Arrays

$temperaturas: 23 – 27 – 18 – 16

Referencias

Si bien no son tan importantes para este curso, bien vale la explicación. Las referencias son variables que apuntan a otras variables. Cada una de ellas tiene una dirección de memoria asignada que es única y se utiliza el operador & para indicarla.

Salida:

Referencias

$punt tiene el valor: 3.45
Y $precio vale: 3.45
Ahora precio vale: 8

En la segunda línea, $punt pasa a apuntar a $precio. De esta forma, cada vez que le hacemos una asignación a $punt, en realidad estamos modificando $precio.

Representación de Sistemas de Numeración

PHP permite trabajar tanto con números decimales como con hexadecimales y octales. Los números hexadecimales son aquellos que tienen base 16 y que se representan combinando los números 0 al 9 y las letras A a la F. Los números octales se forman combinando los números 0 al 7,

// Representacion de sistemas de numeración

Se utiliza 0x para asignar un número hexadecimal. Para los octales, se pone un 0 delante. Luego, para poder verlos representados en sus sistemas, se hace uso de la función printf que brinda la posibilidad de imprimir por pantalla con formato. Primero se pone un texto entre comillas y donde se quiere que aparezca el número se pone %x para que salga con formato hexadecimal. Con %o sale en formato octal. Luego, se pone una coma y la variable.

Salida

Representación de sistemas de numeración

$hexa en decimal: 291
$octal en decimal: 318
$hexa en hexadecimal: 123
$octal en octal: 476

Conversión entre tipos de datos

Existe la posibilidad de cambiar el tipo de dato de una variable. Para ello, se utilizan los paréntesis ( ) y el nombre del dato delante de la variable.

En el primer caso, se convierte un número decimal en entero. Lo único que ocurre es que el número decimal se trunca y pierde la parte decimal al hacerse la asignación. En el segundo caso, se intenta convertir un caracter a número, eso resulta extraño así que el intérprete le asigna un 0 a esa conversión. La última convierte un número entero en un número decimal. No ocurre nada, ya que los números decimales incluyen a los enteros.

Salida

Conversión entre tipos de datos

$numero en decimal: 3
Caracter nada convertido a número 0
Entero 33 convertido a decimal: 33

Funciones de tipos de datos

El lenguaje PHP trae muchas funciones para manejar los tipos de datos de las variables. Una función es un código que puede recibir parámetros y que devuelve un valor. Ahondaremos en ellas más adelante. Lo importante es qué hacen y qué nos aportan.

La función isset nos dice si una variable ya ha sido definida. Y la función empty nos dice si está vacía. Ahora pueden no tener mucho uso, pero más adelante las aprovecharemos mejor. Por ahora, las presento.

Salida

Funciones de tipos de datos

bool(false)
bool(true)

En el código se aprecia como se usan las funciones. Entre paréntesis se pasan los parámetros. La variable que esté del lado izquierdo del igual recibirá el valor de retorno de la función.

Como PHP no puede imprimir el valor true y false, utilizo en sólo esta porción de código la función var_dump que sirve para mostrar información sobre el tipo de dato asociado a una variable.

Constantes

Las constantes son porciones de memoria como las variables solo que no pueden cambiar su valor. Se definen una vez y luego pueden utilizarse en el código como una variable, solo que no es posible asignarle otro valor.

Salida

Constantes

El valor es: 25
El color es: AZUL

Se utiliza la palabra clave define y entre paréntesis se pone: primero el nombre de la constante y luego el valor. En el código se usa la constante de la misma forma que una variable, solo recuerden que no lleva $ delante.

Por convención, los nombres de las constantes se suelen definir con letras mayúsculas.

Operadores

Son los símbolos que permiten relacionar las variables, constantes y literales con determinadas operaciones. Los más comunes son la suma, resta, multiplicación y división. Pero hay más, veamoslos.

Operadores aritméticos.

Son las operaciones que mencionamos:

  • Suma: +
  • Resta: –
  • Multiplicación: *
  • División: /
Es muy intuitivo su uso. Sirven para números enteros y de punto flotante. Se pueden usar paréntesis como en matemática para agrupar términos. La prioridad en la procedencia es la que se acostumbra en aritmética. Se pueden usar con constantes, variables y literales. Los literales son todos esos números fijos que agregamos en las asignaciones.

También existen abreviaturas de los operadores aritméticos. Se usa ++ para incrementar en una unidad. para decrementar en una unidad. =+ y un número sirve para aumentar el valor de la variable en el número especificado. =- es igual pero para restar.

La diferencia entre $num++ y ++$num es que en el primer caso, primero se ejecutará la instrucción de mostrar en pantalla y luego se incrementará el valor de la variable; en cambio en el otro, primero se incrementará el valor y luego se ejecutará la instrucción echo.

Salida

Aritméticos

(8 + $valor1)/2 = 11.5
$valor2 – $valor3 * 4 = -0.23
El resto de 17 dividido 2 es: 1
El valor de $num es: 20
El valor de $num ahora es: 20
El valor de $num ahora es: 24
El valor de $num ahora es: 23
El valor de $num ahora es: 18
El valor de $num ahora es: 19
El valor de $num ahora es: 18

Concatenación de strings

Este ya lo hemos usado bastante. Se trata del punto (.) y sirve para poner una cadena de caracteres a continuación de otra. Recuerden siempre dejar espacios dentro de las comillas para que las cadenas no queden pegadas si lo que buscan es mostrar un mensaje por pantalla.

Salida

Concatenación de strings

El domingo, Lionel Messi convirtió 3 goles

Operadores de bits

Esto que viene a continuación puede ser difícil de entender para alguien que no esté muy metido en el campo de la informática y es porque este tema está vinculado con los sistemas de representación de una computadora.

Las variables enteras en realidad tienen una estructura en particular. Podemos imaginarlas como una serie de casilleros que sólo pueden tener dos valores posibles cada uno: uno o cero. Así, combinando los valores de esos casilleros, que en realidad se llaman bits, se forman los números en binario. Así es como la computadora guarda la información.

bits

La mayoría de las veces no nos va a interesar qué ocurre con los bits. Sin embargo, también es posible manipular las variables a ese nivel.

Los bits de la variable se definen automáticamente de acuerdo al número que le asignemos. Pero podemos usar números hexadecimales para tener un control más directo sobre ellos. Eso es lo que elegí hacer en el código anterior. Cada variable entera en PHP tiene 64 bits. Cada número o letra hexadecimal ocupa 4. Es decir que si necesitamos completar todo el número es preciso escribir todo el número completo. Fíjense que hay 16 números o letras definidos (16 x 4 = 64). Ocurre igual con $operando2.

El primer operador es not (~). Lo que hace es convertir todos los bits que están en 0 en 1 y todos los que están en 1, en 0. Es un operador unario, es decir que recibe un solo parámetro.

And (&) realiza la operación lógica “and” o “y” bit a bit entre las dos variables. Es decir que se hace and entre el bit1 de $operando1 y el bit1 de $operando2. Luego con el bit 2 y así sucesivamente. Es un operador binario, porque necesita dos parámetros para trabajar.

El or (|) funciona igual que el and pero con la función lógica “or” ó “o”. Es decir, trabaja bit a bit y es un operador binario.

La salida puede no tener sentido, esto es porque hay que conocer a fondo los sistemas de representación de la computadora. No ahondaré en ellos en este caso.

Salida:

Operadores de bits

$operando1: 0
$operando2: FFFF0000
Not: FFFFFFFFFFFFFFFF
$operando1 & $operando2: 0
$operando1 & $operando2: 15

Corrimientos de bits

En los corrimientos también se trabaja a nivel bit. Lo que se hace es desplazar los bits hacia la izquierda o hacia la derecha, según se necesite. Para ello, se usan los operadores << y >>, respectivamente.

Alguno pensará para qué sirve esto. En informática tiene diversas aplicaciones. Hacer un corrimiento hacia la izquierda es equivalente a duplicar el valor de una variable, por ejemplo.

Referencia

Cuando hablamos de las variables que apuntan a otras, apareció el símbolo &. Aquí lo vemos de nuevo.

Salida

Referencias

$b: 10

Lógicos

Se utilizan para los tipos de datos booleanos. Se utiliza && para el and, || para el or y xor para el or exclusivo. No deben confundirse con los operadores a nivel bits.

Estos los veremos a fondo en la clase en que explique las sentencias de control condicionales. Ahí vamos a ver como usarlas y combinarlas.

El código fuente correspondiente a los ejemplos de esta clase lo pueden ver en: Código fuente – Clase 2

Y la salida: Salida por pantalla – Clase 2

Y hasta aquí la clase. Hemos avanzado bastante y ya es hora de empezar a resolver ejercicios. Les propongo que piensen e intenten resolver los siguientes.

Ejercicios propuestos

  1. Cargar en dos variables tu nombre, tu apellido y tu edad e insertarlos en la frase “Mi nombre es ____  _____ y tengo ____ años”
  2. Calcular el 30% de 125 y mostrarlo por pantalla.
  3. Calcular el IVA de un producto que vale $ 43,90 y mostrarlo por pantalla.
  4. Un pintor necesita 0,1 litros de pintura por metro cuadrado. Tiene que pintar una pared de 10m. x 4m. Cada lata de pintura de 1 litro vale $ 42. Hacer un programa en PHP que calcule cuánto dinero debe gastar el pintor para pintar la pared. Se deben usar las siguientes variables: $litros_x_pintura; $alto_pared; $ancho_pared; $precio_lata; $total
  5. Calcular el área de un triángulo de 2cm. de base y 8cm. de altura y mostrarlo por pantalla.
  6. Un negocio de ropa vendió lo siguiente: 6 jeans a $ 240 cada uno; 8 remeras rojas a $ 70 cada una; 4 remeras azules a $ 90 cada una; 6 pullóveres a $ 160 cada uno; y 9 pares de medias a $ 40 cada par. Definir las variables apropiadas que se ajusten  al problema y calcular: El total ganado en el día y el promedio de venta por prenda.
En entradas siguientes del blog iré resolviendo y explicando algunos de estos ejercicios.

Bibliografía

  • Zend PHP5 Certification Study Guide de Davey Shafik con Ben Ramsey, php architect nanobooks
  • Estructuras de Datos Estáticas en Pascal, de Zulma Cataldi y Fernando J. Lage. Centro de Estudiantes de Ingeniería.
  • Desarrollo web con PHP y MySQL, de Luke Welling y Laura Thomson, Editorial Anaya
Soy programador web y me desempeño como Líder Técnico en Polar Bear Development. Trabajo con tecnologías como PHP, Javascript, MySQL y HTML5 para el desarrollo de sitios y sistemas web. Me especializo en Zend Framework 2 y otros frameworks MVC, como también en WordPress y otros CMS. Lidero equipos de desarrolladores trabajando con Scrum. Vivo en Buenos Aires, Argentina.
 

One thought on “Curso de PHP: Nivel Básico – Clase 2. Variables, tipos de datos y operadores

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *


*