Creaci贸n App鈥檚 #07 iOS – Lenguaje Swift

Para aprender a conducir un coche, se necesita aprender a manejar varias cosas a la vez, como el embrague, las marchas, el acelerador y el freno. Con la programaci贸n pasa igual: hay que tener un mont贸n de cosas en mente y saber relacionarlas.

Al igual que no se puede aprender a conducir directamente en un circuito de alta velocidad, dejaremos el entorno de programaci贸n real para un cap铆tulo posterior.

En este cap铆tulo vamos a hablar de la sintaxis del lenguaje Swift para que se sienta c贸modo con ella, a fin de que en pr贸ximos cap铆tulos pueda atender al c贸mo se hacen las cosas en vez de a qu茅 se est谩 haciendo.

En los programas, todo lo que se escriben son datos y operaciones entre ellos. Por ejemplo, la asignaci贸n de un valor a un dato llamado聽monedas聽se har铆a as铆:

monedas = 5

A los 鈥渄atos鈥 lo llamaremos聽variables,聽ya que pueden tomar cualquier valor dentro del rango de su tipo de valor. 鈥淢onedas鈥 ser铆a el identificador de la variable.

Simple, 驴verdad? En pr贸ximos cap铆tulos se estudiar谩n los distintos tipos de datos y c贸mo programar con ellos.

3 Variables

Swift utiliza muchas variables y de muchos tipos.聽Las variables no son m谩s que nombres convenientes para referirse a una parte espec铆fica de datos, tal como un n煤mero.聽Si seguimos con el ejemplo anterior, podr铆amos hacer:

monedas = 5

valorMonedas = 2

totalEuros = monedas*valorMonedas

驴Qu茅 significa esto? Hemos almacenado en una variable llamada 鈥渢otalEuros鈥 el resultado de multiplicar (el s铆mbolo * es el de la multiplicaci贸n en la mayor铆a de lenguajes de programaci贸n) el contenido de la variable 鈥渕onedas鈥 y el contenido de la variable 鈥渧alorMonedas鈥.

3.1. El Punto Y Coma

Con el lenguaje Objective-C, era necesario un s铆mbolo de fin de l铆nea, concretamente el punto y la coma (;).

En Swift ya no es necesario, aunque se puede usar si se desea.

En caso de querer realizar dos instrucciones en la misma l铆nea, entonces s铆 es necesario ponerlo, por ejemplo:

a = 5 ; b=

3.2. Nomenclatura De Las Variables

Mientras que los nombres de variables no tienen un significado especial para el compilador, los nombres de variables descriptivos pueden hacer una programa sea mucho m谩s f谩cil para los seres humanos, y por tanto, m谩s f谩cil de entender.

Eso es una gran ventaja si se necesita localizar un error en el c贸digo. Los errores en los programas tradicionalmente se llaman聽bug.

Encontrar y corregir fallos se llama depurar.

Por lo tanto, en el c贸digo real hay que evitar el uso de nombres de variables no descriptivas como 鈥渪鈥.聽Por ejemplo, el nombre de la variable para el ancho de una imagen que se podr铆a llamar聽pictureWidth.

Tambi茅n hay que tener en cuenta la distinci贸n entre may煤sculas y min煤sculas, ya que no es lo mismo聽pictureWidth聽que聽pictureWIDTH聽o聽PictureWidth.

Tenga en cuenta que un nombre de variable siempre se compone de una sola palabra, pero hay varias reglas a seguir:

  • El nombre de variable no puede ser una palabra reservada del lenguaje (es decir, una palabra que tiene un significado especial).
  • Una variable聽no puede comenzar con un d铆gito.

Al componer un nombre de variable como conjunto de palabras, como pictureWidth, siempre ser谩 correcto.聽聽Si atenemos a este esquema, es menos probable que nos equivoquemos.

Tambi茅n se permite el subrayado car谩cter: 芦_禄.聽Aqu铆 est谩n algunos ejemplos de nombres de variables.

Buenas nombres de variables:

  • door8k
  • do8or
  • do_or

No se permiten:

  • puerta 8 (contiene un espacio)
  • 8door (empieza con un d铆gito)

No se recomienda:

  • Door8 (empieza con may煤scula)

Ahora que sabemos c贸mo dar a una variable un valor, podemos realizar c谩lculos.聽Vamos a echar un vistazo al c贸digo para el c谩lculo de la superficie de una imagen:

pictureWidth = 8

pictureHeight = 6

pictureSurfaceArea = pictureWidth * pictureHeight

N贸tese que se pueden usar espacios entre las variables para mejorar la visi贸n del c贸digo.

3.3 Declarando variables

Los c贸digos de los ejemplos anteriores no funcionan.聽El problema es que el compilador necesita saber el tipo de dato que va a almacenar cada variable durante el programa. En la jerga inform谩tica, a esto se le llama 芦declarar una variable禄.

En el siguiente c贸digo se declaran tres variables en Swift, asign谩ndole su valor directamente:

Caracter铆sticas del lenguaje Swift

Como ves, la estrucura general de declaraci贸n de variables en Swift es

var nombreVariable: tipoVariable = valorVariable

Swift autom谩ticamente identifica el tipo de dato al asignarle un valor. Por ejemplo, si creamos una variable y le asigmanos el valor 5, autom谩ticamente se har谩 de tipo entero. En caso de asignarle 5.3 ser谩 de tipo flotante y si le asignamos 鈥渉ola que tal鈥 ser谩 de tipo cadena de caracteres. Esto es lo que se llama como asignaci贸n impl铆cita.

Lo recomendable es asignarle el tipo de variable manualmente, o de forma expl铆cita. Por ejemplo:

Caracter铆sticas del lenguaje Swift

La instrucci贸n聽let聽hace que la asignaci贸n s贸lo pueda hacerse una vez. Es lo que se conoce como聽constante. Si intentamos volver a asignarla a la variable 鈥渁鈥 otro valor, el compilador nos dar谩 un error.

Tambi茅n podemos declarar varias variables del mismo tipo en la misma l铆nea:

Caracter铆sticas del lenguaje Swift

4. Tipos De Datos

Todos los lenguajes de programaci贸n trabajan con datos, pero suele ser necesario indicar al compilador de qu茅 tipo es cada dato.

Vamos a ver los distintos tipos de datos y para qu茅 se usa cada uno.

4.1. Variables Num茅ricas

Los n煤meros en general, se pueden distinguir entre dos tipos: enteros y fraccionarios.

Utilizaremos los enteros cuando repetir una serie de instrucciones un n煤mero determinado de veces (1, 2, 3, 4, 鈥) o cuando tenemos un conjunto de objetos no fraccionables.

Los fraccionarios o flotantes se utilizan para almacenar, por ejemplo, las medias de las notas de un conjunto de alumnos (n煤meros decimales).

Los tipos de variables num茅ricas b谩sicas con los que podemos trabajar son:

  • Entero:聽Int
  • Flotante:聽Float

Tanto los enteros como los flotantes pueden tomar valores negativos. El resto de tipos son composiciones m谩s o menos complejas de este tipo de datos: vectores, tuplas, diccionarios, matrices鈥 Hablaremos de ellos m谩s adelante

Tambi茅n existen tipos de datos con m谩s capacidad de almacenamiento, como Double, pero se usan para variables que pueden tomar valores muy grandes. De momento veremos las mencionadas.

4.2. Cadenas De Caracteres

En programaci贸n, una cadena de caracteres (string聽en ingl茅s) es una secuencia ordenada de longitud arbitraria (aunque finita) de elementos que pertenecen a un cierto lenguaje formal.

En general, una cadena de caracteres es una sucesi贸n de caracteres (letras, n煤meros u otros signos o s铆mbolos).

Desde un punto de vista de la programaci贸n, si no se ponen restricciones al alfabeto, una cadena podr谩 estar formada por cualquier combinaci贸n finita de todo el juego de caracteres disponibles (las letras de la ‘a’ a la ‘z’ y de la ‘A’ a la ‘Z’, los n煤meros del ‘0’ al ‘9’, el espacio en blanco ‘ ‘, s铆mbolos diversos ‘!’, ‘@’, ‘%’, etc).

En este mismo 谩mbito (el de la programaci贸n), se utilizan normalmente como un tipo de dato predefinido para palabras, frases o cualquier otra sucesi贸n de caracteres. Generalmente son guardados un car谩cter a continuaci贸n de otro en estructuras llamadas 鈥渧ectores de datos鈥 (array聽en ingl茅s).

Anteriormente solamente vimos unos cuantos tipos de datos y nunca hemos visto el objeto string.

Caracter铆sticas del lenguaje Swift

As铆 es como declaramos las variables de tipo string, creando un objeto de tipo String y asign谩ndole un identificador llamado miPrimerString. Los聽strings聽van siempre entre comillas dobles o simples, dependiendo del lenguaje.

4.3. Tipos De Datos En Swift

Como se acaba de ver, los datos almacenados en una variable puede ser uno de varios tipos espec铆ficos, por ejemplo un int o un flotante.

En Swift, los tipos de datos disponibles son:

  • Int: enteros
  • UInt: enteros sin signo (s贸lo positivos)
  • Float: flotantes (n煤meros decimales con o sin signo)
  • Double: flotantes con m谩s capacidad
  • String: cadena de texto. Siempre van entre comillas, por ejemplo: 鈥渆sto es una variable de tipo String鈥.
  • nil: es un tipo de dato vac铆o. Se usa para indicar que una variable no tiene asignado ning煤n valor o que una funci贸n no devuelve ning煤n valor.
  • Bool: Un booleano es un simple valor l贸gico verdadero o falso.

1 y 0 representan verdadero y falso y a menudo se utilizan indistintamente:

Caracter铆sticas del lenguaje Swift

Se utilizan con frecuencia para evaluar si se debe ejecutar alg煤n tipo de acci贸n u otra, dependiendo del valor booleano que contengan las variables.

4.4 Valores opcioneales

Una de las cosas m谩s novedosas de Swift es un nuevo tipo de dato llamado 鈥渄ato opcional鈥. Estos datos se declaran cuando no se sabe si un dato va a ser inicializado, evitando problemas de ejecuci贸n y facilitando la vida al desarrollador.

Por ejemplo, podemos crear una cadena de caracteres cuyo valor no sabemos si va a ser rellenado. Llamemos a esta variable 鈥渟tringOpcional鈥:

Caracter铆sticas del lenguaje Swift

En el ejemplo anterior se crea una variable con valor opcional llamada 鈥渟tringOpcional鈥. Cuando esa variable se asigna a otra, se comprueba si tiene un valor asignado. En caso contrario no se asigna.

De momento es normal que no entiendas qu茅 se est谩 haciendo, pero es importante que conozcas este tipo de datos. Se recomienda volver a este ejemplo y comprenderlo despu茅s de ver el apartado de 鈥淪entencias condicionales鈥.

Cuando hemos declarado un tipo de dato opcional (con el operador ?). Tenemos dos opciones:

  • Comprobar que el dato est谩 inicializado (es distinto de聽nil聽) y asignarlo: esto es lo que hemos hecho en el ejemplo anterior.
  • Usar el operador !

Veamos el siguiente c贸digo de ejemplo:

Caracter铆sticas del lenguaje Swift

Esto significa que la variable stringPosible no puede estar vac铆a para ser asignada a la variable 鈥渟tringForzado鈥. En caso de estarlo, el compilador nos dar铆a un error.

5. Operadores

Los operadores aritm茅ticos binarios b谩sicos en Swift son:

  • Suma: +
  • Resta: –
  • Divisi贸n: /
  • Multiplicaci贸n: *
  • M贸dulo o resto de la divisi贸n: %

Se denominan binarios porque necesitan estar entre dos operandos. Es decir, estas operaciones s贸lo tienen sentido cuando van en medio de dos variables.

5.1. El Operador De Incremento/Decremento Unitario

Un operador muy usado es el de incremento unitario, su uso es:聽++ o ++. Por ejemplo, en vez de hacer:

manzanas = manzanas + 1

Lo m谩s com煤n es hacer:

manzanas++

Tambi茅n existe el de decremento unitario (–), y se usa de la misma forma.

En cualquier caso, esto significa: aumento de la variable en uno.聽En algunas circunstancias, es importante saber si la ++ es antes o despu茅s del identificador de la variable.聽Por ejemplo:

Caracter铆sticas del lenguaje Swift

Pero si hici茅semos:

Caracter铆sticas del lenguaje Swift

N贸tese la importancia del lugar donde colocamos el operador de incremento unitario. En el primer caso, la 煤ltima acci贸n es incrementar la variable eurosJuan en 1, en el segundo caso es lo primero en hacerse y su actualizaci贸n interfiere con el resultado.

5.2. Los Par茅ntesis

Se pueden utilizar par茅ntesis para determinar el orden en el que se realizan las operaciones, tal y como se ha visto en el anterior ejemplo.

Ordinariamente, los operadores de multiplicaci贸n y divisi贸n tienen prioridad sobre el de suma y resta.

As铆, 2 * 3 + 4 es igual a 10.聽Mediante el uso par茅ntesis, se puede forzar el cambio de orden de tal manera que: 2 * (3 + 4) sea igual a 14.

5.3. Divisi贸n

El operador de divisi贸n merece una atenci贸n especial, ya que hace una gran diferencia si se utiliza con enteros o flotantes.

Echa un vistazo a los siguientes ejemplos:

Caracter铆sticas del lenguaje Swift

Caracter铆sticas del lenguaje Swift

En el primer caso, el resultado es 2 mientras que en el segundo caso el resultado es lo que probablemente era de esperar: 2.4.

Hay que tener cuidado con esta operaci贸n (en general con todas) ya que la operaci贸n de dos variables del mismo tipo devuelve un resultado del mismo tipo.

5.4. Divisi贸n Entera: M贸dulo

Un operador que probablemente desconoces es el operador % (m贸dulo).

El operador m贸dulo no es un c谩lculo porcentual sino que聽el resultado del operador % es el resto de la divisi贸n entera entre el primer operando y el segundo.

Caracter铆sticas del lenguaje Swift

El resultado es igual a 3, porque x es igual a 2 * y + 3.

Aqu铆 hay unos cuantos ejemplos m谩s de m贸dulo:

  • 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

6. Comentarios

Mediante el uso de nombres de variables con sentido, podemos hacer nuestro c贸digo m谩s legible y comprensible.

Hasta ahora, nuestros ejemplos de c贸digo s贸lo han sido declaraciones, pero incluso programas muy simples pueden crecer r谩pidamente a cientos o miles de l铆neas.聽Al revisar su c贸digo despu茅s de algunas semanas o meses, puede ser dif铆cil recordar la tarea que estaba realizando en el c贸digo.聽Aqu铆 es donde entran los comentarios: son anotaciones en el c贸digo que el compilador no interpreta y sirve a los programadores para saber qu茅 es lo que hace el c贸digo sin necesidad de tener que comprenderlo.

Se recomienda invertir algo de tiempo en comentar el c贸digo.

Adem谩s, si comparte el c贸digo con alguien m谩s, sus comentarios les ayudar谩n a adaptarse a sus propias necesidades con mayor rapidez.

6.1. Hacer Un Comentario En Swift

Para crear un comentario, inicia el comentario con dos barras inclinadas. Todo lo que haya en esa misma l铆nea a partir de las barras no ser谩 compilado.

Caracter铆sticas del lenguaje Swift

En Xcode los comentarios se muestran en verde.聽Si un comentario es largo, y se extiende por varias l铆neas, se pone entre聽/*y聽*/

Caracter铆sticas del lenguaje Swift

6.2. 驴Por Qu茅 Un Comentario?

La importancia de los comentarios no se puede infravalorar.聽A menudo es 煤til incluir una explicaci贸n acerca de lo que sucede en una larga serie de declaraciones.聽De esta forma no es necesario que entienda profundamente lo que hace el c贸digo, con el consecuente ahorro de tiempo.

Los comentarios tambi茅n se usan para expresas cosas que son dif铆ciles o imposibles de deducir a partir del c贸digo.聽Por ejemplo, si se programa una funci贸n matem谩tica utilizando un modelo espec铆fico que se describe en detalle en alg煤n lugar de un libro, se deber铆a poner una referencia bibliogr谩fica en un comentario asociado al c贸digo actual.

A veces es 煤til escribir algunos comentarios antes de escribir el c贸digo real.聽Le ayudar谩 a estructurar sus pensamientos y la programaci贸n ser谩 m谩s f谩cil.

7. Funciones

Por ahora hemos visto c贸mo escribir unas cuantas lineas de c贸digo de forma desorganizada, pero para desarrollar aplicaciones m谩s complejas y extensas debemos de estudiar c贸mo organizarlas. De esta forma nos resultar谩 mucho m谩s facil entender el c贸digo y encontrar los errores.

Para organizar el c贸digo de tal forma que sea m谩s legible y controlable se sigue la metodolog铆a de agrupar funcionalidades que realicen tareas parecidas en funciones.

Las funciones son agrupaciones de tareas con un nombre. Son muy parecidas a las funciones matem谩ticas. Por ejemplo, una funci贸n matem谩tica podr铆a ser: f(x) = 3*x+2. 驴Qu茅 significa esta funci贸n? Que a todo n煤mero que se le aplique, se multiplicar谩 por 3 y se le sumar谩 2. F谩cil, 驴no? Ahora veamos las funciones de programaci贸n, concretamente en lenguaje Swift.

Una definici贸n formal de funci贸n en programaci贸n podr铆a ser:

En programaci贸n, una聽subrutina聽o聽subprograma聽(tambi茅n llamada聽procedimiento,聽funci贸n聽o聽rutina聽), como idea general, se presenta como un subalgoritmo (un trozo de c贸digo) que forma parte del algoritmo principal, el cual permite resolver una tarea espec铆fica.

7.1. La Funci贸n Main()

Si estamos familiarizados con alg煤n lenguaje de programaci贸n como C, Java o alguno similar, habremos o铆do algo sobre la 鈥渇unci贸n principal鈥 o聽main.

La funci贸n聽main聽es la primera que se ejecuta al iniciar una aplicaci贸n. Es decir, 鈥渆l punto de entrada鈥 a nuesto programa, y es la encargada de llamar al resto de funciones.

En Swift, al igual que los puntos y comas, no es necesario usarla, as铆 que no hablaremos de ella. Consideraremos la funci贸n聽main聽como cualquier c贸digo escrito fuera de una funci贸n.

7.2. Nuestra Primera Funci贸n En Swift

Como comentamos anteriormente, si tuvieramos todo el c贸digo que compone nuestra aplicaci贸n de forma seguida y desorganizada, llevar铆a muchos problemas a la hora de optimizar el c贸digo y encontrar errores, por lo que necesitamos un c贸digo m谩s estructurado.

En nuestro caso vamos a crear una funci贸n聽que calcule el 谩rea de un tri谩ngulo. Lo primero que debemos pensar es un nombre para la funci贸n, por ejemplo:聽calculaAreaDelTriangulo. Las funciones en Swift se declaran poniendo la palabra reservada聽func聽delante del nombre de la funci贸n.

Ahora debemos pensar qu茅 datos necesita conocer la funci贸n para funcionar, as铆 como el tipo de estos datos. En nuestro caso necesitamos la base y la altura del tri谩ngulo, que sabemos que son de tipo flotante (Float).

Ya casi lo tenemos. Nos falta saber el tipo de dato que devolver谩 la funci贸n. Como se trata de una operaci贸n matem谩tica con valores flotantes, el resultado ha de ser flotante tambi茅n, por lo que el tipo de resultado es Float.

Es recomendable que esta informaci贸n se escriba en forma de comentario encima de la funci贸n, como vimos en la secci贸n anterior.

Hasta ahora hemos determinado la cabecera de nuestra funci贸n (parte roja de la imagen), es decir, hemos definido QU脡 hace. Nos falta la parte que determina C脫MO lo hace (parte azul de la imagen), y esa parte se llama cuerpo.

La operaci贸n para calcular el 谩rea de un tri谩ngulo es sencilla: multiplicamos la base por la altura y la dividimos entre dos. As铆 que lo escribimos en el lenguaje Swift.

Ya tenemos nuestra primera funci贸n, que tiene este aspecto:

Caracter铆sticas del lenguaje Swift

Caracter铆sticas del lenguaje Swift

Si no entiendes algo de lo anterior no te preocupes, hablaremos sobre ello en los siguientes apartados. De momento, vamos a analizar las distintas partes que componen una funci贸n.

A las funciones se les puede pasar informaci贸n que necesiten en forma de dato, a estas variables que son recibidas por las funciones se les llama par谩metros o argumentos, y es informaci贸n necesaria para que la funci贸n desarrolle su proposito.

Como podemos ver la funci贸n聽calculaAreaDelTriangulo()聽recibe como par谩metros 鈥渂ase鈥 y 鈥渁ltura鈥, ambas de tipo Float.

Para indicar los par谩metros, se debe indicar un nombre al argumento y su tipo correspondiente, separados por comas. Por ejemplo, la cabecera de una funci贸n que recibe 5 argumentos puede ser:

func miFuncionCon5Argumentos(argumento1: Int, argumento2: Int, argumento3: Float, argumento4: String, argumento5: Double) -> Float

Como vemos en el ejemplo anterior, se debe definir el tipo de variable que devuelve la funci贸n, esto se hace poniendo el tipo de dato despu茅s de la funci贸n precedido por una flecha formada por un gui贸n y un 鈥渕ayor que鈥:聽->

Recuerda que los argumentos de la variable, aunque se modifiquen en el cuerpo de la funci贸n, no se modificar谩n fuera de ella. Esto lo veremos m谩s adelante.

No todas las funciones necesitan argumentos o tienen por qu茅 devolver un valor, como tambi茅n veremos m谩s adelante.

7.4. Devolviendo Valores

Las funciones pueden o no devolver valores, si la funci贸n no devuelve ning煤n valor el tipo que devuelve ser谩 vacio o聽nil(lo vimos en los tipos de datos), por lo tanto la sentencia聽return聽no tiene sentido. Las funciones que no devuelven nada se llaman procedimientos.

驴Y si queremos devolver m谩s de un valor? Entonces pondremos los valores devueltos entre par茅ntesis, tanto en la cabecera de la funci贸n como detr谩s de la cl谩usula聽return, como en el siguiente ejemplo:

Caracter铆sticas del lenguaje Swift

7.5. Variables Protegidas

Las variables en Swift est谩n protegidas, esto quiere decir que una funci贸n no puede modificar las variables de otra funci贸n aunque tengan el mismo nombre.

Por lo tanto las variables de las funciones son solo v谩lidas dentro del 谩mbito de la misma funci贸n.

7.6. Cambiando El Valor De Un Argumento

Imaginemos que queremos crear un procedimiento que modifique el valor de una variable que se le pasa como argumento. Si lo hacemos con lo estudiado hasta ahora, debido al 谩mbito local de las variables de las funciones y los argumentos, la funci贸n s贸lo conoce lo que tiene dentro, por lo que se modificar谩 internamente pero tras salir de la funci贸n el valor de la variable seguir谩 siendo el mismo.

Por ejemplo, si hacemos un procedimiento que sume uno a una variable dada, tendremos un error:

Caracter铆sticas del lenguaje Swift

Esto se soluciona con la palabra reservada inout y usando el s铆mbolo聽&聽cuando llamemos a la funci贸n:

Caracter铆sticas del lenguaje Swift

Caracter铆sticas del lenguaje Swift

Esto significa que le estamos diciendo a la funci贸n que ese par谩metro se va a usar tanto de entrada como de salida, por lo que es modificable.

7.7. Mostrando En Pantalla Con Swift

De momento ya estamos viendo nuestros resultados por pantalla en todo momento, aunque si estamos acostumbrados a ver los errores y las salidas por consola, tambi茅n podemos hacerlo. Para ver la consola, basta con hacer clic en el circulito blanco que aparece en la columna de visualizaci贸n de resultados:

Caracter铆sticas del lenguaje Swift

Ahora podemos usar la funci贸n聽println(), con la que mostrar elementos en la consola. Si hacemos una llamada a esta funci贸n tal como se muestra en la imagen anterior, la salida es:

Caracter铆sticas del lenguaje Swift

Tambi茅n podemos poner varibales, por ejemplo:

Caracter铆sticas del lenguaje Swift

Y hacer operaciones a la vez que mostramos en pantalla:

Caracter铆sticas del lenguaje Swift

8. Sentencias Condicionales

Las sentencias condicionales son, junto con los bucles, la herramienta m谩s potente y elemental que nos proporcionan los lenguajes de programaci贸n.

Gracias a ellas podemos discernir multitud de casos y decidir en funci贸n de 茅stos qu茅 parte de nuestro programa ejecutar.

8.1. La Sentencia If/Else

La estructura de decisi贸n cl谩sica es:

Caracter铆sticas del lenguaje Swift

Donde la cl谩usula else es opcional.

Debemos entender esta estructura del siguiente tipo:

Si聽condici贸n聽es verdadera, se ejecutar谩聽acciones1, en otro caso, se ejecutar谩聽acciones2.

Veamos el siguiente ejemplo:

Caracter铆sticas del lenguaje Swift

La variable edad es definida anteriormente por el usuario. Como en este caso la edad es menor que 28, se imprime el primer mensaje.

Caracter铆sticas del lenguaje Swift

8.2. Operadores De Comparaci贸n

A continuaci贸n vamos a ver los principales operadores de comparaci贸n que existen:

  • Igual que (==)
  • Distinto a (!=)
  • Menor que (<)
  • Mayor que (>)
  • Mayor o Igual que (>=)
  • Menor o Igual que (<=)

Todos estos operadores son binarios, es decir, se sit煤an en medio de dos valores del mismo tipo (normalmente num茅ricos).

Se usan para formar condiciones en sentencias condicionales.

Siempre devuelven un valor booleano: true, en caso de que sea cierta la condici贸n, y false en caso de que sea contraria.

8.3. Concatenando Sentencias Condicionales

Vamos a realizar diferentes tipos de comparaciones, entre ellas comparaciones con m谩s de un valor. Por ejemplo, vamos a comprobar si un dato se encuentra en un intervalo, concretamente si es mayor que 18 y menor que 28.

Como vemos, necesitamos concatenar (unir) dos condiciones:

  • Que sea mayor que 18
  • Que sea menor que 28

Ya sabemos como construir estas cl谩usulas, pero necesitamos unirlas. Para ello se utiliza el operador AND (&&) para concatenar dos condiciones que deben ser ciertas:

Caracter铆sticas del lenguaje Swift

Otros operadores 煤tiles para las condiciones son el NOT (!), y el OR (||).

El NOT convierte un valor booleano en su opuesto. Por ejemplo:

!true==false

!false==true.

El OR concatena dos partes de una cl谩usula, la cual ser谩聽聽cierta tanto si una es cierta, como si lo son las dos.

9. Estructuras De Repetici贸n

Como hemos comentado antes, las estructuras de repetici贸n son la parte m谩s potente de la programaci贸n, ya que nos permite indicar el inicio, la funcionalidad y el fin de una tarea.

Es como tener a alguien a quien le puedes decir: desde las 7 de la ma帽ana hasta las 9 de la noche, trabaja por m铆. 驴No es fant谩stico?

9.1. Introducci贸n A Las Estructuras De Repetici贸n En Swift

Las estructuras de repetici贸n o bucles modifican el flujo de ejecuci贸n de los programas. Estas estructuras sirven para repetir un conjunto de instrucciones.

En este sentido, se puede repetir un n煤mero determinado de veces un conjunto de instrucciones o, sin conocer dicho n煤mero, repetirlas mientras se cumpla cierta condici贸n.

Esto quiere decir que existen dos tipos de estructuras de repetici贸n: aquellas en que el n煤mero de repeticiones es conocido y aquellas en las que no lo es.

9.3. Estructuras While

Utilizando la estructura while, se pueden repetir un conjunto de instrucciones mientras se cumpla cierta condici贸n. La sintaxis correcta de esta estructura es:

Caracter铆sticas del lenguaje Swift

Que lo que har谩 ser谩 ejecutar las acciones hasta que la condici贸n sea Falsa.

Un ejemplo de esto en Swift:

Caracter铆sticas del lenguaje Swift

Este fragmento de c贸digo es equivalente al del for anterior.

Caracter铆sticas del lenguaje Swift

10. Lo m谩s importante. Recuerda

  • En los programas, todo lo que se escriben son datos y operaciones entre ellos.
  • A los 鈥渄atos鈥 lo llamaremos聽variables,聽ya que pueden tomar cualquier valor dentro del rango de su tipo de valor.
  • Con el lenguaje Objective-C, era necesario un s铆mbolo de fin de l铆nea, concretamente el punto y la coma (;). En Swift ya no es necesario, aunque se puede usar si se desea.
  • Los nombres de variables descriptivos pueden hacer una programa sea mucho m谩s f谩cil para los seres humanos, y por tanto, m谩s f谩cil de entender.
  • Encontrar y corregir fallos se llama depurar.
  • Swift autom谩ticamente identifica el tipo de dato al asignarle un valor.
  • La instrucci贸n聽let聽hace que la asignaci贸n s贸lo pueda hacerse una vez. Es lo que se conoce como聽constante.
  • En programaci贸n, una cadena de caracteres (string聽en ingl茅s) es una secuencia ordenada de longitud arbitraria (aunque finita) de elementos que pertenecen a un cierto lenguaje formal.
  • Un operador muy usado es el de incremento unitario, su uso es:聽++
  • Se pueden utilizar par茅ntesis para determinar el orden en el que se realizan las operaciones.
  • Se recomienda invertir algo de tiempo en comentar el c贸digo.聽Para crear un comentario, inicia el comentario con dos barras inclinadas. Todo lo que haya en esa misma l铆nea a partir de las barras no ser谩 compilado.
  • Las funciones son agrupaciones de tareas con un nombre.
  • A las funciones se les puede pasar informaci贸n que necesiten en forma de dato, a estas variables que son recibidas por las funciones se les llama par谩metros o argumentos.
  • Las funciones que no devuelven nada se llaman procedimientos.
  • Las variables en Swift est谩n protegidas, esto quiere decir que una funci贸n no puede modificar las variables de otra funci贸n aunque tengan el mismo nombre.
  • Las sentencias condicionales son, junto con los bucles, la herramienta m谩s potente y elemental que nos proporcionan los lenguajes de programaci贸n.
  • El OR concatena dos partes de una cl谩usula, la cual ser谩 cierta tanto si una es cierta, como si lo son las dos.
  • Utilizando la estructura while, se pueden repetir un conjunto de instrucciones mientras se cumpla cierta condici贸n.