domingo, 24 de marzo de 2013

Creación de métodos en Objective-C

Creación de Metodos en Objective-C.



Vamos a repasar un poco la creación de métodos en Objective-C:




Un metodo en Objective-C es lo que en otros lenguajes se suelen llamar funciones.

Los métodos pueden crearse que no devuelven nada :     -(void)nombreMetodo;


Si devuelve algún valor se pone entre paréntesis su tipo : -(NSString *)nombreMetodo;


Si no devuelve nada pero recibe parámetros: -(void)nombreMetodo: (NSString *) parámetro;


Si devuelve un valor y recibe parámetros: -(NSInteger)nombreMetodo:(NSString*)parámetro;


Si recibe varios parámetros:
-(NSString*)nombreMetodo:(NSString*)datoUno otroDatoMas:(NSInteger)datoDos yOtroDatoMas:(BOOL)datoTres; 


Así se podría crear un método que recibiese múltiples datos, notese que entre:  datoUno y otroDatoMas hay un espacio.


los métodos que empiezan por el signo  - son métodos de instancia y los que empiezan por el signo + son métodos de clase.

Aqui pongo un ejemplo del uso de métodos y su forma de llamarlos.





Contenido del archivo de encabezado ViewController.h:


//
//  ViewController.h
//  Metodos
//
//  Created by Francisco on 24/03/13.
//  Copyright (c) 2013 Francisco. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
@property NSInteger numeroUno,numeroDos,numeroTres,total;
@property (nonatomic,strong) NSString * nombreUno,* nombreDos,* nombreTres,* nombreCuatro;
@property (strong, nonatomic) IBOutlet UILabel *mostrarTexto;

-(NSInteger)metodoQueRecibeDosVariablesNumericas:(NSInteger)valorUno segundoParametro:(NSInteger)valorDos;
-(void)metodoQueNoDevuelveNada;
-(void)metodoQueRecibeUnParametro:(NSString*)parametro;
-(NSInteger)metodoQueDevuelveUnParametro;
-(void)metodoQueRecibeVariosParametros:(NSString*)parametroUno aquiVaElParametroDos:(NSInteger)parametroEnteroDos aquiVaElTercerParametro:(NSString*)tercerParametroTexto;

- (IBAction)verMetodoUno:(id)sender;
- (IBAction)verMetodoDos:(id)sender;
- (IBAction)verMetodoTres:(id)sender;
- (IBAction)verMetodoCuatro:(id)sender;

@end


Contenido del archivo de implementación ViewController.m


//  ViewController.m
//  Metodos
//
//  Created by Francisco on 24/03/13.
//  Copyright (c) 2013 Francisco. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

-(NSInteger)metodoQueRecibeDosVariablesNumericas:(NSInteger)valorUno segundoParametro:(NSInteger)valorDos
{
    //Este metodo recibe dos parametros numericos tipo NSInteger y los multiplica devolviendo con el return el valor de la multiplicacion.
    // Y asigna los valores recibidos a dos variables enteras, para poder usarlas fuera del metodo.
    _total= valorUno * valorDos;
    _numeroDos = valorUno;
    _numeroTres = valorDos;
   
    return _total;

}

- (void)metodoQueNoDevuelveNada
{
   //Este metodo, hace algo, pero no devuelve ningun valor.
    
    _mostrarTexto.text = @"Este texto es de el metodo que no devuelve nada";
}

- (void)metodoQueRecibeUnParametro:(NSString *)parametro
{
    //Este metodo recibe un parametro de texto y lo muestra en la etiqueta.
    _mostrarTexto.text = parametro;
}
-(NSInteger)metodoQueDevuelveUnParametro
{
    //En este metodo vamos a devolver un valor NSInteger que es un valor numerico
    //Para ello llama al metodo que recibe dos parametros numerico y que nos devuelve el resultado multiplicado. 
    [self metodoQueRecibeDosVariablesNumericas:154 segundoParametro:43];
    _numeroUno = _total;
   
    return _numeroUno;
}
-(void)metodoQueRecibeVariosParametros:(NSString *)parametroUno aquiVaElParametroDos:(NSInteger)parametroEnteroDos aquiVaElTercerParametro:(NSString *)tercerParametroTexto
{
    //Este metodo recibe varios parametros dos de texto y uno numerico.
    _mostrarTexto.text = [NSString stringWithFormat:@"%@ ,Parametro Numerico: %i , %@",parametroUno,parametroEnteroDos,tercerParametroTexto];
}

 //aqui podemos ver las llamadas a los metodos al pulsar cada boton.

- (IBAction)verMetodoUno:(id)sender
{
    [self metodoQueNoDevuelveNada];
}

- (IBAction)verMetodoDos:(id)sender
{
    [self metodoQueDevuelveUnParametro];
     _mostrarTexto.text = [NSString stringWithFormat:@"Valor de multiplicar: %i x %i %i",_numeroDos,_numeroTres,_numeroUno];
}

- (IBAction)verMetodoTres:(id)sender
{
    [self metodoQueRecibeUnParametro:@"Parametro recibido de texto"];
}

- (IBAction)verMetodoCuatro:(id)sender
{
    [self metodoQueRecibeVariosParametros:@"Parametro de Texto" aquiVaElParametroDos:108 aquiVaElTercerParametro:@"Tercer Parametro tambien de texto"];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end


Hay que recordar que la UILabel o etiqueta donde se muestra el texto la he llamado: mostrarTexto y que hay que conectar la etiqueta y los botones con su correspondiente IBOutlet e IBAction para que funcione en tu XCode.















Espero les guste y les sirva para algo si alguien queiere que esplique algo determinado que me ponga un comentario con su petición.
Saludos.

sábado, 2 de marzo de 2013

Reutilizar metodos para reproducir varios sonidos o mostrar alertas diferentes.

Tutoriales XCode.



En este pequeño tutorial vamos a ver como usar un metodo para reproducir varios sonidos diferentes y tambien otro metodo para mostrar varias alertas diferentes.

Al hacer la llamada al método le pasamos en una variable el texto que queremos que nos muestre y en el otro caso el nombre del archivo de audio que queremos que reproduzca.











Archivo de cabecera ViewController.h.


//
//  ViewController.h
//  PruebasVarias
//
//  Created by Francisco on 02/03/13.
//  Copyright (c) 2013 Francisco. All rights reserved.
//

#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h> //Hay que importar el Framework de sonido

@interface ViewController : UIViewController
@property (strong,nonatomic) AVAudioPlayer *reproductor;
@property (strong,nonatomic) NSString * idAudio;
@property (strong,nonatomic) UIAlertView * alerta;
@property (strong,nonatomic) NSString * idAlerta;
@property (strong,nonatomic) NSString * sonido;
- (IBAction)mostrarAlerta:(id)sender;
- (IBAction)reproducirSonido:(id)sender;


-(void)nombreSonido: (NSString *)recibeDatos;
-(void)textoAlertas: (NSString*)textoQueMuestra;

- (IBAction)alerta2:(id)sender;
- (IBAction)alerta3:(id)sender;
- (IBAction)sonido2:(id)sender;
- (IBAction)sonido3:(id)sender;


@end



Archivo de implementación ViewController.m.

//
//  ViewController.m
//  PruebasVarias
//
//  Created by Francisco on 02/03/13.
//  Copyright (c) 2013 Francisco. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize reproductor,idAlerta,idAudio,alerta,sonido;

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)mostrarAlerta:(id)sender
{
    [self textoAlertas:@"Alerta Uno"];
}

- (IBAction)reproducirSonido:(id)sender {
    [self nombreSonido:@"Alerta"];
    
    
}

-(void)nombreSonido: (NSString *)recibeDatos
{
  
    NSError *error;
    NSString *ruta =[[NSBundle mainBundle]pathForResource:recibeDatos ofType:@"mp3"];
    NSURL *url =[[NSURL alloc]initFileURLWithPath:ruta];
    self.reproductor=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:&error];
        
       [self.reproductor prepareToPlay];
        [self.reproductor play];
}
-(void)textoAlertas: (NSString*)textoQueMuestra
{
    alerta =[[UIAlertView alloc]initWithTitle:textoQueMuestra message:@"Texto Mostrado" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
    [alerta show];
}

- (IBAction)alerta2:(id)sender
{
    [self textoAlertas:@"Alerta Dos"];
}

- (IBAction)alerta3:(id)sender
{
    [self textoAlertas:@"Alerta Tres"];
}

- (IBAction)sonido2:(id)sender
{
    
    [self nombreSonido:@"Alerta2"];
}

- (IBAction)sonido3:(id)sender
{
    [self nombreSonido:@"Tap"];
}

@end



Bueno espero les guste y les sirva para algo, para cualquier duda o sugerencia dejen sus comentarios.

gracias.

lunes, 11 de febrero de 2013

Un lenguaje de programacion para empezar en este mundo.

Scratch es un sistema grafico de programación bastante básico pero muy interesante para iniciarse en el mundo de la programación y muy divertido, hay miles de tutoriales y mucha información al respecto.
Para todo aquel que quiera iniciarse en este mundo es un buen modo de empezar para comprender el complejo mundo de la programacion.

Desde aqui se peude descargar el entorno de programacion que es totalmente gratis y esta para Mac, Windows y linux.

http://info.scratch.mit.edu/es/Scratch_1.4_Download









Bueno espero les guste y empiecen a hacer pruebas, y quizas algun dia se conviertan en unos grandes programadores.
Varios enlaces muy interesantes: 

           http://www.scribd.com/doc/35299373/Scratch-Manual

            http://www.scribd.com/doc/23081518/ManualdeScratch

Para cualquier duda ya sabeis que solo teneis que preguntar.
Saludos.





martes, 5 de febrero de 2013

S4A Una sencilla y facil forma de programar nuestro Arduino.




Scratch for Arduino (S4A) Es un proyecto creado por Marina Conde, Víctor Casado, Joan Güell, José García y Jordi Delgado con la ayuda del Grupo de Programación Smalltalk del Citilab.

 Aqui teneis  su página web: http://seaside.citilab.eu/scratch/arduino.


La forma de usarlo es bastante sencilla, tenemos que descargar el firmware y una vez descargado abrimos el IDE oficial de Arduino:


Pegamos en el IDE el FirmWare descargado y con nuestro Arduino conectado lo verificamos y cargamos en el Arduino, recordad que tenéis que tener cerrado el S4A para que no entren en conflicto ambos programas, una vez cargado el " firmware" en nuestro Arduino ya podemos cerrar el IDE oficial y abrir el S4A.

Y ya podeis crear vuestros proyectos con el S4A es muy secillo pues esta en Español y una vez sepamos lo que queremos hacer solo es cuestión de ir arrastrando instrucciones al entorno.


Este es el programa mas basico en Arduino y que enciende un LED pinchado en la salida digital nº 13, lo enciende durante un segundo y lo apaga un segundo y así sucesivamente.

Su equivalente en S4A seria esto:


Como se puede apreciar la forma gráfica de S4A es mucho mas sencilla y fácil de aprender.
Dentro del propio programa hay un montón de ejemplos incluso podemos utilizar el Arduino para crear juegos y muchísimas cosas mas, creo que esto abre un abanico de nuevas posibilidades para nuestro Arduino.


Bueno, en internet hay mucha información al respecto sobre este apasionante mundo del Arduino y sus aplicaciones y sobre el S4A.





Un saludo y espero les guste, para cualquier duda dejen sus comentarios y preguntas y les responderé lo antes posible.
Gracias.


jueves, 24 de enero de 2013

Proyecto Coche Fantastico con Arduino.

 Luces tipo "Coche Fantastico" con Arduino.



Hacer que seis LEDs se enciendan progresivamente, consiguiendo el efecto que todos recordamos de la peli "El coche Fantastico".


Material Empleado:


-Una Placa Arduino UNO R3 (en mi caso).
- 6 LEDs Rojos.
- 6 Resistencias de 220 Ohm.
- Varios cables para hacer los puentes.
- Una Placa de prototipos.


Este es el cableado:

Este es el Código necesario para hacer funcionar el Arduino:





int timer = 50;// Este es el retardo de encendido de un led a otro.

void setup() {
  
  for (int thisPin = 2; thisPin < 8; thisPin++)  {
//Aqui le estamos diciendo que los pines del 2 al 8 son de salida 
 pinMode(thisPin, OUTPUT);     
  }
}
void loop() {
  
  for (int thisPin = 2; thisPin < 8; thisPin++) { 
    // Aqui le decimos que encienda los pines del 2 al 8
    digitalWrite(thisPin, HIGH);   
    delay(timer);                  
    // delay es la pausa entre encendidos.
    digitalWrite(thisPin, LOW);    
  }
  //Cuando termina de encender todos los pines empieza al contrario
  for (int thisPin = 7; thisPin >= 2; thisPin--) { 
    // Ahora los enciende del 7 al 2
    digitalWrite(thisPin, HIGH);
    delay(timer);
    // tambien realiza la pausa o retraso con delay
    digitalWrite(thisPin, LOW);
  }
}


















domingo, 13 de enero de 2013

Arduino, mi ultimo descubrimiento.

Pues Arduino es mi ultimo descubrimiento, bueno ya se que que lleva muchos años en la scene pero yo le he descubierto hace unos días.

Ya tengo pedidos mi Arduino Uno R3 y un montón de sensores y y accesorios para esta fabulosa placa.




Enlace a la pagina Oficial de Aruino :  http://arduino.cc/es/Guide/HomePage

Foro en Español sobre Arduino :  Foro en español sobre Arduino


Dispone de in entorno de programacion muy intuitivo y un lenguaje propio.

Los programas hechos con Arduino se dividen en tres partes principales: estructuravalores (variables y constantes), yfunciones. El Lenguaje de programación Arduino se basa en C/C++.

Estructura

Estructuras de control

  • if (comparador si-entonces)
  • if...else (comparador si...sino)
  • for (bucle con contador)
  • switch case (comparador múltiple)
  • while (bucle por comparación booleana)
  • do... while (bucle por comparación booleana)
  • break (salida de bloque de código)
  • continue (continuación en bloque de código)
  • return (devuelve valor a programa)

Sintaxis

  • ; (punto y coma)
  • {} (llaves)
  • // (comentarios en una línea)
  • /* */ (comentarios en múltiples líneas)

Operadores Aritméticos

Operadores Comparativos

  • == (igual a)
  • != (distinto de)
  • < (menor que)
  • > (mayor que)
  • <= (menor o igual que)
  • >= (mayor o igual que)

Operadores Booleanos

  • && (y)
  • || (o)
  • ! (negación)

Operadores de Composición

  • ++ (incrementa)
  • -- (decrementa)
  • += (composición suma)
  • -= (composición resta)
  • *= (composición multiplicación)
  • /= (composición división)

Variables

Constantes

Tipos de Datos

Conversión

Funciones

E/S Digitales
E/S Analógicas
E/S Avanzadas
Tiempo
Matemáticas
  • min() (mínimo)
  • max() (máximo)
  • abs() (valor absoluto)
  • constrain() (limita)
  • map() (cambia valor de rango)
  • pow() (eleva a un número)
  • sq() (eleva al cuadrado)
  • sqrt() (raíz cuadrada)
Trigonometría
  • sin() (seno)
  • cos() (coseno)
  • tan() (tangente)
Números Aleatorios
Communicación

Echás algo en falta? Visita lareferencia extendida o la página de librerías. También puedes visitar lapágina de código propuesto por la comunidad.

Correcciones, sugerencias, y nueva documentación deberán ser publicadas en el Foro (castellano) o en el Foro (inglés).
El texto de la referencia de Arduino está publicado bajo la licencia Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0. Los ejemplos de código de la referencia están liberados al dominio público.