16 sept. 2012

Objective-C | Tipos de Datos y Operadores

Parte de la serie de tutoriales de Desarrollo de Aplicaciones para iOS

Objective-C, al igual que muchos otros lenguajes como C++, C#, PHP o Java, está basado en el lenguaje de programación C, por lo que si has utilizado alguno de estos lenguajes no te será muy difícil adaptarte a él (al menos en términos de tipos y operadores).

Aun así, Objective-C no fue creado desde cero, como los demás, sino que fue creciendo poco a poco en una especie de "capas" construidas sobre el lenguaje C. Por esta misma razón, guarda muchas más similitudes con C que cualquier otro de los lenguajes mencionados.

Tipos de Datos
En Objective-C, como en cualquier otro lenguaje, existe una serie de tipos de datos primitivos que nos permiten representar los distintos tipos de información que manejará nuestro código. Además, estos tipos nos habilitan para la construcción de otros más complejos.

Al estar construido sobre el lenguaje de programación C, Objective-C comparte la mayoría de estos tipos de datos con dicho lenguaje. La única excepción es el tipo de dato booleano, el cual no existía en un principio en el lenguaje C.

Los ingenieros que trabajaron en Objective-C crearon su propia implementación de los booleanos y, más tarde, se añadiría este tipo de dato al lenguaje C. Por esta razón, Objective-C cuenta con dos formas diferentes de representar tipos de datos booleanos, BOOL y bool. El primero comúnmente tomará los valores de YES o NO, a diferencia del true y false a los que estamos acostumbrados, los cuales son utilizados por la segunda opción.

La siguiente tabla muestra los tipos de datos primitivos en Objective-C y el espacio que ocupa cada uno.

Tipo Descripción Tamaño
char Caracter 1 byte
int Número entero 4 bytes
float Número de punto flotante de precision simple 4 bytes
double Número de punto flotante de precisión doble 8 bytes
short Número entero (menor tamaño) 2 bytes
long Equivale a un entero en la arquitectura del iPhone. 4 bytes
long long El doble de un long 8 bytes
BOOL Boolean 1 byte
bool Booleano 1 byte


Para ver el tamaño real de cada tipo de dato en las distintas arquitecturas de Mac OS X y iOS, se puede correr el siguiente código. (Asegúrate de estar trabajando en un proyecto del sistema que deseas analizar.)
NSLog(@"Primitive sizes:");

NSLog(@"The size of a char is: %d.", sizeof(char));

NSLog(@"The size of short is: %d.", sizeof(short));

NSLog(@"The size of int is: %d.", sizeof(int));

NSLog(@"The size of long is: %d.", sizeof(long));

NSLog(@"The size of long long is: %d.", sizeof(long long));

NSLog(@"The size of a unsigned char is: %d.", sizeof(unsigned char));

NSLog(@"The size of unsigned short is: %d.", sizeof(unsigned short));

NSLog(@"The size of unsigned int is: %d.", sizeof(unsigned int));

NSLog(@"The size of unsigned long is: %d.", sizeof(unsigned long));

NSLog(@"The size of unsigned long long is: %d.", sizeof(unsigned long long));

NSLog(@"The size of a float is: %d.", sizeof(float));

NSLog(@"The size of a double is %d.", sizeof(double));



NSLog(@"Ranges:");

NSLog(@"CHAR_MIN:   %c",   CHAR_MIN);

NSLog(@"CHAR_MAX:   %c",   CHAR_MAX);

NSLog(@"SHRT_MIN:   %hi",  SHRT_MIN);    // signed short int

NSLog(@"SHRT_MAX:   %hi",  SHRT_MAX);

NSLog(@"INT_MIN:    %i",   INT_MIN);

NSLog(@"INT_MAX:    %i",   INT_MAX);

NSLog(@"LONG_MIN:   %li",  LONG_MIN);    // signed long int

NSLog(@"LONG_MAX:   %li",  LONG_MAX);

NSLog(@"ULONG_MAX:  %lu",  ULONG_MAX);   // unsigned long int

NSLog(@"LLONG_MIN:  %lli", LLONG_MIN);   // signed long long int

NSLog(@"LLONG_MAX:  %lli", LLONG_MAX);

NSLog(@"ULLONG_MAX: %llu", ULLONG_MAX);  // unsigned long long int

Más adelante revisaremos algunos de los tipo de datos más complejos que existen en Objective-C y cuáles son sus usos principales.


Operadores
Objective-C permite el uso de distintos operadores para trabajar con los datos de nuestra aplicación. Puedes encontrar una lista de estos operadores ordenados por funcionalidad en la siguiente liga:
-http://www.dummies.com/how-to/content/objectivec-operators.html

3 comentarios:

  1. Oh, interesante eso de la ausencia del tipo de dato booleano en C. Sobre BOOL y bool no recuerdo la diferencia, si es que existe o es cuestiôn de adaptaciôn. :3

    ResponderEliminar
  2. Yo tampoco tenía idea de que en C no existiera el dato bool. Y yo creí que había aprendido POO al 100! jajaja.

    ResponderEliminar