OPERADORES
® Operadores Aritméticos
® Operadores de Asignación
® Operadores de Bits
® Operadores de Comparación
® Operadores de Control de Errores
® Operador de Ejecución
® Operadores de Incremento/decremento
® Operadores Lógicos
® Operador de cadenas de texto
® Operadores de Matrices
® Operadores de Tipo
® Precedencia y asociatividad de operandos
5.1. Operadores Aritméticos
Disponemos de los clásicos operadores aritméticos:
Operación Nombre Resultado
$a + $b Suma Suma de $a y $b.
$a - $b Resta Diferencia entre $a y $b.
$a * $b Multiplicación Producto de $a y $b.
$a / $b División Cociente de $a y $b.
$a % $b Módulo Resto de la operación $a / $b.
-$a Negación El opuesto de $a
5.2. Operadores de Asignación
El operador básico de asignación es "=". A primera vista podrías pensar que es el
operador de comparación "igual que". Pero no. Realmente significa que el operando de
la izquierda toma el valor de la expresión a la derecha, (esto es, "toma el valor de").
El valor de una expresión de asignación es el propio valor asignado. Esto es, el
valor de "$a = 3" es 3. Esto permite hacer cosas curiosas como
$a = ($b = 4) + 5; // ahora $a es igual a 9, y $b vale 4.
Además del operador básico de asignación, existen los "operadores combinados"
para todas las operaciones aritméticas y de cadenas que sean binarias. Este operador
combinado permite, de una sola vez, usar una variable en una expresión y luego
establecer el valor de esa variable al resultado de la expresión. Por ejemplo:
$a = 3;
$a += 5; // establece $a a 8, como si hubiésemos escrito: $a = $a + 5;
$b = "Hola ";
$b .= "Ahí!"; // establece $b a "Hola Ahí!", igual que si hiciésemos $b = $b . "Ahí!";
Al igual que en C, C++ y Java, en PHP se dispone de estos operadores
combinados para, en una sola operación, operar sobre una variable y asignarle a esa
misma variable el resultado. PROGRAMACIÓN EN LENGUAJE PHP5. NIVEL BÁSICO
60
Las operaciones susceptibles de ser usadas con estos operadores son:
+ - * / % & ^ . >> y <<
resultando en los nuevos signos de operación-asignación:
+= -= *= /= %= &= ^= .= >>= y <<=
Ejemplos de uso:
$var1 += 3; // $var1 = $var1 + 3;
$var2 /= 2; // $var2 = $var2 / 2;
$var3 >>= 1; // $var3 = $var3 >> 1;
Fíjese en que la asignación realiza una nueva copia de la variable original
(asignación por valor), por lo que cambios a la variable original no afectan a la copia.
Esto puede tener interés si necesitas copiar algo como un array con muchos elementos
dentro de un bucle que se repita muchas veces (cada vez se realizará una nueva copia
del array). PHP soporta asignación por referencia, usando la sintaxis $var =
&$othervar; , pero esto no es posible en PHP3. 'Asignación por referencia' quiere decir
que ambas variables acabarán apuntando al mismo dato y que nada es realmente
copiado. A partir de PHP5 los objetos son asignados por referencia a menos que
explícitamente se diga lo contrario con la nueva palabra clave clone.
5.3. Operadores de bits
Veamos ahora los operadores BIT a BIT de que dispone PHP:
Operación Nombre Resultado
$a & $b Y Se ponen a 1 los bits que están a 1 en $a y $b.
$a | $b O Se ponen a 1 los bits que están a 1 en $a o $b.
$a ^ $b
O Exclusivo
(XOR)
Se ponen a 1 los bits que están a 1 en $a o $b, pero no
en ambos.
~ $a No Se invierten los bits (se cambian 1 por 0 y viceversa.)
$a << $b Desp. Izq.
Desplaza $b posiciones a la izquierda todos los bits de
$a (cada posición supone multiplicar por dos).
$a >> $b Desp. Drch.
Desplaza $b posiciones a la derecha todos los bits de $a
(cada posición supone dividir por dos).
5.4. Operadores de Comparación
Los operadores de comparación, como su nombre indica, permiten comparar dos
valores.
Operación Nombre Resultado
$a == $b Igualdad
Compara si el valor de los dos operandos es el
mismo.
$a === $b Identidad
Compara si el valor es el mismo y, además, el
tipo coincide (A partir de PHP4).
$a != $b No igual Cierto si el valor de $a no es igual al de $b.
$a !== $b No idéntico
Cierto si $a no es igual a $b, o si no tienen
el mismo tipo.
$a < $b Menor que Cierto si $a es estrictamente menor que $b. PROGRAMACIÓN EN LENGUAJE PHP5. NIVEL BÁSICO
61
Operación Nombre Resultado
$a > $b Mayor que Cierto si $a es estrictamente mayor que $b.
$a <= $b Menor o igual que Cierto si $a es menor o igual que $b.
$a >= $b Mayor o igual que Cierto si $a es mayor o igual que $b.
$a <> $b No igual Cierto si el valor de $a no es igual al de $b
Si se compara un entero con una cadena, la cadena es convertida a un número. Si
se compara dos cadenas numéricas, son comparadas como enteros. Estas reglas también
se aplican a la sentencia switch.
Otro operador condicional es el operador "?:" (o ternario), que funciona como en
C y otros muchos lenguajes.
(expr1) ? (expr2) : (expr3);
La expresión toma el valor expr2 si expr1 se evalúa a cierto, y expr3 si expr1 se
evalúa a falso.
$cad = $a > $b ? “a es mayor que b” : “a no es mayor que b”;
5.5. Operadores de Control de Errores
PHP ofrece soporte para un operador de control de errores: el signo de arroba
(@). Cuando es colocado al comienzo de una expresión en PHP, cualquier mensaje de
error que pudiera generarse a causa de esa expresión será ignorado.
Si la característica track_errors está habilitada, cualquier mensaje de error
generado por la expresión será almacenado en la variable $php_errormsg. La variable
será sobrescrita en cada instancia de error, así que realice sus chequeos de forma
temprana si quiere usarla.
<?php
/* Error intencionado de archivo */
$mi_archivo = @file ('archivo_que_no_existe')
or die ("La apertura de archivo ha fallado: el error fue
'$php_errormsg'");
// esto funciona con cualquier expresión, no solo con funciones:
$valor = @$cache[$llave];
// no producirá una anotación si el índice $llave no existe.
?>
Puede usar el operado @ al inicio de variables, llamadas a funciones y sentencias
include(), constantes. No puede usarlo sobre definiciones de función o clase, ni sobre
estructuras condicionales como if y foreach.
5.6. Operador de ejecución
PHP soporta un operador de ejecución: la comilla invertida (`). ¡Fíjese que no
son comillas normales! PHP intentará ejecutar la instrucción contenida dentro de las PROGRAMACIÓN EN LENGUAJE PHP5. NIVEL BÁSICO
62
comillas invertidas como si fuera un comando del shell; y su salida devuelta como el
valor de esta expresión (i.e., no tiene por qué ser simplemente volcada como salida;
puede asignarse a una variable). El uso de este operados es idéntico a la función
shell_exec().
$output = `dir /a-d`;
echo "<pre>$output</pre>";
5.7. Operadores de Incremento/decremento
PHP soporta los operadores de pre y post decremento y incremento al estilo de
C. Estos operadores no afectan a valores booléanos y incrementar NULL resulta en 1.
Operación Nombre Resultado
++$a Pre-incremento
Incrementa $a en 1, y devuelve $a (ya
incrementado)
$a++ Post-incremento
Devuelve $a (sin incrementar), y después lo
incrementa en 1.
--$a Pre-decremento Decrementa $a en 1, y después lo devuelve.
$a-- Post-decremento Devuelve $a, y después lo incrementa en 1.
He aquí un listado de ejemplo:
<?php
echo "<h3>Postincremento</h3>";
$a = 5;
echo "Debería ser 5: " . $a++ . "<br>\n";
echo "Debería ser 6: " . $a . "<br>\n";
echo "<h3>Preincremento</h3>";
$a = 5;
echo "Debería ser 6: " . ++$a . "<br>\n";
echo "Debería ser 6: " . $a . "<br>\n";
echo "<h3>Postdecremento</h3>";
$a = 5;
echo "Debería ser 5: " . $a-- . "<br>\n";
echo "Debería ser 4: " . $a . "<br>\n";
echo "<h3>Predecremento</h3>";
$a = 5;
echo "Debería ser 4: " . --$a . "<br>\n";
echo "Debería ser 4: " . $a . "<br>\n";
?>
5.8. Operadores lógicos
Los operadores lógicos realizan operaciones dependiendo del valor booleano de
los operandos.
Operación Nombre Resultado
$a and $b Y Cierto si $a y $b son ciertos.
$a or $b O Cierto si $a o $b es cierto.
$a xor $b O Exclusivo.
Cierto si $a o $b es cierto, pero no
ambos.
! $a No Cierto si $a es falso.
$a && $b Y Cierto si $a y $b son ciertos.
$a || $b O Cierto si $a o $b es cierto. PROGRAMACIÓN EN LENGUAJE PHP5. NIVEL BÁSICO
63
La razón de que haya dos operadores distintos para las operaciones Y y O lógicas
es que tienen distinta precedencia.
5.9. Operador de cadenas de texto
Para operar con cadenas sólo disponemos de un operador: la concatenación de
cadenas representada por el punto ‘.’.
Por ejemplo:
$a = 1;
$b = 2;
$c = “El resultado de “ . $a . “ + “ . $b . “ es “ . ($a + $b);
Que dejaría en $c la cadena “El resultado de 1 + 2 es 3”. Antes de cada
concatenación se realizarán las conversiones de tipo que fueran necesarias (en el
ejemplo, los enteros se convierten a cadenas.)
5.10. Operadores de Matrices
Ejemplo Nombre Resultado
$a + $b Unión Unión de $a y $b.
$a == $b Igualdad Cierto si $a y $b tienen las mismas parejas llave/valor.
$a=== $b Identidad
Cierto si $a y $b tienen las mismas parejas llave/valor
en el mismo orden y de los mismos tipos.
$a != $b
Noigualdad
Cierto si $a no es igual a $b.
$a <> $b
Noigualdad
Cierto si $a no es igual a $b.
$a!== $b
Noidentidad
Cierto si $a no es idéntico a $b.
El operador + adiciona elementos de las claves restantes de la matriz del lado
derecho a aquella al lado izquierdo, al mismo tiempo que cualquier clave duplicada NO
es sobrescrita.
<?php
$a = array("a" => "manzana", "b" => "banano");
$b = array("a" => "pera", "b" => "fresa", "c" => "cereza");
$c = $a + $b; // Unión de $a y $b
echo "Unión de \$a y \$b: \n";
var_dump($c);
$c = $b + $a; // Unión de $b y $a
echo "Unión de \$b y \$a: \n";
var_dump($c);
?>
Cuando sea ejecutado, este script producirá la siguiente salida:
Unión de $a y $b:
array(3) {
["a"]=>
string(7) "manzana"
["b"]=> PROGRAMACIÓN EN LENGUAJE PHP5. NIVEL BÁSICO
64
string(6) "banano"
["c"]=>
string(6) "cereza"
}
Unión de $b y $a:
array(3) {
["a"]=>
string(4) "pera"
["b"]=>
string(5) "fresa"
["c"]=>
string(6) "cereza"
}
Los elementos de las matrices son considerados equivalentes en la comparación
si éstos tienen la misma clave y valor.
<?php
$a = array("manzana", "banano");
$b = array(1 => "banano", "0" => "manzana");
var_dump($a == $b); // bool(true) tiene las mismas clave-valor
var_dump($a === $b); // bool(false) pero en orden distinto
?>
5.11. Operadores de Tipo
instanceof es usado para determinar si una variable PHP es una instancia de
objeto de cierta clase:
<?php
class MiClase
{
}
class NoMiClase
{
}
$a = new MiClase;
var_dump($a instanceof MiClase);
var_dump($a instanceof NoMiClase);
?>
El resultado del ejemplo sería:
bool(true)
bool(false)
El operador instanceof fue introducido en PHP5. Anteriormente se usaba la
función is_a() pero desde la introdución del operados instanceof, la función anterior se
considera obsoleta.
5.12. Precedencia y asociatividad de operandos
La precedencia de los operandos resuelve el orden en el que se evalúa una
expresión múltiple que no ha sido delimitada con paréntesis. Por ejemplo, 1 + 5 * 3 en
PHP daría como resultado 1 + (5 * 3) = 16 y no (1 + 5) * 3 = 18 ya que el producto
tiene mayor precedencia que la suma. PROGRAMACIÓN EN LENGUAJE PHP5. NIVEL BÁSICO
La tabla muestra la asociatividad de los operandos en PHP, y está ordenada en
orden creciente de precedencia (los más prioritarios al final):
Asociatividad Operandos
izquierda ,
izquierda or
izquierda xor
izquierda and
Derecha = += -= *= /= .= %= &= |= ^= ~= <<= >>=
izquierda ? :
izquierda ||
izquierda &&
izquierda |
izquierda ^
izquierda &
no-asociativo == != === !==
no-asociativo < <= > >=
izquierda << >>
izquierda + - .
izquierda * / %
derecha !
no-asociativo
~ - (int) (float) (string) (array) (object)
(bool) @
no-asociativo ++ --
izquierda [
no-asociativo clone new
La asociatividad de izquierda quiere decir que la expresión es evaluada desde la
izquierda a la derecha, la asociatividad de derecha quiere decir lo contrario.
<?php
$a = 3 * 3 % 5; // (3 * 3) % 5 = 4
$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2
$a = 1;
$b = 2;
$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5
?>
Mostrando las entradas con la etiqueta lenguajes de programacion. Mostrar todas las entradas
Mostrando las entradas con la etiqueta lenguajes de programacion. Mostrar todas las entradas
Tipos de datos de php
Tipos de Datos
® Booleanos
® Enteros
® Números en punto flotante
® Cadenas
® Arrays
® Objetos
® Recursos
® NULL
® Forzado de tipos
PHP soporta ocho tipos primitivos:
• booleanos
• enteros
• números en punto flotante
• cadenas
• matrices
• objetos
• recursos (resource)
• NULL
El tipo de una variable normalmente no lo indica el programador; en su lugar, lo
decide PHP en tiempo de ejecución dependiendo del contexto en el que se utilice esa
variable.
Si desea conocer el tipo y valor de una expresión, se puede usar la función
var_dump(). Para obtener una representación legible para humanos del tipo de una
variable para propósitos de depuración, se puede usar la función gettype(). Para
comprobar si una variable es de un cierto tiepo, no se debe usar gettype(), si no las
funciones is_tipo.
<?php
$un_bool = TRUE; // un valor booleano
$un_str = "foo"; // una cadena
$un_str2 = 'foo'; // una cadena
$un_int = 12; // un entero
echo gettype($un_bool); // imprime: boolean
echo gettype($un_str); // imprime: string
// Si este valor es un entero, incrementarlo en cuatro
if (is_int($un_int)) {
$un_int += 4;
}
// Si $bool es una cadena, imprimirla
// (no imprime nada)
if (is_string($un_bool)) {
echo "Cadena: $un_bool";
}
?>
Si se quisiese obligar a que una variable se convierta a un tipo concreto, se
podría forzar la variable o usar la función settype() para ello. PROGRAMACIÓN EN LENGUAJE PHP5. NIVEL BÁSICO
50
Nótese que una variable se puede comportar de formas diferentes en ciertas
situaciones, dependiendo de qué tipo sea en ese momento.
4.1. Booleanos
Este es el tipo más simple. Un booleano expresa un valor de verdad. Puede ser
TRUE o FALSE. Para especificar un literal booleano, use alguna de las palabras clave
TRUE o FALSE. Ambas son insensibles a mayúsculas y minúsculas.
$foo = True; // asigna el valor TRUE a $foo
4.2. Enteros
Los enteros se pueden especificar usando una de las siguientes sintaxis:
$a = 1234; # número decimal
$a = -123; # un número negativo
$a = 0123; # número octal (equivalente al 83 decimal)
$a = 0x12; # número hexadecimal (equivalente al 18 decimal)
4.3. Números en punto flotante
Los números en punto flotante (double) se pueden especificar utilizando
cualquiera de las siguientes sintaxis:
$a = 1.234;
$a = 1.2e3;
$a = 7E-10;
4.4. Cadenas
Las cadenas de caracteres se pueden especificar usando uno de dos tipos de
delimitadores.
Si la cadena está encerrada entre dobles comillas ("), las variables que estén
dentro de la cadena serán expandidas (sujetas a ciertas limitaciones de interpretación).
Como en C y en Perl, el carácter de barra invertida ("\") se puede usar para especificar
caracteres especiales:
secuencia significado
\n Nueva línea
\r Retorno de carro
\t Tabulación horizontal
\\ Barra invertida
\$ Signo del dólar
\" Comillas dobles
\[0-7]{1,3}
la secuencia de caracteres que coincida con la expresión regular es un carácter en
notación octal
\x[0-9A-Fa-f]{1,2}
la secuencia de caracteres que coincida con la expresión regular es un carácter en
notación hexadecimal
PROGRAMACIÓN EN LENGUAJE PHP5. NIVEL BÁSICO
51
Se puede proteger cualquier otro carácter, pero se producirá una advertencia en
el nivel de depuración más alto.
La segunda forma de delimitar una cadena de caracteres usa el carácter de
comilla simple (‘). Cuando una cadena va encerrada entre comillas simples, los únicos
caracteres de escape que serán comprendidos son \\ y \'. Esto es por convenio, así que se
pueden tener comillas simples y barras invertidas en una cadena entre comillas simples.
Las variables no se expandirán dentro de una cadena entre comillas simples.
Las cadenas se pueden concatenar usando el operador . (punto). Nótese que el
operador + (suma) no sirve para esto.
Se puede acceder a los caracteres dentro de una cadena tratándola como un array
de caracteres indexado numéricamente, usando una sintaxis similar a la de C. Vea un
ejemplo más abajo.
<?php
/* Asignando una cadena. */
$str = "Esto es una cadena";
/* Añadiendo a la cadena. */
$str = $str . " con algo más de texto";
/* Otra forma de añadir, incluye un carácter de nueva línea protegido. */
$str .= " Y un carácter de nueva línea al final.\n";
/* Esta cadena terminará siendo '<p>Número: 9</p>' */
$num = 9;
$str = "<p>Número: $num</p>";
/* Esta será '<p>Número: $num</p>' */
$num = 9;
$str = '<p>Número: $num</p>';
/* Obtener el primer carácter de una cadena */
$str = 'Esto es una prueba.';
$first = $str[0];
/* Obtener el último carácter de una cadena. */
$str = 'Esto es aún una prueba.';
$last = $str[strlen($str)-1];
?>
4.4.1. Conversión a cadenas
Un valor puede ser convertido a cadena usando el moldeamiento (string) o la
función strval().
Un valor booleano TRUE es convertido a la cadena "1", el valor FALSE se
representa como "" (la cadena vacía). De esta forma, se puede convertir de ida y vuelta
entre valores booleanos y de cadena.
Un número integer o de punto flotante (float) es convertido a una cadena que
representa el número textualmente (incluyendo la parte del exponente para los números
de punto flotante). Los números de punto flotante pueden ser convertidos usando la
notación exponencial (4.1E+6).
PROGRAMACIÓN EN LENGUAJE PHP5. NIVEL BÁSICO
52
Las matrices son siempre convertidas a la cadena "Array"; por esta razón,
echo() y print() no pueden por su cuenta mostrar los contenidos de un valor array. Para
ver un elemento sencillo, use una construcción como echo $arr['foo'].
Los objetos a partir de PHP 4 son convertidos siempre a la cadena "Object". Por
eso, al igual que pasa con las matrices echo() y print() no pueden por su cuenta mostrar
los contenidos de un valor objecto.
Los recursos son siempre convertidos a cadenas con la estructura "Resource id
#1" en donde 1 es el número único del valor recurso asignado por PHP en tiempo de
ejecución. No se debe escribir código que dependa de esta estructura; está sujeta a
cambios.
NULL se convierte siempre a una cadena vacía.
Como se ha indicado anteriormente, convertir directamente un valor tipo array,
object, o resource a un string no ofrece información útil sobre los valores más allá de su
tipo. Si desea inspeccionar el contenido de estos tipos debe usar las funciones print_r()
y var_dump().
La mayoría de valores PHP pueden ser convertidos también a string para su
almacenamiento permanentemente. Este método es conocido como serialización
(seriación), y es efectuado por la función serialize().
4.4.2. Conversión de cadenas a números
Cuando una cadena se evalúa como un valor numérico, el valor resultante y el
tipo se determinan como sigue.
La cadena se evaluará como un doble si contiene cualquiera de los caracteres '.',
'e', o 'E'. En caso contrario, se evaluará como un entero.
El valor viene dado por la porción inicial de la cadena. Si la cadena comienza
con datos de valor numérico, este será el valor usado. En caso contrario, el valor será 0
(cero). Los datos numéricos válidos son un signo opcional, seguido por uno o más
dígitos (que opcionalmente contengan un punto decimal), seguidos por un exponente
opcional. El exponente es una 'e' o una 'E' seguidos por uno o más dígitos.
Cuando la primera expresión es una cadena, el tipo de la variable dependerá de
la segunda expresión.
$foo = 1 + "10.5"; // $foo es doble (11.5)
$foo = 1 + "-1.3e3"; // $foo es doble (-1299)
$foo = 1 + "bob-1.3e3"; // $foo es entero (1)
$foo = 1 + "bob3"; // $foo es entero (1)
$foo = 1 + "10 Cerditos"; // $foo es entero (11)
$foo = 1 + "10.0 Cerditos"; // $foo es double (11)
$foo = "10.0 cerdos " + 1; // $foo es double (11)
$foo = "10.0 cerdos " + 1.0; // $foo es double (11)
Si quisiera probar cualquiera de los ejemplos de esta sección, puede cortar y
pegar los ejemplos e insertar la siguiente línea para ver por sí mismo lo que va
ocurriendo: PROGRAMACIÓN EN LENGUAJE PHP5. NIVEL BÁSICO
53
echo "\$foo==$foo; el tipo es " . gettype( $foo ) . "<br>\n";
4.5. Arrays
Los arrays actualmente actúan tanto como tablas hash (arrays asociativos) como
arrays indexados (vectores).
4.5.1. Arrays unidimensionales
PHP soporta tanto arrays escalares como asociativos. De hecho, no hay
diferencias entre los dos. Se puede crear una array usando las funciones list() o array(),
o se puede asignar el valor de cada elemento del array de manera explícita.
$a[0] = "abc";
$a[1] = "def";
$b["foo"] = 13;
$matriz = array("foo" => "bar", 12 => true);
También se puede crear un array simplemente añadiendo valores al array.
Cuando se asigna un valor a una variable array usando corchetes vacíos, el valor se
añadirá al final del array.
$a[] = "hola"; // $a[2] == "hola"
$a[] = "mundo"; // $a[3] == "mundo"
Los arrays se pueden ordenar usando las funciones asort(), arsort(), ksort(),
rsort(), sort(), uasort(), usort(), y uksort() dependiendo del tipo de ordenación que se
desee.
Se puede contar el número de elementos de un array usando la función count().
Se puede recorrer un array usando las funciones next() y prev(). Otra forma
habitual de recorrer un array es usando la función each().
4.5.2. Arrays Multidimensionales
Los arrays multidimensionales son bastante simples actualmente. Para cada
dimensión del array, se puede añadir otro valor [clave] al final:
$a[1] = $f; # ejemplos de una sola dimensión
$a["foo"] = $f;
$a[1][0] = $f; # bidimensional
$a["foo"][2] = $f; # (se pueden mezclar índices numéricos y asociativos)
$a[3]["bar"] = $f; # (se pueden mezclar índices numéricos y asociativos)
$a["foo"][4]["bar"][0] = $f; # tetradimensional!
En PHP3 no es posible referirse a arrays multidimensionales directamente dentro
de cadenas. Por ejemplo, lo siguiente no tendrá el resultado deseado:
$a[3]['bar'] = 'Bob';
echo "Esto no va a funcionar: $a[3][bar]"; PROGRAMACIÓN EN LENGUAJE PHP5. NIVEL BÁSICO
54
En PHP3, lo anterior tendrá la salida Esto no va a funcionar: Array[bar]. De
todas formas, el operador de concatenación de cadenas se puede usar para solucionar
esto:
$a[3]['bar'] = 'Bob';
echo "Esto va a funcionar: " . $a[3][‘bar’];
A partir de PHP4, sin embargo, todo el problema se puede solucionar encerrando
la referencia al array (dentro de la cadena) entre llaves:
$a[3]['bar'] = 'Bob';
echo "Esto va a funcionar: {$a[3][‘bar’]}";
Se pueden "rellenar" arrays multidimensionales de muchas formas, pero la más
difícil de comprender es cómo usar el comando array() para arrays asociativos. Estos
dos trozos de código rellenarán el array unidimensional de la misma manera:
# Ejemplo 1:
$a["color"] = "rojo";
$a["sabor"] = "dulce";
$a["forma"] = "redondeada";
$a["nombre"] = "manzana";
$a[3] = 4;
# Ejemplo 2:
$a = array(
"color" => "rojo",
"sabor" => "dulce",
"forma" => "redondeada",
"nombre" => "manzana",
3 => 4
);
La función array() se puede anidar para arrays multidimensionales:
<?php
$a = array(
"manzana" => array(
"color" => "rojo",
"sabor" => "dulce",
"forma" => "redondeada"
),
"naranja" => array(
"color" => "naranja",
"sabor" => "ácido",
"forma" => "redondeada"
),
"plátano" => array(
"color" => "amarillo",
"sabor" => "paste-y",
"forma" => "aplatanada"
)
);
echo $a["manzana"]["sabor"]; # devolverá "dulce"
?>
Siempre deben usarse comillas alrededor de un índice de matriz tipo cadena
literal. Por ejemplo, $foo['bar'] es correcto, mientras que $foo[bar] no lo es. Funciona
pero no es correcto. Funciona porque PHP automáticamente convierte una cadena pura
(una cadena sin comillas que no corresponda con símbolo conocido alguno) en una
cadena que contiene la cadena pura. Por ejemplo, si no se ha definido una constante
llamada bar, entonces PHP reemplazará su valor por la cadena 'bar' y usará ésta última. PROGRAMACIÓN EN LENGUAJE PHP5. NIVEL BÁSICO
55
4.6. Objetos
Para inicializar un objeto, se usa la sentencia new para instanciar el objeto a una
variable.
class foo {
function do_foo () {
echo "Haciendo foo.";
}
}
$bar = new foo;
$bar->do_foo();
4.7. Recursos
Un valor tipo resource es una variable especial, que contiene una referencia a un
recurso externo. Los recursos son creados y usados por funciones especiales. Gracias al
sistema de conteo de referencias introducido con el Motor Zend de PHP 4, un recurso
que ya no es referenciado es detectado automáticamente, y es liberado por el recolector
de basura. Por esta razón, rara vez se necesita liberar la memoria manualmente. Los
enlaces persistentes con bases de datos son una excepción a esta regla. Estos no son
destruidos por el recolector de basura.
4.8. NULL
El valor especial NULL representa una variable que no tiene valor. NULL es el
único valor posible del tipo NULL. Una variable es considerada como null si:
Ö se le ha asignado la constante NULL.
Ö no ha sido definida con valor alguno.
Ö ha sido eliminada con unset().
Existe un solo valor de tipo null, y ese es la palabra clave NULL, insensible a
mayúsculas y minúsculas.
$var = NULL;
Hay varias funciones interesantes para trabajar con el valor null: is_null() y unset().
4.9. Forzado de tipos
PHP no requiere (o soporta) la declaración explícita del tipo en la declaración de
variables; el tipo de una variable se determina por el contexto en el que se usa esa
variable. Esto quiere decir que si se asigna un valor de cadena a la variable var, var se
convierte en una cadena. Si después se asigna un valor entero a la variable var, se
convierte en una variable entera.
PROGRAMACIÓN EN LENGUAJE PHP5. NIVEL BÁSICO
56
Un ejemplo de conversión de tipo automática en PHP es el operador suma '+'. Si
cualquiera de los operandos es un flotante, entonces todos los operandos se evalúan
como flotantes, y el resultado será un flotante. En caso contrario, los operandos se
interpretarán como enteros, y el resultado será también un entero. Nótese que esto NO
cambia los tipos de los operandos propiamente dichos; el único cambio está en cómo se
evalúan los operandos.
$foo = "0"; // $foo es una cadena (ASCII 48)
$foo++; // $foo es la cadena "1" (ASCII 49) convertido a entero (1)
$foo += 1; // $foo ahora es un entero (2)
$foo = $foo + 1.3; // $foo ahora es un doble (3.3)
$foo = 5 + "10 Cerditos Pequeñitos"; // $foo es entero (15)
$foo = 5 + "10 Cerditos"; // $foo es entero (15)
Si se desea obligar a que una variable sea evaluada con un tipo concreto se
puede realizar un forzado de tipos. Si se desea cambiar el tipo de una variable se puede
usar la función settype().
Si quisiese probar cualquiera de los ejemplos de esta sección, puede cortar y
pegar los ejemplos e insertar la siguiente línea para ver por sí mismo lo que va
ocurriendo o usar la función var_dump():
echo "\$foo==$foo; el tipo es " . gettype( $foo ) . "<br>\n";
Nota: La posibilidad de una conversión automática a array no está definida
actualmente.
$a = 1; // $a es un entero
$a[0] = "f"; // $a se convierte en un array, en el que $a[0] vale "f"
Aunque el ejemplo anterior puede parecer que claramente debería resultar en que
$a se convierta en un array, el primer elemento del cual es 'f', consideremos esto:
$a = "1"; // $a es una cadena
$a[0] = "f"; // ¿Qué pasa con los índices de las cadenas? ¿Qué ocurre?
Dado que PHP soporta indexación en las cadenas vía offsets usando la misma
sintaxis que la indexación de arrays, el ejemplo anterior nos conduce a un problema:
¿debería convertirse $a en un array cuyo primer elemento sea "f", o debería convertirse
"f" en el primer carácter de la cadena $a?
El forzado de tipos en PHP funciona como en C: el nombre del tipo deseado se
escribe entre paréntesis antes de la variable a la que se pretende forzar.
$foo = 10; // $foo es un entero
$bar = (double) $foo; // $bar es un doble
Los forzados de tipo permitidos son:
(int), (integer) - fuerza a entero (integer)
(bool),(bolean) – fuerza a booleano
(real), (double), (float) - fuerza a doble (double)
(string) - fuerza a cadena (string)
(array) - fuerza a array (array)
(object) - fuerza a objeto (object) PROGRAMACIÓN EN LENGUAJE PHP5. NIVEL BÁSICO
57
Nótese que las tabulaciones y espacios se permiten dentro de los paréntesis, así
que los siguientes ejemplos son funcionalmente equivalentes:
$foo = (int) $bar;
$foo = ( int ) $bar;
Puede no ser obvio que ocurrirá cuando se fuerce entre ciertos tipos. Por
ejemplo, lo siguiente debería ser tenido en cuenta.
Cuando se fuerza el cambio de un escalar o una variable de cadena a un array, la
variable se convertirá en el primer elemento del array:
$var = 'ciao';
$arr = (array) $var;
echo $arr[0]; // produce la salida 'ciao'
Cuando se fuerza el tipo de una variable escalar o de una cadena a un objeto, la
variable se convertirá en un atributo del objeto; el nombre del atributo será 'scalar':
$var = 'ciao';
$obj = (object) $var;
echo $obj->scalar; // produce la salida 'ciao'
Cuando se fuerza el tipo de una variable a booleano, el valor de la variable será
FALSE si: es el valor booleano FALSE, si es el entero 0, si es el flotante 0.0 si es la
cadena vacía o la cadena “0”, si es un array con cero elementos, si es NULL; en
cualquier otro caso el valor será TRUE.
HTML y PHP ¿Cual es mejor?
Para interpretar un archivo, PHP simplemente interpreta el texto del archivo
hasta que encuentra uno de los carácteres especiales que delimitan el inicio de código
PHP. El intérprete ejecuta entonces todo el código que encuentra, hasta que encuentra
una etiqueta de fin de código, que le dice al intérprete que siga ignorando el código
siguiente. Este mecanismo permite embeber código PHP dentro de HTML: todo lo que
está fuera de las etiquetas PHP se deja tal como está, mientras que el resto se interpreta
como código.
Hay cuatro conjuntos de etiquetas que pueden ser usadas para denotar bloques
de código PHP. De estas cuatro, sólo 2 (<?php ... ?> y <script language="php"> ...
</script>) están siempre disponibles; el resto pueden ser configuradas en el fichero de
php.ini para ser o no aceptadas por el intérprete. Mientras que el formato corto de
etiquetas (short-form tags) y el estilo ASP (ASP-style tags) pueden ser convenientes, no
son portables como la versión de formato largo de etiquetas. Además, si se pretende
embeber código PHP en XML o XHTML, será obligatorio el uso del formato <?php ...
?> para la compatibilidad con XML.
Las etiquetas soportadas por PHP son:
Formas de escapar de HTML
<?php
echo("si quieres servir documentos XHTML o XML, haz como aquí<BR>");
?>
<?
echo ("esta es la más simple, una instrucción de procesado SGML <BR>");
?>
<?= expression ?> Esto es una abreviatura de "<? echo expression ?>"<BR>
<script language="php">
echo ("muchos editores (como FrontPage) no aceptan instrucciones de
procesado<BR>");
</script>
<%
echo ("Opcionalmente, puedes usar las etiquetas ASP<BR>");
%>
<%= $variable; # Esto es una abreviatura de "<% echo . . ." %>
El método primero, <?php ... ?>, es el más conveniente, ya que permite el uso
de PHP en código XML como XHTML.
El método segundo no siempre está disponible. El formato corto de etiquetas
está disponible con la función short_tags() (sólo PHP 3), activando el parámetro del
fichero de configuración de PHP short_open_tag, o compilando PHP con la opción --
enable-short-tags del comando configure. Está activa por defecto en php.ini-dist. PROGRAMACIÓN EN LENGUAJE PHP5. NIVEL BÁSICO
34
El método cuarto sólo está disponible si se han activado las etiquetas ASP en el
fichero de configuración: asp_tags.
Nota: El soporte de etiquetas ASP se añadió en la versión 3.0.4.
Nota: No se debe usar el formato corto de etiquetas cuando se desarrollen
aplicaciones o librerías con intención de redistribuirlas, o cuando se
desarrolle para servidores que no están bajo nuestro control, porque puede
ser que el formato corto de etiquetas no esté soportado en el servidor. Para
generar código portable y redistribuíble, asegúrate de no usar el formato
corto de etiquetas.
La etiqueta de fin de bloque incluirá tras ella la siguiente línea si hay alguna
presente. Además, la etiqueta de fin de bloque lleva implícito el punto y coma; no
necesitas por lo tanto añadir el punto y coma final de la última línea del bloque PHP.
PHP permite estructurar bloques como:
<?php
if ($expression) {
?>
<strong>This is true.</strong>
<?php
} else {
?>
<strong>This is false.</strong>
<?php
}
?>
Este ejemplo realiza lo esperado, ya que cuando PHP encuentra las etiquetas ?>
de fin de bloque, empieza a escribir lo que encuentra tal cual hasta que encuentra otra
etiqueta de inicio de bloque. El ejemplo anterior es, por supuesto, inventado. Para
escribir bloques grandes de texto generamente es más eficiente separalos del código
PHP que enviar todo el texto mediante las funciones echo(), print() o similares.
2.2. Comentarios
Una vez visto como se introduce código PHP dentro del código HTML, lo
siguiente es ver como se puede comentar el código PHP. PHP soporta el estilo de
comentarios de 'C', 'C++' y de la interfaz de comandos de Unix. Por ejemplo:
<?php
echo "Esto es una prueba"; // Comentario estilo c++
/* Comentario multi-linea
con varias lineas de comentario */
echo "Otra prueba";
echo "Prueba final"; # Comentario estilo shell de Unix
?>
Los estilos de comentarios de una línea (es decir, // y #) actualmente sólo
comentan hasta el final de la línea o el bloque actual de código PHP, lo primero que
ocurra.
<h1>Esto es un <?php # echo "simple";?> ejemplo.</h1>
<p>La cabecera de arriba dice 'Esto es un ejemplo.'. PROGRAMACIÓN EN LENGUAJE PHP5. NIVEL BÁSICO
Hay que tener cuidado con no anidar comentarios de estilo 'C', algo que puede
ocurrir al comentar bloques largos de código.
<?php
/*
echo "Esto es una prueba"; /* Este comentario causa problemas*/
*/
?>
Los estilos de comentarios de una linea actualmente sólo comentan hasta el final
de la linea o del bloque actual de código PHP, lo primero que ocurra. Esto implica que
el código HTML tras // ?> será impreso: ?> sale del modo PHP, retornando al modo
HTML, el comentario // no le influye.
2.3. Instrucciones
Un fragmento de código PHP va a estar compuesto por una o varias
instrucciones. En PHP la separación de instrucciones se hace de la misma manera que
en C o Perl - terminando cada instrucción con un punto y coma.
La etiqueta de fin de bloque (?>) implica el fin de la instrucción, por lo tanto no
es necesario un punto y coma después de la última instrucción. Como se ve en el
ejemplo donde los dos fragmentos siguientes son equivalentes:
<?php
echo "Esto es una prueba";
?>
<?php echo "Esto es una preba" ?>
Todo script PHP se compone de una serie de sentencias o instrucciones. Una
sentencia puede ser una asignación, una llamada a función, un bucle, una sentencia
condicional e incluso una sentencia que no haga nada (una sentencia vacía). Las
sentencias normalmente acaban con punto y coma como se ha dicho anteriormente.
Además, las sentencias se pueden agrupar en grupos de sentencias encapsulando un
grupo de sentencias con llaves. Un grupo de sentencias es también una sentencia.
Para construir las sentencias o instrucciones se necesitan distintos elementos:
variables y constantes, operadores, estructuras de control, funciones, ...
A continuación se irán viendo cada uno de estos elementos que permiten construir los
scripts de PHP.
PHP frente a otros lenguajes
Para seleccionar un lenguaje de Script las cuatro grandes características que debe
cumplir son: Velocidad, estabilidad, seguridad y simplicidad.
• Velocidad: No sólo la velocidad de ejecución, la cual es importante, sino además no
crear demoras en la máquina. Por esta razón no debe requerir demasiados recursos
de sistema. PHP se integra muy bien junto a otro software, especialmente bajo
ambientes Unix, cuando se configura como módulo de Apache, esta listo para ser
utilizado.
• Estabilidad: La velocidad no sirve de mucho si el sistema se cae cada cierta
cantidad de ejecuciones. Ninguna aplicación es 100% libre de bugs, pero teniendo
de respaldo una increíble comunidad de programadores y usuarios es mucho mas
difícil para lo bugs sobrevivir. PHP utiliza su propio sistema de administración de
recursos y dispone de un sofisticado método de manejo de variables, conformando
un sistema robusto y estable.
• Seguridad: El sistema debe poseer protecciones contra ataques. PHP provee
diferentes niveles de seguridad, estos pueden ser configurados desde el archivo .ini
• Simplicidad: Se les debe permitir a los programadores generar código
productivamente en el menor tiempo posible. Usuarios con experiencia en C y C++
podrán utilizar PHP rápidamente.
Bueno otra característica a tener en cuenta seria la conectividad. PHP dispone de
una amplia gama de librerías, y agregarle extensiones es muy fácil. Esto le permite al
PHP ser utilizado en muchas áreas diferentes, tales como encriptado, gráficos, XML y
otras.
Ventajas adicionales de PHP
• PHP corre en (casi) cualquier plataforma utilizando el mismo código fuente,
pudiendo ser compilado y ejecutado en algo así como 25 plataformas, incluyendo
diferentes versiones de Unix, Windows (95,98,NT,ME,2000,XP,...) y Macs. Como
en todos los sistemas se utiliza el mismo código base, los scripts pueden ser
ejecutados de manera independiente al OS.
• La sintaxis de PHP es similar a la del C, por esto cualquiera con experiencia en
lenguajes del estilo C podrá entender rápidamente PHP. Entre los lenguajes del tipo
C incluimos al Java y Javascript, de hecho mucha de la funcionalidad del PHP se la
debe al C en funciones como fread() o srtlen(), así que muchos programadores se
sentirán como en casa.
• PHP es completamente expandible. Está compuesto de un sistema principal (escrito
por Zend), un conjunto de módulos y una variedad de extensiones de código.
• Muchas interfaces distintas para cada tipo de servidor. PHP actualmente se puede
ejecutar bajo Apache 1.3 y 2.X, IIS, Lighttpd, Netscape servers (Sun Java System,
Sun One, iPlanet, …),… . Otra alternativa es configurarlo como modulo CGI.
• Puede interactuar con muchos motores de bases de datos tales como MySQL, MS
SQL, Oracle, Informix, PostgreSQL, y otros muchos. Siempre podrás disponer de
ODBC para situaciones que lo requieran.
• Una gran variedad de módulos cuando un programador PHP necesite una interfase
para una librería en particular, fácilmente podrá crear una API para esta. Algunas de
las que ya vienen implementadas permiten manejo de gráficos, archivos PDF, Flash,
Cybercash, calendarios, XML, IMAP, POP, etc.
• Rapidez. PHP generalmente es utilizado como modulo de Apache, lo que lo hace
extremadamente veloz. Esta completamente escrito en C, así que se ejecuta
rápidamente utilizando poca memoria.
• PHP es Open Source, lo cual significa que el usuario no depende de una compañía
específica para arreglar cosas que no funcionan, además no estás forzado a pagar
actualizaciones anuales para tener una versión que funcione.
Algunas desventajas
• El manejo de errores no es tan sofisticado como otros lenguajes (ASP.Net, …) .
• No existe IDE o Debugger consolidado. Aunque en la actualidad existen proyectos
varios entre los mas destacados está Eclipse (gratuito) o Zend Studio (de pago).
Cuando debes utilizar PHP y cuando debes utilizar otro lenguaje
Si estás desarrollando bajo una plataforma UNIX o Linux, debes elegir entre
Perl y PHP, ambos excelentes. Para mucha gente PHP es más simple a la hora de
escribir scripts, haciéndolo más productivo en proyectos.
En ambientes Windows compite muy de cerca con ASP.Net , aquí la elección se
basa en asuntos un poco más técnicos y en la política que desee utilizarse para el sitio.
ASP.Net junto a IIS es probablemente más estable que PHP con IIS. Pero en términos
puramente técnicos, PHP bajo Windows Server es mucho más estable (además de ser
más rápido y utilizar menos recursos). De cualquier manera ASP.Net ofrece una mejor
integración con este ambiente sobre todo si se desea utilizar COM+.
cumplir son: Velocidad, estabilidad, seguridad y simplicidad.
• Velocidad: No sólo la velocidad de ejecución, la cual es importante, sino además no
crear demoras en la máquina. Por esta razón no debe requerir demasiados recursos
de sistema. PHP se integra muy bien junto a otro software, especialmente bajo
ambientes Unix, cuando se configura como módulo de Apache, esta listo para ser
utilizado.
• Estabilidad: La velocidad no sirve de mucho si el sistema se cae cada cierta
cantidad de ejecuciones. Ninguna aplicación es 100% libre de bugs, pero teniendo
de respaldo una increíble comunidad de programadores y usuarios es mucho mas
difícil para lo bugs sobrevivir. PHP utiliza su propio sistema de administración de
recursos y dispone de un sofisticado método de manejo de variables, conformando
un sistema robusto y estable.
• Seguridad: El sistema debe poseer protecciones contra ataques. PHP provee
diferentes niveles de seguridad, estos pueden ser configurados desde el archivo .ini
• Simplicidad: Se les debe permitir a los programadores generar código
productivamente en el menor tiempo posible. Usuarios con experiencia en C y C++
podrán utilizar PHP rápidamente.
Bueno otra característica a tener en cuenta seria la conectividad. PHP dispone de
una amplia gama de librerías, y agregarle extensiones es muy fácil. Esto le permite al
PHP ser utilizado en muchas áreas diferentes, tales como encriptado, gráficos, XML y
otras.
Ventajas adicionales de PHP
• PHP corre en (casi) cualquier plataforma utilizando el mismo código fuente,
pudiendo ser compilado y ejecutado en algo así como 25 plataformas, incluyendo
diferentes versiones de Unix, Windows (95,98,NT,ME,2000,XP,...) y Macs. Como
en todos los sistemas se utiliza el mismo código base, los scripts pueden ser
ejecutados de manera independiente al OS.
• La sintaxis de PHP es similar a la del C, por esto cualquiera con experiencia en
lenguajes del estilo C podrá entender rápidamente PHP. Entre los lenguajes del tipo
C incluimos al Java y Javascript, de hecho mucha de la funcionalidad del PHP se la
debe al C en funciones como fread() o srtlen(), así que muchos programadores se
sentirán como en casa.
• PHP es completamente expandible. Está compuesto de un sistema principal (escrito
por Zend), un conjunto de módulos y una variedad de extensiones de código.
• Muchas interfaces distintas para cada tipo de servidor. PHP actualmente se puede
ejecutar bajo Apache 1.3 y 2.X, IIS, Lighttpd, Netscape servers (Sun Java System,
Sun One, iPlanet, …),… . Otra alternativa es configurarlo como modulo CGI.
• Puede interactuar con muchos motores de bases de datos tales como MySQL, MS
SQL, Oracle, Informix, PostgreSQL, y otros muchos. Siempre podrás disponer de
ODBC para situaciones que lo requieran.
• Una gran variedad de módulos cuando un programador PHP necesite una interfase
para una librería en particular, fácilmente podrá crear una API para esta. Algunas de
las que ya vienen implementadas permiten manejo de gráficos, archivos PDF, Flash,
Cybercash, calendarios, XML, IMAP, POP, etc.
• Rapidez. PHP generalmente es utilizado como modulo de Apache, lo que lo hace
extremadamente veloz. Esta completamente escrito en C, así que se ejecuta
rápidamente utilizando poca memoria.
• PHP es Open Source, lo cual significa que el usuario no depende de una compañía
específica para arreglar cosas que no funcionan, además no estás forzado a pagar
actualizaciones anuales para tener una versión que funcione.
Algunas desventajas
• El manejo de errores no es tan sofisticado como otros lenguajes (ASP.Net, …) .
• No existe IDE o Debugger consolidado. Aunque en la actualidad existen proyectos
varios entre los mas destacados está Eclipse (gratuito) o Zend Studio (de pago).
Cuando debes utilizar PHP y cuando debes utilizar otro lenguaje
Si estás desarrollando bajo una plataforma UNIX o Linux, debes elegir entre
Perl y PHP, ambos excelentes. Para mucha gente PHP es más simple a la hora de
escribir scripts, haciéndolo más productivo en proyectos.
En ambientes Windows compite muy de cerca con ASP.Net , aquí la elección se
basa en asuntos un poco más técnicos y en la política que desee utilizarse para el sitio.
ASP.Net junto a IIS es probablemente más estable que PHP con IIS. Pero en términos
puramente técnicos, PHP bajo Windows Server es mucho más estable (además de ser
más rápido y utilizar menos recursos). De cualquier manera ASP.Net ofrece una mejor
integración con este ambiente sobre todo si se desea utilizar COM+.
Lenguaje C+ cap2
Tema 2 - Identificadores, tipos de datos, variables
y constantes.
2.1 - Identificadores.
Antes de proceder a explicar los identificadores en C, es necesario resaltar que
C es un lenguaje sensible al contexto, a diferencia por ejemplo de Pascal, por lo cual, C
diferencia entre mayúsculas y minúsculas, y por tanto, diferencia entre una palabra
escrita total o parcialmente en mayúsculas y otra escrita completamente en
minúsculas.
En el lenguaje C, un identificador es cualquier palabra no reservada que
comience por una letra o por un subrayado, pudiendo contener en su interior letras,
números y subrayados. La longitud máxima de un identificador depende del
compilador que se este usando, pero, generalmente, suelen ser de 32 caracteres,
ignorándose todos aquellos caracteres que compongan el identificador y sobrepasen la
longitud máxima. Recuérdese, además, que al ser C sensible al contexto, un
identificador escrito como esto_es_un_ident y otra vez como Esto_Es_Un_Ident será
interpretado como dos identificadores completamente distintos.
2.2 - Tipos de datos, modificadores de tipo y modificadores
de acceso.
En C, toda variable, antes de poder ser usada, debe ser declarada, especificando
con ello el tipo de dato que almacenara. Toda variable en C se declara de la forma:
<tipo de dato> <nombre de variable> [, nombre de variable];
En C existen cinco tipos de datos según puede verse en la tabla siguiente:
Tipo de dato Descripción.
char Carácter o entero pequeño (byte)
int Entero
float Punto flotante
double Punto flotante (mayor rango que
float)
void Sin tipo (uso especial)
Tabla 2.2.1: Tipos de datos en C.
Algunos ejemplos de variables de C serían:
float a;
int b,c;
char caracter,otro_caracter;El lenguaje de programación C
Existen, además, cuatro modificadores de tipo, los cuales se aplican sobre los
tipos de datos anteriormente citados. Los modificadores de tipo permiten cambiar el
tamaño, etc., de los tipos de datos anteriormente especificados. Estos modificadores,
que sintácticamente anteceden a la declaración del tipo de dato, son:
Modificador Tipos de actuación Descripción
signed char int Con signo (por defecto)
unsigned char int Sin signo
long int double Largo
short int Corto
Tabla 2.2.2: Modificadores de los tipos de datos en C.
Es por ello, que podemos declarar variables como:
unsigned char a;
long double b;
short int i;
Es posible, además, aplicar dos modificadores seguidos a un mismo tipo de
datos, así, es posible definir una variable de tipo unsigned long int (entero largo sin
signo). El rango de valores de que permite cada variable depende del sistema operativo
sobre el cual se trabaje (MS-DOS, Windows95/98/NT/2000, UNIX/Linux), por lo cual
conviene referirse al manual del compilador para conocerlo. De forma general, los
sistemas operativos de 16 bits (MS-DOS, Windows 16 bits) poseen un rango y los de
32 bits (Windows 32 bits, UNIX/Linux) otro.
Rango de valores posibles en (notación matemática)
Tipo de variable declarada 16 bits 32 bits
char / signed char [-128 , 127] [-128 , 127]
unsigned char [0 , 255] [0 , 255]
int / signed int [-32768 , 32767] [-2147483647 , 2147483648]
unsigned int [0 , 65535] [0 , 4294967295]
short int / signed short
int
[-32768 , 32767] [-32768 , 32767]
unsigned short int [0 , 65535] [0 , 65535]
long int / signed long
int
[-2147483647 , 2147483648] [-2147483647 , 2147483648]
unsigned long int [0 , 4294967295] [0 , 4294967295]
float [-3.4E+38 , -3.4E-38], 0 ,
[3.4E-38 , 3.4E+38]
[-3.4E+38 , -3.4E-38], 0 ,
[3.4E-38 , 3.4E+38]
double [-1.7E+308 , -1.7E-308], 0 ,
[1.7E-308 , 1.7E+308]
[-1.7E+308 , -1.7E-308], 0 ,
[1.7E-308 , 1.7E+308]
long double [-3.4E+4932 , -1.1E-4932], 0 ,
[3.4E-4932 , 1.1E+4932]
[-3.4E-4932 , -1.1E+4932], 0 ,
[3.4E-4932 , 1.1E+4932]
Tabla 2.2.3: Rango de valores de las variables en C.
Además de los modificadores de tipo existen modificadores de acceso. Los
modificadores de acceso limitan el uso que puede realizarse de las variables
declaradas. Los modificadores de acceso anteceden a la declaración del tipo de dato de
la variable y son los siguientes:El lenguaje de programación C
Modificador Efecto
const Variable de valor constante
volatile Variable cuyo valor es modificado
externamente
Tabla 2.2.4: Modificadores de acceso en C.
La declaración de una variable como const permite asegurarse de que su valor
no será modificado por el programa, excepto en el momento de su declaración, en el
cual debe asignársele un valor inicial. Así, si declaramos la siguiente variable:
const int x=237;
Cualquier intento posterior de modificar el valor de x, tal como x=x+5;,
producirá un error en tiempo de compilación.
La declaración de una variable como volatile, indica al compilador que dicha
variable puede modificarse por un proceso externo al propio programa (tal como la
hora del sistema), y por ello, que no trate de optimizar dicha variable suponiéndole un
valor constante, etc. Ello fuerza a que cada vez que se usa la variable, se realice una
comprobación de su valor.
Los modificadores const y volatile pueden usarse de forma conjunta en ciertos
casos, por lo cual no son excluyentes el uno del otro. Ello es posible si se declara una
variable que actualizara el reloj del sistema, (proceso externo al programa), y que no
queremos pueda modificarse en el interior del programa. Por ello, podremos declarar:
volatile const unsigned long int hora;
2.3 - Declaración de variables y alcance.
En C, las variables pueden ser declaradas en cuatro lugares del módulo del
programa:
• Fuera de todas las funciones del programa, son las llamadas variables globales,
accesibles desde cualquier parte del programa.
• Dentro de una función, son las llamadas variables locales, accesibles tan solo
por la función en las que se declaran.
• Como parámetros a la función, accesibles de igual forma que si se declararan
dentro de la función.
• Dentro de un bloque de código del programa, accesible tan solo dentro del
bloque donde se declara. Esta forma de declaración puede interpretarse como
una variable local del bloque donde se declara.
Para un mejor comprensión, veamos un pequeño programa de C con variables
declaradas de las cuatro formas posibles:El lenguaje de programación C
#include <stdio.h>
int sum; /* Variable global, accesible desde cualquier parte */
/* del programa*/
void suma(int x) /* Variable local declarada como parámetro, */
/* accesible solo por la función suma*/
{
sum=sum+x;
return;
}
void intercambio(int *a,int *b)
{
if (*a>*b)
{
int inter; /* Variable local, accesible solo dentro del */
/* bloque donde se declara*/
inter=*a;
*a=*b;
*b=inter;
}
return;
}
int main(void) /*Función principal del programa*/
{
int contador,a=9,b=0; /*Variables locales, accesibles solo */
/* por main*/
sum=0;
intercambio(&a,&b);
for(contador=a;contador<=b;contador++) suma(contador);
printf(“%d\n”,suma);
return(0);
}
2.4 - Especificadores de almacenamiento de los tipos de
datos.
Una vez explicada la declaración de variables y su alcance, vamos a proceder a
explicar como es posible modificar el alcance del almacenamiento de los datos. Ello es
posible realizarlo mediante los especificadores de almacenamiento. Existen cuatro
especificadores de almacenamiento. Estos especificadores de almacenamiento, cuando
se usan, deben preceder a la declaración del tipo de dato de la variable. Estos
especificadores de almacenamiento son:
Especificador de
almacenamiento
Efecto
auto Variable local (por
defecto)
extern Variable externa
static Variable estática
register Variable registro
Tabla 2.4.1: Especificadores de almacenamiento en C.El lenguaje de programación C
El especificador auto se usa para declarar que una variable local existe
solamente mientras estemos dentro de la subrutina o bloque de programa donde se
declara, pero, dado que por defecto toda variable local es auto, no suele usarse.
El especificador extern se usa en el desarrollo de programas compuestos por
varios módulos. El modificador extern se usa sobre las variables globales del módulo,
de forma que si una variable global se declara como extern, el compilador no crea un
almacenamiento para ella en memoria, sino que, tan solo tiene en cuenta que dicha
variable ya ha sido declarada en otro modulo del programa y es del tipo de dato que se
indica.
El especificador static actúa según el alcance de la variable:
• Para variables locales, el especificador static indica que dicha variable local
debe almacenarse de forma permanente en memoria, tal y como si fuera una
variable global, pero su alcance será el que correspondería a una variable local
declarada en la subrutina o bloque. El principal efecto que provoca la
declaración como static de una variable local es el hecho de que la variable
conserva su valor entre llamadas a la función.
• Para variables globales, el especificador static indica que dicha variable global
es local al módulo del programa donde se declara, y, por tanto, no será
conocida por ningún otro módulo del programa.
El especificador register se aplica solo a variables locales de tipo char e int.
Dicho especificador indica al compilador que, caso de ser posible, mantenga esa
variable en un registro de la CPU y no cree por ello una variable en la memoria. Se
pueden declarar como register cuantas variables se deseen, pues el compilador ignorara
dicha declaración caso de no poder ser satisfecha. El uso de variables con
especificador de almacenamiento register permite colocar en registros de la CPU
variables muy frecuentemente usadas, tales como contadores de bucles, etc.
Algunos ejemplos de uso de los especificadores de almacenamiento son:
register unsigned int a;
static float b;
extern int c;
static const unsigned long int d;
2.5 - Constantes.
En C, las constantes se refieren a los valores fijos que el programa no puede
alterar. Algunos ejemplos de constantes de C son:
Tipo de dato Constantes de ejemplo
char ‘a’ ‘9’ 'Q'
int 1 -34 21000
long int -34 67856L 456
short int 10 -12 1500El lenguaje de programación C
unsigned int 45600U 345 3
float 12.45 4.34e-3 -2.8e9
double -34.657 -2.2e-7 1.0e100
Tabla 2.5.1: Tipos de constantes en C.
Existen, además, algunos tipos de constantes, distintos a los anteriores, que es
necesario resaltar de forma particular. Estos tipos de constantes son las constantes
hexadecimales y octales, las constantes de cadena, y las constantes de barra invertida.
Las constantes hexadecimales y octales son constantes enteras, pero definidas
en base 16 (constantes hexadecimales) o en base 8 (constantes octales). Las constantes
de tipo hexadecimal comienzan por los caracteres 0x seguidas del número deseado. Las
constantes de tipo octal comienzan por un cero (0). Por ejemplo, son constantes
hexadecimales 0x34 (52 decimal), 0xFFFF (65535 decimal); y constantes octales 011
(9 decimal), 0173 (123 decimal)
Las constantes de cadena son conjuntos de caracteres que se encierran entre
comillas dobles. Por ejemplo, son constantes de cadena “Esto es una constante de
cadena”, “Estos son unos apuntes de C”, etc.
Las constantes de caracteres de barra invertida se usan para introducir
caracteres que es imposible introducir por el teclado (tales como retorno de carro, etc.).
Estas constantes son proporcionadas por C para que sea posible introducir dichas
caracteres como constantes en los programas en los cuales sea necesario. Estas
constantes de caracteres de barra invertida son:
Código Significado
\b Retroceso
\f Alimentación de hoja
\n Nueva línea
\r Retorno de carro
\t Tabulador horizontal
\” Doble comilla
\’ Simple comilla
\0 Nulo
\\ Barra invertida
\v Tabulador vertical
\a Alerta
\o Constante octal
\x Constante
hexadecimal
Tabla 2.5.2: Constantes de barra invertida en C.
El uso de las constantes de barra invertida es igual que el de cualquier otro
carácter, así, si ch es una variable de tipo char, podemos hacer: ch=‘\t’, o ch=‘\x20’
(carácter espacio), etc., de igual forma que realizaríamos con cualquier otra constante
de carácter. Además, las constantes de barra invertida pueden usarse en el interior de
constantes de cadena como un carácter más, por ello, podemos poner escribir la
constante de cadena: "Esto es una linea\n".
y constantes.
2.1 - Identificadores.
Antes de proceder a explicar los identificadores en C, es necesario resaltar que
C es un lenguaje sensible al contexto, a diferencia por ejemplo de Pascal, por lo cual, C
diferencia entre mayúsculas y minúsculas, y por tanto, diferencia entre una palabra
escrita total o parcialmente en mayúsculas y otra escrita completamente en
minúsculas.
En el lenguaje C, un identificador es cualquier palabra no reservada que
comience por una letra o por un subrayado, pudiendo contener en su interior letras,
números y subrayados. La longitud máxima de un identificador depende del
compilador que se este usando, pero, generalmente, suelen ser de 32 caracteres,
ignorándose todos aquellos caracteres que compongan el identificador y sobrepasen la
longitud máxima. Recuérdese, además, que al ser C sensible al contexto, un
identificador escrito como esto_es_un_ident y otra vez como Esto_Es_Un_Ident será
interpretado como dos identificadores completamente distintos.
2.2 - Tipos de datos, modificadores de tipo y modificadores
de acceso.
En C, toda variable, antes de poder ser usada, debe ser declarada, especificando
con ello el tipo de dato que almacenara. Toda variable en C se declara de la forma:
<tipo de dato> <nombre de variable> [, nombre de variable];
En C existen cinco tipos de datos según puede verse en la tabla siguiente:
Tipo de dato Descripción.
char Carácter o entero pequeño (byte)
int Entero
float Punto flotante
double Punto flotante (mayor rango que
float)
void Sin tipo (uso especial)
Tabla 2.2.1: Tipos de datos en C.
Algunos ejemplos de variables de C serían:
float a;
int b,c;
char caracter,otro_caracter;El lenguaje de programación C
Existen, además, cuatro modificadores de tipo, los cuales se aplican sobre los
tipos de datos anteriormente citados. Los modificadores de tipo permiten cambiar el
tamaño, etc., de los tipos de datos anteriormente especificados. Estos modificadores,
que sintácticamente anteceden a la declaración del tipo de dato, son:
Modificador Tipos de actuación Descripción
signed char int Con signo (por defecto)
unsigned char int Sin signo
long int double Largo
short int Corto
Tabla 2.2.2: Modificadores de los tipos de datos en C.
Es por ello, que podemos declarar variables como:
unsigned char a;
long double b;
short int i;
Es posible, además, aplicar dos modificadores seguidos a un mismo tipo de
datos, así, es posible definir una variable de tipo unsigned long int (entero largo sin
signo). El rango de valores de que permite cada variable depende del sistema operativo
sobre el cual se trabaje (MS-DOS, Windows95/98/NT/2000, UNIX/Linux), por lo cual
conviene referirse al manual del compilador para conocerlo. De forma general, los
sistemas operativos de 16 bits (MS-DOS, Windows 16 bits) poseen un rango y los de
32 bits (Windows 32 bits, UNIX/Linux) otro.
Rango de valores posibles en (notación matemática)
Tipo de variable declarada 16 bits 32 bits
char / signed char [-128 , 127] [-128 , 127]
unsigned char [0 , 255] [0 , 255]
int / signed int [-32768 , 32767] [-2147483647 , 2147483648]
unsigned int [0 , 65535] [0 , 4294967295]
short int / signed short
int
[-32768 , 32767] [-32768 , 32767]
unsigned short int [0 , 65535] [0 , 65535]
long int / signed long
int
[-2147483647 , 2147483648] [-2147483647 , 2147483648]
unsigned long int [0 , 4294967295] [0 , 4294967295]
float [-3.4E+38 , -3.4E-38], 0 ,
[3.4E-38 , 3.4E+38]
[-3.4E+38 , -3.4E-38], 0 ,
[3.4E-38 , 3.4E+38]
double [-1.7E+308 , -1.7E-308], 0 ,
[1.7E-308 , 1.7E+308]
[-1.7E+308 , -1.7E-308], 0 ,
[1.7E-308 , 1.7E+308]
long double [-3.4E+4932 , -1.1E-4932], 0 ,
[3.4E-4932 , 1.1E+4932]
[-3.4E-4932 , -1.1E+4932], 0 ,
[3.4E-4932 , 1.1E+4932]
Tabla 2.2.3: Rango de valores de las variables en C.
Además de los modificadores de tipo existen modificadores de acceso. Los
modificadores de acceso limitan el uso que puede realizarse de las variables
declaradas. Los modificadores de acceso anteceden a la declaración del tipo de dato de
la variable y son los siguientes:El lenguaje de programación C
Modificador Efecto
const Variable de valor constante
volatile Variable cuyo valor es modificado
externamente
Tabla 2.2.4: Modificadores de acceso en C.
La declaración de una variable como const permite asegurarse de que su valor
no será modificado por el programa, excepto en el momento de su declaración, en el
cual debe asignársele un valor inicial. Así, si declaramos la siguiente variable:
const int x=237;
Cualquier intento posterior de modificar el valor de x, tal como x=x+5;,
producirá un error en tiempo de compilación.
La declaración de una variable como volatile, indica al compilador que dicha
variable puede modificarse por un proceso externo al propio programa (tal como la
hora del sistema), y por ello, que no trate de optimizar dicha variable suponiéndole un
valor constante, etc. Ello fuerza a que cada vez que se usa la variable, se realice una
comprobación de su valor.
Los modificadores const y volatile pueden usarse de forma conjunta en ciertos
casos, por lo cual no son excluyentes el uno del otro. Ello es posible si se declara una
variable que actualizara el reloj del sistema, (proceso externo al programa), y que no
queremos pueda modificarse en el interior del programa. Por ello, podremos declarar:
volatile const unsigned long int hora;
2.3 - Declaración de variables y alcance.
En C, las variables pueden ser declaradas en cuatro lugares del módulo del
programa:
• Fuera de todas las funciones del programa, son las llamadas variables globales,
accesibles desde cualquier parte del programa.
• Dentro de una función, son las llamadas variables locales, accesibles tan solo
por la función en las que se declaran.
• Como parámetros a la función, accesibles de igual forma que si se declararan
dentro de la función.
• Dentro de un bloque de código del programa, accesible tan solo dentro del
bloque donde se declara. Esta forma de declaración puede interpretarse como
una variable local del bloque donde se declara.
Para un mejor comprensión, veamos un pequeño programa de C con variables
declaradas de las cuatro formas posibles:El lenguaje de programación C
#include <stdio.h>
int sum; /* Variable global, accesible desde cualquier parte */
/* del programa*/
void suma(int x) /* Variable local declarada como parámetro, */
/* accesible solo por la función suma*/
{
sum=sum+x;
return;
}
void intercambio(int *a,int *b)
{
if (*a>*b)
{
int inter; /* Variable local, accesible solo dentro del */
/* bloque donde se declara*/
inter=*a;
*a=*b;
*b=inter;
}
return;
}
int main(void) /*Función principal del programa*/
{
int contador,a=9,b=0; /*Variables locales, accesibles solo */
/* por main*/
sum=0;
intercambio(&a,&b);
for(contador=a;contador<=b;contador++) suma(contador);
printf(“%d\n”,suma);
return(0);
}
2.4 - Especificadores de almacenamiento de los tipos de
datos.
Una vez explicada la declaración de variables y su alcance, vamos a proceder a
explicar como es posible modificar el alcance del almacenamiento de los datos. Ello es
posible realizarlo mediante los especificadores de almacenamiento. Existen cuatro
especificadores de almacenamiento. Estos especificadores de almacenamiento, cuando
se usan, deben preceder a la declaración del tipo de dato de la variable. Estos
especificadores de almacenamiento son:
Especificador de
almacenamiento
Efecto
auto Variable local (por
defecto)
extern Variable externa
static Variable estática
register Variable registro
Tabla 2.4.1: Especificadores de almacenamiento en C.El lenguaje de programación C
El especificador auto se usa para declarar que una variable local existe
solamente mientras estemos dentro de la subrutina o bloque de programa donde se
declara, pero, dado que por defecto toda variable local es auto, no suele usarse.
El especificador extern se usa en el desarrollo de programas compuestos por
varios módulos. El modificador extern se usa sobre las variables globales del módulo,
de forma que si una variable global se declara como extern, el compilador no crea un
almacenamiento para ella en memoria, sino que, tan solo tiene en cuenta que dicha
variable ya ha sido declarada en otro modulo del programa y es del tipo de dato que se
indica.
El especificador static actúa según el alcance de la variable:
• Para variables locales, el especificador static indica que dicha variable local
debe almacenarse de forma permanente en memoria, tal y como si fuera una
variable global, pero su alcance será el que correspondería a una variable local
declarada en la subrutina o bloque. El principal efecto que provoca la
declaración como static de una variable local es el hecho de que la variable
conserva su valor entre llamadas a la función.
• Para variables globales, el especificador static indica que dicha variable global
es local al módulo del programa donde se declara, y, por tanto, no será
conocida por ningún otro módulo del programa.
El especificador register se aplica solo a variables locales de tipo char e int.
Dicho especificador indica al compilador que, caso de ser posible, mantenga esa
variable en un registro de la CPU y no cree por ello una variable en la memoria. Se
pueden declarar como register cuantas variables se deseen, pues el compilador ignorara
dicha declaración caso de no poder ser satisfecha. El uso de variables con
especificador de almacenamiento register permite colocar en registros de la CPU
variables muy frecuentemente usadas, tales como contadores de bucles, etc.
Algunos ejemplos de uso de los especificadores de almacenamiento son:
register unsigned int a;
static float b;
extern int c;
static const unsigned long int d;
2.5 - Constantes.
En C, las constantes se refieren a los valores fijos que el programa no puede
alterar. Algunos ejemplos de constantes de C son:
Tipo de dato Constantes de ejemplo
char ‘a’ ‘9’ 'Q'
int 1 -34 21000
long int -34 67856L 456
short int 10 -12 1500El lenguaje de programación C
unsigned int 45600U 345 3
float 12.45 4.34e-3 -2.8e9
double -34.657 -2.2e-7 1.0e100
Tabla 2.5.1: Tipos de constantes en C.
Existen, además, algunos tipos de constantes, distintos a los anteriores, que es
necesario resaltar de forma particular. Estos tipos de constantes son las constantes
hexadecimales y octales, las constantes de cadena, y las constantes de barra invertida.
Las constantes hexadecimales y octales son constantes enteras, pero definidas
en base 16 (constantes hexadecimales) o en base 8 (constantes octales). Las constantes
de tipo hexadecimal comienzan por los caracteres 0x seguidas del número deseado. Las
constantes de tipo octal comienzan por un cero (0). Por ejemplo, son constantes
hexadecimales 0x34 (52 decimal), 0xFFFF (65535 decimal); y constantes octales 011
(9 decimal), 0173 (123 decimal)
Las constantes de cadena son conjuntos de caracteres que se encierran entre
comillas dobles. Por ejemplo, son constantes de cadena “Esto es una constante de
cadena”, “Estos son unos apuntes de C”, etc.
Las constantes de caracteres de barra invertida se usan para introducir
caracteres que es imposible introducir por el teclado (tales como retorno de carro, etc.).
Estas constantes son proporcionadas por C para que sea posible introducir dichas
caracteres como constantes en los programas en los cuales sea necesario. Estas
constantes de caracteres de barra invertida son:
Código Significado
\b Retroceso
\f Alimentación de hoja
\n Nueva línea
\r Retorno de carro
\t Tabulador horizontal
\” Doble comilla
\’ Simple comilla
\0 Nulo
\\ Barra invertida
\v Tabulador vertical
\a Alerta
\o Constante octal
\x Constante
hexadecimal
Tabla 2.5.2: Constantes de barra invertida en C.
El uso de las constantes de barra invertida es igual que el de cualquier otro
carácter, así, si ch es una variable de tipo char, podemos hacer: ch=‘\t’, o ch=‘\x20’
(carácter espacio), etc., de igual forma que realizaríamos con cualquier otra constante
de carácter. Además, las constantes de barra invertida pueden usarse en el interior de
constantes de cadena como un carácter más, por ello, podemos poner escribir la
constante de cadena: "Esto es una linea\n".
Lenguaje C+
Hola que tal mis lectores , le quiero presentar en los siguientes post los diferentes capitulos de c de un libro muy interesante espero que lo disfruten
Tema 1 - Introducción.
El lenguaje de programación C fue creado por Brian Kernighan y Dennis
Ritchie a mediados de los años 70. La primera implementación del mismo la realizó
Dennis Ritchie sobre un computador DEC PDP-11 con sistema operativo UNIX. C es
el resultado de un proceso de desarrollo que comenzó con un lenguaje anterior, el
BCPL, el cual influyó en el desarrollo por parte de Ken Thompson de un lenguaje
llamado B, el cual es el antecedente directo del lenguaje C. El lenguaje C es un
lenguaje para programadores en el sentido de que proporciona una gran flexibilidad de
programación y una muy baja comprobación de incorrecciones, de forma que el
lenguaje deja bajo la responsabilidad del programador acciones que otros lenguajes
realizan por si mismos. Así, por ejemplo, C no comprueba que el índice de referencia
de un vector (llamado array en la literatura informática) no sobrepase el tamaño del
mismo; que no se escriba en zonas de memoria que no pertenecen al área de datos del
programa, etc.
El lenguaje C es un lenguaje estructurado, en el mismo sentido que lo son otros
lenguajes de programación tales como el lenguaje Pascal, el Ada o el Modula-2, pero
no es estructurado por bloques, o sea, no es posible declarar subrutinas (pequeños
trozos de programa) dentro de otras subrutinas, a diferencia de como sucede con otros
lenguajes estructurados tales como el Pascal. Además, el lenguaje C no es rígido en la
comprobación de tipos de datos, permitiendo fácilmente la conversión entre diferentes
tipos de datos y la asignación entre tipos de datos diferentes, por ejemplo la expresión
siguiente es válida en C:
float a; /*Declaro una variable para numeros reales*/
int b; /*Declaro otra variable para numero enteros*/
b=a; /*Asigno a la variable para entera el numero real*/
Todo programa de C consta, básicamente, de un conjunto de funciones, y una
función llamada main, la cual es la primera que se ejecuta al comenzar el programa,
llamándose desde ella al resto de funciones que compongan nuestro programa.
Desde su creación, surgieron distintas versiones de C, que incluían unas u otras
características, palabras reservadas, etc. Este hecho provoco la necesidad de unificar el
lenguaje C, y es por ello que surgió un standard de C, llamado ANSI-C, que declara
una serie de características, etc., que debe cumplir todo lenguaje C. Por ello, y dado
que todo programa que se desarrolle siguiendo el standard ANSI de C será fácilmente
portable de un modelo de ordenador a otro modelo de ordenador, y de igual forma de
un modelo de compilador a otro, en estos apuntes explicaremos un C basado en el
standard ANSI-C.
El lenguaje C posee un número reducido de palabras reservadas (tan solo 32)
que define el standard ANSI-C. Estas palabras reservadas pueden verse en la tabla
siguiente:
auto break case char const continue default
do double else enum extern float for
goto if int long register return shortEl lenguaje de programación C
signed sizeof static struct switch typedef union
unsigned void volatile while
Tabla 1.1: Palabras reservadas del lenguaje C.
Tema 1 - Introducción.
El lenguaje de programación C fue creado por Brian Kernighan y Dennis
Ritchie a mediados de los años 70. La primera implementación del mismo la realizó
Dennis Ritchie sobre un computador DEC PDP-11 con sistema operativo UNIX. C es
el resultado de un proceso de desarrollo que comenzó con un lenguaje anterior, el
BCPL, el cual influyó en el desarrollo por parte de Ken Thompson de un lenguaje
llamado B, el cual es el antecedente directo del lenguaje C. El lenguaje C es un
lenguaje para programadores en el sentido de que proporciona una gran flexibilidad de
programación y una muy baja comprobación de incorrecciones, de forma que el
lenguaje deja bajo la responsabilidad del programador acciones que otros lenguajes
realizan por si mismos. Así, por ejemplo, C no comprueba que el índice de referencia
de un vector (llamado array en la literatura informática) no sobrepase el tamaño del
mismo; que no se escriba en zonas de memoria que no pertenecen al área de datos del
programa, etc.
El lenguaje C es un lenguaje estructurado, en el mismo sentido que lo son otros
lenguajes de programación tales como el lenguaje Pascal, el Ada o el Modula-2, pero
no es estructurado por bloques, o sea, no es posible declarar subrutinas (pequeños
trozos de programa) dentro de otras subrutinas, a diferencia de como sucede con otros
lenguajes estructurados tales como el Pascal. Además, el lenguaje C no es rígido en la
comprobación de tipos de datos, permitiendo fácilmente la conversión entre diferentes
tipos de datos y la asignación entre tipos de datos diferentes, por ejemplo la expresión
siguiente es válida en C:
float a; /*Declaro una variable para numeros reales*/
int b; /*Declaro otra variable para numero enteros*/
b=a; /*Asigno a la variable para entera el numero real*/
Todo programa de C consta, básicamente, de un conjunto de funciones, y una
función llamada main, la cual es la primera que se ejecuta al comenzar el programa,
llamándose desde ella al resto de funciones que compongan nuestro programa.
Desde su creación, surgieron distintas versiones de C, que incluían unas u otras
características, palabras reservadas, etc. Este hecho provoco la necesidad de unificar el
lenguaje C, y es por ello que surgió un standard de C, llamado ANSI-C, que declara
una serie de características, etc., que debe cumplir todo lenguaje C. Por ello, y dado
que todo programa que se desarrolle siguiendo el standard ANSI de C será fácilmente
portable de un modelo de ordenador a otro modelo de ordenador, y de igual forma de
un modelo de compilador a otro, en estos apuntes explicaremos un C basado en el
standard ANSI-C.
El lenguaje C posee un número reducido de palabras reservadas (tan solo 32)
que define el standard ANSI-C. Estas palabras reservadas pueden verse en la tabla
siguiente:
auto break case char const continue default
do double else enum extern float for
goto if int long register return shortEl lenguaje de programación C
signed sizeof static struct switch typedef union
unsigned void volatile while
Tabla 1.1: Palabras reservadas del lenguaje C.
!!Clikeaka al espacio cideral!!
THEMRFRIKI S.A. Con tecnología de Blogger.
Acerca de mí
About
POPULAR-desc:Trending now:
-
El señor Kuroki es el hombre que hizo este regalo impensable para su esposa. Esta pareja de granjeros llevaban una vida tranquila y feli...
-
Los que tenéis la paciencia de aguantarme (pero porque queréis. ¿eh? que nos conocemos xD) por el blog o por las distintas redes sociales ...
-
Se trata de una tecnología increíblemente potente, compleja y duradera. Un equipo de científicos de la Universidad de Southampton (Reino...
SEARCH
SECTIONS
- :V (1)
- !!!Acertijo divertido post numero 100!! (1)
- ¿Cómo es el ASUS Zenfone Max (1)
- ¿Como hacer una funda de celular? (1)
- ¿Como murio Karl Marx? (1)
- ¿Cómo responder en una entrevista sobre tus defectos? (1)
- ¿Como Saber si una Persona Miente? (1)
- ¿Cómo tener la conciencia tranquila? (1)
- ¿Conoces la historia de la mansión Winchester? (1)
- ¿Cuántos Bits de es un Bitcoin? (1)
- ¿Las letrasF y J del teclado tienen una raya abajo? (1)
- ¿Por qué no se pudren las hamburguesas del McDonald's con el paso del tiempo? (1)
- ¿Pueden reírse los perros? (1)
- ¿Qué controla la aparición de las canas? Los científicos tienen la respuesta (1)
- ¿Que es una cirujia? (1)
- ¿Que pasa cuando nos sonamos los dedos? (1)
- ¿Que pasa? Cuando mueres (1)
- ¿que te parece esto? (1)
- ¿Qué ves? ¿Un pato o un conejo? (1)
- ¿Quien invento la television? (1)
- ¿Te gustaria una cabaña haci? (1)
- ¿Un OVNI en la Antártida? (1)
- ¿whatsaap como se hizo y por que ? (1)
- . (1)
- 'Street Fighter V' (1)
- "El Laberinto del Fauno" en la actualidad (1)
- #Buenmartes (1)
- 1. Cuando en Facebook todo se trataba de “qué estás haciendo” conocimi (1)
- 10 chistes inteligentes (2)
- 10 cosas para prevenir el cancer (1)
- 10 cosas que creras que no son reales (1)
- 10 fotografias extrañas (1)
- 10 ideas creativas (1)
- 10 Mejores Ratones/Mouse para Gamers (1)
- 10 secretos para ser feliz (1)
- 10 trucos de whasapp que no sabias (1)
- 14 de febrero (1)
- 15 cosas extravagantes (1)
- 15 cosas que jamas pensaste conocer (1)
- 15 de febrero (1)
- 15 ideas creativas para decorar tu hogar (1)
- 15 inventos del futuro (1)
- 15 trucos para alargar la vida (1)
- 15 trucos que te ahorran tiempo (1)
- 15 y un exucasas para cuando llegas tarde (1)
- 16 inventos creativos que nunca imaginaste (1)
- 17 Ilustraciones que juegan con tu cerebro (1)
- 20 cosas que no sabias de Dragon Ball Z (1)
- 20 fotos que demuestran la humanidad (1)
- 27 Cosas Hechas Por Gente Troll (1)
- 30 FOTOS EXTRAÑAS TE EMOCIONARAS (1)
- 30 juegos Argenitos (1)
- 30 sugerencias que pueden cambiar tu vida (1)
- 35 Datos que no conocias (1)
- 4 niñas genio (1)
- 42 Fotos Que Parecen Falsas Pero Son Reales (1)
- 5 cosas que afectan tu sexualidad (1)
- 5 cosas que jamas pensarias que existen (1)
- 500 ovejas miralas (2)
- 6 Personas Fueron Usadas Para Entretener En Circos (1)
- 7 errores más comunes en la cocina (1)
- 7 formas de hacer ejercicio (1)
- 7 Maravillas del mundo (1)
- 8 cosas que se inventaron en Korea (1)
- 9 datos interesantes (1)
- 9 estereotipos de los britanicos (1)
- aburrimiento (3)
- aburrimiento. (1)
- Accidentes (1)
- ACERTIJO (2)
- acertijos (1)
- Adolescente trans es obligada a ir al baño como hombre (1)
- agua (2)
- alcoholismo (1)
- Algo asombroso en una lectora de CD (1)
- alimentos (1)
- Alimentos con radioactividad radiacion (1)
- Alimentos contra infecicones urinarias (1)
- Alimentos para cuidar tu pene (1)
- ALIMENTOS PROHIBIDOS PARA TU DIETA (1)
- Alimentos que rejuvenecen (1)
- amor (16)
- amor por su hijo (1)
- android (1)
- Animales alucinantes (1)
- Animales momias (1)
- aplicaciones. (1)
- app (1)
- argentina (1)
- arroba (1)
- Arte en todas partes (1)
- Articulos que te volveran loco (1)
- asiaticos (1)
- Asteroide pasara cerca de la Tierra el 5 de Marzo 2016. (1)
- Audi RS3 R: con 502 CV (1)
- auto (1)
- autos (1)
- Autos de coleccion (1)
- ayuda (2)
- barcelona (1)
- bateria de 48 hs (1)
- bateria larga (1)
- BENEFICIOS DE LOS CEREALES (1)
- Bicarbonato de sodio la pesadilla de la Industria Farmacéutica (1)
- bitcoin (1)
- bits (1)
- blog (2)
- blogger inglish (3)
- bloog (13)
- boca (1)
- bonbam (1)
- boring (2)
- bridges (2)
- britanicos (1)
- Bueno o malo (1)
- Bugatti Chiron (1)
- Cada familia tiene casi 11.000€ en cosas que no usa [INCREÍBLE] (1)
- cambiar la fecha a 1970 de IPhone (1)
- canciones (1)
- Cantar Cumpleaños feliz con Facebook (1)
- capitlos (1)
- Capitulos en vivo de los Simpsons (1)
- Casados con hijos (1)
- catastrofes (1)
- celular (1)
- cerebro (1)
- cerveza (1)
- chaleco (1)
- chica playboy (1)
- Chica playboy que posa con ropa (1)
- chicas hermosas (1)
- Chicas hermosas Parte 1 (1)
- Chicas hermosas Parte 2 (1)
- Chicas hermosas Parte 3 (1)
- Chicas hermosas Parte 4 (1)
- Chicas hermosas Parte 5 (1)
- CHICAS QUE TE VOLARAN LA CABEZA *O* (1)
- chicos que sin dudas nunca ganaron a las escondidas (1)
- chinos (1)
- ciencia (1)
- Cientificos descubren que es necesario contarle a todos que eres vegetariano (1)
- cine (2)
- cine. (1)
- CIUDAD FANTASMA (1)
- Combinar colores (1)
- Comer sano y rico consejos (1)
- Como aprender un idioma (1)
- como cambiar (1)
- Como cuidar y tener un pene en forma (1)
- COMO CURAR LAS CARIES (POST 400) (1)
- como derrotar el miedo (1)
- Como finalizar una relacion (1)
- Como hacer un arma de papel (DIVIERTETE) (1)
- como perder el miedo (1)
- como poner arroba (1)
- Como prevenir el cancer de mama (1)
- Como rastrear un celular (1)
- como reaccion (2)
- Como reciclar (1)
- Como saber si es infiel (1)
- Como ser Gamer (1)
- como superar el miedo (1)
- Cómo Tener la Conciencia Tranquila (1)
- comprar cueros (1)
- comprar cueros en mendoza (1)
- computadoras (4)
- conciencia (1)
- Conoce a los dobles de los superhéroes (1)
- Consejos utiles para ser feliz (1)
- cordoba (1)
- CORTES QUE JAMAS DEBES HACERTE (1)
- cosas curiosas (1)
- cosas extrañas (2)
- Cosas impresionantes (1)
- cosas locas (1)
- Cosas para arepentirse (1)
- Cosas que debes saber (1)
- Cosas que no debes hacer en Tor (1)
- COSAS QUE NO SABIAS DE POKEMON (1)
- cosas raras (5)
- Crea figuras en Ms Dos (1)
- Crees que te observan (1)
- Crencias que te hacen sentir infeliz (1)
- cronicas (1)
- cuanto cuesta (1)
- cuanto pagan los blogs (3)
- cuanto te debe medir el pene para ser normal (1)
- cubbic (1)
- cuentan (1)
- cueros (1)
- culona (1)
- culonas (1)
- curiosas (1)
- daltonico (1)
- Datos curiosos de Albert Einstein (1)
- DATOS CURIOSOS DEL MUNDO (1)
- datos interesantes (1)
- De Lamborghini Aventador a un ¡Batimóvil! (1)
- De extraterreste a humana (1)
- Deborah Ann Woll (2)
- Deborah Ann Woll Parte 1 (1)
- Deborah Ann Woll Parte 2 (1)
- delgados. (1)
- depc (1)
- desaparece (1)
- Descubierto en Israel singular sello egipcio (1)
- DESORDEN MENTAL (1)
- Dia de san valentn (1)
- diego (1)
- Digitalizan un libro que estaba prohibido abrirlo (1)
- dinero facil (1)
- Dioramas que parecen reales (1)
- disco de almacenamiento en 5D con vida casi eterna (1)
- diseño (1)
- doctor house (1)
- dolor (1)
- doncellas (1)
- drones (1)
- earl (2)
- ecenas (1)
- Edward Mordake (1)
- einsten (1)
- El lugar más fantasmal del mundo (1)
- El 26 de marzo no habrá internet (1)
- El acertijo que todos mal responden (1)
- El azúcar bajo la lupa (1)
- El azúcar provoca los mismos efectos que la cocaína (1)
- el golpe. (1)
- El hombre de hielo (1)
- El increible caso de un hombre enamorado (1)
- El juguete más vendido de la historia (1)
- El largo máximo es de 13 cm y me refiero hay abajo (1)
- el mejor blog del mundo (3)
- el mejor blog del mundo. (10)
- El mito de cambiar la fecha a 1970 (1)
- El momento justo (1)
- El monstruo (1)
- El nuevo pokemon imperdible (1)
- El Próximo Assassin's Creed (1)
- El satélite Sentinel-3A (1)
- El ser humano despues de millones de años (evolucion) (1)
- el smartphone con bateria de 48hs? (1)
- El smartphone más barato del mundo (1)
- El tamaño de los dedos de la mano dice de tu personalidad (1)
- El tren soviético que estaba impulsado por turborreactores en 1970 (1)
- emoticon (1)
- Empeza tu día con Pechonalidad (1)
- En Chicago (1)
- En Noruega (1)
- enamorarse (2)
- Encuentran un escondite secreto en su casa y descubren que había alguien viviendo allí (1)
- Encuentran un fallo importante y facebook recompensa con nada (1)
- Enorme dinosaurio en la antartida (1)
- enterrados (1)
- Eres daltónico? entra y descubrelo! (1)
- escalofriante (1)
- ESPIA (1)
- Esta es la mujer de cuerpo perfecto (1)
- Estamos hechos de nada (1)
- esterilidad (2)
- esterotipos (1)
- Estrategias de manipulacion (1)
- Estremecedor: se cansó de que su hermana modelo (1)
- europa (1)
- evolucion (1)
- Evolucion de la tierra (1)
- Evolución de los procesadores intel (1)
- explicacion (1)
- Extraña historia de terror (1)
- Extraños esqueletos (1)
- facebok zonas rurales (1)
- facebook (4)
- facebook criticas (1)
- facebook criticas. (1)
- facebook fake (1)
- facebook falso (1)
- facebook.facebook.com (1)
- Fauna abisal (1)
- Felino anfitrión en un lujoso hotel de Nueva York (1)
- fisica (1)
- Fisico de dia venir a Marte (1)
- Ford Fiesta ST200 (1)
- Forma de ver el universo (1)
- fortaleza (1)
- fotografías que prueban que una barba lo cambia TODO (1)
- Fotos antiguas de famosos (1)
- Fotos de astronautas (1)
- Fotos de Holanda (1)
- Fotos falsas 9 (1)
- francisco (1)
- Frases budista (1)
- frases de san valentin (1)
- Frases en ingles (1)
- Frases para dedicarte a ti mismo (1)
- Frases para un dia gris (1)
- frikis (1)
- FRITAR (1)
- Fue Margot Robbie la mujer mas hermosa de los Oscars? (1)
- Funcionamiento de un Servidor Web (1)
- Fusion de los pokemon (1)
- futruro (1)
- futurista (1)
- futuro (1)
- gammer (2)
- ganzo (1)
- GATO (1)
- gatos (1)
- gente loca (1)
- gente poco cuerda (1)
- get money (1)
- gibraltar (1)
- Google lanzó un buscador para niños (1)
- gps (1)
- grabado en piedra (1)
- Grandes ideas filosoficas de Karl Mark (1)
- Grandes tatuajes (1)
- gratis (2)
- guerra (1)
- Guerra nuclear (1)
- guerras (1)
- guia completa (2)
- guia para ser pro gamer (1)
- Haci viven en Iran (1)
- HECHOS CIENTIFICOS FALSOS (1)
- historia del dia de san valentin (1)
- historia increible (2)
- historias (1)
- Hobbit Hobbit Hobbit Hobbit Hobbit Hobbit Hobbit (1)
- hombre de dos cabezas (1)
- Homunculo=Hombre prequeño (1)
- hospital (1)
- html (1)
- humanos (1)
- humor (1)
- Humor de Viernes (1)
- icono mexicano. (1)
- Ideas de regalos para San Valentin (2)
- Ideas que son estúpidas y geniales (1)
- Iluciones opticas (1)
- imagenes (1)
- imagenes para tu fondo de pantalla (1)
- Imágenes que enfurecerán (1)
- Imágenes y sus breves historias (1)
- imperdible (1)
- impresora 3d (1)
- info (2)
- inglish (1)
- Insomnio (post 200) (1)
- inventar (1)
- IPone (1)
- Ira a un asteroide a traer muestras a la Tierra (1)
- islas (1)
- Islas no tan secretas ;) (1)
- Japón prueba el láser más potente del tercer planeta (1)
- Jennifer Lawrence (1)
- juegos (2)
- Katherine McNamara (1)
- KINKONG (EXISTIO) (1)
- La modelo Jennifer GonzalezLa modelo Jennifer Gonzalez (1)
- La deep web y sus secretos (1)
- La familia y el amor (1)
- La gran carrera académica de Max weber (1)
- la gran verdad de facebook. (2)
- La guerra en los Balcanes (1940-1941) (1)
- La mejor sitcom Argentina? (1)
- La mujer mas hermosa del mundo (mi opinion) (1)
- La rutina (1)
- La torre en la luna (1)
- La verdad de superman (1)
- La vida en 100 años (1)
- Las ciudades fantasma (misterio) (1)
- las cosas muy raras (1)
- Las cosas que afectan a nuestras decisiones (1)
- Las fotos de la serie "Friends" detras de camara (1)
- Las grandes siempre nos mienten y nos dan reciclados (1)
- Las locuras del mar (1)
- Las profesiones que más "enamoran" (1)
- lectura rapida (1)
- lecturas raras (1)
- lenguaje C (2)
- lenguaje C++ (12)
- lenguajes de programacion (6)
- Leyenda del fin del mundo (1)
- libretos (1)
- libros (2)
- lideres mundiales (1)
- Lo mas perfecionista que hayas visto 28 fotos (1)
- Lo que no te cuentan ni Quilmes ni Heineken. (1)
- lo que nunca nos dijieron (1)
- locura (1)
- locuras (1)
- londres (2)
- Los animes de tu infancia (ENTRATE) (1)
- Los elefantes comen solo hierva (1)
- Los enemigos más poderosos de Hulk (1)
- Los extraños animales X (1)
- Los lugares mas peligrosos del mundo (1)
- Los mas nuevo para este 2016 (video juegos) (1)
- Los mejores editores de fotos (1)
- Los mejores juegos de todos los tiempos (1)
- Los mejores superheroes de ahora (1)
- Los opuestos se atraen (1)
- los que tienen gatos entenderán (1)
- Los tatuajes que todos se hicieron (1)
- Macho Alfa (1)
- Magearna (1)
- Magníficas chimeneas que cualquiera quisiera tener (1)
- manipular (2)
- manipular. (1)
- mantener (1)
- mantenimiento. (1)
- maravillas del mundo (1)
- Mark Zuckerberg anunció que Facebook permitirá retransmitir videos en directo (1)
- masturbacion (12)
- masturbacion. (1)
- Max Weber breve biografia (1)
- mejores pelis (1)
- Melanie Pavola (Imagenes) (1)
- mendoza (1)
- mentira (1)
- mexico (1)
- Mia khalifa (1)
- Michelle Lewin (1)
- Microsoft lanza Lumia 650 (1)
- Miedo de las mujeres (2)
- Minions para colorear (1)
- Mira que hermosas mujeres (POST 300) (1)
- Mira que lindas chicas (1)
- misterios (1)
- modelo (1)
- modelosLa chica Playboy que habria conquistado a Cristano Ronaldo (1)
- Monos inteligentes (1)
- Moto reloj (1)
- mrfriki (1)
- muerte (1)
- mujeres hermosas (2)
- Mujeres no juegan Videojuegos (1)
- mundo (1)
- mundo game (1)
- musuclacion (1)
- nacimiento de Miguel Ramos Arizpe (1)
- neandertales (1)
- Need for speed saldra para computadoras (1)
- Newell's (1)
- newells (1)
- niños con cancer (1)
- No podes instalar APK (1)
- normal (1)
- noticas (1)
- noticias (3)
- nuevo (1)
- Nutricion con Calabacin (1)
- nuvos diseños (1)
- objetos cotidianos (1)
- objetos radiactivos (1)
- Ondas gravitacionales (1)
- Ondas gravitacionales en tu cel (1)
- online (1)
- operadores (1)
- organos (1)
- Orinas sentado últimamente (1)
- ovnis (1)
- pack (1)
- pacman (1)
- paises (1)
- paises del mundo (1)
- PAPAS CON QUESO (1)
- PAPAS FRITAS (1)
- para (1)
- Paradojas extrañas (1)
- pareja (1)
- partido (1)
- Payasos de las pelis mas tenebrosas (1)
- Paystation 4 traera de regreso a crash bandicoot (1)
- pc (1)
- peliculas (2)
- pelo propio (1)
- PELUQUERIA (1)
- pene (2)
- pene normal (1)
- pene promedio (1)
- Perder peso sin siquiera intentarlo (1)
- pero ¿nadie se dio cuenta? (1)
- perra (1)
- Perro espia (IMPERDIBLE) (1)
- perros (2)
- personajes historicos a la realidad (1)
- Personaliza tu android con un tono para cada aplicacion (1)
- personalizar (1)
- Personas bañadas en miel (1)
- Perturbador edificio (1)
- php (3)
- PHP frente a otros lenguajes (1)
- phyton (1)
- pie grande (1)
- PITBULL ATACA (1)
- Placer visual Parte 1 (1)
- Placer visual Parte 2 (1)
- Placer visual Parte 3 (1)
- playboy (3)
- poemas de san valentin (1)
- POKEMON (1)
- Poné a prueba tu atención: intentá encontrar la letra T (1)
- Por que sentimos vibrar el telefono (1)
- portadas (1)
- post (1)
- preguntas (2)
- Preguntas y respuestas (1)
- prehistoria (1)
- Presona productiva vs persona ocupada (1)
- Profesores que saben trollear (1)
- programacion (17)
- psicologia. (1)
- publicidad (1)
- publicidad engañosa (1)
- PUBLICIDAD ENGAÑOZA !!!RIETE!!! (1)
- Qué animal eres de acuerdo a tu fecha de nacimiento (1)
- que es un bitcoin (1)
- que no pagan (1)
- Que pasara con el mundo en 100 años (1)
- Que saber del nuevo libro de Harry Potter (1)
- que se festeja (1)
- Que te alcanza con un dolar en el mundo (1)
- Quienes son mejor los perros o los gatos (1)
- quilmes (1)
- Racismo en Disney (1)
- raras (1)
- Raza distinta de Hobbit (1)
- Razas de extraterrestres (1)
- ready (2)
- reco (1)
- redes sociales (2)
- Reflexion de un dia gris (1)
- Reflexion de la vida (1)
- Reflexion sobre la felicidad (1)
- reflexiones (3)
- relfexion de amigos y conocidos (1)
- reloj (1)
- reloj atomico (1)
- Rene Descartez (1)
- retrocedieron los precios de soja y trigo (1)
- revista (1)
- revistas (1)
- reyes (1)
- rico (1)
- Robots "mueren" al entrar en Fukushima (1)
- rock. (1)
- rubik (1)
- rumana loca (1)
- Salud de tu pene (1)
- san valentin (1)
- se ponen serios frente al latente colapso sueco (1)
- Se pueden clonar los dinosaurios (1)
- secretos (2)
- Secretos de la Nutella (1)
- Secretos de las aerolineas (1)
- Secretos de los videojuegos (1)
- seguidores (1)
- según la ciencia (1)
- Seguro te gustan estos baños (1)
- sexo (1)
- Si te gustan las rellenitas (1)
- Si tenes Tatuajes Podes tener Uveitis! (1)
- Simbolos graciosos para tu Facebook (1)
- Slenderman historia (1)
- smartphone (1)
- soldados (1)
- Sony dibujos (1)
- Sorprenderte a ti mismo y a tus ami (1)
- sorpresa (1)
- stream (1)
- Sueños eroticos (1)
- sumerios (1)
- tareas (1)
- Tecnicas de manipulaicon (1)
- tecnologia (5)
- tecnologia. (1)
- Temas para empezar el viernes (1)
- Tenes una PC vieja (RENOVALA) (1)
- Teorias conspiradoras (1)
- Terremoto de japon (1)
- terror (1)
- tetas (1)
- the mr friki (3)
- The Walking Dead' (1)
- themrfriki (1)
- Titulos de libros (1)
- todo el mes de febrero: (1)
- top five (1)
- TOP FIVE ! cosas que no sabes! (1)
- trampas (1)
- transformaciones (1)
- Trastornos de la personalidad (1)
- tributos (1)
- Trolleo para facebook (1)
- Trucos para levantar el animo (1)
- tu (1)
- turismo (1)
- twiter (2)
- Twitter actualizará las líneas de tiempo incorporadas a la web (1)
- ultimas noticias (6)
- Un asteroide el 5/3/2016 (1)
- Un efecto visual alucinante (1)
- Un meteoro impactó a la Tierra (1)
- Un nuevo planeta (1)
- Una hermosa emo (1)
- Una solucion contra el hambre (1)
- Vacaciones en Chile (1)
- Vegeta y Bulma extraño y incierto misteri (1)
- VENEZOLANA ULTRA SABROSA!!!!!!! (1)
- victorian (2)
- Videos para reparar celulares (1)
- Vikingos y sus secretos (1)
- Violencia (1)
- vista (1)
- Vitamina B12 (1)
- Wallpaper full Hd (1)
- yei (1)
- yetis (1)
- zonas herogenas (2)
LATEST
3-latest-65px
BTemplates.com
Popular Posts
-
El señor Kuroki es el hombre que hizo este regalo impensable para su esposa. Esta pareja de granjeros llevaban una vida tranquila y feli...
-
Los que tenéis la paciencia de aguantarme (pero porque queréis. ¿eh? que nos conocemos xD) por el blog o por las distintas redes sociales ...
-
Se trata de una tecnología increíblemente potente, compleja y duradera. Un equipo de científicos de la Universidad de Southampton (Reino...
-
El hallazgo, en la gruta de Gorham, situada en un acantilado frente al Mediterráneo, pone a los neandertales más cerca del hombre moderno. ...
-
asera Muy hot y mojada su concha ! DISFRUTE DE UNA BUENA JALADA DE GANZO CON ESTA RICA CASERA.
-
Carolina londoño es una chica muy famosa en instagram , también muy bella nació el 7 de Septiembre de 1990 y actualmente tiene 25 a...
-
Google ofrecerá este formato a anunciantes, que solo funcionará cuando se vean videos de YouTube en dispositivos móviles Según ComScor...