Curso Básico Objective C: Variables básicas y Operadores Aritméticos

Las variables básicas de Objetive C funcionan como en C, veamos los tipos básicos:

int

    Declaración:

    int entero;

    Asignación:

         
            entero=1;
            NSLog(@”%d”,entero);

    short, long, unsigned

            short corto=3;
            NSLog(@”%d”,corto);
            
            long largo=33424234;
            NSLog(@”%ld”,largo);
            
            unsigned long muylargo=21312313424545;
            NSLog(@”%ld”,muylargo);

    Coma flotante (con decimales): float, double

            float condecimales=3.3f;
            NSLog(@”%f”,condecimales);

            

            double conmuchosdecimales=3.34453543546;

            NSLog(@”%f”,conmuchosdecimales);

    Booleanos

            BOOL primera=YES;
            NSLog(@”%d”,primera);
            primera=NO;
            NSLog(@”%d”,primera);
            primera=TRUE;
            primera=true;
            primera=1;

    Caracteres

            char caracter=‘a’;

            

            NSLog(@”%c”,caracter);

    Literales de Cadena de Caracteres 

            

            NSLog(@”nuevalineaya!notra linea”);

    Operadores Aritméticos

            int i=1;
            int j=3;

            

            int k=0;
            float res;

            

            k=i+j;
            NSLog(@”%d”, k);

            i+=j;
            NSLog(@”%d”, i);

            k=i-j;
            NSLog(@”%d”, k);

            i-=j;
            NSLog(@”%d”, i);

            k=i*j;
            NSLog(@”%d”, k);

            i*=j;
            NSLog(@”%d”, i);

            // hay que hacer casting a float

            res=(float)i/j;
            NSLog(@”%f”, res);

            res/=j;
            NSLog(@”%f”, res);

    Notificaciones en la Pantalla de Bloqueo, Colores del Led y TTS

    Pantalla de bloqueo

    Una de las cuestiones principales a la hora de mejorar el uso de la batería es la posibilidad de gestionar  las notificaciones en la pantalla de bloqueo del móvil. Una funcionalidad típica en iOS, pero no disponible de serie en Android.

    Para ello existen varias soluciones que permiten la visualización directa de las notificaciones sin la necesidad de desbloquear el dispositivo.

    Una de ellas en NiLS Notifications Lock Screen disponible en la Google Play.  Mediante la app podemos ver esas notificaciones e incluso haciendo swype en ellas gracias a una extensión de la misma aplicación llamada NiLS Floating Panel.
    Las instrucciones sobre cómo activar este widget de la pantalla de bloqueo vienen con la propia aplicación, pero en el caso de móviles con la versión 4.4 de android, casi todos ellos de la gama Nexus, tienen una explicación sobre cómo activar este tipo de widgets.

    Primero deberemos habilitar los widgets de la pantalla de bloqueo, a través de la sección Ajustes->Seguridad->Habilitar Widgets. Y cómo es una aplicación que hace uso de las notificaciones del usuario será necesario darle permisos. También en Ajustes->Seguridad->Acceso a Notificaciones.

    Colores del Led

    Recomendado por parte de uno de mis alumnos me decidí a probar la aplicación Light Manager.  Esta aplicación nos permitirá asignar distintos colores a las distintas notificaciones que tenemos instaladas en el dispositivo. Una manera bastante útil de saber si tenemos mensajes de Whatsapp o correos pendientes de leer, etc…
    Una vez instalado también deberemos darles permisos para que pueda leer las notificaciones del sistema. De la misma manera que para el NiLS.

    Text to Speech

    Cuando vamos conduciendo en el coche, está claro que no debemos dejar de mirar la carretera como medida de seguridad. Normalmente cuando conduzco suelo llevar el Waze instalado como navegador GPS , para evitar distracciones innecesarias al volante. Pero como la pantalla está el navegador no podemos ver las notificaciones sin perder de vista la carretera y quitar las manos del volante. 
    La mayor parte de los sistemas multimedia que llevan instalados los coches de serie, permiten integrar por Bluettoth el sonido del móvil a los altavoces del coche. Según vas conduciendo puedes reproducir música que tienes almacenado en el dispositivo mediante Google Play Music. Según modelos esto puede resultar más o menos complicado, pero una vez configurado resulta muy útil. Basta con tener el bluetooth activado en el móvil y comienza la reproducción automáticamente desde la canción que la dejaste sonando. Además Waze te va dando las indicaciones de viva voz por los altavoces del coche. 
     De la misma manera podemos llegar a instalar una aplicación que nos lea las notificaciones según las vayamos recibiendo.  Una aplicación de este estilo es Botifier. Para minimizar el impacto en la concentración al conducir podemos seleccionar sólo las aplicaciones que nos interesa que puedan leerse y así escucharlo por los altavoces también. 

    Curso de Objective C Básico: Introducción al Lenguaje de programación Objective C

    Ya teniendo claro como funciona el entorno, lo suyo es empezar por las bases del lenguaje, sus características principales y su funcionamiento básico.

    Introducción

    Teniendo claro como crear proyectos en Xcode, ahora ya podemos incluir nuevo código en los proyectos. Para empezar y sin que sirva de precedente modificaremos el fichero main.m.
    Los ficheros .m son los ficheros de implementación y los ficheros .h serán los ficheros de cabecera. Como puede apreciarse en sus similitudes, básicamente Objective C es como C pero vitaminado y orientado a objetos por lo que dispondremos de bibliotecas de clases bastante potentes a la hora de hacer nuestras aplicaciones, como este curso está enfocado a aprender el lenguaje en sí mismo, no veremos muchas de las bibliotecas disponibles para el lenguaje, ya que muchas de ellas van enfocadas al desarrollo gráfico de aplicaciones que es donde Objective C destaca, pero como todo se debe aprender desde lo básico es por donde vamos a empezar. 

    Estructura del fichero main.m

    Como en un lenguaje derivado de C tenemos todos los elementos de este lenguaje disponibles, estructuras de control y variables incluidas, pero veamos el ejemplo del fichero generado por el asistente de Xcode:
    //
    //  main.m
    //  00_introduccion
    //
    //  Created by pepesan on 24/02/14.
    //  Copyright (c) 2014 pepesan. All rights reserved.
    //
    #import <Foundation/Foundation.h>
    int main(int argc, const char * argv[])
    {
        @autoreleasepool {
            
            // insert code here…
            NSLog(@”Hello, World!”);
            
        }
        return 0;
    }

    Comentarios

    Como se puede ver en el código, tenemos los típicos comentarios de una línea al principio del fichero, que son los // que vemos al principio de cada línea, aunque también podemos disponer de los comentarios de varias líneas /*…*/ he aquí los ejemplos

    //comentario de una línea
            
    /*
    Comentario de varias líneas

    */

    Imports

    Las importaciones son como las inclusiones de C, nos permiten tener acceso a otros ficheros para incluir su contenido y definiciones, pero como en Objective C las bibliotecas son muy completas, normalmente nos facilitan su inclusión mediante un fichero de cabecera de resumen que incluye todo el contenido de la biblioteca con un sólo import, en el ejemplo tenemos la inclusión de la biblioteca principal de objetos de Objective C
    #import <Foundation/Foundation.h>
    Esta biblioteca es la que tiene los objetos de datos principales, podemos consultar las clases desde la página oficial de Apple:
    Siempre que necesitemos hacer uso de otra clase en un fichero .m tendremos que hacer referencia al fichero de cabecera .h que defina dicha clase o conjunto de clases.

    Función main

    Como la función main de C será la encargada de gestionar el flujo principal de nuestra aplicación. Tiene los típicos parámetro de entrada de C, con el número de argumentos y los argumentos de llamada al programa desde línea de comandos y tiene que devolver un número entero como valor de resultado del programa, lo típico. Si vienes de C lo entenderás a la primera. 
    int main(int argc, const char * argv[])
    {
        @autoreleasepool {
            
            // insert code here…
            
        }
        return 0;
    }
    El @autoreleasepool lo que intenta es definir un entorno para que todas las variables definidas bajo ese entorno, comprendido entre las {} deberán ser liberadas de la memoria según se salga del pool.

    ARC

    El Automatic Reference Counting es la base de la gestión de la memoria es Objective C. Funciona de una manera distinta a C o Java. el ARC, como lo llamaremos a partir de ahora, lo que trata de hacer es evitar que el programador tenga que manualmente liberar la memoria de todas las variables, a fin de evitar quedarnos sin memoria en el dispositivo o tener memory leaks,  por lo que el programador sólo debe centrarse en reservar la memoria suficiente para los datos a almacenar y de definir que tipo de puntero necesitaremos para apuntar a esa memoria. Aunque este tema lo trataremos con más profundidad en la gestión de variables, podemos adelantar que respecto a ARC tenemos dos tipos de variables, las strong y las weak. Las strong mantendrán en la memoria los datos hasta que nos salgamos de su ámbito de actuación, pero las weak, no liberarán la memoria al salirse de ámbito. Por lo que podríamos considerar que las strong los las poseedoras de los datos en memoria y las weak son meros punteros a la información.  Si se libera una variable weak, no pasa nada, mientras que siga existiendo una strong sobre el dato. Sin embargo si la variable strong es la última que apunta a los datos y ésta sale de ámbito, el dato referenciado se liberará de memoria. 

    Trazas

    Como en todo lenguaje es posible sacar mensajes con pantalla/consola esto lo realiza la clase NSLog, como puede verse en el ejemplo:
    NSLog(@”Hello, World!”);
    Como puede verse de trata de la ejecución de una “función” al que se le pasa como parámetro una cadena de caracteres, en este caso utilizamos un literal, pero todos los literales en Objective C van precedidos de una @ y entre “”.
    En Este caso saldrá por la consola el mensaje entrecomillado Hello, World!
    Y por supuesto como toda sentencia C debemos terminarla con un ;

    Conclusiones

    Así que tenemos a un lenguaje similar a C con @ a lo anotaciones de Java, Orientado a objetos y con @antes de los literales de cadenas de caracteres, un poco rarito pero funcional. 

    Curso de HTML5: Nuevos campos y atributos de Formulario

    Aquí está el listado de los nuevos campos de formulario:

    •  color: selección de color
    • date: selección de fecha, adiós jcalendar!
    • datetime: fecha y hora
    • Time: sólo hora
    •  Month: mes del año
    • Week: semana del año, esto va para los alemanes 🙂
    • email: para rellenar más fácil un email en el movil
    • number: para rellenar más fácil un número
    • url: para rellenar más fácil una url en el movil
    • tlf: para rellenar más fácil un teléfono en el movil
    • search: típico campo de buscar
    • range: slider desplazador cuyo valor va entre min y max, y a pasos con step.
    • datalist: define un listado para un campo. http://www.w3schools.com/tags/tag_datalist.asp
    • file con opción de multiple

    Nuevos atributos de campos de formulario:

    •  Required: campo requerido
    • Placeholder: nos permitirá colocar un texto predefinido en el valor del campo pero que al escribir el usuario se quita 
    •  Autofocus: campo que adquiere el foco
    •  Readonly: solo lectura
    •  Disabled: deshabilitado
    •  Pattern: validaciones por expresiones regulares
    •  Autocomplete: con off deshabilitamos el autocompletado del navegador
    •  Min max step: atributos de los tipo range, number y progress
    • label en option , para dejar ya el value 🙂

    Práctica sugerida

    Intenta usar estos nuevos tipos de campos en un formulario html5 y comprueba cómo se ven en Chrome, Firefox e Internet Explorer. Si tienes la posibilidad intenta verlo también desde un móvil.

    Licencia Creative Commons

    Uso de cookies

    Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

    Aviso de cookies