Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Mobile Development

Aprender Objective-C: Día 1

by
Difficulty:BeginnerLength:LongLanguages:
This post is part of a series called Learn Objective-C.
Learn Objective-C: Day 2

Spanish (Español) translation by Elías Nicolás (you can also view the original English article)

Bienvenido a mi serie sobre cómo abordar el increíble lenguaje que es Objective-C. A lo largo de esta pequeña serie de artículos, mi objetivo es llevarte de ninguna experiencia previa con Objective-C a usarla con confianza en tus propias aplicaciones. Esto no es un trabajo urgente - así que no esperes sólo navegar por los conceptos básicos y estar lejos - vamos a estar pasando no sólo los elementos esenciales, sino también las mejores prácticas que puede aplicar para asegurar su código es lo mejor que puede ser. ¡Vamos a saltar directamente!

¿Qué es Objective-C?

Si estás leyendo esta serie, entonces me arriesgaré a suponer que ya lo sabes, pero para aquellos que no lo hacen, no te preocupes, ya que al final de esta parte sabrás lo que es al revés y de adentro hacia afuera.

Objetivo-C es un lenguaje orientado a objetos que se encuentra en la parte superior del lenguaje C (pero apuesto a que adivinó esa parte!). Su principal uso en la informática moderna está en Mac OS X como un lenguaje de escritorio y también en el iPhone OS (o como se le llama ahora: iOS). Era originalmente el idioma principal para NeXTSTEP OS, también conocido como el sistema operativo que Apple compró y descendió Mac OS X de, lo que explica por qué su hogar principal se encuentra hoy en los sistemas operativos de Apple.

Debido a que Objective-C es un superconjunto estricto de C, somos libres de usar C en un archivo Objective-C y compilará bien. Dado que cualquier compilador de Objective-C también compilará cualquier código C recto que se haya pasado a él, tenemos toda la potencia de C junto con el poder de los objetos proporcionados por Objective-C.

Si estás un poco confundido en este punto, piensa en ello de esta manera: todo lo que C puede hacer, Objective-C puede hacerlo también, pero no al revés.

¿Qué necesitaré?

A lo largo de esta serie, no nos centraremos en la creación de aplicaciones para el iPhone. En su lugar, nos concentraremos más en el lenguaje en sí y por esta razón todo lo que necesitará es un Mac con un compilador como GCC. Si ha instalado las herramientas de desarrollador de Apple (Xcode, Interface Builder, etc), entonces GCC ya debería estar instalado. Si no es así, dirígete al sitio web de desarrolladores de Apple y consigue una copia gratuita.

En cuanto a los prerrequisitos ir, aunque no espero que tenga un fondo completo en informática, un conocimiento de la programación en general o de C en particular, sin duda sería un bono. Si no tiene mucha experiencia previa en programación, no se preocupe, ¡lo entendera todo en poco tiempo!

Si está ejecutando Windows (lo cual es poco probable ya que este tutorial está dirigido a desarrolladores de iPhone) todavía puede compilar Objective-C en su sistema usando un compilador como CygWin o MinGW. Esta serie de tutoriales está dirigida a usuarios de Mac, pero si está utilizando Windows y encuentra cualquier problema, asegúrese de dejar un comentario y veré si puedo ayudar.

Compilando su código

Antes de que pueda ver su código en acción, debe ser capaz de compilarlo en algo ejecutable. Esperamos que ahora tenga su copia de GCC listo. La compilación es realmente fácil, un simple comando de línea.

NOTA:
Compilar es el proceso de "traducir" un lenguaje de alto nivel, como Objective-C o PHP, en un código de máquina de bajo nivel que puede ser procesado por una computadora cuando se ejecuta el programa.

Todos los programas que vemos ejecutándose en nuestro sofisticado sistema operativo Mac OS consisten en una serie de instrucciones que se muestran visualmente en una interfaz gráfica de usuario (GUI). En contraste con la interacción del programa GUI con un ratón que la mayoría de nosotros conocemos, es posible emitir comandos directamente al sistema operativo a través de una interfaz basada en texto conocida como "terminal" o "línea de comandos".

La aplicación de línea de comandos en Mac OS se llama Terminal y se puede encontrar en Aplicaciones -> Utilidades. Continúe y abra Terminal ahora (también puede buscarlo en Spotlight). Terminal tiene varios comandos básicos que debe tener en cuenta con el fin de utilizarla correctamente. Uno de los comandos más importantes que debe saber es cd, que significa "cambio de directorio". Este comando nos permite cambiar en qué punto del sistema de archivos Terminal está leyendo. ¡No podemos simplemente decirle a Terminal que compile nuestro archivo si no lo mostramos donde está el archivo primero! Para cambiar a un directorio deseado, puede utilizar una ruta completa tal como:

También puede utilizar rutas de acceso relativas, lo que le permite escribir sólo un nombre de carpeta única en algunos casos. Por ejemplo, si ya está en la carpeta Escritorio, simplemente puede escribir:

Para llegar a la carpeta de prueba Test.

¿Qué pasa si quieres ver dónde estás actualmente? El nombre de la carpeta inmediata se muestra antes de la solicitud (donde escribes). Por ejemplo, si su mensaje dice: Dan- Walkers-MacBook: Desktop iDemonix Puedo asumir que estoy en la carpeta de Escritorio. Si no está seguro, también puede escribir pwd para mostrar la ruta absoluta de la ubicación actual.

Si desea listar qué archivos y carpetas están en la carpeta actual, utilice el comando list: ls. Finalmente, si desea subir un directorio a una carpeta padre, escriba "cd ..". Por lo tanto, si estuviéramos en la carpeta Test, que está dentro de la carpeta Desktop, pero queríamos ir a la carpeta Desktop, podríamos escribir cd .. para ir al directorio padre, Desktop. Si queríamos llegar al directorio de inicio, escribiríamos cd ../ .. para subir dos niveles. Alternativamente, para llegar al directorio de inicio sólo puede escribir cd ~ desde cualquier lugar.

Cuando se utiliza la aplicación Terminal, la compilación tiene este aspecto:

Probablemente ya has adivinado cómo funciona: inputfile.m contiene nuestro código (.m es la extensión utilizada para los archivos de Objective-C) y -o le dice a gcc que queremos que nuestro archivo ejecutable sea llamado lo que se especifique a continuación, que en el ejemplo anterior es archivo de salida outputfile. Para ejecutar nuestra creación después de compilar, simplemente escribimos:

Simple.

Cuando compila, el compilador generará errores, notificaciones o advertencias relacionadas con la sintaxis de su código. Los errores generados al compilar son comprensiblemente conocidos como errores de "tiempo de compilación", y esto suele ser la parte más estresante de escribir una aplicación (especialmente cuando el código no está compilando porque coloca un solo carácter en el lugar equivocado o olvidó terminar un Línea con un punto y coma). La compilación también puede tomar tiempo cuando se están escribiendo grandes aplicaciones que consisten en múltiples archivos, lo que también es otra razón por la que la compilación puede ser una experiencia tediosa. Este hecho ha dado lugar a una broma programador omnipresente a menudo visto en las camisetas de los hombres con barbas descuidadas: "No estoy haciendome el vago. Mi código está compilando. "

Lo basico

Objetivo-C en sí no es tan difícil de aprender. Una vez que usted consigue a los apretones con los principios básicos, usted puede escoger el resto para arriba mientras que usted va adelante bastante fácilmente. Usted necesita tener una comprensión de los fundamentos de la programación C, sin embargo, y eso es lo que el resto de este tutorial cubrirá.

Veamos una aplicación básica en C:

Toda esta aplicación hará cuando se ejecuta es mostrar la cadena "Hello World" en Terminal y salir.

NOTA:
Curioso acerca de la declaración "return 0"? Como le dijimos al compilador que la función main() devolverá un entero, devolveremos el valor entero constante '0' al final de la función. Por convención, devolviendo '0' señala al programa que nuestro programa terminó la ejecución sin errores.

Para probar esto por ti mismo, enciende Xcode y has una nueva clase Objective-C. Elimina todo el código que Xcode te da por defecto y pega el código anterior. Una vez que lo haya hecho, puede compilarlo usando Terminal. Abra Terminal y cambie a la ubicación donde se encuentra su archivo, si se guardó en el escritorio, simplemente escriba cd desktop para que Terminal esté leyendo desde su Escritorio. A continuación, escriba este comando:

Su programa debe compilar sin errores. Para ejecutarlo, simplemente escriba:

A continuación, pulsa enter.

Impresionante, ¿qué sucedió realmente allí? Bueno, primero importamos una biblioteca llamada stdio que gestiona las funciones estándar de entrada / salida (input output), como printf(). A continuación, crear una función llamada main que debe devolver un int o entero que es básicamente un número sin punto decimal. A continuación, utilizamos la función printf () para enviar'Hello World' al terminal. El \n que usamos le dice a Terminal que coloque una nueva línea después del texto. Finalmente, devolvemos 0 (recuerde que hemos dicho principal debe devolver un entero) que dice el sistema operativo todo fue bien. Usamos el nombre main porque esto se activa automáticamente cuando se ejecuta el programa.

Hasta ahora todo debería ser bastante sencillo: queríamos escribir algún texto en Terminal, así que importamos una biblioteca con una función para escribir texto, luego usamos una función de esa biblioteca para escribir el texto. Imagine que lo que importa es una biblioteca física y printf () es uno de los libros disponibles.

Variables

Soldando a continuación, ahora estamos en las variables. Una de las cosas fundamentales que necesitamos ser capaces de hacer en nuestras aplicaciones es temporalmente almacenar datos. Lo hacemos usando variables, que son contenedores que pueden contener varios tipos de datos y ser manipulados de varias maneras. Utilizamos variables para almacenar todo tipo de datos, pero primero debemos decirle al compilador lo que vamos a almacenar en él. Estas son algunas de las variables más importantes que debe conocer por ahora:

  • int - para almacenar números enteros (números sin punto decimal)
  • char - para almacenar un carácter
  • float - para almacenar números con puntos decimales
  • double - igual que un flotador, pero el doble de precisión

Cuando no estamos usando variables, usamos frecuentemente constantes. Una constante nunca cambiará: siempre sabemos cuál será el valor. Si combinamos constantes obtenemos una expresión constante, que siempre conoceremos el resultado. Por ejemplo:

Esta es una expresión constante, 123 + 2 siempre será igual a 125, no importa qué. Si sustituimos una constante por una variable, la nueva expresión sería así:

Debido a que i es una variable dinámica, no sabemos definitivamente el resultado de esta ecuación. Podemos cambiar i a lo que queramos y obtener un resultado diferente. Esto debería darle una idea de cómo funcionan las variables.

Una cosa que todavía tenemos que saber es ¿cómo mostrar las variables como mostramos "Hello World" de arriba? Todavía usamos la función printf (), excepto que cambia un poco esta vez:

Lo que hemos hecho aquí se le dice a la función printf() donde queremos que aparezca nuestro entero, entonces donde se puede encontrar. Esto es diferente a muchos de idiomas tales como PHP donde usted podría apenas colocar la variable en el texto.

No estamos limitados a una sola variable en printf(). La función puede aceptar varios parámetros separados por comas, por lo que podemos pasar en tantos como tenemos signos de formato en el texto. Arriba usamos %i como un signo de formato porque estábamos incluyendo un entero. Otras variables tienen sus propios especificadores de formato:

  • %i - integer
  • %f - float
  • %e - double
  • %c - char

Una cosa que quiero tocar antes de seguir adelante es el tipo de char. Una variable de tipo char sólo puede manejar caracteres individuales, cuando eso es todo lo que necesitamos esto es genial, pero si necesitamos una cadena de texto es bastante inútil. Para conseguir esto, usamos algo llamado una matriz de caracteres.

Imagínese que tiene una oración de 11 caracteres (como 'Hello World' - no olvide incluir el espacio), una matriz de caracteres es como tener 11 caracteres pero todos pegados. Esto significa que el valor de la matriz de caracteres es 'Hello World', pero char[0] es 'H'. Entre paréntesis está el char que estás después, porque ponemos 0 obtenemos el primer carácter. No olvides que contar en arreglos normalmente empieza en 0, no en 1.

Condicionales

Cuando una aplicación necesita tomar una decisión, usamos un condicional. Sin condicionales, cada vez que ejecutaba su aplicación sería exactamente lo mismo, como ver una película. Tomando decisiones basadas en variables, entradas o cualquier otra cosa, podemos hacer que la aplicación cambie - esto podría ser tan simple como un usuario ingresando un número de serie o presionando un botón más de 10 veces.

Hay algunos tipos diferentes de condicionales, pero por ahora sólo vamos a ver los más comunes y básicos: la declaración if. Una sentencia if hace lo que suena, verifica si algo es verdadero, entonces actúa de cualquier manera. Por ejemplo:

Si 1 es igual a 1, entonces todo lo que está entre los corchetes se ejecuta. También podría preguntarse por qué usamos dos signos igual en lugar de uno. El uso de dos signos iguales es un operador de igualdad, que comprueba si los dos son iguales entre sí. Si usamos un solo signo de igualdad entonces estamos tratando de asignar el primer valor al segundo valor.

Arriba, ya que 1 siempre será igual a 1, lo que esté en los corchetes sería ejecutado. ¿Y si queríamos hacer algo si esto no era verdad? Ahí es donde viene else. Utilizando else podemos ejecutar código cuando el condicional devuelve false, así:

Por supuesto, en la vida real, no estaríamos comprobando que 1 es igual a 1, pero el punto se hace. Considere una aplicación que se cierra si presiona el botón cerrar tres veces (molesto pero relevante). Usted podría comprobar en los corchetes para ver cuántas veces se ha presionado. Si es inferior a 3, entonces el bloque de otro puede ejecutar código para decirle al usuario cuántas veces más debe presionar el botón para salir.

Vamos a ver condicionales más cuando llegamos a utilizarlos en nuestras aplicaciones más adelante en la serie.

Bucles

Ahora vamos a investigar un bucle de programación. Los bucles, como su nombre indica, vamos a recorrer un pedazo de código y ejecutarlo varias veces. Esto puede ser muy útil en situaciones como poblar una lista o repetir un código hasta que un condicional devuelva true.

Hay tres tipos de bucles, en orden de lo más común: for, while, y do. Cada uno se utiliza para repetir la ejecución de un bloque de código, pero funcionan de manera diferente. Aquí hay ejemplos de cada uno:

Esto puede parecer un poco complejo al principio, pero realmente no lo es. En los paréntesis después de es el iniciador, un condicional, y la acción. Cuando se inicia el bucle for, ejecuta el iniciador, que en nuestro caso anterior establece x a 0. Cada vez que se ejecuta el bucle (incluso la primera vez) comprueba el condicional, que es "es x menor que i?" Finalmente, después de cada bucle a través del código, el bucle ejecuta la acción - que arriba incrementa x por uno. Sencillo. Puesto que x aumenta cada vez una vez, x pronto ya no será menor que i y el bucle terminará y el programa seguirá funcionando.

Similar al bucle for, el bucle while ejecutará el código entre los paréntesis hasta que el condicional sea falso. Puesto que x es 0 y no lo cambiamos en el bloque de código, lo anterior se ejecutaría para siempre, creando un "bucle infinito". Si desea incrementar x, entonces en el caso de nuestro bucle while haría esto entre los corchetes:

El bucle do es esencialmente el bucle while, excepto el condicional se ejecuta después del bloque de código. Lo que esto significa es cuando se utiliza un bucle do, el código está garantizado para ejecutarse al menos una vez:

Punteros

Los punteros pueden causar mucha confusión con los recién llegados a la programación o simplemente los recién llegados a C. También no es inmediatamente claro para algunas personas cómo son útiles, pero poco a poco aprenderá a lo largo del tiempo. Entonces, ¿qué es un puntero?

Como su nombre indica, los punteros apuntan a una ubicación. En concreto, las ubicaciones en la memoria de la computadora. Piense en ello de esta manera, cuando creamos una variable (digamos que es un entero llamado 'foo' como es tan popular con la teoría de programación) y le damos un valor de, por ejemplo 123, tenemos justo eso - una variable con un valor de 123. Ahora, si configuramos un puntero a foo, entonces tenemos una forma de acceder indirectamente a él. Es decir, tenemos un puntero de tipo int que apunta a foo que tiene el valor '123.' Esto se haría en código así:

¿Claro como el barro? ¡No se preocupe! Los punteros son difíciles - a menudo considerado como la cosa más difícil de aprender al recoger el lenguaje C. Sin embargo, los punteros se convertirán en una segunda naturaleza para ti, y habrá más punteros dentro de Objective-C en esta serie.

Terminando

Acabas de recibir una descripción general de los fundamentos del lenguaje C. Esta parte de la serie tenía la intención de ser una guía rápida sobre C para prepararlo y prepararlo para el resto de la serie, y debería haber sido especialmente útil para aquellos que ya están familiarizados con la programación en otro lenguaje. Si usted es nuevo en la programación en general o todavía está en duda acerca de cualquier básico de C, vuelva a leer lo anterior y no dude en dejar preguntas en los comentarios.

Antes de la próxima vez, asegúrese de intentar y compilar sus propios programas utilizando el código anterior. Establezca pequeños retos, como hacer un bucle ejecutar 10 veces y contar cada vez a través del bucle utilizando printf. No hay ningún daño en probar y experimentar, si sale mal, entonces es probablemente aún mejor, ya que le llevará en el camino correcto para solucionar su propio código.

Reto

Para esta semana, terminaremos con un desafío simple. Debe crear tres programas que cuenten hasta 10 utilizando cada tipo de bucle. Puesto que usaremos bucles con frecuencia en Objective-C, es bueno que aprendamos a crearlos de memoria. Eso debería ser bastante fácil, así que trate de contar de 10 a 1 después (si ++ incrementa por uno, ¿cuál podría ser el código para decrementar en 1?).

La próxima vez

En la próxima parte de esta serie, voy a proporcionar una visión general de cómo funciona Objective-C. También examinaremos la programación orientada a objetos y sus usos, así como profundizaremos en clases, instancias, métodos, herencia y más.

La próxima semana debería ayudarte a entender lo que hace que Objective-C sea un lenguaje tan grande y por qué realmente extiende el lenguaje C de muchas maneras útiles.

Alguna pregunta

Si tiene alguna pregunta, puede dejar un comentario debajo de donde intentaré y seguir revisando o puede dispararme un mensaje en Twitter (http://www.twitter.com/iDemonix) donde le respondere a usted lo antes posible.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.