Programar en Mac 01: Un programa es una serie de instrucciones (y III)

Programar en Mac 01: Un programa es una serie de instrucciones (y III)

24 marzo, 2010 |  by  |  Programar en Mac

Finalizamos la Lección 01 de Programar en Mac:

Operaciones Matemáticas

En los ejemplos anteriores hemos realizado una operación de multiplicación. Utiliza los siguientes símbolos oficialmente conocidos como “operadores” para realizar tus operaciones matemáticas:

  • + para suma
  • - para la resta
  • / para la división
  • * para la multiplicación

Utilizando los operadores podremos realizar un enorme número de cálculos. Si echas un vistazo al código que realizan los programadores profesionales, te darás cuenta de un par de peculiaridades. Probablemente por que son algo perezosos:

En lugar de escribir x = x + 1; los programadores suelen utilizar algo como [9] o [10]:

// [9]

x++;

// [10]

++x;

En ambos casos, significa: incrementar x con otra. En algunas ciscunstancias es importante si las ++ está antes o delante del nombre de la variable. Véanse los siguienes ejemplos [11] y [12]:

// [11]

x = 10;

y = 2 * (x++);

// [12]

x = 10;

y = 2 * (++x);

En el ejemplo [11] cuando todo se expresa y se realiza, y es igual a 20 y x es igual a 11. Sin embargo, en [12.2] x se incrementa un número antes de la multiplicación por 2. Por lo tanto en el final, x = 11 e y = 22. El código del ejemplo [12] es equivalente al ejemplo [13].

// [13]

x = 10

x++;

y = 2 * x;

Por lo tanto el programador ha juntado dos códigos en uno. Personalmente, creo que eso hace que el programa sea mucho más difícil de leer. El código está bien formulado pero podría haber un “bug” al acecho.

Paréntesis

Sería algo anticuado para ti si volvieras a tener que pasar la secundaria, pero los paréntesis pueden ser usados para determinar el orden en que las operaciones deben ser realizadas. Por orden, * y / tienen preferencias sobre + y -. Por lo tanto 2 * 3 + 4 es igual a 10. Usando el paréntesis, puedes forzar a que la suma se realice primero: 2 * (3 + 4) = 14.

Division

El operador “división” requere una atenció especial porque supone na pequeña diferencia si es utilizada con enteros o con decimales. Mira los siguientes ejemplos:

// [14]

inx x = 5, y = 12, ratio;

ratio = y / x;

// [15]

float x = 5, y = 12, ratio;

ratio = y / x;

En el primer caso [14] el resultado es 2. Sólo en el segundo caso [15] el resultado es el que probablemente esperamos: 2,4.

Variables de dos opciones (Booleans):

Un “boolean” es una variable lógica de “verdadero” o “falso”. 1 y 0 son los estándares de “verdadero” o “falso” y son usadas de manera intercambiable y pueden ser consideradas de manera equivalente:

Verdadero (True) 1

Falso (False) 0

Se usan habitualmente para evaluar cómo realizar una acción dependiendo de la variable  dicotómica (o boolean) de una determinada variable o función.

Módulos

Un operador con el que probablemente no estás tan familiarizado es % (modulus). No funciona como probablemente te esperas: el operador “modulus” no es un cálculo de porcentajes. El resultado del operador % es el resto de la división de enteros del primer operando entre el segundo (si el valor del segundo es cero el comportamiento de % es indefinido).

// [16]

int x = 13, y = 5, remainder;

remainder = x % y;

Ahora el resultado de este “remainder” es igual a 3 porque x es igual a 2 * y + 3. El resto de la división es 3.

Aquí hay otros tantos ejemplos de modulus:

21 % 7 es igual a 0

22 % 7 es igual a 1

23 % 7 es igual a 2

24 % 7 es igual a 3

27 % 7 es igual a 6

30 % 2 es igual a 0

31 % 2 es igual a 1

32 % 2 es igual a 0

33 % 2 es igual a 1

34 % 2 es igual a 0

50 % 9 es igual a 5

60 % 29 es igual a 2

Puede usarse de múltiples maneras posibles, pero date cuenta de que sólo funciona con números enteros.

Un uso común para el “modulus” es determinar si un número entero es “par” o “impar”. Si es par entonces el modulus de dos será igual a 0. Y en el caso contrario, debe equivaler a otro valor. Por ejemplo:

// [17]

int anInt;

// Un código que establece un código para anInt

if ((anInt % 2) = 0)

{

NSLog(@”anInt is even”);

}

else

{

NSLog(@”anInt” is odd”);

}

 

6 Comments


  1. Buena iniciativa, y por lo que he estado ojeando está explicado magníficamente, pero a titulo personal, creo que objective-c es un lenguaje algo “duro” para principiantes.

    • pues yo de momento estoy encantada! y esperando siempre con ansia la próxima lección.

    • Creo que todos los lenguajes de programación son duros al principio. Al menos los que son lenguajes “de verdad”, que sirven para programar cualquier cosa que se te pase por la cabeza. Lo digo porque supongo que otros lenguajes como Javascript serán algo más sencillos por estar limitados en funcionalidades. Por ahora lo llevo bien, aunque lo veo demasiado “matemático”. Supongo que tiene que ser así, pero cuando avancemos espero que no lo sea tanto ;)

      • Lo de las matemáticas es por ser las operaciones básicas, tienes un montón de posibilidades en C, dentro de poco pondremos unos programas ejemplo que podréis compilar vosotros mismos para ir hurgando y haciendo vuestras cositas en C.

        Aún así, no te preocupes, esto es la base. C es más rollo, es un lenguaje que ejecuta una línea una tras otra, luego veremos como se programa hoy día con Objective-C. Es mucho más divertido y un poco más complejo, pero si tienes una buena base de C te resultará más sencillo. Todo lo aprendido en estos tutoriales de C se puede aplicar perfectamente a ObjC.

        Permaneced atentos, que este fin de semana llega la siguiente edición de “Programar en Mac”

  2. (un detalle: en [14] pone inx x=… donde supongo que debería poner int x=… Es que me ha despistado)

    Por lo demás muy bien. Acabo de tropezar con este blog y me ha llamado la atención esta serie de hilos. Igual me acabo enganchando y todo.

  3. Enhorabuena por este hilo de posts!
    Seguid! :D

Trackbacks

  1. Programar en Mac 01: Un programa es una serie de instrucciones (y …

Leave a Reply